1#include <dlfcn.h>
2#include <stdio.h>
3
4static int
5do_test (void)
6{
7 void *h1 = dlopen (file: "$ORIGIN/testobj6.so", RTLD_GLOBAL|RTLD_LAZY);
8 if (h1 == NULL)
9 {
10 puts (s: "cannot open testobj6");
11 return 1;
12 }
13
14 void *h2 = dlopen (file: "$ORIGIN/testobj2.so",
15 RTLD_GLOBAL|RTLD_DEEPBIND|RTLD_LAZY);
16 if (h2 == NULL)
17 {
18 puts (s: "cannot open testobj2");
19 return 1;
20 }
21
22 dlclose (handle: h1);
23
24 void (*f) (void) = dlsym (handle: h2, name: "p");
25 if (f == NULL)
26 {
27 puts (s: "cannot find p");
28 return 1;
29 }
30
31 f ();
32
33 dlclose (handle: h2);
34
35 return 0;
36}
37
38#include <support/test-driver.c>
39

source code of glibc/elf/tst-global1.c