+2020-04-30  Nick Clifton  <nickc@redhat.com>
+
+       * testsuite/lib/binutils-common.exp (check_pie_support): New
+       proc.
+
 2020-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * dwarf.c (display_debug_ranges): Ignore duplicate entries in
 
     return $shared_available_saved
 }
 
+# Returns true if -pie is supported on the target
+
+proc check_pie_support { } {
+    global pie_available_saved
+    global ld
+
+    if {![info exists pie_available_saved]} {
+       set ld_output [remote_exec host $ld "-pie"]
+       if { [ string first "not supported" $ld_output ] >= 0 } {
+           set pie_available_saved 0
+       } else {
+           set pie_available_saved 1
+       }
+    }
+    return $pie_available_saved
+}
+
 # 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.
 #
 
+2020-04-30  Nick Clifton  <nickc@redhat.com>
+
+       * testsuite/ld-elf/compress1c.d: XFAIL if thet target linker does
+       not support the -shared command line option.
+       * /ld-elf/compressed1c.d: Likewise.
+       * /ld-elf/compressed1e.d: Likewise.
+       * /ld-elf/dynamic1.d: Likewise.
+       * /ld-elf/dynsym1.d: Likewise.
+       * /ld-elf/ehdr_start-shared.d: Likewise.
+       * /ld-elf/exclude3b.d: Likewise.
+       * /ld-elf/global1.d: Likewise.
+       * /ld-elf/hash.d: Likewise.
+       * /ld-elf/local1.d: Likewise.
+       * /ld-elf/mbind1b.d: Likewise.
+       * /ld-elf/now-1.d: Likewise.
+       * /ld-elf/now-2.d: Likewise.
+       * /ld-elf/now-3.d: Likewise.
+       * /ld-elf/now-4.d: Likewise.
+       * /ld-elf/pr12975.d: Likewise.
+       * /ld-elf/pr13177.d: Likewise.
+       * /ld-elf/pr13195.d: Likewise.
+       * /ld-elf/pr16322.d: Likewise.
+       * /ld-elf/pr16498a.d: Likewise.
+       * /ld-elf/pr16498b.d: Likewise.
+       * /ld-elf/pr17615.d: Likewise.
+       * /ld-elf/pr19162.d: Likewise.
+       * /ld-elf/pr19698.d: Likewise.
+       * /ld-elf/pr20513c.d: Likewise.
+       * /ld-elf/pr20513d.d: Likewise.
+       * /ld-elf/pr21389a.d: Likewise.
+       * /ld-elf/pr21389b.d: Likewise.
+       * /ld-elf/pr21389c.d: Likewise.
+       * /ld-elf/pr21562a.d: Likewise.
+       * /ld-elf/pr21562b.d: Likewise.
+       * /ld-elf/pr21562c.d: Likewise.
+       * /ld-elf/pr21562d.d: Likewise.
+       * /ld-elf/pr21562e.d: Likewise.
+       * /ld-elf/pr21562f.d: Likewise.
+       * /ld-elf/pr21562g.d: Likewise.
+       * /ld-elf/pr21562h.d: Likewise.
+       * /ld-elf/pr21562i.d: Likewise.
+       * /ld-elf/pr21562j.d: Likewise.
+       * /ld-elf/pr21562k.d: Likewise.
+       * /ld-elf/pr21562l.d: Likewise.
+       * /ld-elf/pr21562m.d: Likewise.
+       * /ld-elf/pr21562n.d: Likewise.
+       * /ld-elf/pr21903a.d: Likewise.
+       * /ld-elf/pr21903b.d: Likewise.
+       * /ld-elf/pr22269b.d: Likewise.
+       * /ld-elf/pr22393-1a.d: Likewise.
+       * /ld-elf/pr22393-1b.d: Likewise.
+       * /ld-elf/pr23658-1c.d: Likewise.
+       * /ld-elf/pr25708.d: Likewise.
+       * /ld-elf/rpath-1.d: Likewise.
+       * /ld-elf/rpath-2.d: Likewise.
+       * /ld-elf/runpath-1.d: Likewise.
+       * /ld-elf/runpath-2.d: Likewise.
+       * /ld-elf/sizeofb.d: Likewise.
+       * /ld-elf/startofb.d: Likewise.
+       * /ld-elf/strtab.d: Likewise.
+       * /ld-elf/textaddr2.d: Likewise.
+       * /ld-elf/textaddr5.d: Likewise.
+       * /ld-elf/textaddr6.d: Likewise.
+       * /ld-elf/unknown2.d: Likewise.
+       * /ld-undefined/entry-3.d: Likewise.
+       * /ld-undefined/entry-4.d: Likewise.
+       * /ld-elf/mbind1c.d: XFAIL if the target linker does not support
+       the -pie option.
+       * /ld-elf/pie.d: Likewise.
+       * /ld-elf/pr19539.d: Likewise.
+       * /ld-elf/pr21903d.d: Likewise.
+       * /ld-elf/pr22269a.d: Likewise.
+       * /ld-elf/pr22393-1c.d: Likewise.
+       * /ld-elf/pr22393-1d.d: Likewise.
+       * /ld-elf/pr22423.d: Likewise.
+       * /ld-elf/loadaddr1.d: Expect to fail on the rx-linux target.
+       * /ld-elf/loadaddr2.d: Likewise.
+       * /ld-elf/pr22393-1e.d: Likewise.
+       * /ld-elf/pr22393-1f.d: Likewise.
+       * /ld-elf/textaddr1.d: Likewise.
+       * /ld-elf/textaddr4.d: Likewise.
+
 2020-04-30  Yoshinori Sato <ysato@users.sourceforge.jp>
 
        * emulparams/elf32rx_linux.sh: New rx-linux emulation.
 
 #ld: -shared
 #readelf: -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared --compress-debug-sections=none
 #readelf: -t
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared --compress-debug-sections=zlib-gnu
 #readelf: -SW
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared -T dynamic1.ld
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  Section to Segment mapping:
 
 #ld: -shared
 #readelf: --dyn-syms
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  +[0-9]+: +[0-9a-f]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[1-9] _start
 
 #ld: -e _start -shared
 #nm: -n
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: cris*-*-* frv-*-* h8300-*-*
+#xfail: cris*-*-* frv-*-* ![check_shared_lib_support] 
 
 #...
 [0-9a-f]*000 [Adrt] __ehdr_start
 
 #ld: --shared
 #readelf: -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared -z global
 #readelf: -d
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  0x0*6ffffffb \(FLAGS_1\) *Flags: GLOBAL
 
 #readelf: -d -s -D
 #ld: -shared --hash-style=gnu
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 #xfail: mips*-*-*
 # MIPS uses a different style of GNU hash due to psABI restrictions
 # on dynsym table ordering.
 
 #ld: -T loadaddr1.t -T loadaddr.t -z max-page-size=0x200000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #...
   LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
 
 #ld: -T loadaddr2.t -T loadaddr.t -z max-page-size=0x200000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #...
   LOAD +0x000000 0xf*80000000 0xf*80000000 0x100050 0x100050 RWE 0x200000
 
 #ld: -shared --version-script local1.map
 #readelf: -s --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
     .*: [0-9a-f]* +[0-9a-f]+ +OBJECT +LOCAL +DEFAULT +[0-9] +foo
 
 #ld: -shared -z common-page-size=0x1000 -z max-page-size=0x200000
 #readelf: -S -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] \.mbind\.text[   ]+PROGBITS[     ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AXD  0   0 4096
 
 #ld: -pie -z common-page-size=0x1000 -z max-page-size=0x200000
 #readelf: -S -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 #...
   \[[ 0-9]+\] \.mbind\.text[   ]+PROGBITS[     ]+[0-9a-f]+ [0-9a-f]+ [0-9a-f]+ 00 AXD  0   0 4096
 
 #readelf: -d -W
 #ld: -shared -z now --enable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #readelf: -d -W
 #ld: -shared -z now --enable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  0x[0-9a-f]+ +\(FLAGS\) +BIND_NOW
 
 #readelf: -d -W
 #ld: -shared -z now --disable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #readelf: -d -W
 #ld: -shared -z now --disable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  0x[0-9a-f]+ +\(BIND_NOW\) +
 
 #readelf: -d -W
 #ld: -pie
 #target: *-*-linux* *-*-gnu* *-*-solaris* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 #...
  +0x[0-9a-f]+ +\(FLAGS_1\) +Flags: +PIE
 
 #ld: --gc-sections -shared -version-script pr12975.t
 #readelf: -s --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #failif
 
 #ld: --gc-sections -shared
 #readelf: -s -D --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #failif
 
 #ld: --gc-sections -shared -version-script pr13195.t
 #readelf: -s --wide -D
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z relro -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   GNU_RELRO .*
 
 #ld: -shared -T pr16498a.t
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   TLS .*
 
 #ld: -shared -T pr16498b.t
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   TLS .*
 
 #ld: --gc-sections -shared
 #readelf: -S --wide --dyn-syms
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z max-page-size=0x200000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-* hppa*-*-*
+#xfail: hppa*-*-* ![check_shared_lib_support] 
 # hppa fails due to PR 12376.
 
 #...
 
 #ld: -pie -T pr19539.t
 #readelf : --dyn-syms --wide
 #target: *-*-linux* *-*-gnu* *-*-solaris* arm*-*-uclinuxfdpiceabi
