1 #include <dlfcn.h>
2 #include <stdio.h>
3 #include <string.h>
4 
5 static int
do_test(void)6 do_test (void)
7 {
8   Dl_info i;
9   if (dladdr (&printf, &i) == 0)
10     {
11       puts ("not found");
12       return 1;
13     }
14   printf ("found symbol %s in %s\n", i.dli_sname, i.dli_fname);
15   if (i.dli_sname == NULL)
16     return 1;
17 
18 #if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
19   /* On architectures which redirect long double to
20      _Float128 (e.g powerpc64le), printf will resolve
21      to __printfieee128 due to header redirects.  There
22      is no _IO_printfieee128 alias.  */
23   return strcmp (i.dli_sname, "__printfieee128") != 0;
24 #else
25   return i.dli_sname == NULL
26 	 || (strcmp (i.dli_sname, "printf") != 0
27 	     /* On architectures which create PIC code by default
28 		&printf may resolve to an address in libc.so
29 		rather than in the binary.  printf and _IO_printf
30 		are aliased and which one comes first in the
31 		hash table is up to the linker.  */
32 	     && strcmp (i.dli_sname, "_IO_printf") != 0);
33 #endif
34 }
35 
36 #include <support/test-driver.c>
37