gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / testsuite / ifuncmain5.c
1 /* Test STT_GNU_IFUNC symbols with dynamic function pointer only. */
2
3 #include <stdlib.h>
4
5 extern int foo (void);
6 extern int foo_protected (void);
7
8 typedef int (*foo_p) (void);
9
10 extern foo_p __attribute__ ((noinline)) get_foo (void);
11 extern foo_p __attribute__ ((noinline)) get_foo_protected (void);
12
13 foo_p
14 __attribute__ ((noinline))
15 get_foo (void)
16 {
17 return foo;
18 }
19
20 foo_p
21 __attribute__ ((noinline))
22 get_foo_protected (void)
23 {
24 return foo_protected;
25 }
26
27 int
28 main (void)
29 {
30 foo_p p;
31
32 p = get_foo ();
33 if ((*p) () != -1)
34 abort ();
35
36 p = get_foo_protected ();
37 if ((*p) () != 0)
38 abort ();
39
40 return 0;
41 }
This page took 0.03095 seconds and 4 git commands to generate.