public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
@ 2010-10-28 10:39 Thomas Schwinge
  2010-10-28 13:40 ` Robert Millan
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Thomas Schwinge @ 2010-10-28 10:39 UTC (permalink / raw)
  To: binutils, binutils; +Cc: debian-bsd

I was comparing the testsuite runs for the targets i686-pc-linux-gnu and
i686-pc-gnu (a.k.a. GNU/Hurd), both natively built -- and I expected them
to be almost the same (baring some differences in LD's tests, perhaps),
but they were not -- for GNU/Hurd a lot of tests wouldn't be considered.
Here is a patch to fix this.  I must say I was surprised how many tests
are wired for *-*-linux* only, and I wouldn't understand why (but didn't
investiage either), and I generally simply windened these to include
*-*-gnu*, too.

As the triplet *-*-gnu* not only matches GNU/Hurd systems, but also
*-*-linux-gnu* and *-*-kfreebsd-gnu* we have to be a bit careful.
(Perhaps we should really transition over to using *-*-hurd-gnu* or
something...)  I cross-checked that nothing changes for a
--target=i686-pc-linux build, but I'd like to have the kFreeBSD guys
check too (thus CCed).  I suppose this patch will simply increase test
coverage for you, too.  But perhaps you'll need further changes?  Please
just build binutils with and without this patch, run make -k check, and
compare the two runs' */*.sum */*/*.sum files.

I had to XFAIL a few tests (and added URLs to the page where I describe
them).

Most of this patch should be pretty straight-forward, but please
especially review the TCL bits (this was my first real-world encounter
with that language): ld/testsuite/ld-elf/elf.exp,
ld/testsuite/ld-elfweak/elfweak.exp.


binutils/testsuite/

	* lib/utils-lib.exp (is_elf_format): Consider for *-*-gnu*, too.
	* binutils-all/elfedit-2.d (target): Likewise.
	* binutils-all/elfedit-3.d (target): Likewise.
	* binutils-all/i386/i386.exp: Likewise.
	* binutils-all/objcopy.exp: Likewise.
	* binutils-all/strip-3.d (target): Likewise.

gas/testsuite/

	* lib/gas-defs.exp (is_elf_format): Consider for *-*-gnu*, too.
	* gas/elf/elf.exp: Likewise.
	* gas/symver/symver.exp: Likewise.

ld/testsuite/

	* ld/configure.host: Add stanza for *-*-gnu*.
	* lib/ld-lib.exp (is_elf_format): Consider for *-*-gnu*, too.
	* ld-discard/discard.exp: Likewise.
	* ld-elf/binutils.exp: Likewise.
	* ld-elf/commonpage1.d (target): Likewise.
	* ld-elf/discard1.d (target): Likewise.
	* ld-elf/discard2.d (target): Likewise.
	* ld-elf/discard3.d (target): Likewise.
	* ld-elf/dynsym1.d (target): Likewise.
	* ld-elf/eh6.d (target): Likewise.
	* ld-elf/elf.exp: Likewise.
	(array_tests): Move -static tests to...
	(array_tests_static): ... here, and handle it accordingly.
	* ld-elf/hash.d (target): Likewise.
	* ld-elf/header.d (target): Likewise.
	* ld-elf/loadaddr1.d (target): Likewise.
	* ld-elf/loadaddr2.d (target): Likewise.
	* ld-elf/loadaddr3a.d (target): Likewise.
	* ld-elf/loadaddr3b.d (target): Likewise.
	* ld-elf/local1.d (target): Likewise.
	* ld-elf/maxpage1.d (target): Likewise.
	* ld-elf/maxpage2.d (target): Likewise.
	* ld-elf/maxpage3a.d (target): Likewise.
	* ld-elf/multibss1.d (target): Likewise.
	* ld-elf/noload-2.d (target): Likewise.
	* ld-elf/seg.d (target): Likewise.
	* ld-elf/textaddr1.d (target): Likewise.
	* ld-elf/textaddr2.d (target): Likewise.
	* ld-elf/textaddr3.d (target): Likewise.
	* ld-elf/textaddr4.d (target): Likewise.
	* ld-elf/textaddr5.d (target): Likewise.
	* ld-elf/textaddr6.d (target): Likewise.
	* ld-elf/textaddr7.d (target): Likewise.
	* ld-elf/tls_common.exp: Likewise.
	* ld-elf/unknown2.d (target): Likewise.
	* ld-elfvers/vers.exp: Likewise.
	* ld-elfvsb/elfvsb.exp: Likewise.
	* ld-elfweak/elfweak.exp: Likewise.
	(setup_xfail_gnu_hurd): New function.  Use it where appropriate.
	* ld-gc/abi-note.d (target): Likewise.
	* ld-gc/gc.exp: Likewise.
	* ld-gc/pr11218.d (target): Likewise.
	* ld-gc/start.d (target): Likewise.
	* ld-i386/i386.exp: Likewise.
	* ld-ifunc/binutils.exp: Likewise.
	* ld-ifunc/ifunc.exp: Likewise.
	* ld-linkonce/linkonce.exp: Likewise.
	* ld-linkonce/zeroehl32.d (target): Likewise.
	* ld-pie/pie.exp: Likewise.
	* ld-scripts/phdrs2.exp: Likewise.
	* ld-scripts/rgn-at5.d (target): Likewise.
	* ld-shared/shared.exp: Likewise.
	* ld-undefined/entry-3.d (target): Likewise.
	* ld-undefined/entry-4.d (target): Likewise.
	* ld-undefined/weak-undef.exp: Likewise.


Regards,
 Thomas

---
 binutils/testsuite/binutils-all/elfedit-2.d   |    2 +-
 binutils/testsuite/binutils-all/elfedit-3.d   |    2 +-
 binutils/testsuite/binutils-all/i386/i386.exp |    6 +++++-
 binutils/testsuite/binutils-all/objcopy.exp   |    3 ++-
 binutils/testsuite/binutils-all/strip-3.d     |    2 +-
 binutils/testsuite/lib/utils-lib.exp          |    1 +
 gas/testsuite/gas/elf/elf.exp                 |    1 +
 gas/testsuite/gas/symver/symver.exp           |    3 ++-
 gas/testsuite/lib/gas-defs.exp                |    1 +
 ld/configure.host                             |   11 ++++++++++-
 ld/testsuite/ld-discard/discard.exp           |    2 +-
 ld/testsuite/ld-elf/binutils.exp              |    5 +++--
 ld/testsuite/ld-elf/commonpage1.d             |    2 +-
 ld/testsuite/ld-elf/discard1.d                |    2 +-
 ld/testsuite/ld-elf/discard2.d                |    2 +-
 ld/testsuite/ld-elf/discard3.d                |    2 +-
 ld/testsuite/ld-elf/dynsym1.d                 |    2 +-
 ld/testsuite/ld-elf/eh6.d                     |    2 +-
 ld/testsuite/ld-elf/elf.exp                   |   19 +++++++++++++++----
 ld/testsuite/ld-elf/hash.d                    |    2 +-
 ld/testsuite/ld-elf/header.d                  |    2 +-
 ld/testsuite/ld-elf/loadaddr1.d               |    2 +-
 ld/testsuite/ld-elf/loadaddr2.d               |    2 +-
 ld/testsuite/ld-elf/loadaddr3a.d              |    2 +-
 ld/testsuite/ld-elf/loadaddr3b.d              |    2 +-
 ld/testsuite/ld-elf/local1.d                  |    2 +-
 ld/testsuite/ld-elf/maxpage1.d                |    2 +-
 ld/testsuite/ld-elf/maxpage2.d                |    2 +-
 ld/testsuite/ld-elf/maxpage3a.d               |    2 +-
 ld/testsuite/ld-elf/multibss1.d               |    2 +-
 ld/testsuite/ld-elf/noload-2.d                |    2 +-
 ld/testsuite/ld-elf/seg.d                     |    2 +-
 ld/testsuite/ld-elf/textaddr1.d               |    2 +-
 ld/testsuite/ld-elf/textaddr2.d               |    2 +-
 ld/testsuite/ld-elf/textaddr3.d               |    2 +-
 ld/testsuite/ld-elf/textaddr4.d               |    2 +-
 ld/testsuite/ld-elf/textaddr5.d               |    2 +-
 ld/testsuite/ld-elf/textaddr6.d               |    2 +-
 ld/testsuite/ld-elf/textaddr7.d               |    2 +-
 ld/testsuite/ld-elf/tls_common.exp            |    4 ++--
 ld/testsuite/ld-elf/unknown2.d                |    2 +-
 ld/testsuite/ld-elfvers/vers.exp              |    1 +
 ld/testsuite/ld-elfvsb/elfvsb.exp             |    4 +++-
 ld/testsuite/ld-elfweak/elfweak.exp           |   18 ++++++++++++++++++
 ld/testsuite/ld-gc/abi-note.d                 |    2 +-
 ld/testsuite/ld-gc/gc.exp                     |    3 ++-
 ld/testsuite/ld-gc/pr11218.d                  |    2 +-
 ld/testsuite/ld-gc/start.d                    |    2 +-
 ld/testsuite/ld-i386/i386.exp                 |    2 ++
 ld/testsuite/ld-ifunc/binutils.exp            |    2 +-
 ld/testsuite/ld-ifunc/ifunc.exp               |    3 ++-
 ld/testsuite/ld-linkonce/linkonce.exp         |    2 +-
 ld/testsuite/ld-linkonce/zeroehl32.d          |    2 +-
 ld/testsuite/ld-pie/pie.exp                   |    4 ++--
 ld/testsuite/ld-scripts/phdrs2.exp            |    1 +
 ld/testsuite/ld-scripts/rgn-at5.d             |    2 +-
 ld/testsuite/ld-shared/shared.exp             |    1 +
 ld/testsuite/ld-undefined/entry-3.d           |    2 +-
 ld/testsuite/ld-undefined/entry-4.d           |    2 +-
 ld/testsuite/ld-undefined/weak-undef.exp      |    1 +
 ld/testsuite/lib/ld-lib.exp                   |    1 +
 61 files changed, 116 insertions(+), 57 deletions(-)

diff --git a/binutils/testsuite/binutils-all/elfedit-2.d b/binutils/testsuite/binutils-all/elfedit-2.d
index af07c1d..56468b5 100644
--- a/binutils/testsuite/binutils-all/elfedit-2.d
+++ b/binutils/testsuite/binutils-all/elfedit-2.d
@@ -3,7 +3,7 @@
 #source: empty.s
 #readelf: -h
 #name: Update ELF header 2
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
 ELF Header:
diff --git a/binutils/testsuite/binutils-all/elfedit-3.d b/binutils/testsuite/binutils-all/elfedit-3.d
index c877f46..219cac5 100644
--- a/binutils/testsuite/binutils-all/elfedit-3.d
+++ b/binutils/testsuite/binutils-all/elfedit-3.d
@@ -3,7 +3,7 @@
 #source: empty.s
 #readelf: -h
 #name: Update ELF header 3
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
 ELF Header:
diff --git a/binutils/testsuite/binutils-all/i386/i386.exp b/binutils/testsuite/binutils-all/i386/i386.exp
index 2ca4bd5..5b33e67 100644
--- a/binutils/testsuite/binutils-all/i386/i386.exp
+++ b/binutils/testsuite/binutils-all/i386/i386.exp
@@ -15,7 +15,11 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 
-if {!([istarget "i*86-*-linux*"] || [istarget "x86_64-*-linux*"]) || ![is_elf_format] || [is_remote host]} then {
+if {!([istarget "i*86-*-linux*"]
+      || [istarget "i*86-*-gnu*"]
+      || [istarget "x86_64-*-linux*"])
+    || ![is_elf_format]
+    || [is_remote host]} then {
     return
 }
 
diff --git a/binutils/testsuite/binutils-all/objcopy.exp b/binutils/testsuite/binutils-all/objcopy.exp
index c93372c..0e2345e 100644
--- a/binutils/testsuite/binutils-all/objcopy.exp
+++ b/binutils/testsuite/binutils-all/objcopy.exp
@@ -538,7 +538,8 @@ proc copy_setup { } {
 	set add_libs ""
     }
 
-    if { [istarget *-*-linux*] } {
+    if { [istarget *-*-linux*]
+	 || [istarget *-*-gnu*] } {
 	foreach i $gcc_gas_flag {
 	    set flags "additional_flags=$i $flags"
 	}
diff --git a/binutils/testsuite/binutils-all/strip-3.d b/binutils/testsuite/binutils-all/strip-3.d
index d656697..acfec85 100644
--- a/binutils/testsuite/binutils-all/strip-3.d
+++ b/binutils/testsuite/binutils-all/strip-3.d
@@ -3,7 +3,7 @@
 #strip: -R .text -R .data -R .bss -R .ARM.attributes -R .reginfo -R .pdr -R .xtensa.info
 #readelf: -S --wide
 #name: strip empty file
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   \[[ 0]+\][ \t]+NULL[ \t]+.*
diff --git a/binutils/testsuite/lib/utils-lib.exp b/binutils/testsuite/lib/utils-lib.exp
index db170d3..04135f5 100644
--- a/binutils/testsuite/lib/utils-lib.exp
+++ b/binutils/testsuite/lib/utils-lib.exp
@@ -129,6 +129,7 @@ proc is_elf_format {} {
 	 && ![istarget hppa*64*-*-hpux*]
 	 && ![istarget ia64-*-hpux*]
 	 && ![istarget *-*-linux*]
+	 && ![istarget *-*-gnu*]
 	 && ![istarget frv-*-uclinux*]
 	 && ![istarget bfin-*-uclinux]
 	 && ![istarget sh*-*-uclinux*]
diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp
index 5ce538a..1aebf8a 100644
--- a/gas/testsuite/gas/elf/elf.exp
+++ b/gas/testsuite/gas/elf/elf.exp
@@ -39,6 +39,7 @@ proc run_elf_list_test { name suffix opts readelf_opts readelf_pipe } {
 # We're testing bits in obj-elf -- don't run on anything else.
 if { ([istarget "*-*-*elf*"]
       || [istarget "*-*-linux*"]
+      || [istarget "*-*-gnu*"]
       || [istarget "m6811-*"]
       || [istarget "m6812-*"]
       || [istarget "sparc*-*-solaris*"]
diff --git a/gas/testsuite/gas/symver/symver.exp b/gas/testsuite/gas/symver/symver.exp
index 737bc85..b4caae9 100644
--- a/gas/testsuite/gas/symver/symver.exp
+++ b/gas/testsuite/gas/symver/symver.exp
@@ -18,7 +18,8 @@ proc run_error_test { name opts } {
 if { ([istarget "*-*-elf*"]		
       || [istarget "m6811-*"]
       || [istarget "m6812-*"]
-      || [istarget "*-*-linux*"])
+      || [istarget "*-*-linux*"]
+      || [istarget "*-*-gnu*"])
      && ![istarget *-*-linux*aout*]
      && ![istarget *-*-linux*oldld*] } then {
 
diff --git a/gas/testsuite/lib/gas-defs.exp b/gas/testsuite/lib/gas-defs.exp
index 8e14101..88e2540 100644
--- a/gas/testsuite/lib/gas-defs.exp
+++ b/gas/testsuite/lib/gas-defs.exp
@@ -288,6 +288,7 @@ proc is_elf_format {} {
 	 && ![istarget hppa*64*-*-hpux*]
 	 && ![istarget ia64-*-hpux*]
 	 && ![istarget *-*-linux*]
+	 && ![istarget *-*-gnu*]
 	 && ![istarget frv-*-uclinux*]
 	 && ![istarget bfin-*-uclinux]
 	 && ![istarget sh*-*-uclinux*]
diff --git a/ld/configure.host b/ld/configure.host
index 3e88c27..459b9d2 100644
--- a/ld/configure.host
+++ b/ld/configure.host
@@ -37,6 +37,15 @@ case "${host}" in
   HOSTING_LIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
   ;;
 
+*-*-gnu*)
+  # When creating static executables, we ought to use crt0.o instead of crt1.o,
+  # <http://www.gnu.org/software/hurd/open_issues/binutils_testsuite.html#static>,
+  # but the testing infrastructure is not prepared for that.  This is not
+  # relevant for most tests, and the few remaining ones have been XFAILed.
+  HOSTING_CRT0='-dynamic-linker `${CC} --help --verbose 2>&1 | egrep "ld[^ ]*\.so" | sed -e "s,.*-dynamic-linker[ 	][ 	]*\(.*/ld[^ ]*\.so[^ 	]*\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`'
+  HOSTING_LIBS='-L`dirname \`${CC} --print-file-name=libc.so\`` '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
+  ;;
+
 *-*-netbsd*)
   # Different versions of NetBSD with the ELF object format use different
   # sets of start/end files.
