summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/ssp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/ssp.c')
-rw-r--r--libc/sysdeps/linux/common/ssp.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/common/ssp.c b/libc/sysdeps/linux/common/ssp.c
index 6893ac358..9efcd1a89 100644
--- a/libc/sysdeps/linux/common/ssp.c
+++ b/libc/sysdeps/linux/common/ssp.c
@@ -39,7 +39,7 @@
#include <signal.h>
#include <sys/syslog.h>
-static __always_inline void block_signals(void)
+static void block_signals(void)
{
struct sigaction sa;
sigset_t mask;
@@ -57,7 +57,7 @@ static __always_inline void block_signals(void)
sigaction(SSP_SIGTYPE, &sa, NULL);
}
-static __always_inline void ssp_write(int fd, const char *msg1, const char *msg2, const char *msg3)
+static void ssp_write(int fd, const char *msg1, const char *msg2, const char *msg3)
{
__write(fd, msg1, __strlen(msg1));
__write(fd, msg2, __strlen(msg2));
@@ -68,7 +68,7 @@ static __always_inline void ssp_write(int fd, const char *msg1, const char *msg2
closelog();
}
-static __always_inline attribute_noreturn void terminate(void)
+static attribute_noreturn void terminate(void)
{
(void) kill(__getpid(), SSP_SIGTYPE);
_exit_internal(127);
@@ -88,7 +88,7 @@ void attribute_noreturn __stack_smash_handler(char func[], int damaged)
terminate();
}
-void attribute_noreturn __stack_chk_fail(void)
+void attribute_noreturn attribute_hidden __stack_chk_fail_internal(void)
{
static const char msg1[] = "stack smashing detected: ";
static const char msg3[] = " terminated";
@@ -101,6 +101,7 @@ void attribute_noreturn __stack_chk_fail(void)
while(1)
terminate();
}
+strong_alias(__stack_chk_fail_internal,__stack_chk_fail)
#if 0
void attribute_noreturn __chk_fail(void)