cdefs.h: fix "__clang_major" typo
[glibc.git] / elf / ifuncdep2.c
blobd87d61d5be6f4bc29863f1ae599727b6eb27dc3f
1 /* Test 3 STT_GNU_IFUNC symbols. */
3 #include "ifunc-sel.h"
5 int global = -1;
6 /* Can't use __attribute__((visibility("protected"))) until the GCC bug:
8 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248
10 is fixed. */
11 asm (".protected global");
13 static int
14 one (void)
16 return 1;
19 static int
20 minus_one (void)
22 return -1;
25 static int
26 zero (void)
28 return 0;
31 void * foo1_ifunc (void) __asm__ ("foo1");
32 __asm__(".type foo1, %gnu_indirect_function");
34 void *
35 inhibit_stack_protector
36 foo1_ifunc (void)
38 return ifunc_sel (one, minus_one, zero);
41 void * foo2_ifunc (void) __asm__ ("foo2");
42 __asm__(".type foo2, %gnu_indirect_function");
44 void *
45 inhibit_stack_protector
46 foo2_ifunc (void)
48 return ifunc_sel (minus_one, one, zero);
51 void * foo3_ifunc (void) __asm__ ("foo3");
52 __asm__(".type foo3, %gnu_indirect_function");
54 void *
55 inhibit_stack_protector
56 foo3_ifunc (void)
58 return ifunc_sel (one, zero, minus_one);