From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31757 invoked by alias); 7 Jul 2009 09:31:35 -0000 Received: (qmail 31744 invoked by uid 22791); 7 Jul 2009 09:31:33 -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-px0-f195.google.com (HELO mail-px0-f195.google.com) (209.85.216.195) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 07 Jul 2009 09:31:21 +0000 Received: by pxi33 with SMTP id 33so4062216pxi.12 for ; Tue, 07 Jul 2009 02:31:19 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.49.20 with SMTP id w20mr1743521wfw.269.1246959079814; Tue, 07 Jul 2009 02:31:19 -0700 (PDT) In-Reply-To: References: Date: Tue, 07 Jul 2009 09:31:00 -0000 Message-ID: Subject: Re: [RFC] Add step_stack_prev_frame_id From: Hui Zhu To: gdb-patches ml , Michael Snyder , Daniel Jacobowitz , Pedro Alves , Marc Khouzam Content-Type: multipart/mixed; boundary=000e0cd2a0a800776b046e1a4996 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-07/txt/msg00183.txt.bz2 --000e0cd2a0a800776b046e1a4996 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4543 Add the attachment. On Tue, Jul 7, 2009 at 17:29, Hui Zhu wrote: > Hi, > > Now, reverse debug have a problem about infrun doesn't know the > frame_id of prev function. =A0So it will not know inferior stepped into > subroutine or stepped out from subroutine. > http://sourceware.org/ml/gdb/2009-06/msg00089.html > This mail talk about this issue. > > Daniel suggest us to use "frame_unwind_caller_id" and Michael make > some patch for it. =A0Looks it's depend on arch code support and new > version gcc support. > > I have other idea about it. > http://sourceware.org/ml/gdb-patches/2009-06/msg00793.html > Save this prev_frame_id when we save step_stack_prev_frame_id in > reverse mode. =A0I made a patch for it. > I think it will not depend on arch code support and new version gcc > support. =A0I try it with precord AMD64 patch. > > > Thanks, > Hui > > > 2009-07-07 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0* gdbthread.h (thread_info): Add step_stack_prev_frame_id = to > =A0 =A0 =A0 =A0save the prev_frame_id when we can get the prev_frame. > =A0 =A0 =A0 =A0* infrun.c (inferior_status): Ditto. > =A0 =A0 =A0 =A0(save_inferior_status): Ditto. > =A0 =A0 =A0 =A0(restore_inferior_status): Ditto. > =A0 =A0 =A0 =A0(set_step_info): Get the step_stack_prev_frame_id. > =A0 =A0 =A0 =A0(handle_inferior_event): Use the step_stack_prev_frame_id = make > =A0 =A0 =A0 =A0sure inferior stepped into subroutine or not. > > > --- > =A0gdbthread.h | =A0 =A03 +++ > =A0infrun.c =A0 =A0| =A0 14 +++++++++++++- > =A02 files changed, 16 insertions(+), 1 deletion(-) > > --- a/gdbthread.h > +++ b/gdbthread.h > @@ -88,6 +88,9 @@ struct thread_info > =A0 =A0 =A0any inlined frames). =A0*/ > =A0 struct frame_id step_stack_frame_id; > > + =A0/* The prev frame id of step_stack_frame_id. =A0*/ > + =A0struct frame_id step_stack_prev_frame_id; > + > =A0 int current_line; > =A0 struct symtab *current_symtab; > > --- a/infrun.c > +++ b/infrun.c > @@ -2153,10 +2153,17 @@ void > =A0set_step_info (struct frame_info *frame, struct symtab_and_line sal) > =A0{ > =A0 struct thread_info *tp =3D inferior_thread (); > + =A0struct frame_info *prev_frame; > > =A0 tp->step_frame_id =3D get_frame_id (frame); > =A0 tp->step_stack_frame_id =3D get_stack_frame_id (frame); > > + =A0prev_frame =3D get_prev_frame (frame); > + =A0if (prev_frame) > + =A0 =A0tp->step_stack_prev_frame_id =3D get_stack_frame_id (prev_frame); > + =A0else > + =A0 =A0tp->step_stack_prev_frame_id =3D null_frame_id; > + > =A0 tp->current_symtab =3D sal.symtab; > =A0 tp->current_line =3D sal.line; > =A0} > @@ -3778,7 +3785,9 @@ infrun: not switching back to stepped th > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0ecs->event_thread->step_stack_fram= e_id) > =A0 =A0 =A0 && (frame_id_eq (frame_unwind_caller_id (frame), > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ecs->event_thread->step_stack= _frame_id) > - =A0 =A0 =A0 =A0 || execution_direction =3D=3D EXEC_REVERSE)) > + =A0 =A0 =A0 =A0 || (execution_direction =3D=3D EXEC_REVERSE > + =A0 =A0 =A0 =A0 =A0 =A0 =A0&& !frame_id_eq (get_stack_frame_id (frame), > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ecs->event_= thread->step_stack_prev_frame_id)))) > =A0 =A0 { > =A0 =A0 =A0 CORE_ADDR real_stop_pc; > > @@ -5388,6 +5397,7 @@ struct inferior_status > =A0 CORE_ADDR step_range_end; > =A0 struct frame_id step_frame_id; > =A0 struct frame_id step_stack_frame_id; > + =A0struct frame_id step_stack_prev_frame_id; > =A0 enum step_over_calls_kind step_over_calls; > =A0 CORE_ADDR step_resume_break_address; > =A0 int stop_after_trap; > @@ -5418,6 +5428,7 @@ save_inferior_status (void) > =A0 inf_status->step_range_end =3D tp->step_range_end; > =A0 inf_status->step_frame_id =3D tp->step_frame_id; > =A0 inf_status->step_stack_frame_id =3D tp->step_stack_frame_id; > + =A0inf_status->step_stack_prev_frame_id =3D tp->step_stack_prev_frame_i= d; > =A0 inf_status->step_over_calls =3D tp->step_over_calls; > =A0 inf_status->stop_after_trap =3D stop_after_trap; > =A0 inf_status->stop_soon =3D inf->stop_soon; > @@ -5472,6 +5483,7 @@ restore_inferior_status (struct inferior > =A0 tp->step_range_end =3D inf_status->step_range_end; > =A0 tp->step_frame_id =3D inf_status->step_frame_id; > =A0 tp->step_stack_frame_id =3D inf_status->step_stack_frame_id; > + =A0tp->step_stack_prev_frame_id =3D inf_status->step_stack_prev_frame_i= d; > =A0 tp->step_over_calls =3D inf_status->step_over_calls; > =A0 stop_after_trap =3D inf_status->stop_after_trap; > =A0 inf->stop_soon =3D inf_status->stop_soon; > --000e0cd2a0a800776b046e1a4996 Content-Type: text/plain; charset=US-ASCII; name="reverse-add-step_stack_prev_frame_id.txt" Content-Disposition: attachment; filename="reverse-add-step_stack_prev_frame_id.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fwufbnlp0 Content-length: 3612 LS0tCiBnZGJ0aHJlYWQuaCB8ICAgIDMgKysrCiBpbmZydW4uYyAgICB8ICAg MTQgKysrKysrKysrKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQoKLS0tIGEvZ2RidGhyZWFkLmgKKysr IGIvZ2RidGhyZWFkLmgKQEAgLTg4LDYgKzg4LDkgQEAgc3RydWN0IHRocmVh ZF9pbmZvCiAgICAgIGFueSBpbmxpbmVkIGZyYW1lcykuICAqLwogICBzdHJ1 Y3QgZnJhbWVfaWQgc3RlcF9zdGFja19mcmFtZV9pZDsKIAorICAvKiBUaGUg cHJldiBmcmFtZSBpZCBvZiBzdGVwX3N0YWNrX2ZyYW1lX2lkLiAgKi8KKyAg c3RydWN0IGZyYW1lX2lkIHN0ZXBfc3RhY2tfcHJldl9mcmFtZV9pZDsKKwog ICBpbnQgY3VycmVudF9saW5lOwogICBzdHJ1Y3Qgc3ltdGFiICpjdXJyZW50 X3N5bXRhYjsKIAotLS0gYS9pbmZydW4uYworKysgYi9pbmZydW4uYwpAQCAt MjE1MywxMCArMjE1MywxNyBAQCB2b2lkCiBzZXRfc3RlcF9pbmZvIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg c2FsKQogewogICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3Jf dGhyZWFkICgpOworICBzdHJ1Y3QgZnJhbWVfaW5mbyAqcHJldl9mcmFtZTsK IAogICB0cC0+c3RlcF9mcmFtZV9pZCA9IGdldF9mcmFtZV9pZCAoZnJhbWUp OwogICB0cC0+c3RlcF9zdGFja19mcmFtZV9pZCA9IGdldF9zdGFja19mcmFt ZV9pZCAoZnJhbWUpOwogCisgIHByZXZfZnJhbWUgPSBnZXRfcHJldl9mcmFt ZSAoZnJhbWUpOworICBpZiAocHJldl9mcmFtZSkKKyAgICB0cC0+c3RlcF9z dGFja19wcmV2X2ZyYW1lX2lkID0gZ2V0X3N0YWNrX2ZyYW1lX2lkIChwcmV2 X2ZyYW1lKTsKKyAgZWxzZQorICAgIHRwLT5zdGVwX3N0YWNrX3ByZXZfZnJh bWVfaWQgPSBudWxsX2ZyYW1lX2lkOworCiAgIHRwLT5jdXJyZW50X3N5bXRh YiA9IHNhbC5zeW10YWI7CiAgIHRwLT5jdXJyZW50X2xpbmUgPSBzYWwubGlu ZTsKIH0KQEAgLTM3NzgsNyArMzc4NSw5IEBAIGluZnJ1bjogbm90IHN3aXRj aGluZyBiYWNrIHRvIHN0ZXBwZWQgdGgKIAkJICAgIGVjcy0+ZXZlbnRfdGhy ZWFkLT5zdGVwX3N0YWNrX2ZyYW1lX2lkKQogICAgICAgJiYgKGZyYW1lX2lk X2VxIChmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCiAJCSAgICAg ICBlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9zdGFja19mcmFtZV9pZCkKLQkg IHx8IGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKSkKKwkg IHx8IChleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVWRVJTRQorICAg ICAgICAgICAgICAmJiAhZnJhbWVfaWRfZXEgKGdldF9zdGFja19mcmFtZV9p ZCAoZnJhbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVj cy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3N0YWNrX3ByZXZfZnJhbWVfaWQpKSkp CiAgICAgewogICAgICAgQ09SRV9BRERSIHJlYWxfc3RvcF9wYzsKIApAQCAt NTM4OCw2ICs1Mzk3LDcgQEAgc3RydWN0IGluZmVyaW9yX3N0YXR1cwogICBD T1JFX0FERFIgc3RlcF9yYW5nZV9lbmQ7CiAgIHN0cnVjdCBmcmFtZV9pZCBz dGVwX2ZyYW1lX2lkOwogICBzdHJ1Y3QgZnJhbWVfaWQgc3RlcF9zdGFja19m cmFtZV9pZDsKKyAgc3RydWN0IGZyYW1lX2lkIHN0ZXBfc3RhY2tfcHJldl9m cmFtZV9pZDsKICAgZW51bSBzdGVwX292ZXJfY2FsbHNfa2luZCBzdGVwX292 ZXJfY2FsbHM7CiAgIENPUkVfQUREUiBzdGVwX3Jlc3VtZV9icmVha19hZGRy ZXNzOwogICBpbnQgc3RvcF9hZnRlcl90cmFwOwpAQCAtNTQxOCw2ICs1NDI4 LDcgQEAgc2F2ZV9pbmZlcmlvcl9zdGF0dXMgKHZvaWQpCiAgIGluZl9zdGF0 dXMtPnN0ZXBfcmFuZ2VfZW5kID0gdHAtPnN0ZXBfcmFuZ2VfZW5kOwogICBp bmZfc3RhdHVzLT5zdGVwX2ZyYW1lX2lkID0gdHAtPnN0ZXBfZnJhbWVfaWQ7 CiAgIGluZl9zdGF0dXMtPnN0ZXBfc3RhY2tfZnJhbWVfaWQgPSB0cC0+c3Rl cF9zdGFja19mcmFtZV9pZDsKKyAgaW5mX3N0YXR1cy0+c3RlcF9zdGFja19w cmV2X2ZyYW1lX2lkID0gdHAtPnN0ZXBfc3RhY2tfcHJldl9mcmFtZV9pZDsK ICAgaW5mX3N0YXR1cy0+c3RlcF9vdmVyX2NhbGxzID0gdHAtPnN0ZXBfb3Zl cl9jYWxsczsKICAgaW5mX3N0YXR1cy0+c3RvcF9hZnRlcl90cmFwID0gc3Rv cF9hZnRlcl90cmFwOwogICBpbmZfc3RhdHVzLT5zdG9wX3Nvb24gPSBpbmYt PnN0b3Bfc29vbjsKQEAgLTU0NzIsNiArNTQ4Myw3IEBAIHJlc3RvcmVfaW5m ZXJpb3Jfc3RhdHVzIChzdHJ1Y3QgaW5mZXJpb3IKICAgdHAtPnN0ZXBfcmFu Z2VfZW5kID0gaW5mX3N0YXR1cy0+c3RlcF9yYW5nZV9lbmQ7CiAgIHRwLT5z dGVwX2ZyYW1lX2lkID0gaW5mX3N0YXR1cy0+c3RlcF9mcmFtZV9pZDsKICAg dHAtPnN0ZXBfc3RhY2tfZnJhbWVfaWQgPSBpbmZfc3RhdHVzLT5zdGVwX3N0 YWNrX2ZyYW1lX2lkOworICB0cC0+c3RlcF9zdGFja19wcmV2X2ZyYW1lX2lk ID0gaW5mX3N0YXR1cy0+c3RlcF9zdGFja19wcmV2X2ZyYW1lX2lkOwogICB0 cC0+c3RlcF9vdmVyX2NhbGxzID0gaW5mX3N0YXR1cy0+c3RlcF9vdmVyX2Nh bGxzOwogICBzdG9wX2FmdGVyX3RyYXAgPSBpbmZfc3RhdHVzLT5zdG9wX2Fm dGVyX3RyYXA7CiAgIGluZi0+c3RvcF9zb29uID0gaW5mX3N0YXR1cy0+c3Rv cF9zb29uOwo= --000e0cd2a0a800776b046e1a4996--