diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-08-13 21:10:44 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2017-08-13 21:10:44 +0200 |
commit | 1b0bfc6946b460bcebe9db19a015f2cac711f7f5 (patch) | |
tree | d762ca42d4287dcd595e69bbad767b15677edcee | |
parent | a6bd872286b981b08577218c00e1ea693bad6095 (diff) | |
download | glibc-1b0bfc6946b460bcebe9db19a015f2cac711f7f5.tar.gz glibc-1b0bfc6946b460bcebe9db19a015f2cac711f7f5.tar.xz glibc-1b0bfc6946b460bcebe9db19a015f2cac711f7f5.zip |
__fortify_fail: Remove internal_function attribute
__fortify_fail is called across DSO boundaries, so it should not use a non-standard calling convention.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | debug/fortify_fail.c | 4 | ||||
-rw-r--r-- | include/stdio.h | 5 | ||||
-rw-r--r-- | sysdeps/mach/hurd/i386/____longjmp_chk.S | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/____longjmp_chk.S | 2 |
5 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 4b6439680c..3ad08f3030 100644 --- 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 diff --git a/debug/fortify_fail.c b/debug/fortify_fail.c index a0777ae570..add5625faf 100644 --- a/debug/fortify_fail.c +++ b/debug/fortify_fail.c @@ -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); diff --git a/include/stdio.h b/include/stdio.h index 215f919990..509447c528 100644 --- a/include/stdio.h +++ b/include/stdio.h @@ -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) diff --git a/sysdeps/mach/hurd/i386/____longjmp_chk.S b/sysdeps/mach/hurd/i386/____longjmp_chk.S index ac28c94e13..e7c988254f 100644 --- a/sysdeps/mach/hurd/i386/____longjmp_chk.S +++ b/sysdeps/mach/hurd/i386/____longjmp_chk.S @@ -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 diff --git a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S index d46ea84e30..2e4427abc8 100644 --- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S @@ -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 |