Browse Source

one reloc less, uninline, should save some space

Peter S. Mazinger 18 năm trước cách đây
mục cha
commit
645044b837
2 tập tin đã thay đổi với 7 bổ sung6 xóa
  1. 2 2
      libc/sysdeps/linux/common/ssp-local.c
  2. 5 4
      libc/sysdeps/linux/common/ssp.c

+ 2 - 2
libc/sysdeps/linux/common/ssp-local.c

@@ -23,7 +23,7 @@
 
 #include <features.h>
 
-extern void __stack_chk_fail (void) attribute_noreturn;
+extern void __stack_chk_fail_internal (void) attribute_noreturn;
 
 /* On some architectures, this helps needless PIC pointer setup
    that would be needed just for the __stack_chk_fail call.  */
@@ -31,5 +31,5 @@ extern void __stack_chk_fail (void) attribute_noreturn;
 void attribute_noreturn attribute_hidden
 __stack_chk_fail_local (void)
 {
-  __stack_chk_fail ();
+  __stack_chk_fail_internal ();
 }

+ 5 - 4
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)