Add noxfail option to run_dump_test

Message ID Zw-zRVjL59iQUsj_@squeak.grove.modra.org
State New
Headers
Series Add noxfail option to run_dump_test |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply

Commit Message

Alan Modra Oct. 16, 2024, 12:36 p.m. UTC
  The noxfail option is useful in situations like pr23658-1e which
fails on all microblaze ELF targets except microblaze-linux.  This was
possible to handle by writing a small proc and use that as an xfail
predicate, or painstakingly listing all microblaze ELF targets, but
this is simpler.  The patch also fixes some other FAILs and XPASSes of
the pr23658 tests.

binutils/
	* testsuite/lib/binutils-common.exp (run_dump_test): Support
	noxfail.
ld/
	* testsuite/ld-elf/pr23658-1a.d: Don't xfail m68hc12.
	* testsuite/ld-elf/pr23658-1e.d: Likewise.  xfail xstormy16
	and correct microblaze xfails.
  

Comments

Michael Eager Oct. 16, 2024, 3:54 p.m. UTC | #1
Approved.

On 10/16/24 5:36 AM, Alan Modra wrote:
> The noxfail option is useful in situations like pr23658-1e which
> fails on all microblaze ELF targets except microblaze-linux.  This was
> possible to handle by writing a small proc and use that as an xfail
> predicate, or painstakingly listing all microblaze ELF targets, but
> this is simpler.  The patch also fixes some other FAILs and XPASSes of
> the pr23658 tests.
> 
> binutils/
> 	* testsuite/lib/binutils-common.exp (run_dump_test): Support
> 	noxfail.
> ld/
> 	* testsuite/ld-elf/pr23658-1a.d: Don't xfail m68hc12.
> 	* testsuite/ld-elf/pr23658-1e.d: Likewise.  xfail xstormy16
> 	and correct microblaze xfails.
> 
> diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
> index 403103da366..03e8dbb855b 100644
> --- a/binutils/testsuite/lib/binutils-common.exp
> +++ b/binutils/testsuite/lib/binutils-common.exp
> @@ -897,6 +897,9 @@ proc prune_dump_output { output } {
>   #	Run this test and it is is expected to fail on a specified list
>   #	of targets.
>   #
> +#   noxfail: GLOB|PROC ...
> +#	Of targets that match the xfail list, this list won't fail.
> +#
>   #   error: REGEX
>   #	An error with message matching REGEX must be emitted for the test
>   #	to pass.  The DUMPPROG, addr2line, nm, objdump, readelf and size
> @@ -1001,6 +1004,7 @@ proc run_dump_test { name {extra_options {}} } {
>       set opts(warning) {}
>       set opts(warning_output) {}
>       set opts(xfail) {}
> +    set opts(noxfail) {}
>   
>       set in_extra 0
>       foreach i [concat $opt_array {{} {}} $extra_options] {
> @@ -1031,6 +1035,7 @@ proc run_dump_test { name {extra_options {}} } {
>   
>   	switch -- $opt_name {
>   	    xfail {}
> +	    noxfail {}
>   	    target {}
>   	    alltargets {}
>   	    notarget {}
> @@ -1296,6 +1301,12 @@ proc run_dump_test { name {extra_options {}} } {
>   	    break
>   	}
>       }
> +    foreach targ $opts(noxfail) {
> +	if [match_target $targ] {
> +	    clear_xfail "*-*-*"
> +	    break
> +	}
> +    }
>   
>       foreach as_flags $as_final_flags {
>   	# Assemble each file.
> diff --git a/ld/testsuite/ld-elf/pr23658-1a.d b/ld/testsuite/ld-elf/pr23658-1a.d
> index 21847f9350c..c2caf496ac6 100644
> --- a/ld/testsuite/ld-elf/pr23658-1a.d
> +++ b/ld/testsuite/ld-elf/pr23658-1a.d
> @@ -8,7 +8,6 @@
>   # Since generic linker targets don't place SHT_NOTE sections as orphan,
>   # SHT_NOTE sections aren't grouped nor sorted.
>   #xfail: [uses_genelf]
> -#xfail: m68hc12-*
>   # The following targets place .note.gnu.build-id in unusual places.
>   #xfail: d10v-* pru-*
>   
> diff --git a/ld/testsuite/ld-elf/pr23658-1e.d b/ld/testsuite/ld-elf/pr23658-1e.d
> index 992c7484ff7..dbb05e6293e 100644
> --- a/ld/testsuite/ld-elf/pr23658-1e.d
> +++ b/ld/testsuite/ld-elf/pr23658-1e.d
> @@ -10,11 +10,12 @@
>   # placed before text sections and there should no other note sections
>   # between .note.gnu.build-id and text sections.
>   #xfail: [uses_genelf]
> -#xfail: m68hc12-*
>   # The following targets don't support --build-id.
>   #xfail: cr16-* crx-* visium-*
>   # The following targets place .note.gnu.build-id in unusual places.
> -#xfail: *-*-hpux* arc*-* avr-* microblaze-*-* nds32*-* spu-*-*
> +#xfail: *-*-hpux*
> +#xfail: arc*-* avr-* m68hc1*-* microblaze*-* nds32*-* spu-*-* xstormy16-*-*
> +#noxfail: microblaze*-linux*
>   
>   #...
>    +[0-9]+ +\.note.gnu.build-id +
>
  

Patch

diff --git a/binutils/testsuite/lib/binutils-common.exp b/binutils/testsuite/lib/binutils-common.exp
index 403103da366..03e8dbb855b 100644
--- a/binutils/testsuite/lib/binutils-common.exp
+++ b/binutils/testsuite/lib/binutils-common.exp
@@ -897,6 +897,9 @@  proc prune_dump_output { output } {
 #	Run this test and it is is expected to fail on a specified list
 #	of targets.
 #
+#   noxfail: GLOB|PROC ...
+#	Of targets that match the xfail list, this list won't fail.
+#
 #   error: REGEX
 #	An error with message matching REGEX must be emitted for the test
 #	to pass.  The DUMPPROG, addr2line, nm, objdump, readelf and size
@@ -1001,6 +1004,7 @@  proc run_dump_test { name {extra_options {}} } {
     set opts(warning) {}
     set opts(warning_output) {}
     set opts(xfail) {}
+    set opts(noxfail) {}
 
     set in_extra 0
     foreach i [concat $opt_array {{} {}} $extra_options] {
@@ -1031,6 +1035,7 @@  proc run_dump_test { name {extra_options {}} } {
 
 	switch -- $opt_name {
 	    xfail {}
+	    noxfail {}
 	    target {}
 	    alltargets {}
 	    notarget {}
@@ -1296,6 +1301,12 @@  proc run_dump_test { name {extra_options {}} } {
 	    break
 	}
     }
+    foreach targ $opts(noxfail) {
+	if [match_target $targ] {
+	    clear_xfail "*-*-*"
+	    break
+	}
+    }
 
     foreach as_flags $as_final_flags {
 	# Assemble each file.
diff --git a/ld/testsuite/ld-elf/pr23658-1a.d b/ld/testsuite/ld-elf/pr23658-1a.d
index 21847f9350c..c2caf496ac6 100644
--- a/ld/testsuite/ld-elf/pr23658-1a.d
+++ b/ld/testsuite/ld-elf/pr23658-1a.d
@@ -8,7 +8,6 @@ 
 # Since generic linker targets don't place SHT_NOTE sections as orphan,
 # SHT_NOTE sections aren't grouped nor sorted.
 #xfail: [uses_genelf]
-#xfail: m68hc12-*
 # The following targets place .note.gnu.build-id in unusual places.
 #xfail: d10v-* pru-*
 
diff --git a/ld/testsuite/ld-elf/pr23658-1e.d b/ld/testsuite/ld-elf/pr23658-1e.d
index 992c7484ff7..dbb05e6293e 100644
--- a/ld/testsuite/ld-elf/pr23658-1e.d
+++ b/ld/testsuite/ld-elf/pr23658-1e.d
@@ -10,11 +10,12 @@ 
 # placed before text sections and there should no other note sections
 # between .note.gnu.build-id and text sections.
 #xfail: [uses_genelf]
-#xfail: m68hc12-*
 # The following targets don't support --build-id.
 #xfail: cr16-* crx-* visium-*
 # The following targets place .note.gnu.build-id in unusual places.
-#xfail: *-*-hpux* arc*-* avr-* microblaze-*-* nds32*-* spu-*-*
+#xfail: *-*-hpux*
+#xfail: arc*-* avr-* m68hc1*-* microblaze*-* nds32*-* spu-*-* xstormy16-*-*
+#noxfail: microblaze*-linux*
 
 #...
  +[0-9]+ +\.note.gnu.build-id +