-#xfail: cris*-*-* h8300-*-*
+#xfail: cris*-*-* ![check_pie_support] 
 
 Symbol table '\.dynsym' contains [0-9]+ entr(y|ies):
 #pass
 
 #ld: -shared $srcdir/$subdir/pr19698.t
 #readelf : --dyn-syms --wide
 #target: *-*-linux* *-*-gnu* *-*-solaris* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 Symbol table '\.dynsym' contains [0-9]+ entries:
 #...
 
 #ld: -shared
 #readelf: -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared
 #readelf: -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared --version-script pr21389.map -soname=pr21389.so
 #objdump: -p
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
 Version definitions:
 
 #ld: -shared --version-script pr21389.map -soname=pr21389.so
 #readelf: -d
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  0x[0-9a-f]* \(SONAME\) +Library soname: \[pr21389.so\]
 
 #ld: -shared -soname=pr21389.so
 #readelf: -d
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  0x[0-9a-f]* \(SONAME\) +Library soname: \[pr21389.so\]
 
 #ld: -shared -z defs --gc-sections
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562a.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562a.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.*
 
 #ld: -shared -z defs
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.*
 
 #ld: -shared -z defs -T pr21562a.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.*
 
 #ld: -shared -z defs -T pr21562a.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.*
 
 #ld: -shared -z defs --gc-sections -T pr21562b.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562b.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] ![check_shared_lib_support] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562c.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562c.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562d.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared -z defs --gc-sections -T pr21562d.t
 #readelf: -s -S --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: [is_generic] h8300-*-* hppa64-*-* mep-*-* mn10200-*-*
