[PATCH] PPC32 cfi update part3
Andreas Schwab
schwab@suse.de
Sun Aug 13 09:43:00 GMT 2006
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."
More information about the Libc-hacker
mailing list