From 37a6ac445daf5075d9058d7f01505f96a43f592a Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 5 Jul 2014 12:05:01 +0930 Subject: [PATCH] Run ar with --plugin for LTO 11 test Objects built with -fno-fat-lto-objects (the default for gcc-4.9) have no normal symbols, except things like __gnu_lto_slim. These useless symbols are the ones put into the archive index, and of course nothing references them so no objects are extracted by the linker. Running ar with --plugin changes ar behaviour to put the lto symbols into the archive index. PR 17112 * ld-plugin/lto.exp: When building liblti-11.a, pass --plugin path_to_gcc/liblto_plugin.so to ar. --- ld/testsuite/ChangeLog | 6 ++++++ ld/testsuite/ld-plugin/lto.exp | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 1925fed2c3c..50a1b8a9986 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-07-08 Alan Modra + + PR 17112 + * ld-plugin/lto.exp: When building liblti-11.a, pass + --plugin path_to_gcc/liblto_plugin.so to ar. + 2014-07-07 Alan Modra * lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp index b14f13c0835..765d85f8116 100644 --- a/ld/testsuite/ld-plugin/lto.exp +++ b/ld/testsuite/ld-plugin/lto.exp @@ -324,7 +324,20 @@ if { [is_elf_format] && [check_lto_shared_available] } { set testname "Build liblto-11.a" remote_file host delete "tmpdir/liblto-11.a" -set catch_output [run_host_cmd "$ar" "rc tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"] +set plugin_names { + liblto_plugin.so + liblto_plugin-0.dll + cyglto_plugin-0.dll +} +set plug_opt "" +foreach plug $plugin_names { + set plug_so [run_host_cmd $CC "--print-prog-name $plug"] + if { $plug_so ne $plug } then { + set plug_opt "--plugin $plug_so" + break + } +} +set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"] if {![string match "" $catch_output]} { unresolved $testname restore_notify -- 2.30.2