From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32206 invoked by alias); 4 Jan 2010 14:23:51 -0000 Received: (qmail 32185 invoked by uid 22791); 4 Jan 2010 14:23:48 -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; Mon, 04 Jan 2010 14:23:42 +0000 Received: by pzk27 with SMTP id 27so8682055pzk.12 for ; Mon, 04 Jan 2010 06:23:41 -0800 (PST) MIME-Version: 1.0 Received: by 10.143.154.36 with SMTP id g36mr14369602wfo.121.1262615021083; Mon, 04 Jan 2010 06:23:41 -0800 (PST) In-Reply-To: <200912241738.19780.pedro@codesourcery.com> References: <20091223065141.GT2788@adacore.com> <200912241738.19780.pedro@codesourcery.com> From: Hui Zhu Date: Mon, 04 Jan 2010 14:23:00 -0000 Message-ID: Subject: Re: [RFC] Add support of software single step to process record To: Pedro Alves , shuchang zhou Cc: gdb-patches@sourceware.org, Joel Brobecker , Michael Snyder , paawan oza , Tom Tromey Content-Type: multipart/mixed; boundary=001636e0a87fd1e023047c577716 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: 2010-01/txt/msg00054.txt.bz2 --001636e0a87fd1e023047c577716 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4822 Sorry guys, the prev patch is so ugly. Thanks for teach me clear about the gdbarch_software_single_step, Pedro. I did some extend with your idea. Because record_wait need record_resume_step point out this resume is signal step or continue. if (!step) { /* This is not hard single step. */ if (!gdbarch_software_single_step_p (gdbarch)) { /* This is a normal continue. */ step =3D 1; } else { /* This arch support soft sigle step. */ if (single_step_breakpoints_inserted ()) { /* This is a soft single step. */ record_resume_step =3D 1; } else { /* This is a continue. Try to insert a soft single step breakpoint. */ if (!gdbarch_software_single_step (gdbarch, get_current_frame ())) { /* This system don't want use soft single step. Use hard sigle step. */ step =3D 1; } } } } Shuchuang, please help me try this patch. Thanks. Best regards, Hui 2010-01-04 Hui Zhu * breakpoint.c (single_step_breakpoints_inserted): New function. * breakpoint.h (single_step_breakpoints_inserted): Extern. * record.c (record_resume): Add code for software single step. (record_wait): Ditto. On Fri, Dec 25, 2009 at 01:38, Pedro Alves wrote: > On Wednesday 23 December 2009 09:23:21, Hui Zhu wrote: >> + =A0 =A0 =A0struct gdbarch *gdbarch =3D target_thread_architecture (pti= d); >> + >> =A0 =A0 =A0 =A0record_message (get_current_regcache (), signal); > >> =A0 =A0 =A0 =A0record_beneath_to_resume (record_beneath_to_resume_ops, p= tid, 1, >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0signa= l); > > Why is this resume call still present? > >> + >> + =A0 =A0 =A0 if (gdbarch_software_single_step_p (gdbarch)) >> + =A0 =A0 =A0 =A0 { >> + =A0 =A0 =A0 =A0 =A0 if (!inserted_single_step_breakpoint_p ()) > > Isn't this naming stale? =A0I thought you had renamed this. > >> + =A0 =A0 =A0 =A0 =A0 =A0 gdbarch_software_single_step (gdbarch, get_cur= rent_frame ()); >> + =A0 =A0 =A0 =A0 =A0 record_beneath_to_resume (record_beneath_to_resume= _ops, >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 ptid, step, signal); >> + =A0 =A0 =A0 =A0 =A0 record_resume_step =3D 0; >> + =A0 =A0 =A0 =A0 } >> + =A0 =A0 =A0 else >> + =A0 =A0 =A0 =A0 record_beneath_to_resume (record_beneath_to_resume_ops= , ptid, 1, >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 si= gnal); >> =A0 =A0 =A0} >> > > You've got the predicates a bit mixed up. > > =A0- gdbarch_software_single_step_p purpose is only "is there or > =A0 not a gdbarch_software_single_step callback registered in > =A0 this gdbarch"? =A0It returning true does not mean that > =A0 software single-step should be used for that single-step. > > =A0- gdbarch_software_single_step can return false, meaning, > =A0 no software single-step needs to be used. > > This is how stepping over atomic sequences is handled > currently (grep for deal_with_atomic_sequence): > gdbarch_software_single_step_p returns true, but > gdbarch_software_single_step returns false most > of the times. =A0See also infrun.c:maybe_software_singlestep. > > I think you want this: > > =A0 =A0 =A0 if (!step > =A0 =A0 =A0 =A0 =A0 && gdbarch_software_single_step_p (gdbarch) > =A0 =A0 =A0 =A0 =A0 && !single_step_breakpoints_inserted () > =A0 =A0 =A0 =A0 =A0 && gdbarch_software_single_step (gdbarch, get_current= _frame ())) > =A0 =A0 =A0 =A0 record_resume_step =3D 0; > =A0 =A0 =A0 else > =A0 =A0 =A0 =A0 record_resume_step =3D 1; > > =A0 =A0 =A0 record_beneath_to_resume (record_beneath_to_resume_ops, ptid, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 record_re= sume_step, signal); > > If `step' is true when record_resume is called, and so is > gdbarch_software_single_step_p, then it must be that infrun.c > already determined that gdbarch_software_single_step returns > false, otherwise, `step' would be false (maybe_software_singlestep). > > If `step' is false (the user is requesting a continue), and > no single-step breakpoints are inserted yet, but, > gdbarch_software_single_step returns false, we have ourselves > an arch/target combo that only wants software single-stepping > for atomic sequences, e.g., MIPS (non-linux), or PPC. =A0If > so, we should force hardware single-step in the target > beneath (set record_resume_step to 1). > > -- > Pedro Alves > --001636e0a87fd1e023047c577716 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_g41ccngh0 Content-length: 5568 LS0tCiBicmVha3BvaW50LmMgfCAgIDEwICsrKysrKysrKysKIGJyZWFrcG9p bnQuaCB8ICAgIDEgKwogcmVjb3JkLmMgICAgIHwgICA1MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDMg ZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCi0tLSBhL2JyZWFrcG9pbnQuYworKysgYi9icmVha3BvaW50LmMKQEAg LTk2NDYsNiArOTY0NiwxNiBAQCBpbnNlcnRfc2luZ2xlX3N0ZXBfYnJlYWtw b2ludCAoc3RydWN0IGdkCiAJICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgbmV4 dF9wYykpOwogfQogCisvKiBDaGVjayBpZiB0aGUgYnJlYWtwb2ludHMgdXNl ZCBmb3Igc29mdHdhcmUgc2luZ2xlIHN0ZXBwaW5nCisgICB3ZXJlIGluc2Vy dGVkIG9yIG5vdC4gICovCisKK2ludAorc2luZ2xlX3N0ZXBfYnJlYWtwb2lu dHNfaW5zZXJ0ZWQgKHZvaWQpCit7CisgIHJldHVybiAoc2luZ2xlX3N0ZXBf YnJlYWtwb2ludHNbMF0gIT0gTlVMTAorICAgICAgICAgIHx8IHNpbmdsZV9z dGVwX2JyZWFrcG9pbnRzWzFdICE9IE5VTEwpOworfQorCiAvKiBSZW1vdmUg YW5kIGRlbGV0ZSBhbnkgYnJlYWtwb2ludHMgdXNlZCBmb3Igc29mdHdhcmUg c2luZ2xlIHN0ZXAuICAqLwogCiB2b2lkCi0tLSBhL2JyZWFrcG9pbnQuaAor KysgYi9icmVha3BvaW50LmgKQEAgLTk0NCw2ICs5NDQsNyBAQCBleHRlcm4g aW50IHJlbW92ZV9od193YXRjaHBvaW50cyAodm9pZCk7CiAgICB0d2ljZSBi ZWZvcmUgcmVtb3ZlIGlzIGNhbGxlZC4gICovCiBleHRlcm4gdm9pZCBpbnNl cnRfc2luZ2xlX3N0ZXBfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwK IAkJCQkJICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgQ09SRV9BRERSKTsK K2V4dGVybiBpbnQgc2luZ2xlX3N0ZXBfYnJlYWtwb2ludHNfaW5zZXJ0ZWQg KHZvaWQpOwogZXh0ZXJuIHZvaWQgcmVtb3ZlX3NpbmdsZV9zdGVwX2JyZWFr cG9pbnRzICh2b2lkKTsKIAogLyogTWFuYWdlIG1hbnVhbCBicmVha3BvaW50 cywgc2VwYXJhdGUgZnJvbSB0aGUgbm9ybWFsIGNoYWluIG9mCi0tLSBhL3Jl Y29yZC5jCisrKyBiL3JlY29yZC5jCkBAIC0xMDAyLDkgKzEwMDIsNDMgQEAg cmVjb3JkX3Jlc3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgcAogCiAg IGlmICghUkVDT1JEX0lTX1JFUExBWSkKICAgICB7CisgICAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IHRhcmdldF90aHJlYWRfYXJjaGl0ZWN0dXJl IChwdGlkKTsKKwogICAgICAgcmVjb3JkX21lc3NhZ2UgKGdldF9jdXJyZW50 X3JlZ2NhY2hlICgpLCBzaWduYWwpOwotICAgICAgcmVjb3JkX2JlbmVhdGhf dG9fcmVzdW1lIChyZWNvcmRfYmVuZWF0aF90b19yZXN1bWVfb3BzLCBwdGlk LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwp OworCisgICAgICBpZiAoIXN0ZXApCisgICAgICAgIHsKKyAgICAgICAgICAv KiBUaGlzIGlzIG5vdCBoYXJkIHNpbmdsZSBzdGVwLiAgKi8KKyAgICAgICAg ICBpZiAoIWdkYmFyY2hfc29mdHdhcmVfc2luZ2xlX3N0ZXBfcCAoZ2RiYXJj aCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIC8qIFRoaXMgaXMg YSBub3JtYWwgY29udGludWUuICAqLworICAgICAgICAgICAgICBzdGVwID0g MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIC8qIFRoaXMgYXJjaCBzdXBwb3J0IHNvZnQg c2lnbGUgc3RlcC4gICovCisgICAgICAgICAgICAgIGlmIChzaW5nbGVfc3Rl cF9icmVha3BvaW50c19pbnNlcnRlZCAoKSkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAvKiBUaGlzIGlzIGEgc29mdCBzaW5nbGUg c3RlcC4gICovCisgICAgICAgICAgICAgICAgICByZWNvcmRfcmVzdW1lX3N0 ZXAgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIC8qIFRo aXMgaXMgYSBjb250aW51ZS4KKyAgICAgICAgICAgICAgICAgICAgIFRyeSB0 byBpbnNlcnQgYSBzb2Z0IHNpbmdsZSBzdGVwIGJyZWFrcG9pbnQuICAqLwor ICAgICAgICAgICAgICAgICAgaWYgKCFnZGJhcmNoX3NvZnR3YXJlX3Npbmds ZV9zdGVwIChnZGJhcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfY3VycmVudF9mcmFtZSAo KSkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAvKiBUaGlzIHN5c3RlbSBkb24ndCB3YW50IHVzZSBzb2Z0IHNpbmds ZSBzdGVwLgorICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBoYXJkIHNp Z2xlIHN0ZXAuICAqLworICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgPSAx OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgIHJlY29yZF9iZW5l YXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9fcmVzdW1lX29wcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRpZCwgc3RlcCwg c2lnbmFsKTsKICAgICB9CiB9CiAKQEAgLTEwNzcsNiArMTExMSw3IEBAIHJl Y29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogCSAgLyogVGhp cyBpcyBub3QgYSBzaW5nbGUgc3RlcC4gICovCiAJICBwdGlkX3QgcmV0Owog CSAgQ09SRV9BRERSIHRtcF9wYzsKKyAgICAgICAgICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IHRhcmdldF90aHJlYWRfYXJjaGl0ZWN0dXJlIChpbmZl cmlvcl9wdGlkKTsKIAogCSAgd2hpbGUgKDEpCiAJICAgIHsKQEAgLTEwOTks NiArMTEzNCw5IEBAIHJlY29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzLAogCQkgIHRtcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKHJlZ2NhY2hl KTsKIAkJICBhc3BhY2UgPSBnZXRfcmVnY2FjaGVfYXNwYWNlIChyZWdjYWNo ZSk7CiAKKyAgICAgICAgICAgICAgICAgIGlmIChnZGJhcmNoX3NvZnR3YXJl X3NpbmdsZV9zdGVwX3AgKGdkYmFyY2gpKQorICAgICAgICAgICAgICAgICAg ICByZW1vdmVfc2luZ2xlX3N0ZXBfYnJlYWtwb2ludHMgKCk7CisKIAkJICBp ZiAodGFyZ2V0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAoKSkKIAkJICAgIHsK IAkJICAgICAgLyogQWx3YXlzIGludGVyZXN0ZWQgaW4gd2F0Y2hwb2ludHMu ICAqLwpAQCAtMTEyMSw2ICsxMTU5LDggQEAgcmVjb3JkX3dhaXQgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsCiAJCSAgICB7CiAJCSAgICAgIC8qIFRoaXMg bXVzdCBiZSBhIHNpbmdsZS1zdGVwIHRyYXAuICBSZWNvcmQgdGhlCiAJCSAg ICAgICAgIGluc24gYW5kIGlzc3VlIGFub3RoZXIgc3RlcC4gICovCisgICAg ICAgICAgICAgICAgICAgICAgaW50IHN0ZXAgPSAxOworCiAJCSAgICAgIGlm ICghcmVjb3JkX21lc3NhZ2Vfd3JhcHBlcl9zYWZlIChyZWdjYWNoZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVEFSR0VUX1NJR05BTF8wKSkKICAgCQkJewpAQCAtMTEyOSw4 ICsxMTY5LDEzIEBAIHJlY29yZF93YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgIAkJ CX0KIAorICAgICAgICAgICAgICAgICAgICAgIGlmIChnZGJhcmNoX3NvZnR3 YXJlX3NpbmdsZV9zdGVwX3AgKGdkYmFyY2gpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICYmIGdkYmFyY2hfc29mdHdhcmVfc2luZ2xlX3N0ZXAgKGdk YmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdldF9jdXJyZW50X2ZyYW1lICgpKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAgPSAwOworCiAJCSAgICAg IHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSAocmVjb3JkX2JlbmVhdGhfdG9f cmVzdW1lX29wcywKLQkJCQkJCXB0aWQsIDEsCisJCQkJCQlwdGlkLCBzdGVw LAogCQkJCQkJVEFSR0VUX1NJR05BTF8wKTsKIAkJICAgICAgY29udGludWU7 CiAJCSAgICB9Cg== --001636e0a87fd1e023047c577716--