From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21677 invoked by alias); 26 Aug 2009 14:38:32 -0000 Received: (qmail 21663 invoked by uid 22791); 26 Aug 2009 14:38:31 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from vtab.com (HELO oden.vtab.com) (62.20.90.195) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Aug 2009 14:38:26 +0000 Received: from oden.vtab.com (oden.vtab.com [127.0.0.1]) by oden.vtab.com (Postfix) with ESMTP id 077AF26EEE3 for ; Wed, 26 Aug 2009 16:38:24 +0200 (CEST) Received: from polhem (unknown [62.20.90.206]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by oden.vtab.com (Postfix) with ESMTP id B940B26EEDD for ; Wed, 26 Aug 2009 16:38:23 +0200 (CEST) From: "Jakob Engblom" To: Subject: GDB MI Reverse Commands added [3 of 3] Date: Wed, 26 Aug 2009 15:10:00 -0000 Message-ID: <00d001ca265a$ddd0c800$99725800$@com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_00D1_01CA266B.A1599800" X-IsSubscribed: yes 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: 2009-08/txt/msg00445.txt.bz2 This is a multi-part message in MIME format. ------=_NextPart_000_00D1_01CA266B.A1599800 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 593 Final part: the test suite for gdb-MI reverse debugging commands. Attached = as a file, to be put in [gdb]/src/gdb/testsuite/gdb.mi/ Best regards, /jakob _______________________________________________________ Jakob Engblom, PhD, Technical Marketing Manager Virtutech=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Direct: +46= 8 690 07 47=A0=A0=A0 Drottningholmsv=E4gen 22=A0=A0=A0=A0=A0 Mobile: +46 709 242 646=A0=A0 11243 Stockholm=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 Web:=A0=A0=A0 www.virtu= tech.com=A0 Sweden ________________________________________________________ =A0=20 ------=_NextPart_000_00D1_01CA266B.A1599800 Content-Type: application/octet-stream; name="mi2-reverse.exp" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="mi2-reverse.exp" Content-length: 6625 # Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009=0A= # Free Software Foundation, Inc.=0A= =0A= # This program is free software; you can redistribute it and/or modify=0A= # it under the terms of the GNU General Public License as published by=0A= # the Free Software Foundation; either version 3 of the License, or=0A= # (at your option) any later version.=0A= #=0A= # This program is distributed in the hope that it will be useful,=0A= # but WITHOUT ANY WARRANTY; without even the implied warranty of=0A= # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the=0A= # GNU General Public License for more details.=0A= #=0A= # You should have received a copy of the GNU General Public License=0A= # along with this program. If not, see .=0A= =0A= # Test Machine interface (MI) operations=0A= # Verify that, using the MI, we can run a simple program in both forward=0A= # and reverse directions with the following execution commands:=0A= # - exec-continue=0A= # - exec-finish=0A= # - exec-next=0A= # - exec-step=0A= # - exec-next-instruction=0A= # - exec-step-instruction=0A= =0A= # The goal is not to test gdb functionality, which is done by other tests,= =0A= # but to verify the correct output response to MI operations.=0A= #=0A= =0A= if ![target_info exists gdb,can_reverse] {=0A= return=0A= }=0A= =0A= load_lib mi-support.exp=0A= set MIFLAGS "-i=3Dmi2"=0A= =0A= gdb_exit=0A= if [mi_gdb_start] {=0A= continue=0A= }=0A= =0A= set testfile "basics"=0A= set srcfile ${testfile}.c=0A= set binfile ${objdir}/${subdir}/mi2-reverse=0A= if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable= {debug additional_flags=3D-DFAKEARGV}] !=3D "" } {=0A= untested mi2-reverse.exp=0A= return -1=0A= }=0A= =0A= mi_run_to_main=0A= =0A= if [target_info exists gdb,use_precord] {=0A= # Activate process record/replay=0A= if [mi_gdb_test "-interpreter-exec console record" \=0A= {\^done} "Turn on process record"] {=0A= warning "Fail to activate process record/replay, tests in this group will = not be performed.\n";=0A= return -1=0A= }=0A= }=0A= =0A= # Locate line numbers in basics.c.=0A= set line_callee4_head [gdb_get_line_number "callee4 ("]=0A= set line_callee4_body [expr $line_callee4_head + 2]=0A= set line_callee3_head [gdb_get_line_number "callee3 ("]=0A= set line_callee3_body [expr $line_callee3_head + 2]=0A= set line_callee3_close [expr $line_callee3_head + 3]=0A= set line_callee2_head [gdb_get_line_number "callee2 ("]=0A= set line_callee2_body [expr $line_callee2_head + 2]=0A= set line_callee2_close [expr $line_callee2_head + 3]=0A= set line_callee1_head [gdb_get_line_number "callee1 ("]=0A= set line_callee1_body [expr $line_callee1_head + 2]=0A= set line_callee1_close [expr $line_callee1_head + 3]=0A= set line_callme_head [gdb_get_line_number "callme"]=0A= set line_callme_body [expr $line_callme_head + 2]=0A= set line_main_head [gdb_get_line_number "main ("]=0A= set line_main_body [expr $line_main_head + 2]=0A= set line_main_hello [gdb_get_line_number "Hello, World!"]=0A= set line_main_callme_1 [gdb_get_line_number "callme (1"]=0A= =0A= # Forward execute to the callme() function, so that we can=0A= # execute backward from there.=0A= mi_continue_to callme=0A= mi_delete_breakpoints=0A= =0A= proc test_controlled_execution_reverse {} {=0A= global mi_gdb_prompt=0A= global srcfile=0A= global hex=0A= =0A= global line_callee4_head line_callee4_body=0A= global line_callee3_head line_callee3_body line_callee3_close=0A= global line_callee2_head line_callee2_body line_callee2_close=0A= global line_callee1_head line_callee1_body line_callee1_close=0A= global line_main_head line_main_body=0A= global line_main_hello line_main_callme_1=0A= =0A= # Test exec-reverse-finish=0A= =0A= mi_execute_to "exec-finish --reverse" \=0A= "end-stepping-range" "main" "" \=0A= "basics.c" $line_main_callme_1 "" \=0A= "reverse finish from callme"=0A= =0A= # Test exec-reverse-next=0A= # FIXME: Why does it take 2 next commands to get back to the=0A= # previous line?=0A= =0A= mi_execute_to "exec-next --reverse 2" \=0A= "end-stepping-range" "main" "" \=0A= "basics.c" $line_main_hello "" \=0A= "reverse next to get over the call to do_nothing"=0A= =0A= # Test exec-reverse-step=0A= =0A= mi_execute_to "exec-step --reverse" \=0A= "end-stepping-range" "callee1" \=0A= "\{name=3D\"intarg\",value=3D\"2\"\},\{name=3D\"strarg\",value=3D\"$hex \\= \\\"A string argument\.\\\\\"\"\},\{name=3D\"fltarg\",value=3D\"3.5\"\}" \= =0A= "basics.c" $line_callee1_close "" \=0A= "reverse step to callee1"=0A= =0A= mi_execute_to "exec-step --reverse" \=0A= "end-stepping-range" "callee2" \=0A= "\{name=3D\"intarg\",value=3D\"2\"\},\{name=3D\"strarg\",value=3D\"$hex \\= \\\"A string argument\.\\\\\"\"\}" \=0A= "basics.c" $line_callee2_close "" \=0A= "reverse step to callee2"=0A= =0A= mi_execute_to "exec-step --reverse" \=0A= "end-stepping-range" "callee3" \=0A= "\{name=3D\"strarg\",value=3D\"$hex \\\\\"A string argument\.\\\\\"\"\}" \= =0A= "basics.c" $line_callee3_close "" \=0A= "reverse step to callee3"=0A= =0A= mi_execute_to "exec-step --reverse" \=0A= "end-stepping-range" "callee4" "" \=0A= "basics.c" "\[0-9\]+" "" \=0A= "reverse step to callee4"=0A= =0A= # Test exec-reverse-[step|next]-instruction=0A= =0A= mi_execute_to "exec-step-instruction --reverse" \=0A= "end-stepping-range" "callee4" "" \=0A= "basics.c" "\[0-9\]+" "" \=0A= "reverse-step-instruction at callee4"=0A= =0A= mi_execute_to "exec-next-instruction --reverse" \=0A= "end-stepping-range" "callee4" "" \=0A= "basics.c" "\[0-9\]+" "" \=0A= "reverse-next-instruction at callee4"=0A= =0A= # Test exec-reverse-continue=0A= =0A= mi_create_breakpoint "-t basics.c:$line_callee3_head" \=0A= 3 del callee3 ".*basics.c" $line_callee3_head $hex \=0A= "insert temp breakpoint at basics.c:$line_callee3_head"=0A= =0A= mi_execute_to "exec-continue --reverse" \=0A= "breakpoint-hit" "callee3" \=0A= "\{name=3D\"strarg\",value=3D\"$hex \\\\\"A string argument\.\\\\\"\"\}" \= =0A= "basics.c" "\[0-9\]+" \=0A= { "" "disp=3D\"del\""} \=0A= "reverse-continue at callee3"=0A= =0A= mi_execute_to "exec-continue --reverse" \=0A= "" "main" "" \=0A= "basics.c" $line_main_body "" \=0A= "reverse-continue at main"=0A= }=0A= =0A= test_controlled_execution_reverse=0A= =0A= mi_gdb_exit=0A= return 0=0A= ------=_NextPart_000_00D1_01CA266B.A1599800--