This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] Testcase for backtrace/1435
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