[GOLD] justsyms_exec test fail on powerpc64
authorAlan Modra <amodra@gmail.com>
Mon, 26 Nov 2018 11:37:17 +0000 (22:07 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 26 Nov 2018 11:37:46 +0000 (22:07 +1030)
This test fails on powerpc64le due to the justsyms_lib being built
with exported_data at 0x2010000, apparently due to the powerpc target
code generating an empty relro .branch_lt section.  Since the test
relies on the library having exported_data at 0x2000000, avoid the
problem by linking with -z norelro.  Also, the test doesn't need to
avoid checking the function symbol on powerpc elfv2.

* testsuite/Makefile.am (justsyms_lib): Link with -z norelro.
* testsuite/Makefile.in: Regenerate.
* testsuite/justsyms_exec.c (main): Do check exported_func
on PowerPC64 ELFv2.

gold/ChangeLog
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/justsyms_exec.c

index 3bcf6a7d96fa1437682c9b0a4fe4979df619da7a..9d10dc83eea448fce5a616650dbc882ea5d5a42f 100644 (file)
@@ -1,3 +1,10 @@
+2018-11-26  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/Makefile.am (justsyms_lib): Link with -z norelro.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/justsyms_exec.c (main): Do check exported_func
+       on PowerPC64 ELFv2.
+
 2018-11-26  Alan Modra  <amodra@gmail.com>
 
        * testsuite/ver_test_14.sh: Accept objdump -T display of st_other
index b70a7d5a9f7dfeb4aaf8b1c52bdb4397471f2fde..135790b30d7fe36abf72fb61c1e007c8a02f4e1f 100644 (file)
@@ -2013,7 +2013,7 @@ MOSTLYCLEANFILES += justsyms_lib
 justsyms_lib.o: justsyms_lib.c
        $(COMPILE) -c -o $@ $<
 justsyms_lib: justsyms_lib.o gcctestdir/ld
-       gcctestdir/ld -o $@ -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o
+       gcctestdir/ld -o $@ -z norelro -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o
 
 check_PROGRAMS += binary_test
 MOSTLYCLEANFILES += binary.txt
index 61ea65374d6dca02878051a2f394578baf09b447..db923943fb5c10988189e0dbb8bd611c1c935203 100644 (file)
@@ -8766,7 +8766,7 @@ uninstall-am:
 @GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_lib.o: justsyms_lib.c
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ $(COMPILE) -c -o $@ $<
 @GCC_TRUE@@NATIVE_LINKER_TRUE@justsyms_lib: justsyms_lib.o gcctestdir/ld
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -o $@ -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld -o $@ -z norelro -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o
 # Copy the file to the build directory to avoid worrying about the
 # full pathname in the generated symbols.
 @GCC_TRUE@@NATIVE_LINKER_TRUE@binary.txt: $(srcdir)/binary.in
index 49c0b55d19e4904951ba52074f9f85178acff115..c0281e79b3bae11c10e968505022d7d1313b90aa 100644 (file)
@@ -47,8 +47,8 @@ check(void *sym, long v, const char *name)
 int
 main(void)
 {
-#ifndef __powerpc64__
-  /* PowerPC64 uses function descriptors.  */
+#if !defined (__powerpc64__) || (defined (_CALL_ELF) && _CALL_ELF == 2)
+  /* PowerPC64 ELFv1 uses function descriptors.  */
   check(exported_func, 0x1000200, "exported_func");
 #endif
   check(&exported_data, 0x2000000, "exported_data");