summaryrefslogtreecommitdiff
path: root/libgcc/config/ia64
diff options
context:
space:
mode:
authorro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-02 14:33:56 +0000
committerro <ro@138bc75d-0d04-0410-961f-82ee72b054a4>2011-11-02 14:33:56 +0000
commit237490bf10db39b859bd28598ff64f1bd2c84421 (patch)
tree2c5dd5cdcff32ca9e25b38d3c331376a3158c6ba /libgcc/config/ia64
parentf34bff8083f5498f4ea019a6fbbf1b1b8e2e37d2 (diff)
downloadgcc-237490bf10db39b859bd28598ff64f1bd2c84421.tar.gz
Move crtstuff support to toplevel libgcc
gcc: * config.gcc (extra_parts): Remove. (*-*-freebsd*): Remove extra_parts. (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu, *-*-gnu*, *-*-kopensolaris*-gnu): Likewise. (*-*-netbsd*): Remove t-libc-ok, t-netbsd from tmake_file. Remove extra_parts for *-*-netbsd*1.[7-9]*, *-*-netbsd[2-9]*, *-*-netbsdelf[2-9]*. (*-*-openbsd*): Remove t-libc-ok from tmake_file. (alpha*-*-linux*): Remove extra_parts. (alpha*-*-freebsd*): Likewise. (bfin*-linux-uclibc*): Likewise. (fr30-*-elf): Likewise. (moxie-*-elf): Likewise. (moxie-*-uclinux*): Likewise. (h8300-*-rtems*): Remove h8300/t-elf from tmake_file. (h8300-*-elf*): Likewise. (hppa*64*-*-hpux11*): Remove extra_parts. (i[34567]86-*-elf*): Remove i386/t-i386elf, i386/t-crtstuff from tmake_file. (x86_64-*-elf*): Likewise. (i[34567]86-*-freebsd*): Remove tmake_file. (x86_64-*-freebsd*): Likewise. (x86_64-*-netbsd*): Likewise. (i[34567]86-*-openbsd2.*, i[34567]86-*openbsd3.[0123]): Remove t-libc-ok from tmake_file. (i[34567]86-*-linux*, i[34567]86-*-kfreebsd*-gnu, i[34567]86-*-knetbsd*-gnu, i[34567]86-*-gnu*, i[34567]86-*-kopensolaris*-gnu): Remove i386/t-crtstuff from tmake_file. Remove extra_parts. (x86_64-*-linux*, x86_64-*-kfreebsd*-gnu, x86_64-*-knetbsd*-gnu): Remove i386/t-crtstuff from tmake_file. (i[34567]86-*-lynxos*): Likewise. Remove extra_parts. (ia64*-*-elf*): Remove extra_parts. (ia64*-*-freebsd*): Likewise. (ia64*-*-linux*): Likewise. (ia64-hp-*vms*): Remove ia64/t-vms from tmake_file. (m32r-*-elf*): Remove extra_parts. (m32rle-*-elf*): Likewise. (m32r-*-rtems*): Likewise. (m68k-*-elf*, fido-*-elf*): Likewise. (m68k*-*-openbsd*): Remove t-libc-ok from tmake_file. (m68k-*-rtems*): Remove extra_parts. (mep-*-*): Likewise. (microblaze*-linux*): Likewise. (mips64*-*-linux*, mipsisa64*-*-linux*): Likewise. (mips*-*-linux*): Likewise. (powerpc-*-lynxos*): Likewise. (s390x-ibm-tpf*): Likewise. (score-*-elf): Likewise. Remove tmake_file. (sh-*-elf*, sh[12346l]*-*-elf*, sh-*-linux*, sh[2346lbe]*-*-linux*, sh-*-netbsdelf*, shl*-*-netbsdelf*, sh5-*-netbsd*, sh5l*-*-netbsd*, sh64-*-netbsd*, sh64l*-*-netbsd*): Remove sh/t-elf from tmake_file. Remove sh/t-superh from tmake_file for sh*-superh-elf. Remove sh/t-linux64 from tmake_file for sh64*-*-linux*. (sh-*-rtems*): Remove sh/t-elf from tmake_file. (sh-wrs-vxworks): Likewise. (sparc-*-linux*): Remove extra_parts. (sparc64-*-linux*): Likewise. (sparc64-*-freebsd*, ultrasparc-*-freebsd*): Likewise. (xstormy16-*-elf): Likewise. (xtensa*-*-linux*): Remove xtensa/t-linux from tmake_file. (am33_2.0-*-linux*): Remove extra_parts. * configure.ac (extra_parts): Don't substitute. * configure: Regenerate. * crtstuff.c: Move to ../libgcc. * Makefile.in (CRTSTUFF_CFLAGS): Remove. (EXTRA_PARTS): Remove. (CRTSTUFF_T_CFLAGS): Remove. (MOSTLYCLEANFILES): Remove $(EXTRA_PARTS). (GCC_EXTRA_PARTS): Remove. (libgcc.mvars): Remove GCC_EXTRA_PARTS, CRTSTUFF_CFLAGS, CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S. Emit GCC_CFLAGS, INHIBIT_LIBC_CFLAGS. ($(T)crtbegin.o, $(T)crtend.o, $(T)crtbeginS.o, $(T)crtendS.o) ($(T)crtbeginT.o): Remove. * config/alpha/t-vms (EXTRA_PARTS): Remove. ($(T)vms-dwarf2.o, $(T)vms-dwarf2eh.o): Remove. * config/alpha/vms-dwarf2.asm: Move to ../libgcc/config/alpha/vms-dwarf2.S. * config/alpha/vms-dwarf2eh.asm: Move to ../libgcc/config/alpha/vms-dwarf2eh.S. * config/arm/crti.asm: Move to ../libgcc/config/arm/crti.S. * config/arm/crtn.asm: Move to ../libgcc/config/arm/crtn.S. * config/arm/t-arm-elf (EXTRA_MULTILIB_PARTS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. * config/arm/t-linux: Remove comment. * config/arm/t-linux-eabi (EXTRA_MULTILIB_PARTS): Remove. * config/arm/t-strongarm-elf (EXTRA_MULTILIB_PARTS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. * config/arm/t-symbian (EXTRA_MULTILIB_PARTS): Remove. * config/bfin/crti.s: Move to ../libgcc/config/bfin/crti.S. * config/bfin/crtn.s: Move to ../libgcc/config/bfin/crtn.S. * config/bfin/crtlibid.s: Move to ../libgcc/config/bfin/crtlibid.S. * config/bfin/t-bfin (EXTRA_PARTS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. * config/bfin/t-bfin-elf (CRTSTUFF_T_CFLAGS): Remove. ($(T)crti.o, $(T)crtn.o, $(T)crtlibid.o): Remove (EXTRA_MULTILIB_PARTS): Remove. * config/bfin/t-bfin-linux (CRTSTUFF_T_CFLAGS, EXTRA_MULTILIB_PARTS): Remove. * config/bfin/t-bfin-uclinux (CRTSTUFF_T_CFLAGS): Remove. ($(T)crtlibid.o): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/c6x/crti.s: Move to ../libgcc/config/c6x/crti.S. * config/c6x/crtn.s: Move to ../libgcc/config/c6x/crtn.S. * config/c6x/t-c6x-elf ($(T)crti.o, $(T)crtn.o): Remove. (EXTRA_MULTILIB_PARTS): Remove. (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. * config/c6x/t-c6x-uclinux (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. * config/cris/t-elfmulti (CRTSTUFF_T_CFLAGS): Remove. * config/cris/t-linux (CRTSTUFF_T_CFLAGS_S): Remove. * config/fr30/crti.asm: Move to ../libgcc/config/fr30/crti.S. * config/fr30/crtn.asm: Move to ../libgcc/config/fr30/crtn.S. * config/fr30/t-fr30 ($(T)crti.o, $(T)crtn.o): Remove. * config/frv/frvbegin.c, config/frv/frvend.c: Move to ../libgcc/config/frv. * config/frv/t-frv (EXTRA_MULTILIB_PARTS): Remove. (FRVSTUFF_CFLAGS, $(T)frvbegin$(objext), $(T)frvend$(objext)): Remove. * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Remove. (CRTSTUFF_T_CFLAGS): Remove. * config/h8300/crti.asm: Move to ../libgcc/config/h8300/crti.S. * config/h8300/crtn.asm: Move to ../libgcc/config/h8300/crtn.S. * config/h8300/t-elf: Remove. * config/i386/cygming-crtbegin.c, config/i386/cygming-crtend.c: Move to ../libgcc/config/i386. * config/i386/t-crtstuff: Remove. * config/i386/t-i386elf: Remove. * config/i386/t-linux64 (EXTRA_MULTILIB_PARTS): Remove. * config/i386/t-nto (CRTSTUFF_T_CFLAGS, EXTRA_PARTS): Remove. * config/ia64/crtbegin.asm: Move to ../libgcc/config/ia64/crtbegin.S. * config/ia64/crtend.asm: Move to ../libgcc/config/ia64/crtend.S. * config/ia64/crti.asm: Move to ../libgcc/config/ia64/crti.S. * config/ia64/crtn.asm: Move to ../libgcc/config/ia64/crtn.S. * config/ia64/t-vms: Remove. * config/ia64/vms-crtinit.asm: Move to ../libgcc/config/ia64/vms-crtinit.S. * config/m32c/t-m32c (EXTRA_MULTILIB_PARTS): Remove. * config/m32r/initfini.c: Move to ../libgcc/config/m32r. * config/m32r/t-linux (CRTSTUFF_T_CFLAGS_S): Remove. * config/m32r/t-m32r (CRTSTUFF_T_CFLAGS): Remove. ($(T)crtinit.o, $(T)crtfini.o): Remove. (m32rx, m32r2): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/m68k/crti.s: Move to ../libgcc/config/m68k/crti.S. * config/m68k/crtn.s: Move to ../libgcc/config/m68k/crtn.S. * config/m68k/t-crtstuff: Remove. * config/m68k/t-linux (EXTRA_MULTILIB_PARTS): Remove. * config/m68k/t-m68kelf: Remove. * config/m68k/t-uclinux (EXTRA_MULTILIB_PARTS): Remove. * config/mcore/crti.asm: Move to ../libgcc/config/mcore/crti.S. * config/mcore/crtn.asm: Move to ../libgcc/config/mcore/crtn.S. * config/mcore/t-mcore ($(T)crti.o, $(T)crtn.o): Remove. (EXTRA_PARTS, EXTRA_MULTILIB_PARTS): Remove. * config/mep/t-mep (CRTSTUFF_CFLAGS): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/microblaze/crti.s: Move to ../libgcc/config/microblaze/crti.S. * config/microblaze/crtn.s: Move to ../libgcc/config/microblaze/crtn.S. * config/microblaze/t-microblaze (EXTRA_MULTILIB_PARTS, EXTRA_PARTS): Remove. ($(T)crti$(objext), $(T)crtn$(objext)): Remove. * config/mips/crti.asm: Move to ../libgcc/config/mips/crti.S. * config/mips/crtn.asm: Move to ../libgcc/config/mips/crtn.S. * config/mips/t-elf (CRTSTUFF_T_CFLAGS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/mips/t-isa3264: Likewise. * config/mips/t-linux64 (EXTRA_MULTILIB_PARTS): Remove. * config/mips/t-r3900 (EXTRA_MULTILIB_PARTS): Remove. (CRTSTUFF_T_CFLAGS): Remove. * config/mips/t-sde (CRTSTUFF_T_CFLAGS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/mips/t-sr71k (EXTRA_MULTILIB_PARTS, CRTSTUFF_T_CFLAGS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. * config/mips/t-st (EXTRA_MULTILIB_PARTS): Remove. * config/mips/t-vr (CRTSTUFF_T_CFLAGS): Remove. (EXTRA_MULTILIB_PARTS): Remove. ($(T)crti.o, $(T)crtn.o): Remove. * config/mmix/crti.asm: Move to ../libgcc/config/crti.S. * config/mmix/crtn.asm: Move to ../libgcc/config/crtn.S. * config/mmix/t-mmix (CRTSTUFF_T_CFLAGS): Remove. * config/moxie/crti.asm, config/moxie/crtn.asm: Remove. * config/pa/stublib.c: Move to libgcc/config/pa. * config/pa/t-linux (CRTSTUFF_T_CFLAGS_S): Remove. * config/pa/t-linux64 (CRTSTUFF_T_CFLAGS_S): Remove. * config/pa/t-pa-hpux11 (LIBGCCSTUB_OBJS, stublib.c): Remove. (pthread_default_stacksize_np-stub.o, pthread_mutex_lock-stub.o) (pthread_mutex_unlock-stub.o, pthread_once-stub.o) ($(T)libgcc_stub.a): Remove. * config/pa/t-pa64 (LIBGCCSTUB_OBJS, stublib.c): Remove. (rfi-stub.o, dfi-stub.o, cxaf-stub.o, jvrc-stub.o) (pthread_default_stacksize_np-stub.o, pthread_mutex_lock-stub.o) (pthread_mutex_unlock-stub.o, pthread_once-stub.o) ($(T)libgcc_stub.a): Remove. * config/rs6000/eabi-cn.asm: Move to ../../../libgcc/config/rs6000/eabi-cn.S. * config/rs6000/eabi-ci.asm: Move to ../../../libgcc/config/rs6000/eabi-ci.S. * config/rs6000/sol-ci.asm: Move to ../../../libgcc/config/rs6000/sol-ci.S. * config/rs6000/sol-cn.asm: Move to ../../../libgcc/config/rs6000/sol-cn.S. * config/rs6000/t-lynx (EXTRA_MULTILIB_PARTS): Remove. (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. * config/rs6000/t-netbsd (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/rs6000/t-ppccomm (EXTRA_MULTILIB_PARTS): Remove. (ecrti.S, ecrtn.S, ncrti.S, ncrtn.S): Remove. ($(T)ecrti$(objext), $(T)ecrtn$(objext), $(T)ncrti$(objext), $(T)ncrtn$(objext)): Remove. (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. * config/rs6000/t-vxworks (EXTRA_MULTILIB_PARTS): Remove. * config/rx/t-rx (EXTRA_MULTILIB_PARTS): Remove. * config/score/crti.asm: Move to ../libgcc/config/score/crti.S. * config/score/crtn.asm: Move to ../libgcc/config/score/crtn.S. * config/score/t-score-elf: Remove. * config/sh/crt1.asm: Move to ../libgcc/config/sh/crt1.S. * config/sh/crti.asm: Move to ../libgcc/config/sh/crti.S. * config/sh/crtn.asm: Move to ../libgcc/config/sh/crtn.S. * config/sh/lib1funcs-4-300.asm: Move to ../../../libgcc/config/sh/lib1funcs-4-300.S. * config/sh/lib1funcs-Os-4-200.asm: Move to ../libgcc/config/sh/lib1funcs-Os-4-200.S. * config/sh/t-elf: Remove. * config/sh/t-linux (EXTRA_MULTILIB_PARTS): Remove. * config/sh/t-linux64: Remove. * config/sh/t-netbsd (EXTRA_MULTILIB_PARTS): Remove. * config/sh/t-sh ($(T)crt1.o, $(T)crti.o, $(T)crtn.o): Remove. (IC_EXTRA_PARTS, OPT_EXTRA_PARTS, EXTRA_MULTILIB_PARTS): Remove. ($(T)ic_invalidate_array_4-100.o) ($(T)libic_invalidate_array_4-100.a) ($(T)ic_invalidate_array_4-200.o) ($(T)libic_invalidate_array_4-200.a, $(T)ic_invalidate_array_4a.o) ($(T)libic_invalidate_array_4a.a, $(T)sdivsi3_i4i-Os-4-200.o) ($(T)udivsi3_i4i-Os-4-200.o, $(T)unwind-dw2-Os-4-200.o) ($(T)libgcc-Os-4-200.a, $(T)div_table-4-300.o) ($(T)libgcc-4-300.a): Remove. * config/sh/t-superh: Remove. * config/sh/t-vxworks (EXTRA_MULTILIB_PARTS): Remove. * config/sparc/t-linux64 (CRTSTUFF_T_CFLAGS): Remove. * config/spu/cache.S: Move to ../libgcc/config/spu. * config/spu/cachemgr.c: Move to ../libgcc/config/spu. * config/spu/t-spu-elf (CRTSTUFF_T_CFLAGS): Remove. (EXTRA_MULTILIB_PARTS): Remove. ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o, $(T)libgcc_%.a): Remove. ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache32k.o) ($(T)cache64k.o, $(T)cache128k.o): Remove. * config/t-freebsd (CRTSTUFF_T_CFLAGS_S): Remove. * config/t-libc-ok: Remove. * config/t-linux (CRTSTUFF_T_CFLAGS_S): Remove. * config/t-lynx (CRTSTUFF_T_CFLAGS_S): Remove. * config/t-netbsd: Remove. * config/t-svr4 (CRTSTUFF_T_CFLAGS_S): Remove. * config/t-vxworks (EXTRA_MULTILIB_PARTS): Remove. * config/vms/t-vms (VMS_EXTRA_PARTS): Remove. ($(T)vcrt0.o, $(T)pcrt0.o): Remove. * config/vms/vms-ucrt0.c: Move to ../libgcc/config/vms. * config/xtensa/crti.asm: Move to ../libgcc/config/xtensa/crti.S. * config/xtensa/crtn.asm: Move to ../libgcc/config/xtensa/crtn.S. * config/xtensa/t-elf (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Remove. (EXTRA_MULTILIB_PARTS): Remove. * config/xtensa/t-linux: Remove. * config/xtensa/t-xtensa ($(T)crti.o, $(T)crtn.o): Remove. gcc/po: * EXCLUDES (crtstuff.c): Remove. libgcc: * crtstuff.c: New file. * Makefile.in (CRTSTUFF_CFLAGS): Define. (CRTSTUFF_T_CFLAGS): Define. (extra-parts, INSTALL_PARTS): Remove conditional assignments. (crtbegin$(objext), crtend$(objext), crtbeginS$(objext)) (crtendS$(objext), crtbeginT.o): Use $(srcdir) to refer to crtstuff.c. Use $<. (crtbeginT.o): Use $(objext). [!CUSTOM_CRTIN] (crti$(objext), crtn$(objext)): New rules. (libgcc-extra-parts): Don't compare EXTRA_PARTS, GCC_EXTRA_PARTS. (gcc-extra-parts): Remove. * config.host (*-*-freebsd*): Add t-crtstuff-pic to tmake_file. Set extra_parts. (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu, *-*-gnu*): Also handle *-*-kopensolaris*-gnu. Add t-crtstuff-pic to tmake_file. (*-*-lynxos*): New case. Set tmake_file, extra_parts. (*-*-netbsd*): Add t-crtstuff-pic to tmake_file. Set extra_parts for *-*-netbsd*1.[7-9]*, *-*-netbsd[2-9]*, *-*-netbsdelf[2-9]*. (*-*-openbsd*): Add t-crtstuff-pic to tmake_file. (*-*-rtems*): Set extra_parts. (*-*-solaris2*): Remove t-crtin from tmake_file for Solaris < 10. (*-*-uclinux*): New case. Set extra_parts. (*-*-vms*): New case. Set tmake_file, extra_parts. (*-*-elf): Set extra_parts. (alpha*-*-freebsd*): Add crtbeginT.o to extra_parts. (alpha64-dec-*vms*): Append to tmake_file, remove vms/t-vms, vms/t-vms64. Set extra_parts. (alpha*-dec-*vms*): Append to tmake_file, remove vms/t-vms. Set extra_parts. (arm*-*-freebsd*): Add t-crtin to tmake_file. Add crtbegin.o, crtend.o, crti.o, crtn.o to extra_parts. (arm-wrs-vxworks): Append to tmake_file. Set extra_parts. (arm*-*-uclinux*): Set extra_parts. (arm*-*-ecos-elf): Likewise. (arm*-*-eabi*, arm*-*-symbianelf*): Set extra_parts for arm*-*-eabi*. (arm*-*-rtems*): Set extra_parts. (arm*-*-elf): Likewise. (avr-*-rtems*): Clear extra_parts. (bfin*-elf*): Add bfin/t-crtlibid, bfin/t-crtstuff to extra_parts. Set extra_parts. (bfin*-uclinux*): Likewise. (bfin*-linux-uclibc*): Add bfin/t-crtstuff to tmake_file. (bfin*-rtems*): Append to tmake_file. Set extra_parts. (bfin*-*): Likewise. (crisv32-*-elf, crisv32-*-none, cris-*-elf, cris-*-none): Split into ... (crisv32-*-elf): ... this. (crisv32-*-none): ... this. (cris-*-elf, cris-*-none): New cases. Add cris/t-elfmulti to tmake_file. (fr30-*-elf): Append to tmake_file. Set extra_parts. (frv-*-elf): Append to tmake_file, add frv/t-frv. Set extra_parts. (h8300-*-rtems*): Append to tmake_file. Set extra_parts. (h8300-*-elf*): Likewise. (hppa*64*-*-hpux11*): Add pa/t-stublib, pa/t-stublib64 to tmake_file. Set extra_parts. (hppa[12]*-*-hpux11*): Add pa/t-stublib to tmake_file. Set extra_parts. (i[34567]86-*-elf*): Add i386/t-crtstuff, t-crtstuff-pic to tmake_file. (x86_64-*-elf*): Likewise. (i[34567]86-*-freebsd*): Add i386/t-crtstuff to tmake_file. (x86_64-*-freebsd*): Likewise. (x86_64-*-netbsd*): Likewise. (i[34567]86-*-linux*): Likewise. (i[34567]86-*-kfreebsd*-gnu, i[34567]86-*-knetbsd*-gnu) (i[34567]86-*-gnu*, i[34567]86-*-kopensolaris*-gnu): Likewise. (x86_64-*-linux*): Likewise. (x86_64-*-kfreebsd*-gnu, x86_64-*-knetbsd*-gnu): Likewise. (i[34567]86-*-lynxos*): Add t-crtstuff-pic, i386/t-crtstuff to tmake_file. Set extra_parts. (i[34567]86-*-nto-qnx*): Set tmake_file, extra_parts. (i[34567]86-*-rtems*): Append to tmake_file, remove t-crtin. Append to extra_parts, remove crtbegin.o, crtend.o. (ia64*-*-elf*): Append to extra_parts, remove crtbegin.o, crtend.o. (ia64*-*-freebsd*): Append to extra_parts, remove crtbegin.o, crtend.o, crtbeginS.o, crtendS.o. (ia64*-*-linux*): Comment extra_parts. (ia64-hp-*vms*): Append to tmake_file, remove vms/t-vms, vms/t-vms64. Set extra_parts. (iq2000*-*-elf*): Clear extra_parts. (lm32-*-elf*, lm32-*-rtems*): Add t-crtin to tmake_file. (lm32-*-uclinux*): Add to extra_parts, remove crtbegin.o, crtend.o (m32r-*-elf*, m32r-*-rtems*): Split off ... (m32r-*-rtems*): ... this. Add m32r/t-m32r to tmake_file. (m68k-*-elf*): Add t-crtin to tmake_file. (m68k-*-rtems*): Add crti.o, crtn.o to extra_parts. (mcore-*-elf): Likewise. (microblaze*-*-*): Set extra_parts. (mips*-sde-elf*): New case. Set tmake_file, extra_parts. (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*) (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*) (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Add mips/t-crtstuff to tmake_file. Set extra_parts. (mipsisa64sr71k-*-elf*): Likewise. (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*): Likewise. (mips-*-elf*, mipsel-*-elf*): Likewise. (mips64-*-elf*, mips64el-*-elf*): Likewise. (mips64vr-*-elf*, mips64vrel-*-elf*): Likewise. (mips64orion-*-elf*, mips64orionel-*-elf*): Likewise. (mips*-*-rtems*): Likewise. (mipstx39-*-elf*, mipstx39el-*-elf*): Likewise. (moxie-*-*): Split into ... (moxie-*-elf, moxie-*-uclinux*): ... this. Add to extra_parts, remove crtbegin.o, crtend.o. (moxie-*-rtems*): New case. Set tmake_file. Clear extra_parts. (powerpc-*-freebsd*): Add rs6000/t-crtstuff to tmake_file. Set extra_parts. (powerpc-*-netbsd*): Add rs6000/t-netbsd to tmake_file. (powerpc-*-eabispe*): Add rs6000/t-crtstuff, t-crtstuff-pic to tmake_file. Set extra_parts. (powerpc-*-eabisimaltivec*): Add to tmake_file, add rs6000/t-ppccomm, rs6000/t-crtstuff, t-crtstuff-pic to tmake_file. Set extra_parts. (powerpc-*-eabisim*): Likewise. (powerpc-*-elf*): Likewise. (powerpc-*-eabialtivec*): Likewise. (powerpc-xilinx-eabi*): Likewise. (powerpc-*-eabi*): Likewise. (powerpc-*-rtems*): Likewise. (powerpc-*-linux*, powerpc64-*-linux*): Add rs6000/t-crtstuff to tmake_file. Set extra_parts. (powerpc-*-lynxos*): Add to tmake_file. (powerpcle-*-elf*): Add to tmake_file, add rs6000/t-ppccomm, rs6000/t-crtstuff, t-crtstuff-pic. Set extra_parts. (powerpcle-*-eabisim*): Likewise. (powerpcle-*-eabi*): Likewise. (rx-*-elf): Remove extra_parts. (s390x-ibm-tpf*): Set extra_parts. (score-*-elf): Set extra_parts. (sh-*-elf*, sh[12346l]*-*-elf*, sh-*-linux*) (sh[2346lbe]*-*-linux*, sh-*-netbsdelf*, shl*-*-netbsdelf*) (sh5-*-netbsd*, sh5l*-*-netbsd*, sh64-*-netbsd*) (sh64l*-*-netbsd*): Split into ... (sh-*-elf*, sh[12346l]*-*-elf*): ... this. Add t-crtstuff-pic to tmake_file. Set extra_parts. (sh-*-rtems*): Add to tmake_file, add t-crtstuff-pic. Set extra_parts. (sh-wrs-vxworks): Add to tmake_file, add t-crtstuff-pic. (sparc-*-elf*): Remove t-crtin from tmake_file. Add to extra_parts, remove crtbegin.o, crtend.o. (sparc-*-linux*): Add sparc/t-linux64 to tmake_file. (sparc64-*-linux*): Likewise. (sparc-*-rtems*): Remove sparc/t-elf from tmake_file. Add to extra_parts, remove crtbegin.o, crtend.o. (sparc64-*-elf*): Remove t-crtin from tmake_file. Add to extra_parts, remove crtbegin.o, crtend.o. (sparc64-*-rtems*): Remove t-crtin from tmake_file. Add to extra_parts, remove crtbegin.o, crtend.o. (sparc64-*-freebsd*, ultrasparc-*-freebsd*): Add to extra_parts. (sparc64-*-linux*): Add sparc/t-linux64 to tmake_file. (spu-*-elf*): Add to tmake_file, add spu/t-elf. Set extra_parts. (tic6x-*-uclinux): Add c6x/t-uxlinux, t-crtstuff-pic to tmake_file. Set extra_parts. (tic6x-*-*): Change to ... (tic6x-*-elf): ... this. Set extra_parts. (xtensa*-*-elf*): Add to tmake_file, add xtensa/t-elf. Set extra_parts. (am33_2.0-*-linux*): Add comment. (mep*-*-*): Add mep/t-mep to tmake_file. Set extra_parts. * config/alpha/t-vms: New file. * config/alpha/vms-dwarf2.S, config/alpha/vms-dwarf2eh.S: New files. * config/arm/crti.S, config/arm/crtn.S: New files. * config/bfin/crti.S, config/bfin/crtn.S: New files. * config/bfin/crtlibid.S: New file. * config/bfin/t-crtlibid, config/bfin/t-crtstuff: New files. * config/c6x/crti.S, config/c6x/crtn.S: New files. * config/c6x/t-elf (CUSTOM_CRTIN): Set. (crti.o, crtin.o): New rules. (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Set. * config/c6x/t-uclinux: New file. * config/cris/t-elfmulti: New file. * config/cris/t-linux (CRTSTUFF_T_CFLAGS_S): Set. * config/fr30/crti.S, config/fr30/crtn.S: New files. * config/frv/frvbegin.c, config/frv/frvend.c: New files. * config/frv/t-frv: New file. * config/frv/t-linux (CRTSTUFF_T_CFLAGS): Set. * config/h8300/crti.S, config/h8300/crtn.S: New files. * config/i386/cygming-crtbegin.c, config/i386/cygming-crtend.c: New files. * config/i386/t-cygming (crtbegin.o, crtend.o): Use $(srcdir) to refer to cygming-crtbegin.c, cygming-crtend.c. Use $<. * config/i386/t-nto: New file. * config/ia64/crtbegin.S, config/ia64/crtend.S: New files. * config/ia64/crti.S, config/ia64/crtn.S: New files. * config/ia64/t-ia64 (crtbegin.o, crtend.o, crtbeginS.o, crtendS.o): Use $(srcdir) to refer to crtbegin.S, crtend.S. Use .S extension. Use $<. * config/ia64/t-vms (CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S): Set. (crtinitS.o): New rule. * config/ia64/vms-crtinit.S: New file. * config/lm32/t-elf ($(T)crti.o, $(T)crtn.o): Remove. * config/m32r/initfini.c: New file. * config/m32r/t-linux, config/m32r/t-m32r: New files. * config/m68k/crti.S, config/m68k/crtn.S: New files. * config/mcore/crti.S, config/mcore/crtn.S: New files. * config/mep/t-mep: New file. * config/microblaze/crti.S, config/microblaze/crtn.S: New files. * config/microblaze/t-microblaze (MULTILIB_OPTIONS): Remove. * config/mips/crti.S, config/mips/crtn.S: New files. * config/mips/t-crtstuff: New file. * config/mmix/crti.S, config/mmix/crtn.S: New files. * config/mmix/t-mmix (CRTSTUFF_T_CFLAGS): Set. (CUSTOM_CRTIN): Set. ($(T)crti.o, $(T)crtn.o): Remove $(T), dependencies. Use $(srcdir) to refer to crti.S, crtn.S. Use .S extension, $<. * config/moxie/crti.asm: Rename to ... * config/moxie/crti.S: ... this. * config/moxie/crtn.asm: Rename to ... * config/moxie/crtn.S: ... this. * config/moxie/t-moxie: Remove. * config/pa/stublib.c: New file. * config/pa/t-stublib, config/pa/t-stublib64: New files. * config/rs6000/eabi-ci.S, config/rs6000/eabi-cn.S: New files. * config/rs6000/sol-ci.S, config/rs6000/sol-cn.S: New files. * config/rs6000/t-crtstuff: New file. * config/rs6000/t-ppccomm (EXTRA_PARTS): Remove. (ecrti.S, ecrtn.S, ncrti.S, ncrtn.S): Remove. (ecrti$(objext)): Depend on $(srcdir)/config/rs6000/eabi-ci.S. Make output file explicit. (ecrtn$(objext)): Depend on $(srcdir)/config/rs6000/eabi-cn.S. Make output file explicit. (ncrti$(objext): Depend on $(srcdir)/config/rs6000/sol-ci.S. Make output file explicit. (ncrtn$(objext)): Depend on $(srcdir)/config/rs6000/sol-cn.S. Make output file explicit. * config/score/crti.S, config/score/crtn.S: New files. * config/sh/crt1.S, config/sh/crti.S, config/sh/crtn.S: New files. * config/sh/lib1funcs-4-300.S, config/sh/lib1funcs-Os-4-200.S: New files. * config/sh/t-sh, config/sh/t-superh: New files. * config/sparc/t-linux64: New file. * config/spu/cache.S, config/spu/cachemgr.c: New files. * config/spu/t-elf (CRTSTUFF_T_CFLAGS): Set. (cachemgr.o, cachemgr_nonatomic.o, libgcc_%.a, cache8k.o) (cache16k.o, cache32k.o, cache64k.o, cache128k.o): New rules. * config/t-crtin: Remove. * config/t-crtstuff-pic: New file. * config/t-sol2 (CUSTOM_CRTIN): Set. (crti.o, crtn.o): New rules. * config/vms/t-vms: New file. * config/vms/vms-ucrt0.c: New file. * config/xtensa/t-elf: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180771 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc/config/ia64')
-rw-r--r--libgcc/config/ia64/crtbegin.S254
-rw-r--r--libgcc/config/ia64/crtend.S121
-rw-r--r--libgcc/config/ia64/crti.S53
-rw-r--r--libgcc/config/ia64/crtn.S43
-rw-r--r--libgcc/config/ia64/t-ia6422
-rw-r--r--libgcc/config/ia64/t-vms6
-rw-r--r--libgcc/config/ia64/vms-crtinit.S24
7 files changed, 511 insertions, 12 deletions
diff --git a/libgcc/config/ia64/crtbegin.S b/libgcc/config/ia64/crtbegin.S
new file mode 100644
index 00000000000..638489990d5
--- /dev/null
+++ b/libgcc/config/ia64/crtbegin.S
@@ -0,0 +1,254 @@
+/* Copyright (C) 2000, 2001, 2003, 2005, 2009 Free Software Foundation, Inc.
+ Contributed by Jes Sorensen, <Jes.Sorensen@cern.ch>
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC 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 General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "auto-host.h"
+
+.section .ctors,"aw","progbits"
+ .align 8
+__CTOR_LIST__:
+ data8 -1
+
+.section .dtors,"aw","progbits"
+ .align 8
+__DTOR_LIST__:
+ data8 -1
+
+.section .jcr,"aw","progbits"
+ .align 8
+__JCR_LIST__:
+
+.section .sdata
+ .type dtor_ptr,@object
+ .size dtor_ptr,8
+dtor_ptr:
+ data8 @gprel(__DTOR_LIST__ + 8)
+
+ /* A handle for __cxa_finalize to manage c++ local destructors. */
+ .global __dso_handle
+ .type __dso_handle,@object
+ .size __dso_handle,8
+#ifdef SHARED
+ .section .data
+__dso_handle:
+ data8 __dso_handle
+#else
+ .section .bss
+ .align 8
+__dso_handle:
+ .skip 8
+#endif
+ .hidden __dso_handle
+
+
+#ifdef HAVE_INITFINI_ARRAY
+
+.section .fini_array, "a"
+ data8 @fptr(__do_global_dtors_aux)
+
+.section .init_array, "a"
+ data8 @fptr(__do_jv_register_classes)
+ data8 @fptr(__do_global_ctors_aux)
+
+#else /* !HAVE_INITFINI_ARRAY */
+/*
+ * Fragment of the ELF _fini routine that invokes our dtor cleanup.
+ *
+ * We make the call by indirection, because in large programs the
+ * .fini and .init sections are not in range of the destination, and
+ * we cannot allow the linker to insert a stub at the end of this
+ * fragment of the _fini function. Further, Itanium does not implement
+ * the long branch instructions, and we do not wish every program to
+ * trap to the kernel for emulation.
+ *
+ * Note that we require __do_global_dtors_aux to preserve the GP,
+ * so that the next fragment in .fini gets the right value.
+ */
+.section .fini,"ax","progbits"
+ { .mlx
+ movl r2 = @pcrel(__do_global_dtors_aux - 16)
+ }
+ { .mii
+ mov r3 = ip
+ ;;
+ add r2 = r2, r3
+ ;;
+ }
+ { .mib
+ nop 0
+ mov b6 = r2
+ br.call.sptk.many b0 = b6
+ }
+
+/* Likewise for _init. */
+
+.section .init,"ax","progbits"
+ { .mlx
+ movl r2 = @pcrel(__do_jv_register_classes - 16)
+ }
+ { .mii
+ mov r3 = ip
+ ;;
+ add r2 = r2, r3
+ ;;
+ }
+ { .mib
+ nop 0
+ mov b6 = r2
+ br.call.sptk.many b0 = b6
+ }
+#endif /* !HAVE_INITFINI_ARRAY */
+
+.section .text
+ .align 32
+ .proc __do_global_dtors_aux
+__do_global_dtors_aux:
+ .prologue
+#ifndef SHARED
+ .save ar.pfs, r35
+ alloc loc3 = ar.pfs, 0, 4, 1, 0
+ addl loc0 = @gprel(dtor_ptr), gp
+ .save rp, loc1
+ mov loc1 = rp
+ .body
+
+ mov loc2 = gp
+ nop 0
+ br.sptk.many .entry
+#else
+ /*
+ if (__cxa_finalize)
+ __cxa_finalize(__dso_handle)
+ */
+ .save ar.pfs, r35
+ alloc loc3 = ar.pfs, 0, 4, 1, 0
+ addl loc0 = @gprel(dtor_ptr), gp
+ addl r16 = @ltoff(@fptr(__cxa_finalize)), gp
+ ;;
+
+ ld8 r16 = [r16]
+ ;;
+ addl out0 = @ltoff(__dso_handle), gp
+ cmp.ne p7, p0 = r0, r16
+ ;;
+
+ ld8 out0 = [out0]
+(p7) ld8 r18 = [r16], 8
+ .save rp, loc1
+ mov loc1 = rp
+ .body
+ ;;
+
+ mov loc2 = gp
+(p7) ld8 gp = [r16]
+(p7) mov b6 = r18
+
+ nop 0
+ nop 0
+(p7) br.call.sptk.many rp = b6
+ ;;
+
+ nop 0
+ nop 0
+ br.sptk.many .entry
+#endif
+ /*
+ do {
+ dtor_ptr++;
+ (*(dtor_ptr-1)) ();
+ } while (dtor_ptr);
+ */
+.loop:
+ st8 [loc0] = r15 // update dtor_ptr (in memory)
+ ld8 r17 = [r16], 8 // r17 <- dtor's entry-point
+ nop 0
+ ;;
+
+ ld8 gp = [r16] // gp <- dtor's gp
+ mov b6 = r17
+ br.call.sptk.many rp = b6
+
+.entry: ld8 r15 = [loc0] // r15 <- dtor_ptr (gp-relative)
+ ;;
+ add r16 = r15, loc2 // r16 <- dtor_ptr (absolute)
+ adds r15 = 8, r15
+ ;;
+
+ ld8 r16 = [r16] // r16 <- pointer to dtor's fdesc
+ mov rp = loc1
+ mov ar.pfs = loc3
+ ;;
+
+ cmp.ne p6, p0 = r0, r16
+(p6) br.cond.sptk.few .loop
+ br.ret.sptk.many rp
+ .endp __do_global_dtors_aux
+
+ .align 32
+ .proc __do_jv_register_classes
+__do_jv_register_classes:
+ .prologue
+ .save ar.pfs, r33
+ alloc loc1 = ar.pfs, 0, 3, 1, 0
+ movl out0 = @gprel(__JCR_LIST__)
+ ;;
+
+ addl r14 = @ltoff(@fptr(_Jv_RegisterClasses)), gp
+ add out0 = out0, gp
+ .save rp, loc0
+ mov loc0 = rp
+ .body
+ ;;
+
+ ld8 r14 = [r14]
+ ld8 r15 = [out0]
+ cmp.ne p6, p0 = r0, r0
+ ;;
+
+ cmp.eq.or p6, p0 = r0, r14
+ cmp.eq.or p6, p0 = r0, r15
+(p6) br.ret.sptk.many rp
+
+ ld8 r15 = [r14], 8
+ ;;
+ nop 0
+ mov b6 = r15
+
+ mov loc2 = gp
+ ld8 gp = [r14]
+ br.call.sptk.many rp = b6
+ ;;
+
+ mov gp = loc2
+ mov rp = loc0
+ mov ar.pfs = loc1
+
+ nop 0
+ nop 0
+ br.ret.sptk.many rp
+ .endp __do_jv_register_classes
+
+#ifdef SHARED
+.weak __cxa_finalize
+#endif
+.weak _Jv_RegisterClasses
diff --git a/libgcc/config/ia64/crtend.S b/libgcc/config/ia64/crtend.S
new file mode 100644
index 00000000000..a904af9cfd9
--- /dev/null
+++ b/libgcc/config/ia64/crtend.S
@@ -0,0 +1,121 @@
+/* Copyright (C) 2000, 2001, 2003, 2005, 2009 Free Software Foundation, Inc.
+ Contributed by Jes Sorensen, <Jes.Sorensen@cern.ch>
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC 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 General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include "auto-host.h"
+
+.section .ctors,"aw","progbits"
+ .align 8
+__CTOR_END__:
+ data8 0
+
+.section .dtors,"aw","progbits"
+ .align 8
+__DTOR_END__:
+ data8 0
+
+.section .jcr,"aw","progbits"
+ .align 8
+__JCR_END__:
+ data8 0
+
+#ifdef HAVE_INITFINI_ARRAY
+ .global __do_global_ctors_aux
+ .hidden __do_global_ctors_aux
+#else /* !HAVE_INITFINI_ARRAY */
+/*
+ * Fragment of the ELF _init routine that invokes our dtor cleanup.
+ *
+ * We make the call by indirection, because in large programs the
+ * .fini and .init sections are not in range of the destination, and
+ * we cannot allow the linker to insert a stub at the end of this
+ * fragment of the _fini function. Further, Itanium does not implement
+ * the long branch instructions, and we do not wish every program to
+ * trap to the kernel for emulation.
+ *
+ * Note that we require __do_global_ctors_aux to preserve the GP,
+ * so that the next fragment in .fini gets the right value.
+ */
+.section .init,"ax","progbits"
+ { .mlx
+ movl r2 = @pcrel(__do_global_ctors_aux - 16)
+ }
+ { .mii
+ mov r3 = ip
+ ;;
+ add r2 = r2, r3
+ ;;
+ }
+ { .mib
+ mov b6 = r2
+ br.call.sptk.many b0 = b6
+ ;;
+ }
+#endif /* !HAVE_INITFINI_ARRAY */
+
+.text
+ .align 32
+ .proc __do_global_ctors_aux
+__do_global_ctors_aux:
+ .prologue
+ /*
+ for (loc0 = __CTOR_END__-1; *p != -1; --p)
+ (*p) ();
+ */
+ .save ar.pfs, r34
+ alloc loc2 = ar.pfs, 0, 5, 0, 0
+ movl loc0 = @gprel(__CTOR_END__ - 8)
+ ;;
+
+ add loc0 = loc0, gp
+ ;;
+ ld8 loc3 = [loc0], -8
+ .save rp, loc1
+ mov loc1 = rp
+ .body
+ ;;
+
+ cmp.eq p6, p0 = -1, loc3
+ mov loc4 = gp
+(p6) br.cond.spnt.few .exit
+
+.loop: ld8 r15 = [loc3], 8
+ ;;
+ ld8 gp = [loc3]
+ mov b6 = r15
+
+ ld8 loc3 = [loc0], -8
+ nop 0
+ br.call.sptk.many rp = b6
+ ;;
+
+ cmp.ne p6, p0 = -1, loc3
+ nop 0
+(p6) br.cond.sptk.few .loop
+
+.exit: mov gp = loc3
+ mov rp = loc1
+ mov ar.pfs = loc2
+
+ br.ret.sptk.many rp
+ .endp __do_global_ctors_aux
diff --git a/libgcc/config/ia64/crti.S b/libgcc/config/ia64/crti.S
new file mode 100644
index 00000000000..c15ff662bbe
--- /dev/null
+++ b/libgcc/config/ia64/crti.S
@@ -0,0 +1,53 @@
+# Copyright (C) 2000, 2001, 2008, 2009, 2011 Free Software Foundation, Inc.
+# Written By Timothy Wall
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+#
+# This file 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
+# General Public License for more details.
+#
+# Under Section 7 of GPL version 3, you are granted additional
+# permissions described in the GCC Runtime Library Exception, version
+# 3.1, as published by the Free Software Foundation.
+#
+# You should have received a copy of the GNU General Public License and
+# a copy of the GCC Runtime Library Exception along with this program;
+# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+# <http://www.gnu.org/licenses/>.
+
+# This file just make a stack frame for the contents of the .fini and
+# .init sections. Users may put any desired instructions in those
+# sections.
+
+ .section ".init"
+ .align 16
+ .global _init
+_init:
+ .prologue 14, 33
+ .save ar.pfs, r34
+ alloc r34 = ar.pfs, 0, 4, 0, 0
+ .vframe r35
+ mov r35 = r12
+ .save rp, r33
+ mov r33 = b0
+ .body
+
+ .section ".fini"
+ .align 16
+ .global _fini
+_fini:
+ .prologue 14, 33
+ .save ar.pfs, r34
+ alloc r34 = ar.pfs, 0, 4, 0, 0
+ .vframe r35
+ mov r35 = r12
+ .save rp, r33
+ mov r33 = b0
+ .body
+
+# end of crti.S
diff --git a/libgcc/config/ia64/crtn.S b/libgcc/config/ia64/crtn.S
new file mode 100644
index 00000000000..d44abbea3c7
--- /dev/null
+++ b/libgcc/config/ia64/crtn.S
@@ -0,0 +1,43 @@
+# Copyright (C) 2000, 2001, 2008, 2009, 2011 Free Software Foundation, Inc.
+# Written By Timothy Wall
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+#
+# This file 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
+# General Public License for more details.
+#
+# Under Section 7 of GPL version 3, you are granted additional
+# permissions described in the GCC Runtime Library Exception, version
+# 3.1, as published by the Free Software Foundation.
+#
+# You should have received a copy of the GNU General Public License and
+# a copy of the GCC Runtime Library Exception along with this program;
+# see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+# <http://www.gnu.org/licenses/>.
+
+# This file just makes sure that the .fini and .init sections do in
+# fact return. Users may put any desired instructions in those sections.
+# This file is the last thing linked into any executable.
+
+ .section ".init"
+ ;;
+ mov ar.pfs = r34
+ mov b0 = r33
+ .restore sp
+ mov r12 = r35
+ br.ret.sptk.many b0
+
+ .section ".fini"
+ ;;
+ mov ar.pfs = r34
+ mov b0 = r33
+ .restore sp
+ mov r12 = r35
+ br.ret.sptk.many b0
+
+# end of crtn.S
diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64
index 55bb8c11630..59cf3aa75f4 100644
--- a/libgcc/config/ia64/t-ia64
+++ b/libgcc/config/ia64/t-ia64
@@ -1,17 +1,15 @@
CUSTOM_CRTSTUFF = yes
# Assemble startup files.
-crtbegin.o: $(gcc_srcdir)/config/ia64/crtbegin.asm
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ $(gcc_srcdir)/config/ia64/crtbegin.asm
-crtend.o: $(gcc_srcdir)/config/ia64/crtend.asm
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ $(gcc_srcdir)/config/ia64/crtend.asm
-crtbeginS.o: $(gcc_srcdir)/config/ia64/crtbegin.asm
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtbegin.asm
-crtendS.o: $(gcc_srcdir)/config/ia64/crtend.asm
- $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
- -o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtend.asm
+# FIXME: -I$(gcc_objdir) is necessary to find auto-host.h. Really?
+crtbegin.o: $(srcdir)/config/ia64/crtbegin.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp $<
+crtend.o: $(srcdir)/config/ia64/crtend.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp $<
+crtbeginS.o: $(srcdir)/config/ia64/crtbegin.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \ -o $@ -DSHARED $<
+crtendS.o: $(srcdir)/config/ia64/crtend.S
+ $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \
+ -o $@ -DSHARED $<
SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver
diff --git a/libgcc/config/ia64/t-vms b/libgcc/config/ia64/t-vms
index 9bc933adfe0..140c748b771 100644
--- a/libgcc/config/ia64/t-vms
+++ b/libgcc/config/ia64/t-vms
@@ -1 +1,7 @@
+CRTSTUFF_T_CFLAGS = -O0
+CRTSTUFF_T_CFLAGS_S = -O0
+
+crtinitS.o: $(srcdir)/config/ia64/vms-crtinit.S
+ $(gcc_compile) -c -x assembler-with-cpp $<
+
LIB2ADDEH += $(srcdir)/config/ia64/fde-vms.c
diff --git a/libgcc/config/ia64/vms-crtinit.S b/libgcc/config/ia64/vms-crtinit.S
new file mode 100644
index 00000000000..322b2927347
--- /dev/null
+++ b/libgcc/config/ia64/vms-crtinit.S
@@ -0,0 +1,24 @@
+/* Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC 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 General Public License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+ .global LIB$INITIALIZE#