1 /* { dg-do compile } */ 2 /* { dg-options "-fno-common" } */ 3 4 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1a" } } */ 5 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1b" } } */ 6 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1c" } } */ 7 /* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t\]_?ffoo1d" } } */ 8 /* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t\]_?ffoo1e" } } */ 9 10 /* test function addresses with #pragma weak */ 11 12 #pragma weak ffoo1a 13 extern void * ffoo1a (void); 14 void * foo1a (void) 15 { 16 return (void *)ffoo1a; 17 } 18 19 extern void * ffoo1b (void); 20 #pragma weak ffoo1b 21 void * foo1b (void) 22 { 23 return (void *)ffoo1b; 24 } 25 26 extern void * ffoo1c (void); /* { dg-warning "applying #pragma weak" "applying #pragma weak" } */ 27 void * foo1c (void) 28 { 29 return (void *)ffoo1c; 30 } 31 #pragma weak ffoo1c 32 33 34 int ffoo1d (void); 35 #pragma weak ffoo1d 36 37 38 extern void * ffoo1e (void); 39 #pragma weak ffoo1e 40 void * foo1e (void) 41 { 42 if (ffoo1e) 43 ffoo1e (); 44 return 0; 45 } 46 47