This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Run ar with --plugin for LTO 11 test
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Sat, 5 Jul 2014 12:48:14 +0930
- Subject: Run ar with --plugin for LTO 11 test
- Authentication-results: sourceware.org; auth=none
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.
I tried first to use gcc-ar, but that is decidedly useless when trying
to run the binutils test using a not-yet-installed gcc.
alan@bubble:~/build/gcc-current$ gcc/gcc-ar
gcc/gcc-ar: Cannot find plugin 'liblto_plugin.so'
alan@bubble:~/build/gcc-current$ ls -l gcc/liblto_plugin.so
lrwxrwxrwx 1 alan alan 22 Jul 5 09:51 gcc/liblto_plugin.so -> liblto_plugin.so.0.0.0
Huh? gcc-ar can't even find the plugin in the same dir?
HJ, does this look OK to you? I'm not at all sure of the intent of
the LTO 11 test.. Another easy option is to compile the relevant
objects with -ffat-lto-objects.
PR 17112
* ld-plugin/lto.exp: When building liblti-11.a, pass
--plugin path_to_gcc/liblto_plugin.so to ar.
diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp
index 6ff474e..9bc0217 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
--
Alan Modra
Australia Development Lab, IBM