Rewrite check_shared_lib_support
authorAlan Modra <amodra@gmail.com>
Thu, 7 Dec 2017 07:20:57 +0000 (17:50 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 7 Dec 2017 07:22:49 +0000 (17:52 +1030)
* testsuite/lib/ld-lib.exp (check_shared_lib_support): Ask ld
under test whether -shared is supported.

ld/ChangeLog
ld/testsuite/lib/ld-lib.exp

index d4758d4eaf295bcd43248aa4e3fcd52bbb7fed4e..5d51420e4a86d8ddcab0428a9c03894b82ea4a98 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-07  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/lib/ld-lib.exp (check_shared_lib_support): Ask ld
+       under test whether -shared is supported.
+
 2017-12-06  Jim Wilson  <jimw@sifive.com>
 
        * testsuite/ld-elf/interleave-0.d, testsuite/ld-elf/interleave-4.d,
index 280a7b1e976d35cfd9dd31f6c706c30ba69c2d71..f960824d3de8cfdcff6d07bba56f267ac949e199 100644 (file)
@@ -1782,61 +1782,20 @@ proc check_gc_sections_available { } {
 }
 
 # Returns true if -shared is supported on the target
-# Only used and accurate for ELF targets at the moment
 
 proc check_shared_lib_support { } {
-    if {![istarget aarch64*-*-elf]
-        && ![istarget arc*-*-elf*]
-        && ![istarget arm*-*-elf]
-        && ![istarget avr-*-*]
-        && ![istarget cr16-*-*]
-        && ![istarget cris*-*-elf]
-        && ![istarget crx-*-*]
-        && ![istarget d10v-*-*]
-        && ![istarget d30v-*-*]
-        && ![istarget dlx-*-*]
-        && ![istarget epiphany-*-*]
-        && ![istarget fr30-*-*]
-        && ![istarget frv-*-elf]
-        && ![istarget ft32-*-*]
-        && ![istarget h8300-*-*]
-        && ![istarget i860-*-*]
-        && ![istarget i960-*-*]
-        && ![istarget ip2k-*-*]
-        && ![istarget iq2000-*-*]
-        && ![istarget lm32-*-elf]
-        && ![istarget lm32-*-rtems*]
-        && ![istarget m32c-*-*]
-        && ![istarget m32r-*-elf]
-        && ![istarget m6811-*-*]
-        && ![istarget m6812-*-*]
-        && ![istarget m68hc1*-*-*]
-        && ![istarget mcore*-*-*]
-        && ![istarget mep-*-*]
-        && ![istarget microblaze-*-elf]
-        && ![istarget mips*-*-elf]
-        && ![istarget mn10200-*-*]
-        && ![istarget moxie-*-*]
-        && ![istarget msp430-*-*]
-        && ![istarget mt-*-*]
-        && ![istarget nds32*-*-elf]
-        && ![istarget nios2-*-elf]
-        && ![istarget or1k*-*-elf]
-        && ![istarget pj-*-*]
-        && ![istarget pru-*-*]
-        && ![istarget rl78-*-*]
-        && ![istarget rx-*-*]
-        && ![istarget spu-*-*]
-        && ![istarget v850*-*-*]
-        && ![istarget visium-*-*]
-        && ![istarget xc16x-*-elf]
-        && ![istarget xgate-*-*]
-        && ![istarget xstormy16-*-*]
-        && ![istarget *-*-irix*]
-        && ![istarget *-*-rtems] } {
-       return 1
+    global shared_available_saved
+    global ld
+
+    if {![info exists shared_available_saved]} {
+       set ld_output [remote_exec host $ld "-shared"]
+       if { [ string first "not supported" $ld_output ] >= 0 } {
+           set shared_available_saved 0
+       } else {
+           set shared_available_saved 1
+       }
     }
-    return 0
+    return $shared_available_saved
 }
 
 # Return true if target uses genelf.em (assuming it is ELF).