111
|
1 /* { dg-require-ifunc "" } */
|
|
2
|
|
3 typedef int F (void);
|
|
4
|
|
5 static F *resolver ()
|
|
6 {
|
|
7 return 0;
|
|
8 }
|
|
9
|
|
10 extern int magic (void) /* { dg-message "previous definition" } */
|
|
11 __attribute__ ((ifunc ("resolver")));
|
|
12 extern int magic (void) /* { dg-error "redefinition" } */
|
|
13 __attribute__ ((alias ("resolver")));
|
|
14
|
|
15 extern int spell (void) /* { dg-message "previous definition" } */
|
|
16 {
|
|
17 return 0;
|
|
18 }
|
|
19 extern int spell (void) /* { dg-error "redefinition" } */
|
|
20 __attribute__ ((ifunc ("resolver")));
|
|
21
|
|
22 extern int mantra (void) /* { dg-message "previous definition" } */
|
|
23 __attribute__ ((alias ("resolver")));
|
|
24 extern int mantra (void) /* { dg-error "redefinition" } */
|
|
25 __attribute__ ((ifunc ("resolver")));
|
|
26
|
|
27 extern int saying (void) /* { dg-error "weak .* cannot be defined" } */
|
|
28 __attribute__ ((weak,ifunc ("resolver")));
|
|
29 extern int maxim (void) /* { dg-error "indirect function .* cannot be declared weak" } */
|
|
30 __attribute__ ((ifunc ("resolver"),weak));
|