diff options
author | Will Schmidt <will_schmidt@vnet.ibm.com> | 2011-12-17 15:07:31 -0500 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-12-17 15:07:31 -0500 |
commit | 91d2a8453f501c4fc6cadde9cf00e6cced17a40c (patch) | |
tree | 512de598cd4294aa681266dad0dfea09f9ca8570 /sysdeps/unix/sysv/linux | |
parent | a1267ba1c6967afdc9ed9af16e3b42f5a240988e (diff) | |
download | glibc-91d2a8453f501c4fc6cadde9cf00e6cced17a40c.tar glibc-91d2a8453f501c4fc6cadde9cf00e6cced17a40c.tar.gz glibc-91d2a8453f501c4fc6cadde9cf00e6cced17a40c.tar.bz2 glibc-91d2a8453f501c4fc6cadde9cf00e6cced17a40c.zip |
Simplify code for accessing powerpc GOT
Diffstat (limited to 'sysdeps/unix/sysv/linux')
5 files changed, 23 insertions, 29 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S index cfd9864f63..2b97f01b47 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Free Software Foundation, Inc. +/* Copyright (C) 2009, 2011 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 @@ -29,10 +29,9 @@ #ifdef PIC # 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; \ + SETUP_GOT_ACCESS(r3,got_label2); \ + addis r3,r3,_GLOBAL_OFFSET_TABLE_-got_label2@ha; \ + addi r3,r3,_GLOBAL_OFFSET_TABLE_-got_label2@l; \ lwz r3,.LC0@got(r3) #else # define LOAD_ARG \ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S index 4c8c6b433b..928ba217bc 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/brk.S @@ -1,5 +1,5 @@ /* brk system call for Linux/ppc. - Copyright (C) 1995-97, 1999, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1995-97, 1999, 2000, 2006, 2011 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 @@ -36,10 +36,9 @@ ENTRY (BP_SYM (__brk)) DO_CALL(SYS_ify(brk)) lwz r6,8(r1) #ifdef PIC - bcl 20,31,1f -1: mflr r5 - addis r5,r5,__curbrk-1b@ha - stw r3,__curbrk-1b@l(r5) + SETUP_GOT_ACCESS(r5,got_label) + addis r5,r5,__curbrk-got_label@ha + stw r3,__curbrk-got_label@l(r5) #else lis r4,__curbrk@ha stw r3,__curbrk@l(r4) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S index 27285ed4a5..f55c0730f1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S @@ -1,5 +1,5 @@ /* Save current context, powerpc32 common. - Copyright (C) 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2011 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 @@ -145,10 +145,9 @@ ENTRY(__CONTEXT_FUNC_NAME) # ifdef __CONTEXT_ENABLE_VRS # ifdef PIC mflr r8 - bcl 20,31,1f -1: mflr r7 - addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha - addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l + SETUP_GOT_ACCESS(r7,got_label) + addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha + addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) mtlr r8 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S index f304090868..a2f419b0e1 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S @@ -1,5 +1,5 @@ /* Jump to a new context powerpc32 common. - Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008, 2009, 2011 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 @@ -73,10 +73,9 @@ ENTRY(__CONTEXT_FUNC_NAME) #ifdef PIC mflr r8 - bcl 20,31,1f -1: mflr r7 - addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha - addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l + SETUP_GOT_ACCESS(r7,got_label) + addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha + addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) mtlr r8 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S index 62efee2dce..19dfcf8402 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S @@ -1,5 +1,5 @@ /* Save current context and jump to a new context. - Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008, 2009, 2011 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 @@ -146,10 +146,9 @@ ENTRY(__CONTEXT_FUNC_NAME) # ifdef PIC mflr r8 - bcl 20,31,1f -1: mflr r7 - addis r7,r7,_GLOBAL_OFFSET_TABLE_-1b@ha - addi r7,r7,_GLOBAL_OFFSET_TABLE_-1b@l + SETUP_GOT_ACCESS(r7,got_label) + addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha + addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) mtlr r8 @@ -299,10 +298,9 @@ ENTRY(__CONTEXT_FUNC_NAME) # ifdef PIC mflr r8 # ifdef HAVE_ASM_PPC_REL16 - bcl 20,31,5f -5: mflr r7 - addis r7,r7,_GLOBAL_OFFSET_TABLE_-5b@ha - addi r7,r7,_GLOBAL_OFFSET_TABLE_-5b@l + SETUP_GOT_ACCESS(r7,got_label) + addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha + addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l # else bl _GLOBAL_OFFSET_TABLE_@local-4 mflr r7 |