[binutils-gdb/binutils-2_43-branch] lto: Add a test for PR ld/32083

H.J. Lu hjl@sourceware.org
Thu Aug 22 13:56:02 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2d37b890e569330a29181ec3bd34b5cc1c354cbc

commit 2d37b890e569330a29181ec3bd34b5cc1c354cbc
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Aug 16 03:48:34 2024 -0700

    lto: Add a test for PR ld/32083
    
    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>
    (cherry picked from commit eb53cbeca8cf456b4a79f33d7a2a586a99b4b2e3)

Diff:
---
 ld/testsuite/ld-plugin/common-2a.c | 11 +++++++++++
 ld/testsuite/ld-plugin/common-2b.c |  6 ++++++
 ld/testsuite/ld-plugin/lto.exp     | 37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 54 insertions(+)

diff --git a/ld/testsuite/ld-plugin/common-2a.c b/ld/testsuite/ld-plugin/common-2a.c
new file mode 100644
index 00000000000..fccfca72868
--- /dev/null
+++ b/ld/testsuite/ld-plugin/common-2a.c
@@ -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
index 00000000000..c014c673f74
--- /dev/null
+++ b/ld/testsuite/ld-plugin/common-2b.c
@@ -0,0 +1,6 @@
+int foo;
+
+void
+func (void)
+{
+}
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index 0c3c9d94ec0..602d94ed7b3 100644
--- a/ld/testsuite/ld-plugin/lto.exp
+++ b/ld/testsuite/ld-plugin/lto.exp
@@ -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


More information about the Binutils-cvs mailing list