aboutsummaryrefslogtreecommitdiff
path: root/elf/tst-addr1.c
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-02-07 14:08:16 -0600
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-03-25 14:34:23 -0500
commitd0d1811fb96d592e9b379b9176e1ab9d0b858916 (patch)
treec1ea00dd08cb458d7a8daf11a0e59d40f6de5317 /elf/tst-addr1.c
parent45ae17dd7ed3b9dea0d698d1c37a978d8d0a9aa2 (diff)
downloadglibc-d0d1811fb96d592e9b379b9176e1ab9d0b858916.zip
glibc-d0d1811fb96d592e9b379b9176e1ab9d0b858916.tar.gz
glibc-d0d1811fb96d592e9b379b9176e1ab9d0b858916.tar.bz2
Fix tests which expose ldbl -> _Float128 redirects
The ldbl redirects for ieee128 have some jagged edges when inspecting and manipulating symbols directly. e.g asprintf is unconditionally redirected to __asprintfieee128 thus any tests relying on GCC's redirect behavior will encounter problems if they inspect the symbol names too closely. I've mitigated tests which expose the limitations of the ldbl -> f128 redirects by giving them knowledge about the redirected symbol names. Hopefully there isn't much user code which depends on this implementation specific behavior. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Diffstat (limited to 'elf/tst-addr1.c')
-rw-r--r--elf/tst-addr1.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/elf/tst-addr1.c b/elf/tst-addr1.c
index 68ff74a..27dc0f0 100644
--- a/elf/tst-addr1.c
+++ b/elf/tst-addr1.c
@@ -12,6 +12,16 @@ do_test (void)
return 1;
}
printf ("found symbol %s in %s\n", i.dli_sname, i.dli_fname);
+ if (i.dli_sname == NULL)
+ return 1;
+
+#if __LONG_DOUBLE_USES_FLOAT128 == 1
+ /* On architectures which redirect long double to
+ _Float128 (e.g powerpc64le), printf will resolve
+ to __printfieee128 due to header redirects. There
+ is no _IO_printfieee128 alias. */
+ return strcmp (i.dli_sname, "__printfieee128") != 0;
+#else
return i.dli_sname == NULL
|| (strcmp (i.dli_sname, "printf") != 0
/* On architectures which create PIC code by default
@@ -20,6 +30,7 @@ do_test (void)
are aliased and which one comes first in the
hash table is up to the linker. */
&& strcmp (i.dli_sname, "_IO_printf") != 0);
+#endif
}
#include <support/test-driver.c>