@@ -194,7 +203,7 @@ sparc64-*-solaris2* | sparcv9-*-solaris2*)
 *-*-freebsd* | *-*-kfreebsd*-gnu | *-*-dragonfly*)
   ;;
 
-*-*-linux*)
+*-*-linux* | *-*-gnu*)
   ;;
 
 *-*-netbsd*)
diff --git a/ld/testsuite/ld-discard/discard.exp b/ld/testsuite/ld-discard/discard.exp
index deb5dfd..0334270 100644
--- a/ld/testsuite/ld-discard/discard.exp
+++ b/ld/testsuite/ld-discard/discard.exp
@@ -26,7 +26,7 @@
 # in every .d-file.
 
 if { ![istarget *-*-linux*] \
-     && ![istarget *-*-gnu] \
+     && ![istarget *-*-gnu*] \
      && ![istarget hppa*64*-*-hpux*] \
      && ![istarget *-*-elf] } {
     return
diff --git a/ld/testsuite/ld-elf/binutils.exp b/ld/testsuite/ld-elf/binutils.exp
index 422c5d7..48e489f 100644
--- a/ld/testsuite/ld-elf/binutils.exp
+++ b/ld/testsuite/ld-elf/binutils.exp
@@ -23,8 +23,8 @@
 
 # Make sure that binutils can correctly handle ld output in ELF.
 
-# Run on Linux only.
-if { ![istarget *-*-linux*] } {
+if { ![istarget *-*-linux*]
+     && ![istarget *-*-gnu*]} {
     return
 }
 
@@ -112,6 +112,7 @@ if { ([istarget "i?86-*-elf*"]
       || ([istarget "i?86-*-linux*"]
 	  && ![istarget "*-*-*aout*"]
 	  && ![istarget "*-*-*oldld*"])
+      || [istarget "i?86-*-gnu*"]
       || [istarget "x86_64-*-linux*"]
       || [istarget "amd64-*-linux*"]) } {
     binutils_test strip "-z relro -shared" relro2
diff --git a/ld/testsuite/ld-elf/commonpage1.d b/ld/testsuite/ld-elf/commonpage1.d
index 76dc056..2b17574 100644
--- a/ld/testsuite/ld-elf/commonpage1.d
+++ b/ld/testsuite/ld-elf/commonpage1.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -z max-page-size=0x200000 -z common-page-size=0x100000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD+.*0x200000
diff --git a/ld/testsuite/ld-elf/discard1.d b/ld/testsuite/ld-elf/discard1.d
index b80fbf0..99de88e 100644
--- a/ld/testsuite/ld-elf/discard1.d
+++ b/ld/testsuite/ld-elf/discard1.d
@@ -1,7 +1,7 @@
 #source: discard1.s
 #ld: -r -T discard.ld
 #readelf: -r
-#target: x86_64-*-linux-gnu i?86-*-linux-gnu
+#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
 Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 1 entries:
 [ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
diff --git a/ld/testsuite/ld-elf/discard2.d b/ld/testsuite/ld-elf/discard2.d
index 65a3abe..df10619 100644
--- a/ld/testsuite/ld-elf/discard2.d
+++ b/ld/testsuite/ld-elf/discard2.d
@@ -1,7 +1,7 @@
 #source: discard2.s
 #ld: -r -T discard.ld
 #readelf: -r
-#target: x86_64-*-linux-gnu i?86-*-linux-gnu
+#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
 Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 1 entries:
 [ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
diff --git a/ld/testsuite/ld-elf/discard3.d b/ld/testsuite/ld-elf/discard3.d
index 07962b5..6934882 100644
--- a/ld/testsuite/ld-elf/discard3.d
+++ b/ld/testsuite/ld-elf/discard3.d
@@ -2,7 +2,7 @@
 #source: discard2.s
 #ld: -r -T discard.ld
 #readelf: -r
-#target: x86_64-*-linux-gnu i?86-*-linux-gnu
+#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
 Relocation section '.rel.*.debug_info' at offset 0x[0-9a-z]+ contains 2 entries:
 [ \t]+Offset[ \t]+Info[ \t]+Type[ \t]+Sym.*
diff --git a/ld/testsuite/ld-elf/dynsym1.d b/ld/testsuite/ld-elf/dynsym1.d
index 88037ef..b354aae 100644
--- a/ld/testsuite/ld-elf/dynsym1.d
+++ b/ld/testsuite/ld-elf/dynsym1.d
@@ -1,7 +1,7 @@
 #source: empty.s
 #ld: -shared
 #readelf: --dyn-syms
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
  +[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9] _start
diff --git a/ld/testsuite/ld-elf/eh6.d b/ld/testsuite/ld-elf/eh6.d
index 75eb54b..76be605 100644
--- a/ld/testsuite/ld-elf/eh6.d
+++ b/ld/testsuite/ld-elf/eh6.d
@@ -1,7 +1,7 @@
 #source: eh6.s
 #ld: --gc-sections -shared
 #readelf: -wf
-#target: x86_64-*-linux-gnu i?86-*-linux-gnu
+#target: x86_64-*-linux-gnu i?86-*-linux-gnu i?86-*-gnu*
 
 Contents of the .eh_frame section:
 
diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp
index 1e1f738..da271ba 100644
--- a/ld/testsuite/ld-elf/elf.exp
+++ b/ld/testsuite/ld-elf/elf.exp
@@ -41,7 +41,8 @@ foreach t $test_list {
     run_dump_test [file rootname $t]
 }
 
-if { [istarget *-*-linux*] } {
+if { [istarget *-*-linux*]
+     || [istarget *-*-gnu*] } {
     run_ld_link_tests {
 	{"Weak symbols in dynamic objects 1 (support)"
 	    "-shared" "" {weak-dyn-1a.s}
@@ -71,14 +72,24 @@ if ![isnative] {
 
 set array_tests {
     {"preinit array" "" "" {preinit.c} "preinit" "preinit.out"}
-    {"static preinit array" "-static" "" {preinit.c} "preinit" "preinit.out"}
     {"init array" "" "" {init.c} "init" "init.out"}
-    {"static init array" "-static" "" {init.c} "init" "init.out"}
     {"fini array" "" "" {fini.c} "fini" "fini.out"}
+}
+set array_tests_static {
+    {"static preinit array" "-static" "" {preinit.c} "preinit" "preinit.out"}
+    {"static init array" "-static" "" {init.c} "init" "init.out"}
     {"static fini array" "-static" "" {fini.c} "fini" "fini.out"}
 }
 
 # NetBSD ELF systems do not currently support the .*_array sections.
-run_ld_link_exec_tests [list "*-*-netbsdelf*"] $array_tests
+set xfails [list "*-*-netbsdelf*"]
+run_ld_link_exec_tests $xfails $array_tests
+switch -regexp $target_triplet {
+    ^\[^-\]*-\[^-\]*-gnu.*$ {
+	# <http://www.gnu.org/software/hurd/open_issues/binutils_testsuite.html#static>
+	lappend xfails "*-*-*"
+    }
+}
+run_ld_link_exec_tests $xfails $array_tests_static
 
 catch "exec rm -f tmpdir/preinit tmpdir/init tmpdir/fini" status
diff --git a/ld/testsuite/ld-elf/hash.d b/ld/testsuite/ld-elf/hash.d
index 9bcd9a9..473cd4d 100644
--- a/ld/testsuite/ld-elf/hash.d
+++ b/ld/testsuite/ld-elf/hash.d
@@ -1,7 +1,7 @@
 #source: start.s
 #readelf: -d -s -D
 #ld: -shared --hash-style=gnu
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 #notarget: mips*-*-*
 
 #...
diff --git a/ld/testsuite/ld-elf/header.d b/ld/testsuite/ld-elf/header.d
index d438832..be3722d 100644
--- a/ld/testsuite/ld-elf/header.d
+++ b/ld/testsuite/ld-elf/header.d
@@ -1,4 +1,4 @@
-# target: *-*-linux*  *-*-vxworks
+# target: *-*-linux* *-*-gnu* *-*-vxworks
 # ld: -T header.t -z max-page-size=0x100
 # objdump: -hpw
 
diff --git a/ld/testsuite/ld-elf/loadaddr1.d b/ld/testsuite/ld-elf/loadaddr1.d
index 2d3469b..0fd96a7 100644
--- a/ld/testsuite/ld-elf/loadaddr1.d
+++ b/ld/testsuite/ld-elf/loadaddr1.d
@@ -1,7 +1,7 @@
 #source: loadaddr.s
 #ld: -T loadaddr1.t -T loadaddr.t -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
diff --git a/ld/testsuite/ld-elf/loadaddr2.d b/ld/testsuite/ld-elf/loadaddr2.d
index e447e38..5825fe8 100644
--- a/ld/testsuite/ld-elf/loadaddr2.d
+++ b/ld/testsuite/ld-elf/loadaddr2.d
@@ -1,7 +1,7 @@
 #source: loadaddr.s
 #ld: -T loadaddr2.t -T loadaddr.t -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
diff --git a/ld/testsuite/ld-elf/loadaddr3a.d b/ld/testsuite/ld-elf/loadaddr3a.d
index b2ace66..10cb9a5 100644
--- a/ld/testsuite/ld-elf/loadaddr3a.d
+++ b/ld/testsuite/ld-elf/loadaddr3a.d
@@ -1,7 +1,7 @@
 #source: loadaddr.s
 #ld: -T loadaddr3.t -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD +0x000000 0x0*00000000 0x0*00000000 0x0*0110 0x0*0110 R E 0x.*
diff --git a/ld/testsuite/ld-elf/loadaddr3b.d b/ld/testsuite/ld-elf/loadaddr3b.d
index af7e6e4..63efa71 100644
--- a/ld/testsuite/ld-elf/loadaddr3b.d
+++ b/ld/testsuite/ld-elf/loadaddr3b.d
@@ -1,7 +1,7 @@
 #source: loadaddr.s
 #ld: -T loadaddr3.t -z max-page-size=0x200000
 #objdump: -t
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
 0+0000100 l    d  .text	0+0000000 .text
diff --git a/ld/testsuite/ld-elf/local1.d b/ld/testsuite/ld-elf/local1.d
index 5957d8f..3025d41 100644
--- a/ld/testsuite/ld-elf/local1.d
+++ b/ld/testsuite/ld-elf/local1.d
@@ -1,6 +1,6 @@
 #ld: -shared --version-script local1.map
 #readelf: -s --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
     .*: [0-9a-f]* +[0-9a-f]+ +OBJECT +LOCAL +DEFAULT +[0-9] +foo
diff --git a/ld/testsuite/ld-elf/maxpage1.d b/ld/testsuite/ld-elf/maxpage1.d
index 57acda0..f776257 100644
--- a/ld/testsuite/ld-elf/maxpage1.d
+++ b/ld/testsuite/ld-elf/maxpage1.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD+.*0x200000
diff --git a/ld/testsuite/ld-elf/maxpage2.d b/ld/testsuite/ld-elf/maxpage2.d
index 7fe9379..7d732eb 100644
--- a/ld/testsuite/ld-elf/maxpage2.d
+++ b/ld/testsuite/ld-elf/maxpage2.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -z max-page-size=0x100000
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   LOAD+.*0x100000
diff --git a/ld/testsuite/ld-elf/maxpage3a.d b/ld/testsuite/ld-elf/maxpage3a.d
index 0e46b6b..7d6f2d8 100644
--- a/ld/testsuite/ld-elf/maxpage3a.d
+++ b/ld/testsuite/ld-elf/maxpage3a.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -z max-page-size=0x10000000 -T maxpage3.t
 #readelf: -lS --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   \[[ 0-9]+\] \.data[ \t]+PROGBITS[ \t]+0*10000000[ \t]+[ \t0-9a-f]+WA?.*
diff --git a/ld/testsuite/ld-elf/multibss1.d b/ld/testsuite/ld-elf/multibss1.d
index a6fd9b3..89b94ad 100644
--- a/ld/testsuite/ld-elf/multibss1.d
+++ b/ld/testsuite/ld-elf/multibss1.d
@@ -1,7 +1,7 @@
 #source: multibss1.s
 #ld: -e 0
 #readelf: -l --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 #xfail: hppa64-*-*
 # hppa64 default script add 16 bytes at start of .data giving 0x500010 p_memsz
 
diff --git a/ld/testsuite/ld-elf/noload-2.d b/ld/testsuite/ld-elf/noload-2.d
index 633bf45..0e25d9b 100644
--- a/ld/testsuite/ld-elf/noload-2.d
+++ b/ld/testsuite/ld-elf/noload-2.d
@@ -1,7 +1,7 @@
 #source: noload-1.s
 #ld: -T noload-1.t -z max-page-size=0x200000
 #readelf: -Sl --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
  +LOAD +0x200000 +0x0+ +0x0+ +0x0+ +0x0+1 +RW +0x200000
diff --git a/ld/testsuite/ld-elf/seg.d b/ld/testsuite/ld-elf/seg.d
index d9436ae..2255195 100644
--- a/ld/testsuite/ld-elf/seg.d
+++ b/ld/testsuite/ld-elf/seg.d
@@ -1,4 +1,4 @@
-#target: *-*-linux* *-*-vxworks
+#target: *-*-linux* *-*-gnu* *-*-vxworks
 #source: seg.s
 #ld: -T seg.t -z max-page-size=0x1000
 #readelf: -l --wide
diff --git a/ld/testsuite/ld-elf/textaddr1.d b/ld/testsuite/ld-elf/textaddr1.d
index f7a3ad9..e1d6731 100644
--- a/ld/testsuite/ld-elf/textaddr1.d
+++ b/ld/testsuite/ld-elf/textaddr1.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -Ttext-segment 0x7000000 -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 
 #...
   LOAD +0x0+ 0x0*7000000 0x0*7000000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x200000
diff --git a/ld/testsuite/ld-elf/textaddr2.d b/ld/testsuite/ld-elf/textaddr2.d
index 9d1b0e5..60632d0 100644
--- a/ld/testsuite/ld-elf/textaddr2.d
+++ b/ld/testsuite/ld-elf/textaddr2.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -shared -Ttext-segment 0x7000000 -z max-page-size=0x200000
 #readelf: -l --wide
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 
 #...
   LOAD +0x0+ 0x0*7000000 0x0*7000000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x200000
diff --git a/ld/testsuite/ld-elf/textaddr3.d b/ld/testsuite/ld-elf/textaddr3.d
index d533e24..29ed498 100644
--- a/ld/testsuite/ld-elf/textaddr3.d
+++ b/ld/testsuite/ld-elf/textaddr3.d
@@ -1,4 +1,4 @@
 #source: maxpage1.s
 #ld: -Ttext-segment 0x10000 -z max-page-size=0x200000
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 #warning: .*address of `text-segment' isn't multiple of maximum page size
diff --git a/ld/testsuite/ld-elf/textaddr4.d b/ld/testsuite/ld-elf/textaddr4.d
index bfd7630..16df9a8 100644
--- a/ld/testsuite/ld-elf/textaddr4.d
+++ b/ld/testsuite/ld-elf/textaddr4.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -z max-page-size=0x10000 -Ttext-segment 0x10000
 #readelf: -l --wide
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 
 #...
   LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x10000
diff --git a/ld/testsuite/ld-elf/textaddr5.d b/ld/testsuite/ld-elf/textaddr5.d
index 5fe41d0..41d00c5 100644
--- a/ld/testsuite/ld-elf/textaddr5.d
+++ b/ld/testsuite/ld-elf/textaddr5.d
@@ -1,4 +1,4 @@
 #source: maxpage1.s
 #ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x10000
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 #warning: .*address of `text-segment' isn't multiple of maximum page size
diff --git a/ld/testsuite/ld-elf/textaddr6.d b/ld/testsuite/ld-elf/textaddr6.d
index b3b9f84..6e5f658 100644
--- a/ld/testsuite/ld-elf/textaddr6.d
+++ b/ld/testsuite/ld-elf/textaddr6.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -shared -z max-page-size=0x10000 -Ttext-segment 0x10000
 #readelf: -l --wide
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 
 #...
   LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f][0-9a-f][0-9a-f] 0x0*[0-9a-f][0-9a-f][0-9a-f] R E 0x10000
diff --git a/ld/testsuite/ld-elf/textaddr7.d b/ld/testsuite/ld-elf/textaddr7.d
index 54a571f..b4237db 100644
--- a/ld/testsuite/ld-elf/textaddr7.d
+++ b/ld/testsuite/ld-elf/textaddr7.d
@@ -1,7 +1,7 @@
 #source: maxpage1.s
 #ld: -n -z max-page-size=0x200000 -Ttext-segment 0x10000
 #readelf: -l --wide
-#target: *-*-linux-gnu
+#target: *-*-linux-gnu *-*-gnu*
 
 #...
   LOAD .*
diff --git a/ld/testsuite/ld-elf/tls_common.exp b/ld/testsuite/ld-elf/tls_common.exp
index 66a550c..55f60c7 100644
--- a/ld/testsuite/ld-elf/tls_common.exp
+++ b/ld/testsuite/ld-elf/tls_common.exp
@@ -23,8 +23,8 @@
 
 # Make sure that binutils can correctly handle ld output in ELF.
 
-# Run on Linux only.
-if { ![istarget *-*-linux*] } {
+if { ![istarget *-*-linux*]
+     && ![istarget *-*-gnu*] } {
     return
 }
 
diff --git a/ld/testsuite/ld-elf/unknown2.d b/ld/testsuite/ld-elf/unknown2.d
index 467d5d3..8d6cdee 100644
--- a/ld/testsuite/ld-elf/unknown2.d
+++ b/ld/testsuite/ld-elf/unknown2.d
@@ -1,7 +1,7 @@
 #source: unknown2.s
 #ld: -shared
 #readelf: -S
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
   \[[ 0-9]+\] \.note.foo[ \t]+NOTE[ \t]+.*
diff --git a/ld/testsuite/ld-elfvers/vers.exp b/ld/testsuite/ld-elfvers/vers.exp
index e336f6a..8cbd6df 100644
--- a/ld/testsuite/ld-elfvers/vers.exp
+++ b/ld/testsuite/ld-elfvers/vers.exp
@@ -35,6 +35,7 @@ if { ![istarget hppa*64*-*-hpux*] \
      && ![istarget i?86-*-unixware] \
      && ![istarget i?86-*-elf*] \
      && ![istarget i?86-*-linux*] \
+     && ![istarget i?86-*-gnu*] \
      && ![istarget ia64-*-elf*] \
      && ![istarget ia64-*-linux*] \
      && ![istarget m68k-*-linux*] \
diff --git a/ld/testsuite/ld-elfvsb/elfvsb.exp b/ld/testsuite/ld-elfvsb/elfvsb.exp
index 1a18822..df4c96e 100644
--- a/ld/testsuite/ld-elfvsb/elfvsb.exp
+++ b/ld/testsuite/ld-elfvsb/elfvsb.exp
@@ -30,6 +30,7 @@
 if { ![istarget hppa*64*-*-hpux*] \
      && ![istarget hppa*-*-linux*] \
      && ![istarget i?86-*-linux*] \
+     && ![istarget i?86-*-gnu*] \
      && ![istarget ia64-*-linux*] \
      && ![istarget m68k-*-linux*] \
      && ![istarget mips*-*-linux*] \
@@ -115,7 +116,8 @@ if [istarget arm*-*-linux*] {
 
 set support_protected "no"
 
-if [istarget *-*-linux*] {
+if { [istarget *-*-linux*]
+     || [istarget *-*-gnu*] } {
     if [ld_compile "$CC -g $CFLAGS -DPROTECTED_CHECK" $srcdir/$subdir/main.c $tmpdir/main.o] {
       if [ld_simple_link $CC $tmpdir/main "$tmpdir/main.o"] {
 	catch "exec $tmpdir/main" support_protected
diff --git a/ld/testsuite/ld-elfweak/elfweak.exp b/ld/testsuite/ld-elfweak/elfweak.exp
index cac613b..383db7d 100644
--- a/ld/testsuite/ld-elfweak/elfweak.exp
+++ b/ld/testsuite/ld-elfweak/elfweak.exp
@@ -36,6 +36,7 @@ if {    ![istarget alpha*-*-linux*] \
      && ![istarget i?86-*-unixware] \
      && ![istarget i?86-*-elf*] \
      && ![istarget i?86-*-linux*] \
+     && ![istarget i?86-*-gnu*] \
      && ![istarget ia64-*-elf*] \
      && ![istarget ia64-*-linux*] \
      && ![istarget m68k-*-linux*] \
@@ -67,6 +68,17 @@ set DOBJDUMP_FLAGS --dynamic-syms
 set SOBJDUMP_FLAGS --syms
 set shared --shared
 
+
+# <http://www.gnu.org/software/hurd/open_issues/binutils_testsuite.html#weak>
+proc setup_xfail_gnu_hurd {} {
+    global target_triplet
+    switch -regexp $target_triplet {
+	^\[^-\]*-\[^-\]*-gnu.*$ {
+	    setup_xfail "*-*-*"
+	}
+    }
+}
+
 #
 # objdump_symstuff
 #	Dump non-dynamic symbol stuff and make sure that it is sane.
@@ -452,7 +464,9 @@ build_lib "ELF DSO weak func first DSO" libfoo "foo.o libbar.so" dsow.dsym
 build_lib "ELF DSO weak func last DSO" libfoo "libbar.so foo.o" dsow.dsym
 build_exec "ELF weak func first" foo "main.o bar.o" "" strong "" strong.sym
 build_exec "ELF weak func last" foo "bar.o main.o" "" strong "" strong.sym
+setup_xfail_gnu_hurd
 build_exec "ELF weak func first DSO" foo "main.o libbar.so" "-Wl,-rpath,." weak weak.dsym ""
+setup_xfail_gnu_hurd
 build_exec "ELF weak func last DSO" foo "libbar.so main.o" "-Wl,-rpath,." weak weak.dsym ""
 
 build_lib "ELF DSO weak data first" libfoo "bar1a.o foo1a.o" dsodata.dsym
@@ -465,9 +479,13 @@ build_exec "ELF weak data first" foo "main1.o bar1a.o foo1a.o" "" strongdata ""
 build_exec "ELF weak data last" foo "foo1a.o main1.o bar1a.o" "" strongdata "" strongdata.sym
 build_exec "ELF weak data first common" foo "main1.o bar1a.o foo1b.o" "" strongdata "" strongcomm.sym
 build_exec "ELF weak data last common" foo "foo1b.o main1.o bar1a.o" "" strongdata "" strongcomm.sym
+setup_xfail_gnu_hurd
 build_exec "ELF weak data first DSO" foo "main1.o libbar1a.so libfoo1a.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
+setup_xfail_gnu_hurd
 build_exec "ELF weak data last DSO" foo "libfoo1a.so main1.o libbar1a.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
+setup_xfail_gnu_hurd
 build_exec "ELF weak data first DSO common" foo "main1.o libbar1a.so libfoo1b.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
+setup_xfail_gnu_hurd
 build_exec "ELF weak data last DSO common" foo "libfoo1b.so main1.o libbar1a.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
 
 if ![ld_compile "$CC $CFLAGS $picflag" $srcdir/$subdir/size_foo.c $tmpdir/size_foo.o] {
diff --git a/ld/testsuite/ld-gc/abi-note.d b/ld/testsuite/ld-gc/abi-note.d
index aed0a8b..d796ccc 100644
--- a/ld/testsuite/ld-gc/abi-note.d
+++ b/ld/testsuite/ld-gc/abi-note.d
@@ -1,7 +1,7 @@
 #name: --gc-sections with note section
 #ld: --gc-sections -e _start
 #readelf: -S --wide
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 #notarget: *-*-*aout *-*-*oldld
 
 #...
diff --git a/ld/testsuite/ld-gc/gc.exp b/ld/testsuite/ld-gc/gc.exp
index 7005442..ee9c975 100644
--- a/ld/testsuite/ld-gc/gc.exp
+++ b/ld/testsuite/ld-gc/gc.exp
@@ -93,7 +93,8 @@ run_dump_test "noent"
 run_dump_test "abi-note"
 run_dump_test "start"
 if { [is_remote host] || [which $CC] != 0 } {
-    if { [istarget "*-*-linux*"] } {
+    if { [istarget "*-*-linux*"]
+	 || [istarget "*-*-gnu*"] } {
 	ld_compile "$CC -fPIC $CFLAGS $cflags" $srcdir/$subdir/pr11218-1.c tmpdir/pr11218-1.o
 	ld_simple_link $ld tmpdir/pr11218-1.so "-shared tmpdir/pr11218-1.o"
  	ld_compile "$CC -c $CFLAGS $cflags" $srcdir/$subdir/pr11218-2.c tmpdir/pr11218-2.o
diff --git a/ld/testsuite/ld-gc/pr11218.d b/ld/testsuite/ld-gc/pr11218.d
index 27019a8..fc26940 100644
--- a/ld/testsuite/ld-gc/pr11218.d
+++ b/ld/testsuite/ld-gc/pr11218.d
@@ -1,5 +1,5 @@
 # name: --gc-sections with shared library
 # source: dummy.s
 # ld: --gc-sections -e main tmpdir/pr11218-2.o tmpdir/pr11218-1.so
-# target: *-*-linux*
+# target: *-*-linux* *-*-gnu*
 # error: undefined reference to `unresolved_detected_at_runtime_not_at_linktime'
diff --git a/ld/testsuite/ld-gc/start.d b/ld/testsuite/ld-gc/start.d
index 80c43d9..2800735 100644
--- a/ld/testsuite/ld-gc/start.d
+++ b/ld/testsuite/ld-gc/start.d
@@ -1,7 +1,7 @@
 #name: --gc-sections with __start_
 #ld: --gc-sections -e _start
 #nm: -n
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 #notarget: *-*-*aout *-*-*oldld
 
 #...
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 6777c5f..b6976f4 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -102,6 +102,7 @@ if { !([istarget "i?86-*-elf*"]
        || ([istarget "i?86-*-linux*"]
 	   && ![istarget "*-*-*aout*"]
 	   && ![istarget "*-*-*oldld*"])
+       || [istarget "i?86-*-gnu*"]
        || [istarget "x86_64-*-linux*"]
        || [istarget "amd64-*-linux*"]) } {
     return
@@ -194,6 +195,7 @@ run_dump_test "nogot2"
 run_dump_test "discarded1"
 
 if { !([istarget "i?86-*-linux*"]
+       || [istarget "i?86-*-gnu*"]
        || [istarget "x86_64-*-linux*"]) } {
     return
 }
diff --git a/ld/testsuite/ld-ifunc/binutils.exp b/ld/testsuite/ld-ifunc/binutils.exp
index bd6c953..1ef0dbb 100644
--- a/ld/testsuite/ld-ifunc/binutils.exp
+++ b/ld/testsuite/ld-ifunc/binutils.exp
@@ -24,11 +24,11 @@
 # Make sure that binutils can correctly handle ld output in ELF with
 # STT_GNU_IFUNC symbols.
 
-# Run on Linux/x86 only.
 if { !([istarget "i?86-*-elf*"]		
        || ([istarget "i?86-*-linux*"]
 	   && ![istarget "*-*-*aout*"]
 	   && ![istarget "*-*-*oldld*"])
+       || [istarget "i?86-*-gnu*"]
        || [istarget "x86_64-*-linux*"]
        || [istarget "amd64-*-linux*"]) } {
     return
diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp
index 38fe2d3..7fbd495 100644
--- a/ld/testsuite/ld-ifunc/ifunc.exp
+++ b/ld/testsuite/ld-ifunc/ifunc.exp
@@ -32,7 +32,8 @@ if {!(([istarget "i?86-*-*"]
       && ([istarget "*-*-elf*"]
 	  || ([istarget "*-*-linux*"]
 	      && ![istarget "*-*-*aout*"]
-	      && ![istarget "*-*-*oldld*"]))) } {
+	      && ![istarget "*-*-*oldld*"])
+	  || ([istarget "*-*-gnu*"]))) } {
     verbose "IFUNC tests not run - target does not support IFUNC"
     return
 }
diff --git a/ld/testsuite/ld-linkonce/linkonce.exp b/ld/testsuite/ld-linkonce/linkonce.exp
index 5328734..5296d0f 100644
--- a/ld/testsuite/ld-linkonce/linkonce.exp
+++ b/ld/testsuite/ld-linkonce/linkonce.exp
@@ -25,7 +25,7 @@
 # have to qualify on ELF specifically in every .d-file.
 
 if { ![istarget *-*-linux*] \
-     && ![istarget *-*-gnu] \
+     && ![istarget *-*-gnu*] \
      && ![istarget hppa*64*-*-hpux*] \
      && ![istarget *-*-elf] } {
     return
diff --git a/ld/testsuite/ld-linkonce/zeroehl32.d b/ld/testsuite/ld-linkonce/zeroehl32.d
index 5b51836..bd8fc6f 100644
--- a/ld/testsuite/ld-linkonce/zeroehl32.d
+++ b/ld/testsuite/ld-linkonce/zeroehl32.d
@@ -2,7 +2,7 @@
 #source: y.s
 #ld: -Ttext 0xa00 -T zeroeh.ld
 #objdump: -s
-#target: cris-*-elf cris-*-linux* i?86-*-elf i?86-*-linux*
+#target: cris-*-elf cris-*-linux* i?86-*-elf i?86-*-linux* i?86-*-gnu*
 
 # The word at address 201c, for the linkonce-excluded section, must be zero.
 
diff --git a/ld/testsuite/ld-pie/pie.exp b/ld/testsuite/ld-pie/pie.exp
index 19a2ac0..4a28556 100644
--- a/ld/testsuite/ld-pie/pie.exp
+++ b/ld/testsuite/ld-pie/pie.exp
@@ -22,8 +22,8 @@
 # This test can only be run if ld generates native executables.
 if ![isnative] then {return}
 
-# Run on Linux only.
-if { ![istarget *-*-linux*] } {
+if { ![istarget *-*-linux*]
+     && ![istarget *-*-gnu*] } {
     return
 }
 
diff --git a/ld/testsuite/ld-scripts/phdrs2.exp b/ld/testsuite/ld-scripts/phdrs2.exp
index 57778d2..4783575 100644
--- a/ld/testsuite/ld-scripts/phdrs2.exp
+++ b/ld/testsuite/ld-scripts/phdrs2.exp
@@ -25,6 +25,7 @@ if {    ![istarget *-*-sysv4*] \
      && ![istarget *-*-eabi*] \
      && ![istarget hppa*64*-*-hpux*] \
      && ![istarget *-*-linux*] \
+     && ![istarget *-*-gnu*] \
      && ![istarget *-*-irix5*] \
      && ![istarget *-*-irix6*] \
      && ![istarget *-*-solaris2*] } {
diff --git a/ld/testsuite/ld-scripts/rgn-at5.d b/ld/testsuite/ld-scripts/rgn-at5.d
index 972c6c2..7ba9caf 100644
--- a/ld/testsuite/ld-scripts/rgn-at5.d
+++ b/ld/testsuite/ld-scripts/rgn-at5.d
@@ -2,7 +2,7 @@
 # source: rgn-at5.s
 # ld: -T rgn-at5.t -z max-page-size=0x1000
 # objdump: -w -h
-# target: *-*-linux*
+# target: *-*-linux* *-*-gnu*
 # xfail: rx-*-*
 #   FAILS on the RX because the linker has to set LMA == VMA for the
 #   Renesas loader.
diff --git a/ld/testsuite/ld-shared/shared.exp b/ld/testsuite/ld-shared/shared.exp
index 521b925..c8f7c76 100644
--- a/ld/testsuite/ld-shared/shared.exp
+++ b/ld/testsuite/ld-shared/shared.exp
@@ -38,6 +38,7 @@ if { ![istarget hppa*64*-*-hpux*] \
      && ![istarget i?86-*-unixware] \
      && ![istarget i?86-*-elf*] \
      && ![istarget i?86-*-linux*] \
+     && ![istarget i?86-*-gnu*] \
      && ![istarget ia64-*-elf*] \
      && ![istarget ia64-*-linux*] \
      && ![istarget m68k-*-linux*] \
diff --git a/ld/testsuite/ld-undefined/entry-3.d b/ld/testsuite/ld-undefined/entry-3.d
index 184f478..ca91765 100644
--- a/ld/testsuite/ld-undefined/entry-3.d
+++ b/ld/testsuite/ld-undefined/entry-3.d
@@ -2,7 +2,7 @@
 #source: dummy.s
 #ld: -shared --entry foo tmpdir/libentry.a
 #nm: -n
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
 [0-9a-f]+ T +foo
diff --git a/ld/testsuite/ld-undefined/entry-4.d b/ld/testsuite/ld-undefined/entry-4.d
index 44006aa..d02808e 100644
--- a/ld/testsuite/ld-undefined/entry-4.d
+++ b/ld/testsuite/ld-undefined/entry-4.d
@@ -2,7 +2,7 @@
 #source: dummy.s
 #ld: -shared --entry foo -u foo tmpdir/libentry.a
 #nm: -n
-#target: *-*-linux*
+#target: *-*-linux* *-*-gnu*
 
 #...
 [0-9a-f]+ T +foo
diff --git a/ld/testsuite/ld-undefined/weak-undef.exp b/ld/testsuite/ld-undefined/weak-undef.exp
index a4f35e4..43064a4 100644
--- a/ld/testsuite/ld-undefined/weak-undef.exp
+++ b/ld/testsuite/ld-undefined/weak-undef.exp
@@ -30,6 +30,7 @@ if { ![istarget *-*-sysv4*] \
      && ![istarget *-*-eabi*] \
      && ![istarget hppa*64*-*-hpux*] \
      && ![istarget *-*-linux*] \
+     && ![istarget *-*-gnu*] \
      && ![istarget *-*-irix5*] \
      && ![istarget *-*-irix6*] \
      && ![is_pecoff_format] \
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
index e5e19eb..7b3553b 100644
--- a/ld/testsuite/lib/ld-lib.exp
+++ b/ld/testsuite/lib/ld-lib.exp
@@ -407,6 +407,7 @@ proc is_elf_format {} {
 	 && ![istarget hppa*64*-*-hpux*]
 	 && ![istarget ia64-*-hpux*]
 	 && ![istarget *-*-linux*]
+	 && ![istarget *-*-gnu*]
 	 && ![istarget frv-*-uclinux*]
 	 && ![istarget bfin-*-uclinux]
 	 && ![istarget sh*-*-uclinux*]
-- 
tg: (fd92991..) hurd/testsuite (depends on: master)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-10-28 10:39 [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
@ 2010-10-28 13:40 ` Robert Millan
  2010-10-29  5:53   ` Thomas Schwinge
  2010-11-02  3:15 ` Alan Modra
  2014-02-16  8:02 ` [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
  2 siblings, 1 reply; 8+ messages in thread
From: Robert Millan @ 2010-10-28 13:40 UTC (permalink / raw)
  To: Thomas Schwinge; +Cc: binutils, debian-bsd

2010/10/28, Thomas Schwinge <thomas@schwinge.name>:
>I generally simply windened these to include
> *-*-gnu*, too.
>
> As the triplet *-*-gnu* not only matches GNU/Hurd systems, but also
> *-*-linux-gnu* and *-*-kfreebsd-gnu* we have to be a bit careful.

That's what $host_os is for (as opposed to $host).

In general, most cases where $host is used are gratuitous and just
looking for trouble.

-- 
Robert Millan

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-10-28 13:40 ` Robert Millan
@ 2010-10-29  5:53   ` Thomas Schwinge
  0 siblings, 0 replies; 8+ messages in thread
From: Thomas Schwinge @ 2010-10-29  5:53 UTC (permalink / raw)
  To: Robert Millan; +Cc: binutils, debian-bsd

[-- Attachment #1: Type: text/plain, Size: 630 bytes --]

Hello!

On Thu, Oct 28, 2010 at 03:40:47PM +0200, Robert Millan wrote:
> 2010/10/28, Thomas Schwinge <thomas@schwinge.name>:
> >I generally simply windened these to include
> > *-*-gnu*, too.
> >
> > As the triplet *-*-gnu* not only matches GNU/Hurd systems, but also
> > *-*-linux-gnu* and *-*-kfreebsd-gnu* we have to be a bit careful.
> 
> That's what $host_os is for (as opposed to $host).
> 
> In general, most cases where $host is used are gratuitous and just
> looking for trouble.

Ehm, yes, but my point was that you would want this improvement too, and
thus my patch still holds.


Regards,
 Thomas

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-10-28 10:39 [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
  2010-10-28 13:40 ` Robert Millan
@ 2010-11-02  3:15 ` Alan Modra
  2010-11-02  8:28   ` Thomas Schwinge
  2014-02-16  8:02 ` [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
  2 siblings, 1 reply; 8+ messages in thread
From: Alan Modra @ 2010-11-02  3:15 UTC (permalink / raw)
  To: Thomas Schwinge; +Cc: binutils, debian-bsd

On Thu, Oct 28, 2010 at 12:38:23PM +0200, Thomas Schwinge wrote:
> +proc setup_xfail_gnu_hurd {} {
> +    global target_triplet
> +    switch -regexp $target_triplet {
> +	^\[^-\]*-\[^-\]*-gnu.*$ {
> +	    setup_xfail "*-*-*"
> +	}
> +    }
> +}

What am I missing?  Why not just
  setup_xfail "*-*-gnu*"

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-11-02  3:15 ` Alan Modra
@ 2010-11-02  8:28   ` Thomas Schwinge
  2010-11-02 11:45     ` Alan Modra
  2010-11-04 13:20     ` Account on Debian GNU/KFreeBSD systems (was: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)) Thomas Schwinge
  0 siblings, 2 replies; 8+ messages in thread
From: Thomas Schwinge @ 2010-11-02  8:28 UTC (permalink / raw)
  To: binutils, debian-bsd, rmh

[-- Attachment #1: Type: text/plain, Size: 786 bytes --]

Hello!

On Tue, Nov 02, 2010 at 01:44:51PM +1030, Alan Modra wrote:
> On Thu, Oct 28, 2010 at 12:38:23PM +0200, Thomas Schwinge wrote:
> > +proc setup_xfail_gnu_hurd {} {
> > +    global target_triplet
> > +    switch -regexp $target_triplet {
> > +	^\[^-\]*-\[^-\]*-gnu.*$ {
> > +	    setup_xfail "*-*-*"
> > +	}
> > +    }
> > +}
> 
> What am I missing?  Why not just
>   setup_xfail "*-*-gnu*"

That'd mach *-*-linux-gnu*, *-*-kfreebsd-gnu*, etc., turning them into
XPASSes.  As Robert suggested, we could instead add support in the
testsuite framework for considering $target_os (as opposed to
$target_triplet).


Robert, can I get access to a Debian GNU/kFreeBSD machine in order to
test that my patch doesn't break anything for you?


Regards,
 Thomas

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-11-02  8:28   ` Thomas Schwinge
@ 2010-11-02 11:45     ` Alan Modra
  2010-11-04 13:20     ` Account on Debian GNU/KFreeBSD systems (was: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)) Thomas Schwinge
  1 sibling, 0 replies; 8+ messages in thread
From: Alan Modra @ 2010-11-02 11:45 UTC (permalink / raw)
  To: Thomas Schwinge; +Cc: binutils, debian-bsd, rmh

On Tue, Nov 02, 2010 at 09:28:03AM +0100, Thomas Schwinge wrote:
> Hello!
> 
> On Tue, Nov 02, 2010 at 01:44:51PM +1030, Alan Modra wrote:
> > On Thu, Oct 28, 2010 at 12:38:23PM +0200, Thomas Schwinge wrote:
> > > +proc setup_xfail_gnu_hurd {} {
> > > +    global target_triplet
> > > +    switch -regexp $target_triplet {
> > > +	^\[^-\]*-\[^-\]*-gnu.*$ {
> > > +	    setup_xfail "*-*-*"
> > > +	}
> > > +    }
> > > +}
> > 
> > What am I missing?  Why not just
> >   setup_xfail "*-*-gnu*"
> 
> That'd mach *-*-linux-gnu*, *-*-kfreebsd-gnu*, etc., turning them into

Yes, of course.  Patch OK.

-- 
Alan Modra
Australia Development Lab, IBM

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Account on Debian GNU/KFreeBSD systems (was: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?))
  2010-11-02  8:28   ` Thomas Schwinge
  2010-11-02 11:45     ` Alan Modra
@ 2010-11-04 13:20     ` Thomas Schwinge
  1 sibling, 0 replies; 8+ messages in thread
From: Thomas Schwinge @ 2010-11-04 13:20 UTC (permalink / raw)
  To: debian-bsd, rmh; +Cc: binutils

[-- Attachment #1: Type: text/plain, Size: 1707 bytes --]

Hello!

On Tue, Nov 02, 2010 at 09:28:03AM +0100, I wrote:
> Robert, can I get access to a Debian GNU/kFreeBSD machine in order to
> test that my patch doesn't break anything for you?

Yesterday, we already spent roughly one person-hour discussing this in
OFTC's #debian-kbsd channel -- no solution so far.  Apparently it's
difficult for Debian to allow non-Debian people onto their machines.

My situation simply is that I've come up with a certain patch (for
GNU/Hurd), and I offer to make sure it doesn't have negative consequences
on *-*-kfreebsd-gnu* systems -- systems I'm not primarily interested in,
and I'm doing this voluntarily in my free time.  I intend to continue
doing similar maintenance (also for glibc, GCC, GDB, etc.), so having
someone else test my patches would be inconvenient comparing to quickly
testing them myself.  This is also why the Debian one/two-months
temporary guest account that I've (perhaps...) been offered would be
inconvenient.

<http://gcc.gnu.org/wiki/CompileFarm> also don't have such accounts, but
that's another topic.

For GNU/Hurd, I'll quickly login to one of our public Hurd boxen, and
create an account for everyone who's interested in having one.

I really do wonder why there's no such pubically accessible porter box
available for kFreeBSD-based systems; am I the first one (who is not a
Debian Developer) to be interested in such an account?  (And I'm not
actively interested in installing and administering such systems myself.)

My other option is, of course, to simply commit my (approved) patch(es),
and then try to help repairing any fallout later on.  I'm planning on
doing this on the weekend for this thread's binutils patch.


Regards,
 Thomas

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)
  2010-10-28 10:39 [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
  2010-10-28 13:40 ` Robert Millan
  2010-11-02  3:15 ` Alan Modra
@ 2014-02-16  8:02 ` Thomas Schwinge
  2 siblings, 0 replies; 8+ messages in thread
From: Thomas Schwinge @ 2014-02-16  8:02 UTC (permalink / raw)
  To: binutils

[-- Attachment #1: Type: text/plain, Size: 3178 bytes --]

Hi!

On Thu, 28 Oct 2010 12:38:23 +0200, Thomas Schwinge <thomas@schwinge.name> wrote:
> ld/testsuite/
> 	* ld-elfweak/elfweak.exp: [...]
> 	(setup_xfail_gnu_hurd): New function.  Use it where appropriate.

I have just reverted this part of my old patch:

commit 60ef20e28534cf093d5bd799b3830c68381bb27f
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Thu Jan 9 16:56:22 2014 +0100

    ld: Remove Hurd-specific XFAILs related to weak symbols.
    
    This has been fixed properly, in glibc.
    
    	ld/testsuite/
    	* ld-elfweak/elfweak.exp (setup_xfail_gnu_hurd): Remove function
    	and all usage of it.

diff --git ld/testsuite/ld-elfweak/elfweak.exp ld/testsuite/ld-elfweak/elfweak.exp
index 3a27465..fcae651 100644
--- ld/testsuite/ld-elfweak/elfweak.exp
+++ ld/testsuite/ld-elfweak/elfweak.exp
@@ -71,17 +71,6 @@ set SOBJDUMP_FLAGS --syms
 set shared "--shared -Wl,--no-as-needed"
 
 
-# <http://www.gnu.org/software/hurd/open_issues/binutils.html#weak>
-proc setup_xfail_gnu_hurd {} {
-    global target_triplet
-    # Be cautious to not XFAIL for *-*-linux-gnu*, *-*-kfreebsd-gnu*, etc.
-    switch -regexp $target_triplet {
-	^\[^-\]*-\[^-\]*-gnu.*$ {
-	    setup_xfail "*-*-*"
-	}
-    }
-}
-
 #
 # objdump_symstuff
 #	Dump non-dynamic symbol stuff and make sure that it is sane.
@@ -468,9 +457,7 @@ build_lib "ELF DSO weak func first DSO" libfoo "foo.o libbar.so" dsow.dsym
 build_lib "ELF DSO weak func last DSO" libfoo "libbar.so foo.o" dsow.dsym
 build_exec "ELF weak func first" foo "main.o bar.o" "" strong "" strong.sym
 build_exec "ELF weak func last" foo "bar.o main.o" "" strong "" strong.sym
-setup_xfail_gnu_hurd
 build_exec "ELF weak func first DSO" foo "main.o libbar.so" "-Wl,-rpath,.,--no-as-needed" weak weak.dsym ""
-setup_xfail_gnu_hurd
 build_exec "ELF weak func last DSO" foo "libbar.so main.o" "-Wl,-rpath,.,--no-as-needed" weak weak.dsym ""
 
 build_lib "ELF DSO weak data first" libfoo "bar1a.o foo1a.o" dsodata.dsym
@@ -483,13 +470,9 @@ build_exec "ELF weak data first" foo "main1.o bar1a.o foo1a.o" "" strongdata ""
 build_exec "ELF weak data last" foo "foo1a.o main1.o bar1a.o" "" strongdata "" strongdata.sym
 build_exec "ELF weak data first common" foo "main1.o bar1a.o foo1b.o" "" strongdata "" strongcomm.sym
 build_exec "ELF weak data last common" foo "foo1b.o main1.o bar1a.o" "" strongdata "" strongcomm.sym
-setup_xfail_gnu_hurd
 build_exec "ELF weak data first DSO" foo "main1.o libbar1a.so libfoo1a.so" "-Wl,-rpath,.,--no-as-needed" weakdata weakdata.dsym ""
-setup_xfail_gnu_hurd
 build_exec "ELF weak data last DSO" foo "libfoo1a.so main1.o libbar1a.so" "-Wl,-rpath,.,--no-as-needed" weakdata weakdata.dsym ""
-setup_xfail_gnu_hurd
 build_exec "ELF weak data first DSO common" foo "main1.o libbar1a.so libfoo1b.so" "-Wl,-rpath,.,--no-as-needed" weakdata weakdata.dsym ""
-setup_xfail_gnu_hurd
 build_exec "ELF weak data last DSO common" foo "libfoo1b.so main1.o libbar1a.so" "-Wl,-rpath,.,--no-as-needed" weakdata weakdata.dsym ""
 
 if ![ld_compile "$CC $CFLAGS $picflag" $srcdir/$subdir/size_foo.c $tmpdir/size_foo.o] {


Grüße,
 Thomas

[-- Attachment #2: Type: application/pgp-signature, Size: 489 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-02-16  8:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-28 10:39 [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge
2010-10-28 13:40 ` Robert Millan
2010-10-29  5:53   ` Thomas Schwinge
2010-11-02  3:15 ` Alan Modra
2010-11-02  8:28   ` Thomas Schwinge
2010-11-02 11:45     ` Alan Modra
2010-11-04 13:20     ` Account on Debian GNU/KFreeBSD systems (was: [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?)) Thomas Schwinge
2014-02-16  8:02 ` [PATCH] Improve binutils testsuite coverage for GNU/Hurd (and kFreeBSD?) Thomas Schwinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).