[RFA] Testcase for backtrace/1435

Daniel Jacobowitz drow@mvista.com
Mon Nov 17 23:38:00 GMT 2003


On Mon, Nov 17, 2003 at 10:40:29PM +0100, Mark Kettenis wrote:
> This adds a testcase for the patch I just submitted.  This is
> i386-specific, but I don't know how to trick GCC into putting two
> functions right after oneother without using assembler.
> 
> OK to check this in?

Definitely.  Global maintainers don't need approval to add tests to
gdb.arch - and it looks correct, too.

> 
> Mark
> 
> 
> Index: ChangeLog
> from  Mark Kettenis  <kettenis@gnu.org>
> 
> 	* gdb.arch/i386-unwind.exp: New file.
> 	* gdb.arch/i386-unwind.c: New file.
> 
> Index: gdb.arch/i386-unwind.exp
> ===================================================================
> RCS file: gdb.arch/i386-unwind.exp
> diff -N gdb.arch/i386-unwind.exp
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ gdb.arch/i386-unwind.exp 17 Nov 2003 21:38:21 -0000
> @@ -0,0 +1,63 @@
> +# 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
> +# 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.
> +
> +if $tracelevel {
> +    strace $tracelevel
> +}
> +
> +# Test i386 unwinder.
> +
> +set prms_id 0
> +set bug_id 0
> +
> +if ![istarget "i?86-*-*"] then {
> +    verbose "Skipping i386 unwinder tests."
> +    return
> +}
> +
> +set testfile "i386-unwind"
> +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
> +gdb_reinitialize_dir $srcdir/$subdir
> +gdb_load ${binfile}
> +
> +#
> +# Run to `main' where we begin our tests.
> +#
> +
> +if ![runto_main] then {
> +    gdb_suppress_tests
> +}
> +
> +# Testcase for backtrace/1435.
> +
> +gdb_test "continue" "Program received signal SIGTRAP.*" \
> +         "continue past gdb1435"
> +
> +gdb_test "backtrace 10" \
> +	"#1\[ \t]*$hex in gdb1435.*\r\n#2\[ \t\]*$hex in main.*" \
> +	"backtrace past gdb1435"
> Index: gdb.arch/i386-unwind.c
> ===================================================================
> RCS file: gdb.arch/i386-unwind.c
> diff -N gdb.arch/i386-unwind.c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ gdb.arch/i386-unwind.c 17 Nov 2003 21:38:21 -0000
> @@ -0,0 +1,42 @@
> +/* Unwinder test program.
> +
> +   Copyright 2003 Free Software Foundation, Inc.
> +
> +   This file is part of GDB.
> +
> +   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.  */
> +
> +void
> +trap (void)
> +{
> +  asm ("int $0x03");
> +}
> +
> +/* Make sure that main directly follows a function without an
> +   epilogue.  */
> +
> +asm(".text\n"
> +    "    .align 8\n"
> +    "    .globl gdb1435\n"
> +    "gdb1435:\n"
> +    "    pushl %ebp\n"
> +    "    mov   %esp, %ebp\n"
> +    "    call  trap\n"
> +    "    .globl main\n"
> +    "main:\n"
> +    "    pushl %ebp\n"
> +    "    mov   %esp, %ebp\n"
> +    "    call  gdb1435\n");
> 

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer



More information about the Gdb-patches mailing list