This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, rs6000] fix visibility problems for out-of-line prologues/epilogues
- From: Nathan Froyd <froydnj at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: dje at watson dot ibm dot com
- Date: Tue, 7 Oct 2008 10:45:17 -0700
- Subject: [PATCH, rs6000] fix visibility problems for out-of-line prologues/epilogues
The patch below solves a problem related to the visibility of the
out-of-line prologue/epilogue functions. These functions are called by
the compiler at -Os; since they have non-standard calling conventions,
they are placed into static libgcc.a. However, they have default
visibility on ELF systems, which leads to the following failure mode:
gcc -Os -c -o libcode.o libcode.c
libcode.o now calls the out-of-line prologue/epilogue functions.
gcc -Os -shared -o libcode.so.1 -Wl,-soname,libcode.so.1
libcode.so.1 now exports the out-of-line prologue/epilogue functions.
gcc -Os -o myapp myapp.c -lcode
myapp calls the prologue/epilogue functions, but they are resolved to
the versions in the shared library instead of libgcc, which means they
get called through the PLT.
./myapp
Segmentation fault
When an prologue/epilogue function is called, the PLT resolver gets
invoked, which trashes r11...which the prologue/epilogue function
depended on, leading to bad results.
The fix, of course, is to make the prologue/epilogue functions hidden so
that when creating the shared library, they are not exported. Then when
myapp gets linked, the routines from libgcc.a are picked up rather than
the routines from the shared library.
I realize that doing this potentially breaks applications that were
using the symbol. However, if you were using the symbol, then things
were broken anyway. (FWIW, you could use LD_BIND_NOW to prevent this
from happening...but then the problem nor the fix will affect you
anyway.)
The patch is straightforward enough. Tested on powerpc-linux-gnuspe.
OK to commit?
-Nathan
2008-10-07 Nathan Froyd <froydnj@codesourcery.com>
* config/rs6000/ppc-asm.h (HIDDEN_FUNC): New macro.
* config/rs6000/crtresfpr.asm, config/rs6000/crtresgpr.asm,
config/rs6000/crtresxfpr.asm, config/rs6000/crtresxgpr.asm,
config/rs6000/crtsavfpr.asm, config/rs6000/crtsavgpr.asm,
config/rs6000/e500crtres32gpr.asm,
config/rs6000/e500crtres64gpr.asm,
config/rs6000/e500crtres64gprctr.asm,
config/rs6000/e500crtrest32gpr.asm,
config/rs6000/e500crtrest64gpr.asm,
config/rs6000/e500crtresx32gpr.asm,
config/rs6000/e500crtresx64gpr.asm,
config/rs6000/e500crtsav32gpr.asm,
config/rs6000/e500crtsav64gpr.asm,
config/rs6000/e500crtsav64gprctr.asm,
config/rs6000/e500crtsavg32gpr.asm,
config/rs6000/e500crtsavg64gpr.asm,
config/rs6000/e500crtsavg64gprctr.asm: Use it.
Index: gcc/config/rs6000/crtresfpr.asm
===================================================================
--- gcc/config/rs6000/crtresfpr.asm (revision 140940)
+++ gcc/config/rs6000/crtresfpr.asm (working copy)
@@ -48,24 +48,24 @@
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the floating point save area. */
-FUNC_START(_restfpr_14) lfd 14,-144(11) /* restore fp registers */
-FUNC_START(_restfpr_15) lfd 15,-136(11)
-FUNC_START(_restfpr_16) lfd 16,-128(11)
-FUNC_START(_restfpr_17) lfd 17,-120(11)
-FUNC_START(_restfpr_18) lfd 18,-112(11)
-FUNC_START(_restfpr_19) lfd 19,-104(11)
-FUNC_START(_restfpr_20) lfd 20,-96(11)
-FUNC_START(_restfpr_21) lfd 21,-88(11)
-FUNC_START(_restfpr_22) lfd 22,-80(11)
-FUNC_START(_restfpr_23) lfd 23,-72(11)
-FUNC_START(_restfpr_24) lfd 24,-64(11)
-FUNC_START(_restfpr_25) lfd 25,-56(11)
-FUNC_START(_restfpr_26) lfd 26,-48(11)
-FUNC_START(_restfpr_27) lfd 27,-40(11)
-FUNC_START(_restfpr_28) lfd 28,-32(11)
-FUNC_START(_restfpr_29) lfd 29,-24(11)
-FUNC_START(_restfpr_30) lfd 30,-16(11)
-FUNC_START(_restfpr_31) lfd 31,-8(11)
+HIDDEN_FUNC(_restfpr_14) lfd 14,-144(11) /* restore fp registers */
+HIDDEN_FUNC(_restfpr_15) lfd 15,-136(11)
+HIDDEN_FUNC(_restfpr_16) lfd 16,-128(11)
+HIDDEN_FUNC(_restfpr_17) lfd 17,-120(11)
+HIDDEN_FUNC(_restfpr_18) lfd 18,-112(11)
+HIDDEN_FUNC(_restfpr_19) lfd 19,-104(11)
+HIDDEN_FUNC(_restfpr_20) lfd 20,-96(11)
+HIDDEN_FUNC(_restfpr_21) lfd 21,-88(11)
+HIDDEN_FUNC(_restfpr_22) lfd 22,-80(11)
+HIDDEN_FUNC(_restfpr_23) lfd 23,-72(11)
+HIDDEN_FUNC(_restfpr_24) lfd 24,-64(11)
+HIDDEN_FUNC(_restfpr_25) lfd 25,-56(11)
+HIDDEN_FUNC(_restfpr_26) lfd 26,-48(11)
+HIDDEN_FUNC(_restfpr_27) lfd 27,-40(11)
+HIDDEN_FUNC(_restfpr_28) lfd 28,-32(11)
+HIDDEN_FUNC(_restfpr_29) lfd 29,-24(11)
+HIDDEN_FUNC(_restfpr_30) lfd 30,-16(11)
+HIDDEN_FUNC(_restfpr_31) lfd 31,-8(11)
blr
FUNC_END(_restfpr_31)
FUNC_END(_restfpr_30)
Index: gcc/config/rs6000/crtresgpr.asm
===================================================================
--- gcc/config/rs6000/crtresgpr.asm (revision 140940)
+++ gcc/config/rs6000/crtresgpr.asm (working copy)
@@ -48,24 +48,24 @@
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer restore area. */
-FUNC_START(_restgpr_14) lwz 14,-72(11) /* restore gp registers */
-FUNC_START(_restgpr_15) lwz 15,-68(11)
-FUNC_START(_restgpr_16) lwz 16,-64(11)
-FUNC_START(_restgpr_17) lwz 17,-60(11)
-FUNC_START(_restgpr_18) lwz 18,-56(11)
-FUNC_START(_restgpr_19) lwz 19,-52(11)
-FUNC_START(_restgpr_20) lwz 20,-48(11)
-FUNC_START(_restgpr_21) lwz 21,-44(11)
-FUNC_START(_restgpr_22) lwz 22,-40(11)
-FUNC_START(_restgpr_23) lwz 23,-36(11)
-FUNC_START(_restgpr_24) lwz 24,-32(11)
-FUNC_START(_restgpr_25) lwz 25,-28(11)
-FUNC_START(_restgpr_26) lwz 26,-24(11)
-FUNC_START(_restgpr_27) lwz 27,-20(11)
-FUNC_START(_restgpr_28) lwz 28,-16(11)
-FUNC_START(_restgpr_29) lwz 29,-12(11)
-FUNC_START(_restgpr_30) lwz 30,-8(11)
-FUNC_START(_restgpr_31) lwz 31,-4(11)
+HIDDEN_FUNC(_restgpr_14) lwz 14,-72(11) /* restore gp registers */
+HIDDEN_FUNC(_restgpr_15) lwz 15,-68(11)
+HIDDEN_FUNC(_restgpr_16) lwz 16,-64(11)
+HIDDEN_FUNC(_restgpr_17) lwz 17,-60(11)
+HIDDEN_FUNC(_restgpr_18) lwz 18,-56(11)
+HIDDEN_FUNC(_restgpr_19) lwz 19,-52(11)
+HIDDEN_FUNC(_restgpr_20) lwz 20,-48(11)
+HIDDEN_FUNC(_restgpr_21) lwz 21,-44(11)
+HIDDEN_FUNC(_restgpr_22) lwz 22,-40(11)
+HIDDEN_FUNC(_restgpr_23) lwz 23,-36(11)
+HIDDEN_FUNC(_restgpr_24) lwz 24,-32(11)
+HIDDEN_FUNC(_restgpr_25) lwz 25,-28(11)
+HIDDEN_FUNC(_restgpr_26) lwz 26,-24(11)
+HIDDEN_FUNC(_restgpr_27) lwz 27,-20(11)
+HIDDEN_FUNC(_restgpr_28) lwz 28,-16(11)
+HIDDEN_FUNC(_restgpr_29) lwz 29,-12(11)
+HIDDEN_FUNC(_restgpr_30) lwz 30,-8(11)
+HIDDEN_FUNC(_restgpr_31) lwz 31,-4(11)
blr
FUNC_END(_restgpr_31)
FUNC_END(_restgpr_30)
Index: gcc/config/rs6000/crtresxfpr.asm
===================================================================
--- gcc/config/rs6000/crtresxfpr.asm (revision 140940)
+++ gcc/config/rs6000/crtresxfpr.asm (working copy)
@@ -50,24 +50,24 @@
/* In addition to restoring the fp registers, it will return to the caller's */
/* caller */
-FUNC_START(_restfpr_14_x) lfd 14,-144(11) /* restore fp registers */
-FUNC_START(_restfpr_15_x) lfd 15,-136(11)
-FUNC_START(_restfpr_16_x) lfd 16,-128(11)
-FUNC_START(_restfpr_17_x) lfd 17,-120(11)
-FUNC_START(_restfpr_18_x) lfd 18,-112(11)
-FUNC_START(_restfpr_19_x) lfd 19,-104(11)
-FUNC_START(_restfpr_20_x) lfd 20,-96(11)
-FUNC_START(_restfpr_21_x) lfd 21,-88(11)
-FUNC_START(_restfpr_22_x) lfd 22,-80(11)
-FUNC_START(_restfpr_23_x) lfd 23,-72(11)
-FUNC_START(_restfpr_24_x) lfd 24,-64(11)
-FUNC_START(_restfpr_25_x) lfd 25,-56(11)
-FUNC_START(_restfpr_26_x) lfd 26,-48(11)
-FUNC_START(_restfpr_27_x) lfd 27,-40(11)
-FUNC_START(_restfpr_28_x) lfd 28,-32(11)
-FUNC_START(_restfpr_29_x) lfd 29,-24(11)
-FUNC_START(_restfpr_30_x) lfd 30,-16(11)
-FUNC_START(_restfpr_31_x) lwz 0,4(11)
+HIDDEN_FUNC(_restfpr_14_x) lfd 14,-144(11) /* restore fp registers */
+HIDDEN_FUNC(_restfpr_15_x) lfd 15,-136(11)
+HIDDEN_FUNC(_restfpr_16_x) lfd 16,-128(11)
+HIDDEN_FUNC(_restfpr_17_x) lfd 17,-120(11)
+HIDDEN_FUNC(_restfpr_18_x) lfd 18,-112(11)
+HIDDEN_FUNC(_restfpr_19_x) lfd 19,-104(11)
+HIDDEN_FUNC(_restfpr_20_x) lfd 20,-96(11)
+HIDDEN_FUNC(_restfpr_21_x) lfd 21,-88(11)
+HIDDEN_FUNC(_restfpr_22_x) lfd 22,-80(11)
+HIDDEN_FUNC(_restfpr_23_x) lfd 23,-72(11)
+HIDDEN_FUNC(_restfpr_24_x) lfd 24,-64(11)
+HIDDEN_FUNC(_restfpr_25_x) lfd 25,-56(11)
+HIDDEN_FUNC(_restfpr_26_x) lfd 26,-48(11)
+HIDDEN_FUNC(_restfpr_27_x) lfd 27,-40(11)
+HIDDEN_FUNC(_restfpr_28_x) lfd 28,-32(11)
+HIDDEN_FUNC(_restfpr_29_x) lfd 29,-24(11)
+HIDDEN_FUNC(_restfpr_30_x) lfd 30,-16(11)
+HIDDEN_FUNC(_restfpr_31_x) lwz 0,4(11)
lfd 31,-8(11)
mtlr 0
mr 1,11
Index: gcc/config/rs6000/crtresxgpr.asm
===================================================================
--- gcc/config/rs6000/crtresxgpr.asm (revision 140940)
+++ gcc/config/rs6000/crtresxgpr.asm (working copy)
@@ -48,24 +48,24 @@
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer restore area. */
-FUNC_START(_restgpr_14_x) lwz 14,-72(11) /* restore gp registers */
-FUNC_START(_restgpr_15_x) lwz 15,-68(11)
-FUNC_START(_restgpr_16_x) lwz 16,-64(11)
-FUNC_START(_restgpr_17_x) lwz 17,-60(11)
-FUNC_START(_restgpr_18_x) lwz 18,-56(11)
-FUNC_START(_restgpr_19_x) lwz 19,-52(11)
-FUNC_START(_restgpr_20_x) lwz 20,-48(11)
-FUNC_START(_restgpr_21_x) lwz 21,-44(11)
-FUNC_START(_restgpr_22_x) lwz 22,-40(11)
-FUNC_START(_restgpr_23_x) lwz 23,-36(11)
-FUNC_START(_restgpr_24_x) lwz 24,-32(11)
-FUNC_START(_restgpr_25_x) lwz 25,-28(11)
-FUNC_START(_restgpr_26_x) lwz 26,-24(11)
-FUNC_START(_restgpr_27_x) lwz 27,-20(11)
-FUNC_START(_restgpr_28_x) lwz 28,-16(11)
-FUNC_START(_restgpr_29_x) lwz 29,-12(11)
-FUNC_START(_restgpr_30_x) lwz 30,-8(11)
-FUNC_START(_restgpr_31_x) lwz 0,4(11)
+HIDDEN_FUNC(_restgpr_14_x) lwz 14,-72(11) /* restore gp registers */
+HIDDEN_FUNC(_restgpr_15_x) lwz 15,-68(11)
+HIDDEN_FUNC(_restgpr_16_x) lwz 16,-64(11)
+HIDDEN_FUNC(_restgpr_17_x) lwz 17,-60(11)
+HIDDEN_FUNC(_restgpr_18_x) lwz 18,-56(11)
+HIDDEN_FUNC(_restgpr_19_x) lwz 19,-52(11)
+HIDDEN_FUNC(_restgpr_20_x) lwz 20,-48(11)
+HIDDEN_FUNC(_restgpr_21_x) lwz 21,-44(11)
+HIDDEN_FUNC(_restgpr_22_x) lwz 22,-40(11)
+HIDDEN_FUNC(_restgpr_23_x) lwz 23,-36(11)
+HIDDEN_FUNC(_restgpr_24_x) lwz 24,-32(11)
+HIDDEN_FUNC(_restgpr_25_x) lwz 25,-28(11)
+HIDDEN_FUNC(_restgpr_26_x) lwz 26,-24(11)
+HIDDEN_FUNC(_restgpr_27_x) lwz 27,-20(11)
+HIDDEN_FUNC(_restgpr_28_x) lwz 28,-16(11)
+HIDDEN_FUNC(_restgpr_29_x) lwz 29,-12(11)
+HIDDEN_FUNC(_restgpr_30_x) lwz 30,-8(11)
+HIDDEN_FUNC(_restgpr_31_x) lwz 0,4(11)
lwz 31,-4(11)
mtlr 0
mr 1,11
Index: gcc/config/rs6000/crtsavfpr.asm
===================================================================
--- gcc/config/rs6000/crtsavfpr.asm (revision 140940)
+++ gcc/config/rs6000/crtsavfpr.asm (working copy)
@@ -48,24 +48,24 @@
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the floating point save area. */
-FUNC_START(_savefpr_14) stfd 14,-144(11) /* save fp registers */
-FUNC_START(_savefpr_15) stfd 15,-136(11)
-FUNC_START(_savefpr_16) stfd 16,-128(11)
-FUNC_START(_savefpr_17) stfd 17,-120(11)
-FUNC_START(_savefpr_18) stfd 18,-112(11)
-FUNC_START(_savefpr_19) stfd 19,-104(11)
-FUNC_START(_savefpr_20) stfd 20,-96(11)
-FUNC_START(_savefpr_21) stfd 21,-88(11)
-FUNC_START(_savefpr_22) stfd 22,-80(11)
-FUNC_START(_savefpr_23) stfd 23,-72(11)
-FUNC_START(_savefpr_24) stfd 24,-64(11)
-FUNC_START(_savefpr_25) stfd 25,-56(11)
-FUNC_START(_savefpr_26) stfd 26,-48(11)
-FUNC_START(_savefpr_27) stfd 27,-40(11)
-FUNC_START(_savefpr_28) stfd 28,-32(11)
-FUNC_START(_savefpr_29) stfd 29,-24(11)
-FUNC_START(_savefpr_30) stfd 30,-16(11)
-FUNC_START(_savefpr_31) stfd 31,-8(11)
+HIDDEN_FUNC(_savefpr_14) stfd 14,-144(11) /* save fp registers */
+HIDDEN_FUNC(_savefpr_15) stfd 15,-136(11)
+HIDDEN_FUNC(_savefpr_16) stfd 16,-128(11)
+HIDDEN_FUNC(_savefpr_17) stfd 17,-120(11)
+HIDDEN_FUNC(_savefpr_18) stfd 18,-112(11)
+HIDDEN_FUNC(_savefpr_19) stfd 19,-104(11)
+HIDDEN_FUNC(_savefpr_20) stfd 20,-96(11)
+HIDDEN_FUNC(_savefpr_21) stfd 21,-88(11)
+HIDDEN_FUNC(_savefpr_22) stfd 22,-80(11)
+HIDDEN_FUNC(_savefpr_23) stfd 23,-72(11)
+HIDDEN_FUNC(_savefpr_24) stfd 24,-64(11)
+HIDDEN_FUNC(_savefpr_25) stfd 25,-56(11)
+HIDDEN_FUNC(_savefpr_26) stfd 26,-48(11)
+HIDDEN_FUNC(_savefpr_27) stfd 27,-40(11)
+HIDDEN_FUNC(_savefpr_28) stfd 28,-32(11)
+HIDDEN_FUNC(_savefpr_29) stfd 29,-24(11)
+HIDDEN_FUNC(_savefpr_30) stfd 30,-16(11)
+HIDDEN_FUNC(_savefpr_31) stfd 31,-8(11)
blr
FUNC_END(_savefpr_31)
FUNC_END(_savefpr_30)
Index: gcc/config/rs6000/crtsavgpr.asm
===================================================================
--- gcc/config/rs6000/crtsavgpr.asm (revision 140940)
+++ gcc/config/rs6000/crtsavgpr.asm (working copy)
@@ -48,24 +48,24 @@
/* Called with r11 pointing to the stack header word of the caller of the */
/* function, just beyond the end of the integer save area. */
-FUNC_START(_savegpr_14) stw 14,-72(11) /* save gp registers */
-FUNC_START(_savegpr_15) stw 15,-68(11)
-FUNC_START(_savegpr_16) stw 16,-64(11)
-FUNC_START(_savegpr_17) stw 17,-60(11)
-FUNC_START(_savegpr_18) stw 18,-56(11)
-FUNC_START(_savegpr_19) stw 19,-52(11)
-FUNC_START(_savegpr_20) stw 20,-48(11)
-FUNC_START(_savegpr_21) stw 21,-44(11)
-FUNC_START(_savegpr_22) stw 22,-40(11)
-FUNC_START(_savegpr_23) stw 23,-36(11)
-FUNC_START(_savegpr_24) stw 24,-32(11)
-FUNC_START(_savegpr_25) stw 25,-28(11)
-FUNC_START(_savegpr_26) stw 26,-24(11)
-FUNC_START(_savegpr_27) stw 27,-20(11)
-FUNC_START(_savegpr_28) stw 28,-16(11)
-FUNC_START(_savegpr_29) stw 29,-12(11)
-FUNC_START(_savegpr_30) stw 30,-8(11)
-FUNC_START(_savegpr_31) stw 31,-4(11)
+HIDDEN_FUNC(_savegpr_14) stw 14,-72(11) /* save gp registers */
+HIDDEN_FUNC(_savegpr_15) stw 15,-68(11)
+HIDDEN_FUNC(_savegpr_16) stw 16,-64(11)
+HIDDEN_FUNC(_savegpr_17) stw 17,-60(11)
+HIDDEN_FUNC(_savegpr_18) stw 18,-56(11)
+HIDDEN_FUNC(_savegpr_19) stw 19,-52(11)
+HIDDEN_FUNC(_savegpr_20) stw 20,-48(11)
+HIDDEN_FUNC(_savegpr_21) stw 21,-44(11)
+HIDDEN_FUNC(_savegpr_22) stw 22,-40(11)
+HIDDEN_FUNC(_savegpr_23) stw 23,-36(11)
+HIDDEN_FUNC(_savegpr_24) stw 24,-32(11)
+HIDDEN_FUNC(_savegpr_25) stw 25,-28(11)
+HIDDEN_FUNC(_savegpr_26) stw 26,-24(11)
+HIDDEN_FUNC(_savegpr_27) stw 27,-20(11)
+HIDDEN_FUNC(_savegpr_28) stw 28,-16(11)
+HIDDEN_FUNC(_savegpr_29) stw 29,-12(11)
+HIDDEN_FUNC(_savegpr_30) stw 30,-8(11)
+HIDDEN_FUNC(_savegpr_31) stw 31,-4(11)
blr
FUNC_END(_savegpr_31)
FUNC_END(_savegpr_30)
Index: gcc/config/rs6000/e500crtres32gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtres32gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtres32gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for restoring 32-bit integer registers, called by the compiler. */
/* "Bare" versions that simply return to their caller. */
-FUNC_START(_rest32gpr_14) lwz 14,-72(11)
-FUNC_START(_rest32gpr_15) lwz 15,-68(11)
-FUNC_START(_rest32gpr_16) lwz 16,-64(11)
-FUNC_START(_rest32gpr_17) lwz 17,-60(11)
-FUNC_START(_rest32gpr_18) lwz 18,-56(11)
-FUNC_START(_rest32gpr_19) lwz 19,-52(11)
-FUNC_START(_rest32gpr_20) lwz 20,-48(11)
-FUNC_START(_rest32gpr_21) lwz 21,-44(11)
-FUNC_START(_rest32gpr_22) lwz 22,-40(11)
-FUNC_START(_rest32gpr_23) lwz 23,-36(11)
-FUNC_START(_rest32gpr_24) lwz 24,-32(11)
-FUNC_START(_rest32gpr_25) lwz 25,-28(11)
-FUNC_START(_rest32gpr_26) lwz 26,-24(11)
-FUNC_START(_rest32gpr_27) lwz 27,-20(11)
-FUNC_START(_rest32gpr_28) lwz 28,-16(11)
-FUNC_START(_rest32gpr_29) lwz 29,-12(11)
-FUNC_START(_rest32gpr_30) lwz 30,-8(11)
-FUNC_START(_rest32gpr_31) lwz 31,-4(11)
+HIDDEN_FUNC(_rest32gpr_14) lwz 14,-72(11)
+HIDDEN_FUNC(_rest32gpr_15) lwz 15,-68(11)
+HIDDEN_FUNC(_rest32gpr_16) lwz 16,-64(11)
+HIDDEN_FUNC(_rest32gpr_17) lwz 17,-60(11)
+HIDDEN_FUNC(_rest32gpr_18) lwz 18,-56(11)
+HIDDEN_FUNC(_rest32gpr_19) lwz 19,-52(11)
+HIDDEN_FUNC(_rest32gpr_20) lwz 20,-48(11)
+HIDDEN_FUNC(_rest32gpr_21) lwz 21,-44(11)
+HIDDEN_FUNC(_rest32gpr_22) lwz 22,-40(11)
+HIDDEN_FUNC(_rest32gpr_23) lwz 23,-36(11)
+HIDDEN_FUNC(_rest32gpr_24) lwz 24,-32(11)
+HIDDEN_FUNC(_rest32gpr_25) lwz 25,-28(11)
+HIDDEN_FUNC(_rest32gpr_26) lwz 26,-24(11)
+HIDDEN_FUNC(_rest32gpr_27) lwz 27,-20(11)
+HIDDEN_FUNC(_rest32gpr_28) lwz 28,-16(11)
+HIDDEN_FUNC(_rest32gpr_29) lwz 29,-12(11)
+HIDDEN_FUNC(_rest32gpr_30) lwz 30,-8(11)
+HIDDEN_FUNC(_rest32gpr_31) lwz 31,-4(11)
blr
FUNC_END(_rest32gpr_31)
FUNC_END(_rest32gpr_30)
Index: gcc/config/rs6000/e500crtres64gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtres64gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtres64gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for restoring 64-bit integer registers, called by the compiler. */
/* "Bare" versions that return to their caller. */
-FUNC_START(_rest64gpr_14) evldd 14,0(11)
-FUNC_START(_rest64gpr_15) evldd 15,8(11)
-FUNC_START(_rest64gpr_16) evldd 16,16(11)
-FUNC_START(_rest64gpr_17) evldd 17,24(11)
-FUNC_START(_rest64gpr_18) evldd 18,32(11)
-FUNC_START(_rest64gpr_19) evldd 19,40(11)
-FUNC_START(_rest64gpr_20) evldd 20,48(11)
-FUNC_START(_rest64gpr_21) evldd 21,56(11)
-FUNC_START(_rest64gpr_22) evldd 22,64(11)
-FUNC_START(_rest64gpr_23) evldd 23,72(11)
-FUNC_START(_rest64gpr_24) evldd 24,80(11)
-FUNC_START(_rest64gpr_25) evldd 25,88(11)
-FUNC_START(_rest64gpr_26) evldd 26,96(11)
-FUNC_START(_rest64gpr_27) evldd 27,104(11)
-FUNC_START(_rest64gpr_28) evldd 28,112(11)
-FUNC_START(_rest64gpr_29) evldd 29,120(11)
-FUNC_START(_rest64gpr_30) evldd 30,128(11)
-FUNC_START(_rest64gpr_31) evldd 31,136(11)
+HIDDEN_FUNC(_rest64gpr_14) evldd 14,0(11)
+HIDDEN_FUNC(_rest64gpr_15) evldd 15,8(11)
+HIDDEN_FUNC(_rest64gpr_16) evldd 16,16(11)
+HIDDEN_FUNC(_rest64gpr_17) evldd 17,24(11)
+HIDDEN_FUNC(_rest64gpr_18) evldd 18,32(11)
+HIDDEN_FUNC(_rest64gpr_19) evldd 19,40(11)
+HIDDEN_FUNC(_rest64gpr_20) evldd 20,48(11)
+HIDDEN_FUNC(_rest64gpr_21) evldd 21,56(11)
+HIDDEN_FUNC(_rest64gpr_22) evldd 22,64(11)
+HIDDEN_FUNC(_rest64gpr_23) evldd 23,72(11)
+HIDDEN_FUNC(_rest64gpr_24) evldd 24,80(11)
+HIDDEN_FUNC(_rest64gpr_25) evldd 25,88(11)
+HIDDEN_FUNC(_rest64gpr_26) evldd 26,96(11)
+HIDDEN_FUNC(_rest64gpr_27) evldd 27,104(11)
+HIDDEN_FUNC(_rest64gpr_28) evldd 28,112(11)
+HIDDEN_FUNC(_rest64gpr_29) evldd 29,120(11)
+HIDDEN_FUNC(_rest64gpr_30) evldd 30,128(11)
+HIDDEN_FUNC(_rest64gpr_31) evldd 31,136(11)
blr
FUNC_END(_rest64gpr_31)
FUNC_END(_rest64gpr_30)
Index: gcc/config/rs6000/e500crtres64gprctr.asm
===================================================================
--- gcc/config/rs6000/e500crtres64gprctr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtres64gprctr.asm (working copy)
@@ -42,41 +42,41 @@
/* Routines for restoring 64-bit integer registers where the number of
registers to be restored is passed in CTR, called by the compiler. */
-FUNC_START(_rest64gpr_ctr_14) evldd 14,0(11)
+HIDDEN_FUNC(_rest64gpr_ctr_14) evldd 14,0(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_15) evldd 15,8(11)
+HIDDEN_FUNC(_rest64gpr_ctr_15) evldd 15,8(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_16) evldd 16,16(11)
+HIDDEN_FUNC(_rest64gpr_ctr_16) evldd 16,16(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_17) evldd 17,24(11)
+HIDDEN_FUNC(_rest64gpr_ctr_17) evldd 17,24(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_18) evldd 18,32(11)
+HIDDEN_FUNC(_rest64gpr_ctr_18) evldd 18,32(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_19) evldd 19,40(11)
+HIDDEN_FUNC(_rest64gpr_ctr_19) evldd 19,40(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_20) evldd 20,48(11)
+HIDDEN_FUNC(_rest64gpr_ctr_20) evldd 20,48(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_21) evldd 21,56(11)
+HIDDEN_FUNC(_rest64gpr_ctr_21) evldd 21,56(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_22) evldd 22,64(11)
+HIDDEN_FUNC(_rest64gpr_ctr_22) evldd 22,64(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_23) evldd 23,72(11)
+HIDDEN_FUNC(_rest64gpr_ctr_23) evldd 23,72(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_24) evldd 24,80(11)
+HIDDEN_FUNC(_rest64gpr_ctr_24) evldd 24,80(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_25) evldd 25,88(11)
+HIDDEN_FUNC(_rest64gpr_ctr_25) evldd 25,88(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_26) evldd 26,96(11)
+HIDDEN_FUNC(_rest64gpr_ctr_26) evldd 26,96(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_27) evldd 27,104(11)
+HIDDEN_FUNC(_rest64gpr_ctr_27) evldd 27,104(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_28) evldd 28,112(11)
+HIDDEN_FUNC(_rest64gpr_ctr_28) evldd 28,112(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_29) evldd 29,120(11)
+HIDDEN_FUNC(_rest64gpr_ctr_29) evldd 29,120(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_30) evldd 30,128(11)
+HIDDEN_FUNC(_rest64gpr_ctr_30) evldd 30,128(11)
bdz _rest64_gpr_ctr_done
-FUNC_START(_rest64gpr_ctr_31) evldd 31,136(11)
+HIDDEN_FUNC(_rest64gpr_ctr_31) evldd 31,136(11)
_rest64gpr_ctr_done: blr
#endif
Index: gcc/config/rs6000/e500crtrest32gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtrest32gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtrest32gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for restoring 32-bit integer registers, called by the compiler. */
/* "Tail" versions that perform a tail call. */
-FUNC_START(_rest32gpr_14_t) lwz 14,-72(11)
-FUNC_START(_rest32gpr_15_t) lwz 15,-68(11)
-FUNC_START(_rest32gpr_16_t) lwz 16,-64(11)
-FUNC_START(_rest32gpr_17_t) lwz 17,-60(11)
-FUNC_START(_rest32gpr_18_t) lwz 18,-56(11)
-FUNC_START(_rest32gpr_19_t) lwz 19,-52(11)
-FUNC_START(_rest32gpr_20_t) lwz 20,-48(11)
-FUNC_START(_rest32gpr_21_t) lwz 21,-44(11)
-FUNC_START(_rest32gpr_22_t) lwz 22,-40(11)
-FUNC_START(_rest32gpr_23_t) lwz 23,-36(11)
-FUNC_START(_rest32gpr_24_t) lwz 24,-32(11)
-FUNC_START(_rest32gpr_25_t) lwz 25,-28(11)
-FUNC_START(_rest32gpr_26_t) lwz 26,-24(11)
-FUNC_START(_rest32gpr_27_t) lwz 27,-20(11)
-FUNC_START(_rest32gpr_28_t) lwz 28,-16(11)
-FUNC_START(_rest32gpr_29_t) lwz 29,-12(11)
-FUNC_START(_rest32gpr_30_t) lwz 30,-8(11)
-FUNC_START(_rest32gpr_31_t) lwz 31,-4(11)
+HIDDEN_FUNC(_rest32gpr_14_t) lwz 14,-72(11)
+HIDDEN_FUNC(_rest32gpr_15_t) lwz 15,-68(11)
+HIDDEN_FUNC(_rest32gpr_16_t) lwz 16,-64(11)
+HIDDEN_FUNC(_rest32gpr_17_t) lwz 17,-60(11)
+HIDDEN_FUNC(_rest32gpr_18_t) lwz 18,-56(11)
+HIDDEN_FUNC(_rest32gpr_19_t) lwz 19,-52(11)
+HIDDEN_FUNC(_rest32gpr_20_t) lwz 20,-48(11)
+HIDDEN_FUNC(_rest32gpr_21_t) lwz 21,-44(11)
+HIDDEN_FUNC(_rest32gpr_22_t) lwz 22,-40(11)
+HIDDEN_FUNC(_rest32gpr_23_t) lwz 23,-36(11)
+HIDDEN_FUNC(_rest32gpr_24_t) lwz 24,-32(11)
+HIDDEN_FUNC(_rest32gpr_25_t) lwz 25,-28(11)
+HIDDEN_FUNC(_rest32gpr_26_t) lwz 26,-24(11)
+HIDDEN_FUNC(_rest32gpr_27_t) lwz 27,-20(11)
+HIDDEN_FUNC(_rest32gpr_28_t) lwz 28,-16(11)
+HIDDEN_FUNC(_rest32gpr_29_t) lwz 29,-12(11)
+HIDDEN_FUNC(_rest32gpr_30_t) lwz 30,-8(11)
+HIDDEN_FUNC(_rest32gpr_31_t) lwz 31,-4(11)
lwz 0,4(11)
mr 1,11
blr
Index: gcc/config/rs6000/e500crtrest64gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtrest64gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtrest64gpr.asm (working copy)
@@ -41,24 +41,24 @@
/* "Tail" versions that perform a tail call. */
-FUNC_START(_rest64gpr_14_t) evldd 14,0(11)
-FUNC_START(_rest64gpr_15_t) evldd 15,8(11)
-FUNC_START(_rest64gpr_16_t) evldd 16,16(11)
-FUNC_START(_rest64gpr_17_t) evldd 17,24(11)
-FUNC_START(_rest64gpr_18_t) evldd 18,32(11)
-FUNC_START(_rest64gpr_19_t) evldd 19,40(11)
-FUNC_START(_rest64gpr_20_t) evldd 20,48(11)
-FUNC_START(_rest64gpr_21_t) evldd 21,56(11)
-FUNC_START(_rest64gpr_22_t) evldd 22,64(11)
-FUNC_START(_rest64gpr_23_t) evldd 23,72(11)
-FUNC_START(_rest64gpr_24_t) evldd 24,80(11)
-FUNC_START(_rest64gpr_25_t) evldd 25,88(11)
-FUNC_START(_rest64gpr_26_t) evldd 26,96(11)
-FUNC_START(_rest64gpr_27_t) evldd 27,104(11)
-FUNC_START(_rest64gpr_28_t) evldd 28,112(11)
-FUNC_START(_rest64gpr_29_t) evldd 29,120(11)
-FUNC_START(_rest64gpr_30_t) evldd 30,128(11)
-FUNC_START(_rest64gpr_31_t) lwz 0,148(11)
+HIDDEN_FUNC(_rest64gpr_14_t) evldd 14,0(11)
+HIDDEN_FUNC(_rest64gpr_15_t) evldd 15,8(11)
+HIDDEN_FUNC(_rest64gpr_16_t) evldd 16,16(11)
+HIDDEN_FUNC(_rest64gpr_17_t) evldd 17,24(11)
+HIDDEN_FUNC(_rest64gpr_18_t) evldd 18,32(11)
+HIDDEN_FUNC(_rest64gpr_19_t) evldd 19,40(11)
+HIDDEN_FUNC(_rest64gpr_20_t) evldd 20,48(11)
+HIDDEN_FUNC(_rest64gpr_21_t) evldd 21,56(11)
+HIDDEN_FUNC(_rest64gpr_22_t) evldd 22,64(11)
+HIDDEN_FUNC(_rest64gpr_23_t) evldd 23,72(11)
+HIDDEN_FUNC(_rest64gpr_24_t) evldd 24,80(11)
+HIDDEN_FUNC(_rest64gpr_25_t) evldd 25,88(11)
+HIDDEN_FUNC(_rest64gpr_26_t) evldd 26,96(11)
+HIDDEN_FUNC(_rest64gpr_27_t) evldd 27,104(11)
+HIDDEN_FUNC(_rest64gpr_28_t) evldd 28,112(11)
+HIDDEN_FUNC(_rest64gpr_29_t) evldd 29,120(11)
+HIDDEN_FUNC(_rest64gpr_30_t) evldd 30,128(11)
+HIDDEN_FUNC(_rest64gpr_31_t) lwz 0,148(11)
evldd 31,136(11)
addi 1,11,144
blr
Index: gcc/config/rs6000/e500crtresx32gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtresx32gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtresx32gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for restoring 32-bit integer registers, called by the compiler. */
/* "Exit" versions that return to the caller's caller. */
-FUNC_START(_rest32gpr_14_x) lwz 14,-72(11)
-FUNC_START(_rest32gpr_15_x) lwz 15,-68(11)
-FUNC_START(_rest32gpr_16_x) lwz 16,-64(11)
-FUNC_START(_rest32gpr_17_x) lwz 17,-60(11)
-FUNC_START(_rest32gpr_18_x) lwz 18,-56(11)
-FUNC_START(_rest32gpr_19_x) lwz 19,-52(11)
-FUNC_START(_rest32gpr_20_x) lwz 20,-48(11)
-FUNC_START(_rest32gpr_21_x) lwz 21,-44(11)
-FUNC_START(_rest32gpr_22_x) lwz 22,-40(11)
-FUNC_START(_rest32gpr_23_x) lwz 23,-36(11)
-FUNC_START(_rest32gpr_24_x) lwz 24,-32(11)
-FUNC_START(_rest32gpr_25_x) lwz 25,-28(11)
-FUNC_START(_rest32gpr_26_x) lwz 26,-24(11)
-FUNC_START(_rest32gpr_27_x) lwz 27,-20(11)
-FUNC_START(_rest32gpr_28_x) lwz 28,-16(11)
-FUNC_START(_rest32gpr_29_x) lwz 29,-12(11)
-FUNC_START(_rest32gpr_30_x) lwz 30,-8(11)
-FUNC_START(_rest32gpr_31_x) lwz 0,4(11)
+HIDDEN_FUNC(_rest32gpr_14_x) lwz 14,-72(11)
+HIDDEN_FUNC(_rest32gpr_15_x) lwz 15,-68(11)
+HIDDEN_FUNC(_rest32gpr_16_x) lwz 16,-64(11)
+HIDDEN_FUNC(_rest32gpr_17_x) lwz 17,-60(11)
+HIDDEN_FUNC(_rest32gpr_18_x) lwz 18,-56(11)
+HIDDEN_FUNC(_rest32gpr_19_x) lwz 19,-52(11)
+HIDDEN_FUNC(_rest32gpr_20_x) lwz 20,-48(11)
+HIDDEN_FUNC(_rest32gpr_21_x) lwz 21,-44(11)
+HIDDEN_FUNC(_rest32gpr_22_x) lwz 22,-40(11)
+HIDDEN_FUNC(_rest32gpr_23_x) lwz 23,-36(11)
+HIDDEN_FUNC(_rest32gpr_24_x) lwz 24,-32(11)
+HIDDEN_FUNC(_rest32gpr_25_x) lwz 25,-28(11)
+HIDDEN_FUNC(_rest32gpr_26_x) lwz 26,-24(11)
+HIDDEN_FUNC(_rest32gpr_27_x) lwz 27,-20(11)
+HIDDEN_FUNC(_rest32gpr_28_x) lwz 28,-16(11)
+HIDDEN_FUNC(_rest32gpr_29_x) lwz 29,-12(11)
+HIDDEN_FUNC(_rest32gpr_30_x) lwz 30,-8(11)
+HIDDEN_FUNC(_rest32gpr_31_x) lwz 0,4(11)
lwz 31,-4(11)
mr 1,11
mtlr 0
Index: gcc/config/rs6000/e500crtresx64gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtresx64gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtresx64gpr.asm (working copy)
@@ -41,24 +41,24 @@
/* "Exit" versions that return to their caller's caller. */
-FUNC_START(_rest64gpr_14_x) evldd 14,0(11)
-FUNC_START(_rest64gpr_15_x) evldd 15,8(11)
-FUNC_START(_rest64gpr_16_x) evldd 16,16(11)
-FUNC_START(_rest64gpr_17_x) evldd 17,24(11)
-FUNC_START(_rest64gpr_18_x) evldd 18,32(11)
-FUNC_START(_rest64gpr_19_x) evldd 19,40(11)
-FUNC_START(_rest64gpr_20_x) evldd 20,48(11)
-FUNC_START(_rest64gpr_21_x) evldd 21,56(11)
-FUNC_START(_rest64gpr_22_x) evldd 22,64(11)
-FUNC_START(_rest64gpr_23_x) evldd 23,72(11)
-FUNC_START(_rest64gpr_24_x) evldd 24,80(11)
-FUNC_START(_rest64gpr_25_x) evldd 25,88(11)
-FUNC_START(_rest64gpr_26_x) evldd 26,96(11)
-FUNC_START(_rest64gpr_27_x) evldd 27,104(11)
-FUNC_START(_rest64gpr_28_x) evldd 28,112(11)
-FUNC_START(_rest64gpr_29_x) evldd 29,120(11)
-FUNC_START(_rest64gpr_30_x) evldd 30,128(11)
-FUNC_START(_rest64gpr_31_x) lwz 0,148(11)
+HIDDEN_FUNC(_rest64gpr_14_x) evldd 14,0(11)
+HIDDEN_FUNC(_rest64gpr_15_x) evldd 15,8(11)
+HIDDEN_FUNC(_rest64gpr_16_x) evldd 16,16(11)
+HIDDEN_FUNC(_rest64gpr_17_x) evldd 17,24(11)
+HIDDEN_FUNC(_rest64gpr_18_x) evldd 18,32(11)
+HIDDEN_FUNC(_rest64gpr_19_x) evldd 19,40(11)
+HIDDEN_FUNC(_rest64gpr_20_x) evldd 20,48(11)
+HIDDEN_FUNC(_rest64gpr_21_x) evldd 21,56(11)
+HIDDEN_FUNC(_rest64gpr_22_x) evldd 22,64(11)
+HIDDEN_FUNC(_rest64gpr_23_x) evldd 23,72(11)
+HIDDEN_FUNC(_rest64gpr_24_x) evldd 24,80(11)
+HIDDEN_FUNC(_rest64gpr_25_x) evldd 25,88(11)
+HIDDEN_FUNC(_rest64gpr_26_x) evldd 26,96(11)
+HIDDEN_FUNC(_rest64gpr_27_x) evldd 27,104(11)
+HIDDEN_FUNC(_rest64gpr_28_x) evldd 28,112(11)
+HIDDEN_FUNC(_rest64gpr_29_x) evldd 29,120(11)
+HIDDEN_FUNC(_rest64gpr_30_x) evldd 30,128(11)
+HIDDEN_FUNC(_rest64gpr_31_x) lwz 0,148(11)
evldd 31,136(11)
addi 1,11,144
mtlr 0
Index: gcc/config/rs6000/e500crtsav32gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtsav32gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsav32gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for saving 32-bit integer registers, called by the compiler. */
/* "Bare" versions that simply return to their caller. */
-FUNC_START(_save32gpr_14) stw 14,-72(11)
-FUNC_START(_save32gpr_15) stw 15,-68(11)
-FUNC_START(_save32gpr_16) stw 16,-64(11)
-FUNC_START(_save32gpr_17) stw 17,-60(11)
-FUNC_START(_save32gpr_18) stw 18,-56(11)
-FUNC_START(_save32gpr_19) stw 19,-52(11)
-FUNC_START(_save32gpr_20) stw 20,-48(11)
-FUNC_START(_save32gpr_21) stw 21,-44(11)
-FUNC_START(_save32gpr_22) stw 22,-40(11)
-FUNC_START(_save32gpr_23) stw 23,-36(11)
-FUNC_START(_save32gpr_24) stw 24,-32(11)
-FUNC_START(_save32gpr_25) stw 25,-28(11)
-FUNC_START(_save32gpr_26) stw 26,-24(11)
-FUNC_START(_save32gpr_27) stw 27,-20(11)
-FUNC_START(_save32gpr_28) stw 28,-16(11)
-FUNC_START(_save32gpr_29) stw 29,-12(11)
-FUNC_START(_save32gpr_30) stw 30,-8(11)
-FUNC_START(_save32gpr_31) stw 31,-4(11)
+HIDDEN_FUNC(_save32gpr_14) stw 14,-72(11)
+HIDDEN_FUNC(_save32gpr_15) stw 15,-68(11)
+HIDDEN_FUNC(_save32gpr_16) stw 16,-64(11)
+HIDDEN_FUNC(_save32gpr_17) stw 17,-60(11)
+HIDDEN_FUNC(_save32gpr_18) stw 18,-56(11)
+HIDDEN_FUNC(_save32gpr_19) stw 19,-52(11)
+HIDDEN_FUNC(_save32gpr_20) stw 20,-48(11)
+HIDDEN_FUNC(_save32gpr_21) stw 21,-44(11)
+HIDDEN_FUNC(_save32gpr_22) stw 22,-40(11)
+HIDDEN_FUNC(_save32gpr_23) stw 23,-36(11)
+HIDDEN_FUNC(_save32gpr_24) stw 24,-32(11)
+HIDDEN_FUNC(_save32gpr_25) stw 25,-28(11)
+HIDDEN_FUNC(_save32gpr_26) stw 26,-24(11)
+HIDDEN_FUNC(_save32gpr_27) stw 27,-20(11)
+HIDDEN_FUNC(_save32gpr_28) stw 28,-16(11)
+HIDDEN_FUNC(_save32gpr_29) stw 29,-12(11)
+HIDDEN_FUNC(_save32gpr_30) stw 30,-8(11)
+HIDDEN_FUNC(_save32gpr_31) stw 31,-4(11)
blr
FUNC_END(_save32gpr_31)
FUNC_END(_save32gpr_30)
Index: gcc/config/rs6000/e500crtsav64gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtsav64gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsav64gpr.asm (working copy)
@@ -41,24 +41,24 @@
/* Routines for saving 64-bit integer registers, called by the compiler. */
-FUNC_START(_save64gpr_14) evstdd 14,0(11)
-FUNC_START(_save64gpr_15) evstdd 15,8(11)
-FUNC_START(_save64gpr_16) evstdd 16,16(11)
-FUNC_START(_save64gpr_17) evstdd 17,24(11)
-FUNC_START(_save64gpr_18) evstdd 18,32(11)
-FUNC_START(_save64gpr_19) evstdd 19,40(11)
-FUNC_START(_save64gpr_20) evstdd 20,48(11)
-FUNC_START(_save64gpr_21) evstdd 21,56(11)
-FUNC_START(_save64gpr_22) evstdd 22,64(11)
-FUNC_START(_save64gpr_23) evstdd 23,72(11)
-FUNC_START(_save64gpr_24) evstdd 24,80(11)
-FUNC_START(_save64gpr_25) evstdd 25,88(11)
-FUNC_START(_save64gpr_26) evstdd 26,96(11)
-FUNC_START(_save64gpr_27) evstdd 27,104(11)
-FUNC_START(_save64gpr_28) evstdd 28,112(11)
-FUNC_START(_save64gpr_29) evstdd 29,120(11)
-FUNC_START(_save64gpr_30) evstdd 30,128(11)
-FUNC_START(_save64gpr_31) evstdd 31,136(11)
+HIDDEN_FUNC(_save64gpr_14) evstdd 14,0(11)
+HIDDEN_FUNC(_save64gpr_15) evstdd 15,8(11)
+HIDDEN_FUNC(_save64gpr_16) evstdd 16,16(11)
+HIDDEN_FUNC(_save64gpr_17) evstdd 17,24(11)
+HIDDEN_FUNC(_save64gpr_18) evstdd 18,32(11)
+HIDDEN_FUNC(_save64gpr_19) evstdd 19,40(11)
+HIDDEN_FUNC(_save64gpr_20) evstdd 20,48(11)
+HIDDEN_FUNC(_save64gpr_21) evstdd 21,56(11)
+HIDDEN_FUNC(_save64gpr_22) evstdd 22,64(11)
+HIDDEN_FUNC(_save64gpr_23) evstdd 23,72(11)
+HIDDEN_FUNC(_save64gpr_24) evstdd 24,80(11)
+HIDDEN_FUNC(_save64gpr_25) evstdd 25,88(11)
+HIDDEN_FUNC(_save64gpr_26) evstdd 26,96(11)
+HIDDEN_FUNC(_save64gpr_27) evstdd 27,104(11)
+HIDDEN_FUNC(_save64gpr_28) evstdd 28,112(11)
+HIDDEN_FUNC(_save64gpr_29) evstdd 29,120(11)
+HIDDEN_FUNC(_save64gpr_30) evstdd 30,128(11)
+HIDDEN_FUNC(_save64gpr_31) evstdd 31,136(11)
blr
FUNC_END(_save64gpr_31)
FUNC_END(_save64gpr_30)
Index: gcc/config/rs6000/e500crtsav64gprctr.asm
===================================================================
--- gcc/config/rs6000/e500crtsav64gprctr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsav64gprctr.asm (working copy)
@@ -43,41 +43,41 @@
registers to be saved is passed in CTR, called by the compiler. */
/* "Bare" versions that return to their caller. */
-FUNC_START(_save64gpr_ctr_14) evstdd 14,0(11)
+HIDDEN_FUNC(_save64gpr_ctr_14) evstdd 14,0(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_15) evstdd 15,8(11)
+HIDDEN_FUNC(_save64gpr_ctr_15) evstdd 15,8(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_16) evstdd 16,16(11)
+HIDDEN_FUNC(_save64gpr_ctr_16) evstdd 16,16(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_17) evstdd 17,24(11)
+HIDDEN_FUNC(_save64gpr_ctr_17) evstdd 17,24(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_18) evstdd 18,32(11)
+HIDDEN_FUNC(_save64gpr_ctr_18) evstdd 18,32(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_19) evstdd 19,40(11)
+HIDDEN_FUNC(_save64gpr_ctr_19) evstdd 19,40(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_20) evstdd 20,48(11)
+HIDDEN_FUNC(_save64gpr_ctr_20) evstdd 20,48(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_21) evstdd 21,56(11)
+HIDDEN_FUNC(_save64gpr_ctr_21) evstdd 21,56(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_22) evstdd 22,64(11)
+HIDDEN_FUNC(_save64gpr_ctr_22) evstdd 22,64(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_23) evstdd 23,72(11)
+HIDDEN_FUNC(_save64gpr_ctr_23) evstdd 23,72(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_24) evstdd 24,80(11)
+HIDDEN_FUNC(_save64gpr_ctr_24) evstdd 24,80(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_25) evstdd 25,88(11)
+HIDDEN_FUNC(_save64gpr_ctr_25) evstdd 25,88(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_26) evstdd 26,96(11)
+HIDDEN_FUNC(_save64gpr_ctr_26) evstdd 26,96(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_27) evstdd 27,104(11)
+HIDDEN_FUNC(_save64gpr_ctr_27) evstdd 27,104(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_28) evstdd 28,112(11)
+HIDDEN_FUNC(_save64gpr_ctr_28) evstdd 28,112(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_29) evstdd 29,120(11)
+HIDDEN_FUNC(_save64gpr_ctr_29) evstdd 29,120(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_30) evstdd 30,128(11)
+HIDDEN_FUNC(_save64gpr_ctr_30) evstdd 30,128(11)
bdz _save64_gpr_ctr_done
-FUNC_START(_save64gpr_ctr_31) evstdd 31,136(11)
+HIDDEN_FUNC(_save64gpr_ctr_31) evstdd 31,136(11)
_save64gpr_ctr_done: blr
FUNC_END(_save64gpr_ctr_31)
FUNC_END(_save64gpr_ctr_30)
Index: gcc/config/rs6000/e500crtsavg32gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtsavg32gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsavg32gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for saving 32-bit integer registers, called by the compiler. */
/* "GOT" versions that load the address of the GOT into lr before returning. */
-FUNC_START(_save32gpr_14_g) stw 14,-72(11)
-FUNC_START(_save32gpr_15_g) stw 15,-68(11)
-FUNC_START(_save32gpr_16_g) stw 16,-64(11)
-FUNC_START(_save32gpr_17_g) stw 17,-60(11)
-FUNC_START(_save32gpr_18_g) stw 18,-56(11)
-FUNC_START(_save32gpr_19_g) stw 19,-52(11)
-FUNC_START(_save32gpr_20_g) stw 20,-48(11)
-FUNC_START(_save32gpr_21_g) stw 21,-44(11)
-FUNC_START(_save32gpr_22_g) stw 22,-40(11)
-FUNC_START(_save32gpr_23_g) stw 23,-36(11)
-FUNC_START(_save32gpr_24_g) stw 24,-32(11)
-FUNC_START(_save32gpr_25_g) stw 25,-28(11)
-FUNC_START(_save32gpr_26_g) stw 26,-24(11)
-FUNC_START(_save32gpr_27_g) stw 27,-20(11)
-FUNC_START(_save32gpr_28_g) stw 28,-16(11)
-FUNC_START(_save32gpr_29_g) stw 29,-12(11)
-FUNC_START(_save32gpr_30_g) stw 30,-8(11)
-FUNC_START(_save32gpr_31_g) stw 31,-4(11)
+HIDDEN_FUNC(_save32gpr_14_g) stw 14,-72(11)
+HIDDEN_FUNC(_save32gpr_15_g) stw 15,-68(11)
+HIDDEN_FUNC(_save32gpr_16_g) stw 16,-64(11)
+HIDDEN_FUNC(_save32gpr_17_g) stw 17,-60(11)
+HIDDEN_FUNC(_save32gpr_18_g) stw 18,-56(11)
+HIDDEN_FUNC(_save32gpr_19_g) stw 19,-52(11)
+HIDDEN_FUNC(_save32gpr_20_g) stw 20,-48(11)
+HIDDEN_FUNC(_save32gpr_21_g) stw 21,-44(11)
+HIDDEN_FUNC(_save32gpr_22_g) stw 22,-40(11)
+HIDDEN_FUNC(_save32gpr_23_g) stw 23,-36(11)
+HIDDEN_FUNC(_save32gpr_24_g) stw 24,-32(11)
+HIDDEN_FUNC(_save32gpr_25_g) stw 25,-28(11)
+HIDDEN_FUNC(_save32gpr_26_g) stw 26,-24(11)
+HIDDEN_FUNC(_save32gpr_27_g) stw 27,-20(11)
+HIDDEN_FUNC(_save32gpr_28_g) stw 28,-16(11)
+HIDDEN_FUNC(_save32gpr_29_g) stw 29,-12(11)
+HIDDEN_FUNC(_save32gpr_30_g) stw 30,-8(11)
+HIDDEN_FUNC(_save32gpr_31_g) stw 31,-4(11)
b _GLOBAL_OFFSET_TABLE_-4
FUNC_END(_save32gpr_31_g)
FUNC_END(_save32gpr_30_g)
Index: gcc/config/rs6000/e500crtsavg64gpr.asm
===================================================================
--- gcc/config/rs6000/e500crtsavg64gpr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsavg64gpr.asm (working copy)
@@ -42,24 +42,24 @@
/* Routines for saving 64-bit integer registers, called by the compiler. */
/* "GOT" versions that load the address of the GOT into lr before returning. */
-FUNC_START(_save64gpr_14_g) evstdd 14,0(11)
-FUNC_START(_save64gpr_15_g) evstdd 15,8(11)
-FUNC_START(_save64gpr_16_g) evstdd 16,16(11)
-FUNC_START(_save64gpr_17_g) evstdd 17,24(11)
-FUNC_START(_save64gpr_18_g) evstdd 18,32(11)
-FUNC_START(_save64gpr_19_g) evstdd 19,40(11)
-FUNC_START(_save64gpr_20_g) evstdd 20,48(11)
-FUNC_START(_save64gpr_21_g) evstdd 21,56(11)
-FUNC_START(_save64gpr_22_g) evstdd 22,64(11)
-FUNC_START(_save64gpr_23_g) evstdd 23,72(11)
-FUNC_START(_save64gpr_24_g) evstdd 24,80(11)
-FUNC_START(_save64gpr_25_g) evstdd 25,88(11)
-FUNC_START(_save64gpr_26_g) evstdd 26,96(11)
-FUNC_START(_save64gpr_27_g) evstdd 27,104(11)
-FUNC_START(_save64gpr_28_g) evstdd 28,112(11)
-FUNC_START(_save64gpr_29_g) evstdd 29,120(11)
-FUNC_START(_save64gpr_30_g) evstdd 30,128(11)
-FUNC_START(_save64gpr_31_g) evstdd 31,136(11)
+HIDDEN_FUNC(_save64gpr_14_g) evstdd 14,0(11)
+HIDDEN_FUNC(_save64gpr_15_g) evstdd 15,8(11)
+HIDDEN_FUNC(_save64gpr_16_g) evstdd 16,16(11)
+HIDDEN_FUNC(_save64gpr_17_g) evstdd 17,24(11)
+HIDDEN_FUNC(_save64gpr_18_g) evstdd 18,32(11)
+HIDDEN_FUNC(_save64gpr_19_g) evstdd 19,40(11)
+HIDDEN_FUNC(_save64gpr_20_g) evstdd 20,48(11)
+HIDDEN_FUNC(_save64gpr_21_g) evstdd 21,56(11)
+HIDDEN_FUNC(_save64gpr_22_g) evstdd 22,64(11)
+HIDDEN_FUNC(_save64gpr_23_g) evstdd 23,72(11)
+HIDDEN_FUNC(_save64gpr_24_g) evstdd 24,80(11)
+HIDDEN_FUNC(_save64gpr_25_g) evstdd 25,88(11)
+HIDDEN_FUNC(_save64gpr_26_g) evstdd 26,96(11)
+HIDDEN_FUNC(_save64gpr_27_g) evstdd 27,104(11)
+HIDDEN_FUNC(_save64gpr_28_g) evstdd 28,112(11)
+HIDDEN_FUNC(_save64gpr_29_g) evstdd 29,120(11)
+HIDDEN_FUNC(_save64gpr_30_g) evstdd 30,128(11)
+HIDDEN_FUNC(_save64gpr_31_g) evstdd 31,136(11)
b _GLOBAL_OFFSET_TABLE_-4
FUNC_END(_save64gpr_31_g)
FUNC_END(_save64gpr_30_g)
Index: gcc/config/rs6000/e500crtsavg64gprctr.asm
===================================================================
--- gcc/config/rs6000/e500crtsavg64gprctr.asm (revision 140940)
+++ gcc/config/rs6000/e500crtsavg64gprctr.asm (working copy)
@@ -42,41 +42,41 @@
/* Routines for saving 64-bit integer registers, called by the compiler. */
/* "GOT" versions that load the address of the GOT into lr before returning. */
-FUNC_START(_save64gpr_ctr_14_g) evstdd 14,0(11)
+HIDDEN_FUNC(_save64gpr_ctr_14_g) evstdd 14,0(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_15_g) evstdd 15,8(11)
+HIDDEN_FUNC(_save64gpr_ctr_15_g) evstdd 15,8(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_16_g) evstdd 16,16(11)
+HIDDEN_FUNC(_save64gpr_ctr_16_g) evstdd 16,16(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_17_g) evstdd 17,24(11)
+HIDDEN_FUNC(_save64gpr_ctr_17_g) evstdd 17,24(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_18_g) evstdd 18,32(11)
+HIDDEN_FUNC(_save64gpr_ctr_18_g) evstdd 18,32(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_19_g) evstdd 19,40(11)
+HIDDEN_FUNC(_save64gpr_ctr_19_g) evstdd 19,40(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_20_g) evstdd 20,48(11)
+HIDDEN_FUNC(_save64gpr_ctr_20_g) evstdd 20,48(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_21_g) evstdd 21,56(11)
+HIDDEN_FUNC(_save64gpr_ctr_21_g) evstdd 21,56(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_22_g) evstdd 22,64(11)
+HIDDEN_FUNC(_save64gpr_ctr_22_g) evstdd 22,64(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_23_g) evstdd 23,72(11)
+HIDDEN_FUNC(_save64gpr_ctr_23_g) evstdd 23,72(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_24_g) evstdd 24,80(11)
+HIDDEN_FUNC(_save64gpr_ctr_24_g) evstdd 24,80(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_25_g) evstdd 25,88(11)
+HIDDEN_FUNC(_save64gpr_ctr_25_g) evstdd 25,88(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_26_g) evstdd 26,96(11)
+HIDDEN_FUNC(_save64gpr_ctr_26_g) evstdd 26,96(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_27_g) evstdd 27,104(11)
+HIDDEN_FUNC(_save64gpr_ctr_27_g) evstdd 27,104(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_28_g) evstdd 28,112(11)
+HIDDEN_FUNC(_save64gpr_ctr_28_g) evstdd 28,112(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_29_g) evstdd 29,120(11)
+HIDDEN_FUNC(_save64gpr_ctr_29_g) evstdd 29,120(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_30_g) evstdd 30,128(11)
+HIDDEN_FUNC(_save64gpr_ctr_30_g) evstdd 30,128(11)
bdz _save64_gpr_ctr_g_done
-FUNC_START(_save64gpr_ctr_31_g) evstdd 31,136(11)
+HIDDEN_FUNC(_save64gpr_ctr_31_g) evstdd 31,136(11)
_save64gpr_ctr_g_done: b _GLOBAL_OFFSET_TABLE_-4
FUNC_END(_save64gpr_ctr_31_g)
FUNC_END(_save64gpr_ctr_30_g)
Index: gcc/config/rs6000/ppc-asm.h
===================================================================
--- gcc/config/rs6000/ppc-asm.h (revision 140940)
+++ gcc/config/rs6000/ppc-asm.h (working copy)
@@ -110,6 +110,11 @@ name: \
.globl GLUE(.,name); \
GLUE(.,name):
+#define HIDDEN_FUNC(name) \
+ FUNC_START(name) \
+ .hidden name; \
+ .hidden GLUE(.,name);
+
#define FUNC_END(name) \
GLUE(.L,name): \
.size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
@@ -136,6 +141,11 @@ name: \
.globl GLUE(.,name); \
GLUE(.,name):
+#define HIDDEN_FUNC(name) \
+ FUNC_START(name) \
+ .hidden name; \
+ .hidden GLUE(.,name);
+
#define FUNC_END(name) \
GLUE(.L,name): \
.size GLUE(.,name),GLUE(.L,name)-GLUE(.,name)
@@ -153,6 +163,10 @@ GLUE(.L,name): \
.globl FUNC_NAME(name); \
FUNC_NAME(name):
+#define HIDDEN_FUNC(name) \
+ FUNC_START(name) \
+ .hidden FUNC_NAME(name);
+
#define FUNC_END(name) \
GLUE(.L,name): \
.size FUNC_NAME(name),GLUE(.L,name)-FUNC_NAME(name)