1 /* Test for builtin noreturn attributes when the visible declarations
2    are function-local.  Modified from builtin-noret-1.c by Zack Weinberg
3    <zack@codesourcery.com>.  */
4 /* { dg-options "-multiply_defined suppress" { target powerpc-*-darwin* } } */
5 /* { dg-do link } */
6 /* { dg-require-weak "" } */
7 /* { dg-prune-output "recognized" } */
8 /* { dg-prune-output "ld: 0711-768 WARNING" } */
9 
10 extern void tabort (void);
11 extern void texit (void);
12 extern void t_exit (void);
13 extern void t_Exit (void);
14 
15 extern void link_failure (void);
16 
17 int
main(void)18 main (void)
19 {
20   volatile int i = 0;
21   extern void exit (int);
22   if (i)
23     tabort ();
24   if (i)
25     texit ();
26   if (i)
27     t_exit ();
28   if (i)
29     t_Exit ();
30   exit (0);
31 }
32 
33 void
tabort(void)34 tabort (void)
35 {
36   extern void abort (void);
37   abort ();
38   link_failure ();
39 }
40 
41 void
texit(void)42 texit (void)
43 {
44   extern void exit (int);
45   exit (1);
46   link_failure ();
47 }
48 
49 void
t_exit(void)50 t_exit (void)
51 {
52   extern void _exit (int);
53   /* Some non-Unix libcs have _exit, and won't allow it to be re-defined,
54      so make it weak.  */
55 #pragma weak _exit
56   _exit (1);
57   link_failure ();
58 }
59 
60 /* Some non-Unix libcs might not have _exit.  */
61 /* Some non-Unix libcs have _exit, and won't allow it to be re-defined,
62    so make it weak.  */
63 #pragma weak _exit
64 void
_exit(int i)65 _exit (int i)
66 {
67   extern void abort (void);
68   abort ();
69 }
70 
71 void
t_Exit(void)72 t_Exit (void)
73 {
74   extern void _Exit (int);
75   /* Some libcs have _Exit, and won't allow it to be re-defined,
76      so make it weak.  */
77 #pragma weak _Exit
78   _Exit (1);
79   link_failure ();
80 }
81 
82 /* Some libcs might not have _Exit.  */
83 /* Some libcs have _Exit, and won't allow it to be re-defined,
84    so make it weak.  */
85 #pragma weak _Exit
86 void
_Exit(int i)87 _Exit (int i)
88 {
89   extern void abort (void);
90   abort ();
91 }
92