From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7580 invoked by alias); 20 Oct 2008 15:50:32 -0000 Received: (qmail 7570 invoked by uid 22791); 20 Oct 2008 15:50:31 -0000 X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.186) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 20 Oct 2008 15:49:56 +0000 Received: by ti-out-0910.google.com with SMTP id d10so971903tib.12 for ; Mon, 20 Oct 2008 08:49:52 -0700 (PDT) Received: by 10.110.47.17 with SMTP id u17mr5075795tiu.49.1224517792898; Mon, 20 Oct 2008 08:49:52 -0700 (PDT) Received: by 10.110.42.9 with HTTP; Mon, 20 Oct 2008 08:49:52 -0700 (PDT) Message-ID: Date: Mon, 20 Oct 2008 15:50:00 -0000 From: teawater To: "Pedro Alves" Subject: Re: [reverse/record] adjust_pc_after_break in reverse execution mode? Cc: gdb-patches@sourceware.org, "Michael Snyder" In-Reply-To: <200810201309.35333.pedro@codesourcery.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_142553_24381367.1224517792899" References: <200810180210.16346.pedro@codesourcery.com> <200810200109.55661.pedro@codesourcery.com> <48FBD342.5070905@vmware.com> <200810201309.35333.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/msg00489.txt.bz2 ------=_Part_142553_24381367.1224517792899 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 3371 Thanks Pedro. I make a patch too. 2008-10-20 Hui Zhu * record.c (record_wait): Check breakpint before forward execute in replay mode. Check breakpoint use function "breakpoint_inserted_here_p". Thanks, Hui On Mon, Oct 20, 2008 at 20:09, Pedro Alves wrote: > A Monday 20 October 2008 01:39:30, Michael Snyder escreveu: >> Pedro Alves wrote: >> > On Sunday 19 October 2008 23:39:20, Michael Snyder wrote: >> >> After codgitating for a bit (that's "thinking" when you're over 50), >> >> I've decided that you're right. >> >> >> >> However, I have a new concern -- I'm worried about what it will do >> >> when it's replaying but going forward. >> >> >> >> Could you possibly revisit your test and see what it does >> >> if you record all the way to line 9 or 10, then back up >> >> to line 6, then continue with breakpoints at 6 and 7? >> > >> > Eh, you're right. It's broken. >> >> Thought so. >> >> See, the problem is that "adjust_pc_after_break" is assuming >> memory-breakpoint semantics, but Process Record/Replay actually >> implements hardware-breakpoint semantics. It watches the >> instruction-address "bus" and stops when the PC matches the >> address of a breakpoint. >> >> I suspect this is probably a problem with other record/replay >> back-ends too, but I haven't confirmed it yet. >> >> Still, I think that the patch you committed was correct >> for the reverse case. > >> This is a corner case that reveals >> that "reverse" and "replay" are not synonymous. > > They certainly aren't. When replaying, I believe it's just best to > behave as close as possible to when it the inferior is really running. > From the inferior control side, GDB be mostly as agnostic about > "replay" vs normal run as possibly. > > IIUC from reading the code, I see two issues. > > 1) When going forward and in reply mode, breakpoint hits are being checked > *after* a record item is replays. IIUC, we should check *before*, > and report an adjusted PC. > > 2) Un-inserted breakpoints weren't accounted for AFAICT (GDB will > un-inserted breakpoints temporarily when stepping over them). > Maybe they are, I got lost. :-) There's a loop going through the > bp_location_chain. Can you get rid of that and use > regular_breakpoint_inserted_here_p or similars? > > Below is a 10 minutes hack at it, as a starting point. Replay stil > isn't perfect, mainly because I got lost in the record_wait maze --- that, > needs a bit of clean up. :-) > >> >> > (gdb) record >> > (gdb) b 6 >> > Breakpoint 2 at 0x8048352: file nop.c, line 6. >> > (gdb) b 7 >> > Breakpoint 3 at 0x8048353: file nop.c, line 7. >> > (gdb) n >> > >> > Breakpoint 3, main () at nop.c:7 >> > 7 asm ("nop"); >> > (gdb) n >> > 8 asm ("nop"); >> > (gdb) >> > 9 asm ("nop"); >> > (gdb) n >> > 10 } >> > (gdb) rc >> > Continuing. >> > >> > Breakpoint 3, main () at nop.c:7 >> > 7 asm ("nop"); >> > (gdb) rn >> > >> > No more reverse-execution history. >> > main () at nop.c:6 >> > 6 asm ("nop"); >> > (gdb) n >> > >> > Breakpoint 2, main () at nop.c:6 >> > 6 asm ("nop"); >> > (gdb) >> > 8 asm ("nop"); >> > (gdb) >> > 9 asm ("nop"); >> > (gdb) >> > >> > >> > >> > -- >> > Pedro Alves >> >> > > > > -- > Pedro Alves > ------=_Part_142553_24381367.1224517792899 Content-Type: text/plain; name=record_wait_breakpoint.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmja9mm01 Content-Disposition: attachment; filename=record_wait_breakpoint.txt Content-length: 3673 LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkg QEAKKzIwMDgtMTAtMjAgIEh1aSBaaHUgIDx0ZWF3YXRlckBnbWFpbC5jb20+ CisKKwkqIHJlY29yZC5jIChyZWNvcmRfd2FpdCk6IENoZWNrIGJyZWFrcGlu dCBiZWZvcmUgZm9yd2FyZAorCWV4ZWN1dGUgaW4gcmVwbGF5IG1vZGUuCisJ Q2hlY2sgYnJlYWtwb2ludCB1c2UgZnVuY3Rpb24gImJyZWFrcG9pbnRfaW5z ZXJ0ZWRfaGVyZV9wIi4KKwogMjAwOC0xMC0xOSAgSHVpIFpodSAgPHRlYXdh dGVyQGdtYWlsLmNvbT4KIAogCSogaW5mcnVuLmMgKGhhbmRsZV9pbmZlcmlv cl9ldmVudCk6IFNldCAic3RvcF9wYyIgd2hlbgotLS0gYS9yZWNvcmQuYwor KysgYi9yZWNvcmQuYwpAQCAtNDk4LDYgKzQ5OCwyMyBAQCByZWNvcmRfd2Fp dCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfCiAgICAgICBpbnQgZmly c3RfcmVjb3JkX2VuZCA9IDE7CiAgICAgICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChyZWNvcmRfd2FpdF9jbGVhbnVw cywgMCk7CiAKKyAgICAgIC8qIENoZWNrIGJyZWFrcG9pbnQgd2hlbiBmb3J3 YXJkIGV4ZWN1dGUuICAqLworICAgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rp b24gPT0gRVhFQ19GT1JXQVJEKQorCXsKKwkgIGlmIChicmVha3BvaW50X2lu c2VydGVkX2hlcmVfcCAocmVhZF9wYyAoKSkpCisJICAgIHsKKwkgICAgICBp ZiAocmVjb3JkX2RlYnVnKQorCQl7CisJCSAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLAorCQkJCSAgICAgICJQcm9jZXNzIHJlY29yZDogYnJl YWsgYXQgMHglcy5cbiIsCisJCQkJICAgICAgcGFkZHJfbnogKHJlZ2NhY2hl X3JlYWRfcGMKKwkJCQkJCShnZXRfdGhyZWFkX3JlZ2NhY2hlCisJCQkJCQkg KHB0aWQpKSkpOworCQl9CisJICAgICAgZ290byByZXBsYXlfb3V0OworCSAg ICB9CisJfQorCiAgICAgICByZWNvcmRfZ2V0X3NpZyA9IDA7CiAgICAgICBh Y3Quc2FfaGFuZGxlciA9IHJlY29yZF9zaWdfaGFuZGxlcjsKICAgICAgIGFj dC5zYV9tYXNrID0gcmVjb3JkX21hc2thbGw7CkBAIC01ODgsMTAgKzYwNSw2 IEBAIHJlY29yZF93YWl0IChwdGlkX3QgcHRpZCwgc3RydWN0IHRhcmdldF8K IAkgICAgfQogCSAgZWxzZQogCSAgICB7Ci0JICAgICAgQ09SRV9BRERSIHRt cF9wYzsKLQkgICAgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsOwotCSAgICAg IHN0cnVjdCBicmVha3BvaW50ICpiOwotCiAJICAgICAgaWYgKHJlY29yZF9k ZWJ1ZyA+IDEpCiAJCXsKIAkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csCkBAIC02MzIsMzUgKzY0NSwxNyBAQCByZWNvcmRfd2FpdCAocHRp ZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRfCiAJCSAgICB9CiAKIAkJICAvKiBj aGVjayBicmVha3BvaW50ICovCi0JCSAgdG1wX3BjID0gcmVhZF9wYyAoKTsK LQkJICBmb3IgKGJsID0gYnBfbG9jYXRpb25fY2hhaW47IGJsOyBibCA9IGJs LT5nbG9iYWxfbmV4dCkKKwkJICBpZiAoYnJlYWtwb2ludF9pbnNlcnRlZF9o ZXJlX3AgKHJlYWRfcGMgKCkpKQogCQkgICAgewotCQkgICAgICBiID0gYmwt Pm93bmVyOwotCQkgICAgICBnZGJfYXNzZXJ0IChiKTsKLQkJICAgICAgaWYg KGItPmVuYWJsZV9zdGF0ZSAhPSBicF9lbmFibGVkCi0JCQkgICYmIGItPmVu YWJsZV9zdGF0ZSAhPSBicF9wZXJtYW5lbnQpCi0JCQljb250aW51ZTsKLQot CQkgICAgICBpZiAoYi0+dHlwZSA9PSBicF93YXRjaHBvaW50IHx8IGItPnR5 cGUgPT0gYnBfY2F0Y2hfZm9yawotCQkJICB8fCBiLT50eXBlID09IGJwX2Nh dGNoX3Zmb3JrCi0JCQkgIHx8IGItPnR5cGUgPT0gYnBfY2F0Y2hfZXhlYwot CQkJICB8fCBiLT50eXBlID09IGJwX2hhcmR3YXJlX3dhdGNocG9pbnQKLQkJ CSAgfHwgYi0+dHlwZSA9PSBicF9yZWFkX3dhdGNocG9pbnQKLQkJCSAgfHwg Yi0+dHlwZSA9PSBicF9hY2Nlc3Nfd2F0Y2hwb2ludCkKKwkJICAgICAgaWYg KHJlY29yZF9kZWJ1ZykKIAkJCXsKLQkJCSAgY29udGludWU7Ci0JCQl9Ci0J CSAgICAgIGlmIChibC0+YWRkcmVzcyA9PSB0bXBfcGMpCi0JCQl7Ci0JCQkg IGlmIChyZWNvcmRfZGVidWcpCi0JCQkgICAgewotCQkJICAgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotCQkJCQkJICAiUHJvY2VzcyBy ZWNvcmQ6IGJyZWFrIGF0IDB4JXMuXG4iLAotCQkJCQkJICBwYWRkcl9ueiAo dG1wX3BjKSk7Ci0JCQkgICAgfQotCQkJICBjb250aW51ZV9mbGFnID0gMDsK LQkJCSAgYnJlYWs7CisJCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKKwkJCQkJICAgICAgIlByb2Nlc3MgcmVjb3JkOiBicmVhayBhdCAw eCVzLlxuIiwKKwkJCQkJICAgICAgcGFkZHJfbnogKHJlZ2NhY2hlX3JlYWRf cGMKKwkJCQkJCQkoZ2V0X3RocmVhZF9yZWdjYWNoZQorCQkJCQkJCSAocHRp ZCkpKSk7CiAJCQl9CisJCSAgICAgIGNvbnRpbnVlX2ZsYWcgPSAwOwogCQkg ICAgfQogCQl9CiAJICAgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0g RVhFQ19SRVZFUlNFKQpAQCAtNjkxLDYgKzY4Niw3IEBAIG5leHQ6CiAJICBw ZXJyb3Jfd2l0aF9uYW1lIChfKCJQcm9jZXNzIHJlY29yZDogc2lnYWN0aW9u IikpOwogCX0KIAorcmVwbGF5X291dDoKICAgICAgIGlmIChyZWNvcmRfZ2V0 X3NpZykKIAl7CiAJICBzdGF0dXMtPnZhbHVlLnNpZyA9IFRBUkdFVF9TSUdO QUxfSU5UOwo= ------=_Part_142553_24381367.1224517792899--