Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Fred Fish <fnf@ninemoons.com>
To: gdb-patches@sources.redhat.com
Cc: fnf@redhat.com
Subject: [RFA] Fix several problems with the gdb.arch/gdb1291.exp test
Date: Wed, 11 Feb 2004 01:07:00 -0000	[thread overview]
Message-ID: <200402101807.37718.fnf@ninemoons.com> (raw)

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  <fnf@redhat.com>

	* 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)"
!     }
! }



             reply	other threads:[~2004-02-11  1:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-11  1:07 Fred Fish [this message]
2004-02-11  1:17 ` Daniel Jacobowitz
2004-02-11  1:28   ` Fred Fish
2004-02-11  2:11     ` Fred Fish
2004-02-12  1:11     ` Fred Fish

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200402101807.37718.fnf@ninemoons.com \
    --to=fnf@ninemoons.com \
    --cc=fnf@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox