13 h = dlopen("./dlopen_dso.so", RTLD_LAZY|RTLD_LOCAL);
15 error("dlopen ./dlopen_dso.so failed: %s\n", dlerror());
18 error("dlsym i failed: %s\n", dlerror());
20 error("initialization failed: want i=1 got i=%d\n", *i);
21 f = (void (*)(void))dlsym(h, "f");
23 error("dlsym f failed: %s\n", dlerror());
26 error("f call failed: want i=2 got i=%d\n", *i);
28 error("dlclose failed: %s\n", dlerror());
30 g = dlopen(0, RTLD_LAZY|RTLD_LOCAL);
32 error("dlopen 0 failed: %s\n", dlerror());
36 error("dlsym i should have failed\n");
37 if (dlsym(g, "main") == 0)
38 error("dlsym main failed: %s\n", dlerror());
40 h = dlopen("./dlopen_dso.so", RTLD_LAZY|RTLD_GLOBAL);
43 error("dlsym i failed: %s\n", dlerror());
45 error("want i2=2, got i2=%d\n", *i2);
47 error("dlclose failed: %s\n", dlerror());