]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ld: Limit "readelf --got-contents" tests
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 4 Sep 2025 13:57:06 +0000 (06:57 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 7 Sep 2025 12:38:34 +0000 (05:38 -0700)
Since "readelf --got-contents" tests use -melf_i386, -melf_x86_64 and
-melf32_x86_64 emulations, limit theses tests to linker supporting those
emulations, pass --rosegment to linker and output libgot-1-i386.so,
libgot-1-x64.so, libgot-1-x32.so.

PR ld/33350
* testsuite/ld-i386/binutils.exp: Limit tests to linker with
-melf_i386 support, pass --rosegment to linker and output
libgot-1-i386.so.
* testsuite/ld-x86-64/binutils.exp: Limit -melf_x86_64 tests to
linker with -melf_x86_64 support, limit -melf32_x86_64 tests
to linker with -melf32_x86_64 support, pass --rosegment to
linker and output libgot-1-x64.so/libgot-1-x32.so.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
ld/testsuite/ld-i386/binutils.exp
ld/testsuite/ld-x86-64/binutils.exp

index 5069c59ca9e23efd502120240866b4cf2c5b92ed..11384487e21e4ab93afcdac44611d80e08968069 100644 (file)
@@ -27,19 +27,23 @@ if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } {
     return
 }
 
-run_ld_link_tests [list \
-    [list \
-       "Build libgot-1.so" \
-       "-shared -melf_i386 --no-ld-generated-unwind-info \
-        -z noseparate-code -z max-page-size=0x200000 --hash-style=sysv \
-        $NO_DT_RELR_LDFLAGS" \
-       "" \
-       "--32 -mx86-used-note=no --generate-missing-build-notes=no" \
-       {got-1.s} \
-       {{readelf -rW libgot-1a.rd} \
-        {readelf -aW libgot-1b.rd} \
-        {readelf --got-contents libgot-1c.rd} \
-        {readelf {--got-contents -W} libgot-1d.rd}} \
-       "libgot-1.so" \
-    ] \
-]
+# Tests here need -melf_i386 support.
+set status [catch "exec $LD -V -melf_i386" got]
+if { $status == 0 } {
+    run_ld_link_tests [list \
+       [list \
+           "Build libgot-1-i386.so" \
+           "-shared -melf_i386 --no-ld-generated-unwind-info \
+            -z noseparate-code -z max-page-size=0x200000 \
+            --rosegment --hash-style=sysv $NO_DT_RELR_LDFLAGS" \
+           "" \
+           "--32 -mx86-used-note=no --generate-missing-build-notes=no" \
+           {got-1.s} \
+           {{readelf -rW libgot-1a.rd} \
+            {readelf -aW libgot-1b.rd} \
+            {readelf --got-contents libgot-1c.rd} \
+            {readelf {--got-contents -W} libgot-1d.rd}} \
+           "libgot-1-i386.so" \
+       ] \
+    ]
+}
index fef997368db069bbb7c7333eac40b9f0af2fbadf..4a0b211f1000947f8bdbc97c68c9391cd9e03f04 100644 (file)
@@ -27,33 +27,46 @@ if { ![istarget "x86_64-*-*"] } {
     return
 }
 
-run_ld_link_tests [list \
-    [list \
-       "Build libgot-1.so" \
-       "-shared -melf_x86_64 --no-ld-generated-unwind-info \
-        -z noseparate-code -z max-page-size=0x200000 --hash-style=sysv \
-        -z nomark-plt $NO_DT_RELR_LDFLAGS" \
-       "" \
-       "--64 -mx86-used-note=no --generate-missing-build-notes=no" \
-       {got-1.s} \
-       {{readelf -rW libgot-1a.rd} \
-        {readelf -aW libgot-1b.rd} \
-        {readelf --got-contents libgot-1c.rd} \
-        {readelf {--got-contents -W} libgot-1d.rd}} \
-       "libgot-1.so" \
-    ] \
-    [list \
-       "Build libgot-1-x32.so" \
-       "-shared -melf32_x86_64 --no-ld-generated-unwind-info \
-        -z noseparate-code -z max-page-size=0x200000 --hash-style=sysv \
-        -z nomark-plt $NO_DT_RELR_LDFLAGS" \
-       "" \
-       "--x32 -mx86-used-note=no --generate-missing-build-notes=no" \
-       {got-1.s} \
-       {{readelf -rW libgot-1a-x32.rd} \
-        {readelf -aW libgot-1b-x32.rd} \
-        {readelf --got-contents libgot-1c-x32.rd} \
-        {readelf {--got-contents -W} libgot-1d-x32.rd}} \
-       "libgot-1-x32.so" \
-    ] \
-]
+# Tests here need -melf_x86_64 support.
+set status [catch "exec $LD -V -melf_x86_64" got]
+if { $status == 0 } {
+    run_ld_link_tests [list \
+       [list \
+          "Build libgot-1-x64.so" \
+           "-shared -melf_x86_64 --no-ld-generated-unwind-info \
+            -z noseparate-code -z max-page-size=0x200000 \
+            --hash-style=sysv -z nomark-plt $NO_DT_RELR_LDFLAGS \
+            --rosegment" \
+           "" \
+           "--64 -mx86-used-note=no --generate-missing-build-notes=no" \
+           {got-1.s} \
+           {{readelf -rW libgot-1a.rd} \
+            {readelf -aW libgot-1b.rd} \
+            {readelf --got-contents libgot-1c.rd} \
+            {readelf {--got-contents -W} libgot-1d.rd}} \
+           "libgot-1-x64.so" \
+       ] \
+    ]
+}
+
+# Tests here need -melf32_x86_64 support.
+set status [catch "exec $LD -V -melf32_x86_64" got]
+if { $status == 0 } {
+    run_ld_link_tests [list \
+       [list \
+           "Build libgot-1-x32.so" \
+           "-shared -melf32_x86_64 --no-ld-generated-unwind-info \
+            -z noseparate-code -z max-page-size=0x200000 \
+            --hash-style=sysv -z nomark-plt $NO_DT_RELR_LDFLAGS \
+            --rosegment" \
+           "" \
+           "--x32 -mx86-used-note=no --generate-missing-build-notes=no" \
+           {got-1.s} \
+           {{readelf -rW libgot-1a-x32.rd} \
+            {readelf -aW libgot-1b-x32.rd} \
+            {readelf --got-contents libgot-1c-x32.rd} \
+            {readelf {--got-contents -W} libgot-1d-x32.rd}} \
+           "libgot-1-x32.so" \
+       ] \
+    ]
+}