Browse Source

- add __hot and __cold annotations
Will spare us quite some likely()/unlikely() occurances.
See http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html for details

Bernhard Reutner-Fischer 15 years ago
parent
commit
ba203ef191
2 changed files with 11 additions and 3 deletions
  1. 8 0
      include/libc-symbols.h
  2. 3 3
      libc/sysdeps/linux/common/ssp.c

+ 8 - 0
include/libc-symbols.h

@@ -63,6 +63,14 @@
 #ifndef unlikely
 # define unlikely(x)	__builtin_expect((!!(x)),0)
 #endif
+#if defined __GNUC__ && !(__GNUC__ == 4 && __GNUC_MINOR__ < 3)
+# ifndef __cold
+#   define __cold __attribute__ ((__cold__))
+# endif
+# ifndef __hot
+#   define __hot __attribute__ ((__hot__))
+# endif
+#endif
 #ifndef __LINUX_COMPILER_H
 # define __LINUX_COMPILER_H
 #endif

+ 3 - 3
libc/sysdeps/linux/common/ssp.c

@@ -64,7 +64,7 @@ static void block_signals(void)
 	sigaction(SSP_SIGTYPE, &sa, NULL);
 }
 
-static 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) __cold
 {
 	write(fd, msg1, strlen(msg1));
 	write(fd, msg2, strlen(msg2));
@@ -83,7 +83,7 @@ static attribute_noreturn void terminate(void)
 	_exit(127);
 }
 
-void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))) attribute_noreturn;
+void __stack_smash_handler(char func[], int damaged __attribute__ ((unused))) attribute_noreturn __cold;
 void __stack_smash_handler(char func[], int damaged)
 {
 	static const char message[] = ": stack smashing attack in function ";
@@ -97,7 +97,7 @@ void __stack_smash_handler(char func[], int damaged)
 		terminate();
 }
 
-void __stack_chk_fail(void) attribute_noreturn;
+void __stack_chk_fail(void) attribute_noreturn __cold;
 void __stack_chk_fail(void)
 {
 	static const char msg1[] = "stack smashing detected: ";