Use HIDDEN_JUMPTARGET rather than spelling out its effects, for ____longjmp_chk imple...
authorRoland McGrath <mcgrathr@chromium.org>
Thu, 15 Sep 2011 19:26:08 +0000 (12:26 -0700)
committerRoland McGrath <mcgrathr@chromium.org>
Thu, 15 Sep 2011 19:26:08 +0000 (12:26 -0700)
ChangeLog
sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S

index fa117e9..5ddbdab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-09-15  Roland McGrath  <roland@hack.frob.com>
+
+       * sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
+       (CALL_FAIL): Use HIDDEN_JUMPTARGET for __fortify_fail.
+       * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+       (CALL_FAIL): Likewise.
+       * sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S (CHECK_RSP): Likewise.
+       (CALL_FAIL): Macro removed.
+       Patch mostly by Mike Frysinger <vapier@gentoo.org>.
+
 2011-09-15  Ulrich Drepper  <drepper@gmail.com>
 
        * sysdeps/x86_64/fpu/bits/mathinline.h: Add fmax and fmin optimizations
index a07e6c8..cd3c66a 100644 (file)
@@ -33,10 +33,10 @@ longjmp_msg:
                        cfi_register(%ebx,%ecx);                              \
                        LOAD_PIC_REG (bx);                                    \
                        leal    longjmp_msg@GOTOFF(%ebx), %eax;               \
-                       call    __GI___fortify_fail@PLT
+                       call    HIDDEN_JUMPTARGET(__fortify_fail)
 #else
 # define CALL_FAIL     movl    $longjmp_msg, %eax;                           \
-                       call    __fortify_fail
+                       call    HIDDEN_JUMPTARGET(__fortify_fail)
 #endif
 
 
index e097c22..fa87f67 100644 (file)
@@ -30,19 +30,13 @@ longjmp_msg:
 
 #define __longjmp ____longjmp_chk
 
-#ifdef PIC
-#  define CALL_FAIL    __GI___fortify_fail
-#else
-#  define CALL_FAIL    __fortify_fail
-#endif
-
 #define CHECK_RSP(reg) \
        cmp.ltu p0, p8 = reg, r12;                              \
 (p8)   br.cond.dpnt .Lok;;                                     \
        addl r28 = @ltoffx(longjmp_msg#), r1;;                  \
        ld8.mov r28 = [r28], longjmp_msg#;;                     \
        ld8 out0 = [r28];                                       \
-       br.call.sptk.many b0 = CALL_FAIL#;;                     \
+       br.call.sptk.many b0 = HIDDEN_JUMPTARGET(__fortify_fail)#;; \
 .Lok:
 
 #include "__longjmp.S"
index 3881082..d8cbe06 100644 (file)
@@ -34,7 +34,7 @@ longjmp_msg:
                        cfi_remember_state;                                   \
                        cfi_def_cfa_offset(16);                               \
                        leaq    longjmp_msg(%rip), %rdi;                      \
-                       call    __GI___fortify_fail;                          \
+                       call    HIDDEN_JUMPTARGET(__fortify_fail);            \
                        nop;                                                  \
                        cfi_restore_state
 #else
@@ -42,7 +42,7 @@ longjmp_msg:
                        cfi_remember_state;                                   \
                        cfi_def_cfa_offset(16);                               \
                        movq    $longjmp_msg, %rdi;                           \
-                       call    __fortify_fail;                               \
+                       call    HIDDEN_JUMPTARGET(__fortify_fail);            \
                        nop;                                                  \
                        cfi_restore_state
 #endif