From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28083 invoked by alias); 11 Feb 2004 01:07:55 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 28071 invoked from network); 11 Feb 2004 01:07:51 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 11 Feb 2004 01:07:51 -0000 Received: from int-mx2.corp.redhat.com (nat-pool-rdu-dmz.redhat.com [172.16.52.200] (may be forged)) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id i1B17nb25876 for ; Tue, 10 Feb 2004 20:07:49 -0500 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx2.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i1B17mM04731 for ; Tue, 10 Feb 2004 20:07:48 -0500 Received: from 192.168.1.129 (vpn50-29.rdu.redhat.com [172.16.50.29]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id i1B17gX11806; Tue, 10 Feb 2004 17:07:45 -0800 From: Fred Fish Reply-To: fnf@redhat.com To: gdb-patches@sources.redhat.com Subject: [RFA] Fix several problems with the gdb.arch/gdb1291.exp test Date: Wed, 11 Feb 2004 01:07:00 -0000 User-Agent: KMail/1.5.4 Cc: fnf@redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200402101807.37718.fnf@ninemoons.com> X-SW-Source: 2004-02/txt/msg00272.txt.bz2 There are several problems with the current gdb1291 test: (1) Compilation with -O2 is required to expose the originally reported bug. (2) A gcc bug (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14022) interferes with properly testing for the reported bug. The original test was apparently modified to use an ASM to avoid having part of it optimized away when using -O2. (3) The test case has DOS style line separators for no apparent good reason. (4) The test case doesn't verify that reducing the local variable size to less than or equal to 256 bytes makes the problem go away. Not strictly necessary, but useful to have confirmed to ensure that we are getting accurate test results. This patch fixes the above issues and also causes the failure to be logged as: KFAIL: gdb.arch/gdb1291.exp: backtrace with local variable larger than 256 bytes (PRMS: gdb/1291) instead of just a regular FAIL. -Fred 2004-02-10 Fred Fish * gdb.arch/gdb1291.c: Convert from DOS line separators to UNIX separators. Allow compilation as two separate pieces from one file. Eliminate problematic ASM. * gdb.arch/gdb1291.exp: Compile test case as two separate objects. Expand test to check case that should not fail. Enable compilation with -O2 to expose bug. Test for correct result, known incorrect result, other failures and timeouts. Index: gdb.arch/gdb1291.c =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.arch/gdb1291.c,v retrieving revision 1.2 diff -c -p -r1.2 gdb1291.c *** gdb.arch/gdb1291.c 4 Feb 2004 14:41:20 -0000 1.2 --- gdb.arch/gdb1291.c 11 Feb 2004 00:50:23 -0000 *************** *** 1,45 **** ! /* Copyright 2003, 2004 Free Software Foundation, Inc. ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! ! Please email any bugs, comments, and/or additions to this file to: ! bug-gdb@gnu.org ! ! This file is part of the gdb testsuite. */ ! ! void sub (void); ! ! main() ! { ! sub(); ! } ! ! asm(".text\n" ! " .align 5\n" ! "sub:\n" ! "_sub:\n" ! " mov.l r14,@-r15\n" ! " mov.w .STACK2,r3\n" ! " sub r3,r15\n" ! " mov r15,r14\n" ! " mov.w .STACK2,r7\n" ! " add r7,r14\n" ! " mov r14,r15\n" ! " mov.l @r15+,r14\n" ! " rts\n" ! " nop\n" ! " .align 1\n" ! ".STACK2:\n" ! " .short 260\n"); --- 1,46 ---- ! /* Copyright 2003, 2004 Free Software Foundation, Inc. ! ! This program is free software; you can redistribute it and/or modify ! it under the terms of the GNU General Public License as published by ! the Free Software Foundation; either version 2 of the License, or ! (at your option) any later version. ! ! This program is distributed in the hope that it will be useful, ! but WITHOUT ANY WARRANTY; without even the implied warranty of ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! GNU General Public License for more details. ! ! You should have received a copy of the GNU General Public License ! along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! ! Please email any bugs, comments, and/or additions to this file to: ! bug-gdb@gnu.org ! ! This file is part of the gdb testsuite. */ ! ! ! #ifdef PART1 ! ! main () ! { ! extern void sub1 (void); ! extern void sub2 (void); ! ! sub1 (); ! sub2 (); ! } ! ! #else /* PART2 */ ! ! sub1 () ! { ! int buf[64]; ! } ! ! sub2 () ! { ! int buf[65]; ! } ! ! #endif Index: gdb.arch/gdb1291.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.arch/gdb1291.exp,v retrieving revision 1.1 diff -c -p -r1.1 gdb1291.exp *** gdb.arch/gdb1291.exp 3 Nov 2003 17:42:52 -0000 1.1 --- gdb.arch/gdb1291.exp 11 Feb 2004 00:50:23 -0000 *************** *** 1,4 **** ! # Copyright 2003 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by --- 1,4 ---- ! # Copyright 2003, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by *************** if ![istarget "sh-*-*"] then { *** 39,47 **** set testfile "gdb1291" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} ! if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } gdb_exit gdb_start --- 39,55 ---- set testfile "gdb1291" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} ! ! # Compile the testcase was two separate pieces to avoid optimizing away sub() ! if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${testfile}1.o" object {debug "additional_flags=-DPART1 -O2"}] != "" } then { gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." } + if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${testfile}2.o" object {debug "additional_flags=-DPART2 -O2"}] != "" } then { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." + } + if { [gdb_compile "${testfile}1.o ${testfile}2.o" "${binfile}" executable {debug}] != "" } then { + gdb_suppress_entire_file "Testcase link failed, so all tests in this file will automatically fail." + } gdb_exit gdb_start *************** if ![runto_main] then { *** 56,62 **** gdb_suppress_tests } ! gdb_test "b sub" "Breakpoint 2*" "set breakpoint" ! gdb_test "c" "Breakpoint 2*" "get to sub" ! gdb_test "bt" "#0\[ \t\]*$hex \\(\\) at sh-bt.*\r\n#1\[ \t\]*$hex in main.*" \ ! "backtrace in gdb1291" --- 64,103 ---- gdb_suppress_tests } ! gdb_test "b sub1" "Breakpoint 2.*" "set breakpoint" ! gdb_test "c" "Breakpoint 2.* sub1 .*" "get to sub1" ! ! send_gdb "bt\n" ! gdb_expect { ! -re "#0.* sub1 .*\r\n#1\[ \t\]*$hex in main \\(\\).*\r\n$gdb_prompt $" { ! pass "backtrace with local variable less than or equal to 256 bytes" ! } ! -re "#0.* sub1 .*\r\n\#1\[ \t\]*$hex in __setup_argv_for_main .*\r\n\#2\[ \t\]*$hex in start_l .*\r\n$gdb_prompt $" { ! kfail "gdb/1291" "backtrace with local variable less than or equal to 256 bytes" ! } ! -re ".*$gdb_prompt $" { ! fail "backtrace with local variable less than or equal to 256 bytes" ! } ! timeout { ! fail "backtrace with local variable less than or equal to 256 bytes (timeout)" ! } ! } ! ! gdb_test "b sub2" "Breakpoint 3.*" "set breakpoint" ! gdb_test "c" "Breakpoint 3.* sub2 .*" "get to sub2" ! ! send_gdb "bt\n" ! gdb_expect { ! -re "#0.* sub2 .*\r\n#1\[ \t\]*$hex in main \\(\\).*\r\n$gdb_prompt $" { ! pass "backtrace with local variable larger than 256 bytes" ! } ! -re "#0.* sub2 .*\r\n\#1\[ \t\]*$hex in __setup_argv_for_main .*\r\n\#2\[ \t\]*$hex in start_l .*\r\n$gdb_prompt $" { ! kfail "gdb/1291" "backtrace with local variable larger than 256 bytes" ! } ! -re ".*$gdb_prompt $" { ! fail "backtrace with local variable larger than 256 bytes" ! } ! timeout { ! fail "backtrace with local variable larger than 256 bytes (timeout)" ! } ! }