From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12315 invoked by alias); 27 Nov 2006 14:51:38 -0000 Received: (qmail 12278 invoked by uid 22791); 27 Nov 2006 14:51:34 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 27 Nov 2006 14:51:24 +0000 Received: (qmail 767 invoked from network); 27 Nov 2006 14:51:22 -0000 Received: from unknown (HELO ?192.168.189.103?) (nathan@127.0.0.2) by mail.codesourcery.com with ESMTPA; 27 Nov 2006 14:51:22 -0000 Message-ID: <456AFBB6.2070405@codesourcery.com> Date: Mon, 27 Nov 2006 14:51:00 -0000 From: Nathan Sidwell User-Agent: Thunderbird 1.5.0.8 (X11/20061115) MIME-Version: 1.0 To: gdb-patches@sourceware.org Subject: ad more ending-run cases Content-Type: multipart/mixed; boundary="------------080907020005070107040203" Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-11/txt/msg00298.txt.bz2 This is a multi-part message in MIME format. --------------080907020005070107040203 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 595 This patch does several things to ending-run.exp 1) flattens the separate expect scripts dealing with whether an extra step over a '}' was necessary. Several regexps were duplicated, and whether the step is necessary is an artifact of the compiler's debug data. 2) adds a case for ARM RVDS toolchains 3) adds a case for m68k (and probably other embedded systems), where various forms of a 'start' function are used. ok? nathan -- Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk --------------080907020005070107040203 Content-Type: text/x-patch; name="ending-run.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ending-run.patch" Content-length: 6490 2006-11-27 Nathan Sidwell Paul Brook Daniel Jacobowitz * gdb.base/ending-run.exp: Flatten expect script stepping out of main to remove duplication. Add start function of the form '_*start[1-9]*'. Add RVDS start function. Index: testsuite/gdb.base/ending-run.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.base/ending-run.exp,v retrieving revision 1.24 diff -c -3 -p -r1.24 ending-run.exp *** testsuite/gdb.base/ending-run.exp 10 Aug 2006 05:27:20 -0000 1.24 --- testsuite/gdb.base/ending-run.exp 27 Nov 2006 14:19:39 -0000 *************** set old_timeout $timeout *** 153,242 **** set timeout 50 set program_exited 0 send_gdb "next\n" gdb_expect { -re "33.*$gdb_prompt $" { # sometimes we stop at the closing brace, if so, do another next ! send_gdb "next\n" ! gdb_expect { ! -re ".*Unable to find return pc for this frame.*$gdb_prompt $" { ! fail "step out of main (Old bug came back!)" ! gdb_test "n" ".*" "" ! } ! -re ".*in.*start.*$gdb_prompt $" { ! pass "step out of main" ! } ! -re ".*in.*bsp_trap.*$gdb_prompt $" { ! pass "step out of main" ! } ! -re ".*in.*init.*$gdb_prompt $" { ! # This is what happens on sparc64-elf ultra. ! pass "step out of main" ! } ! -re ".*in.*dll_crt0_1.*$gdb_prompt $" { ! # This is what happens on Cygwin. ! pass "step out of main" ! } ! -re ".*Program exited normally.*$gdb_prompt $" { ! # This is what happens on Linux i86 (and I would expect others) ! set program_exited 1 ! pass "step out of main" ! } ! -re ".*in .nope ().*$gdb_prompt $" { ! # This is what happens on Solaris currently -sts 1999-08-25 ! pass "step out of main (on Solaris)" ! } ! -re ".*in _int_reset ().*$gdb_prompt $" { ! # This is what happens on Sanyo XStormy16 ! pass "step out of main" ! } ! -re ".*init ().*$gdb_prompt $" { ! # This is what happens on many Mips targets ! pass "step out of main" ! } ! -re ".*in ..change.mode ().*$gdb_prompt $" { ! # This is what happens on ARM in thumb mode -fn 2000-02-01 ! pass "step out of main (on ARM thumb)" ! } ! -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { ! pass "step out of main" ! } ! -re ".*in __wrap__?main ().*$gdb_prompt $" { ! pass "step out of main (status wrapper)" ! } ! -re "__setup_argv_for_main (.*).*$gdb_prompt $" { ! # On sh, another wrapper function (start_l) exists, so ! # another `next' is necessary. ! gdb_test "next" ".*in start_l ().*" "step out of main (on sh)" ! } ! -re ".*$gdb_prompt $" { fail "step out of main (at end 2)" } ! timeout { ! fail "step out of main (hang or timeout on step at end 2)" ! } } } -re ".*Unable to find return pc for this frame.*$gdb_prompt $" { ! fail "Old bug came back!" ! gdb_test "n" ".*" "" } -re ".*in.*start.*$gdb_prompt $" { ! pass "step out of main" } ! -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { ! pass "step out of main (2)" } -re ".*Program exited normally.*$gdb_prompt $" { # This is what happens on Linux i86 (and I would expect others) set program_exited 1 pass "step out of main" } -re ".*in.*currently asm.*$gdb_prompt $" { ! pass "step out of main (into assembler)" } -re ".*Program received signal SIGTRAP.*$gdb_prompt $" { ! pass "Cygmon stopped in ending trap." } ! -re ".*$gdb_prompt $" { fail "step out of main (at end 1)" } ! timeout { fail "step out of main (hang or timeout on step at end 1)" } } # When we're talking to a program running on a real stand-alone board, --- 153,235 ---- set timeout 50 set program_exited 0 send_gdb "next\n" + set nexted 0 gdb_expect { -re "33.*$gdb_prompt $" { # sometimes we stop at the closing brace, if so, do another next ! if { $nexted } { ! fail "step out of main" ! } else { ! set nexted 1 ! send_gdb "next\n" ! exp_continue } } -re ".*Unable to find return pc for this frame.*$gdb_prompt $" { ! fail "step out of main" ! gdb_test "n" ".*" "" } -re ".*in.*start.*$gdb_prompt $" { ! pass "step out of main" } ! -re ".*in.*bsp_trap.*$gdb_prompt $" { ! pass "step out of main" ! } ! -re ".*in.*init.*$gdb_prompt $" { ! # This is what happens on sparc64-elf ultra. ! pass "step out of main" ! } ! -re ".*in.*dll_crt0_1.*$gdb_prompt $" { ! # This is what happens on Cygwin. ! pass "step out of main" } -re ".*Program exited normally.*$gdb_prompt $" { # This is what happens on Linux i86 (and I would expect others) set program_exited 1 pass "step out of main" } + -re ".*in .nope ().*$gdb_prompt $" { + # This is what happens on Solaris currently -sts 1999-08-25 + pass "step out of main" + } + -re ".*in _int_reset ().*$gdb_prompt $" { + # This is what happens on Sanyo XStormy16 + pass "step out of main" + } + -re ".*init ().*$gdb_prompt $" { + # This is what happens on many Mips targets + pass "step out of main" + } + -re ".*in ..change.mode ().*$gdb_prompt $" { + # This is what happens on ARM in thumb mode -fn 2000-02-01 + pass "step out of main" + } + -re ".*__rt_entry ().*$gdb_prompt $" { + # This is what happens on the ARM RVDS runtime + pass "step out of main" + } + -re ".*in.*\\\$START\\\$.*from.*dld.sl.*$gdb_prompt $" { + pass "step out of main" + } + -re ".*in __wrap__?main ().*$gdb_prompt $" { + pass "step out of main" + } + -re "__setup_argv_for_main (.*).*$gdb_prompt $" { + # On sh, another wrapper function (start_l) exists, so + # another `next' is necessary. + gdb_test "next" ".*in start_l ().*" "step out of main" + } -re ".*in.*currently asm.*$gdb_prompt $" { ! pass "step out of main" ! } ! -re "_*start\[0-9\]* \\(\[^)\]*\\).*$gdb_prompt $" { ! pass "step out of main" } -re ".*Program received signal SIGTRAP.*$gdb_prompt $" { ! pass "step out of main" } ! -re ".*$gdb_prompt $" { fail "step out of main" } ! timeout { fail "step out of main" } } # When we're talking to a program running on a real stand-alone board, --------------080907020005070107040203--