Run ar with --plugin for LTO 11 test
authorAlan Modra <amodra@gmail.com>
Sat, 5 Jul 2014 02:35:01 +0000 (12:05 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 8 Jul 2014 00:31:47 +0000 (10:01 +0930)
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
ld/testsuite/ld-plugin/lto.exp

index 1925fed2c3cdde1db0828bf3f999d2d08129343a..50a1b8a99864c178ac9dc63e4d6ca92c87e1f44d 100644 (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>
 
        * lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler
index b14f13c0835c2838e2b252cd80ac28c2490f698f..765d85f8116338947a625d02982ec349024c1c6a 100644 (file)
@@ -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