11 h = dlopen("./dlopen_dso.so", RTLD_LAZY|RTLD_LOCAL);
13 error("dlopen ./dlopen_dso.so failed: %s\n", dlerror());
16 error("dlsym i failed: %s\n", dlerror());
18 error("initialization failed: want i=1 got i=%d\n", *i);
19 f = (void (*)(void))dlsym(h, "f");
21 error("dlsym f failed: %s\n", dlerror());
24 error("f call failed: want i=2 got i=%d\n", *i);
26 error("dlclose failed: %s\n", dlerror());
28 g = dlopen(0, RTLD_LAZY|RTLD_LOCAL);
30 error("dlopen 0 failed: %s\n", dlerror());
34 error("dlsym i should have failed\n");
35 if (dlsym(g, "main") == 0)
36 error("dlsym main failed: %s\n", dlerror());
38 h = dlopen("./dlopen_dso.so", RTLD_LAZY|RTLD_GLOBAL);
41 error("dlsym i failed: %s\n", dlerror());
43 error("want i2=2, got i2=%d\n", *i2);
45 error("dlclose failed: %s\n", dlerror());