This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: SKIP_PROLOGUE() and prologue insn scheduling


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]