public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
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."

  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).