From: Andreas Schwab <schwab@suse.de>
To: Steven Munroe <munroesj@us.ibm.com>
Cc: libc-hacker@sources.redhat.com, Alan Modra <amodra@bigpond.net.au>
Subject: Re: [PATCH] PPC32 cfi update part3
Date: Sun, 13 Aug 2006 09:43:00 -0000 [thread overview]
Message-ID: <jeejvlkm2m.fsf@sykes.suse.de> (raw)
In-Reply-To: <je8xltm4qg.fsf@sykes.suse.de> (Andreas Schwab's message of "Sun, 13 Aug 2006 10:15:03 +0200")
Andreas Schwab <schwab@suse.de> writes:
> Steven Munroe <munroesj@us.ibm.com> writes:
>
>> * sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_runtime_resolve,
>> _dl_profile_resolve): Add CFI directives for stack and LR save.
>> Save LR in LRSAVE of previous frame per ABI.
>
> This breaks profiling. The caller of _mcount is supposed to store LR in
> LRSAVE, and _mcount restores it from there, but LRSAVE gets clobbered by
> the trampoline.
Here is a patch that unbreaks it.
Andreas.
2006-08-13 Andreas Schwab <schwab@suse.de>
* sysdeps/powerpc/powerpc32/dl-trampoline.S (_dl_runtime_resolve):
Don't clobber caller's LRSAVE.
(_dl_prof_resolve): Likewise.
--- sysdeps/powerpc/powerpc32/dl-trampoline.S 22 Jan 2006 13:45:52 +0100 1.5
+++ sysdeps/powerpc/powerpc32/dl-trampoline.S 13 Aug 2006 10:31:04 +0200
@@ -40,8 +40,9 @@ _dl_runtime_resolve:
mflr r0
# We also need to save some of the condition register fields
stw r7,32(r1)
- stw r0,68(r1)
- cfi_offset (lr, 4)
+ # Don't clobber the caller's LRSAVE, it is needed by _mcount.
+ stw r0,48(r1)
+ cfi_offset (lr, -16)
stw r8,36(r1)
mfcr r0
stw r9,40(r1)
@@ -51,7 +52,7 @@ _dl_runtime_resolve:
# 'fixup' returns the address we want to branch to.
mtctr r3
# Put the registers back...
- lwz r0,68(r1)
+ lwz r0,48(r1)
lwz r10,44(r1)
lwz r9,40(r1)
mtlr r0
@@ -128,8 +129,9 @@ _dl_prof_resolve:
mflr r5
# We also need to save some of the condition register fields.
stw r7,32(r1)
- stw r5,324(r1)
- cfi_offset (lr, 4)
+ # Don't clobber the caller's LRSAVE, it is needed by _mcount.
+ stw r5,308(r1)
+ cfi_offset (lr, -12)
stw r8,36(r1)
mfcr r0
stw r9,40(r1)
@@ -154,7 +156,7 @@ _dl_prof_resolve:
# 'fixup' returns the address we want to branch to.
mtctr r3
# Put the registers back...
- lwz r0,324(r1)
+ lwz r0,308(r1)
lwz r10,44(r1)
lwz r9,40(r1)
mtlr r0
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, MaxfeldstraÃe 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
next prev parent reply other threads:[~2006-08-13 9:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-04 23:53 Steven Munroe
2006-01-07 3:58 ` Ulrich Drepper
2006-08-13 8:15 ` Andreas Schwab
2006-08-13 9:43 ` Andreas Schwab [this message]
2006-08-14 22:20 ` Ulrich Drepper
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=jeejvlkm2m.fsf@sykes.suse.de \
--to=schwab@suse.de \
--cc=amodra@bigpond.net.au \
--cc=libc-hacker@sources.redhat.com \
--cc=munroesj@us.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).