1/* Test 3 STT_GNU_IFUNC symbols.  */
2
3#include "ifunc-sel.h"
4
5int global __attribute__ ((visibility ("hidden"))) = -1;
6
7static int
8one (void)
9{
10  return 1;
11}
12
13static int
14minus_one (void)
15{
16  return -1;
17}
18
19static int
20zero (void)
21{
22  return 0;
23}
24
25void * foo1_ifunc (void) __asm__ ("foo1");
26__asm__(".type foo1, %gnu_indirect_function");
27
28void *
29foo1_ifunc (void)
30{
31  return ifunc_sel (one, minus_one, zero);
32}
33
34void * foo2_ifunc (void) __asm__ ("foo2");
35__asm__(".type foo2, %gnu_indirect_function");
36
37void *
38foo2_ifunc (void)
39{
40  return ifunc_sel (minus_one, one, zero);
41}
42
43void * foo3_ifunc (void) __asm__ ("foo3");
44__asm__(".type foo3, %gnu_indirect_function");
45
46void *
47foo3_ifunc (void)
48{
49  return ifunc_sel (one, zero, minus_one);
50}
51