| #include <dlfcn.h> |
| #include <stdio.h> |
| #include <string.h> |
| |
| static int |
| do_test (void) |
| { |
| Dl_info i; |
| if (dladdr (&printf, &i) == 0) |
| { |
| puts ("not found"); |
| return 1; |
| } |
| printf ("found symbol %s in %s\n", i.dli_sname, i.dli_fname); |
| return i.dli_sname == NULL |
| || (strcmp (i.dli_sname, "printf") != 0 |
| /* On architectures which create PIC code by default |
| &printf may resolve to an address in libc.so |
| rather than in the binary. printf and _IO_printf |
| are aliased and which one comes first in the |
| hash table is up to the linker. */ |
| && strcmp (i.dli_sname, "_IO_printf") != 0); |
| } |
| |
| #define TEST_FUNCTION do_test () |
| #include "../test-skeleton.c" |