public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Carl Love <cel@us.ibm.com>
To: Bruno Larsen <blarsen@redhat.com>, cel@us.ibm.com
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	Ulrich Weigand <Ulrich.Weigand@de.ibm.com>,
	Will Schmidt <will_schmidt@vnet.ibm.com>
Subject: RE: Question: [PATCH] Change calculation of frame_id by amd64 epilogue unwinder
Date: Wed, 02 Nov 2022 08:36:51 -0700	[thread overview]
Message-ID: <b717128d967cd09ead03d6860cd96187c1ed1b87.camel@us.ibm.com> (raw)
In-Reply-To: <d5900bd0-72da-3ae7-53c4-04d153381a5a@redhat.com>

Bruno:
> 
> The idea of the patch looks fine, I just have a few style nits
> inlined.
> 
> > ---
> >   .../gdb.base/unwind-on-each-insn.exp          | 25
> > +++++++++++++++++--
> >   1 file changed, 23 insertions(+), 2 deletions(-)
> > 
> > diff --git a/gdb/testsuite/gdb.base/unwind-on-each-insn.exp
> > b/gdb/testsuite/gdb.base/unwind-on-each-insn.exp
> > index 3b48805cff8..c908a4b838e 100644
> > --- a/gdb/testsuite/gdb.base/unwind-on-each-insn.exp
> > +++ b/gdb/testsuite/gdb.base/unwind-on-each-insn.exp
> > @@ -41,7 +41,6 @@ if ![runto_main] then {
> >   proc get_sp_and_fba { testname } {
> >       with_test_prefix "get \$sp and frame base $testname" {
> >   	set sp [get_hexadecimal_valueof "\$sp" "*UNKNOWN*"]
> > -
> >   	set fba ""
> >   	gdb_test_multiple "info frame" "" {
> >   	    -re -wrap ".*Stack level ${::decimal}, frame at
> > ($::hex):.*" {
> > @@ -75,6 +74,23 @@ gdb_continue_to_breakpoint "enter foo"
> >   
> >   # Figure out the range of addresses covered by this function.
> >   set last_addr_in_foo ""
> > +
> > +# The disassembly of foo on PowerPC looks like:
> > +#     Dump of assembler code for function foo:
> > +#  => 0x00000000100006dc <+0>:     std     r31,-8(r1)
> > +#     0x00000000100006e0 <+4>:     stdu    r1,-48(r1)
> > +#     0x00000000100006e4 <+8>:     mr      r31,r1
> > +#     0x00000000100006e8 <+12>:    nop
> > +#     0x00000000100006ec <+16>:    addi    r1,r31,48
> > +#     0x00000000100006f0 <+20>:    ld      r31,-8(r1)
> > +#     0x00000000100006f4 <+24>:    blr
> > +#     0x00000000100006f8 <+28>:    .long 0x0
> > +#     0x00000000100006fc <+32>:    .long 0x0
> > +#     0x0000000010000700 <+36>:    .long 0x1000180
> > +#     End of assembler dump.
> > +#
> > +# The last instruction in function foo is blr.  Ignore the .long
> > +# entries following the blr instruction.
> >   gdb_test_multiple "disassemble foo" "" {
> >       -re "^disassemble foo\r\n" {
> >   	exp_continue
> > @@ -84,7 +100,11 @@ gdb_test_multiple "disassemble foo" "" {
> >   	exp_continue
> >       }
> >   
> > -    -re "^...($hex) \[^\r\n\]+\r\n" {
> > +    -re "^...($hex) \[<>+0-9:\s\t\]*\.long\[\s\t\]*\[^\r\n\]*\r\n" 
> > {
> 
> I wonder if this pattern is unnecessarily strict. Correct me if I'm 
> wrong, but I think that no architecture has an instruction that
> starts 
> with a .  so this pattern could probably be simplified to
> 
> ^...($hex) \[<>+0-9:\s\t\]*\.[^\r\n\]*\r\n

> 
> And no other architectures would have a similar problem in the
> future.
> 
> I'm not very knowledgeable on assembly so you may know better in this
> area.

I do not know of any architectures that have a dot at the beginning of
an instruction name.  So yes the pattern could be changed as suggested.
That will require changing the above comment as well to make it clear
we are skipping any "instruction" that starts with a dot, such as
.long.  
> 
> > +	exp_continue
> > +    }
> > +
> > +    -re "^...($hex)\[^\r\n\]+\r\n" {
> You removed a space here, which makes no difference in the pattern
> and 
> makes the diff more confusing

My bad, that was not intentional. I was too focused on the above change
and didn't notice the accidental dings to the code.  Sorry.

> >   	set last_addr_in_foo $expect_out(1,string)
> >   	exp_continue
> >       }
> > @@ -137,6 +157,7 @@ for { set i_count 1 } { true } { incr i_count }
> > {
> >   	gdb_test "frame 0" ".*"
> >   
> >   	set pc [get_hexadecimal_valueof "\$pc" "*UNKNOWN*"]
> > +
> Unnecessary new line here.
Ditto, unintentional change

I will undo the unintentional changes and update the needed
pattern/comment and post the patch for review.  Thanks for the help.

               Carl 


  reply	other threads:[~2022-11-02 15:36 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-31 20:16 Carl Love
2022-11-01 10:20 ` Bruno Larsen
2022-11-01 19:51   ` Carl Love
2022-11-02 10:08     ` Bruno Larsen
2022-11-02 15:36       ` Carl Love [this message]
2022-11-02 15:59         ` Carl Love

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b717128d967cd09ead03d6860cd96187c1ed1b87.camel@us.ibm.com \
    --to=cel@us.ibm.com \
    --cc=Ulrich.Weigand@de.ibm.com \
    --cc=blarsen@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=will_schmidt@vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).