* [PATCH] PPC32 cfi update part3
@ 2006-01-04 23:53 Steven Munroe
2006-01-07 3:58 ` Ulrich Drepper
2006-08-13 8:15 ` Andreas Schwab
0 siblings, 2 replies; 5+ messages in thread
From: Steven Munroe @ 2006-01-04 23:53 UTC (permalink / raw)
To: libc-hacker, Alan Modra
[-- Attachment #1: Type: text/plain, Size: 343 bytes --]
Removed the cfi directives from the epilogue and used DW_CFA_same_value
to indicate when LR is restored from the tmp register as Alan Modra
suggested. I found that binutils 2.15 implemented .cfi_same_value but
the cfi_same_value was not defined by ./sysdeps/generic/sysdep.h so I
added that macro. I think this is better than .cfi_escape.
[-- Attachment #2: ppc32-cfi-20060103.txt --]
[-- Type: text/plain, Size: 37194 bytes --]
2006-01-03 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/generic/sysdep.h (cfi_same_value): Define macro.
* 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.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Add CFI directives
for LR save.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Add CFI directive
for stack.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Add CFI directives
for stack and LR save. Don't use negative stack addressing.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Add CFI directive
for LR save to register.
* sysdeps/powerpc/powerpc32/lshift.S: Add CFI directive for LR save.
* sysdeps/powerpc/powerpc32/ppc-mcount.S: Add CFI directives for stack
and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Add CFI directive
for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Add CFI directive
for stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S:
Add CFI directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
(__makecontext, __novec_makecontext): Add CFI directive for LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
Add CFI directives for stack and LR save.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
Add CFI directives for stack and LR save.
diff -urN libc24-cvstip-20060103/sysdeps/generic/sysdep.h libc24/sysdeps/generic/sysdep.h
--- libc24-cvstip-20060103/sysdeps/generic/sysdep.h 2003-08-31 12:21:03.000000000 -0500
+++ libc24/sysdeps/generic/sysdep.h 2006-01-04 16:23:38.357222576 -0600
@@ -60,6 +60,7 @@
# define cfi_register(r1, r2) .cfi_register r1, r2
# define cfi_return_column(reg) .cfi_return_column reg
# define cfi_restore(reg) .cfi_restore reg
+# define cfi_same_value(reg) .cfi_same_value reg
# define cfi_undefined(reg) .cfi_undefined reg
# define cfi_remember_state .cfi_remember_state
# define cfi_restore_state .cfi_restore_state
@@ -76,6 +77,7 @@
# define cfi_register(r1, r2)
# define cfi_return_column(reg)
# define cfi_restore(reg)
+# define cfi_same_value(reg)
# define cfi_undefined(reg)
# define cfi_remember_state
# define cfi_restore_state
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/dl-trampoline.S libc24/sysdeps/powerpc/powerpc32/dl-trampoline.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/dl-trampoline.S 2005-07-06 21:34:56.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/dl-trampoline.S 2006-01-03 14:44:31.000000000 -0600
@@ -1,5 +1,5 @@
/* PLT trampolines. PPC32 version.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -24,9 +24,11 @@
.globl _dl_runtime_resolve
.type _dl_runtime_resolve,@function
_dl_runtime_resolve:
+ cfi_startproc
# We need to save the registers used to pass parameters, and register 0,
# which is used by _mcount; the registers are saved in a stack frame.
stwu r1,-64(r1)
+ cfi_adjust_cfa_offset (64)
stw r0,12(r1)
stw r3,16(r1)
stw r4,20(r1)
@@ -38,7 +40,8 @@
mflr r0
# We also need to save some of the condition register fields
stw r7,32(r1)
- stw r0,48(r1)
+ stw r0,68(r1)
+ cfi_offset (lr, 4)
stw r8,36(r1)
mfcr r0
stw r9,40(r1)
@@ -48,7 +51,7 @@
# 'fixup' returns the address we want to branch to.
mtctr r3
# Put the registers back...
- lwz r0,48(r1)
+ lwz r0,68(r1)
lwz r10,44(r1)
lwz r9,40(r1)
mtlr r0
@@ -64,6 +67,7 @@
# ...unwind the stack frame, and jump to the PLT entry we updated.
addi r1,r1,64
bctr
+ cfi_endproc
.size _dl_runtime_resolve,.-_dl_runtime_resolve
#ifndef PROF
@@ -71,9 +75,11 @@
.globl _dl_prof_resolve
.type _dl_prof_resolve,@function
_dl_prof_resolve:
+ cfi_startproc
# We need to save the registers used to pass parameters, and register 0,
# which is used by _mcount; the registers are saved in a stack frame.
stwu r1,-320(r1)
+ cfi_adjust_cfa_offset (320)
/* Stack layout:
+312 stackframe
@@ -122,7 +128,8 @@
mflr r5
# We also need to save some of the condition register fields.
stw r7,32(r1)
- stw r5,308(r1)
+ stw r5,324(r1)
+ cfi_offset (lr, 4)
stw r8,36(r1)
mfcr r0
stw r9,40(r1)
@@ -147,7 +154,7 @@
# 'fixup' returns the address we want to branch to.
mtctr r3
# Put the registers back...
- lwz r0,308(r1)
+ lwz r0,324(r1)
lwz r10,44(r1)
lwz r9,40(r1)
mtlr r0
@@ -172,5 +179,6 @@
# ...unwind the stack frame, and jump to the PLT entry we updated.
addi r1,r1,320
bctr
+ cfi_endproc
.size _dl_prof_resolve,.-_dl_prof_resolve
#endif
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S libc24/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2005-12-29 16:00:03.000000000 -0600
+++ libc24/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2006-01-04 16:24:55.741304784 -0600
@@ -1,5 +1,5 @@
/* longjmp for PowerPC.
- Copyright (C) 1995-99, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-99, 2000, 2003-2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#define _ASM
@@ -34,6 +34,7 @@
#ifndef __NO_VMX__
# ifdef PIC
mflr r6
+ cfi_register (lr,r6)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
@@ -46,10 +47,12 @@
# ifdef SHARED
lwz r5,_rtld_global_ro@got(r5)
mtlr r6
+ cfi_same_value (lr)
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
# else
lwz r5,_dl_hwcap@got(r5)
mtlr r6
+ cfi_same_value (lr)
lwz r5,0(r5)
# endif
# else
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_ceil.S libc24/sysdeps/powerpc/powerpc32/fpu/s_ceil.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_ceil.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_ceil.S 2006-01-04 16:51:40.184258272 -0600
@@ -1,5 +1,5 @@
/* ceil function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -29,19 +29,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S libc24/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_ceilf.S 2006-01-04 16:51:04.184273168 -0600
@@ -1,5 +1,5 @@
/* float ceil function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -29,19 +29,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_copysign.S libc24/sysdeps/powerpc/powerpc32/fpu/s_copysign.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2005-05-26 09:30:44.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2006-01-03 14:33:01.000000000 -0600
@@ -1,5 +1,5 @@
/* Copy a sign bit between floating-point values.
- Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
/* This has been coded in assembler because GCC makes such a mess of it
when it's coded in C. */
@@ -27,6 +27,7 @@
copysign(x,y) returns a value with the magnitude of x and
with the sign bit of y. */
stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
stfd fp2,8(r1)
lwz r3,8(r1)
cmpwi r3,0
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_floor.S libc24/sysdeps/powerpc/powerpc32/fpu/s_floor.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_floor.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_floor.S 2006-01-04 16:50:35.808195280 -0600
@@ -1,5 +1,5 @@
/* Floor function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -29,19 +29,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_floorf.S libc24/sysdeps/powerpc/powerpc32/fpu/s_floorf.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_floorf.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_floorf.S 2006-01-04 16:50:01.033289520 -0600
@@ -1,5 +1,5 @@
/* float Floor function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -29,19 +29,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_lround.S libc24/sysdeps/powerpc/powerpc32/fpu/s_lround.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2005-11-18 16:48:11.000000000 -0600
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2006-01-04 16:47:06.554187376 -0600
@@ -1,5 +1,5 @@
/* lround function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -39,8 +39,11 @@
to the integer value. */
ENTRY (__lround)
+ stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
@@ -52,6 +55,7 @@
lwz r9,.LC0@got(10)
# endif
mtlr r11
+ cfi_same_value (lr)
lfs fp12,0(r9)
#else
lis r9,.LC0@ha
@@ -68,11 +72,12 @@
fadd fp1,fp1,fp10 /* x+= 0.5; */
.L9:
fctiwz fp2,fp1 /* Convert To Integer DW lround toward 0. */
- stfd fp2,-8(r1)
+ stfd fp2,8(r1)
nop /* Ensure the following load is in a different dispatch */
nop /* group to avoid pipe stall on POWER4&5. */
nop
- lwz r3,-4(r1)
+ lwz r3,12(r1)
+ addi r1,r1,16
blr
.L4:
fsub fp1,fp1,fp10 /* x-= 0.5; */
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_rint.S libc24/sysdeps/powerpc/powerpc32/fpu/s_rint.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_rint.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_rint.S 2006-01-04 16:48:53.753266872 -0600
@@ -1,5 +1,5 @@
/* Round to int floating-point values. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
/* This has been coded in assembler because GCC makes such a mess of it
when it's coded in C. */
@@ -31,19 +31,20 @@
ENTRY (__rint)
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_rintf.S libc24/sysdeps/powerpc/powerpc32/fpu/s_rintf.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_rintf.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_rintf.S 2006-01-04 16:52:47.783233736 -0600
@@ -1,5 +1,5 @@
/* Round float to int floating-point values. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -28,19 +28,20 @@
ENTRY (__rintf)
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_round.S libc24/sysdeps/powerpc/powerpc32/fpu/s_round.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_round.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_round.S 2006-01-04 16:54:26.166187832 -0600
@@ -1,5 +1,5 @@
/* round function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -41,6 +41,7 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
@@ -52,6 +53,7 @@
lwz r9,.LC0@got(10)
# endif
mtlr r11
+ cfi_same_value (lr)
lfs fp13,0(r9)
#else
lis r9,.LC0@ha
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_roundf.S libc24/sysdeps/powerpc/powerpc32/fpu/s_roundf.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2006-01-04 16:55:17.254275688 -0600
@@ -1,5 +1,5 @@
/* roundf function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -41,6 +41,7 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
@@ -52,6 +53,7 @@
lwz r9,.LC0@got(10)
# endif
mtlr r11
+ cfi_same_value (lr)
lfs fp13,0(r9)
#else
lis r9,.LC0@ha
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_trunc.S libc24/sysdeps/powerpc/powerpc32/fpu/s_trunc.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_trunc.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_trunc.S 2006-01-04 16:55:56.086230088 -0600
@@ -1,5 +1,5 @@
/* trunc function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -36,19 +36,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_truncf.S libc24/sysdeps/powerpc/powerpc32/fpu/s_truncf.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/s_truncf.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/fpu/s_truncf.S 2006-01-04 16:57:11.541207592 -0600
@@ -1,5 +1,5 @@
/* truncf function. PowerPC32 version.
- Copyright (C) 2004 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
@@ -36,19 +36,20 @@
mffs fp11 /* Save current FPU rounding mode. */
#ifdef SHARED
mflr r11
+ cfi_register(lr,r11)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r9
addis r9,r9,.LC0-1b@ha
- mtlr r11
lfs fp13,.LC0-1b@l(r9)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r10
lwz r9,.LC0@got(10)
- mtlr r11
lfs fp13,0(r9)
# endif
+ mtlr r11
+ cfi_same_value (lr)
#else
lis r9,.LC0@ha
lfs fp13,.LC0@l(r9)
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S libc24/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2005-12-30 15:02:52.000000000 -0600
+++ libc24/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2006-01-04 16:59:17.610213128 -0600
@@ -1,5 +1,5 @@
/* setjmp for PowerPC.
- Copyright (C) 1995-2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1995-2000, 2003-2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 1 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#define _ASM
@@ -85,6 +85,7 @@
#ifndef __NO_VMX__
# ifdef PIC
mflr r6
+ cfi_register(lr,r6)
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
@@ -94,13 +95,13 @@
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5
# endif
+ mtlr r6
+ cfi_same_value (lr)
# ifdef SHARED
lwz r5,_rtld_global_ro@got(r5)
- mtlr r6
lwz r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
# else
lwz r5,_dl_hwcap@got(r5)
- mtlr r6
lwz r5,0(r5)
# endif
# else
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/lshift.S libc24/sysdeps/powerpc/powerpc32/lshift.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/lshift.S 2002-09-05 03:31:33.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/lshift.S 2006-01-04 17:01:17.004302136 -0600
@@ -1,5 +1,5 @@
/* Shift a limb left, low level routine.
- Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2000, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#include <bp-sym.h>
@@ -67,6 +67,7 @@
/* We imitate a case statement, by using (yuk!) fixed-length code chunks,
of size 4*12 bytes. We have to do this (or something) to make this PIC. */
L(big): mflr r9
+ cfi_register(lr,r9)
bltl- cr0,L(boom) # Never taken, only used to set LR.
slwi r10,r6,4
mflr r12
@@ -75,7 +76,8 @@
add r10,r8,r10
mtctr r10
addi r5,r5,-1
- mtlr r9
+ mtlr r9
+ cfi_same_value (lr)
bctr
L(end2):slw r0,r10,r6
diff -urN libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/ppc-mcount.S libc24/sysdeps/powerpc/powerpc32/ppc-mcount.S
--- libc24-cvstip-20060103/sysdeps/powerpc/powerpc32/ppc-mcount.S 2005-06-17 18:03:48.000000000 -0500
+++ libc24/sysdeps/powerpc/powerpc32/ppc-mcount.S 2006-01-04 11:37:20.426223720 -0600
@@ -1,5 +1,5 @@
/* PowerPC-specific implementation of profiling support.
- Copyright (C) 1997, 1999, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
/* This would be bad. */
#ifdef PROF
@@ -42,6 +42,7 @@
ENTRY(_mcount)
stwu r1,-48(r1)
+ cfi_adjust_cfa_offset (48)
/* We need to save the parameter-passing registers. */
stw r3, 12(r1)
stw r4, 16(r1)
@@ -55,6 +56,7 @@
stw r9, 36(r1)
stw r10,40(r1)
stw r4, 44(r1)
+ cfi_offset (lr, -4)
stw r5, 8(r1)
bl __mcount_internal@local
nop
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S 2005-06-17 18:09:36.000000000 -0500
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S 2006-01-04 13:37:18.634276184 -0600
@@ -1,5 +1,5 @@
/* brk system call for Linux/ppc.
- Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1995-97, 1999, 2000, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#define _ERRNO_H 1
@@ -27,32 +27,34 @@
.section ".text"
ENTRY (BP_SYM (__brk))
DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em */
-
+ mflr r0
stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
stw r3,8(r1)
+ stw r0,20(r1)
+ cfi_offset (lr, 4)
DO_CALL(SYS_ify(brk))
lwz r6,8(r1)
#ifdef PIC
- mflr r4
# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
addis r5,r5,__curbrk-1b@ha
- mtlr r4
stw r3,__curbrk-1b@l(r5)
# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5
lwz r5,__curbrk@got(r5)
- mtlr r4
stw r3,0(r5)
# endif
#else
lis r4,__curbrk@ha
stw r3,__curbrk@l(r4)
#endif
+ lwz r0,20(r1)
cmplw r6,r3
addi r1,r1,16
+ mtlr r0
li r3,0
blelr+
li r3,ENOMEM
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2005-05-21 14:27:08.000000000 -0500
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S 2006-01-04 17:22:01.475263360 -0600
@@ -1,5 +1,5 @@
/* Wrapper around clone system call.
- Copyright (C) 1997,98,99,2000,02,2004 Free Software Foundation, Inc.
+ Copyright (C) 1997,98,99,2000,02,04,2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#define _ERRNO_H 1
@@ -49,6 +49,7 @@
/* Set up stack frame for parent. */
stwu r1,-32(r1)
+ cfi_adjust_cfa_offset (32)
#ifdef RESET_PID
stmw r28,16(r1)
#else
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2005-12-29 15:06:08.000000000 -0600
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2006-01-04 13:38:57.410303696 -0600
@@ -1,5 +1,5 @@
/* Save current context, powerpc32 common.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -40,6 +40,7 @@
#endif
ENTRY(__CONTEXT_FUNC_NAME)
stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
/* Insure that the _UC_REGS start on a quadword boundary. */
stw r3,_FRAME_PARM_SAVE1(r1)
addi r3,r3,_UC_REG_SPACE+12
@@ -55,6 +56,7 @@
stw r0,_UC_GREGS+(PT_LNK*4)(r3)
stw r0,_UC_GREGS+(PT_NIP*4)(r3)
stw r0,_FRAME_LR_SAVE+16(r1)
+ cfi_offset (lr, _FRAME_LR_SAVE)
stw r5,_UC_GREGS+(PT_R5*4)(r3)
stw r6,_UC_GREGS+(PT_R6*4)(r3)
stw r7,_UC_GREGS+(PT_R7*4)(r3)
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2005-05-21 14:27:08.000000000 -0500
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2006-01-04 17:03:37.906183816 -0600
@@ -1,5 +1,5 @@
/* Set up a context to call a function.
- Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -14,8 +14,8 @@
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
+ Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA
+ 02110-1301 USA. */
#include <sysdep.h>
#include <shlib-compat.h>
@@ -49,10 +49,12 @@
/* Set the function's LR to point to the exitcode below. */
#ifdef PIC
mflr r0
+ cfi_register(lr,r0)
bl 1f
1: mflr r6
addi r6,r6,L(exitcode)-1b
mtlr r0
+ cfi_same_value (lr)
#else
lis r6,L(exitcode)@ha
addi r6,r6,L(exitcode)@l
@@ -136,10 +138,12 @@
/* Set the function's LR to point to the exitcode below. */
#ifdef PIC
mflr r0
+ cfi_register(lr,r0)
bl 1f
1: mflr r6
addi r6,r6,L(novec_exitcode)-1b
mtlr r0
+ cfi_same_value (lr)
#else
lis r6,L(novec_exitcode)@ha
addi r6,r6,L(novec_exitcode)@l
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2005-12-29 15:06:54.000000000 -0600
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2006-01-04 13:39:56.521237120 -0600
@@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -41,7 +41,9 @@
ENTRY(__CONTEXT_FUNC_NAME)
mflr r0
stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
stw r0,20(r1)
+ cfi_offset (lr, _FRAME_LR_SAVE)
stw r31,12(r1)
lwz r31,_UC_REGS_PTR(r3)
diff -urN libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S
--- libc24-cvstip-20060103/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2005-12-29 15:07:44.000000000 -0600
+++ libc24/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2006-01-04 17:27:03.600250912 -0600
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -40,6 +40,7 @@
#endif
ENTRY(__CONTEXT_FUNC_NAME)
stwu r1,-16(r1)
+ cfi_adjust_cfa_offset (16)
/* Insure that the _UC_REGS start on a quadword boundary. */
stw r3,_FRAME_PARM_SAVE1(r1)
addi r3,r3,_UC_REG_SPACE+12
@@ -56,6 +57,7 @@
stw r0,_UC_GREGS+(PT_LNK*4)(r3)
stw r0,_UC_GREGS+(PT_NIP*4)(r3)
stw r0,_FRAME_LR_SAVE+16(r1)
+ cfi_offset (lr, _FRAME_LR_SAVE)
stw r5,_UC_GREGS+(PT_R5*4)(r3)
stw r6,_UC_GREGS+(PT_R6*4)(r3)
stw r7,_UC_GREGS+(PT_R7*4)(r3)
@@ -309,13 +311,12 @@
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r7
# endif
+ mtlr r8
# ifdef SHARED
lwz r7,_rtld_global_ro@got(r7)
- mtlr r8
lwz r7,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r7)
# else
lwz r7,_dl_hwcap@got(r7)
- mtlr r8
lwz r7,0(r7)
# endif
# else
@@ -467,7 +468,6 @@
mtcr r5
/* Restore the general registers */
- lwz r1,_UC_GREGS+(PT_R1*4)(r31)
lwz r3,_UC_GREGS+(PT_R3*4)(r31)
lwz r4,_UC_GREGS+(PT_R4*4)(r31)
lwz r5,_UC_GREGS+(PT_R5*4)(r31)
@@ -496,6 +496,7 @@
lwz r28,_UC_GREGS+(PT_R28*4)(r31)
lwz r29,_UC_GREGS+(PT_R29*4)(r31)
lwz r30,_UC_GREGS+(PT_R30*4)(r31)
+ lwz r1,_UC_GREGS+(PT_R1*4)(r31)
lwz r31,_UC_GREGS+(PT_R31*4)(r31)
bctr
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] PPC32 cfi update part3
2006-01-04 23:53 [PATCH] PPC32 cfi update part3 Steven Munroe
@ 2006-01-07 3:58 ` Ulrich Drepper
2006-08-13 8:15 ` Andreas Schwab
1 sibling, 0 replies; 5+ messages in thread
From: Ulrich Drepper @ 2006-01-07 3:58 UTC (permalink / raw)
To: Steven Munroe; +Cc: libc-hacker, Alan Modra
[-- Attachment #1: Type: text/plain, Size: 111 bytes --]
I applied part3&4.
--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] PPC32 cfi update part3
2006-01-04 23:53 [PATCH] PPC32 cfi update part3 Steven Munroe
2006-01-07 3:58 ` Ulrich Drepper
@ 2006-08-13 8:15 ` Andreas Schwab
2006-08-13 9:43 ` Andreas Schwab
1 sibling, 1 reply; 5+ messages in thread
From: Andreas Schwab @ 2006-08-13 8:15 UTC (permalink / raw)
To: Steven Munroe; +Cc: libc-hacker, Alan Modra
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.
Andreas.
--
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."
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] PPC32 cfi update part3
2006-08-13 8:15 ` Andreas Schwab
@ 2006-08-13 9:43 ` Andreas Schwab
2006-08-14 22:20 ` Ulrich Drepper
0 siblings, 1 reply; 5+ messages in thread
From: Andreas Schwab @ 2006-08-13 9:43 UTC (permalink / raw)
To: Steven Munroe; +Cc: libc-hacker, Alan Modra
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."
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] PPC32 cfi update part3
2006-08-13 9:43 ` Andreas Schwab
@ 2006-08-14 22:20 ` Ulrich Drepper
0 siblings, 0 replies; 5+ messages in thread
From: Ulrich Drepper @ 2006-08-14 22:20 UTC (permalink / raw)
To: Andreas Schwab; +Cc: Steven Munroe, libc-hacker, Alan Modra
[-- Attachment #1: Type: text/plain, Size: 181 bytes --]
Andreas Schwab wrote:
> Here is a patch that unbreaks it.
Looks reasonable, applied.
--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-08-14 22:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-04 23:53 [PATCH] PPC32 cfi update part3 Steven Munroe
2006-01-07 3:58 ` Ulrich Drepper
2006-08-13 8:15 ` Andreas Schwab
2006-08-13 9:43 ` Andreas Schwab
2006-08-14 22:20 ` Ulrich Drepper
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).