This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]