diff options
author | Koen Kooi <koen@openembedded.org> | 2008-11-17 22:26:22 +0100 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2008-11-17 22:26:22 +0100 |
commit | 051f59ecc15130fb88187c4c6b602801cbb40c79 (patch) | |
tree | 3b745f70162261aa1a5aea940d20b4bb3c78d29f /packages/gcc | |
parent | 6362c83899bb5f169d75678fabdead7083cbccd5 (diff) |
gcc csl 2008q3: add fix for http://hardwarebug.org/2008/10/11/codesourcery-gcc-2008q3-fail/
Diffstat (limited to 'packages/gcc')
-rw-r--r-- | packages/gcc/gcc-csl-arm-2008q3.inc | 3 | ||||
-rw-r--r-- | packages/gcc/gcc-csl-arm-2008q3/gcc-csl-2008q3-hotfix.diff | 2106 |
2 files changed, 2108 insertions, 1 deletions
diff --git a/packages/gcc/gcc-csl-arm-2008q3.inc b/packages/gcc/gcc-csl-arm-2008q3.inc index 8985a7cbff..059c74210c 100644 --- a/packages/gcc/gcc-csl-arm-2008q3.inc +++ b/packages/gcc/gcc-csl-arm-2008q3.inc @@ -6,11 +6,12 @@ PV = "4.3.2+csl-arm-2008q3-39" FILESDIR = "${FILE_DIRNAME}/gcc-csl-arm-2008q3" SRC_URI = "http://www.codesourcery.com/public/gnu_toolchain/arm-none-eabi/arm-2008q3-39-arm-none-eabi.src.tar.bz2 \ + file://gcc-csl-2008q3-hotfix.diff;patch=1 \ file://arm-nolibfloat.patch;patch=1 \ file://arm-softfloat.patch;patch=1 \ # file://gcc-4.3.1-SYSROOT_CFLAGS_FOR_TARGET.patch;patch=1 \ # file://gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch;patch=1 \ - file://gcc-flags-for-build.patch;patch=1 \ +# file://gcc-flags-for-build.patch;patch=1 \ " diff --git a/packages/gcc/gcc-csl-arm-2008q3/gcc-csl-2008q3-hotfix.diff b/packages/gcc/gcc-csl-arm-2008q3/gcc-csl-2008q3-hotfix.diff new file mode 100644 index 0000000000..18f2328574 --- /dev/null +++ b/packages/gcc/gcc-csl-arm-2008q3/gcc-csl-2008q3-hotfix.diff @@ -0,0 +1,2106 @@ +diff -Nurd gcc-4.3/ChangeLog.csl gcc-4.3-new/ChangeLog.csl +--- gcc-4.3/ChangeLog.csl 2008-10-01 14:56:28.000000000 +0200 ++++ gcc-4.3-new/ChangeLog.csl 2008-10-18 13:08:51.000000000 +0200 +@@ -1,3 +1,190 @@ ++2008-10-16 Nathan Froyd <froydnj@codesourcery.com> ++ ++ gcc/ ++ * config.gcc (powerpc-*-eabi*): Add rs6000/t-cs-eabi when ++ --enable-extra-sgxx-multilibs is passed to configure. ++ * config/rs6000/t-ppcgas (MULTILIB_OPTIONS): Remove te500mc. ++ (MULTILIB_DIRNAMES): Likewise. ++ (MULTILIB_EXCEPTIONS): Likewise. ++ * config/rs6000/t-cs-eabi: New file. ++ ++2008-10-16 Julian Brown <julian@codesourcery.com> ++ ++ Issue #4039 ++ ++ gcc/ ++ * config/arm/neon.md (movmisalign<mode>): Use expander/unnamed insn ++ for both D & Q variants. Don't permit both operands to be mems. ++ * release-notes-csl.xml (Misaligned NEON memory accesses): Add note. ++ ++2008-10-15 Catherine Moore <clm@codesourcery.com> ++ ++ gcc/testsuite/ ++ * gcc-target/mips/octeon-1.c (dg-mips-options): Use -mno-abicalls. ++ * gcc-target/mips/octeon-5.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-6.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-18.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-19.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-23.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-28.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-34.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-37.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-43.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-44.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-49.c (dg-mips-options): Likewise. ++ * gcc-target/mips/octeon-54.c (dg-mips-options): Likewise. ++ ++2008-10-14 Sandra Loosemore <sandra@codesourcery.com> ++ ++ Issue #4017 ++ ++ * release-notes-csl.xml (Linker script option syntax): New note. ++ ++ gcc/ ++ * config.gcc (powerpc-*): Make t-ppcgas imply usegas.h. ++ * config/svr4.h (SVR4_ASM_SPEC): New. ++ (ASM_SPEC): Inherit from SVR4_ASM_SPEC. ++ * config/rs6000/sysv4.h (ASM_SPEC): Inherit from SVR4_ASM_SPEC. ++ ++ gcc/doc/ ++ * invoke.texi (Option Summary): Add -T to linker options. ++ (Link Options): Document -T. ++ ++2008-10-13 Nathan Froyd <froydnj@codesourcery.com> ++ ++ gcc/ ++ * config/rs6000/rs6000.c (rs6000_file_start): Output gnu ++ attribute for struct return convention. ++ ++2008-10-13 Paul Brook <paul@codesourcery.com> ++ ++ gcc/ ++ * config/arm/arm.h (fputype): Remove stray comma. ++ ++2008-10-13 Andrew Stubbs <ams@codesourcery.com> ++ ++ Issue #3884 ++ ++ gcc/ ++ * doc/invoke.texi (PowerPC Options): -meabi option no longer places ++ __eabi function in main. ++ ++2008-10-12 Mark Mitchell <mark@codesourcery.com> ++ ++ Issue #3224 ++ * release-notes-csl.xml: Mention OpenMP add-on. ++ ++2008-10-12 Catherine Moore <clm@codesourcery.com> ++ ++ Issue # 3903 ++ ++ Backport: ++ ++ 2008-07-28 Ilie Garbacea <ilie@mips.com> ++ Chao-ying Fu <fu@mips.com> ++ ++ * configure.tgt: Enable futex for MIPS. ++ * config/linux/mips/futex.h: New file. ++ ++2008-10-12 Catherine Moore <clm@codesourcery.com> ++ ++ gcc/ ++ * config/mips/mips.opt (muclibc): New option entry. ++ * config/mips/mips.c (mips_override_options): Disable ++ __thread support when the -muclibc option is used. ++ ++2008-10-11 Maxim Kuvyrkov <maxim@codesourcery.com> ++ ++ gcc/ ++ * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of ++ PC-relative addressing when compiling for uclinux PIC. ++ ++2008-10-09 Catherine Moore <clm@codesourcery.com> ++ ++ Issue #3312 ++ ++ gcc/ ++ * config/mips/mips.h ( DSP_CTRL_REG_FIRST): Define. ++ (DSP_CTRL_REG_LAST): Define. ++ * config/mips/mips.c (mips_conditional_register_usage): Handle ++ DSP registers. ++ ++2008-10-08 Maxim Kuvyrkov <maxim@codesourcery.com> ++ ++ * release-notes-csl.xml: Fix typo. ++ ++2008-10-08 Nathan Sidwell <nathan@codesourcery.com> ++ Maxim Kuvyrkov <maxim@codesourcery.com> ++ ++ * release-notes-csl.xml (Shared Libraries bug fix): New. ++ ++ gcc/ ++ * config/m68k/lb1sf68.asm (__cmpdf_internal, __cmpsf_internal): Hide. ++ (__cmpdf, __cmpsf): Use PIC call sequence. ++ ++2008-10-07 Nathan Froyd <froydnj@codesourcery.com> ++ ++ Issue #3988 ++ ++ * release-notes-csl.xml (Dynamic libraries and -Os bug fix): New. ++ ++ gcc/ ++ * 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. ++ ++2008-10-07 Nathan Sidwell <nathan@codesourcery.com> ++ ++ * release-notes-csl.xml: Document it. ++ ++ gcc/ ++ * doc/invoke.texi (MIPS Options): Add ice9 arch. ++ * config/mips/mips.c (mips_cpu_info_table): Add ice9 arch. ++ ++2008-10-03 Catherine Moore <clm@codesourcery.com> ++ ++ gcc/testsuite/ ++ * gcc.target/mips/fix-ice9a-1.c: Disable for soft-float ++ multilibs. ++ * gcc.target/mips/fix-ice9a-1.c: Likewise. ++ ++2008-10-03 Kazu Hirata <kazu@codesourcery.com> ++ ++ Backport: ++ gcc/testsuite/ ++ 2008-09-23 Eric Botcazou <ebotcazou@adacore.com> ++ ++ * gcc.dg/pragma-init-fini.c: Use dg-warning in lieu of dg-error. ++ * gcc.dg/pragma-align-2.c: Likewise. ++ * gcc.dg/format/cmn-err-1.c: Likewise. ++ ++2008-10-02 Catherine Moore <clm@codesourcery.com> ++ ++ gcc/testsuite/ ++ * gcc.target/mips/lazy-binding-1.c: Compile with -fpic. ++ ++2008-10-02 Maciej W. Rozycki <macro@codesourcery.com> ++ ++ Issue #3673 ++ gcc/testsuite/ ++ * lib/target-supports.exp ++ (check_effective_target_arm_iwmmxt_ok): New procedure. ++ * gcc.dg/arm-mmx-1.c: Only run if arm_iwmmxt_ok. ++ + 2008-09-29 Joseph Myers <joseph@codesourcery.com> + + Backport: +diff -Nurd gcc-4.3/gcc/config/arm/arm.h gcc-4.3-new/gcc/config/arm/arm.h +--- gcc-4.3/gcc/config/arm/arm.h 2008-10-01 14:51:02.000000000 +0200 ++++ gcc-4.3-new/gcc/config/arm/arm.h 2008-10-18 12:44:43.000000000 +0200 +@@ -329,7 +329,7 @@ + /* Neon. */ + FPUTYPE_NEON, + /* Neon with half-precision float extensions. */ +- FPUTYPE_NEON_FP16, ++ FPUTYPE_NEON_FP16 + }; + + /* Recast the floating point class to be the floating point attribute. */ +diff -Nurd gcc-4.3/gcc/config/arm/neon.md gcc-4.3-new/gcc/config/arm/neon.md +--- gcc-4.3/gcc/config/arm/neon.md 2008-10-01 14:51:02.000000000 +0200 ++++ gcc-4.3-new/gcc/config/arm/neon.md 2008-10-18 12:44:43.000000000 +0200 +@@ -659,21 +659,36 @@ + neon_disambiguate_copy (operands, dest, src, 4); + }) + +-(define_insn "movmisalign<mode>" ++(define_expand "movmisalign<mode>" ++ [(set (match_operand:VDQX 0 "nonimmediate_operand" "") ++ (unspec:VDQX [(match_operand:VDQX 1 "general_operand" "")] ++ UNSPEC_MISALIGNED_ACCESS))] ++ "TARGET_NEON && !BYTES_BIG_ENDIAN" ++{ ++ if (!s_register_operand (operands[0], <MODE>mode) ++ && !s_register_operand (operands[1], <MODE>mode)) ++ FAIL; ++}) ++ ++(define_insn "*movmisalign<mode>_neon" + [(set (match_operand:VDX 0 "nonimmediate_operand" "=Um,w") + (unspec:VDX [(match_operand:VDX 1 "general_operand" " w, Um")] + UNSPEC_MISALIGNED_ACCESS))] +- "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "TARGET_NEON && !BYTES_BIG_ENDIAN ++ && ( s_register_operand (operands[0], <MODE>mode) ++ || s_register_operand (operands[1], <MODE>mode))" + "@ + vst1.<V_sz_elem>\t{%P1}, %A0 + vld1.<V_sz_elem>\t{%P0}, %A1" + [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs,neon_vld1_1_2_regs")]) + +-(define_insn "movmisalign<mode>" ++(define_insn "*movmisalign<mode>_neon" + [(set (match_operand:VQX 0 "nonimmediate_operand" "=Um,w") + (unspec:VQX [(match_operand:VQX 1 "general_operand" " w, Um")] + UNSPEC_MISALIGNED_ACCESS))] +- "TARGET_NEON && !BYTES_BIG_ENDIAN" ++ "TARGET_NEON && !BYTES_BIG_ENDIAN ++ && ( s_register_operand (operands[0], <MODE>mode) ++ || s_register_operand (operands[1], <MODE>mode))" + "@ + vst1.<V_sz_elem>\t{%q1}, %A0 + vld1.<V_sz_elem>\t{%q0}, %A1" +diff -Nurd gcc-4.3/gcc/config/m68k/lb1sf68.asm gcc-4.3-new/gcc/config/m68k/lb1sf68.asm +--- gcc-4.3/gcc/config/m68k/lb1sf68.asm 2008-10-01 14:50:48.000000000 +0200 ++++ gcc-4.3-new/gcc/config/m68k/lb1sf68.asm 2008-10-18 12:43:53.000000000 +0200 +@@ -129,30 +129,6 @@ + + #else /* __PIC__ */ + +- /* Common for Linux and uClinux, the latter with either +- -mid-shared-library or -msep-data. */ +- +- .macro PICCALL addr +-#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) +- lea \addr-.-8,a0 +- jsr pc@(a0) +-#else +- bsr \addr +-#endif +- .endm +- +- .macro PICJUMP addr +- /* ISA C has no bra.l instruction, and since this assembly file +- gets assembled into multiple object files, we avoid the +- bra instruction entirely. */ +-#if defined (__mcoldfire__) && !defined (__mcfisab__) +- lea \addr-.-8,a0 +- jmp pc@(a0) +-#else +- bra \addr +-#endif +- .endm +- + # if defined (__uClinux__) + + /* Versions for uClinux */ +@@ -171,6 +147,16 @@ + movel \sym@GOT(\areg), sp@- + .endm + ++ .macro PICCALL addr ++ PICLEA \addr,a0 ++ jsr a0@ ++ .endm ++ ++ .macro PICJUMP addr ++ PICLEA \addr,a0 ++ jmp a0@ ++ .endm ++ + # else /* !__ID_SHARED_LIBRARY__ */ + + /* Versions for -msep-data */ +@@ -183,6 +169,27 @@ + movel \sym@GOT(a5), sp@- + .endm + ++ .macro PICCALL addr ++#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) ++ lea \addr-.-8,a0 ++ jsr pc@(a0) ++#else ++ bsr \addr ++#endif ++ .endm ++ ++ .macro PICJUMP addr ++ /* ISA C has no bra.l instruction, and since this assembly file ++ gets assembled into multiple object files, we avoid the ++ bra instruction entirely. */ ++#if defined (__mcoldfire__) && !defined (__mcfisab__) ++ lea \addr-.-8,a0 ++ jmp pc@(a0) ++#else ++ bra \addr ++#endif ++ .endm ++ + # endif + + # else /* !__uClinux__ */ +@@ -201,6 +208,27 @@ + movel \sym@GOT(\areg), sp@- + .endm + ++ .macro PICCALL addr ++#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) ++ lea \addr-.-8,a0 ++ jsr pc@(a0) ++#else ++ bsr \addr ++#endif ++ .endm ++ ++ .macro PICJUMP addr ++ /* ISA C has no bra.l instruction, and since this assembly file ++ gets assembled into multiple object files, we avoid the ++ bra instruction entirely. */ ++#if defined (__mcoldfire__) && !defined (__mcfisab__) ++ lea \addr-.-8,a0 ++ jmp pc@(a0) ++#else ++ bra \addr ++#endif ++ .endm ++ + # endif + #endif /* __PIC__ */ + +@@ -648,6 +676,7 @@ + .globl SYM (__negdf2) + .globl SYM (__cmpdf2) + .globl SYM (__cmpdf2_internal) ++ .hidden SYM (__cmpdf2_internal) + + .text + .even +@@ -2410,7 +2439,7 @@ + movl a6@(16),sp@- + movl a6@(12),sp@- + movl a6@(8),sp@- +- bsr SYM (__cmpdf2_internal) ++ PICCALL SYM (__cmpdf2_internal) + unlk a6 + rts + +@@ -2562,6 +2591,7 @@ + .globl SYM (__negsf2) + .globl SYM (__cmpsf2) + .globl SYM (__cmpsf2_internal) ++ .hidden SYM (__cmpsf2_internal) + + | These are common routines to return and signal exceptions. + +@@ -3816,7 +3846,7 @@ + pea 1 + movl a6@(12),sp@- + movl a6@(8),sp@- +- bsr (__cmpsf2_internal) ++ PICCALL SYM (__cmpsf2_internal) + unlk a6 + rts + +diff -Nurd gcc-4.3/gcc/config/mips/mips.c gcc-4.3-new/gcc/config/mips/mips.c +--- gcc-4.3/gcc/config/mips/mips.c 2008-10-01 14:51:08.000000000 +0200 ++++ gcc-4.3-new/gcc/config/mips/mips.c 2008-10-18 12:45:05.000000000 +0200 +@@ -657,6 +657,7 @@ + { "sr71000", PROCESSOR_SR71000, 64, PTF_AVOID_BRANCHLIKELY }, + { "xlr", PROCESSOR_XLR, 64, 0 }, + { "octeon", PROCESSOR_OCTEON, 64, 0 }, ++ { "ice9", PROCESSOR_5KF, 64 }, /* May diverge from 5kf in future. */ + }; + + /* Default costs. If these are used for a processor we should look +@@ -12577,6 +12578,10 @@ + /* Function to allocate machine-dependent function status. */ + init_machine_status = &mips_init_machine_status; + ++ /* __thread_support is not supported by uClibc. */ ++ if (building_for_uclibc) ++ targetm.have_tls = 0; ++ + /* Default to working around R4000 errata only if the processor + was selected explicitly. */ + if ((target_flags_explicit & MASK_FIX_R4000) == 0 +@@ -12629,18 +12634,24 @@ + #undef SWAP_STRING + #undef SWAP_INT + } +- +-/* Implement CONDITIONAL_REGISTER_USAGE. */ +- + void + mips_conditional_register_usage (void) + { ++ ++ /* These DSP control register fields are global. */ ++ if (ISA_HAS_DSP) ++ { ++ global_regs[CCDSP_PO_REGNUM] = 1; ++ global_regs[CCDSP_SC_REGNUM] = 1; ++ } + if (!ISA_HAS_DSP) + { + int regno; + + for (regno = DSP_ACC_REG_FIRST; regno <= DSP_ACC_REG_LAST; regno++) + fixed_regs[regno] = call_used_regs[regno] = 1; ++ for (regno = DSP_CTRL_REG_FIRST; regno <= DSP_CTRL_REG_LAST; regno++) ++ fixed_regs[regno] = call_used_regs[regno] = 1; + } + if (!TARGET_HARD_FLOAT) + { +diff -Nurd gcc-4.3/gcc/config/mips/mips.h gcc-4.3-new/gcc/config/mips/mips.h +--- gcc-4.3/gcc/config/mips/mips.h 2008-10-01 14:51:08.000000000 +0200 ++++ gcc-4.3-new/gcc/config/mips/mips.h 2008-10-18 12:45:05.000000000 +0200 +@@ -1615,6 +1615,9 @@ + #define DSP_ACC_REG_LAST 181 + #define DSP_ACC_REG_NUM (DSP_ACC_REG_LAST - DSP_ACC_REG_FIRST + 1) + ++#define DSP_CTRL_REG_FIRST 182 ++#define DSP_CTRL_REG_LAST 187 ++ + #define AT_REGNUM (GP_REG_FIRST + 1) + #define HI_REGNUM (TARGET_BIG_ENDIAN ? MD_REG_FIRST : MD_REG_FIRST + 1) + #define LO_REGNUM (TARGET_BIG_ENDIAN ? MD_REG_FIRST + 1 : MD_REG_FIRST) +diff -Nurd gcc-4.3/gcc/config/mips/mips.opt gcc-4.3-new/gcc/config/mips/mips.opt +--- gcc-4.3/gcc/config/mips/mips.opt 2008-10-01 14:51:08.000000000 +0200 ++++ gcc-4.3-new/gcc/config/mips/mips.opt 2008-10-18 12:45:05.000000000 +0200 +@@ -272,6 +272,10 @@ + Target RejectNegative Joined Var(mips_tune_string) + -mtune=PROCESSOR Optimize the output for PROCESSOR + ++muclibc ++Target RejectNegative Var(building_for_uclibc) ++Building with -muclibc ++ + muninit-const-in-rodata + Target Report Var(TARGET_UNINIT_CONST_IN_RODATA) + Put uninitialized constants in ROM (needs -membedded-data) +diff -Nurd gcc-4.3/gcc/config/rs6000/crtresfpr.asm gcc-4.3-new/gcc/config/rs6000/crtresfpr.asm +--- gcc-4.3/gcc/config/rs6000/crtresfpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtresfpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -49,24 +49,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/crtresgpr.asm gcc-4.3-new/gcc/config/rs6000/crtresgpr.asm +--- gcc-4.3/gcc/config/rs6000/crtresgpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtresgpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -49,24 +49,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/crtresxfpr.asm gcc-4.3-new/gcc/config/rs6000/crtresxfpr.asm +--- gcc-4.3/gcc/config/rs6000/crtresxfpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtresxfpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -51,24 +51,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/crtresxgpr.asm gcc-4.3-new/gcc/config/rs6000/crtresxgpr.asm +--- gcc-4.3/gcc/config/rs6000/crtresxgpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtresxgpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -49,24 +49,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/crtsavfpr.asm gcc-4.3-new/gcc/config/rs6000/crtsavfpr.asm +--- gcc-4.3/gcc/config/rs6000/crtsavfpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtsavfpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -49,24 +49,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/crtsavgpr.asm gcc-4.3-new/gcc/config/rs6000/crtsavgpr.asm +--- gcc-4.3/gcc/config/rs6000/crtsavgpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/crtsavgpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -49,24 +49,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtres32gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtres32gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtres32gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtres32gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtres64gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtres64gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtres64gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtres64gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtres64gprctr.asm gcc-4.3-new/gcc/config/rs6000/e500crtres64gprctr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtres64gprctr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtres64gprctr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,41 +43,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtrest32gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtrest32gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtrest32gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtrest32gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtrest64gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtrest64gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtrest64gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtrest64gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -42,24 +42,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtresx32gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtresx32gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtresx32gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtresx32gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtresx64gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtresx64gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtresx64gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtresx64gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -42,24 +42,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 +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsav32gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsav32gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsav32gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsav32gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsav64gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsav64gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsav64gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsav64gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -42,24 +42,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsav64gprctr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsav64gprctr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsav64gprctr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsav64gprctr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -44,41 +44,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsavg32gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsavg32gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsavg32gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsavg32gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsavg64gpr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsavg64gpr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsavg64gpr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsavg64gpr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,24 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/e500crtsavg64gprctr.asm gcc-4.3-new/gcc/config/rs6000/e500crtsavg64gprctr.asm +--- gcc-4.3/gcc/config/rs6000/e500crtsavg64gprctr.asm 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/e500crtsavg64gprctr.asm 2008-10-18 12:44:16.000000000 +0200 +@@ -43,41 +43,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) +diff -Nurd gcc-4.3/gcc/config/rs6000/ppc-asm.h gcc-4.3-new/gcc/config/rs6000/ppc-asm.h +--- gcc-4.3/gcc/config/rs6000/ppc-asm.h 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/ppc-asm.h 2008-10-18 12:44:16.000000000 +0200 +@@ -110,6 +110,11 @@ + .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 @@ + .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 @@ + .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) +diff -Nurd gcc-4.3/gcc/config/rs6000/rs6000.c gcc-4.3-new/gcc/config/rs6000/rs6000.c +--- gcc-4.3/gcc/config/rs6000/rs6000.c 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/rs6000.c 2008-10-18 12:44:16.000000000 +0200 +@@ -2476,6 +2476,8 @@ + (TARGET_ALTIVEC_ABI ? 2 + : TARGET_SPE_ABI ? 3 + : 1)); ++ fprintf (file, "\t.gnu_attribute 12, %d\n", ++ aix_struct_return ? 2 : 1); + } + #endif + +diff -Nurd gcc-4.3/gcc/config/rs6000/sysv4.h gcc-4.3-new/gcc/config/rs6000/sysv4.h +--- gcc-4.3/gcc/config/rs6000/sysv4.h 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/sysv4.h 2008-10-18 12:44:16.000000000 +0200 +@@ -585,9 +585,9 @@ + /* Override svr4.h definition. */ + #undef ASM_SPEC + #define ASM_SPEC "%(asm_cpu) \ +-%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \ +-%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ +-%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \ ++%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}" \ ++SVR4_ASM_SPEC \ ++"%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \ + %{memb|msdata|msdata=eabi: -memb} \ + %{mlittle|mlittle-endian:-mlittle; \ + mbig|mbig-endian :-mbig; \ +diff -Nurd gcc-4.3/gcc/config/rs6000/t-cs-eabi gcc-4.3-new/gcc/config/rs6000/t-cs-eabi +--- gcc-4.3/gcc/config/rs6000/t-cs-eabi 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.3-new/gcc/config/rs6000/t-cs-eabi 2008-10-18 12:44:16.000000000 +0200 +@@ -0,0 +1,17 @@ ++# Multilibs for powerpc embedded ELF targets. ++ ++MULTILIB_OPTIONS = te500v1/te500v2/te600/te500mc \ ++ msoft-float ++ ++MULTILIB_DIRNAMES = te500v1 te500v2 te600 te500mc \ ++ nof ++ ++MULTILIB_EXCEPTIONS = *te600*/*msoft-float* \ ++ *te500v1*/*msoft-float* \ ++ *te500v2*/*msoft-float* \ ++ *te500mc*/*msoft-float* ++ ++MULTILIB_EXTRA_OPTS = mno-eabi mstrict-align ++ ++MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT} \ ++ ${MULTILIB_MATCHES_ENDIAN} +diff -Nurd gcc-4.3/gcc/config/rs6000/t-ppcgas gcc-4.3-new/gcc/config/rs6000/t-ppcgas +--- gcc-4.3/gcc/config/rs6000/t-ppcgas 2008-10-01 14:50:54.000000000 +0200 ++++ gcc-4.3-new/gcc/config/rs6000/t-ppcgas 2008-10-18 12:44:16.000000000 +0200 +@@ -1,15 +1,14 @@ + # Multilibs for powerpc embedded ELF targets. + +-MULTILIB_OPTIONS = te500v1/te500v2/te600/te500mc \ ++MULTILIB_OPTIONS = te500v1/te500v2/te600 \ + msoft-float + +-MULTILIB_DIRNAMES = te500v1 te500v2 te600 te500mc \ ++MULTILIB_DIRNAMES = te500v1 te500v2 te600 \ + nof + + MULTILIB_EXCEPTIONS = *te600*/*msoft-float* \ + *te500v1*/*msoft-float* \ +- *te500v2*/*msoft-float* \ +- *te500mc*/*msoft-float* ++ *te500v2*/*msoft-float* + + MULTILIB_EXTRA_OPTS = mno-eabi mstrict-align + +diff -Nurd gcc-4.3/gcc/config/svr4.h gcc-4.3-new/gcc/config/svr4.h +--- gcc-4.3/gcc/config/svr4.h 2008-10-01 14:51:13.000000000 +0200 ++++ gcc-4.3-new/gcc/config/svr4.h 2008-10-18 12:45:26.000000000 +0200 +@@ -55,7 +55,8 @@ + && strcmp (STR, "Tdata") && strcmp (STR, "Ttext") \ + && strcmp (STR, "Tbss")) + +-/* Provide an ASM_SPEC appropriate for svr4. Here we try to support as ++/* Provide an ASM_SPEC appropriate for svr4. ++ If we're not using GAS, we try to support as + many of the specialized svr4 assembler options as seems reasonable, + given that there are certain options which we can't (or shouldn't) + support directly due to the fact that they conflict with other options +@@ -74,9 +75,16 @@ + read its stdin. + */ + +-#undef ASM_SPEC +-#define ASM_SPEC \ ++#ifdef USE_GAS ++#define SVR4_ASM_SPEC \ ++ "%{v:-V} %{Wa,*:%*}" ++#else ++#define SVR4_ASM_SPEC \ + "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" ++#endif ++ ++#undef ASM_SPEC ++#define ASM_SPEC SVR4_ASM_SPEC + + #define AS_NEEDS_DASH_FOR_PIPED_INPUT + +diff -Nurd gcc-4.3/gcc/config.gcc gcc-4.3-new/gcc/config.gcc +--- gcc-4.3/gcc/config.gcc 2008-10-01 14:51:16.000000000 +0200 ++++ gcc-4.3-new/gcc/config.gcc 2008-10-18 12:45:36.000000000 +0200 +@@ -2027,12 +2027,12 @@ + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm" + ;; + powerpc-*-eabisim*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h" + extra_options="${extra_options} rs6000/sysv4.opt" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + ;; + powerpc-*-elf*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h" + extra_options="${extra_options} rs6000/sysv4.opt" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + use_fixproto=yes +@@ -2043,9 +2043,12 @@ + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm" + ;; + powerpc-*-eabi*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h" + extra_options="${extra_options} rs6000/sysv4.opt" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" ++ if test x$enable_extra_sgxx_multilibs = xyes; then ++ tmake_file="${tmake_file} rs6000/t-cs-eabi" ++ fi + ;; + powerpc-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h" +@@ -2132,7 +2135,7 @@ + esac + ;; + powerpc-wrs-windiss*) # Instruction-level simulator for VxWorks. +- tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h" ++ tm_file="${tm_file} elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + thread_file="" +@@ -2156,28 +2159,28 @@ + use_fixproto=yes + ;; + powerpcle-*-elf*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + use_fixproto=yes + ;; + powerpcle-*-eabisim*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + ;; + powerpcle-*-eabi*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + ;; + powerpc-*-kaos*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h kaos.h rs6000/kaos-ppc.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h kaos.h rs6000/kaos-ppc.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + ;; + powerpcle-*-kaos*) +- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h kaos.h rs6000/kaos-ppc.h" ++ tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h kaos.h rs6000/kaos-ppc.h" + tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm" + extra_options="${extra_options} rs6000/sysv4.opt" + ;; +diff -Nurd gcc-4.3/gcc/doc/invoke.texi gcc-4.3-new/gcc/doc/invoke.texi +--- gcc-4.3/gcc/doc/invoke.texi 2008-10-01 14:39:48.000000000 +0200 ++++ gcc-4.3-new/gcc/doc/invoke.texi 2008-10-18 12:02:55.000000000 +0200 +@@ -389,7 +389,7 @@ + @gccoptlist{@var{object-file-name} -l@var{library} @gol + -nostartfiles -nodefaultlibs -nostdlib -pie -rdynamic @gol + -s -static -static-libgcc -shared -shared-libgcc -symbolic @gol +--Wl,@var{option} -Xlinker @var{option} @gol ++-T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol + -u @var{symbol}} + + @item Directory Options +@@ -7619,6 +7619,14 @@ + option @samp{-Xlinker -z -Xlinker defs}). Only a few systems support + this option. + ++@item -T @var{script} ++@opindex T ++@cindex linker script ++Use @var{script} as the linker script. This option is supported by most ++systems using the GNU linker. On some targets, such as bare-board ++targets without an operating system, the @option{-T} option may be required ++when linking to avoid references to undefined symbols. ++ + @item -Xlinker @var{option} + @opindex Xlinker + Pass @var{option} as an option to the linker. You can use this to +@@ -11971,6 +11979,7 @@ + @samp{24kec}, @samp{24kef2_1}, @samp{24kef1_1}, + @samp{34kc}, @samp{34kf2_1}, @samp{34kf1_1}, + @samp{74kc}, @samp{74kf2_1}, @samp{74kf1_1}, @samp{74kf3_2}, ++@samp{ice9}, + @samp{m4k}, + @samp{orion}, + @samp{r2000}, @samp{r3000}, @samp{r3900}, @samp{r4000}, @samp{r4400}, +@@ -13600,12 +13609,11 @@ + On System V.4 and embedded PowerPC systems do (do not) adhere to the + Embedded Applications Binary Interface (eabi) which is a set of + modifications to the System V.4 specifications. Selecting @option{-meabi} +-means that the stack is aligned to an 8 byte boundary, a function +-@code{__eabi} is called to from @code{main} to set up the eabi +-environment, and the @option{-msdata} option can use both @code{r2} and ++means that the stack is aligned to an 8 byte boundary, ++and the @option{-msdata} option can use both @code{r2} and + @code{r13} to point to two separate small data areas. Selecting + @option{-mno-eabi} means that the stack is aligned to a 16 byte boundary, +-do not call an initialization function from @code{main}, and the ++and the + @option{-msdata} option will only use @code{r13} to point to a single + small data area. The @option{-meabi} option is on by default if you + configured GCC using one of the @samp{powerpc*-*-eabi*} options. +diff -Nurd gcc-4.3/gcc/testsuite/gcc.dg/arm-mmx-1.c gcc-4.3-new/gcc/testsuite/gcc.dg/arm-mmx-1.c +--- gcc-4.3/gcc/testsuite/gcc.dg/arm-mmx-1.c 2008-10-01 14:44:19.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.dg/arm-mmx-1.c 2008-10-18 12:19:00.000000000 +0200 +@@ -7,6 +7,7 @@ + /* { dg-skip-if "" { *-*-* } { "-march=*" } { "-march=iwmmxt" } } */ + /* { dg-options "-O -mno-apcs-frame -mcpu=iwmmxt -mabi=iwmmxt" } */ + /* { dg-require-effective-target arm32 } */ ++/* { dg-require-effective-target arm_iwmmxt_ok } */ + /* { dg-final { scan-assembler "ldmfd\[ ]sp!.*ip,\[ ]*pc" } } */ + + /* This function uses all the call-saved registers, namely r4, r5, r6, +diff -Nurd gcc-4.3/gcc/testsuite/gcc.dg/format/cmn-err-1.c gcc-4.3-new/gcc/testsuite/gcc.dg/format/cmn-err-1.c +--- gcc-4.3/gcc/testsuite/gcc.dg/format/cmn-err-1.c 2008-10-01 14:44:18.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.dg/format/cmn-err-1.c 2008-10-18 12:18:58.000000000 +0200 +@@ -27,12 +27,12 @@ + cmn_err_func (0, "%p", string); + cmn_err_func (0, "%16b", i, "\01Foo"); + +- cmn_err_func (0, "%i", i); /* { dg-error "unknown|too many" } */ +- cmn_err_func (0, "%d", l); /* { dg-error "expects type" } */ +- cmn_err_func (0, "%b"); /* { dg-error "too few" } */ +- cmn_err_func (0, "%b", i); /* { dg-error "too few" } */ +- cmn_err_func (0, "%b", i, i); /* { dg-error "expects type" } */ +- cmn_err_func (0, "%b", string, i); /* { dg-error "expects type" } */ +- cmn_err_func (0, "%p", 3); /* { dg-error "expects type" } */ ++ cmn_err_func (0, "%i", i); /* { dg-warning "unknown|too many" } */ ++ cmn_err_func (0, "%d", l); /* { dg-warning "expects type" } */ ++ cmn_err_func (0, "%b"); /* { dg-warning "too few" } */ ++ cmn_err_func (0, "%b", i); /* { dg-warning "too few" } */ ++ cmn_err_func (0, "%b", i, i); /* { dg-warning "expects type" } */ ++ cmn_err_func (0, "%b", string, i); /* { dg-warning "expects type" } */ ++ cmn_err_func (0, "%p", 3); /* { dg-warning "expects type" } */ + return 0; + } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.dg/pragma-align-2.c gcc-4.3-new/gcc/testsuite/gcc.dg/pragma-align-2.c +--- gcc-4.3/gcc/testsuite/gcc.dg/pragma-align-2.c 2008-10-01 14:44:19.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.dg/pragma-align-2.c 2008-10-18 12:19:00.000000000 +0200 +@@ -19,15 +19,15 @@ + + #pragma align 8(not_defined) + +-#pragma align 9(odd_align) /* { dg-error "invalid alignment" } */ +-#pragma align 256(high_align) /* { dg-error "invalid alignment" } */ +-#pragma align -1(neg_align) /* { dg-error "malformed" } */ +-#pragma align bad_align /* { dg-error "malformed" } */ +-#pragma align 1(bad_align /* { dg-error "malformed" } */ ++#pragma align 9(odd_align) /* { dg-warning "invalid alignment" } */ ++#pragma align 256(high_align) /* { dg-warning "invalid alignment" } */ ++#pragma align -1(neg_align) /* { dg-warning "malformed" } */ ++#pragma align bad_align /* { dg-warning "malformed" } */ ++#pragma align 1(bad_align /* { dg-warning "malformed" } */ + + int x, x1, x2, x4, x8, y8, z8, x16, x32, x64, x128, y128, z128; + +-#pragma align 16(x) /* { dg-error "must appear before" } */ ++#pragma align 16(x) /* { dg-warning "must appear before" } */ + + int + main () +diff -Nurd gcc-4.3/gcc/testsuite/gcc.dg/pragma-init-fini.c gcc-4.3-new/gcc/testsuite/gcc.dg/pragma-init-fini.c +--- gcc-4.3/gcc/testsuite/gcc.dg/pragma-init-fini.c 2008-10-01 14:44:19.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.dg/pragma-init-fini.c 2008-10-18 12:19:00.000000000 +0200 +@@ -4,13 +4,13 @@ + + extern void abort (); + +-#pragma init /* { dg-error "malformed" } */ +-#pragma init () /* { dg-error "malformed" } */ +-#pragma init init_func /* { dg-error "malformed" } */ ++#pragma init /* { dg-warning "malformed" } */ ++#pragma init () /* { dg-warning "malformed" } */ ++#pragma init init_func /* { dg-warning "malformed" } */ + +-#pragma fini /* { dg-error "malformed" } */ +-#pragma fini () /* { dg-error "malformed" } */ +-#pragma fini fini_func /* { dg-error "malformed" } */ ++#pragma fini /* { dg-warning "malformed" } */ ++#pragma fini () /* { dg-warning "malformed" } */ ++#pragma fini fini_func /* { dg-warning "malformed" } */ + + #pragma init (init_func, init_static_func) + +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/fix-ice9a-1.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/fix-ice9a-1.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/fix-ice9a-1.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/fix-ice9a-1.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,6 +1,7 @@ + /* Check that nops are inserted before and after the fp operations. */ + /* { dg-do compile } */ + /* { dg-options "-mfix-ice9a -O3" } */ ++/* { dg-mips-options "-mhard-float" } */ + + typedef double TYPE; + #include "fix-ice9a.h" +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/fix-ice9a-2.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/fix-ice9a-2.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/fix-ice9a-2.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/fix-ice9a-2.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,6 +1,7 @@ + /* Check that nops are inserted before and after the fp operations. */ + /* { dg-do compile } */ + /* { dg-options "-mfix-ice9a -O3" } */ ++/* { dg-mips-options "-mhard-float" } */ + + typedef float TYPE; + #include "fix-ice9a.h" +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/lazy-binding-1.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/lazy-binding-1.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/lazy-binding-1.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/lazy-binding-1.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* { dg-do compile { target nomips16 } } */ +-/* { dg-mips-options "-mabicalls -mshared -mexplicit-relocs -O2 -fno-delayed-branch" } */ ++/* { dg-mips-options "-mabicalls -mshared -mexplicit-relocs -O2 -fno-delayed-branch -fpic" } */ + + void bar (void); + +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-18.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-18.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-18.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-18.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,4 +1,4 @@ + /* Check the *extendhisi2_hw pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls" } */ + unsigned int f1 (unsigned int x) { return (short) x; } + /* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tseh\t\\\$2,\\\$4\n" } } */ +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-19.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-19.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-19.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-19.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,4 +1,4 @@ + /* Check the *extendqisi2_hw pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls" } */ + unsigned int f1 (unsigned int x) { return (signed char) x; } + /* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tseb\t\\\$2,\\\$4\n" } } */ +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-1.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-1.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-1.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-1.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,4 +1,4 @@ + /* Check the *baddu_si pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -meb" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -meb -mno-abicalls" } */ + unsigned int f1 (unsigned int x, unsigned int y) { return (x + y) & 0xff; } + /* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tbaddu\t\\\$2,\\\$\[45\],\\\$\[45\]\n" } } */ +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-23.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-23.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-23.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-23.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the extzvsi pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls" } */ + #ifdef _MIPSEB + struct s1 { unsigned int x1 : 3, x2 : 10; }; + struct s2 { unsigned int x1 : 5, x2 : 14; }; +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-28.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-28.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-28.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-28.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the extvsi pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls" } */ + #ifdef _MIPSEB + struct s1 { int x1 : 3, x2 : 10; }; + struct s2 { int x1 : 5, x2 : 14; }; +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-34.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-34.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-34.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-34.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the insvsi pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -fno-tree-sra" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mno-abicalls -mgp32 -fno-tree-sra" } */ + #ifdef _MIPSEB + struct s1 { unsigned int x1 : 3, x2 : 20; }; + struct s2 { unsigned int x1 : 5, x2 : 10; }; +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-37.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-37.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-37.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-37.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the mov_u[ls]w patterns. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mocteon-useun -meb" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mno-abi-calls -mgp32 -mocteon-useun -meb" } */ + struct __attribute__((packed)) s { unsigned int x; }; + unsigned int f1 (struct s *s) { return s[0].x; }; + void f2 (struct s *s, unsigned long x) { s[10].x = x; } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-43.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-43.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-43.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-43.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the *branch_bit pattern. */ +-/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -mno-abicalls -Os -mabi=eabi -mgp32" } */ + int foo (void); + int f1 (unsigned int x) { if (x & (1UL << 30)) foo (); return 1; } + int f2 (unsigned int x) { if (x & (1UL << 1)) foo (); return 1; } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-44.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-44.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-44.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-44.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the *branch_bit pattern. */ +-/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32 -mno-abicalls" } */ + int foo (void); + int f1 (unsigned int x) { if ((x & (1UL << 30)) == 0) foo (); return 1; } + int f2 (unsigned int x) { if ((x & (1UL << 1)) == 0) foo (); return 1; } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-49.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-49.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-49.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-49.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the *seq_si_seq pattern. */ +-/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32 -mno-abicalls" } */ + int f1 (int x) { return x == -513; } + int f2 (int x) { return x == -512; } + int f3 (int x) { return x == -1; } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-54.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-54.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-54.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-54.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the *sne_si_sne pattern. */ +-/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -Os -mabi=eabi -mgp32 -mno-abicalls" } */ + int f1 (int x) { return x != -513; } + int f2 (int x) { return x != -512; } + int f3 (int x) { return x != -1; } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-5.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-5.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-5.c 2008-10-01 14:42:02.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-5.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,5 +1,5 @@ + /* Check the *baddu_si pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -meb" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls -meb" } */ + unsigned int + f1 (unsigned int x, unsigned int y) + { return (unsigned char) (x + y); } +diff -Nurd gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-6.c gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-6.c +--- gcc-4.3/gcc/testsuite/gcc.target/mips/octeon-6.c 2008-10-01 14:42:01.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/gcc.target/mips/octeon-6.c 2008-10-18 12:10:17.000000000 +0200 +@@ -1,4 +1,4 @@ + /* Check the popcountsi2 pattern. */ +-/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32" } */ ++/* { dg-mips-options "-march=octeon -O2 -mabi=eabi -mgp32 -mno-abicalls" } */ + unsigned int f1 (unsigned int x) { return __builtin_popcount (x); } + /* { dg-final { scan-assembler "\tjr?\t\\\$31\n\tpop\t\\\$2,\\\$4\n" } } */ +diff -Nurd gcc-4.3/gcc/testsuite/lib/target-supports.exp gcc-4.3-new/gcc/testsuite/lib/target-supports.exp +--- gcc-4.3/gcc/testsuite/lib/target-supports.exp 2008-10-01 14:47:31.000000000 +0200 ++++ gcc-4.3-new/gcc/testsuite/lib/target-supports.exp 2008-10-18 12:32:27.000000000 +0200 +@@ -1367,6 +1367,19 @@ + }] + } + ++# Return 1 if this is an ARM target supporting -mcpu=iwmmxt. ++# Some multilibs may be incompatible with this option. ++ ++proc check_effective_target_arm_iwmmxt_ok { } { ++ if { [check_effective_target_arm32] } { ++ return [check_no_compiler_messages arm_iwmmxt_ok object { ++ int dummy; ++ } "-mcpu=iwmmxt"] ++ } else { ++ return 0 ++ } ++} ++ + # Return 1 if this is a PowerPC target with floating-point registers. + + proc check_effective_target_powerpc_fprs { } { +diff -Nurd gcc-4.3/libgomp/config/linux/mips/futex.h gcc-4.3-new/libgomp/config/linux/mips/futex.h +--- gcc-4.3/libgomp/config/linux/mips/futex.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.3-new/libgomp/config/linux/mips/futex.h 2008-10-18 12:02:42.000000000 +0200 +@@ -0,0 +1,75 @@ ++/* Copyright (C) 2005, 2008 Free Software Foundation, Inc. ++ Contributed by Ilie Garbacea <ilie@mips.com>, Chao-ying Fu <fu@mips.com>. ++ ++ This file is part of the GNU OpenMP Library (libgomp). ++ ++ Libgomp is free software; you can redistribute it and/or modify it ++ under the terms of the GNU Lesser General Public License as published by ++ the Free Software Foundation; either version 2.1 of the License, or ++ (at your option) any later version. ++ ++ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for ++ more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with libgomp; see the file COPYING.LIB. If not, write to the ++ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ++ MA 02110-1301, USA. */ ++ ++/* As a special exception, if you link this library with other files, some ++ of which are compiled with GCC, to produce an executable, this library ++ does not by itself cause the resulting executable to be covered by the ++ GNU General Public License. This exception does not however invalidate ++ any other reasons why the executable file might be covered by the GNU ++ General Public License. */ ++ ++/* Provide target-specific access to the futex system call. */ ++ ++#include <sys/syscall.h> ++#define FUTEX_WAIT 0 ++#define FUTEX_WAKE 1 ++ ++static inline void ++sys_futex0 (int *addr, int op, int val) ++{ ++ register unsigned long __v0 asm("$2") = (unsigned long) SYS_futex; ++ register unsigned long __a0 asm("$4") = (unsigned long) addr; ++ register unsigned long __a1 asm("$5") = (unsigned long) op; ++ register unsigned long __a2 asm("$6") = (unsigned long) val; ++ register unsigned long __a3 asm("$7") = 0; ++ ++ __asm volatile ("syscall" ++ /* returns $a3 (errno), $v0 (return value) */ ++ : "=r" (__v0), "=r" (__a3) ++ /* arguments in v0 (syscall) a0-a3 */ ++ : "r" (__v0), "r" (__a0), "r" (__a1), "r" (__a2), "r" (__a3) ++ /* clobbers at, v1, t0-t9, memory */ ++ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", ++ "$15", "$24", "$25", "memory"); ++} ++ ++static inline void ++futex_wait (int *addr, int val) ++{ ++ sys_futex0 (addr, FUTEX_WAIT, val); ++} ++ ++static inline void ++futex_wake (int *addr, int count) ++{ ++ sys_futex0 (addr, FUTEX_WAKE, count); ++} ++ ++static inline void ++cpu_relax (void) ++{ ++ __asm volatile ("" : : : "memory"); ++} ++ ++static inline void ++atomic_write_barrier (void) ++{ ++ __sync_synchronize (); ++} +diff -Nurd gcc-4.3/libgomp/configure.tgt gcc-4.3-new/libgomp/configure.tgt +--- gcc-4.3/libgomp/configure.tgt 2008-10-01 14:39:39.000000000 +0200 ++++ gcc-4.3-new/libgomp/configure.tgt 2008-10-18 12:02:43.000000000 +0200 +@@ -35,6 +35,10 @@ + config_path="linux/ia64 linux posix" + ;; + ++ mips*-*-linux*) ++ config_path="linux/mips linux posix" ++ ;; ++ + powerpc*-*-linux*) + config_path="linux/powerpc linux posix" + ;; +diff -Nurd gcc-4.3/release-notes-csl.xml gcc-4.3-new/release-notes-csl.xml +--- gcc-4.3/release-notes-csl.xml 2008-10-01 14:56:28.000000000 +0200 ++++ gcc-4.3-new/release-notes-csl.xml 2008-10-18 13:08:51.000000000 +0200 +@@ -5,6 +5,86 @@ + relevant; it may be removed if it is relevant to all targets. + --> + ++ <!-- UUID: a38e2a96-4845-410f-ba68-6f1091446123 --> ++ <!-- TARGET: arm* --> ++ <formalpara> ++ <title>Misaligned NEON memory accesses</title> ++ <para> ++ A bug has been fixed that caused the compiler to use aligned ++ NEON load/store instructions to access misaligned data when ++ autovectorizing certain loops. The bug affected code compiled ++ with <option>-mfpu=neon</option> and loop vectorization enabled ++ with <option>-O3</option> or <option>-ftree-vectorize</option>. ++ </para> ++ </formalpara> ++ ++ <!-- UUID: 75802745-041d-4357-b48f-31fd30c58adc --> ++ <!-- TARGET: powerpc-* --> ++ <formalpara> ++ <title>Linker script option syntax</title> ++ <para> ++ GCC now accepts <option>-T <replaceable>script</replaceable></option> ++ (with whitespace before the <replaceable>script</replaceable>) ++ as well as <option>-T<replaceable>script</replaceable></option> ++ (with no whitespace) to specify a linker script on the command line. ++ </para> ++ </formalpara> ++ ++ <!-- UUID: e4838603-bc80-40fe-add0-cb5aba3a235d --> ++ <!-- TARGET: arm*-linux* mips*-linux* i?86*-linux* --> ++ <formalpara features="openmp_addon"> ++ <title>OpenMP support</title> ++ <para> ++ Support for the OpenMP application programming interface is ++ now available in &csl_sgxx; Professional Edition. To ++ compile programs that use OpenMP features, use the ++ <option>-fopenmp</option> command-line option. For more ++ information about using OpenMP with &csl_sgxx;, see <xref ++ linkend="sec-openmp"/>. For more information about the ++ OpenMP API, see <uri>http://www.openmp.org/</uri>. ++ </para> ++ </formalpara> ++ ++ <!-- UUID: 934d8fb3-d31c-4051-aad3-f85fc72e7576 --> ++ <!-- TARGET: m68k-*uclinux --> ++ <formalpara> ++ <title>Shared libraries bug fix</title> ++ <para> ++ A bug has been fixed that caused ++ <literal>Invalid instruction</literal> errors in applications ++ compiled with <option>-mid-shared-library</option> for CPUs ++ without hardware floating point. The problem was caused by ++ incorrect linker attributes on internal compiler-generated ++ symbols in the shared library; you must rebuild both ++ the application and shared libraries to pick up the fix. ++ </para> ++ </formalpara> ++ ++ <!-- UUID: 62a77a44-3f36-4d0c-aca2-eb327dce9ca0 --> ++ <!-- TARGET: powerpc-linux-gnu --> ++ <formalpara> ++ <title>Compiling dynamic libraries with <option>-Os</option></title> ++ <para> ++ A bug has been fixed that affected dynamic libraries compiled ++ with <option>-Os</option>. The bug caused runtime errors such ++ as segmentation faults in applications using the library, as a ++ result of incorrect linker attributes on internal ++ compiler-generated symbols in the library. You must rebuild ++ both the affected shared libraries and the applications that ++ use them to pick up this fix. ++ </para> ++ </formalpara> ++ ++ <!-- UUID: 53bf0593-1f5d-4047-8e74-ad8889a3a1cb --> ++ <!-- TARGET: mips*-sicortex-* --> ++ <formalpara> ++ <title>SiCortex architecture option</title> ++ <para> ++ A new architecture option, <option>-march=ice9</option>, is ++ now available to target the SiCortex ICE9 architecture. ++ </para> ++ </formalpara> ++ + <!-- UUID: e2f7a383-48cd-48b3-9a7c-a157f722414f --> + <!-- TARGET: m68k-* --> + <formalpara> |