From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25656 invoked by alias); 6 Oct 2008 21:27:23 -0000 Received: (qmail 25648 invoked by uid 22791); 6 Oct 2008 21:27:22 -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, 06 Oct 2008 21:26:47 +0000 Received: (qmail 24077 invoked from network); 6 Oct 2008 21:26:45 -0000 Received: from unknown (HELO orlando.local) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 6 Oct 2008 21:26:45 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: [RFA] Reverse Debugging, 4/5 Date: Mon, 06 Oct 2008 21:27:00 -0000 User-Agent: KMail/1.9.9 Cc: Michael Snyder , Daniel Jacobowitz , teawater References: <48E3CD40.3070206@vmware.com> In-Reply-To: <48E3CD40.3070206@vmware.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: inline Message-Id: <200810062227.18333.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/msg00172.txt.bz2 T24gV2VkbmVzZGF5IDAxIE9jdG9iZXIgMjAwOCAyMDoxOToyOCwgTWljaGFl bCBTbnlkZXIgd3JvdGU6Cj4gwqAKPiArc3RhdGljIHZvaWQgZmluaXNoX2Jh Y2t3YXJkcyAoc3RydWN0IHN5bWJvbCAqLCBzdHJ1Y3QgdGhyZWFkX2luZm8g Kik7Cj4gKwoKTWlub3Igbml0LiAgSWYgeW91IHB1dCB0aGUgbmV3IGZ1bmN0 aW9uIGhlcmUsIHlvdSBkb24ndApuZWVkIHRoZSBmb3J3YXJkIGRlY2xhcmF0 aW9uLgoKPiDCoCDCoGZ1bmN0aW9uID0gZmluZF9wY19mdW5jdGlvbiAoZ2V0 X2ZyYW1lX3BjIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpKSk7Cj4gQEAg LTE0MjcsMTAgKzE0MjIsMjkgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KQo+IMKgIMKgIMKgIHNvdXJjZS4gwqAqLwo+IMKg IMKgaWYgKGZyb21fdHR5KQo+IMKgIMKgIMKgewo+IC0gwqAgwqAgwqBwcmlu dGZfZmlsdGVyZWQgKF8oIlJ1biB0aWxsIGV4aXQgZnJvbSAiKSk7Cj4gKyDC oCDCoCDCoGlmICh0YXJnZXRfZ2V0X2V4ZWN1dGlvbl9kaXJlY3Rpb24gKCkg PT0gRVhFQ19SRVZFUlNFKQo+ICvCoMKgwqDCoMKgwqDCoHByaW50Zl9maWx0 ZXJlZCAoIlJ1biBiYWNrIHRvIGNhbGwgb2YgIik7Cj4gKyDCoCDCoCDCoGVs c2UKPiArwqDCoMKgwqDCoMKgwqBwcmludGZfZmlsdGVyZWQgKCJSdW4gdGls bCBleGl0IGZyb20gIik7Cj4gKwo+IMKgIMKgIMKgIMKgcHJpbnRfc3RhY2tf ZnJhbWUgKGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCksIDEsIExPQ0FUSU9O KTsKPiDCoCDCoCDCoH0KCgppMThuLgoKPiArCj4gK3N0YXRpYyB2b2lkCj4g K2ZpbmlzaF9iYWNrd2FyZHMgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQo+ICt7Cj4gKyDCoHN0cnVjdCBzeW10 YWJfYW5kX2xpbmUgc2FsOwo+ICsgwqBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJl YWtwb2ludDsKPiArIMKgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKPiAr IMKgQ09SRV9BRERSIGZ1bmNfYWRkcjsKPiArIMKgaW50IGJhY2tfdXA7Cj4g Kwo+ICsgwqBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChnZXRfZnJh bWVfcGMgKGdldF9jdXJyZW50X2ZyYW1lICgpKSwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBOVUxMLCAmZnVuY19hZGRyLCBOVUxMKSA9PSAwKQo+ICsgwqAgwqBp bnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAgwqAiRmluaXNoOiBjb3VsZG4n dCBmaW5kIGZ1bmN0aW9uLiIpOwoKQ2FuJ3QgdGhpcyBoYXBwZW4gaW4gc29t ZSBjaXJjdW5zdGFuY2VzLCBsaWtlIHRoZSB1c2VyIGhpdHRpbmcKZmluaXNo IGFmdGVyIHN0ZXBpIHRocm91Z2gKbm8tZGVidWctaW5mby1hdC1hbGwtbm90 LWV2ZW4tbWluaW1hbC1zeW1ib2xzIGNvZGU/Cgo+ICsKPiArIMKgc2FsID0g ZmluZF9wY19saW5lIChmdW5jX2FkZHIsIDApOwo+ICsKPiArIMKgLyogVE9E TzogTGV0J3Mgbm90IHdvcnJ5IGFib3V0IGFzeW5jIHVudGlsIGxhdGVyLiDC oCovCgpJZiB5b3UgZG9uJ3Qgd2FudCB0byB0aGluayBhYm91dCBpdCBub3cs IGNvdWxkIHlvdSBlcnJvciBvdXQKaW4gdGhlIGFzeW5jK3JldmVyc2UgY2Fz ZSA/Cgo+ICsKPiArIMKgLyogV2UgZG9uJ3QgbmVlZCBhIHJldHVybiB2YWx1 ZS4gwqAqLwo+ICsgwqB0cC0+cHJvY2VlZF90b19maW5pc2ggPSAwOwo+ICsg wqAvKiBTcGVjaWFsIGNhc2U6IGlmIHdlJ3JlIHNpdHRpbmcgYXQgdGhlIGZ1 bmN0aW9uIGVudHJ5IHBvaW50LAo+ICsgwqAgwqAgdGhlbiBhbGwgd2UgbmVl ZCB0byBkbyBpcyB0YWtlIGEgcmV2ZXJzZSBzaW5nbGVzdGVwLiDCoFdlCj4g KyDCoCDCoCBkb24ndCBuZWVkIHRvIHNldCBhIGJyZWFrcG9pbnQsIGFuZCBp bmRlZWQgaXQgd291bGQgZG8gdXMKPiArIMKgIMKgIG5vIGdvb2QgdG8gZG8g c28uCj4gKwo+ICsgwqAgwqAgTm90ZSB0aGF0IHRoaXMgY2FuIG9ubHkgaGFw cGVuIGF0IGZyYW1lICMwLCBzaW5jZSB0aGVyZSdzCj4gKyDCoCDCoCBubyB3 YXkgdGhhdCBhIGZ1bmN0aW9uIHVwIHRoZSBzdGFjayBjYW4gaGF2ZSBhIHJl dHVybiBhZGRyZXNzCj4gKyDCoCDCoCB0aGF0J3MgZXF1YWwgdG8gaXRzIGVu dHJ5IHBvaW50LiDCoCovCj4gKwo+ICsgwqBpZiAoc2FsLnBjICE9IHJlYWRf cGMgKCkpCj4gKyDCoCDCoHsKPiArIMKgIMKgIMKgLyogU2V0IGJyZWFrcG9p bnQgYW5kIGNvbnRpbnVlLiDCoCovCj4gKyDCoCDCoCDCoGJyZWFrcG9pbnQg PQo+ICvCoMKgwqDCoMKgwqDCoHNldF9tb21lbnRhcnlfYnJlYWtwb2ludCAo c2FsLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoGdldF9mcmFtZV9pZCAoZ2V0 X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSksCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IMKgYnBfYnJlYWtwb2ludCk7Cj4gKyDCoCDCoCDCoC8qIFRlbGwgdGhlIGJy ZWFrcG9pbnQgdG8ga2VlcCBxdWlldC4gwqBXZSB3b24ndCBiZSBkb25lCj4g KyDCoCDCoCDCoCDCoCB1bnRpbCB3ZSd2ZSBkb25lIGFub3RoZXIgcmV2ZXJz ZSBzaW5nbGUtc3RlcC4gwqAqLwo+ICsgwqAgwqAgwqBicmVha3BvaW50X3Np bGVuY2UgKGJyZWFrcG9pbnQpOwo+ICsgwqAgwqAgwqBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQpOwo+ ICsgwqAgwqAgwqBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgVEFSR0VUX1NJ R05BTF9ERUZBVUxULCAwKTsKPiArIMKgIMKgIMKgLyogV2Ugd2lsbCBiZSBz dG9wcGVkIHdoZW4gcHJvY2VlZCByZXR1cm5zLiDCoCovCj4gKyDCoCDCoCDC oGJhY2tfdXAgPSBicHN0YXRfZmluZF9icmVha3BvaW50ICh0cC0+c3RvcF9i cHN0YXQsIGJyZWFrcG9pbnQpICE9IE5VTEw7Cj4gKyDCoCDCoCDCoGRvX2Ns ZWFudXBzIChvbGRfY2hhaW4pOwo+ICsgwqAgwqB9Cj4gKyDCoGVsc2UKPiAr IMKgIMKgYmFja191cCA9IDE7Cj4gKyDCoGlmIChiYWNrX3VwKQo+ICsgwqAg wqB7Cj4gKyDCoCDCoCDCoC8qIElmIGluIGZhY3Qgd2UgaGl0IHRoZSBzdGVw LXJlc3VtZSBicmVha3BvaW50IChhbmQgbm90Cj4gK8KgwqDCoMKgwqDCoMKg IHNvbWUgb3RoZXIgYnJlYWtwb2ludCksIHRoZW4gd2UncmUgYWxtb3N0IHRo ZXJlIC0tCj4gK8KgwqDCoMKgwqDCoMKgIHdlIGp1c3QgbmVlZCB0byBiYWNr IHVwIGJ5IG9uZSBtb3JlIHNpbmdsZS1zdGVwLiDCoCovCj4gKyDCoCDCoCDC oC8qIChLbHVkZ3kgd2F5IG9mIGxldHRpbmcgd2FpdF9mb3JfaW5mZXJpb3Ig a25vdy4uLikgKi8KPiArIMKgIMKgIMKgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQg PSB0cC0+c3RlcF9yYW5nZV9lbmQgPSAxOwo+ICsgwqAgwqAgwqBwcm9jZWVk ICgoQ09SRV9BRERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAxKTsK CldvdWxkIGNhbGxpbmcgc3RlcF8xIG9yIHN0ZXBfb25jZSBpbnN0ZWFkIHdv cmsgaGVyZT8gIEl0IHdvdWxkCnByb2JhYmx5IGF2b2lkIHRoZSBrbHVkZ2Uu CgpJJ20gbm8gcmV2ZXJzZSBndXJ1LCBidXQgeW91ciBjb21tZW50cyBtYWRl IHNlbnNlIHRvIG1lLgoKCj4gKyDCoCDCoH0KPiArIMKgcmV0dXJuOwo+ICt9 Cj4gKwo+IMKgDAo+IMKgc3RhdGljIHZvaWQKPiDCoGVudmlyb25tZW50X2lu Zm8gKGNoYXIgKnZhciwgaW50IGZyb21fdHR5KQoKCgotLSAKUGVkcm8gQWx2 ZXMK >From gdb-patches-return-59057-listarch-gdb-patches=sources.redhat.com@sourceware.org Mon Oct 06 21:33:53 2008 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 28149 invoked by alias); 6 Oct 2008 21:33:53 -0000 Received: (qmail 28141 invoked by uid 22791); 6 Oct 2008 21:33:52 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-outbound-1.vmware.com (HELO smtp-outbound-1.vmware.com) (65.113.40.141) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 06 Oct 2008 21:33:16 +0000 Received: from mailhost2.vmware.com (mailhost2.vmware.com [10.16.67.167]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id A57C46779; Mon, 6 Oct 2008 14:33:14 -0700 (PDT) Received: from [10.20.92.59] (promb-2s-dhcp59.eng.vmware.com [10.20.92.59]) by mailhost2.vmware.com (Postfix) with ESMTP id 9F0488E5CA; Mon, 6 Oct 2008 14:33:14 -0700 (PDT) Message-ID: <48EA83AD.9040004@vmware.com> Date: Mon, 06 Oct 2008 21:33:00 -0000 From: Michael Snyder User-Agent: Thunderbird 1.5.0.12 (X11/20080411) MIME-Version: 1.0 To: Joel Brobecker CC: "gdb-patches@sourceware.org" , Daniel Jacobowitz , Pedro Alves , teawater Subject: Re: [RFA] Reverse Debugging, 3/5 References: <48E3CD0B.8020003@vmware.com> <20081006212132.GB21853@adacore.com> In-Reply-To: <20081006212132.GB21853@adacore.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit 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 Delivered-To: mailing list gdb-patches@sourceware.org X-SW-Source: 2008-10/txt/msg00173.txt.bz2 Content-length: 2220 Joel Brobecker wrote: > I had some comments, too, but Pedro made most of them. Here are mine > that don't overlap with his... > >> + /* OK, we're just gonna keep stepping here. */ > > I would prefer if we kept slang out of the comments. Can we use > "going to" instead? Sure. >> + if (stop_func_sal.pc == stop_pc) >> + { >> + /* We're there already. Just stop stepping now. */ >> + ecs->event_thread->stop_step = 1; >> + print_stop_reason (END_STEPPING_RANGE, 0); >> + stop_stepping (ecs); >> + return; >> + } >> + /* Else just reset the step range and keep going. >> + No step-resume breakpoint, they don't work for >> + epilogues, which can have multiple entry paths. */ >> + ecs->event_thread->step_range_start = stop_func_sal.pc; >> + ecs->event_thread->step_range_end = stop_func_sal.end; >> + keep_going (ecs); >> + return; >> + }> > Regarding this hunk, it really took me a long time to understand > what we're supposed to do when execution is reverse. I think it > was a combination of the function name together with the fact that > we're not trying to undo what the function does, but instead implement > whatever command the user has issued which caused us to call this > function. I am thinking, for the sake of clarity, to implement this > in a separate function and call the appropriate function from > handle_inferior_event. The function name can then be used to explain > at a glance what it's supposed to do... You lost me. You're right, of course, it's quite difficult to follow the flow of control here (it's infrun, what can I say?). The damn thing's a state machine, you know... But I didn't follow exactly what you're saying here. On the one hand, this function ("step_into_function") is called from only one place (for now), so it wouldn't be too difficult for me to test exec_direction BEFORE calling it (and branch off to a different "step_backwards_into_function"). But on the other hand, this is exactly what we are doing here. We are stepping into a function. Only we're doing it in reverse, so we're coming in thru a return, not thru a call. You still think I should split them up?