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
next prev parent 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