| #include <stdio.h> |
| #include <dlfcn.h> |
| #include <string.h> |
| #include <unistd.h> |
| |
| int |
| main () |
| { |
| char curDir[1024]; |
| char tst_name[1024]; |
| char dummy_name[1024]; |
| void *tst_cookie, *dummy_cookie; |
| int (*tst_function) (void); |
| |
| getcwd (curDir, 1023); |
| |
| sprintf (tst_name, "%s/gdb.apple/loaded.bundle", curDir); |
| sprintf (dummy_name, "%s/gdb.apple/dummy.bundle", curDir); |
| |
| tst_cookie = dlopen (tst_name, RTLD_NOW); |
| if (tst_cookie == NULL) |
| { |
| printf ("Could not load bundle \"%s\".\n", tst_name); |
| return 0; |
| } |
| |
| tst_function = (int (*) ()) dlsym (tst_cookie, "tst_function"); |
| printf ("First time around, got: %d\n", tst_function ()); |
| dlclose (tst_cookie); |
| |
| dummy_cookie = dlopen (dummy_name, RTLD_NOW); |
| tst_function = (int (*) ()) dlsym (dummy_cookie, "dummy_function"); |
| printf ("Calling dummy function: %d.\n", tst_function ()); |
| |
| tst_cookie = dlopen (tst_name, RTLD_NOW); |
| |
| tst_function = (int (*) ()) dlsym (tst_cookie, "tst_function"); |
| printf ("Second time around, got: %d\n", tst_function ()); |
| dlclose (tst_cookie); |
| |
| return 0; |
| } |