+#xfail: [is_generic] hppa64-*-* mep-*-* mn10200-*-* ![check_shared_lib_support] 
 # generic linker targets don't support --gc-sections, nor do a bunch of others
 
 #...
 
 #ld: -shared --no-define-common
 #readelf: --dyn-syms
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
 .*: 0+0 +0 +OBJECT +GLOBAL +DEFAULT +UND foo
 
 #ld: -shared
 #readelf: --dyn-syms
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
 .*: [0-9a-f]+ +4 +OBJECT +GLOBAL +DEFAULT +[0-9]+ foo
 
 #source: pr21903.s
 #ld: --no-define-common -pie
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support]
 #error: --no-define-common may not be used without -shared
 
 #ld: -pie --no-dynamic-linker
 #readelf: -r -x .data.rel.ro
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 There are no relocations in this file.
 
 
 #readelf: -r -x .data.rel.ro
 #warning: -z dynamic-undefined-weak ignored
 #target: *-*-linux* *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 There are no relocations in this file.
 
 
 #ld: -shared -z separate-code -z relro
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -shared -z relro -z separate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -pie -z separate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 #failif
 #...
 
 #ld: -pie -z separate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 #failif
 #...
 
 #ld: -z separate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #failif
 #...
 
 #ld: -z separate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* *-*-nacl* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #failif
 #...
 
 #readelf: -l -W
 #ld: -pie --dynamic-linker=/usr/lib/ld.so.1
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_pie_support] 
 
 #...
  +PHDR +0x[0-9a-f]+ +0x[0-9a-f]+ +0x[0-9a-f]+ +0x[0-9a-f]+ +0x[0-9a-f]+ +R +0x[48]?
 
 #ld: --build-id -shared
 #readelf: -l --wide
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  +[0-9]+ +\.note\.4 \.note\.1 +
 
 #ld: -shared -version-script pr13195.t
 #nm: -D
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-* hppa64-*-*
+#xfail: hppa64-*-* ![check_shared_lib_support] 
 # h8300 doesn't support -shared, and hppa64 creates .foo
 
 #..
 
 #readelf: -d -W
 #ld: -shared -rpath=. --disable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #readelf: -d -W
 #ld: -shared -rpath=. --disable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
  +0x[0-9a-f]+ +\(RPATH\) +Library rpath: +\[.\]
 
 #readelf: -d -W
 #ld: -shared -rpath . --enable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #readelf: -d -W
 #ld: -shared -rpath . --enable-new-dtags
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support]
 
 #...
  +0x[0-9a-f]+ +\(RUNPATH\) +Library runpath: +\[.\]
 
 #ld: -shared
 #readelf: -sW
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support]
 
 Symbol table '\.dynsym' contains [0-9]+ entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
 
 #ld: -shared
 #readelf: -sW
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support]
 
 Symbol table '\.dynsym' contains [0-9]+ entries:
  +Num: +Value +Size Type +Bind +Vis +Ndx Name
 
 #ld: -shared
 #readelf: -W -x .strtab
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #failif
 #...
 
 #ld: -Ttext-segment 0x7000000 -z max-page-size=0x200000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #...
   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
 
 #ld: -shared -Ttext-segment 0x7000000 -z max-page-size=0x200000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support]
 
 #...
   LOAD +0x0+ 0x0*7000000 0x0*7000000 0x0*[0-9a-f]+ 0x0*[0-9a-f]+ R[ W]E 0x200000
 
 #ld: -z max-page-size=0x10000 -Ttext-segment 0x10000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: h8300-*-* rx-*-linux*
 
 #...
   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
 
 #source: maxpage1.s
 #ld: -shared -z max-page-size=0x200000 -Ttext-segment 0x10000
 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support]
 #warning: .*address of `text-segment' isn't multiple of maximum page size
 
 #ld: -shared -z max-page-size=0x10000 -Ttext-segment 0x10000 -z noseparate-code
 #readelf: -l --wide
 #target: *-*-linux-gnu *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   LOAD +0x0+ 0x0*10000 0x0*10000 0x0*[0-9a-f]+ 0x0*[0-9a-f]+ R[ W]E 0x10000
 
 #ld: -shared
 #readelf: -S
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
   \[[ 0-9]+\] \.note.foo[ \t]+NOTE[ \t]+.*
 
 #ld: -shared --entry foo tmpdir/libentry.a
 #nm: -n
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
 [0-9a-f]+ T +foo
 
 #ld: -shared --entry foo -u foo tmpdir/libentry.a
 #nm: -n
 #target: *-*-linux* *-*-gnu* arm*-*-uclinuxfdpiceabi
-#xfail: h8300-*-*
+#xfail: ![check_shared_lib_support] 
 
 #...
 [0-9a-f]+ T +foo