This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [RFA:] ld/testsuite/ld-lib.exp: support run_dump_test directive "warning".
On Mon, Feb 07, 2005 at 03:29:51AM +0100, Hans-Peter Nilsson wrote:
> * lib/gas-defs.exp: Support new directive "warning".
This change introduced spurious failures in the d10v gas testsuite,
which was using #error to detect gas warnings.
gas/testsuite/
* gas/d10v/instruction_packing-005.d: Adjust.
* gas/d10v/instruction_packing-008.d: Ignore disassembled stabs.
* gas/d10v/instruction_packing-009.d: Likewise.
* gas/d10v/instruction_packing-010.d: Likewise.
* gas/d10v/warning-001.d: Use #warning instead of #error.
* gas/d10v/warning-002.d: Likewise.
* gas/d10v/warning-003.d: Likewise.
* gas/d10v/warning-004.d: Likewise.
* gas/d10v/warning-005.d: Likewise.
* gas/d10v/warning-006.d: Likewise.
* gas/d10v/warning-007.d: Likewise.
* gas/d10v/warning-008.d: Likewise.
* gas/d10v/warning-009.d: Likewise.
* gas/d10v/warning-010.d: Likewise.
* gas/d10v/warning-011.d: Likewise.
* gas/d10v/warning-012.d: Likewise.
* gas/d10v/warning-013.d: Likewise.
* gas/d10v/warning-015.d: Likewise.
* gas/d10v/warning-016.d: Likewise.
* gas/d10v/warning-017.d: Likewise.
* gas/d10v/warning-018.d: Likewise.
* gas/d10v/warning-019.d: Likewise.
* lib/gas-defs.exp (run_dump_test): Don't require a dump program if
#warning given. Rearrange to allow $program to remain unset.
Fail the test if warning not found when expected. Conversely fail
the test if assembler errors or warnings given when not expected.
Index: gas/testsuite/gas/d10v/instruction_packing-005.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/instruction_packing-005.d,v
retrieving revision 1.1
diff -u -p -r1.1 instruction_packing-005.d
--- gas/testsuite/gas/d10v/instruction_packing-005.d 30 May 2002 16:12:21 -0000 1.1
+++ gas/testsuite/gas/d10v/instruction_packing-005.d 21 Feb 2005 03:05:33 -0000
@@ -25,5 +25,5 @@ Disassembly of section .text:
Disassembly of section .data:
00000000 <in_data>:
- 0: Address 0x0 is out of bounds.
+ 0: Address 0x0+ is out of bounds.
Index: gas/testsuite/gas/d10v/instruction_packing-008.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/instruction_packing-008.d,v
retrieving revision 1.2
diff -u -p -r1.2 instruction_packing-008.d
--- gas/testsuite/gas/d10v/instruction_packing-008.d 2 Aug 2003 11:34:30 -0000 1.2
+++ gas/testsuite/gas/d10v/instruction_packing-008.d 21 Feb 2005 03:05:33 -0000
@@ -12,3 +12,4 @@ Disassembly of section .text:
8: 60 22 c0 67 ldi.s r2, 0x2 -> ldi.s r3, 0x3
c: e0 40 40 00 ldi.l r4, 0x4000
10: 60 55 cc 1a ldi.s r5, 0x5 -> jmp r13
+#pass
Index: gas/testsuite/gas/d10v/instruction_packing-009.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/instruction_packing-009.d,v
retrieving revision 1.2
diff -u -p -r1.2 instruction_packing-009.d
--- gas/testsuite/gas/d10v/instruction_packing-009.d 2 Aug 2003 11:34:30 -0000 1.2
+++ gas/testsuite/gas/d10v/instruction_packing-009.d 21 Feb 2005 03:05:33 -0000
@@ -14,3 +14,4 @@ Disassembly of section .text:
10: e0 40 40 00 ldi.l r4, 0x4000
14: 20 55 de 00 ldi.s r5, 0x5 || nop
18: 26 0d 5e 00 jmp r13 || nop
+#pass
Index: gas/testsuite/gas/d10v/instruction_packing-010.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/instruction_packing-010.d,v
retrieving revision 1.2
diff -u -p -r1.2 instruction_packing-010.d
--- gas/testsuite/gas/d10v/instruction_packing-010.d 2 Aug 2003 11:34:30 -0000 1.2
+++ gas/testsuite/gas/d10v/instruction_packing-010.d 21 Feb 2005 03:05:33 -0000
@@ -12,3 +12,4 @@ Disassembly of section .text:
8: 60 22 c0 67 ldi.s r2, 0x2 -> ldi.s r3, 0x3
c: e0 40 40 00 ldi.l r4, 0x4000
10: 60 55 cc 1a ldi.s r5, 0x5 -> jmp r13
+#pass
Index: gas/testsuite/gas/d10v/warning-001.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-001.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-001.d
--- gas/testsuite/gas/d10v/warning-001.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-001.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-001.s
-#error : cr6 is a reserved control register
+#warning : cr6 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-002.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-002.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-002.d
--- gas/testsuite/gas/d10v/warning-002.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-002.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-002.s
-#error : cr6 is a reserved control register
+#warning : cr6 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-003.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-003.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-003.d
--- gas/testsuite/gas/d10v/warning-003.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-003.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-003.s
-#error : cr12 is a reserved control register
+#warning : cr12 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-004.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-004.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-004.d
--- gas/testsuite/gas/d10v/warning-004.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-004.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-004.s
-#error : cr12 is a reserved control register
+#warning : cr12 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-005.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-005.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-005.d
--- gas/testsuite/gas/d10v/warning-005.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-005.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-005.s
-#error : Warning: cr13 is a reserved control register
+#warning : Warning: cr13 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-006.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-006.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-006.d
--- gas/testsuite/gas/d10v/warning-006.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-006.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-006.s
-#error : cr13 is a reserved control register
+#warning : cr13 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-007.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-007.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-007.d
--- gas/testsuite/gas/d10v/warning-007.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-007.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-007.s
-#error : Warning: cr13 is a reserved control register
+#warning : Warning: cr13 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-008.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-008.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-008.d
--- gas/testsuite/gas/d10v/warning-008.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-008.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-008.s
-#error : cr15 is a reserved control register
+#warning : cr15 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-009.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-009.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-009.d
--- gas/testsuite/gas/d10v/warning-009.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-009.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-009.s
-#error : cr15 is a reserved control register
+#warning : cr15 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-010.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-010.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-010.d
--- gas/testsuite/gas/d10v/warning-010.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-010.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-010.s
-#error : cr4 is a reserved control register
+#warning : cr4 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-011.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-011.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-011.d
--- gas/testsuite/gas/d10v/warning-011.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-011.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-011.s
-#error : cr4 is a reserved control register
+#warning : cr4 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-012.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-012.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-012.d
--- gas/testsuite/gas/d10v/warning-012.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-012.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-012.s
-#error : cr5 is a reserved control register
+#warning : cr5 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-013.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-013.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-013.d
--- gas/testsuite/gas/d10v/warning-013.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-013.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-013.s
-#error : cr5 is a reserved control register
+#warning : cr5 is a reserved control register
Index: gas/testsuite/gas/d10v/warning-015.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-015.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-015.d
--- gas/testsuite/gas/d10v/warning-015.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-015.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: instruction_packing-002.s
-#error : Warning: resource conflict \(C flag\)
+#warning : Warning: resource conflict \(C flag\)
Index: gas/testsuite/gas/d10v/warning-016.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-016.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-016.d
--- gas/testsuite/gas/d10v/warning-016.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-016.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-016.s
-#error : Warning: resource conflict \(F flag\)
+#warning : Warning: resource conflict \(F flag\)
Index: gas/testsuite/gas/d10v/warning-017.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-017.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-017.d
--- gas/testsuite/gas/d10v/warning-017.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-017.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-017.s
-#error : Warning: resource conflict \(C flag\)
+#warning : Warning: resource conflict \(C flag\)
Index: gas/testsuite/gas/d10v/warning-018.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-018.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-018.d
--- gas/testsuite/gas/d10v/warning-018.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-018.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-018.s
-#error : Warning: resource conflict \(C flag\)
+#warning : Warning: resource conflict \(C flag\)
Index: gas/testsuite/gas/d10v/warning-019.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/d10v/warning-019.d,v
retrieving revision 1.1
diff -u -p -r1.1 warning-019.d
--- gas/testsuite/gas/d10v/warning-019.d 30 May 2002 16:12:22 -0000 1.1
+++ gas/testsuite/gas/d10v/warning-019.d 21 Feb 2005 03:05:33 -0000
@@ -1,2 +1,2 @@
#source: warning-019.s
-#error : Warning: resource conflict \(R0\)
+#warning : Warning: resource conflict \(R0\)
Index: gas/testsuite/lib/gas-defs.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/lib/gas-defs.exp,v
retrieving revision 1.19
diff -u -p -r1.19 gas-defs.exp
--- gas/testsuite/lib/gas-defs.exp 7 Feb 2005 02:29:11 -0000 1.19
+++ gas/testsuite/lib/gas-defs.exp 21 Feb 2005 03:05:33 -0000
@@ -371,59 +371,48 @@ proc run_dump_test { name {extra_options
append opts($opt_name) $opt_val
}
- if {$opts(PROG) != ""} {
- switch -- $opts(PROG) {
- objdump
- { set program objdump }
- nm
- { set program nm }
- objcopy
- { set program objcopy }
- readelf
- { set program readelf }
- default
- { perror "unrecognized program option $opts(PROG) in $file.d"
- unresolved $subdir/$name
- return }
- }
- } elseif { $opts(error) != "" } {
- # It's meaningless to require an output-testing method when we
- # expect an error. For simplicity, we fake an arbitrary method.
- set program "nm"
- } else {
- # Guess which program to run, by seeing which option was specified.
- set program ""
- foreach p {objdump objcopy nm readelf} {
- if {$opts($p) != ""} {
- if {$program != ""} {
- perror "ambiguous dump program in $file.d"
+ if { (($opts(warning) != "") && ($opts(error) != "")) \
+ || (($opts(warning) != "") && ($opts(stderr) != "")) } {
+ perror "$testname: bad mix of stderr, error and warning test-directives"
+ return
+ }
+
+ set program ""
+ # It's meaningless to require an output-testing method when we
+ # expect an error.
+ if { $opts(error) == "" } {
+ if {$opts(PROG) != ""} {
+ switch -- $opts(PROG) {
+ objdump { set program objdump }
+ nm { set program nm }
+ objcopy { set program objcopy }
+ readelf { set program readelf }
+ default {
+ perror "unrecognized program option $opts(PROG) in $file.d"
unresolved $subdir/$name
- return
- } else {o
- set program $p
+ return }
+ }
+ } else {
+ # Guess which program to run, by seeing which option was specified.
+ foreach p {objdump objcopy nm readelf} {
+ if {$opts($p) != ""} {
+ if {$program != ""} {
+ perror "ambiguous dump program in $file.d"
+ unresolved $subdir/$name
+ return
+ } else {
+ set program $p
+ }
}
}
}
- if {$program == ""} {
+ if { $program == "" && $opts(warning) == "" } {
perror "dump program unspecified in $file.d"
unresolved $subdir/$name
return
}
}
- set expmsg $opts(error)
- if { $opts(warning) != "" } {
- set expmsg $opts(warning)
- }
- if { (($opts(warning) != "") && ($opts(error) != "")) \
- || (($opts(warning) != "") && ($opts(stderr) != "")) } {
- perror "$testname: bad mix of stderr, error and warning test-directives"
- return
- }
-
- set progopts1 $opts($program)
- eval set progopts \$[string toupper $program]FLAGS
- eval set binary \$[string toupper $program]
if { $opts(name) == "" } {
set testname "$subdir/$name"
} else {
@@ -441,7 +430,11 @@ proc run_dump_test { name {extra_options
set cmdret [catch "exec $cmd" comp_output]
set comp_output [prune_warnings $comp_output]
- if { $cmdret != 0 || $comp_output != "" || $opts(stderr) != "" } then {
+ set expmsg $opts(error)
+ if { $opts(warning) != "" } {
+ set expmsg $opts(warning)
+ }
+ if { $cmdret != 0 || $comp_output != "" || $expmsg != "" } then {
# If the executed program writes to stderr and stderr is not
# redirected, exec *always* returns failure, regardless of the
# program exit code. Thankfully, we can retrieve the true
@@ -460,18 +453,17 @@ proc run_dump_test { name {extra_options
send_log "$comp_output\n"
verbose "$comp_output" 3
- if { $expmsg != "" \
- && [regexp $expmsg $comp_output] \
+ if { [regexp $expmsg $comp_output] \
&& (($cmdret == 0) == ($opts(warning) != "")) } {
- verbose -log "$exitstat with: <$comp_output>, expected: <$expmsg>"
-
- # Only "pass" and return here if we expected (and got)
- # an error.
- if { $opts(error) != "" } {
+ # We have the expected output from gas.
+ # Return if there's nothing more to do.
+ if { $opts(error) != "" || $program == "" } {
pass $testname
return
}
- } {
+ } else {
+ verbose -log "$exitstat with: <$comp_output>, expected: <$expmsg>"
+
fail $testname
return
}
@@ -503,6 +495,13 @@ proc run_dump_test { name {extra_options
}
}
+ if { $program == "" } {
+ return
+ }
+ set progopts1 $opts($program)
+ eval set progopts \$[string toupper $program]FLAGS
+ eval set binary \$[string toupper $program]
+
if { [which $binary] == 0 } {
untested $testname
return
--
Alan Modra
IBM OzLabs - Linux Technology Centre