From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2210 invoked by alias); 21 Feb 2005 09:59:54 -0000 Mailing-List: contact binutils-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sources.redhat.com Received: (qmail 2115 invoked from network); 21 Feb 2005 09:59:38 -0000 Received: from unknown (HELO gizmo09bw.bigpond.com) (144.140.70.19) by sourceware.org with SMTP; 21 Feb 2005 09:59:38 -0000 Received: (qmail 2693 invoked from network); 21 Feb 2005 09:59:34 -0000 Received: from unknown (HELO bwmam12.bigpond.com) (144.135.24.103) by gizmo09bw.bigpond.com with SMTP; 21 Feb 2005 09:59:34 -0000 Received: from cpe-144-136-221-26.sa.bigpond.net.au ([144.136.221.26]) by bwmam12.bigpond.com(MAM REL_3_4_2a 189/9973648) with SMTP id 9973648; Mon, 21 Feb 2005 19:59:34 +1000 Received: by bubble.modra.org (Postfix, from userid 500) id 7B9041909D2; Mon, 21 Feb 2005 20:29:34 +1030 Date: Mon, 21 Feb 2005 15:52:00 -0000 From: Alan Modra To: binutils@sources.redhat.com Subject: Re: [RFA:] ld/testsuite/ld-lib.exp: support run_dump_test directive "warning". Message-ID: <20050221095934.GI3780@bubble.modra.org> Mail-Followup-To: binutils@sources.redhat.com References: <200502070229.j172TpFa018391@ignucius.se.axis.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200502070229.j172TpFa018391@ignucius.se.axis.com> User-Agent: Mutt/1.4i X-SW-Source: 2005-02/txt/msg00461.txt.bz2 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 : - 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