Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@imgtec.com>
To: Ulrich Weigand <uweigand@de.ibm.com>, Yao Qi <qiyaoltc@gmail.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [RFC 2/3] Record function descriptor address instead of function address in value
Date: Tue, 18 Oct 2016 02:27:00 -0000	[thread overview]
Message-ID: <alpine.DEB.2.00.1610180255070.31859@tp.orcam.me.uk> (raw)
In-Reply-To: <20161017155133.A9B8711C257@oc8523832656.ibm.com>

On Mon, 17 Oct 2016, Ulrich Weigand wrote:

> > This patch brings several user visible changes, which look more
> > accurate, shown by this table below,
> > 
> >  COMMAND           BEFORE                       AFTER
> >  p main            main function address        main function descriptor
> >                                                 address
> >  disass main       disassembly function main    not changed
> >  disass main+4,+4  disassembly 4 bytes from     disassembly 4 bytes from
> >                    function main address + 4    main's function descriptor + 4
> >  x/i main          show one instruction on      show one instruction on main's
> >                    function main address        function descriptor

 What about `info address main'?

> > Although the latter looks inconvenient, that is consistent to the
> > meaning on C language level.  Due to these changes, test cases are
> > adjusted accordingly.
> 
> Those are a bit annoying.  I think the underlying problem is that operations
> like "disass" or "x/i" really don't work on "values" in the original sense
> but rather on "PC addresses".  Maybe it would make sense to have those
> function enable a special "mode" in the expression evaluator that would
> change the conversion of functions to function pointers to use the code
> address instead of the descriptor address?

 Agreed.  I'd keep `disass main+4,+4' and `x/i main' (or `x/x main', etc., 
for that matter) as they are now and consistent with `disass main', if 
possible.  These would indeed have to be special as we don't actually want 
to see the ISA bit set in instruction addresses in disassembly either, as 
they are interpreted as memory data rather than execution addresses there.

 For descriptor access, which may undoubtedly be useful sometimes I'd 
suggest using `disass &main+4,+4' and `x/i &main', which would be 
consistent with the interpretation of function pointers elsewhere (of 
course `p main' and `p &main' would roughly be equivalent).  Thoughts?

 Overall I like the proposal and if this goes forward I will see if we can 
adapt the MIPS backend to use this approach as well, addressing the issues 
we still have remaining, such as confusing instruction addresses and wrong 
instruction data shown with `disass /r'.  We have a little complication in 
that we have the ISA bit set in line information, so that would have to be 
stripped in DWARF record processing, but it should be much easier to do 
with a single hook in place than the complicated processing now required 
to copy ISA bit annotation from the symbol table (msymbols), the hooks to 
handle which we'll then be able to drop from our DWARF machinery.

 Thanks, Yao; also for your persistence with addressing this general issue 
in response to my previous critical comments!

  Maciej


  reply	other threads:[~2016-10-18  2:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-14 10:53 [PATCH 0/3] Fix gdb.base/func-ptrs.exp fails in ppc64 and arm thumb mode Yao Qi
2016-10-14 10:53 ` [RFC 2/3] Record function descriptor address instead of function address in value Yao Qi
2016-10-14 17:35   ` Simon Marchi
2016-10-17 11:40     ` Yao Qi
2016-10-17 15:40       ` Simon Marchi
2016-10-17 15:51   ` Ulrich Weigand
2016-10-18  2:27     ` Maciej W. Rozycki [this message]
2016-10-18 13:03       ` Yao Qi
2016-10-28 16:20       ` Yao Qi
2017-10-03 18:12         ` Maciej W. Rozycki
2017-10-04 21:25           ` Yao Qi
2016-10-28 16:10     ` Yao Qi
2016-10-28 18:41       ` Ulrich Weigand
2016-10-14 10:53 ` [PATCH 1/3] Use get_var_address in test cases Yao Qi
2016-10-14 10:53 ` [RFC 3/3] Update " Yao Qi

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=alpine.DEB.2.00.1610180255070.31859@tp.orcam.me.uk \
    --to=macro@imgtec.com \
    --cc=gdb-patches@sourceware.org \
    --cc=qiyaoltc@gmail.com \
    --cc=uweigand@de.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