dl1main.c 502 B

123456789101112131415161718192021222324252627282930313233
  1. #include <stdio.h>
  2. #include <dlfcn.h>
  3. int bar = -20;
  4. int
  5. main (void)
  6. {
  7. int ret = 0;
  8. void *handle;
  9. void (*fcn) (void);
  10. handle = dlopen("./tmpdir/libdl1.so", RTLD_GLOBAL|RTLD_LAZY);
  11. if (!handle)
  12. {
  13. printf("dlopen ./tmpdir/libdl1.so: %s\n", dlerror ());
  14. return 1;
  15. }
  16. fcn = (void (*)(void)) dlsym(handle, "foo");
  17. if (!fcn)
  18. {
  19. printf("dlsym foo: %s\n", dlerror ());
  20. ret += 1;
  21. }
  22. else
  23. {
  24. (*fcn) ();
  25. }
  26. dlclose (handle);
  27. return ret;
  28. }