1#include <dlfcn.h>
2#include <stdio.h>
3#include <stdlib.h>
4
5extern int bar (void);
6extern int foo (void);
7
8int
9foo (void)
10{
11 void *h;
12 int res;
13
14 /* Load ltglobalmod1 in the global namespace. */
15 h = dlopen (file: "ltglobmod1.so", RTLD_GLOBAL | RTLD_LAZY);
16 if (h == NULL)
17 {
18 printf (format: "%s: cannot open %s: %s",
19 __FUNCTION__, "ltglobmod1.so", dlerror ());
20 exit (EXIT_FAILURE);
21 }
22
23 /* Call bar. This is undefined in the DSO. */
24 puts (s: "about to call `bar'");
25 fflush (stdout);
26 res = bar ();
27
28 printf (format: "bar returned %d\n", res);
29
30 dlclose (handle: h);
31
32 return res != 42;
33}
34

source code of glibc/elf/ltglobmod2.c