1 /* Test for builtin noreturn attributes. */ 2 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */ 3 /* { dg-options "-multiply_defined suppress" { target powerpc-*-darwin* } } */ 4 /* { dg-do link } */ 5 /* { dg-require-weak "" } */ 6 7 extern void abort (void); 8 extern void exit (int); 9 extern void _exit (int); 10 extern void _Exit (int); 11 12 extern void tabort (void); 13 extern void texit (void); 14 extern void t_exit (void); 15 extern void t_Exit (void); 16 17 extern void link_failure (void); 18 19 /* Some libcs have _exit and/or _Exit, and won't allow it to be re-defined, 20 so make it weak. */ 21 #pragma weak _exit 22 #pragma weak _Exit 23 24 int main(void)25main (void) 26 { 27 volatile int i = 0; 28 if (i) 29 tabort (); 30 if (i) 31 texit (); 32 if (i) 33 t_exit (); 34 if (i) 35 t_Exit (); 36 exit (0); 37 } 38 39 void tabort(void)40tabort (void) 41 { 42 abort (); 43 link_failure (); 44 } 45 46 void texit(void)47texit (void) 48 { 49 exit (1); 50 link_failure (); 51 } 52 53 void t_exit(void)54t_exit (void) 55 { 56 _exit (1); 57 link_failure (); 58 } 59 60 /* Some non-Unix libcs might not have _exit. */ 61 void _exit(int i)62_exit (int i) 63 { 64 abort (); 65 } 66 67 void t_Exit(void)68t_Exit (void) 69 { 70 _Exit (1); 71 link_failure (); 72 } 73 74 /* Some libcs might not have _Exit. */ 75 void _Exit(int i)76_Exit (int i) 77 { 78 abort (); 79 } 80