blob: f398085cb46719d18950533e3178de578face344 [file] [log] [blame]
lh9ed821d2023-04-07 01:36:19 -07001/* Test STT_GNU_IFUNC symbols with dynamic function pointer only. */
2
3#include <stdlib.h>
4
5extern int foo (void);
6extern int foo_protected (void);
7
8typedef int (*foo_p) (void);
9
10foo_p
11__attribute__ ((noinline))
12get_foo (void)
13{
14 return foo;
15}
16
17foo_p
18__attribute__ ((noinline))
19get_foo_protected (void)
20{
21 return foo_protected;
22}
23
24int
25main (void)
26{
27 foo_p p;
28
29 p = get_foo ();
30 if ((*p) () != -1)
31 abort ();
32
33 p = get_foo_protected ();
34 if ((*p) () != 0)
35 abort ();
36
37 return 0;
38}