This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: SKIP_PROLOGUE() and prologue insn scheduling
- To: "J.T. Conklin" <jtc at redback dot com>
- Subject: Re: SKIP_PROLOGUE() and prologue insn scheduling
- From: Daniel Jacobowitz <dmj+ at andrew dot cmu dot edu>
- Date: Tue, 17 Jul 2001 16:31:26 -0700
- Cc: gdb at sourceware dot cygnus dot com
- References: <5msnfv9nsp.fsf@orac.redback.com>
On Tue, Jul 17, 2001 at 03:46:30PM -0700, J.T. Conklin wrote:
> A coworker asked me what the prefered behavior of the SKIP_PROLOGUE()
> macro when the compiler schedules the function prologue in with user
> insns. I didn't have a good answer and the internals documentation
> doesn't address this, so I'm shooting the question to the list.
>
> The choice is whether SKIP_PROLOGUE() returns:
> 1) 1st user insn even though more prologue insns remain?
> 2) 1st user insn after final prologue insn?
>
> Of these two, I think #1 is the most conservative choice. However,
> gdb may may not be able to print function arguments correctly until
> the user steps beyond the remainder of the prologue. While #2 does
> not have that problem, having user insns execute as part of the
> prologue could also be confusing --- Especially those that have
> observable side effects (e.g. writes to a memory mapped device).
>
> What is the common wisdom? At the very least, I think we need to
> flesh out this issue in the internals document.
IMO, #1 is the way to go. It's regrettable in that a whole lot of
tests start failing, since we will display arguments wrong. But if the
prologue is being scheduled, it's possible to schedule part of the
prologue on the interior of a large if statement (which encompasses the
rest of the body of the function, say). If we do #2, we may never stop
in the function at all.
--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer