__fortify_fail: Remove internal_function attribute
authorFlorian Weimer <fweimer@redhat.com>
Sun, 13 Aug 2017 19:10:44 +0000 (21:10 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Sun, 13 Aug 2017 19:10:44 +0000 (21:10 +0200)
__fortify_fail is called across DSO boundaries, so it should not
use a non-standard calling convention.

ChangeLog
debug/fortify_fail.c
include/stdio.h
sysdeps/mach/hurd/i386/____longjmp_chk.S
sysdeps/unix/sysv/linux/i386/____longjmp_chk.S

index 4b64396..3ad08f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2017-08-13  Florian Weimer  <fweimer@redhat.com>
+
+       * debug/fortify_fail.c (__fortify_fail, __fortify_fail_abort):
+       Remove internal_function.
+       * include/stdio.h (__fortify_fail, __fortify_fail_abort): Likewise.
+       * sysdeps/mach/hurd/i386/____longjmp_chk.S (CALL_FAIL): Pass
+       message argument on the stack.
+       * sysdeps/unix/sysv/linux/i386/____longjmp_chk.S (CALL_FAIL):
+       Likeweise.
+
 2017-08-12  Mike FABIAN  <mfabian@redhat.com>
 
        Adapt test case data to the changes in the thousands
index a0777ae..add5625 100644 (file)
@@ -23,7 +23,7 @@
 extern char **__libc_argv attribute_hidden;
 
 void
-__attribute__ ((noreturn)) internal_function
+__attribute__ ((noreturn))
 __fortify_fail_abort (_Bool need_backtrace, const char *msg)
 {
   /* The loop is added only to keep gcc happy.  Don't pass down
@@ -38,7 +38,7 @@ __fortify_fail_abort (_Bool need_backtrace, const char *msg)
 }
 
 void
-__attribute__ ((noreturn)) internal_function
+__attribute__ ((noreturn))
 __fortify_fail (const char *msg)
 {
   __fortify_fail_abort (true, msg);
index 215f919..509447c 100644 (file)
@@ -98,10 +98,9 @@ extern void __libc_fatal (const char *__message)
      __attribute__ ((__noreturn__));
 extern void __libc_message (enum __libc_message_action action,
                            const char *__fnt, ...);
-extern void __fortify_fail (const char *msg)
-     __attribute__ ((__noreturn__)) internal_function;
+extern void __fortify_fail (const char *msg) __attribute__ ((__noreturn__));
 extern void __fortify_fail_abort (_Bool, const char *msg)
-     __attribute__ ((__noreturn__)) internal_function;
+  __attribute__ ((__noreturn__));
 libc_hidden_proto (__fortify_fail)
 libc_hidden_proto (__fortify_fail_abort)
 
index ac28c94..e7c9882 100644 (file)
@@ -36,9 +36,11 @@ longjmp_msg:
                        cfi_register(%ebx,%ecx);                              \
                        LOAD_PIC_REG (bx);                                    \
                        leal    longjmp_msg@GOTOFF(%ebx), %eax;               \
+                       movl    %eax, (%esp);                                 \
                        call    HIDDEN_JUMPTARGET(__fortify_fail)
 #else
 # define CALL_FAIL     movl    $longjmp_msg, %eax;                           \
+                       movl    %eax, (%esp);                                 \
                        call    HIDDEN_JUMPTARGET(__fortify_fail)
 #endif
 
index d46ea84..2e4427a 100644 (file)
@@ -33,9 +33,11 @@ longjmp_msg:
                        cfi_register(%ebx,%ecx);                              \
                        LOAD_PIC_REG (bx);                                    \
                        leal    longjmp_msg@GOTOFF(%ebx), %eax;               \
+                       movl    %eax, (%esp);                                 \
                        call    HIDDEN_JUMPTARGET(__fortify_fail)
 #else
 # define CALL_FAIL     movl    $longjmp_msg, %eax;                           \
+                       movl    %eax, (%esp);                                 \
                        call    HIDDEN_JUMPTARGET(__fortify_fail)
 #endif