From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27130 invoked by alias); 23 Oct 2008 23:55:36 -0000 Received: (qmail 27121 invoked by uid 22791); 23 Oct 2008 23:55:35 -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; Thu, 23 Oct 2008 23:54:37 +0000 Received: (qmail 17568 invoked from network); 23 Oct 2008 23:54:31 -0000 Received: from unknown (HELO orlando.local) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 23 Oct 2008 23:54:31 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: [reverse/record] adjust_pc_after_break in reverse execution mode? Date: Thu, 23 Oct 2008 23:55:00 -0000 User-Agent: KMail/1.9.9 Cc: Michael Snyder , teawater References: <200810180210.16346.pedro@codesourcery.com> <49010833.4070400@vmware.com> <200810240045.52818.pedro@codesourcery.com> In-Reply-To: <200810240045.52818.pedro@codesourcery.com> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_36QAJHYl8pZBlZO" Message-Id: <200810240054.31546.pedro@codesourcery.com> 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: 2008-10/txt/msg00594.txt.bz2 --Boundary-00=_36QAJHYl8pZBlZO Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 526 > I've done so a bit this morning, and came to a similar > conclusion, although I noticed Hui's change to set stop_pc in > TARGET_WAITKIND_NO_HISTORY, also also required. I was wanting > to find time to play a little bit more, but since you're on to it... BTW, I noticed that, while reviewing Hui's latest patch (which was missing setting the waitkind to TARGET_WAITKIND_STOPPED, hence could never work :-) ). While doing so, I dejagnufied the nop testcase into the attached. Maybe you'll find it useful. -- Pedro Alves --Boundary-00=_36QAJHYl8pZBlZO Content-Type: text/x-diff; charset="utf-8"; name="record_wait_breakpoint_test.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="record_wait_breakpoint_test.diff" Content-length: 4479 2008-10-24 Pedro Alves * gdb.base/decr-pc-rev.c, gdb.base/decr-pc-rev.exp: New test. --- gdb/testsuite/gdb.base/decr-pc-rev.c | 26 +++++++++ gdb/testsuite/gdb.base/decr-pc-rev.exp | 86 +++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) Index: src/gdb/testsuite/gdb.base/decr-pc-rev.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.base/decr-pc-rev.c 2008-10-23 15:21:02.000000000 +0100 @@ -0,0 +1,26 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2008 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 3 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, see . */ + +int +main () +{ + asm ("nop"); /* first insn */ + asm ("nop"); /* second insn */ + asm ("nop"); /* third insn */ + asm ("nop"); /* fourth insn */ + return 0; +} Index: src/gdb/testsuite/gdb.base/decr-pc-rev.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.base/decr-pc-rev.exp 2008-10-23 15:21:02.000000000 +0100 @@ -0,0 +1,86 @@ +# Copyright 2008 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 3 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, see . + +if $tracelevel then { + strace $tracelevel +} + +# Test PC adjustment behaviour on decr_pc_after_break archs in reverse +# and replay modes, in the presence of breakpoints at consecutive +# instruction addresses. + +set testfile "decr-pc-rev" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings}] != "" } { + untested consecutive.exp + return -1 +} + +if [get_compiler_info ${binfile}] { + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +if [target_info exists gdb_stub] { + gdb_step_for_stub; +} + +if ![runto_main] then { + perror "couldn't run to breakpoint" + continue +} + +# These breakpoint should be placed at consecutive instructions, such +# that the address difference between them is equal to +# decr_pc_after_break on this arquitecture. + +set bp_location1 [gdb_get_line_number "first insn"] +set bp_location2 [gdb_get_line_number "second insn"] + +# Enable recording. + +gdb_test "record" "" "enable record target" + +# Step through the breakpoints creating some history. + +gdb_test "next" ".*second insn.*" "next (1)" +gdb_test "next" ".*third insn.*" "next (2)" +gdb_test "next" ".*fourth insn.*" "next (3)" +gdb_test "next" ".*return 0.*" "next (4)" + +# Set consecutive breakpoints. + +gdb_test "break $bp_location1" \ + ".*Breakpoint .*$srcfile, line $bp_location1\\." \ + "first breakpoint line number" + +gdb_test "break $bp_location2" \ + "Breakpoint.*at.* file .*$srcfile, line $bp_location2\\." \ + "second breakpoint line number" + +# Test that reverse-continue doesn't mess with decr_pc_after_break + +gdb_test "rc" ".*second insn.*" "reverse continue to breakpoint" +gdb_test "rn" ".*first insn.*" "reverse next to begining of times" + +# Test that replay behaves as normal play. +gdb_test "next" ".*second insn.*" "next (1) in replay" +gdb_test "next" ".*third insn.*" "next (2) in replay" --Boundary-00=_36QAJHYl8pZBlZO--