hurd: fix _hurd_self_sigstate reference from ____longjmp_chk
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 29 May 2016 23:24:09 +0000 (01:24 +0200)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 29 May 2016 23:24:09 +0000 (01:24 +0200)
* sysdeps/mach/hurd/i386/____longjmp_chk.S (____longjmp_chk) [PIC]:
  Use PLT entry for calling _hurd_self_sigstate.

ChangeLog
sysdeps/mach/hurd/i386/____longjmp_chk.S

index 1e11464..3eee1b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+       * sysdeps/mach/hurd/i386/____longjmp_chk.S (____longjmp_chk) [PIC]:
+         Use PLT entry for calling _hurd_self_sigstate.
+
 2016-05-27  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/x86/cacheinfo.c (init_cacheinfo): Count number of
index 4ddf6cd..dec8ea7 100644 (file)
@@ -66,7 +66,12 @@ ENTRY (____longjmp_chk)
 
        /* TODO: need locking?  */
        /* struct hurd_sigstate * _hurd_self_sigstate (void) */
-       call    _hurd_self_sigstate
+#ifdef PIC
+       call    1f
+1:     popl    %ebx
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+#endif
+       call    JUMPTARGET(_hurd_self_sigstate)
        /* TODO: %eax and %eax->sigaltstack are always valid?  */
 
        testl   $SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%eax)