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.
This commit is contained in:
Alan Modra 2014-07-05 12:05:01 +09:30
parent e29c73ebde
commit 37a6ac445d
2 changed files with 20 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2014-07-08 Alan Modra <amodra@gmail.com>
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 <amodra@gmail.com> 2014-07-07 Alan Modra <amodra@gmail.com>
* lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler * lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler

View File

@ -324,7 +324,20 @@ if { [is_elf_format] && [check_lto_shared_available] } {
set testname "Build liblto-11.a" set testname "Build liblto-11.a"
remote_file host delete "tmpdir/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]} { if {![string match "" $catch_output]} {
unresolved $testname unresolved $testname
restore_notify restore_notify