]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
lto: Add a test for PR ld/32083
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 16 Aug 2024 10:48:34 +0000 (03:48 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 22 Aug 2024 13:34:53 +0000 (06:34 -0700)
Add a test for PR ld/32083 and xfail the test for GCC without the fix:

commit a98dd536b1017c2b814a3465206c6c01b2890998
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Aug 21 07:25:25 2024 -0700

    Update LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook

PR ld/32083
* testsuite/ld-plugin/common-2a.c: New file.
* testsuite/ld-plugin/common-2b.c: Likewise.
* testsuite/ld-plugin/lto.exp: Run PR ld/32083 test.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
ld/testsuite/ld-plugin/common-2a.c [new file with mode: 0644]
ld/testsuite/ld-plugin/common-2b.c [new file with mode: 0644]
ld/testsuite/ld-plugin/lto.exp

diff --git a/ld/testsuite/ld-plugin/common-2a.c b/ld/testsuite/ld-plugin/common-2a.c
new file mode 100644 (file)
index 0000000..fccfca7
--- /dev/null
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int foo;
+
+int main()
+{
+  if (foo == 0)
+    printf ("PASS\n");
+
+  return 0;
+}
diff --git a/ld/testsuite/ld-plugin/common-2b.c b/ld/testsuite/ld-plugin/common-2b.c
new file mode 100644 (file)
index 0000000..c014c67
--- /dev/null
@@ -0,0 +1,6 @@
+int foo;
+
+void
+func (void)
+{
+}
index bbd68407edcda3b80bcdbad728ade166e382d853..6424ba423357d9ad4ae52a64e940fef8797fe9db 100644 (file)
@@ -238,6 +238,23 @@ set lto_link_tests [list \
    {} \
    "libdefinition-1.a" \
   ] \
+  [list \
+   "Build common-2a.o" \
+   "" \
+   "-O2 -fcommon -flto $lto_no_fat" \
+   {common-2a.c} \
+   {} \
+   "" \
+   "c" \
+  ] \
+  [list \
+   "Build libcommon-2.a" \
+   "$plug_opt" \
+   "-O2 -fcommon -flto $lto_no_fat" \
+   {common-2b.c} \
+   {} \
+   "libcommon-2.a" \
+  ] \
 ]
 
 if { [at_least_gcc_version 10 0] && [check_lto_shared_available] } {
@@ -880,6 +897,26 @@ run_cc_link_tests $lto_link_tests
 # by some elf tests besides shared libs tests.  So, always compile them.
 run_cc_link_tests $lto_compile_elf_tests
 
+# Xfail PR ld/32083 test for GCC without the fix:
+#
+# commit a98dd536b1017c2b814a3465206c6c01b2890998
+# Author: H.J. Lu <hjl.tools@gmail.com>
+# Date:   Wed Aug 21 07:25:25 2024 -0700
+#
+#    Update LDPT_REGISTER_CLAIM_FILE_HOOK_V2 linker plugin hook
+#
+set exec_output [run_host_cmd "$CC_FOR_TARGET" \
+                             "-O2 -fcommon -flto -o tmpdir/common-2 \
+                              tmpdir/common-2a.o tmpdir/libcommon-2.a \
+                              tmpdir/libcommon-2.a"]
+if [string match "" $exec_output] then {
+    pass "PR ld/32083"
+} elseif { [ regexp "lto1: fatal error: multiple prevailing defs for 'func'" $exec_output ] } {
+    xfail "PR ld/32083"
+} else {
+    fail "PR ld/32083"
+}
+
 # Restrict these to ELF targets that support shared libs and PIC.
 if { [is_elf_format] && [check_lto_shared_available] } {
     run_cc_link_tests $lto_link_elf_tests