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 /* { dg-prune-output "recognized" } */ 7 /* { dg-prune-output "ld: 0711-768 WARNING" } */ 8 9 extern void abort (void); 10 extern void exit (int); 11 extern void _exit (int); 12 extern void _Exit (int); 13 14 extern void tabort (void); 15 extern void texit (void); 16 extern void t_exit (void); 17 extern void t_Exit (void); 18 19 extern void link_failure (void); 20 21 /* Some libcs have _exit and/or _Exit, and won't allow it to be re-defined, 22 so make it weak. */ 23 #pragma weak _exit 24 #pragma weak _Exit 25 26 int main(void)27main (void) 28 { 29 volatile int i = 0; 30 if (i) 31 tabort (); 32 if (i) 33 texit (); 34 if (i) 35 t_exit (); 36 if (i) 37 t_Exit (); 38 exit (0); 39 } 40 41 void tabort(void)42tabort (void) 43 { 44 abort (); 45 link_failure (); 46 } 47 48 void texit(void)49texit (void) 50 { 51 exit (1); 52 link_failure (); 53 } 54 55 void t_exit(void)56t_exit (void) 57 { 58 _exit (1); 59 link_failure (); 60 } 61 62 /* Some non-Unix libcs might not have _exit. */ 63 void _exit(int i)64_exit (int i) 65 { 66 abort (); 67 } 68 69 void t_Exit(void)70t_Exit (void) 71 { 72 _Exit (1); 73 link_failure (); 74 } 75 76 /* Some libcs might not have _Exit. */ 77 void _Exit(int i)78_Exit (int i) 79 { 80 abort (); 81 } 82