+2010-02-12 Luis Machado <luisgpm@br.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/dl-machine.h: Removed old PPC_REL16
+ check.
+ * sysdeps/powerpc/powerpc32/dl-machine.h: Likewise.
+ * sysdeps/powerpc/powerpc32/elf/start.S: Likewise.
+ * sysdeps/powerpc/powerpc32/memset.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power5/fpu/w_sqrt.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power5/fpu/w_sqrtf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/configure.in: Fail if R_PPC_REL16
+ is not supported.
+ * sysdeps/powerpc/powerpc32/fpu/s_round.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_floorf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_ceilf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_floor.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_roundf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_rintf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_lround.S: Likewise.
+ * sysdeps/powerpc/powerpc32/fpu/s_rint.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/w_sqrt.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S: Likewise.
+ * sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S: Likewise.
+ * sysdeps/powerpc/powerpc32/dl-start.S: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S: Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S: Likewise.
+
2010-02-12 Alan Modra <amodra@gmail.com>
* elf/tls-macros.h (__TLS_CALL_CLOBBERS <__powerpc__>): Remove r3.
fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_ppc_rel16" >&5
$as_echo "$libc_cv_ppc_rel16" >&6; }
-if test $libc_cv_ppc_rel16 = yes; then
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASM_PPC_REL16 1
-_ACEOF
-
+if test $libc_cv_ppc_rel16 = no; then
+ { { $as_echo "$as_me:$LINENO: error: R_PPC_REL16 is not supported. Binutils is too old." >&5
+$as_echo "$as_me: error: R_PPC_REL16 is not supported. Binutils is too old." >&2;}
+ { (exit 1); exit 1; }; }
fi
# See whether GCC uses -msecure-plt.
libc_cv_ppc_rel16=no
fi
rm -f conftest*])
-if test $libc_cv_ppc_rel16 = yes; then
- AC_DEFINE(HAVE_ASM_PPC_REL16)
+if test $libc_cv_ppc_rel16 = no; then
+ AC_MSG_ERROR(R_PPC_REL16 is not supported. Binutils is too old.)
fi
# See whether GCC uses -msecure-plt.
ppc_got (void)
{
Elf32_Addr *got;
-#ifdef HAVE_ASM_PPC_REL16
+
asm ("bcl 20,31,1f\n"
"1: mflr %0\n"
" addis %0,%0,_GLOBAL_OFFSET_TABLE_-1b@ha\n"
" addi %0,%0,_GLOBAL_OFFSET_TABLE_-1b@l\n"
: "=b" (got) : : "lr");
-#else
- asm (" bl _GLOBAL_OFFSET_TABLE_-4@local"
- : "=l" (got));
-#endif
+
return got;
}
passed by value!). */
/* Put our GOT pointer in r31, */
-#ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r31
addis r31,r31,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r31,r31,_GLOBAL_OFFSET_TABLE_-1b@l
-#else
- bl _GLOBAL_OFFSET_TABLE_-4@local
- mflr r31
-#endif
/* the address of _start in r30, */
mr r30,r3
/* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28. */
ASM_SIZE_DIRECTIVE(L(start_addresses))
.section ".text"
-#if defined PIC && !defined HAVE_ASM_PPC_REL16
-L(start_addressesp):
- .long L(start_addresses)-L(branch)
-#endif
ENTRY(_start)
/* Save the stack pointer, in case we're statically linked under Linux. */
mr r9,r1
start_addresses in r8. Also load the GOT pointer so that new PLT
calls work, like the one to __libc_start_main. */
#ifdef PIC
-# ifdef HAVE_ASM_PPC_REL16
addis r30,r13,_GLOBAL_OFFSET_TABLE_-L(branch)@ha
addis r8,r13,L(start_addresses)-L(branch)@ha
addi r30,r30,_GLOBAL_OFFSET_TABLE_-L(branch)@l
lwzu r13,L(start_addresses)-L(branch)@l(r8)
-# else
- lwz r8,L(start_addressesp)-L(branch)(r13)
- add r8,r13,r8
- lwz r13,0(r8)
-# endif
#else
lis r8,L(start_addresses)@ha
lwzu r13,L(start_addresses)@l(r8)
# ifdef PIC
mflr r6
cfi_register (lr,r6)
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r5
-# endif
# ifdef SHARED
lwz r5,_rtld_global_ro@got(r5)
mtlr r6
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp10,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp10,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
addi r9,r9,.LC0-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
-# endif
mtlr r11
cfi_same_value (lr)
lfs fp13,0(r9)
#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
addi r9,r9,.LC0-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
-# endif
mtlr r11
cfi_same_value (lr)
lfs fp13,0(r9)
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
#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
lfs fp13,.LC0-1b@l(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
- lfs fp13,0(r9)
-# endif
mtlr r11
cfi_same_value (lr)
#else
# ifdef PIC
mflr r6
cfi_register(lr,r6)
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r5
-# endif
mtlr r6
cfi_same_value (lr)
# ifdef SHARED
beq L(medium)
/* Establishes GOT addressability so we can load __cache_line_size
from static. This value was set from the aux vector during startup. */
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr rGOT
addis rGOT,rGOT,__cache_line_size-1b@ha
lwz rCLS,__cache_line_size-1b@l(rGOT)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr rGOT
- lwz rGOT,__cache_line_size@got(rGOT)
- lwz rCLS,0(rGOT)
-# endif
mtlr rTMP
#else
/* Load __cache_line_size from static. This value was set from the
#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
addi r9,r9,.LC0-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r10
- lwz r9,.LC0@got(10)
-# endif
mtlr r11
cfi_same_value (lr)
lfd fp9,0(r9)
cfi_offset(lr,20-16)
cfi_offset(r30,8-16)
#ifdef SHARED
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
.LCF1:
mflr r30
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
- lwz r9,_LIB_VERSION@got(30)
- lwz r0,0(r9)
-# endif
#else
lis r9,_LIB_VERSION@ha
lwz r0,_LIB_VERSION@l(r9)
cfi_offset(lr,20-16)
cfi_offset(r30,8-16)
#ifdef SHARED
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
.LCF1:
mflr r30
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
- lwz r9,_LIB_VERSION@got(30)
- lwz r0,0(r9)
-# endif
#else
lis r9,_LIB_VERSION@ha
lwz r0,_LIB_VERSION@l(r9)
cfi_offset(lr,20-16)
cfi_offset(r30,8-16)
#ifdef SHARED
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
.LCF1:
mflr r30
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
- lwz r9,_LIB_VERSION@got(30)
- lwz r0,0(r9)
-# endif
#else
lis r9,_LIB_VERSION@ha
lwz r0,_LIB_VERSION@l(r9)
cfi_offset(lr,20-16)
cfi_offset(r30,8-16)
#ifdef SHARED
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,.LCF1
.LCF1:
mflr r30
addi r30,r30,_GLOBAL_OFFSET_TABLE_-.LCF1@l
lwz r9,_LIB_VERSION@got(30)
lwz r0,0(r9)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r30
- lwz r9,_LIB_VERSION@got(30)
- lwz r0,0(r9)
-# endif
#else
lis r9,_LIB_VERSION@ha
lwz r0,_LIB_VERSION@l(r9)
#define __longjmp ____longjmp_chk
#ifdef PIC
-# ifdef HAVE_ASM_PPC_REL16
# define LOAD_ARG \
bcl 20,31,1f; \
1: mflr r3; \
addis r3,r3,_GLOBAL_OFFSET_TABLE_-1b@ha; \
addi r3,r3,_GLOBAL_OFFSET_TABLE_-1b@l; \
lwz r3,.LC0@got(r3)
-# else
-# define LOAD_ARG \
- bl _GLOBAL_OFFSET_TABLE_-4@local; \
- mflr r3; \
- lwz r3,.LC0@got(r3)
-# endif
#else
# define LOAD_ARG \
lis r3,.LC0@ha; \
DO_CALL(SYS_ify(brk))
lwz r6,8(r1)
#ifdef PIC
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r5
addis r5,r5,__curbrk-1b@ha
stw r3,__curbrk-1b@l(r5)
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r5
- lwz r5,__curbrk@got(r5)
- stw r3,0(r5)
-# endif
#else
lis r4,__curbrk@ha
stw r3,__curbrk@l(r4)
# ifdef __CONTEXT_ENABLE_VRS
# ifdef PIC
mflr r8
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r7
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r7
-# endif
# ifdef SHARED
lwz r7,_rtld_global_ro@got(r7)
mtlr r8
#ifdef PIC
mflr r8
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r7
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r7
-# endif
# ifdef SHARED
lwz r7,_rtld_global_ro@got(r7)
mtlr r8
# ifdef PIC
mflr r8
-# ifdef HAVE_ASM_PPC_REL16
bcl 20,31,1f
1: mflr r7
addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l
-# else
- bl _GLOBAL_OFFSET_TABLE_@local-4
- mflr r7
-# endif
# ifdef SHARED
lwz r7,_rtld_global_ro@got(r7)
mtlr r8