From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23448 invoked by alias); 18 Dec 2009 08:21:39 -0000 Received: (qmail 23422 invoked by uid 22791); 18 Dec 2009 08:21:36 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pz0-f189.google.com (HELO mail-pz0-f189.google.com) (209.85.222.189) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 18 Dec 2009 08:21:31 +0000 Received: by pzk27 with SMTP id 27so2027858pzk.12 for ; Fri, 18 Dec 2009 00:21:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.143.25.36 with SMTP id c36mr2399521wfj.1.1261124490100; Fri, 18 Dec 2009 00:21:30 -0800 (PST) From: Hui Zhu Date: Fri, 18 Dec 2009 08:21:00 -0000 Message-ID: Subject: [RFC] Add support of software single step to process record To: gdb-patches ml Cc: Michael Snyder , shuchang zhou , paawan oza Content-Type: multipart/mixed; boundary=001636e1f81d402012047afc6d99 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: 2009-12/txt/msg00245.txt.bz2 --001636e1f81d402012047afc6d99 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 4235 Hi guys, This patch to make prec support software single step. I just try it with i386. Shuchang, please help me try it on mips. :) BTW, There are still some other patches for record_resume and record_wait. And other arch patch is still not begin to be review. So this patch is not very urgency. It just help the guys that are working on prec arch porting. Thanks, Hui 2009-12-18 Hui Zhu * breakpoint.c (inserted_single_step_breakpoint_p): New function. * breakpoint.h (inserted_single_step_breakpoint_p): Extern. * record.c (record_resume): Add code for software single step. (record_wait): Ditto. --- breakpoint.c | 12 ++++++++++++ breakpoint.h | 1 + record.c | 35 ++++++++++++++++++++++++++++++----- 3 files changed, 43 insertions(+), 5 deletions(-) --- a/breakpoint.c +++ b/breakpoint.c @@ -9624,6 +9624,18 @@ insert_single_step_breakpoint (struct gd paddress (gdbarch, next_pc)); } +/* Check if the breakpoints used for software single stepping inserted or not. */ + +int +inserted_single_step_breakpoint_p (void) +{ + if (single_step_breakpoints[0] != NULL + || single_step_breakpoints[1] != NULL) + return 1; + + return 1; +} + /* Remove and delete any breakpoints used for software single step. */ void --- a/breakpoint.h +++ b/breakpoint.h @@ -944,6 +944,7 @@ extern int remove_hw_watchpoints (void); twice before remove is called. */ extern void insert_single_step_breakpoint (struct gdbarch *, struct address_space *, CORE_ADDR); +extern int inserted_single_step_breakpoint_p (void); extern void remove_single_step_breakpoints (void); /* Manage manual breakpoints, separate from the normal chain of --- a/record.c +++ b/record.c @@ -995,6 +995,8 @@ record_resume (struct target_ops *ops, p if (!RECORD_IS_REPLAY) { + struct gdbarch *gdbarch = get_current_arch (); + if (do_record_message (get_current_regcache (), signal)) { record_resume_error = 0; @@ -1004,8 +1006,18 @@ record_resume (struct target_ops *ops, p record_resume_error = 1; return; } - record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1, - signal); + + if (gdbarch_software_single_step_p (gdbarch)) + { + if (!inserted_single_step_breakpoint_p ()) + gdbarch_software_single_step (gdbarch, get_current_frame ()); + record_beneath_to_resume (record_beneath_to_resume_ops, + ptid, step, signal); + record_resume_step = 0; + } + else + record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1, + signal); } } @@ -1086,6 +1098,7 @@ record_wait (struct target_ops *ops, /* This is not a single step. */ ptid_t ret; CORE_ADDR tmp_pc; + struct gdbarch *gdbarch = get_current_arch (); while (1) { @@ -1108,6 +1121,9 @@ record_wait (struct target_ops *ops, tmp_pc = regcache_read_pc (regcache); aspace = get_regcache_aspace (regcache); + if (gdbarch_software_single_step_p (gdbarch)) + remove_single_step_breakpoints (); + if (target_stopped_by_watchpoint ()) { /* Always interested in watchpoints. */ @@ -1133,9 +1149,18 @@ record_wait (struct target_ops *ops, if (!do_record_message (regcache, TARGET_SIGNAL_0)) break; - record_beneath_to_resume (record_beneath_to_resume_ops, - ptid, 1, - TARGET_SIGNAL_0); + if (gdbarch_software_single_step_p (gdbarch)) + { + gdbarch_software_single_step (gdbarch, + get_current_frame ()); + record_beneath_to_resume (record_beneath_to_resume_ops, + ptid, 0, + TARGET_SIGNAL_0); + } + else + record_beneath_to_resume (record_beneath_to_resume_ops, + ptid, 1, + TARGET_SIGNAL_0); continue; } } --001636e1f81d402012047afc6d99 Content-Type: text/plain; charset=US-ASCII; name="prec_software_single_step.txt" Content-Disposition: attachment; filename="prec_software_single_step.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g3covfzo0 Content-length: 4889 LS0tCiBicmVha3BvaW50LmMgfCAgIDEyICsrKysrKysrKysrKwogYnJlYWtw b2ludC5oIHwgICAgMSArCiByZWNvcmQuYyAgICAgfCAgIDM1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAzIGZpbGVzIGNoYW5nZWQs IDQzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgotLS0gYS9icmVh a3BvaW50LmMKKysrIGIvYnJlYWtwb2ludC5jCkBAIC05NjI0LDYgKzk2MjQs MTggQEAgaW5zZXJ0X3NpbmdsZV9zdGVwX2JyZWFrcG9pbnQgKHN0cnVjdCBn ZAogCSAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIG5leHRfcGMpKTsKIH0KIAor LyogQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnRzIHVzZWQgZm9yIHNvZnR3YXJl IHNpbmdsZSBzdGVwcGluZyBpbnNlcnRlZCBvciBub3QuICAqLworCitpbnQK K2luc2VydGVkX3NpbmdsZV9zdGVwX2JyZWFrcG9pbnRfcCAodm9pZCkKK3sK KyAgaWYgKHNpbmdsZV9zdGVwX2JyZWFrcG9pbnRzWzBdICE9IE5VTEwKKyAg ICAgIHx8IHNpbmdsZV9zdGVwX2JyZWFrcG9pbnRzWzFdICE9IE5VTEwpCisg ICAgcmV0dXJuIDE7CisKKyAgcmV0dXJuIDE7Cit9CisKIC8qIFJlbW92ZSBh bmQgZGVsZXRlIGFueSBicmVha3BvaW50cyB1c2VkIGZvciBzb2Z0d2FyZSBz aW5nbGUgc3RlcC4gICovCiAKIHZvaWQKLS0tIGEvYnJlYWtwb2ludC5oCisr KyBiL2JyZWFrcG9pbnQuaApAQCAtOTQ0LDYgKzk0NCw3IEBAIGV4dGVybiBp bnQgcmVtb3ZlX2h3X3dhdGNocG9pbnRzICh2b2lkKTsKICAgIHR3aWNlIGJl Zm9yZSByZW1vdmUgaXMgY2FsbGVkLiAgKi8KIGV4dGVybiB2b2lkIGluc2Vy dF9zaW5nbGVfc3RlcF9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqLAog CQkJCQkgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBDT1JFX0FERFIpOwor ZXh0ZXJuIGludCBpbnNlcnRlZF9zaW5nbGVfc3RlcF9icmVha3BvaW50X3Ag KHZvaWQpOwogZXh0ZXJuIHZvaWQgcmVtb3ZlX3NpbmdsZV9zdGVwX2JyZWFr cG9pbnRzICh2b2lkKTsKIAogLyogTWFuYWdlIG1hbnVhbCBicmVha3BvaW50 cywgc2VwYXJhdGUgZnJvbSB0aGUgbm9ybWFsIGNoYWluIG9mCi0tLSBhL3Jl Y29yZC5jCisrKyBiL3JlY29yZC5jCkBAIC05OTUsNiArOTk1LDggQEAgcmVj b3JkX3Jlc3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgcAogCiAgIGlm ICghUkVDT1JEX0lTX1JFUExBWSkKICAgICB7CisgICAgICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF9jdXJyZW50X2FyY2ggKCk7CisKICAgICAg IGlmIChkb19yZWNvcmRfbWVzc2FnZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUg KCksIHNpZ25hbCkpCiAgICAgICAgIHsKICAgICAgICAgICByZWNvcmRfcmVz dW1lX2Vycm9yID0gMDsKQEAgLTEwMDQsOCArMTAwNiwxOCBAQCByZWNvcmRf cmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBwCiAgICAgICAgICAg cmVjb3JkX3Jlc3VtZV9lcnJvciA9IDE7CiAgICAgICAgICAgcmV0dXJuOwog ICAgICAgICB9Ci0gICAgICByZWNvcmRfYmVuZWF0aF90b19yZXN1bWUgKHJl Y29yZF9iZW5lYXRoX3RvX3Jlc3VtZV9vcHMsIHB0aWQsIDEsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbCk7CisKKyAgICAgIGlm IChnZGJhcmNoX3NvZnR3YXJlX3NpbmdsZV9zdGVwX3AgKGdkYmFyY2gpKQor ICAgICAgICB7CisgICAgICAgICAgaWYgKCFpbnNlcnRlZF9zaW5nbGVfc3Rl cF9icmVha3BvaW50X3AgKCkpCisgICAgICAgICAgICBnZGJhcmNoX3NvZnR3 YXJlX3NpbmdsZV9zdGVwIChnZGJhcmNoLCBnZXRfY3VycmVudF9mcmFtZSAo KSk7CisgICAgICAgICAgcmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lIChyZWNv cmRfYmVuZWF0aF90b19yZXN1bWVfb3BzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHRpZCwgc3RlcCwgc2lnbmFsKTsKKyAgICAg ICAgICByZWNvcmRfcmVzdW1lX3N0ZXAgPSAwOworICAgICAgICB9CisgICAg ICBlbHNlCisgICAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVj b3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywgcHRpZCwgMSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwpOwogICAgIH0KIH0K IApAQCAtMTA4Niw2ICsxMDk4LDcgQEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMsCiAJICAvKiBUaGlzIGlzIG5vdCBhIHNpbmdsZSBz dGVwLiAgKi8KIAkgIHB0aWRfdCByZXQ7CiAJICBDT1JFX0FERFIgdG1wX3Bj OworICAgICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2N1 cnJlbnRfYXJjaCAoKTsKIAogCSAgd2hpbGUgKDEpCiAJICAgIHsKQEAgLTEx MDgsNiArMTEyMSw5IEBAIHJlY29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLAogCQkgIHRtcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2Nh Y2hlKTsKIAkJICBhc3BhY2UgPSBnZXRfcmVnY2FjaGVfYXNwYWNlIChyZWdj YWNoZSk7CiAKKyAgICAgICAgICAgICAgICAgIGlmIChnZGJhcmNoX3NvZnR3 YXJlX3NpbmdsZV9zdGVwX3AgKGdkYmFyY2gpKQorICAgICAgICAgICAgICAg ICAgICByZW1vdmVfc2luZ2xlX3N0ZXBfYnJlYWtwb2ludHMgKCk7CisKIAkJ ICBpZiAodGFyZ2V0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoKSkKIAkJICAg IHsKIAkJICAgICAgLyogQWx3YXlzIGludGVyZXN0ZWQgaW4gd2F0Y2hwb2lu dHMuICAqLwpAQCAtMTEzMyw5ICsxMTQ5LDE4IEBAIHJlY29yZF93YWl0IChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogCQkgICAgICBpZiAoIWRvX3JlY29y ZF9tZXNzYWdlIChyZWdjYWNoZSwgVEFSR0VUX1NJR05BTF8wKSkKIAkJCWJy ZWFrOwogCi0JCSAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVj b3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywKLQkJCQkJCXB0aWQsIDEsCi0J CQkJCQlUQVJHRVRfU0lHTkFMXzApOworICAgICAgICAgICAgICAgICAgICAg IGlmIChnZGJhcmNoX3NvZnR3YXJlX3NpbmdsZV9zdGVwX3AgKGdkYmFyY2gp KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGJhcmNoX3NvZnR3YXJlX3NpbmdsZV9zdGVwIChnZGJh cmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZXRfY3VycmVudF9mcmFtZSAoKSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3Vt ZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGlk LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRBUkdFVF9TSUdOQUxfMCk7CisgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorCQkg ICAgICAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVh dGhfdG9fcmVzdW1lX29wcywKKwkJCQkJCSAgcHRpZCwgMSwKKwkJCQkJCSAg VEFSR0VUX1NJR05BTF8wKTsKIAkJICAgICAgY29udGludWU7CiAJCSAgICB9 CiAJCX0K --001636e1f81d402012047afc6d99--