From: Joel Brobecker <brobecker@adacore.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Mark Kettenis <mark.kettenis@xs4all.nl>, gdb-patches@sourceware.org
Subject: Re: [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 #3
Date: Fri, 30 Dec 2011 08:46:00 -0000 [thread overview]
Message-ID: <20111230033020.GA20473@adacore.com> (raw)
In-Reply-To: <20111229231251.GA27794@host2.jankratochvil.net>
> As ON_STACK is a valid option sure one may prefer to convert all the
> archs to ON_STACK instead of fixing AT_ENTRY_POINT; not preferred by
> me TBH.
I don't understand why, though. ON_STACK seems to be perfect, as
we control exactly what's there, and we know we're not going to
interfere with the rest of the code.
Are there any situation where ON_STACK wouldn't be possible? I know
that on some architectures such as VxWorks, where objfiles are
already loaded in memory, and where memory is shared by all
processes[1], there is no concept of "entry point".
I have put in my TODO list to see if I can get rid of the last
use of AT_SYMBOL (in mips-tdep.c) and convert it to ON_STACK.
> 2011-12-30 Jan Kratochvil <jan.kratochvil@redhat.com>
>
> Fix regression for gdb.cp/gdb2495.exp with gcc-4.7.
> * arch-utils.c (displaced_step_at_entry_point): Incrase BP_LEN skip to
> 3 times.
> * infcall.c (call_function_by_hand) <AT_SYMBOL>: Move it upwards and
> fall through into AT_ENTRY_POINT.
> (call_function_by_hand) <AT_ENTRY_POINT>: New variable bp_len. Adjust
> DUMMY_ADDR with it.
> * ppc-linux-tdep.c (ppc_linux_displaced_step_location): Increase
> PPC_INSN_SIZE skip to 3 times.
I keep staring at the diff, and I can't figure out how the AT_SYMBOL
case is falling through, or why it would be necessary. The lack of
understading why is probably related to the fact that I may still
have an incorrect understanding of the situation.
I think that either way, it's better to have the dummy calling
address at a location where there is no unwinding information.
ON_STACK seems to be a better place to guaranty that. But that
being said, making sure that, for AT_ENTRY_POINT, the dummy
calling address is indeed our entry point cannot make things
worse.
> dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch,
> dummy_addr,
> ¤t_target);
> + /* A call dummy always consists of just a single breakpoint,
> + so it's address is the same as the address of the dummy. */
^^^
its
> + }
> + /* FALLTHROUGH */
> + case AT_ENTRY_POINT:
Is this really a FALLTHROUGH?
> + Therefore, we use the second byte (approximately,
> + alignments depending on GDBARCH). It does not matter if it
> + is placed inside the very first instruction, nothing tries
> + to execute it. */
I can't remember if you explicitly decided to use the second byte
and then changed your mind, or whether this is a typo from the fact
that the breakpoint instruction on x86 is 1 byte long? Suggest
replacing with:
Therefore, we adjust the return address by the length
of a breakpoint, guaranteeing that the unwinder finds
the correct function as the caller.
--
Joel
next prev parent reply other threads:[~2011-12-30 3:30 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-22 20:49 [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 Jan Kratochvil
2011-12-27 6:23 ` Joel Brobecker
2011-12-28 16:30 ` Jan Kratochvil
2011-12-28 18:47 ` [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 #2 Jan Kratochvil
2011-12-28 20:40 ` Mark Kettenis
2011-12-30 2:45 ` [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 #3 Jan Kratochvil
2011-12-30 8:46 ` Joel Brobecker [this message]
2011-12-30 11:11 ` Mark Kettenis
2011-12-30 14:16 ` Jan Kratochvil
2011-12-31 2:56 ` Peter Schauer
2011-12-30 11:25 ` Jan Kratochvil
2012-01-01 22:22 ` Jan Kratochvil
2012-01-02 2:45 ` Joel Brobecker
2012-01-02 2:58 ` Jan Kratochvil
2012-01-03 14:45 ` Regression on PowerPC (Re: [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 #3) Ulrich Weigand
2012-01-03 15:52 ` Joel Brobecker
2012-01-04 14:01 ` [revert] " Jan Kratochvil
2012-01-04 14:09 ` Joel Brobecker
2012-03-08 23:24 ` [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 #4 [Re: [revert] Regression on PowerPC] Jan Kratochvil
2012-03-09 7:22 ` cancel: " Jan Kratochvil
2012-01-02 14:10 ` [patch] Fix gdb.cp/gdb2495.exp regression with gcc-4.7 Pedro Alves
2012-01-02 14:20 ` Jan Kratochvil
2012-01-02 14:44 ` Pedro Alves
2012-01-02 14:53 ` Jan Kratochvil
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=20111230033020.GA20473@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=jan.kratochvil@redhat.com \
--cc=mark.kettenis@xs4all.nl \
/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