[PATCH] lto: Add a test for PR ld/32083
H.J. Lu
hjl.tools@gmail.com
Thu Aug 22 13:35:46 GMT 2024
On Fri, Aug 16, 2024 at 3:48 AM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> Add a test for PR ld/32083 and xfail the test if GCC doesn't have the fix
> for
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116361
>
> 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 | 11 +++++++++++
> ld/testsuite/ld-plugin/common-2b.c | 6 ++++++
> ld/testsuite/ld-plugin/lto.exp | 31 ++++++++++++++++++++++++++++++
> 3 files changed, 48 insertions(+)
> create mode 100644 ld/testsuite/ld-plugin/common-2a.c
> create mode 100644 ld/testsuite/ld-plugin/common-2b.c
>
> 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 bbd68407edc..7781c56fae5 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,20 @@ 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
>
> +# GCC may not have the fix for:
> +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116361
> +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
> --
> 2.46.0
>
GCC 15 has been fixed by
https://gcc.gnu.org/git?p=gcc.git;a=commit;h=a98dd536b1017c2b814a3465206c6c01b2890998
I am checking in this test.
--
H.J.
More information about the Binutils
mailing list