From: Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>
To: Wu Zhou <woodzltc@cn.ibm.com>
Cc: gdb@sourceware.org
Subject: Re: a question about rs6k's prologue analysis
Date: Wed, 11 Oct 2006 10:47:00 -0000 [thread overview]
Message-ID: <1160563558.5061.15.camel@localhost.localdomain> (raw)
In-Reply-To: <452CC397.5050304@cn.ibm.com>
I am guessing a bit but you could use it for "milli" calls to functions
to save callee save registers ? Was this done on the PowerPC at any
time ?
If it is in the first 3 instructions then maybe its a milli-call and you
might have other instructions in the prologue after that.
My 10 paise.
cheers
-Ramana
On Wed, 2006-10-11 at 18:12 +0800, Wu Zhou wrote:
> In function skip_prologue of rs6000-tdep.c, when it finds an instruction like "bl foo", and that it
> is not within the first three instructions of the prologue, the prologue analysis will stop.
>
> else if ((op & 0xfc000001) == 0x48000001)
> { /* bl foo,
> to save fprs??? */
>
> fdata->frameless = 0;
> /* Don't skip over the subroutine call if it is not within
> the first three instructions of the prologue. */
> if ((pc - fdata->func_start) > 8)
> break;
> ....
> }
>
> Any specific reason for this?
>
> I encountered some prologue code like this:
>
> 61a0: 7c 08 02 a6 mflr r0
> 61a4: 94 21 ff f0 stwu r1,-16(r1)
> 61a8: 93 e1 00 0c stw r31,12(r1)
> 61ac: 48 01 8a 81 bl 1ec2c <__JCR_END__+0x4>
> 61b0: 7f e8 02 a6 mflr r31
> 61b4: 90 01 00 14 stw r0,20(r1)
>
> In the first instruction, lr is saved in r0, its content is saved on stack at the last instruction.
> But between these two instruction, a "bl foo" instruction exists, which make skip_prologue return.
> In this scenario, gdb won't have any way to know where lr is saved on the stack. This might make the
> backtrace loops at this point.
>
> Could it be possible that we delete this conditional statement? I guess this will only make
> prologue analysis get a little longer. Any other impact?
>
> Or that some changes in the compiler's side is needed? But now that these code are already there,
> and it also seems that they work ok, I guess it is not very easy for compiler to change that.
>
> Any insight? Thanks a lot!
>
> Regards
> - Wu Zhou
--
Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>
Codito Technologies Pvt. Ltd.
next prev parent reply other threads:[~2006-10-11 10:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-11 10:13 Wu Zhou
2006-10-11 10:47 ` Ramana Radhakrishnan [this message]
2006-10-11 13:53 ` Daniel Jacobowitz
2006-10-11 16:22 ` Joel Brobecker
2006-10-12 3:59 ` Wu Zhou
2006-10-13 4:13 ` Wu Zhou
2006-10-13 19:09 ` Michael Snyder
2006-10-13 22:03 ` Daniel Jacobowitz
2006-10-14 15:18 ` Wu Zhou
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=1160563558.5061.15.camel@localhost.localdomain \
--to=ramana.radhakrishnan@codito.com \
--cc=gdb@sourceware.org \
--cc=woodzltc@cn.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