| #include <dlfcn.h> |
| #include <stdio.h> |
| |
| |
| /* Number of rounds we perform the test. */ |
| #define TEST_ROUNDS 10 |
| |
| |
| static const char unknown[] = "a-file-with-this-name-does-not-exist"; |
| static const char exists[] = "failtestmod.so"; |
| |
| |
| int |
| main (void) |
| { |
| int i; |
| |
| setvbuf (stdout, NULL, _IONBF, 0); |
| |
| for (i = 0; i < TEST_ROUNDS; ++i) |
| { |
| void *dsc; |
| |
| printf ("Round %d: Try loading \"%s\"\n", i, unknown); |
| |
| dsc = dlopen (unknown, RTLD_NOW); |
| if (dsc != NULL) |
| { |
| printf ("We found a file of name \"%s\": this should not happen\n", |
| unknown); |
| return 1; |
| } |
| |
| printf ("Round %d: loading \"%s\" failed\n", i, unknown); |
| |
| /* Don't use `dlerror', just load an existing file. */ |
| dsc = dlopen (exists, RTLD_NOW); |
| if (dsc == NULL) |
| { |
| printf ("Could not load \"%s\": %s\n", exists, dlerror ()); |
| return 1; |
| } |
| |
| printf ("Round %d: Loaded \"%s\"\n", i, exists); |
| |
| dlclose (dsc); |
| |
| printf ("Round %d: Unloaded \"%s\"\n", i, exists); |
| } |
| |
| return 0; |
| } |
| |
| |
| extern void foo (void); |
| |
| void |
| foo (void) |
| { |
| } |