This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [RFA] New test for gdb's "finish" command
- To: Michael Snyder <msnyder at cygnus dot com>
- Subject: Re: [RFA] New test for gdb's "finish" command
- From: Fernando Nasser <fnasser at cygnus dot com>
- Date: Fri, 08 Dec 2000 14:25:08 -0500
- CC: gdb-patches at sources dot redhat dot com
- Organization: Red Hat , Inc. - Toronto
- References: <200012080206.SAA03492@cleaver.cygnus.com>
Approved.
Thanks.
Fernando
Michael Snyder wrote:
>
> This is a general test for the "finish" command, which tests the
> value returned by the function being "finished". I've included
> the basic intrinsic types, and it should be straightforward to add
> more if anyone wants to (I may do so myself). This test uses the
> same source file as the return test that I submitted earlier today.
>
> If you're wondering why I'm doing this -- I'm doing a new base port,
> and these are things you always have to test early on in the process.
> I got tired of testing them by hand for every new architecture. ;-)
>
> As my base port progresses, I may extend these tests.
>
> 2000-12-07 Michael Snyder <msnyder@cleaver.cygnus.com>
>
> * gdb.base/finish.exp: New test for gdb's "finish" command.
>
> # Copyright (C) 2000 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@prep.ai.mit.edu
>
> # This file was written by Michael Snyder (msnyder@redhat.com)
>
> if $tracelevel then {
> strace $tracelevel
> }
>
> set prms_id 0
> set bug_id 0
>
> # re-use the program from the "return2" test.
> set testfile "return2"
> 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."
> }
>
> proc finish_1 { type } {
> global gdb_prompt
>
> gdb_test "break ${type}_func" "Breakpoint \[0123456789\].*" \
> "set break on ${type}_func"
> gdb_test "continue" "Breakpoint.* ${type}_func.*" \
> "continue to ${type}_func"
> send_gdb "finish\n"
> gdb_expect {
> -re ".*Value returned is .* = 1 '.001'\r\n$gdb_prompt $" {
> if { $type == "char" } {
> pass "finish from char_func"
> } else {
> fail "finish from char_func"
> }
> }
> -re ".*Value returned is .* = 1\r\n$gdb_prompt $" {
> pass "finish from ${type}_func"
> }
> -re ".*$gdb_prompt $" {
> fail "finish from ${type}_func"
> }
> timeout {
> fail "finish from ${type}_func (timeout)"
> }
> }
> }
>
> proc finish_void { } {
> global gdb_prompt
>
> gdb_test "break void_func" "Breakpoint \[0123456789\].*" \
> "set break on void_func"
> gdb_test "continue" "Breakpoint.* void_func.*" \
> "continue to void_func"
> send_gdb "finish\n"
> gdb_expect {
> -re ".*void_checkpoint.*$gdb_prompt $" {
> pass "finish from void_func"
> }
> -re ".*$gdb_prompt $" {
> fail "finish from void_func"
> }
> timeout {
> fail "finish from void_func (timeout)"
> }
> }
> }
>
> proc finish_tests { } {
> global gdb_prompt
>
> if { ! [ runto main ] } then {
> gdb_suppress_entire_file "Run to main failed, so all tests in this file will automatically fail."
> }
>
> finish_void
> finish_1 "char"
> finish_1 "short"
> finish_1 "int"
> finish_1 "long"
> finish_1 "long_long"
> finish_1 "float"
> finish_1 "double"
> }
>
> # Start with a fresh gdb.
>
> gdb_exit
> gdb_start
> gdb_reinitialize_dir $srcdir/$subdir
> gdb_load ${binfile}
>
> set timeout 30
> finish_tests
--
Fernando Nasser
Red Hat - Toronto E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9