From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28892 invoked by alias); 20 Oct 2008 09:17:02 -0000 Received: (qmail 28881 invoked by uid 22791); 20 Oct 2008 09:17:00 -0000 X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.184) by sourceware.org (qpsmtpd/0.31) with ESMTP; Mon, 20 Oct 2008 09:16:25 +0000 Received: by ti-out-0910.google.com with SMTP id d10so880040tib.12 for ; Mon, 20 Oct 2008 02:16:22 -0700 (PDT) Received: by 10.110.33.15 with SMTP id g15mr4745973tig.35.1224494182331; Mon, 20 Oct 2008 02:16:22 -0700 (PDT) Received: by 10.110.42.9 with HTTP; Mon, 20 Oct 2008 02:16:22 -0700 (PDT) Message-ID: Date: Mon, 20 Oct 2008 09:17:00 -0000 From: teawater To: "Michael Snyder" , "gdb-patches@sourceware.org" Subject: [RFA] Deal with get ecs->stop_func_end fail MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_134380_3398706.1224494182322" 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/msg00485.txt.bz2 ------=_Part_134380_3398706.1224494182322 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1837 Hi Michael, I try a program and got: (gdb) start Temporary breakpoint 1 at 0x80483c1: file 1.c, line 20. Starting program: /media/disk/a.out Temporary breakpoint 1, main () at 1.c:20 20 int b = 0; (gdb) rec (gdb) n 21 int c = 1; (gdb) 24 printf ("a = %d b = %d c = %d\n", a, b, c); (gdb) a = 0 b = 0 c = 1 25 b = cool (); (gdb) rn No more reverse-execution history. main () at 1.c:20 20 int b = 0; It's clear that "rn" got error. This is because: find_pc_partial_function (stop_pc, &ecs->stop_func_name, &ecs->stop_func_start, &ecs->stop_func_end); This part get ecs->stop_func_end is 0. Then: sr_sal.pc = ecs->stop_func_start; insert_step_resume_breakpoint_at_sal (sr_sal, null_frame_id); Insert breakpoint to 0 address and continue execute. So... So I add some code deal with it. Maybe you remember, I send some patch for it in before. But I got random_signal, cause I let this part step. So I add other code deal with that. 2008-10-20 Hui Zhu Deal with get ecs->stop_func_end fail. * infrun.c (reverse_need_step): New variable. Set to 1 if next reverse execute need step. (handle_inferior_event): Save the prev value of reverse_need_step to reverse_need_step_prev. If reverse_need_step_prev is 1 and stop_signal is TARGET_SIGNAL_TRAP, not set this is not random_signal. If find_pc_partial_function get ecs->stop_func_name and ecs->stop_func_end are 0 and this is reverse execute, set reverse_need_step to 1. (currently_stepping): Return 1 if reverse_need_step is 1. (insert_step_resume_breakpoint_at_sal): If reverse_need_step is 1 and sr_sal.pc is 0, not insert breakpoint. (stop_stepping): Reset reverse_need_step to 1 when this execute command complete. This patch is both for branch and main tree. Thanks, Hui ------=_Part_134380_3398706.1224494182322 Content-Type: text/plain; name=deal_stop_func_end_zero.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fmiwcasn0 Content-Disposition: attachment; filename=deal_stop_func_end_zero.txt Content-length: 4620 LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEx IEBACisyMDA4LTEwLTIwICBIdWkgWmh1ICA8dGVhd2F0ZXJAZ21haWwuY29t PgorCisJRGVhbCB3aXRoIGdldCBlY3MtPnN0b3BfZnVuY19lbmQgZmFpbC4K KworCSogaW5mcnVuLmMgKHJldmVyc2VfbmVlZF9zdGVwKTogTmV3IHZhcmlh YmxlLiBTZXQgdG8gMSBpZiBuZXh0CisJcmV2ZXJzZSBleGVjdXRlIG5lZWQg c3RlcC4KKwkoaGFuZGxlX2luZmVyaW9yX2V2ZW50KTogSWYgCisKIDIwMDgt MTAtMTkgIEh1aSBaaHUgIDx0ZWF3YXRlckBnbWFpbC5jb20+CiAKIAkqIGlu ZnJ1bi5jIChoYW5kbGVfaW5mZXJpb3JfZXZlbnQpOiBTZXQgInN0b3BfcGMi IHdoZW4KLS0tIGEvaW5mcnVuLmMKKysrIGIvaW5mcnVuLmMKQEAgLTE4NTQs NiArMTg1NCw4IEBAIGVuc3VyZV9ub3RfcnVubmluZyAodm9pZCkKICAgIGJ5 IGFuIGV2ZW50IGZyb20gdGhlIGluZmVyaW9yLCBmaWd1cmUgb3V0IHdoYXQg aXQgbWVhbnMgYW5kIHRha2UKICAgIGFwcHJvcHJpYXRlIGFjdGlvbi4gICov CiAKK3N0YXRpYyBpbnQgcmV2ZXJzZV9uZWVkX3N0ZXAgPSAwOworCiB2b2lk CiBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKQogewpAQCAtMTg2Miw2ICsxODY0LDEzIEBAIGhh bmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl8KICAgaW50 IHN0ZXBwZWRfYWZ0ZXJfc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAg c3RydWN0IHN5bXRhYl9hbmRfbGluZSBzdG9wX3BjX3NhbDsKICAgZW51bSBz dG9wX2tpbmQgc3RvcF9zb29uOworICBpbnQgcmV2ZXJzZV9uZWVkX3N0ZXBf cHJldjsKKworICAvKiBTYXZlIHRoZSByZXZlcnNlX25lZWRfc3RlcCB0aGF0 IGlzIHNldCBpbiBwcmV2IGN5Y2xlIHRvIAorICAgICByZXZlcnNlX25lZWRf c3RlcF9wcmV2LiAgKi8KKyAgcmV2ZXJzZV9uZWVkX3N0ZXBfcHJldiA9IHJl dmVyc2VfbmVlZF9zdGVwOworICAvKiBSZXNldCB0aGUgdmFsdWUgb2YgcmV2 ZXJzZV9uZWVkX3N0ZXAuICAqLworICByZXZlcnNlX25lZWRfc3RlcCA9IDA7 CiAKICAgaWYgKGVjcy0+d3Mua2luZCAhPSBUQVJHRVRfV0FJVEtJTkRfRVhJ VEVECiAgICAgICAmJiBlY3MtPndzLmtpbmQgIT0gVEFSR0VUX1dBSVRLSU5E X1NJR05BTExFRApAQCAtMjUyMCw2ICsyNTI5LDExIEBAIHRhcmdldHMgc2hv dWxkIGFkZCBuZXcgdGhyZWFkcyB0byB0aGUgdGgKICAgICAgd2lsbCBib3Ro IGJlIDAgaWYgaXQgZG9lc24ndCB3b3JrLiAgKi8KICAgZmluZF9wY19wYXJ0 aWFsX2Z1bmN0aW9uIChzdG9wX3BjLCAmZWNzLT5zdG9wX2Z1bmNfbmFtZSwK IAkJCSAgICAmZWNzLT5zdG9wX2Z1bmNfc3RhcnQsICZlY3MtPnN0b3BfZnVu Y19lbmQpOworICAvKiBJZiBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gZ2V0 IGVjcy0+c3RvcF9mdW5jX25hbWUgYW5kIGVjcy0+c3RvcF9mdW5jX2VuZAor ICAgICBhcmUgMCBhbmQgdGhpcyBpcyByZXZlcnNlIGV4ZWN1dGUsIExldCBp bmZlcmlvciBzaW5nbGUgc3RlcC4gICovCisgIGlmICghKGVjcy0+c3RvcF9m dW5jX25hbWUgfHwgZWNzLT5zdG9wX2Z1bmNfZW5kKQorICAgICAgJiYgZXhl Y3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVSU0UpCisgICAgcmV2ZXJz ZV9uZWVkX3N0ZXAgPSAxOwogICBlY3MtPnN0b3BfZnVuY19zdGFydAogICAg ICs9IGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQg KGN1cnJlbnRfZ2RiYXJjaCk7CiAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVw cGluZ19vdmVyX2JyZWFrcG9pbnQgPSAwOwpAQCAtMjY2Nyw3ICsyNjgxLDgg QEAgdGFyZ2V0cyBzaG91bGQgYWRkIG5ldyB0aHJlYWRzIHRvIHRoZSB0aAog CSAgPSAhKGJwc3RhdF9leHBsYWluc19zaWduYWwgKGVjcy0+ZXZlbnRfdGhy ZWFkLT5zdG9wX2Jwc3RhdCkKIAkgICAgICB8fCBlY3MtPmV2ZW50X3RocmVh ZC0+dHJhcF9leHBlY3RlZAogCSAgICAgIHx8IChlY3MtPmV2ZW50X3RocmVh ZC0+c3RlcF9yYW5nZV9lbmQKLQkJICAmJiBlY3MtPmV2ZW50X3RocmVhZC0+ c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKSk7CisJCSAgJiYgZWNz LT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPT0gTlVM TCkKKwkgICAgICB8fCByZXZlcnNlX25lZWRfc3RlcF9wcmV2KTsKICAgICAg IGVsc2UKIAl7CiAJICBlY3MtPnJhbmRvbV9zaWduYWwgPSAhYnBzdGF0X2V4 cGxhaW5zX3NpZ25hbCAoZWNzLT5ldmVudF90aHJlYWQtPnN0b3BfYnBzdGF0 KTsKQEAgLTM0MTEsNyArMzQyNiw4IEBAIGN1cnJlbnRseV9zdGVwcGluZyAo c3RydWN0IHRocmVhZF9pbmZvICoKICAgcmV0dXJuICgoKHRwLT5zdGVwX3Jh bmdlX2VuZCAmJiB0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxM KQogCSAgIHx8IHRwLT50cmFwX2V4cGVjdGVkKQogCSAgfHwgdHAtPnN0ZXBw aW5nX3Rocm91Z2hfc29saWJfYWZ0ZXJfY2F0Y2gKLQkgIHx8IGJwc3RhdF9z aG91bGRfc3RlcCAoKSk7CisJICB8fCBicHN0YXRfc2hvdWxkX3N0ZXAgKCkK KwkgIHx8IHJldmVyc2VfbmVlZF9zdGVwKTsKIH0KIAogLyogSW5mZXJpb3Ig aGFzIHN0ZXBwZWQgaW50byBhIHN1YnJvdXRpbmUgY2FsbCB3aXRoIHNvdXJj ZSBjb2RlIHRoYXQKQEAgLTM1MzksNiArMzU1NSw5IEBAIGluc2VydF9zdGVw X3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3QKICAgICAgc3RlcF9yZXN1 bWVfYnJlYWtwb2ludCB3aGVuIG9uZSBpcyBhbHJlYWR5IGFjdGl2ZS4gICov CiAgIGdkYl9hc3NlcnQgKGluZmVyaW9yX3RocmVhZCAoKS0+c3RlcF9yZXN1 bWVfYnJlYWtwb2ludCA9PSBOVUxMKTsKIAorICBpZiAoIXNyX3NhbC5wYyAm JiByZXZlcnNlX25lZWRfc3RlcCkKKyAgICByZXR1cm47CisKICAgaWYgKGRl YnVnX2luZnJ1bikKICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCiAJCQkiaW5mcnVuOiBpbnNlcnRpbmcgc3RlcC1yZXN1bWUgYnJlYWtw b2ludCBhdCAweCVzXG4iLApAQCAtMzYzMyw2ICszNjUyLDEwIEBAIHN0b3Bf c3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF8KIAogICAvKiBM ZXQgY2FsbGVycyBrbm93IHdlIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgdGhl IGluZmVyaW9yIGFueW1vcmUuICAqLwogICBlY3MtPndhaXRfc29tZV9tb3Jl ID0gMDsKKworICAvKiBSZXNldCByZXZlcnNlX25lZWRfc3RlcCB0byBtYWtl IGl0IG5vdCBhZmZlY3QgcmV2ZXJzZV9uZWVkX3N0ZXBfcHJldgorICBpbiBu ZXh0IGV4ZWN1dGUgY29tbWFuZC4gICovCisgIHJldmVyc2VfbmVlZF9zdGVw ID0gMDsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHZhcmlvdXMg Y2FzZXMgd2hlcmUgd2UgbmVlZCB0byBjb250aW51ZQo= ------=_Part_134380_3398706.1224494182322--