From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21626 invoked by alias); 25 Oct 2008 07:08:26 -0000 Received: (qmail 21407 invoked by uid 22791); 25 Oct 2008 07:08:24 -0000 X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.185) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 25 Oct 2008 07:07:49 +0000 Received: by ti-out-0910.google.com with SMTP id d10so705574tib.12 for ; Sat, 25 Oct 2008 00:07:46 -0700 (PDT) Received: by 10.110.41.17 with SMTP id o17mr1880340tio.27.1224918465926; Sat, 25 Oct 2008 00:07:45 -0700 (PDT) Received: by 10.110.42.9 with HTTP; Sat, 25 Oct 2008 00:07:45 -0700 (PDT) Message-ID: Date: Sat, 25 Oct 2008 07:08:00 -0000 From: teawater To: "Pedro Alves" , "Michael Snyder" Subject: Re: [reverse/record] adjust_pc_after_break in reverse execution mode? Cc: "gdb-patches@sourceware.org" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_98052_11941395.1224918465908" References: <200810180210.16346.pedro@codesourcery.com> <200810240045.52818.pedro@codesourcery.com> <490118CB.5000500@vmware.com> <200810240250.20238.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/msg00634.txt.bz2 ------=_Part_98052_11941395.1224918465908 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 3363 The old patch make my_waitpid_record set pc even if this is not a breakpoint. So I make a new patch that my_waitpid_record just set pc when this is a breakpoint. 2008-10-24 Hui Zhu * record.c (record_wait): Check breakpint before forward execute in replay mode. Check breakpoint use function "breakpoint_inserted_here_p" in replay mode. Set pc if forward execute, gdbarch_decr_pc_after_break is not 0 and this is not single step in replay mode. * linux-nat.c (my_waitpid_record): Add gdbarch_decr_pc_after_break to pc if need. On Fri, Oct 24, 2008 at 17:57, teawater wrote: > Hi buddies, > > This is the new patch that fix the break bug. > > But I think I still need to add some code to deal with signal. > > 2008-10-24 Hui Zhu > > * record.c (record_wait): Check breakpint before forward > execute in replay mode. > Check breakpoint use function "breakpoint_inserted_here_p" > in replay mode. > Set pc if forward execute, gdbarch_decr_pc_after_break is not > 0 and this is not single step in replay mode. > > * linux-nat.c (my_waitpid_record): Add > gdbarch_decr_pc_after_break to pc if need. > > Thanks, > Hui > > On Fri, Oct 24, 2008 at 16:10, teawater wrote: >> Thanks Pedro and Michael, >> >> I think the reason is P record let inferior step recycle in the >> linux-nat target. >> So when it break by breakpint, it will not let >> (pc+gdbarch_decr_pc_after_break (gdbarch)). Then after >> adjust_pc_after_break, The PC is error. >> >> I will try to deal with it. >> >> Hui >> >> On Fri, Oct 24, 2008 at 09:50, Pedro Alves wrote: >>> On Friday 24 October 2008 01:37:31, Michael Snyder wrote: >>>> > In sum, it appears that decr_pc_after_break doesn't matter when you have >>>> > continguous breakpoints, as long as you get from from B1's address to B2's >>>> > address by single-stepping. All is good then, it appears! >>>> >>>> I agree, at least that is the conclusion I am leaning toward. >>>> >>> >>> Not so fast! I knew I had to spend a little extra thinking about >>> it, 'cause I knew something was broken, just couldn't find what. :-) >>> *as long as you get from from B1's address to B2's address >>> by single-stepping* was a restriction that doesn't always apply. >>> >>> Here's a test that will fail in forward record/replay mode, but not >>> in normal "play" mode. >>> >>> volatile int global_foo = 0; >>> >>> int >>> main (int argc, char **argv) >>> { >>> asm ("nop"); /* 1st insn */ >>> asm ("nop"); /* 2nd insn */ >>> asm ("nop"); /* 3rd insn */ >>> asm ("nop"); /* 4th insn */ >>> if (!global_foo) >>> goto ahead; >>> asm ("nop"); /* 5th insn */ >>> asm ("nop"); /* 6th insn */ >>> asm ("nop"); /* 7th insn */ >>> asm ("nop"); /* 8th insn */ <<< break 1 here >>> ahead: >>> asm ("nop"); /* 9th insn */ <<< break 2 here >>> end: >>> return 0; >>> } >>> >>> If you let the program reply until break 2 is hit, and assuming insn >>> 8th and 9th are assembled as contiguous (they do on x86 -O0 for me), you'll >>> see that adjust_pc_after_break will indeed make it appear that breakpoint >>> 1 was hit. Now, nops are nops, but real code could have something >>> else there... >>> >>> /me goes back to bed. >>> >>> -- >>> Pedro Alves >>> >> > ------=_Part_98052_11941395.1224918465908 Content-Type: text/plain; name=record_wait_breakpoint.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmpwtf8s1 Content-Disposition: attachment; filename=record_wait_breakpoint.txt Content-length: 6044 LS0tIGEvbGludXgtbmF0LmMKKysrIGIvbGludXgtbmF0LmMKQEAgLTUxNCw3 ICs1MTQsOSBAQCBteV93YWl0cGlkX3JlY29yZCAoaW50IHBpZCwgaW50ICpz dGF0dXMsCiAgIHN0cnVjdCBicF9sb2NhdGlvbiAqYmw7CiAgIHN0cnVjdCBi cmVha3BvaW50ICpiOwogICBDT1JFX0FERFIgcGM7CisgIENPUkVfQUREUiBk ZWNyX3BjX2FmdGVyX2JyZWFrOwogICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwor ICBpbnQgaXNfYnJlYWtwb2ludCA9IDE7CiAKIHdhaXRfYmVnaW46CiAgIHJl dCA9IG15X3dhaXRwaWQgKHBpZCwgc3RhdHVzLCBmbGFncyk7CkBAIC01MzAs NyArNTMyLDcgQEAgd2FpdF9iZWdpbjoKIAogICBpZiAoV0lGU1RPUFBFRCAo KnN0YXR1cykgJiYgV1NUT1BTSUcgKCpzdGF0dXMpID09IFNJR1RSQVApCiAg ICAgewotICAgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSBicmVha3BvaW50 ICovCisgICAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIGJyZWFrcG9pbnQu ICAqLwogICAgICAgcGMgPSAwOwogICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQg KCk7CiAgICAgICBmb3IgKGJsID0gYnBfbG9jYXRpb25fY2hhaW47IGJsOyBi bCA9IGJsLT5nbG9iYWxfbmV4dCkKQEAgLTYwMiw3ICs2MDQsMjYgQEAgd2Fp dF9iZWdpbjoKICAgICAgIGdvdG8gd2FpdF9iZWdpbjsKICAgICB9CiAKKyAg aXNfYnJlYWtwb2ludCA9IDA7CisKIG91dDoKKyAgLyogQWRkIGdkYmFyY2hf ZGVjcl9wY19hZnRlcl9icmVhayB0byBwYyBiZWNhdXNlIHBjIHdpbGwgYmUg YnJlYWsgYXQgYWRkcmVzcworICAgICBhZGQgZ2RiYXJjaF9kZWNyX3BjX2Fm dGVyX2JyZWFrIHdoZW4gaW5mZXJpb3Igbm9uLXN0ZXAgZXhlY3V0ZS4gICov CisgIGlmIChpc19icmVha3BvaW50KQorICAgIHsKKyAgICAgIGRlY3JfcGNf YWZ0ZXJfYnJlYWsgPSBnZGJhcmNoX2RlY3JfcGNfYWZ0ZXJfYnJlYWsKKwko Z2V0X3JlZ2NhY2hlX2FyY2ggKGdldF90aHJlYWRfcmVnY2FjaGUgKHBpZF90 b19wdGlkIChyZXQpKSkpOworICAgICAgaWYgKGRlY3JfcGNfYWZ0ZXJfYnJl YWspCisJeworCSAgaWYgKCFwYykKKwkgICAgeworCSAgICAgIHBjID0gcmVn Y2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAocGlkX3RvX3B0 aWQgKHJldCkpKTsKKwkgICAgfQorCSAgcmVnY2FjaGVfd3JpdGVfcGMgKGdl dF90aHJlYWRfcmVnY2FjaGUgKHBpZF90b19wdGlkIChyZXQpKSwKKwkJCSAg ICAgcGMgKyBkZWNyX3BjX2FmdGVyX2JyZWFrKTsKKwl9CisgICAgfQorCiAg IHJldHVybiByZXQ7CiB9CiAKLS0tIGEvcmVjb3JkLmMKKysrIGIvcmVjb3Jk LmMKQEAgLTQ5Nyw2ICs0OTcsMzMgQEAgcmVjb3JkX3dhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZ2V0XwogICAgICAgaW50IGNvbnRpbnVlX2ZsYWcg PSAxOwogICAgICAgaW50IGZpcnN0X3JlY29yZF9lbmQgPSAxOwogICAgICAg c3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAo cmVjb3JkX3dhaXRfY2xlYW51cHMsIDApOworICAgICAgQ09SRV9BRERSIHRt cF9wYzsKKworICAgICAgc3RhdHVzLT5raW5kID0gVEFSR0VUX1dBSVRLSU5E X1NUT1BQRUQ7CisKKyAgICAgIC8qIENoZWNrIGJyZWFrcG9pbnQgd2hlbiBm b3J3YXJkIGV4ZWN1dGUuICAqLworICAgICAgaWYgKGV4ZWN1dGlvbl9kaXJl Y3Rpb24gPT0gRVhFQ19GT1JXQVJEKQorCXsKKwkgIHRtcF9wYyA9IHJlZ2Nh Y2hlX3JlYWRfcGMgKHJlZ2NhY2hlKTsKKwkgIGlmIChicmVha3BvaW50X2lu c2VydGVkX2hlcmVfcCAodG1wX3BjKSkKKwkgICAgeworCSAgICAgIGlmIChy ZWNvcmRfZGVidWcpCisJCXsKKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCisJCQkJICAgICAgIlByb2Nlc3MgcmVjb3JkOiBicmVhayBh dCAweCVzLlxuIiwKKwkJCQkgICAgICBwYWRkcl9ueiAodG1wX3BjKSk7CisJ CX0KKwkgICAgICBpZiAoZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFrIChn ZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpKQorCQkgICYmICFyZWNvcmRf cmVzdW1lX3N0ZXApCisJCXsKKwkJICByZWdjYWNoZV93cml0ZV9wYyAocmVn Y2FjaGUsCisJCQkJICAgICB0bXBfcGMgKworCQkJCSAgICAgZ2RiYXJjaF9k ZWNyX3BjX2FmdGVyX2JyZWFrCisJCQkJICAgICAoZ2V0X3JlZ2NhY2hlX2Fy Y2ggKHJlZ2NhY2hlKSkpOworCQl9CisJICAgICAgZ290byByZXBsYXlfb3V0 OworCSAgICB9CisJfQogCiAgICAgICByZWNvcmRfZ2V0X3NpZyA9IDA7CiAg ICAgICBhY3Quc2FfaGFuZGxlciA9IHJlY29yZF9zaWdfaGFuZGxlcjsKQEAg LTUyMSw3ICs1NDgsNiBAQCByZWNvcmRfd2FpdCAocHRpZF90IHB0aWQsIHN0 cnVjdCB0YXJnZXRfCiAKICAgICAgIC8qIExvb3Agb3ZlciB0aGUgcmVjb3Jk X2xpc3QsIGxvb2tpbmcgZm9yIHRoZSBuZXh0IHBsYWNlIHRvCiAJIHN0b3Au ICAqLwotICAgICAgc3RhdHVzLT5raW5kID0gVEFSR0VUX1dBSVRLSU5EX1NU T1BQRUQ7CiAgICAgICBkbwogCXsKIAkgIC8qIENoZWNrIGZvciBiZWdpbm5p bmcgYW5kIGVuZCBvZiBsb2cuICAqLwpAQCAtNTg4LDEwICs2MTQsNiBAQCBy ZWNvcmRfd2FpdCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfCiAJICAg IH0KIAkgIGVsc2UKIAkgICAgewotCSAgICAgIENPUkVfQUREUiB0bXBfcGM7 Ci0JICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpibDsKLQkgICAgICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYjsKLQogCSAgICAgIGlmIChyZWNvcmRfZGVidWcg PiAxKQogCQl7CiAJCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LApAQCAtNjMyLDM1ICs2NTQsMjUgQEAgcmVjb3JkX3dhaXQgKHB0aWRfdCBw dGlkLCBzdHJ1Y3QgdGFyZ2V0XwogCQkgICAgfQogCiAJCSAgLyogY2hlY2sg YnJlYWtwb2ludCAqLwotCQkgIHRtcF9wYyA9IHJlYWRfcGMgKCk7Ci0JCSAg Zm9yIChibCA9IGJwX2xvY2F0aW9uX2NoYWluOyBibDsgYmwgPSBibC0+Z2xv YmFsX25leHQpCisJCSAgdG1wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAocmVn Y2FjaGUpOworCQkgIGlmIChicmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAo dG1wX3BjKSkKIAkJICAgIHsKLQkJICAgICAgYiA9IGJsLT5vd25lcjsKLQkJ ICAgICAgZ2RiX2Fzc2VydCAoYik7Ci0JCSAgICAgIGlmIChiLT5lbmFibGVf c3RhdGUgIT0gYnBfZW5hYmxlZAotCQkJICAmJiBiLT5lbmFibGVfc3RhdGUg IT0gYnBfcGVybWFuZW50KQotCQkJY29udGludWU7Ci0KLQkJICAgICAgaWYg KGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludCB8fCBiLT50eXBlID09IGJwX2Nh dGNoX2ZvcmsKLQkJCSAgfHwgYi0+dHlwZSA9PSBicF9jYXRjaF92Zm9yawot CQkJICB8fCBiLT50eXBlID09IGJwX2NhdGNoX2V4ZWMKLQkJCSAgfHwgYi0+ dHlwZSA9PSBicF9oYXJkd2FyZV93YXRjaHBvaW50Ci0JCQkgIHx8IGItPnR5 cGUgPT0gYnBfcmVhZF93YXRjaHBvaW50Ci0JCQkgIHx8IGItPnR5cGUgPT0g YnBfYWNjZXNzX3dhdGNocG9pbnQpCisJCSAgICAgIGlmIChyZWNvcmRfZGVi dWcpCiAJCQl7Ci0JCQkgIGNvbnRpbnVlOworCQkJICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCSAgICAgICJQcm9jZXNzIHJlY29y ZDogYnJlYWsgYXQgMHglcy5cbiIsCisJCQkJCSAgICAgIHBhZGRyX256ICh0 bXBfcGMpKTsKIAkJCX0KLQkJICAgICAgaWYgKGJsLT5hZGRyZXNzID09IHRt cF9wYykKKwkJICAgICAgaWYgKGdkYmFyY2hfZGVjcl9wY19hZnRlcl9icmVh ayAoZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKSkKKwkJCSAgJiYgZXhl Y3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX0ZPUldBUkQKKwkJCSAgJiYgIXJl Y29yZF9yZXN1bWVfc3RlcCkKIAkJCXsKLQkJCSAgaWYgKHJlY29yZF9kZWJ1 ZykKLQkJCSAgICB7Ci0JCQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csCi0JCQkJCQkgICJQcm9jZXNzIHJlY29yZDogYnJlYWsgYXQg MHglcy5cbiIsCi0JCQkJCQkgIHBhZGRyX256ICh0bXBfcGMpKTsKLQkJCSAg ICB9Ci0JCQkgIGNvbnRpbnVlX2ZsYWcgPSAwOwotCQkJICBicmVhazsKKwkJ CSAgcmVnY2FjaGVfd3JpdGVfcGMgKHJlZ2NhY2hlLAorCQkJCQkgICAgIHRt cF9wYyArCisJCQkJCSAgICAgZ2RiYXJjaF9kZWNyX3BjX2FmdGVyX2JyZWFr CisJCQkJCSAgICAgKGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSkpKTsK IAkJCX0KKwkJICAgICAgY29udGludWVfZmxhZyA9IDA7CiAJCSAgICB9CiAJ CX0KIAkgICAgICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JF VkVSU0UpCkBAIC02OTEsNiArNzAzLDcgQEAgbmV4dDoKIAkgIHBlcnJvcl93 aXRoX25hbWUgKF8oIlByb2Nlc3MgcmVjb3JkOiBzaWdhY3Rpb24iKSk7CiAJ fQogCityZXBsYXlfb3V0OgogICAgICAgaWYgKHJlY29yZF9nZXRfc2lnKQog CXsKIAkgIHN0YXR1cy0+dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF9JTlQ7 Cg== ------=_Part_98052_11941395.1224918465908--