Recognize more targets as ELF for testing
[deliverable/binutils-gdb.git] / binutils / testsuite / lib / binutils-common.exp
index e989da473d85eafac98e1edded57b9d6b605fd96..9fc9a18dae290940304b2bb3cd24d022b1eda4de 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1993-2015 Free Software Foundation, Inc.
+# Copyright (C) 1993-2018 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
 # True if the object format is known to be ELF.
 #
 proc is_elf_format {} {
-    if { ![istarget *-*-sysv4*]
-        && ![istarget *-*-unixware*]
-        && ![istarget *-*-elf*]
+    # config.sub for these targets curiously transforms a target doublet
+    # ending in -elf to -none.  eg. m68hc12-elf to m68hc12-unknown-none
+    # They are always elf.
+    if { [istarget m68hc1*-*] || [istarget xgate-*] } {
+       return 1;
+    }
+# vxworks (and windiss) excluded due to number of ELF tests that need
+# modifying to pass on those targets.
+#       && ![istarget *-*-vxworks*]
+#       && ![istarget *-*-windiss*]
+
+    if {    ![istarget *-*-chorus*]
+        && ![istarget *-*-cloudabi*]
         && ![istarget *-*-eabi*]
-        && ![istarget *-*-rtems*]
-        && ![istarget hppa*64*-*-hpux*]
-        && ![istarget ia64-*-hpux*]
-        && ![istarget *-*-linux*]
+        && ![istarget *-*-*elf*]
+        && ![istarget *-*-*freebsd*]
+        && ![istarget *-*-fuchsia*]
         && ![istarget *-*-gnu*]
-        && ![istarget *-*-nacl*]
-        && ![istarget frv-*-uclinux*]
-        && ![istarget bfin-*-uclinux]
-        && ![istarget sh*-*-uclinux*]
-        && ![istarget tic6x*-*-uclinux*]
         && ![istarget *-*-irix5*]
         && ![istarget *-*-irix6*]
+        && ![istarget *-*-kaos*]
+        && ![istarget *-*-*linux*]
+        && ![istarget *-*-lynxos*]
+        && ![istarget *-*-nacl*]
         && ![istarget *-*-netbsd*]
+        && ![istarget *-*-nto*]
         && ![istarget *-*-openbsd*]
-        && ![istarget *-*-solaris2*] } {
+        && ![istarget *-*-rtems*]
+        && ![istarget *-*-solaris2*]
+        && ![istarget *-*-sysv4*]
+        && ![istarget *-*-unixware*]
+        && ![istarget *-*-wasm32*]
+        && ![istarget avr-*-*]
+        && ![istarget hppa*64*-*-hpux*]
+        && ![istarget ia64-*-hpux*] } {
        return 0
     }
 
-    if { [istarget *-*-linux*aout*]
-        || [istarget *-*-linux*ecoff*]
-        || [istarget *-*-linux*oldld*]
-        || [istarget h8500-*-rtems*]
-        || [istarget i960-*-rtems*]
+    if { [istarget *-*-linux*ecoff*]
         || [istarget *-*-rtemscoff*] } {
        return 0
     }
 
     if { ![istarget *-*-netbsdelf*]
-        && ([istarget *-*-netbsd*aout*]
-            || [istarget *-*-netbsdpe*]
-            || [istarget arm*-*-netbsd*]
-            || [istarget sparc-*-netbsd*]
-            || [istarget i*86-*-netbsd*]
-            || [istarget m68*-*-netbsd*]
-            || [istarget vax-*-netbsd*]
+        && (   [istarget vax-*-netbsd*]
             || [istarget ns32k-*-netbsd*]) } {
        return 0
     }
 
-    if { [istarget arm-*-openbsd*]
-        || [istarget i386-*-openbsd\[0-2\].*]
-        || [istarget i386-*-openbsd3.\[0-2\]]
-        || [istarget m68*-*-openbsd*]
+    if {    [istarget arm-*-openbsd*]
         || [istarget ns32k-*-openbsd*]
-        || [istarget sparc-*-openbsd\[0-2\].*]
-        || [istarget sparc-*-openbsd3.\[0-1\]]
         || [istarget vax-*-openbsd*] } {
        return 0
     }
@@ -80,34 +81,11 @@ proc is_elf_format {} {
 # True if the object format is known to be a.out.
 #
 proc is_aout_format {} {
-    if { [istarget *-*-netbsdelf]
-        || [istarget sparc64-*-netbsd*]
-        || [istarget sparc64-*-openbsd*] } {
-       return 0
-    }
-    if { [istarget *-*-*\[ab\]out*]
-        || [istarget *-*-linux*oldld*]
+    if { [istarget *-*-*aout*]
         || [istarget *-*-bsd*]
         || [istarget *-*-msdos*]
-        || [istarget arm-*-netbsd*]
-        || [istarget arm-*-openbsd*]
-        || [istarget arm-*-riscix*]
-        || [istarget i?86-*-freebsd\[12\]*]
-        || [istarget i?86-*-netbsd*]
-        || [istarget i?86-*-openbsd\[0-2\]*]
-        || [istarget i?86-*-openbsd3.\[0-2\]*]
-        || [istarget i?86-*-vsta]
-        || [istarget i?86-*-mach*]
-        || [istarget m68*-*-netbsd*]
-        || [istarget m68*-*-openbsd*]
         || [istarget ns32k-*-*]
         || [istarget pdp11-*-*]
-        || [istarget sparc*-*-sunos4*]
-        || [istarget sparc*-*-netbsd*]
-        || [istarget sparc*-*-openbsd\[0-2\]*]
-        || [istarget sparc*-*-openbsd3.\[0-1\]*]
-        || [istarget sparc*-fujitsu-none]
-        || [istarget vax-dec-ultrix*]
         || [istarget vax-*-netbsd] } {
        return 1
     }
@@ -152,11 +130,89 @@ proc is_elf64 { binary_file } {
     return 0
 }
 
-# True if the build supports zlib compression.
-proc is_zlib_supported {} {
+# True if the target matches TARGET, specified as a TCL procedure if
+# in square brackets or as machine triplet otherwise.
+#
+proc match_target { target } {
+   if [string match {\[*\]} $target] {
+       return $target
+   } else {
+       return [istarget $target]
+   }
+}
+
+# True if the ELF target supports STB_GNU_UNIQUE with the ELF header's
+# OSABI field set to ELFOSABI_GNU.
+#
+# This generally depends on the target OS only, however there are a
+# number of exceptions for bare metal targets as follows.  The MSP430
+# and Visium targets set OSABI to ELFOSABI_STANDALONE and cannot
+# support STB_GNU_UNIQUE.  Likewise non-EABI ARM targets set OSABI to
+# ELFOSABI_ARM, and TI C6X targets to ELFOSABI_C6000_*.  Finally
+# rather than `bfd_elf_final_link' AM33/2.0, D30V, DLX, and
+# picoJava targets use `_bfd_generic_final_link', which does not
+# support STB_GNU_UNIQUE symbol binding causing assertion failures.
+#
+proc supports_gnu_unique {} {
+    if { [istarget *-*-gnu*]
+        || [istarget *-*-linux*]
+        || [istarget *-*-nacl*] } {
+       return 1
+    }
+    if { [istarget "arm*-*-*eabi*"] } {
+       return 1
+    }
+    if { [istarget "wasm32*-*-*"] } {
+        return 1
+    }
+    if { ![istarget "*-*-elf*"] } {
+       return 0
+    }
+    if { [istarget "arm*-*-*"]
+        || [istarget "msp430-*-*"]
+        || [istarget "tic6x-*-*"]
+        || [istarget "visium-*-*"] } {
+       return 0
+    }
+    if { [istarget "am33_2.0-*-*"]
+        || [istarget "d30v-*-*"]
+        || [istarget "dlx-*-*"]
+        || [istarget "pj*-*-*"] } {
+       return 0
+    }
     return 1
 }
 
+# True for targets that do not sort .symtab as per the ELF standard.
+# ie. any that have mips_elf32_be_vec, mips_elf32_le_vec,
+# mips_elf32_n_be_vec or mips_elf32_n_le_vec as the primary bfd target
+# vector in config.bfd.  When syncing with config.bfd, don't forget that
+# earlier case-matches trump later ones.
+proc is_bad_symtab {} {
+    if { ![istarget "mips*-*-*"] } {
+       return 0;
+    }
+    if { [istarget "*-*-chorus*"]
+        || [istarget "*-*-irix5*"]
+        || [istarget "*-*-irix6*"]
+        || [istarget "*-*-none"]
+        || [istarget "*-*-rtems*"]
+        || [istarget "*-*-windiss"] } {
+       return 1;
+    }
+    if { [istarget "*-*-elf*"]
+        && ![istarget "*-sde-*"]
+        && ![istarget "*-mti-*"]
+        && ![istarget "*-img-*"] } {
+       return 1;
+    }
+    if { [istarget "*-*-openbsd*"]
+        && ![istarget "mips64*-*-*"] } {
+       return 1;
+    }
+    return 0;
+}
+
 # Compare two files line-by-line.  FILE_1 is the actual output and FILE_2
 # is the expected output.  Ignore blank lines in either file.
 #
This page took 0.02646 seconds and 4 git commands to generate.