diff options
124 files changed, 627 insertions, 722 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5c3a91da561..071cce6c29c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,111 @@ 2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + * Makefile.in (LIB1ASMSRC): Don't export. + (libgcc.mvars): Don't emit LIB1ASMFUNCS, LIB1ASMSRC. + * config/arm/arm.c: Update lib1funcs.asm filename. + * config/arm/linux-eabi.h: Likewise. + * config/arm/bpabi-v6m.S, config/arm/bpabi.S, + config/arm/ieee754-df.S, config/arm/ieee754-sf.S: Move to + ../libgcc/config/arm. + * config/arm/lib1funcs.asm: Move to ../libgcc/config/arm/lib1funcs.S. + * config/arm/t-arm (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/arm/t-arm-elf (LIB1ASMFUNCS): Remove. + * config/arm/t-bpabi: Likewise. + * config/arm/t-linux (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/arm/t-linux-eabi (LIB1ASMFUNCS): Remove. + * config/arm/t-strongarm-elf: Likewise. + * config/arm/t-symbian: Likewise. + * config/arm/t-vxworks: Likewise. + * config/arm/t-wince-pe: Likewise. + * config/avr/libgcc.S: Move to ../libgcc/config/avr. + * config/avr/t-avr (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/bfin/lib1funcs.asm: Move to + ../libgcc/config/bfin/lib1funcs.S. + * config/bfin/t-bfin: Remove. + * config/bfin/t-bfin-elf (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/bfin/t-bfin-linux: Likewise. + * config/bfin/t-bfin-uclinux: Likewise. + * config/c6x/lib1funcs.asm: Move to + ../libgcc/config/c6x/lib1funcs.S. + * config/c6x/t-c6x-elf (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/fr30/lib1funcs.asm: Move to + ../libgcc/config/fr30/lib1funcs.S. + * config/fr30/t-fr30 (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/frv/lib1funcs.asm: Move to + ../libgcc/config/frv/lib1funcs.S. + * config/frv/t-frv (CROSS_LIBGCC1, LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/h8300/fixunssfsi.c: Update lib1funcs.asm filename. + * config/h8300/lib1funcs.asm: Move to + ../libgcc/config/h8300/lib1funcs.S. + * config/h8300/t-h8300 (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/i386/cygwin.asm: Move to ../libgcc/config/i386/cygwin.S. + * config/i386/t-cygming (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/i386/t-interix: Likewise. + * config/ia64/lib1funcs.asm: Move to + ../libgcc/config/ia64/lib1funcs.S. + * config/ia64/t-hpux (LIB1ASMFUNCS, LIBGCC1_TEST): Remove. + * config/ia64/t-ia64 (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/iq2000/t-iq2000 (LIBGCC1, CROSS_LIBGCC1): Remove. + * config/m32c/m32c.c: Update m32c-lib1.S filename. + * config/m32c/m32c-lib1.S: Move to ../libgcc/config/m32c/lib1funcs.S. + * config/m32c/t-m32c (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/m32r/t-linux (CROSS_LIBGCC1, LIBGCC1, LIBGCC1_TEST): Remove. + * config/m68k/lb1sf68.asm: Move to ../libgcc/config/m68k/lb1sf68.S. + * config/m68k/t-floatlib (LIB1ASMSRC, LIB1ASMFUNCS): New file. + * config/mcore/lib1.asm: Move to ../libgcc/config/mcore/lib1funcs.S. + * config/mcore/t-mcore (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/mep/mep-lib1.asm: Move to ../libgcc/config/mep/lib1funcs.S. + * config/mep/t-mep (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/mips/mips16.S: Move to ../libgcc/config/mips. + * config/mips/t-libgcc-mips16: Remove. + * config/mips/t-sr71k (LIBGCC1, CROSS_LIBGCC1): Remove. + * config/pa/milli64.S: Move to ../libgcc/config/pa. + * config/pa/t-linux (LIB1ASMFUNCS, LIB1ASMSRC): Remove. + * config/pa/t-linux64: Likewise. + * config/picochip/libgccExtras/fake_libgcc.asm: Move to + ../libgcc/config/picochip/lib1funcs.S. + * config/picochip/t-picochip (LIB1ASMFUNCS, LIB1ASMSRC): Remove. + * config/sh/lib1funcs.asm: Move to ../libgcc/config/sh/lib1funcs.S. + * config/sh/lib1funcs.h: Move to ../libgcc/config/sh. + * config/sh/sh.h: Update lib1funcs.asm filename. + * config/sh/t-linux (LIB1ASMFUNCS_CACHE): Remove. + * config/sh/t-netbsd: Likewise. + * config/sh/t-sh (LIB1ASMSRC, LIB1ASMFUNCS, LIB1ASMFUNCS_CACHE): + Remove. + * config/sh/t-sh64 (LIB1ASMFUNCS): Remove. + * config/sparc/lb1spc.asm: Move to ../libgcc/config/sparc/lb1spc.S. + * config/sparc/lb1spl.asm: Remove. + * config/sparc/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config/sparc/t-leon: Likewise. + * config/spu/t-spu-elf (LIBGCC1, CROSS_LIBGCC1): Remove. + * config/v850/lib1funcs.asm: Move to ../libgcc/config/v850/lib1funcs.S. + * config/v850/t-v850 (LIB1ASMSRC, LIB1ASMFUNCS): Remove + * config/vax/lib1funcs.asm: Move to ../libgcc/config/vax/lib1funcs.S. + * config/vax/t-linux: Remove. + * config/xtensa/ieee754-df.S, config/xtensa/ieee754-sf.S: Move to + ../libgcc/config/xtensa. + * config/xtensa/lib1funcs.asm: Move to + ../libgcc/config/xtensa/lib1funcs.S. + * config/xtensa/t-xtensa (LIB1ASMSRC, LIB1ASMFUNCS): Remove. + * config.gcc (bfin*-rtems*): Remove bfin/t-bfin from tmake_file. + (bfin*-*): Likewise. + (mips64*-*-linux*, mipsisa64*-*-linux*): Remove + mips/t-libgcc-mips16 from tmake_file. + (mips*-*-linux*): Likewise. + (mips*-sde-elf*): Likewise. + (mipsisa32-*-elf*, mipsisa32el-*-elf*, mipsisa32r2-*-elf*) + (mipsisa32r2el-*-elf*, mipsisa64-*-elf*, mipsisa64el-*-elf*) + (mipsisa64r2-*-elf*, mipsisa64r2el-*-elf*): Likewise. + (mipsisa64sb1-*-elf*, mipsisa64sb1el-*-elf*): Likewise. + (mips-*-elf*, mipsel-*-elf*): Likewise. + (mips64-*-elf*, mips64el-*-elf*): Likewise. + (mips64orion-*-elf*, mips64orionel-*-elf*): Likewise. + (mips*-*-rtems*): Likewise. + (mipstx39-*-elf*, mipstx39el-*-elf*): Likewise. + (vax-*-linux*): Remove vax/t-linux from tmake_file. + +2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + * config.gcc (extra_parts): Remove. (*-*-freebsd*): Remove extra_parts. (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu, diff --git a/gcc/Makefile.in b/gcc/Makefile.in index b6951dc1486..38449d7c30e 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1110,7 +1110,6 @@ export DESTDIR export GCC_FOR_TARGET export INCLUDES export INSTALL_DATA -export LIB1ASMSRC export LIBGCC2_CFLAGS export LIPO_FOR_TARGET export MACHMODE_H @@ -1878,8 +1877,6 @@ libgcc-support: libgcc.mvars stmp-int-hdrs $(TCONFIG_H) \ libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \ xgcc$(exeext) : > tmp-libgcc.mvars - echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars - echo LIB1ASMSRC = '$(LIB1ASMSRC)' >> tmp-libgcc.mvars echo LIB2FUNCS_ST = '$(LIB2FUNCS_ST)' >> tmp-libgcc.mvars echo LIB2FUNCS_EXCLUDE = '$(LIB2FUNCS_EXCLUDE)' >> tmp-libgcc.mvars echo LIB2ADD = '$(call srcdirify,$(LIB2ADD))' >> tmp-libgcc.mvars diff --git a/gcc/config.gcc b/gcc/config.gcc index 6bbec7db39e..79230a6935a 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -950,11 +950,10 @@ bfin*-linux-uclibc*) ;; bfin*-rtems*) tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h" - tmake_file="bfin/t-bfin t-rtems bfin/t-rtems" + tmake_file="t-rtems bfin/t-rtems" ;; bfin*-*) tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h" - tmake_file=bfin/t-bfin use_collect2=no use_gcc_stdint=wrap ;; @@ -1737,7 +1736,7 @@ mips*-*-netbsd*) # NetBSD/mips, either endian. ;; mips64*-*-linux* | mipsisa64*-*-linux*) tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h" - tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16" + tmake_file="${tmake_file} mips/t-linux64" tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32" case ${target} in mips64el-st-linux-gnu) @@ -1758,7 +1757,6 @@ mips64*-*-linux* | mipsisa64*-*-linux*) ;; mips*-*-linux*) # Linux MIPS, either endian. tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h" - tmake_file="${tmake_file} mips/t-libgcc-mips16" if test x$enable_targets = xall; then tm_file="${tm_file} mips/gnu-user64.h mips/linux64.h" tmake_file="${tmake_file} mips/t-linux64" @@ -1785,7 +1783,7 @@ mips*-*-openbsd*) ;; mips*-sde-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/sde.h" - tmake_file="mips/t-sde mips/t-libgcc-mips16" + tmake_file="mips/t-sde" extra_options="${extra_options} mips/sde.opt" case "${with_newlib}" in yes) @@ -1822,7 +1820,7 @@ mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \ mipsisa64-*-elf* | mipsisa64el-*-elf* | \ mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h" - tmake_file="mips/t-isa3264 mips/t-libgcc-mips16" + tmake_file="mips/t-isa3264" case ${target} in mipsisa32r2*) tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33" @@ -1859,17 +1857,17 @@ mipsisa64sr71k-*-elf*) ;; mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h" - tmake_file="mips/t-elf mips/t-libgcc-mips16 mips/t-sb1" + tmake_file="mips/t-elf mips/t-sb1" target_cpu_default="MASK_64BIT|MASK_FLOAT64" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64" ;; mips-*-elf* | mipsel-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h" - tmake_file="mips/t-elf mips/t-libgcc-mips16" + tmake_file="mips/t-elf" ;; mips64-*-elf* | mips64el-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h" - tmake_file="mips/t-elf mips/t-libgcc-mips16" + tmake_file="mips/t-elf" target_cpu_default="MASK_64BIT|MASK_FLOAT64" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" ;; @@ -1880,13 +1878,13 @@ mips64vr-*-elf* | mips64vrel-*-elf*) ;; mips64orion-*-elf* | mips64orionel-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h" - tmake_file="mips/t-elf mips/t-libgcc-mips16" + tmake_file="mips/t-elf" target_cpu_default="MASK_64BIT|MASK_FLOAT64" tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64" ;; mips*-*-rtems*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h" - tmake_file="mips/t-elf mips/t-libgcc-mips16 t-rtems mips/t-rtems" + tmake_file="mips/t-elf t-rtems mips/t-rtems" ;; mips-wrs-vxworks) tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h" @@ -1894,7 +1892,7 @@ mips-wrs-vxworks) ;; mipstx39-*-elf* | mipstx39el-*-elf*) tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h" - tmake_file="mips/t-r3900 mips/t-libgcc-mips16" + tmake_file="mips/t-r3900" ;; mmix-knuth-mmixware) tm_file="${tm_file} newlib-stdint.h" @@ -2511,7 +2509,6 @@ v850*-*-*) vax-*-linux*) tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h" extra_options="${extra_options} vax/elf.opt" - tmake_file="${tmake_file} vax/t-linux" ;; vax-*-netbsdelf*) tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h" diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e07c8c328c6..5f0d5629462 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -23495,7 +23495,7 @@ arm_small_register_classes_for_mode_p (enum machine_mode mode ATTRIBUTE_UNUSED) /* Implement TARGET_SHIFT_TRUNCATION_MASK. SImode shifts use normal ARM insns and therefore guarantee that the shift count is modulo 256. - DImode shifts (those implemented by lib1funcs.asm or by optabs.c) + DImode shifts (those implemented by lib1funcs.S or by optabs.c) guarantee no particular behavior for out-of-range counts. */ static unsigned HOST_WIDE_INT diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h index a3830955948..80bd8259375 100644 --- a/gcc/config/arm/linux-eabi.h +++ b/gcc/config/arm/linux-eabi.h @@ -97,7 +97,7 @@ #undef LIBGCC_SPEC /* Clear the instruction cache from `beg' to `end'. This is - implemented in lib1funcs.asm, so ensure an error if this definition + implemented in lib1funcs.S, so ensure an error if this definition is used. */ #undef CLEAR_INSN_CACHE #define CLEAR_INSN_CACHE(BEG, END) not_used diff --git a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm index b970ec26a35..a9a174d473d 100644 --- a/gcc/config/arm/t-arm +++ b/gcc/config/arm/t-arm @@ -40,9 +40,6 @@ MD_INCLUDES= $(srcdir)/config/arm/arm-tune.md \ $(srcdir)/config/arm/thumb2.md \ $(srcdir)/config/arm/arm-fixed.md -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \ - _thumb1_case_uhi _thumb1_case_si s-config s-conditions s-flags s-codes s-constants s-emit s-recog s-preds \ s-opinit s-extract s-peep s-attr s-attrtab s-output: $(MD_INCLUDES) diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf index bfcf6ffd939..a605d26244f 100644 --- a/gcc/config/arm/t-arm-elf +++ b/gcc/config/arm/t-arm-elf @@ -17,20 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# For most CPUs we have an assembly soft-float implementations. -# However this is not true for ARMv6M. Here we want to use the soft-fp C -# implementation. The soft-fp code is only build for ARMv6M. This pulls -# in the asm implementation for other CPUs. -LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ - _call_via_rX _interwork_call_via_rX \ - _lshrdi3 _ashrdi3 _ashldi3 \ - _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ - _arm_fixdfsi _arm_fixunsdfsi \ - _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 \ - _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \ - _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \ - _clzsi2 _clzdi2 - MULTILIB_OPTIONS = marm/mthumb MULTILIB_DIRNAMES = arm thumb MULTILIB_EXCEPTIONS = diff --git a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi index 047525682fc..c9d5ed4d674 100644 --- a/gcc/config/arm/t-bpabi +++ b/gcc/config/arm/t-bpabi @@ -16,9 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# Add the bpabi.S functions. -LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod - # Add the BPABI C functions. LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \ $(srcdir)/config/arm/unaligned-funcs.c diff --git a/gcc/config/arm/t-linux b/gcc/config/arm/t-linux index a0c5110f0c0..a204834014e 100644 --- a/gcc/config/arm/t-linux +++ b/gcc/config/arm/t-linux @@ -21,10 +21,6 @@ # difference. TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -LIB1ASMSRC = arm/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ - _arm_addsubdf3 _arm_addsubsf3 - # MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=soft # MULTILIB_DIRNAMES = hard-float soft-float diff --git a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi index fed979e980b..3030229fafa 100644 --- a/gcc/config/arm/t-linux-eabi +++ b/gcc/config/arm/t-linux-eabi @@ -28,8 +28,5 @@ MULTILIB_DIRNAMES = #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* -# Use a version of div0 which raises SIGFPE, and a special __clear_cache. -LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache - LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic.c LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic-64bit.c diff --git a/gcc/config/arm/t-strongarm-elf b/gcc/config/arm/t-strongarm-elf index 95680031e54..4d51e660c8b 100644 --- a/gcc/config/arm/t-strongarm-elf +++ b/gcc/config/arm/t-strongarm-elf @@ -17,8 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _clzsi2 _clzdi2 - MULTILIB_OPTIONS = mlittle-endian/mbig-endian mfloat-abi=hard/mfloat-abi=soft MULTILIB_DIRNAMES = le be fpu soft MULTILIB_EXCEPTIONS = diff --git a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian index cf716147849..736a01d10f4 100644 --- a/gcc/config/arm/t-symbian +++ b/gcc/config/arm/t-symbian @@ -16,20 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMFUNCS += _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 - -# These functions have __aeabi equivalents and will never be called by GCC. -# By putting them in LIB1ASMFUNCS, we avoid the standard libgcc2.c code being -# used -- and we make sure that definitions are not available in lib1funcs.asm, -# either, so they end up undefined. -LIB1ASMFUNCS += \ - _ashldi3 _ashrdi3 _divdi3 _floatdidf _udivmoddi4 _umoddi3 \ - _udivdi3 _lshrdi3 _moddi3 _muldi3 _negdi2 _cmpdi2 \ - _fixdfdi _fixsfdi _fixunsdfdi _fixunssfdi _floatdisf \ - _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ - _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ - _fixsfsi _fixunssfsi - EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h # Include half-float helpers. LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c diff --git a/gcc/config/arm/t-vxworks b/gcc/config/arm/t-vxworks index 8ac0d9bcec5..0900ffe15ed 100644 --- a/gcc/config/arm/t-vxworks +++ b/gcc/config/arm/t-vxworks @@ -16,8 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 - MULTILIB_OPTIONS = \ mrtp fPIC \ t4/t4be/t4t/t4tbe/t5/t5be/t5t/t5tbe/tstrongarm/txscale/txscalebe diff --git a/gcc/config/arm/t-wince-pe b/gcc/config/arm/t-wince-pe index 9ce1f313140..8a8c65fd396 100644 --- a/gcc/config/arm/t-wince-pe +++ b/gcc/config/arm/t-wince-pe @@ -17,8 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 - pe.o: $(srcdir)/config/arm/pe.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) output.h flags.h $(TREE_H) expr.h $(TM_P_H) $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr index 30e8d96447e..3f37e591f8e 100644 --- a/gcc/config/avr/t-avr +++ b/gcc/config/avr/t-avr @@ -39,54 +39,6 @@ $(srcdir)/config/avr/avr-tables.opt: $(srcdir)/config/avr/genopt.sh \ $(SHELL) $(srcdir)/config/avr/genopt.sh $(srcdir)/config/avr > \ $(srcdir)/config/avr/avr-tables.opt -LIB1ASMSRC = avr/libgcc.S -LIB1ASMFUNCS = \ - _mulqi3 \ - _mulhi3 \ - _mulhisi3 \ - _umulhisi3 \ - _usmulhisi3 \ - _muluhisi3 \ - _mulshisi3 \ - _mulsi3 \ - _udivmodqi4 \ - _divmodqi4 \ - _udivmodhi4 \ - _divmodhi4 \ - _udivmodsi4 \ - _divmodsi4 \ - _prologue \ - _epilogue \ - _exit \ - _cleanup \ - _tablejump \ - _tablejump_elpm \ - _copy_data \ - _clear_bss \ - _ctors \ - _dtors \ - _ffssi2 \ - _ffshi2 \ - _loop_ffsqi2 \ - _ctzsi2 \ - _ctzhi2 \ - _clzdi2 \ - _clzsi2 \ - _clzhi2 \ - _paritydi2 \ - _paritysi2 \ - _parityhi2 \ - _popcounthi2 \ - _popcountsi2 \ - _popcountdi2 \ - _popcountqi2 \ - _bswapsi2 \ - _bswapdi2 \ - _ashldi3 \ - _ashrdi3 \ - _lshrdi3 \ - _fmul _fmuls _fmulsu - LIB2FUNCS_EXCLUDE = \ _clz diff --git a/gcc/config/bfin/t-bfin b/gcc/config/bfin/t-bfin deleted file mode 100644 index bb95ab4139e..00000000000 --- a/gcc/config/bfin/t-bfin +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (C) 2005, 2007, 2011 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. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -## Target part of the Makefile - -LIB1ASMSRC = bfin/lib1funcs.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _muldi3 _umulsi3_highpart -LIB1ASMFUNCS += _smulsi3_highpart diff --git a/gcc/config/bfin/t-bfin-elf b/gcc/config/bfin/t-bfin-elf index fcf76c4ddfe..5cbcfeeb87f 100644 --- a/gcc/config/bfin/t-bfin-elf +++ b/gcc/config/bfin/t-bfin-elf @@ -18,10 +18,6 @@ ## Target part of the Makefile -LIB1ASMSRC = bfin/lib1funcs.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _muldi3 _umulsi3_highpart -LIB1ASMFUNCS += _smulsi3_highpart - TARGET_LIBGCC2_CFLAGS = -fpic MULTILIB_OPTIONS=mcpu=bf532-none diff --git a/gcc/config/bfin/t-bfin-linux b/gcc/config/bfin/t-bfin-linux index a83f9f2da83..9a1d6a09437 100644 --- a/gcc/config/bfin/t-bfin-linux +++ b/gcc/config/bfin/t-bfin-linux @@ -18,10 +18,6 @@ ## Target part of the Makefile -LIB1ASMSRC = bfin/lib1funcs.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _muldi3 _umulsi3_highpart -LIB1ASMFUNCS += _smulsi3_highpart - TARGET_LIBGCC2_CFLAGS = -fpic MULTILIB_OPTIONS=mcpu=bf532-none diff --git a/gcc/config/bfin/t-bfin-uclinux b/gcc/config/bfin/t-bfin-uclinux index 1be0796987b..b9fca803e0a 100644 --- a/gcc/config/bfin/t-bfin-uclinux +++ b/gcc/config/bfin/t-bfin-uclinux @@ -18,10 +18,6 @@ ## Target part of the Makefile -LIB1ASMSRC = bfin/lib1funcs.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _muldi3 _umulsi3_highpart -LIB1ASMFUNCS += _smulsi3_highpart - TARGET_LIBGCC2_CFLAGS = -fpic MULTILIB_OPTIONS=mcpu=bf532-none diff --git a/gcc/config/c6x/t-c6x-elf b/gcc/config/c6x/t-c6x-elf index b3b4b850fe8..6bc2832026d 100644 --- a/gcc/config/c6x/t-c6x-elf +++ b/gcc/config/c6x/t-c6x-elf @@ -18,11 +18,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = c6x/lib1funcs.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _udivmodsi4 _divmodsi4 -LIB1ASMFUNCS += _strasgi _strasgi_64plus _clzsi2 _clzdi2 _clz -LIB1ASMFUNCS += _push_rts _pop_rts _call_stub - LIB2FUNCS_EXCLUDE = _cmpdi2 _ucmpdi2 _gcc_bcmp _eprintf _clzsi _clzdi EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h diff --git a/gcc/config/fr30/t-fr30 b/gcc/config/fr30/t-fr30 index 75009d4eb70..e37921681d0 100644 --- a/gcc/config/fr30/t-fr30 +++ b/gcc/config/fr30/t-fr30 @@ -16,9 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = fr30/lib1funcs.asm -LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 - # If any special flags are necessary when building libgcc2 put them here. # # TARGET_LIBGCC2_CFLAGS diff --git a/gcc/config/frv/t-frv b/gcc/config/frv/t-frv index 03f3cd8cde1..e31f823c30a 100644 --- a/gcc/config/frv/t-frv +++ b/gcc/config/frv/t-frv @@ -16,15 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# Name of assembly file containing libgcc1 functions. -# This entry must be present, but it can be empty if the target does -# not need any assembler functions to support its code generation. -# -# Alternatively if assembler functions *are* needed then define the -# entries below: -CROSS_LIBGCC1 = libgcc1-asm.a -LIB1ASMSRC = frv/lib1funcs.asm -LIB1ASMFUNCS = _cmpll _cmpf _cmpd _addll _subll _andll _orll _xorll _notll _cmov LIB2FUNCS_EXTRA = cmovh.c cmovw.c cmovd.c modi.c umodi.c uitof.c uitod.c ulltof.c ulltod.c # If any special flags are necessary when building libgcc2 put them here. diff --git a/gcc/config/h8300/fixunssfsi.c b/gcc/config/h8300/fixunssfsi.c index 2fe62b7a1a8..940d0c6dc6a 100644 --- a/gcc/config/h8300/fixunssfsi.c +++ b/gcc/config/h8300/fixunssfsi.c @@ -1,6 +1,6 @@ /* More subroutines needed by GCC output code on some machines. */ /* Compile this one with gcc. */ -/* Copyright (C) 1989, 1992, 2001, 2002, 2003, 2004, 2009 +/* Copyright (C) 1989, 1992, 2001, 2002, 2003, 2004, 2009, 2011 Free Software Foundation, Inc. This file is part of GCC. @@ -26,7 +26,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* The libgcc2.c implementation gets confused by our type setup and creates a directly recursive call, so we do our own implementation. For - the H8/300, that's in lib1funcs.asm, for H8/300H and H8S, it's here. */ + the H8/300, that's in lib1funcs.S, for H8/300H and H8S, it's here. */ #ifndef __H8300__ long __fixunssfsi (float a); diff --git a/gcc/config/h8300/t-h8300 b/gcc/config/h8300/t-h8300 index 616849007b4..7083c673acf 100644 --- a/gcc/config/h8300/t-h8300 +++ b/gcc/config/h8300/t-h8300 @@ -17,10 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = h8300/lib1funcs.asm -LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \ - _fixunssfsi_asm - LIB2FUNCS_EXTRA = \ $(srcdir)/config/h8300/clzhi2.c \ $(srcdir)/config/h8300/ctzhi2.c \ diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming index 242d7f27f65..3e7f7cdd036 100644 --- a/gcc/config/i386/t-cygming +++ b/gcc/config/i386/t-cygming @@ -17,9 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = i386/cygwin.asm -LIB1ASMFUNCS = _chkstk _chkstk_ms - # cygwin and mingw always have a limits.h, but, depending upon how we are # doing the build, it may not be installed yet. LIMITS_H_TEST = true diff --git a/gcc/config/i386/t-interix b/gcc/config/i386/t-interix index e7b016f1e7a..09c9127f6af 100644 --- a/gcc/config/i386/t-interix +++ b/gcc/config/i386/t-interix @@ -1,6 +1,3 @@ -LIB1ASMSRC = i386/cygwin.asm -LIB1ASMFUNCS = _chkstk _chkstk_ms - winnt.o: $(srcdir)/config/i386/winnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \ $(TM_P_H) $(HASHTAB_H) $(GGC_H) diff --git a/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux index e1554861d18..23691f3856c 100644 --- a/gcc/config/ia64/t-hpux +++ b/gcc/config/ia64/t-hpux @@ -26,12 +26,6 @@ MULTILIB_OPTIONS = milp32/mlp64 MULTILIB_DIRNAMES = hpux32 hpux64 MULTILIB_MATCHES = -# On HP-UX we do not want _fixtfdi, _fixunstfdi, or _floatditf from -# LIB1ASMSRC. These functions map the 128 bit conversion function names -# to 80 bit conversions and were done for Linux backwards compatibility. - -LIB1ASMFUNCS := $(filter-out _fixtfdi _fixunstfdi _floatditf,$(LIB1ASMFUNCS)) - # Support routines for HP-UX 128 bit floats. LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c @@ -39,12 +33,6 @@ LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c quadlib.c: $(srcdir)/config/ia64/quadlib.c cat $(srcdir)/config/ia64/quadlib.c > quadlib.c -# We get an undefined main when building a cross compiler because our -# linkspec has "-u main" and we want that for linking but it makes -# LIBGCC1_TEST fail because it uses -nostdlib -nostartup. - -LIBGCC1_TEST = - # We do not want to include the EH stuff that linux uses, we want to use # the HP-UX libunwind library. diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64 index a143d43d56c..8a54d46b458 100644 --- a/gcc/config/ia64/t-ia64 +++ b/gcc/config/ia64/t-ia64 @@ -18,19 +18,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = ia64/lib1funcs.asm - -# We use different names for the DImode div/mod files so that they won't -# conflict with libgcc2.c files. We used to use __ia64 as a prefix, now -# we use __ as the prefix. Note that L_divdi3 in libgcc2.c actually defines -# a TImode divide function, so there is no actual overlap here between -# libgcc2.c and lib1funcs.asm. -LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \ - __divdi3 __moddi3 __udivdi3 __umoddi3 \ - __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ - __nonlocal_goto __restore_stack_nonlocal __trampoline \ - _fixtfdi _fixunstfdi _floatditf - # ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel # assembler does not accept # line number as a comment. # ??? This breaks C++ pragma interface/implementation, which is used in the diff --git a/gcc/config/iq2000/t-iq2000 b/gcc/config/iq2000/t-iq2000 index 03d8c703f86..c634e58646e 100644 --- a/gcc/config/iq2000/t-iq2000 +++ b/gcc/config/iq2000/t-iq2000 @@ -16,11 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# Suppress building libgcc1.a, since the MIPS compiler port is complete -# and does not need anything from libgcc1.a. -LIBGCC1 = -CROSS_LIBGCC1 = - LIB2FUNCS_EXTRA = $(srcdir)/config/udivmod.c $(srcdir)/config/divmod.c $(srcdir)/config/udivmodsi4.c $(srcdir)/config/iq2000/lib2extra-funcs.c # Enable the following if multilibs are needed. diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index 7040df69fcf..04f69050609 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -391,7 +391,7 @@ class_can_hold_mode (reg_class_t rclass, enum machine_mode mode) we allow the user to limit the number of memregs available, in order to try to persuade gcc to try harder to use real registers. - Memregs are provided by m32c-lib1.S. + Memregs are provided by lib1funcs.S. */ int ok_to_change_target_memregs = TRUE; diff --git a/gcc/config/m32c/t-m32c b/gcc/config/m32c/t-m32c index b11f34d674f..aad972a2575 100644 --- a/gcc/config/m32c/t-m32c +++ b/gcc/config/m32c/t-m32c @@ -19,16 +19,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = m32c/m32c-lib1.S - -LIB1ASMFUNCS = \ - __m32c_memregs \ - __m32c_eh_return \ - __m32c_mulsi3 \ - __m32c_cmpsi2 \ - __m32c_ucmpsi2 \ - __m32c_jsri16 - LIB2FUNCS_EXTRA = $(srcdir)/config/m32c/m32c-lib2.c $(srcdir)/config/m32c/m32c-lib2-trapv.c # target-specific files diff --git a/gcc/config/m32r/t-linux b/gcc/config/m32r/t-linux index 487c0198786..f3b89d21d0b 100644 --- a/gcc/config/m32r/t-linux +++ b/gcc/config/m32r/t-linux @@ -16,9 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# lib1funcs.asm is currently empty. -CROSS_LIBGCC1 = - # Turn off the SDA while compiling libgcc2. There are no headers for it # and we want maximal upward compatibility here. @@ -26,9 +23,3 @@ TARGET_LIBGCC2_CFLAGS = -G 0 -fPIC # Don't install "assert.h" in gcc. We use the one in glibc. INSTALL_ASSERT_H = - -# Do not build libgcc1. Let gcc generate those functions. The GNU/Linux -# C library can handle them. -LIBGCC1 = -CROSS_LIBGCC1 = -LIBGCC1_TEST = diff --git a/gcc/config/m68k/t-floatlib b/gcc/config/m68k/t-floatlib index 2039d1d0dc4..23734be40bd 100644 --- a/gcc/config/m68k/t-floatlib +++ b/gcc/config/m68k/t-floatlib @@ -1,4 +1,4 @@ -# Copyright (C) 2007 Free Software Foundation, Inc. +# Copyright (C) 2007, 2011 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -16,12 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = m68k/lb1sf68.asm -LIB1ASMFUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \ - _double _float _floatex \ - _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \ - _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2 - LIB2FUNCS_EXTRA = fpgnulib.c xfgnulib.c fpgnulib.c: $(srcdir)/config/m68k/fpgnulib.c diff --git a/gcc/config/mcore/t-mcore b/gcc/config/mcore/t-mcore index 9c84d850f20..265399cecfe 100644 --- a/gcc/config/mcore/t-mcore +++ b/gcc/config/mcore/t-mcore @@ -16,9 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = mcore/lib1.asm -LIB1ASMFUNCS = _divsi3 _udivsi3 _modsi3 _umodsi3 - # could use -msifilter to be safe from interrupt/jmp interactions and others. TARGET_LIBGCC2_CFLAGS=-O3 -DNO_FLOATLIB_FIXUNSDFSI #-msifilter diff --git a/gcc/config/mep/t-mep b/gcc/config/mep/t-mep index d560db0aa4b..ac4ad95bc87 100644 --- a/gcc/config/mep/t-mep +++ b/gcc/config/mep/t-mep @@ -32,16 +32,6 @@ mep-pragma.o: $(srcdir)/config/mep/mep-pragma.c $(CONFIG_H) $(SYSTEM_H) \ function.h insn-config.h reload.h $(TARGET_H) $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< -# profiling support - -LIB1ASMSRC = mep/mep-lib1.asm - -LIB1ASMFUNCS = _mep_profile \ - _mep_bb_init_trace \ - _mep_bb_init \ - _mep_bb_trace \ - _mep_bb_increment - # multiply and divide routines LIB2FUNCS_EXTRA = \ diff --git a/gcc/config/mips/t-libgcc-mips16 b/gcc/config/mips/t-libgcc-mips16 deleted file mode 100644 index 31a042bb75e..00000000000 --- a/gcc/config/mips/t-libgcc-mips16 +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2007, 2008, 2011 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. -# -# You should have received a copy of the GNU General Public License -# along with GCC; see the file COPYING3. If not see -# <http://www.gnu.org/licenses/>. - -LIB1ASMSRC = mips/mips16.S -LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \ - _m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \ - _m16unordsf2 \ - _m16fltsisf _m16fix_truncsfsi _m16fltunsisf \ - _m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \ - _m16extsfdf2 _m16trdfsf2 \ - _m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \ - _m16unorddf2 \ - _m16fltsidf _m16fix_truncdfsi _m16fltunsidf \ - _m16retsf _m16retdf \ - _m16retsc _m16retdc \ - _m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \ - _m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \ - _m16stubsf9 _m16stubsf10 \ - _m16stubdf0 _m16stubdf1 _m16stubdf2 _m16stubdf5 _m16stubdf6 \ - _m16stubdf9 _m16stubdf10 \ - _m16stubsc0 _m16stubsc1 _m16stubsc2 _m16stubsc5 _m16stubsc6 \ - _m16stubsc9 _m16stubsc10 \ - _m16stubdc0 _m16stubdc1 _m16stubdc2 _m16stubdc5 _m16stubdc6 \ - _m16stubdc9 _m16stubdc10 diff --git a/gcc/config/mips/t-sr71k b/gcc/config/mips/t-sr71k index 7b8669fefd2..f204017faa8 100644 --- a/gcc/config/mips/t-sr71k +++ b/gcc/config/mips/t-sr71k @@ -16,11 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# Suppress building libgcc1.a, since the MIPS compiler port is complete -# and does not need anything from libgcc1.a. -LIBGCC1 = -CROSS_LIBGCC1 = - # We must build libgcc2.a with -G 0, in case the user wants to link # without the $gp register. TARGET_LIBGCC2_CFLAGS = -G 0 diff --git a/gcc/config/pa/t-linux b/gcc/config/pa/t-linux index df351e11458..b94ebd250a8 100644 --- a/gcc/config/pa/t-linux +++ b/gcc/config/pa/t-linux @@ -16,13 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -#Plug millicode routines into libgcc.a We want these on both native and -#cross compiles. We use the "64-bit" routines because the "32-bit" code -#is broken for certain corner cases. - -LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI _dyncall -LIB1ASMSRC = pa/milli64.S - # Compile libgcc2.a as PIC. TARGET_LIBGCC2_CFLAGS = -fPIC -DELF=1 -DLINUX=1 diff --git a/gcc/config/pa/t-linux64 b/gcc/config/pa/t-linux64 index d40546cabcc..af803a27ed3 100644 --- a/gcc/config/pa/t-linux64 +++ b/gcc/config/pa/t-linux64 @@ -16,12 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -#Plug millicode routines into libgcc.a We want these on both native and -#cross compiles. - -LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI -LIB1ASMSRC = pa/milli64.S - LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/pa/linux-atomic.c # Compile libgcc2.a as PIC. diff --git a/gcc/config/picochip/libgccExtras/fake_libgcc.asm b/gcc/config/picochip/libgccExtras/fake_libgcc.asm deleted file mode 100644 index e4b78f1e1f1..00000000000 --- a/gcc/config/picochip/libgccExtras/fake_libgcc.asm +++ /dev/null @@ -1,6 +0,0 @@ -// picoChip ASM file -// Fake libgcc asm file. This contains nothing, but is used to prevent gcc -// getting upset about the lack of a libgcc.S file when LIB1ASMFUNCS is defined -// to switch off the compilation of parts of libgcc. - - diff --git a/gcc/config/picochip/t-picochip b/gcc/config/picochip/t-picochip index 222d7a646b9..0f3fe8c3d81 100644 --- a/gcc/config/picochip/t-picochip +++ b/gcc/config/picochip/t-picochip @@ -35,14 +35,6 @@ LIB2FUNCS_EXTRA = \ $(srcdir)/config/picochip/libgccExtras/parityhi2.asm \ $(srcdir)/config/picochip/libgccExtras/popcounthi2.asm -# Prevent some of the more complicated libgcc functions from being -# compiled. This is because they are generally too big to fit into an -# AE anyway, so there is no point in having them. Also, some don't -# compile properly so we'll ignore them for the moment. - -LIB1ASMFUNCS = _mulsc3 _divsc3 -LIB1ASMSRC = picochip/libgccExtras/fake_libgcc.asm - # Turn off ranlib on target libraries. RANLIB_FOR_TARGET = cat diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 1e654801334..cc26e05a764 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -1983,7 +1983,7 @@ struct sh_args { that the native compiler puts too large (> 32) immediate shift counts into a register and shifts by the register, letting the SH decide what to do instead of doing that itself. */ -/* ??? The library routines in lib1funcs.asm truncate the shift count. +/* ??? The library routines in lib1funcs.S truncate the shift count. However, the SH3 has hardware shifts that do not truncate exactly as gcc expects - the sign bit is significant - so it appears that we need to leave this zero for correct SH3 code. */ diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux index a5c711618c6..2304fb176cb 100644 --- a/gcc/config/sh/t-linux +++ b/gcc/config/sh/t-linux @@ -1,5 +1,3 @@ -LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array - LIB2FUNCS_EXTRA= $(srcdir)/config/sh/linux-atomic.asm MULTILIB_DIRNAMES= diff --git a/gcc/config/sh/t-netbsd b/gcc/config/sh/t-netbsd index de172d3f73f..dea1c478cb5 100644 --- a/gcc/config/sh/t-netbsd +++ b/gcc/config/sh/t-netbsd @@ -17,6 +17,5 @@ # <http://www.gnu.org/licenses/>. TARGET_LIBGCC2_CFLAGS = -fpic -mieee -LIB1ASMFUNCS_CACHE = _ic_invalidate LIB2FUNCS_EXTRA= diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh index 6eaf784e8ae..56ea83e0697 100644 --- a/gcc/config/sh/t-sh +++ b/gcc/config/sh/t-sh @@ -22,13 +22,6 @@ sh-c.o: $(srcdir)/config/sh/sh-c.c \ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/sh/sh-c.c -LIB1ASMSRC = sh/lib1funcs.asm -LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movmem \ - _movmem_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ - _div_table _udiv_qrnnd_16 \ - $(LIB1ASMFUNCS_CACHE) -LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array - TARGET_LIBGCC2_CFLAGS = -mieee DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG)) diff --git a/gcc/config/sh/t-sh64 b/gcc/config/sh/t-sh64 index d88f929fd7a..3bd9205079b 100644 --- a/gcc/config/sh/t-sh64 +++ b/gcc/config/sh/t-sh64 @@ -1,4 +1,4 @@ -# Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004, 2005, 2011 Free Software Foundation, Inc. # # This file is part of GCC. # @@ -16,13 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMFUNCS = \ - _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ - _shcompact_call_trampoline _shcompact_return_trampoline \ - _shcompact_incoming_args _ic_invalidate _nested_trampoline \ - _push_pop_shmedia_regs \ - _udivdi3 _divdi3 _umoddi3 _moddi3 _div_table - MULTILIB_CPU_DIRS= $(ML_sh1) $(ML_sh2e) $(ML_sh2) $(ML_sh3e) $(ML_sh3) $(ML_sh4_nofpu) $(ML_sh4_single_only) $(ML_sh4_single) $(ML_sh4) $(ML_sh5_32media:m5-32media/=media32) $(ML_sh5_32media_nofpu:m5-32media-nofpu/=nofpu/media32) $(ML_sh5_compact:m5-compact/=compact) $(ML_sh5_compact_nofpu:m5-compact-nofpu/=nofpu/compact) $(ML_sh5_64media:m5-64media/=media64) $(ML_sh5_64media_nofpu:m5-64media-nofpu/=nofpu/media64) MULTILIB_RAW_DIRNAMES= $(MULTILIB_ENDIAN:/mb= mb) $(MULTILIB_CPU_DIRS:/=) diff --git a/gcc/config/sparc/lb1spl.asm b/gcc/config/sparc/lb1spl.asm deleted file mode 100644 index 973401f8018..00000000000 --- a/gcc/config/sparc/lb1spl.asm +++ /dev/null @@ -1,246 +0,0 @@ -/* This is an assembly language implementation of mulsi3, divsi3, and modsi3 - for the sparclite processor. - - These routines are all from the SPARClite User's Guide, slightly edited - to match the desired calling convention, and also to optimize them. */ - -#ifdef L_udivsi3 -.text - .align 4 - .global .udiv - .proc 04 -.udiv: - wr %g0,%g0,%y ! Not a delayed write for sparclite - tst %g0 - divscc %o0,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - retl - divscc %g1,%o1,%o0 -#endif - -#ifdef L_umodsi3 -.text - .align 4 - .global .urem - .proc 04 -.urem: - wr %g0,%g0,%y ! Not a delayed write for sparclite - tst %g0 - divscc %o0,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - divscc %g1,%o1,%g1 - bl 1f - rd %y,%o0 - retl - nop -1: retl - add %o0,%o1,%o0 -#endif - -#ifdef L_divsi3 -.text - .align 4 - .global .div - .proc 04 -! ??? This routine could be made faster if was optimized, and if it was -! rewritten to only calculate the quotient. -.div: - wr %g0,%g0,%y ! Not a delayed write for sparclite - mov %o1,%o4 - tst %o1 - bl,a 1f - sub %g0,%o4,%o4 -1: tst %o0 - bl,a 2f - mov -1,%y -2: divscc %o0,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - be 6f - mov %y,%o3 - bg 4f - addcc %o3,%o4,%g0 - be,a 6f - mov %g0,%o3 - tst %o0 - bl 5f - tst %g1 - ba 5f - add %o3,%o4,%o3 -4: subcc %o3,%o4,%g0 - be,a 6f - mov %g0,%o3 - tst %o0 - bge 5f - tst %g1 - sub %o3,%o4,%o3 -5: bl,a 6f - add %g1,1,%g1 -6: tst %o1 - bl,a 7f - sub %g0,%g1,%g1 -7: retl - mov %g1,%o0 ! Quotient is in %g1. -#endif - -#ifdef L_modsi3 -.text - .align 4 - .global .rem - .proc 04 -! ??? This routine could be made faster if was optimized, and if it was -! rewritten to only calculate the remainder. -.rem: - wr %g0,%g0,%y ! Not a delayed write for sparclite - mov %o1,%o4 - tst %o1 - bl,a 1f - sub %g0,%o4,%o4 -1: tst %o0 - bl,a 2f - mov -1,%y -2: divscc %o0,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - divscc %g1,%o4,%g1 - be 6f - mov %y,%o3 - bg 4f - addcc %o3,%o4,%g0 - be,a 6f - mov %g0,%o3 - tst %o0 - bl 5f - tst %g1 - ba 5f - add %o3,%o4,%o3 -4: subcc %o3,%o4,%g0 - be,a 6f - mov %g0,%o3 - tst %o0 - bge 5f - tst %g1 - sub %o3,%o4,%o3 -5: bl,a 6f - add %g1,1,%g1 -6: tst %o1 - bl,a 7f - sub %g0,%g1,%g1 -7: retl - mov %o3,%o0 ! Remainder is in %o3. -#endif diff --git a/gcc/config/sparc/t-elf b/gcc/config/sparc/t-elf index 7073bcb7721..be926585481 100644 --- a/gcc/config/sparc/t-elf +++ b/gcc/config/sparc/t-elf @@ -17,9 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = sparc/lb1spc.asm -LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 - MULTILIB_OPTIONS = msoft-float mcpu=v8 mflat MULTILIB_DIRNAMES = soft v8 flat MULTILIB_MATCHES = msoft-float=mno-fpu diff --git a/gcc/config/sparc/t-leon b/gcc/config/sparc/t-leon index 4f9d0a9e797..8e5e30f7ff7 100644 --- a/gcc/config/sparc/t-leon +++ b/gcc/config/sparc/t-leon @@ -16,9 +16,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = sparc/lb1spc.asm -LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 - # Multilibs for LEON # LEON is a SPARC-V8, but the AT697 implementation has a bug in the # V8-specific instructions. diff --git a/gcc/config/spu/t-spu-elf b/gcc/config/spu/t-spu-elf index b1660353ee6..45802499525 100644 --- a/gcc/config/spu/t-spu-elf +++ b/gcc/config/spu/t-spu-elf @@ -15,10 +15,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -# Suppress building libgcc1.a -LIBGCC1 = -CROSS_LIBGCC1 = - TARGET_LIBGCC2_CFLAGS = -fPIC -mwarn-reloc -D__IN_LIBGCC2 # We exclude those because the libgcc2.c default versions do not support diff --git a/gcc/config/v850/t-v850 b/gcc/config/v850/t-v850 index fcd3b841e30..7885229e631 100644 --- a/gcc/config/v850/t-v850 +++ b/gcc/config/v850/t-v850 @@ -17,67 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = v850/lib1funcs.asm -LIB1ASMFUNCS = _mulsi3 \ - _divsi3 \ - _udivsi3 \ - _modsi3 \ - _umodsi3 \ - _save_2 \ - _save_20 \ - _save_21 \ - _save_22 \ - _save_23 \ - _save_24 \ - _save_25 \ - _save_26 \ - _save_27 \ - _save_28 \ - _save_29 \ - _save_2c \ - _save_20c \ - _save_21c \ - _save_22c \ - _save_23c \ - _save_24c \ - _save_25c \ - _save_26c \ - _save_27c \ - _save_28c \ - _save_29c \ - _save_31c \ - _save_interrupt \ - _save_all_interrupt \ - _callt_save_20 \ - _callt_save_21 \ - _callt_save_22 \ - _callt_save_23 \ - _callt_save_24 \ - _callt_save_25 \ - _callt_save_26 \ - _callt_save_27 \ - _callt_save_28 \ - _callt_save_29 \ - _callt_save_20c \ - _callt_save_21c \ - _callt_save_22c \ - _callt_save_23c \ - _callt_save_24c \ - _callt_save_25c \ - _callt_save_26c \ - _callt_save_27c \ - _callt_save_28c \ - _callt_save_29c \ - _callt_save_31c \ - _callt_save_interrupt \ - _callt_save_all_interrupt \ - _callt_save_r2_r29 \ - _callt_save_r2_r31 \ - _negdi2 \ - _cmpdi2 \ - _ucmpdi2 \ - _muldi3 - # Create target-specific versions of the libraries MULTILIB_OPTIONS = mv850/mv850e/mv850e2/mv850e2v3 MULTILIB_DIRNAMES = v850 v850e v850e2 v850e2v3 diff --git a/gcc/config/xtensa/t-xtensa b/gcc/config/xtensa/t-xtensa index c0a7cb5202f..31ac2ad2452 100644 --- a/gcc/config/xtensa/t-xtensa +++ b/gcc/config/xtensa/t-xtensa @@ -17,18 +17,6 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. -LIB1ASMSRC = xtensa/lib1funcs.asm -LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ - _umulsidi3 _clz _clzsi2 _ctzsi2 _ffssi2 \ - _ashldi3 _ashrdi3 _lshrdi3 \ - _negsf2 _addsubsf3 _mulsf3 _divsf3 _cmpsf2 _fixsfsi _fixsfdi \ - _fixunssfsi _fixunssfdi _floatsisf _floatunsisf \ - _floatdisf _floatundisf \ - _negdf2 _addsubdf3 _muldf3 _divdf3 _cmpdf2 _fixdfsi _fixdfdi \ - _fixunsdfsi _fixunsdfdi _floatsidf _floatunsidf \ - _floatdidf _floatundidf \ - _truncdfsf2 _extendsfdf2 - LIB2FUNCS_EXTRA = $(srcdir)/config/xtensa/lib2funcs.S $(out_object_file): gt-xtensa.h diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index b5d9c243a98..6b2514aba9a 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,5 +1,125 @@ 2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + * Makefile.in ($(lib1asmfuncs-o), $(lib1asmfuncs-s-o)): Use + $(srcdir) to refer to $(LIB1ASMSRC). + Use $<. + * config/arm/bpabi-v6m.S, config/arm/bpabi.S, + config/arm/ieee754-df.S, config/arm/ieee754-sf.S, + config/arm/lib1funcs.S: New files. + * config/arm/libunwind.S [!__symbian__]: Use lib1funcs.S. + * config/arm/t-arm: New file. + * config/arm/t-bpabi (LIB1ASMFUNCS): Set. + * config/arm/t-elf, config/arm/t-linux, config/arm/t-linux-eabi, + config/arm/t-strongarm-elf: New files. + * config/arm/t-symbian (LIB1ASMFUNCS): Set. + * config/arm/t-vxworks, config/arm/t-wince-pe: New files. + * config/avr/lib1funcs.S: New file. + * config/avr/t-avr (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/bfin/lib1funcs.S, config/bfin/t-bfin: New files. + * config/c6x/lib1funcs.S: New file. + * config/c6x/t-elf (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/fr30/lib1funcs.S, config/fr30/t-fr30: New files. + * config/frv/lib1funcs.S: New file. + * config/frv/t-frv (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/h8300/lib1funcs.S, config/h8300/t-h8300: New files. + * config/i386/cygwin.S, config/i386/t-chkstk: New files. + * config/ia64/__divxf3.asm: Rename to ... + * config/ia64/__divxf3.S: ... this. + Adapt lib1funcs.asm filename. + * config/ia64/_fixtfdi.asm: Rename to ... + * config/ia64/_fixtfdi.S: ... this. + Adapt lib1funcs.asm filename. + * config/ia64/_fixunstfdi.asm: Rename to ... + * config/ia64/_fixunstfdi.S: ... this. + Adapt lib1funcs.asm filename. + * config/ia64/_floatditf.asm: Rename to ... + * config/ia64/_floatditf.S: ... this. + Adapt lib1funcs.asm filename. + * config/ia64/lib1funcs.S: New file. + * config/ia64/t-hpux (LIB1ASMFUNCS): Set. + * config/ia64/t-ia64 (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/ia64/t-softfp-compat (libgcc1-tf-compats): Adapt suffix. + * config/m32c/lib1funcs.S, config/m32c/t-m32c: New files. + * config/m68k/lb1sf68.S, config/m68k/t-floatlib: New files. + * config/mcore/lib1funcs.S, config/mcore/t-mcore: New files. + * config/mep/lib1funcs.S: New file. + * config/mep/t-mep (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/mips/mips16.S: New file. + * config/mips/t-mips16 (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/pa/milli64.S: New file. + * config/pa/t-linux, config/pa/t-linux64: New files. + * config/picochip/lib1funcs.S: New file. + * config/picochip/t-picochip (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config/sh/lib1funcs.S, config/sh/lib1funcs.h: New files. + * config/sh/t-linux (LIB1ASMFUNCS_CACHE): Set. + * config/sh/t-netbsd: New file. + * config/sh/t-sh (LIB1ASMSRC, LIB1ASMFUNCS, LIB1ASMFUNCS_CACHE): Set. + Use $(srcdir) to refer to lib1funcs.S, adapt filename. + * config/sh/t-sh64: New file. + * config/sparc/lb1spc.S: New file. + * config/sparc/t-softmul (LIB1ASMSRC): Adapt sparc/lb1spc.asm + filename. + * config/v850/lib1funcs.S, config/v850/t-v850: New files. + * config/vax/lib1funcs.S, config/vax/t-linux: New files. + * config/xtensa/ieee754-df.S, config/xtensa/ieee754-sf.S, + config/xtensa/lib1funcs.S: New files. + * config/xtensa/t-xtensa (LIB1ASMSRC, LIB1ASMFUNCS): Set. + * config.host (arm-wrs-vxworks): Add arm/t-arm, arm/t-vxworks to + tmake_file. + (arm*-*-freebsd*): Add arm/t-arm, arm/t-strongarm-elf to tmake_file. + (arm*-*-netbsdelf*): Add arm/t-arm to tmake_file. + (arm*-*-linux*): Likewise. + Add arm/t-elf, arm/t-bpabi, arm/t-linux-eabi to tmake_file for + arm*-*-linux-*eabi, add arm/t-linux otherwise. + (arm*-*-uclinux*): Add arm/t-arm, arm/t-elf to tmake_file. + (arm*-*-ecos-elf): Likewise. + (arm*-*-eabi*, arm*-*-symbianelf*): Likewise. + (arm*-*-rtems*): Likewise. + (arm*-*-elf): Likewise. + (arm*-wince-pe*): Add arm/t-arm, arm/t-wince-pe to tmake_file. + (avr-*-rtems*): Add to tmake_file, add avr/t-avr. + (bfin*-elf*): Add bfin/t-bfin to tmake_file. + (bfin*-uclinux*): Likewise. + (bfin*-linux-uclibc*): Likewise. + (bfin*-rtems*): Likewise. + (bfin*-*): Likewise. + (fido-*-elf): Merge into m68k-*-elf*. + (fr30-*-elf)): Add fr30/t-fr30 to tmake_file. + (frv-*-*linux*): Add frv/t-frv to tmake_file. + (h8300-*-rtems*): Add h8300/t-h8300 to tmake_file. + (h8300-*-elf*): Likewise. + (hppa*64*-*-linux*): Add pa/t-linux, pa/t-linux64 to tmake_file. + (hppa*-*-linux*): Add pa/t-linux to tmake_file. + (i[34567]86-*-cygwin*): Add i386/t-chkstk to tmake_file. + (i[34567]86-*-mingw*): Likewise. + (x86_64-*-mingw*): Likewise. + (i[34567]86-*-interix3*): Likewise. + (ia64*-*-hpux*): Add ia64/t-ia64, ia64/t-hpux to tmake_file. + (ia64-hp-*vms*): Add ia64/t-ia64 to tmake_file. + (m68k-*-elf*): Also handle fido-*-elf. + Add m68k/t-floatlib to tmake_file. + (m68k-*-uclinux*): Add m68k/t-floatlib to tmake_file. + (m68k-*-linux*): Likewise. + (m68k-*-rtems*): Likewise. + (mcore-*-elf): Add mcore/t-mcore to tmake_file. + (sh-*-elf*, sh[12346l]*-*-elf*): Add sh/t-sh64 to tmake_file for + sh64*-*-*. + (sh-*-linux*, sh[2346lbe]*-*-linux*): Add sh/t-sh to tmake_file. + Add sh/t-sh64 to tmake_file for sh64*-*-linux*. + (sh-*-netbsdelf*, shl*-*-netbsdelf*, sh5-*-netbsd*) + (sh5l*-*-netbsd*, sh64-*-netbsd*, sh64l*-*-netbsd*): Add sh/t-sh, + sh/t-netbsd to tmake_file. + Add sh/t-sh64 to tmake_file for sh5*-*-netbsd*, sh64*-netbsd*. + (sh-*-rtems*): Add sh/t-sh to tmake_file. + (sh-wrs-vxworks): Likewise. + (sparc-*-linux*): Add sparc/t-softmul to tmake_file except for + *-leon[3-9]*. + (v850*-*-*): Add v850/t-v850 to tmake_file. + (vax-*-linux*): Add vax/t-linux to tmake_file. + (m32c-*-elf*, m32c-*-rtems*): Add m32c/t-m32c to tmake_file. + +2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + * crtstuff.c: New file. * Makefile.in (CRTSTUFF_CFLAGS): Define. (CRTSTUFF_T_CFLAGS): Define. diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in index 467901b057a..6bbb369f8e8 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -394,25 +394,22 @@ LIB2_DIVMOD_FUNCS := $(filter-out $(LIB2FUNCS_EXCLUDE) $(LIB1ASMFUNCS), \ ifeq ($(enable_shared),yes) lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS)) -$(lib1asmfuncs-o): %$(objext): $(gcc_srcdir)/config/$(LIB1ASMSRC) %.vis - $(gcc_compile) -DL$* -xassembler-with-cpp \ - -c $(gcc_srcdir)/config/$(LIB1ASMSRC) -include $*.vis +$(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC) %.vis + $(gcc_compile) -DL$* -xassembler-with-cpp -c $< -include $*.vis $(patsubst %,%.vis,$(LIB1ASMFUNCS)): %.vis: %_s$(objext) $(gen-hide-list) libgcc-objects += $(lib1asmfuncs-o) lib1asmfuncs-s-o = $(patsubst %,%_s$(objext),$(LIB1ASMFUNCS)) -$(lib1asmfuncs-s-o): %_s$(objext): $(gcc_srcdir)/config/$(LIB1ASMSRC) - $(gcc_s_compile) -DL$* -xassembler-with-cpp \ - -c $(gcc_srcdir)/config/$(LIB1ASMSRC) +$(lib1asmfuncs-s-o): %_s$(objext): $(srcdir)/config/$(LIB1ASMSRC) + $(gcc_s_compile) -DL$* -xassembler-with-cpp -c $< libgcc-s-objects += $(lib1asmfuncs-s-o) else lib1asmfuncs-o = $(patsubst %,%$(objext),$(LIB1ASMFUNCS)) -$(lib1asmfuncs-o): %$(objext): $(gcc_srcdir)/config/$(LIB1ASMSRC) - $(gcc_compile) -DL$* -xassembler-with-cpp \ - -c $(gcc_srcdir)/config/$(LIB1ASMSRC) +$(lib1asmfuncs-o): %$(objext): $(srcdir)/config/$(LIB1ASMSRC) + $(gcc_compile) -DL$* -xassembler-with-cpp -c $< libgcc-objects += $(lib1asmfuncs-o) endif diff --git a/libgcc/config.host b/libgcc/config.host index 01e2f21a797..0a05ea184b0 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -306,22 +306,25 @@ alpha*-dec-*vms*) md_unwind_header=alpha/vms-unwind.h ;; arm-wrs-vxworks) - tmake_file="$tmake_file t-fdpbit" + tmake_file="$tmake_file arm/t-arm arm/t-vxworks t-fdpbit" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-freebsd*) - tmake_file="$tmake_file t-fdpbit" + tmake_file="$tmake_file arm/t-arm arm/t-strongarm-elf t-fdpbit" ;; arm*-*-netbsdelf*) - tmake_file="$tmake_file t-slibgcc-gld-nover" + tmake_file="$tmake_file arm/t-arm t-slibgcc-gld-nover" ;; arm*-*-linux*) # ARM GNU/Linux with ELF - tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" + tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix" case ${host} in arm*-*-linux-*eabi) - tmake_file="${tmake_file} arm/t-bpabi t-slibgcc-libgcc" + tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc" unwind_header=config/arm/unwind-arm.h ;; + *) + tmake_file="$tmake_file arm/t-linux" + ;; esac tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" ;; @@ -333,15 +336,15 @@ arm*-*-uclinux*) # ARM ucLinux unwind_header=config/arm/unwind-arm.h ;; esac - tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" + tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-ecos-elf) - tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" + tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-eabi* | arm*-*-symbianelf* ) - tmake_file="${tmake_file} t-fixedpoint-gnu-prefix" + tmake_file="${tmake_file} arm/t-arm arm/t-elf t-fixedpoint-gnu-prefix" case ${host} in arm*-*-eabi*) tmake_file="${tmake_file} arm/t-bpabi" @@ -356,17 +359,18 @@ arm*-*-eabi* | arm*-*-symbianelf* ) unwind_header=config/arm/unwind-arm.h ;; arm*-*-rtems*) - tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" + tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-*-elf) - tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" + tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp" extra_parts="$extra_parts crti.o crtn.o" ;; arm*-wince-pe*) + tmake_file="$tmake_file arm/t-arm arm/t-wince-pe" ;; avr-*-rtems*) - tmake_file=t-fpbit + tmake_file="$tmake_file avr/t-avr t-fpbit" # Don't use default. extra_parts= ;; @@ -375,27 +379,27 @@ avr-*-*) tmake_file="${cpu_type}/t-avr t-fpbit" ;; bfin*-elf*) - tmake_file="bfin/t-crtlibid bfin/t-crtstuff t-fdpbit" + tmake_file="bfin/t-bfin bfin/t-crtlibid bfin/t-crtstuff t-fdpbit" extra_parts="$extra_parts crtbeginS.o crtendS.o crti.o crtn.o crtlibid.o" ;; bfin*-uclinux*) - tmake_file="bfin/t-crtlibid bfin/t-crtstuff t-fdpbit" + tmake_file="bfin/t-bfin bfin/t-crtlibid bfin/t-crtstuff t-fdpbit" extra_parts="$extra_parts crtbeginS.o crtendS.o crtlibid.o" md_unwind_header=bfin/linux-unwind.h ;; bfin*-linux-uclibc*) - tmake_file="$tmake_file bfin/t-crtstuff t-fdpbit bfin/t-linux" + tmake_file="$tmake_file bfin/t-bfin bfin/t-crtstuff t-fdpbit bfin/t-linux" # No need to build crtbeginT.o on uClibc systems. Should probably # be moved to the OS specific section above. extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" md_unwind_header=bfin/linux-unwind.h ;; bfin*-rtems*) - tmake_file="$tmake_file t-fdpbit" + tmake_file="$tmake_file bfin/t-bfin t-fdpbit" extra_parts="$extra_parts crti.o crtn.o" ;; bfin*-*) - tmake_file="$tmake_file t-fdpbit" + tmake_file="$tmake_file bfin/t-bfin t-fdpbit" extra_parts="crtbegin.o crtend.o crti.o crtn.o" ;; crisv32-*-elf) @@ -415,10 +419,8 @@ cris-*-none) cris-*-linux* | crisv32-*-linux*) tmake_file="$tmake_file t-fdpbit cris/t-linux" ;; -fido-*-elf) - ;; fr30-*-elf) - tmake_file="$tmake_file t-fdpbit" + tmake_file="$tmake_file fr30/t-fr30 t-fdpbit" extra_parts="$extra_parts crti.o crtn.o" ;; frv-*-elf) @@ -427,20 +429,21 @@ frv-*-elf) extra_parts="frvbegin.o frvend.o" ;; frv-*-*linux*) - tmake_file="$tmake_file t-fdpbit frv/t-linux" + tmake_file="$tmake_file frv/t-frv frv/t-linux t-fdpbit" ;; h8300-*-rtems*) - tmake_file="$tmake_file t-fpbit" + tmake_file="$tmake_file h8300/t-h8300 t-fpbit" extra_parts="$extra_parts crti.o crtn.o" ;; h8300-*-elf*) - tmake_file="$tmake_file t-fpbit" + tmake_file="$tmake_file h8300/t-h8300 t-fpbit" extra_parts="$extra_parts crti.o crtn.o" ;; hppa*64*-*-linux*) + tmake_file="$tmake_file pa/t-linux pa/t-linux64" ;; hppa*-*-linux*) - tmake_file="$tmake_file t-slibgcc-libgcc" + tmake_file="$tmake_file pa/t-linux t-slibgcc-libgcc" # Set the libgcc version number if test x$enable_sjlj_exceptions = xyes; then tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver" @@ -565,7 +568,7 @@ i[34567]86-*-cygwin*) else tmake_dlldir_file="i386/t-dlldir-x" fi - tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-cygwin i386/t-crtfm t-dfprules" + tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-cygwin i386/t-crtfm i386/t-chkstk t-dfprules" case ${target_thread_file} in posix) tmake_file="i386/t-mingw-pthread $tmake_file" @@ -586,7 +589,7 @@ i[34567]86-*-mingw*) else tmake_dlldir_file="i386/t-dlldir-x" fi - tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-mingw32 i386/t-crtfm t-dfprules" + tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-cygming i386/t-mingw32 i386/t-crtfm i386/t-chkstk t-dfprules" md_unwind_header=i386/w32-unwind.h ;; x86_64-*-mingw*) @@ -602,10 +605,11 @@ x86_64-*-mingw*) else tmake_dlldir_file="i386/t-dlldir-x" fi - tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-mingw32 t-dfprules i386/t-crtfm" + tmake_file="${tmake_file} ${tmake_eh_file} ${tmake_dlldir_file} i386/t-slibgcc-cygming i386/t-mingw32 t-dfprules i386/t-crtfm i386/t-chkstk" extra_parts="$extra_parts crtfastmath.o" ;; i[34567]86-*-interix3*) + tmake_file="$tmake_file i386/t-chkstk" ;; ia64*-*-elf*) extra_parts="$extra_parts crtbeginS.o crtendS.o crtfastmath.o" @@ -625,10 +629,10 @@ ia64*-*-linux*) md_unwind_header=ia64/linux-unwind.h ;; ia64*-*-hpux*) - tmake_file="ia64/t-hpux t-slibgcc ia64/t-slibgcc-hpux t-slibgcc-hpux" + tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc ia64/t-slibgcc-hpux t-slibgcc-hpux" ;; ia64-hp-*vms*) - tmake_file="$tmake_file ia64/t-eh-ia64 ia64/t-vms t-slibgcc-vms" + tmake_file="$tmake_file ia64/t-ia64 ia64/t-eh-ia64 ia64/t-vms t-slibgcc-vms" extra_parts="$extra_parts crtinitS.o" md_unwind_header=ia64/vms-unwind.h ;; @@ -660,18 +664,21 @@ m32r-*-linux*) m32rle-*-linux*) tmake_file="$tmake_file m32r/t-linux t-fdpbit" ;; -m68k-*-elf*) +m68k-*-elf* | fido-*-elf) + tmake_file="$tmake_file m68k/t-floatlib" ;; m68k*-*-netbsdelf*) ;; m68k*-*-openbsd*) ;; m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc + tmake_file="$tmake_file m68k/t-floatlib" md_unwind_header=m68k/linux-unwind.h ;; m68k-*-linux*) # Motorola m68k's running GNU/Linux # with ELF format using glibc 2 # aka the GNU/Linux C library 6. + tmake_file="$tmake_file m68k/t-floatlib" # If not configured with --enable-sjlj-exceptions, bump the # libgcc version number. if test x$enable_sjlj_exceptions != xyes; then @@ -680,10 +687,11 @@ m68k-*-linux*) # Motorola m68k's running GNU/Linux md_unwind_header=m68k/linux-unwind.h ;; m68k-*-rtems*) + tmake_file="$tmake_file m68k/t-floatlib" extra_parts="$extra_parts crti.o crtn.o" ;; mcore-*-elf) - tmake_file=t-fdpbit + tmake_file="mcore/t-mcore t-fdpbit" extra_parts="$extra_parts crti.o crtn.o" ;; microblaze*-linux*) @@ -905,6 +913,10 @@ sh-*-elf* | sh[12346l]*-*-elf*) libic_invalidate_array_4-200.a \ libic_invalidate_array_4a.a \ libgcc-Os-4-200.a libgcc-4-300.a" + case ${host} in sh64*-*-*) + tmake_file="$tmake_file sh/t-sh64" + ;; + esac case ${host} in sh*-superh-elf) tmake_file="$tmake_file sh/t-superh" @@ -913,23 +925,33 @@ sh-*-elf* | sh[12346l]*-*-elf*) esac ;; sh-*-linux* | sh[2346lbe]*-*-linux*) - tmake_file="${tmake_file} t-slibgcc-libgcc sh/t-linux t-fdpbit" + tmake_file="${tmake_file} sh/t-sh t-slibgcc-libgcc sh/t-linux t-fdpbit" + case ${host} in sh64*-*-linux*) + tmake_file="$tmake_file sh/t-sh64" + ;; + esac md_unwind_header=sh/linux-unwind.h ;; sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ sh64-*-netbsd* | sh64l*-*-netbsd*) + tmake_file="$tmake_file sh/t-sh sh/t-netbsd" + case ${host} in + sh5*-*-netbsd* | sh64*-netbsd*) + tmake_file="$tmake_file sh/t-sh64" + ;; + esac # NetBSD's C library includes a fast software FP library that # has support for setting/setting the rounding mode, exception # mask, etc. Therefore, we don't want to include software FP # in libgcc. ;; sh-*-rtems*) - tmake_file="$tmake_file t-crtstuff-pic t-fdpbit" + tmake_file="$tmake_file sh/t-sh t-crtstuff-pic t-fdpbit" extra_parts="$extra_parts crt1.o crti.o crtn.o crtbeginS.o crtendS.o \ $sh_ic_extra_parts $sh_opt_extra_parts" ;; sh-wrs-vxworks) - tmake_file="$tmake_file t-crtstuff-pic t-fdpbit" + tmake_file="$tmake_file sh/t-sh t-crtstuff-pic t-fdpbit" ;; sparc-*-netbsdelf*) ;; @@ -956,6 +978,13 @@ sparc-*-linux*) # SPARC's running GNU/Linux, libc6 tmake_file="${tmake_file} sparc/t-linux" ;; esac + case ${host} in + *-leon[3-9]*) + ;; + *) + tmake_file="$tmake_file sparc/t-softmul" + ;; + esac extra_parts="$extra_parts crtfastmath.o" md_unwind_header=sparc/linux-unwind.h ;; @@ -1007,9 +1036,10 @@ tic6x-*-elf) unwind_header=config/c6x/unwind-c6x.h ;; v850*-*-*) - tmake_file=t-fdpbit + tmake_file="v850/t-v850 t-fdpbit" ;; vax-*-linux*) + tmake_file="$tmake_file vax/t-linux" ;; vax-*-netbsdelf*) ;; @@ -1032,6 +1062,7 @@ am33_2.0-*-linux*) tmake_file="$tmake_file t-fdpbit" ;; m32c-*-elf*|m32c-*-rtems*) + tmake_file="$tmake_file m32c/t-m32c" ;; mep*-*-*) tmake_file="mep/t-mep t-fdpbit" diff --git a/gcc/config/arm/bpabi-v6m.S b/libgcc/config/arm/bpabi-v6m.S index 4ecea6da5a6..4ecea6da5a6 100644 --- a/gcc/config/arm/bpabi-v6m.S +++ b/libgcc/config/arm/bpabi-v6m.S diff --git a/gcc/config/arm/bpabi.S b/libgcc/config/arm/bpabi.S index 2ff338927fa..2ff338927fa 100644 --- a/gcc/config/arm/bpabi.S +++ b/libgcc/config/arm/bpabi.S diff --git a/gcc/config/arm/ieee754-df.S b/libgcc/config/arm/ieee754-df.S index eb0c38632d0..eb0c38632d0 100644 --- a/gcc/config/arm/ieee754-df.S +++ b/libgcc/config/arm/ieee754-df.S diff --git a/gcc/config/arm/ieee754-sf.S b/libgcc/config/arm/ieee754-sf.S index c93f66d8ff8..c93f66d8ff8 100644 --- a/gcc/config/arm/ieee754-sf.S +++ b/libgcc/config/arm/ieee754-sf.S diff --git a/gcc/config/arm/lib1funcs.asm b/libgcc/config/arm/lib1funcs.S index 2e76c01df4b..2e76c01df4b 100644 --- a/gcc/config/arm/lib1funcs.asm +++ b/libgcc/config/arm/lib1funcs.S diff --git a/libgcc/config/arm/libunwind.S b/libgcc/config/arm/libunwind.S index a3a19daab4b..8166cd86e47 100644 --- a/libgcc/config/arm/libunwind.S +++ b/libgcc/config/arm/libunwind.S @@ -40,7 +40,7 @@ #ifndef __symbian__ -#include "config/arm/lib1funcs.asm" +#include "lib1funcs.S" .macro UNPREFIX name .global SYM (\name) diff --git a/libgcc/config/arm/t-arm b/libgcc/config/arm/t-arm new file mode 100644 index 00000000000..4e17e99b4a5 --- /dev/null +++ b/libgcc/config/arm/t-arm @@ -0,0 +1,3 @@ +LIB1ASMSRC = arm/lib1funcs.S +LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \ + _thumb1_case_uhi _thumb1_case_si diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi index ebb2f9fd85d..8787285ab1f 100644 --- a/libgcc/config/arm/t-bpabi +++ b/libgcc/config/arm/t-bpabi @@ -1,3 +1,6 @@ +# Add the bpabi.S functions. +LIB1ASMFUNCS += _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod + LIB2ADDEH = $(srcdir)/config/arm/unwind-arm.c \ $(srcdir)/config/arm/libunwind.S \ $(srcdir)/config/arm/pr-support.c $(srcdir)/unwind-c.c diff --git a/libgcc/config/arm/t-elf b/libgcc/config/arm/t-elf new file mode 100644 index 00000000000..fab32e445be --- /dev/null +++ b/libgcc/config/arm/t-elf @@ -0,0 +1,13 @@ +# For most CPUs we have an assembly soft-float implementations. +# However this is not true for ARMv6M. Here we want to use the soft-fp C +# implementation. The soft-fp code is only build for ARMv6M. This pulls +# in the asm implementation for other CPUs. +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func \ + _call_via_rX _interwork_call_via_rX \ + _lshrdi3 _ashrdi3 _ashldi3 \ + _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ + _arm_fixdfsi _arm_fixunsdfsi \ + _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 \ + _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi \ + _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf \ + _clzsi2 _clzdi2 diff --git a/libgcc/config/arm/t-linux b/libgcc/config/arm/t-linux new file mode 100644 index 00000000000..a154f775a0f --- /dev/null +++ b/libgcc/config/arm/t-linux @@ -0,0 +1,3 @@ +LIB1ASMSRC = arm/lib1funcs.S +LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ + _arm_addsubdf3 _arm_addsubsf3 diff --git a/libgcc/config/arm/t-linux-eabi b/libgcc/config/arm/t-linux-eabi new file mode 100644 index 00000000000..dfc9197ea45 --- /dev/null +++ b/libgcc/config/arm/t-linux-eabi @@ -0,0 +1,2 @@ +# Use a version of div0 which raises SIGFPE, and a special __clear_cache. +LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx _clear_cache diff --git a/libgcc/config/arm/t-strongarm-elf b/libgcc/config/arm/t-strongarm-elf new file mode 100644 index 00000000000..cd9f9667ddf --- /dev/null +++ b/libgcc/config/arm/t-strongarm-elf @@ -0,0 +1 @@ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _clzsi2 _clzdi2 diff --git a/libgcc/config/arm/t-symbian b/libgcc/config/arm/t-symbian index 6788d5f40b3..1989696c8a3 100644 --- a/libgcc/config/arm/t-symbian +++ b/libgcc/config/arm/t-symbian @@ -1,2 +1,16 @@ +LIB1ASMFUNCS += _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 + +# These functions have __aeabi equivalents and will never be called by GCC. +# By putting them in LIB1ASMFUNCS, we avoid the standard libgcc2.c code being +# used -- and we make sure that definitions are not available in lib1funcs.S, +# either, so they end up undefined. +LIB1ASMFUNCS += \ + _ashldi3 _ashrdi3 _divdi3 _floatdidf _udivmoddi4 _umoddi3 \ + _udivdi3 _lshrdi3 _moddi3 _muldi3 _negdi2 _cmpdi2 \ + _fixdfdi _fixsfdi _fixunsdfdi _fixunssfdi _floatdisf \ + _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ + _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ + _fixsfsi _fixunssfsi + # Include the gcc personality routine LIB2ADDEH = $(srcdir)/unwind-c.c $(srcdir)/config/arm/pr-support.c diff --git a/libgcc/config/arm/t-vxworks b/libgcc/config/arm/t-vxworks new file mode 100644 index 00000000000..70ccdc1556a --- /dev/null +++ b/libgcc/config/arm/t-vxworks @@ -0,0 +1 @@ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 diff --git a/libgcc/config/arm/t-wince-pe b/libgcc/config/arm/t-wince-pe new file mode 100644 index 00000000000..33ea969ccf4 --- /dev/null +++ b/libgcc/config/arm/t-wince-pe @@ -0,0 +1 @@ +LIB1ASMFUNCS += _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX _clzsi2 _clzdi2 diff --git a/gcc/config/avr/libgcc.S b/libgcc/config/avr/lib1funcs.S index 8c369c96a77..8c369c96a77 100644 --- a/gcc/config/avr/libgcc.S +++ b/libgcc/config/avr/lib1funcs.S diff --git a/libgcc/config/avr/t-avr b/libgcc/config/avr/t-avr index 78829c76af4..f1c114a6dd6 100644 --- a/libgcc/config/avr/t-avr +++ b/libgcc/config/avr/t-avr @@ -1,3 +1,51 @@ +LIB1ASMSRC = avr/lib1funcs.S +LIB1ASMFUNCS = \ + _mulqi3 \ + _mulhi3 \ + _mulhisi3 \ + _umulhisi3 \ + _usmulhisi3 \ + _muluhisi3 \ + _mulshisi3 \ + _mulsi3 \ + _udivmodqi4 \ + _divmodqi4 \ + _udivmodhi4 \ + _divmodhi4 \ + _udivmodsi4 \ + _divmodsi4 \ + _prologue \ + _epilogue \ + _exit \ + _cleanup \ + _tablejump \ + _tablejump_elpm \ + _copy_data \ + _clear_bss \ + _ctors \ + _dtors \ + _ffssi2 \ + _ffshi2 \ + _loop_ffsqi2 \ + _ctzsi2 \ + _ctzhi2 \ + _clzdi2 \ + _clzsi2 \ + _clzhi2 \ + _paritydi2 \ + _paritysi2 \ + _parityhi2 \ + _popcounthi2 \ + _popcountsi2 \ + _popcountdi2 \ + _popcountqi2 \ + _bswapsi2 \ + _bswapdi2 \ + _ashldi3 \ + _ashrdi3 \ + _lshrdi3 \ + _fmul _fmuls _fmulsu + # Extra 16-bit integer functions. intfuncs16 = _absvXX2 _addvXX3 _subvXX3 _mulvXX3 _negvXX2 _clrsbXX2 diff --git a/gcc/config/bfin/lib1funcs.asm b/libgcc/config/bfin/lib1funcs.S index c7bf4f3f05c..c7bf4f3f05c 100644 --- a/gcc/config/bfin/lib1funcs.asm +++ b/libgcc/config/bfin/lib1funcs.S diff --git a/libgcc/config/bfin/t-bfin b/libgcc/config/bfin/t-bfin new file mode 100644 index 00000000000..bc2b088ffc1 --- /dev/null +++ b/libgcc/config/bfin/t-bfin @@ -0,0 +1,3 @@ +LIB1ASMSRC = bfin/lib1funcs.S +LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _muldi3 _umulsi3_highpart +LIB1ASMFUNCS += _smulsi3_highpart diff --git a/gcc/config/c6x/lib1funcs.asm b/libgcc/config/c6x/lib1funcs.S index 5bf34474bbd..5bf34474bbd 100644 --- a/gcc/config/c6x/lib1funcs.asm +++ b/libgcc/config/c6x/lib1funcs.S diff --git a/libgcc/config/c6x/t-elf b/libgcc/config/c6x/t-elf index 99d0cd2d5ca..e01c4109e52 100644 --- a/libgcc/config/c6x/t-elf +++ b/libgcc/config/c6x/t-elf @@ -1,6 +1,11 @@ # Cannot use default rules due to $(CRTSTUFF_T_CFLAGS). CUSTOM_CRTIN = yes +LIB1ASMSRC = c6x/lib1funcs.S +LIB1ASMFUNCS = _divsi3 _udivsi3 _umodsi3 _modsi3 _udivmodsi4 _divmodsi4 +LIB1ASMFUNCS += _strasgi _strasgi_64plus _clzsi2 _clzdi2 _clz +LIB1ASMFUNCS += _push_rts _pop_rts _call_stub + # Assemble startup files. crti.o: $(srcdir)/config/c6x/crti.S $(crt_compile) -c $(CRTSTUFF_T_CFLAGS) $< diff --git a/gcc/config/fr30/lib1funcs.asm b/libgcc/config/fr30/lib1funcs.S index 7c63453123a..7c63453123a 100644 --- a/gcc/config/fr30/lib1funcs.asm +++ b/libgcc/config/fr30/lib1funcs.S diff --git a/libgcc/config/fr30/t-fr30 b/libgcc/config/fr30/t-fr30 new file mode 100644 index 00000000000..ee5ed9a127e --- /dev/null +++ b/libgcc/config/fr30/t-fr30 @@ -0,0 +1,2 @@ +LIB1ASMSRC = fr30/lib1funcs.S +LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 diff --git a/gcc/config/frv/lib1funcs.asm b/libgcc/config/frv/lib1funcs.S index d1ffcab6133..d1ffcab6133 100644 --- a/gcc/config/frv/lib1funcs.asm +++ b/libgcc/config/frv/lib1funcs.S diff --git a/libgcc/config/frv/t-frv b/libgcc/config/frv/t-frv index b364a5a25b9..9773722d8e7 100644 --- a/libgcc/config/frv/t-frv +++ b/libgcc/config/frv/t-frv @@ -1,3 +1,6 @@ +LIB1ASMSRC = frv/lib1funcs.S +LIB1ASMFUNCS = _cmpll _cmpf _cmpd _addll _subll _andll _orll _xorll _notll _cmov + # Compile two additional files that are linked with every program # linked using GCC on systems using COFF or ELF, for the sake of C++ # constructors. diff --git a/gcc/config/h8300/lib1funcs.asm b/libgcc/config/h8300/lib1funcs.S index 1b75b73269d..1b75b73269d 100644 --- a/gcc/config/h8300/lib1funcs.asm +++ b/libgcc/config/h8300/lib1funcs.S diff --git a/libgcc/config/h8300/t-h8300 b/libgcc/config/h8300/t-h8300 new file mode 100644 index 00000000000..4602ff8b9ef --- /dev/null +++ b/libgcc/config/h8300/t-h8300 @@ -0,0 +1,3 @@ +LIB1ASMSRC = h8300/lib1funcs.S +LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \ + _fixunssfsi_asm diff --git a/gcc/config/i386/cygwin.asm b/libgcc/config/i386/cygwin.S index 8f9c486850e..8f9c486850e 100644 --- a/gcc/config/i386/cygwin.asm +++ b/libgcc/config/i386/cygwin.S diff --git a/libgcc/config/i386/t-chkstk b/libgcc/config/i386/t-chkstk new file mode 100644 index 00000000000..822981faab8 --- /dev/null +++ b/libgcc/config/i386/t-chkstk @@ -0,0 +1,2 @@ +LIB1ASMSRC = i386/cygwin.S +LIB1ASMFUNCS = _chkstk _chkstk_ms diff --git a/libgcc/config/ia64/__divxf3.asm b/libgcc/config/ia64/__divxf3.S index f741bdaf9bc..9cba8f59423 100644 --- a/libgcc/config/ia64/__divxf3.asm +++ b/libgcc/config/ia64/__divxf3.S @@ -3,7 +3,7 @@ #endif #define L__divxf3 -#include "config/ia64/lib1funcs.asm" +#include "config/ia64/lib1funcs.S" #ifdef SHARED #undef __divtf3 diff --git a/libgcc/config/ia64/_fixtfdi.asm b/libgcc/config/ia64/_fixtfdi.S index 4d13c808c51..863b70f7edc 100644 --- a/libgcc/config/ia64/_fixtfdi.asm +++ b/libgcc/config/ia64/_fixtfdi.S @@ -3,7 +3,7 @@ #endif #define L_fixtfdi -#include "config/ia64/lib1funcs.asm" +#include "config/ia64/lib1funcs.S" #ifdef SHARED #undef __fixtfti diff --git a/libgcc/config/ia64/_fixunstfdi.asm b/libgcc/config/ia64/_fixunstfdi.S index b722d9e90dc..aac6a284eaa 100644 --- a/libgcc/config/ia64/_fixunstfdi.asm +++ b/libgcc/config/ia64/_fixunstfdi.S @@ -3,7 +3,7 @@ #endif #define L_fixunstfdi -#include "config/ia64/lib1funcs.asm" +#include "config/ia64/lib1funcs.S" #ifdef SHARED #undef __fixunstfti diff --git a/libgcc/config/ia64/_floatditf.asm b/libgcc/config/ia64/_floatditf.S index 21d77028176..e37404d26d5 100644 --- a/libgcc/config/ia64/_floatditf.asm +++ b/libgcc/config/ia64/_floatditf.S @@ -3,7 +3,7 @@ #endif #define L_floatditf -#include "config/ia64/lib1funcs.asm" +#include "config/ia64/lib1funcs.S" #ifdef SHARED #undef __floattitf diff --git a/gcc/config/ia64/lib1funcs.asm b/libgcc/config/ia64/lib1funcs.S index b7eaa6eca3c..b7eaa6eca3c 100644 --- a/gcc/config/ia64/lib1funcs.asm +++ b/libgcc/config/ia64/lib1funcs.S diff --git a/libgcc/config/ia64/t-hpux b/libgcc/config/ia64/t-hpux index ef3387e7a61..1fee41385c0 100644 --- a/libgcc/config/ia64/t-hpux +++ b/libgcc/config/ia64/t-hpux @@ -1 +1,6 @@ +# On HP-UX we do not want _fixtfdi, _fixunstfdi, or _floatditf from +# LIB1ASMSRC. These functions map the 128 bit conversion function names +# to 80 bit conversions and were done for Linux backwards compatibility. +LIB1ASMFUNCS := $(filter-out _fixtfdi _fixunstfdi _floatditf,$(LIB1ASMFUNCS)) + LIB2ADDEH = $(srcdir)/unwind-c.c diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64 index 59cf3aa75f4..80445d8a2a8 100644 --- a/libgcc/config/ia64/t-ia64 +++ b/libgcc/config/ia64/t-ia64 @@ -1,3 +1,16 @@ +LIB1ASMSRC = ia64/lib1funcs.S + +# We use different names for the DImode div/mod files so that they won't +# conflict with libgcc2.c files. We used to use __ia64 as a prefix, now +# we use __ as the prefix. Note that L_divdi3 in libgcc2.c actually defines +# a TImode divide function, so there is no actual overlap here between +# libgcc2.c and lib1funcs.S. +LIB1ASMFUNCS = __divxf3 __divdf3 __divsf3 \ + __divdi3 __moddi3 __udivdi3 __umoddi3 \ + __divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \ + __nonlocal_goto __restore_stack_nonlocal __trampoline \ + _fixtfdi _fixunstfdi _floatditf + CUSTOM_CRTSTUFF = yes # Assemble startup files. diff --git a/libgcc/config/ia64/t-softfp-compat b/libgcc/config/ia64/t-softfp-compat index d3dad68c48f..00f45d51cd0 100644 --- a/libgcc/config/ia64/t-softfp-compat +++ b/libgcc/config/ia64/t-softfp-compat @@ -3,5 +3,5 @@ # Replace __dvxf3 _fixtfdi _fixunstfdi _floatditf libgcc1-tf-functions = __divxf3 _fixtfdi _fixunstfdi _floatditf LIB1ASMFUNCS := $(filter-out $(libgcc1-tf-functions), $(LIB1ASMFUNCS)) -libgcc1-tf-compats = $(addsuffix .asm, $(libgcc1-tf-functions)) +libgcc1-tf-compats = $(addsuffix .S, $(libgcc1-tf-functions)) LIB2ADD += $(addprefix $(srcdir)/config/ia64/, $(libgcc1-tf-compats)) diff --git a/gcc/config/m32c/m32c-lib1.S b/libgcc/config/m32c/lib1funcs.S index 9b657787187..9b657787187 100644 --- a/gcc/config/m32c/m32c-lib1.S +++ b/libgcc/config/m32c/lib1funcs.S diff --git a/libgcc/config/m32c/t-m32c b/libgcc/config/m32c/t-m32c new file mode 100644 index 00000000000..d21483750fd --- /dev/null +++ b/libgcc/config/m32c/t-m32c @@ -0,0 +1,9 @@ +LIB1ASMSRC = m32c/lib1funcs.S + +LIB1ASMFUNCS = \ + __m32c_memregs \ + __m32c_eh_return \ + __m32c_mulsi3 \ + __m32c_cmpsi2 \ + __m32c_ucmpsi2 \ + __m32c_jsri16 diff --git a/libgcc/config/m32r/initfini.c b/libgcc/config/m32r/initfini.c index 6e7d58614c7..56332459223 100644 --- a/libgcc/config/m32r/initfini.c +++ b/libgcc/config/m32r/initfini.c @@ -1,5 +1,5 @@ /* .init/.fini section handling + C++ global constructor/destructor handling. - This file is based on crtstuff.c, sol2-crti.asm, sol2-crtn.asm. + This file is based on crtstuff.c, sol2-crti.S, sol2-crtn.S. Copyright (C) 1996, 1997, 1998, 2006, 2009 Free Software Foundation, Inc. diff --git a/gcc/config/m68k/lb1sf68.asm b/libgcc/config/m68k/lb1sf68.S index 0339a092c4f..0339a092c4f 100644 --- a/gcc/config/m68k/lb1sf68.asm +++ b/libgcc/config/m68k/lb1sf68.S diff --git a/libgcc/config/m68k/t-floatlib b/libgcc/config/m68k/t-floatlib new file mode 100644 index 00000000000..4160eb9f537 --- /dev/null +++ b/libgcc/config/m68k/t-floatlib @@ -0,0 +1,5 @@ +LIB1ASMSRC = m68k/lb1sf68.S +LIB1ASMFUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \ + _double _float _floatex \ + _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \ + _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2 diff --git a/gcc/config/mcore/lib1.asm b/libgcc/config/mcore/lib1funcs.S index 701762f2a3c..701762f2a3c 100644 --- a/gcc/config/mcore/lib1.asm +++ b/libgcc/config/mcore/lib1funcs.S diff --git a/libgcc/config/mcore/t-mcore b/libgcc/config/mcore/t-mcore new file mode 100644 index 00000000000..19c4c15cd0b --- /dev/null +++ b/libgcc/config/mcore/t-mcore @@ -0,0 +1,2 @@ +LIB1ASMSRC = mcore/lib1funcs.S +LIB1ASMFUNCS = _divsi3 _udivsi3 _modsi3 _umodsi3 diff --git a/gcc/config/mep/mep-lib1.asm b/libgcc/config/mep/lib1funcs.S index 0a18913f927..0a18913f927 100644 --- a/gcc/config/mep/mep-lib1.asm +++ b/libgcc/config/mep/lib1funcs.S diff --git a/libgcc/config/mep/t-mep b/libgcc/config/mep/t-mep index 36e6f5dc771..d1fb094a41e 100644 --- a/libgcc/config/mep/t-mep +++ b/libgcc/config/mep/t-mep @@ -1,2 +1,11 @@ +# profiling support +LIB1ASMSRC = mep/lib1funcs.S + +LIB1ASMFUNCS = _mep_profile \ + _mep_bb_init_trace \ + _mep_bb_init \ + _mep_bb_trace \ + _mep_bb_increment + # Use -O0 instead of -O2 so we don't get complex relocations CRTSTUFF_CFLAGS += -O0 diff --git a/gcc/config/mips/mips16.S b/libgcc/config/mips/mips16.S index ec331b5f65e..ec331b5f65e 100644 --- a/gcc/config/mips/mips16.S +++ b/libgcc/config/mips/mips16.S diff --git a/libgcc/config/mips/t-mips16 b/libgcc/config/mips/t-mips16 index 46c7472f5f6..5553ed76e2d 100644 --- a/libgcc/config/mips/t-mips16 +++ b/libgcc/config/mips/t-mips16 @@ -1,3 +1,43 @@ +# Copyright (C) 2007, 2008, 2011 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. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +LIB1ASMSRC = mips/mips16.S +LIB1ASMFUNCS = _m16addsf3 _m16subsf3 _m16mulsf3 _m16divsf3 \ + _m16eqsf2 _m16nesf2 _m16gtsf2 _m16gesf2 _m16lesf2 _m16ltsf2 \ + _m16unordsf2 \ + _m16fltsisf _m16fix_truncsfsi _m16fltunsisf \ + _m16adddf3 _m16subdf3 _m16muldf3 _m16divdf3 \ + _m16extsfdf2 _m16trdfsf2 \ + _m16eqdf2 _m16nedf2 _m16gtdf2 _m16gedf2 _m16ledf2 _m16ltdf2 \ + _m16unorddf2 \ + _m16fltsidf _m16fix_truncdfsi _m16fltunsidf \ + _m16retsf _m16retdf \ + _m16retsc _m16retdc \ + _m16stub1 _m16stub2 _m16stub5 _m16stub6 _m16stub9 _m16stub10 \ + _m16stubsf0 _m16stubsf1 _m16stubsf2 _m16stubsf5 _m16stubsf6 \ + _m16stubsf9 _m16stubsf10 \ + _m16stubdf0 _m16stubdf1 _m16stubdf2 _m16stubdf5 _m16stubdf6 \ + _m16stubdf9 _m16stubdf10 \ + _m16stubsc0 _m16stubsc1 _m16stubsc2 _m16stubsc5 _m16stubsc6 \ + _m16stubsc9 _m16stubsc10 \ + _m16stubdc0 _m16stubdc1 _m16stubdc2 _m16stubdc5 _m16stubdc6 \ + _m16stubdc9 _m16stubdc10 + SYNC = yes SYNC_CFLAGS = -mno-mips16 diff --git a/gcc/config/pa/milli64.S b/libgcc/config/pa/milli64.S index 2e9c4f741b6..2e9c4f741b6 100644 --- a/gcc/config/pa/milli64.S +++ b/libgcc/config/pa/milli64.S diff --git a/libgcc/config/pa/t-linux b/libgcc/config/pa/t-linux new file mode 100644 index 00000000000..d396bf7705a --- /dev/null +++ b/libgcc/config/pa/t-linux @@ -0,0 +1,6 @@ +#Plug millicode routines into libgcc.a We want these on both native and +#cross compiles. We use the "64-bit" routines because the "32-bit" code +#is broken for certain corner cases. + +LIB1ASMSRC = pa/milli64.S +LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI _dyncall diff --git a/libgcc/config/pa/t-linux64 b/libgcc/config/pa/t-linux64 new file mode 100644 index 00000000000..6cb9806ff2e --- /dev/null +++ b/libgcc/config/pa/t-linux64 @@ -0,0 +1,4 @@ +# Plug millicode routines into libgcc.a We want these on both native and +# cross compiles. +# FIXME: Explain. +LIB1ASMFUNCS := $(filter-out _dyncall, $(LIB1ASMFUNCS)) diff --git a/libgcc/config/picochip/lib1funcs.S b/libgcc/config/picochip/lib1funcs.S new file mode 100644 index 00000000000..d344170d248 --- /dev/null +++ b/libgcc/config/picochip/lib1funcs.S @@ -0,0 +1,4 @@ +// picoChip ASM file +// Fake libgcc asm file. This contains nothing, but is used to prevent gcc +// getting upset about the lack of a lib1funcs.S file when LIB1ASMFUNCS is +// defined to switch off the compilation of parts of libgcc. diff --git a/libgcc/config/picochip/t-picochip b/libgcc/config/picochip/t-picochip index 5135d500cbb..a596ec98947 100644 --- a/libgcc/config/picochip/t-picochip +++ b/libgcc/config/picochip/t-picochip @@ -1,2 +1,9 @@ +# Prevent some of the more complicated libgcc functions from being +# compiled. This is because they are generally too big to fit into an +# AE anyway, so there is no point in having them. Also, some don't +# compile properly so we'll ignore them for the moment. +LIB1ASMSRC = picochip/lib1funcs.S +LIB1ASMFUNCS = _mulsc3 _divsc3 + # Turn off the building of exception handling libraries. LIB2ADDEH = diff --git a/gcc/config/sh/lib1funcs.asm b/libgcc/config/sh/lib1funcs.S index 2f0ca16cd91..2f0ca16cd91 100644 --- a/gcc/config/sh/lib1funcs.asm +++ b/libgcc/config/sh/lib1funcs.S diff --git a/gcc/config/sh/lib1funcs.h b/libgcc/config/sh/lib1funcs.h index af4b41cc314..af4b41cc314 100644 --- a/gcc/config/sh/lib1funcs.h +++ b/libgcc/config/sh/lib1funcs.h diff --git a/libgcc/config/sh/t-linux b/libgcc/config/sh/t-linux index af618e260c6..9b1feacd1f3 100644 --- a/libgcc/config/sh/t-linux +++ b/libgcc/config/sh/t-linux @@ -1,3 +1,5 @@ +LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array + HOST_LIBGCC2_CFLAGS = -fpic -mieee -DNO_FPSCR_VALUES # Override t-slibgcc-elf-ver to export some libgcc symbols with diff --git a/libgcc/config/sh/t-netbsd b/libgcc/config/sh/t-netbsd new file mode 100644 index 00000000000..663edbf4187 --- /dev/null +++ b/libgcc/config/sh/t-netbsd @@ -0,0 +1 @@ +LIB1ASMFUNCS_CACHE = _ic_invalidate diff --git a/libgcc/config/sh/t-sh b/libgcc/config/sh/t-sh index ab4d98089b1..2319adbef1d 100644 --- a/libgcc/config/sh/t-sh +++ b/libgcc/config/sh/t-sh @@ -17,26 +17,33 @@ # along with GCC; see the file COPYING3. If not see # <http://www.gnu.org/licenses/>. +LIB1ASMSRC = sh/lib1funcs.S +LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movmem \ + _movmem_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ + _div_table _udiv_qrnnd_16 \ + $(LIB1ASMFUNCS_CACHE) +LIB1ASMFUNCS_CACHE = _ic_invalidate _ic_invalidate_array + crt1.o: $(srcdir)/config/sh/crt1.S $(gcc_compile) -c $< -ic_invalidate_array_4-100.o: $(gcc_srcdir)/config/sh/lib1funcs.asm +ic_invalidate_array_4-100.o: $(srcdir)/config/sh/lib1funcs.S $(gcc_compile) -c -DL_ic_invalidate_array -DWAYS=1 -DWAY_SIZE=0x2000 $< libic_invalidate_array_4-100.a: ic_invalidate_array_4-100.o $(AR_CREATE_FOR_TARGET) $@ $< -ic_invalidate_array_4-200.o: $(gcc_srcdir)/config/sh/lib1funcs.asm +ic_invalidate_array_4-200.o: $(srcdir)/config/sh/lib1funcs.S $(gcc_compile) -c -DL_ic_invalidate_array -DWAYS=2 -DWAY_SIZE=0x2000 $< libic_invalidate_array_4-200.a: ic_invalidate_array_4-200.o $(AR_CREATE_FOR_TARGET) $@ $< -ic_invalidate_array_4a.o: $(gcc_srcdir)/config/sh/lib1funcs.asm +ic_invalidate_array_4a.o: $(srcdir)/config/sh/lib1funcs.S $(gcc_compile) -c -DL_ic_invalidate_array -D__FORCE_SH4A__ $< libic_invalidate_array_4a.a: ic_invalidate_array_4a.o $(AR_CREATE_FOR_TARGET) $@ $< sdivsi3_i4i-Os-4-200.o: $(srcdir)/config/sh/lib1funcs-Os-4-200.S - $(gcc_compile) -c -DL_sdivsi3_i4i $< + $(compile) -c -DL_sdivsi3_i4i $< udivsi3_i4i-Os-4-200.o: $(srcdir)/config/sh/lib1funcs-Os-4-200.S $(gcc_compile) -c -DL_udivsi3_i4i $< unwind-dw2-Os-4-200.o: $(gcc_srcdir)/unwind-dw2.c diff --git a/libgcc/config/sh/t-sh64 b/libgcc/config/sh/t-sh64 new file mode 100644 index 00000000000..fa9950e03b2 --- /dev/null +++ b/libgcc/config/sh/t-sh64 @@ -0,0 +1,6 @@ +LIB1ASMFUNCS = \ + _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ + _shcompact_call_trampoline _shcompact_return_trampoline \ + _shcompact_incoming_args _ic_invalidate _nested_trampoline \ + _push_pop_shmedia_regs \ + _udivdi3 _divdi3 _umoddi3 _moddi3 _div_table diff --git a/gcc/config/sparc/lb1spc.asm b/libgcc/config/sparc/lb1spc.S index b60bd5740e7..b60bd5740e7 100644 --- a/gcc/config/sparc/lb1spc.asm +++ b/libgcc/config/sparc/lb1spc.S diff --git a/libgcc/config/sparc/t-softmul b/libgcc/config/sparc/t-softmul index 49faae47c53..7142200600f 100644 --- a/libgcc/config/sparc/t-softmul +++ b/libgcc/config/sparc/t-softmul @@ -1,2 +1,2 @@ -LIB1ASMSRC = sparc/lb1spc.asm +LIB1ASMSRC = sparc/lb1spc.S LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 diff --git a/gcc/config/v850/lib1funcs.asm b/libgcc/config/v850/lib1funcs.S index 04e9b1e0ad4..04e9b1e0ad4 100644 --- a/gcc/config/v850/lib1funcs.asm +++ b/libgcc/config/v850/lib1funcs.S diff --git a/libgcc/config/v850/t-v850 b/libgcc/config/v850/t-v850 new file mode 100644 index 00000000000..b61703ace09 --- /dev/null +++ b/libgcc/config/v850/t-v850 @@ -0,0 +1,60 @@ +LIB1ASMSRC = v850/lib1funcs.S +LIB1ASMFUNCS = _mulsi3 \ + _divsi3 \ + _udivsi3 \ + _modsi3 \ + _umodsi3 \ + _save_2 \ + _save_20 \ + _save_21 \ + _save_22 \ + _save_23 \ + _save_24 \ + _save_25 \ + _save_26 \ + _save_27 \ + _save_28 \ + _save_29 \ + _save_2c \ + _save_20c \ + _save_21c \ + _save_22c \ + _save_23c \ + _save_24c \ + _save_25c \ + _save_26c \ + _save_27c \ + _save_28c \ + _save_29c \ + _save_31c \ + _save_interrupt \ + _save_all_interrupt \ + _callt_save_20 \ + _callt_save_21 \ + _callt_save_22 \ + _callt_save_23 \ + _callt_save_24 \ + _callt_save_25 \ + _callt_save_26 \ + _callt_save_27 \ + _callt_save_28 \ + _callt_save_29 \ + _callt_save_20c \ + _callt_save_21c \ + _callt_save_22c \ + _callt_save_23c \ + _callt_save_24c \ + _callt_save_25c \ + _callt_save_26c \ + _callt_save_27c \ + _callt_save_28c \ + _callt_save_29c \ + _callt_save_31c \ + _callt_save_interrupt \ + _callt_save_all_interrupt \ + _callt_save_r2_r29 \ + _callt_save_r2_r31 \ + _negdi2 \ + _cmpdi2 \ + _ucmpdi2 \ + _muldi3 diff --git a/gcc/config/vax/lib1funcs.asm b/libgcc/config/vax/lib1funcs.S index 1d57b56dad9..1d57b56dad9 100644 --- a/gcc/config/vax/lib1funcs.asm +++ b/libgcc/config/vax/lib1funcs.S diff --git a/gcc/config/vax/t-linux b/libgcc/config/vax/t-linux index 9af1edb0fab..17929c8717c 100644 --- a/gcc/config/vax/t-linux +++ b/libgcc/config/vax/t-linux @@ -1,2 +1,2 @@ -LIB1ASMSRC = vax/lib1funcs.asm +LIB1ASMSRC = vax/lib1funcs.S LIB1ASMFUNCS = _udivsi3 _umodsi3 diff --git a/gcc/config/xtensa/ieee754-df.S b/libgcc/config/xtensa/ieee754-df.S index 9b46889bdc2..9b46889bdc2 100644 --- a/gcc/config/xtensa/ieee754-df.S +++ b/libgcc/config/xtensa/ieee754-df.S diff --git a/gcc/config/xtensa/ieee754-sf.S b/libgcc/config/xtensa/ieee754-sf.S index d75be0e5ae5..d75be0e5ae5 100644 --- a/gcc/config/xtensa/ieee754-sf.S +++ b/libgcc/config/xtensa/ieee754-sf.S diff --git a/gcc/config/xtensa/lib1funcs.asm b/libgcc/config/xtensa/lib1funcs.S index 071b9171177..071b9171177 100644 --- a/gcc/config/xtensa/lib1funcs.asm +++ b/libgcc/config/xtensa/lib1funcs.S diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa index 7d9e9db0487..5bcc0946243 100644 --- a/libgcc/config/xtensa/t-xtensa +++ b/libgcc/config/xtensa/t-xtensa @@ -1,2 +1,14 @@ +LIB1ASMSRC = xtensa/lib1funcs.S +LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ + _umulsidi3 _clz _clzsi2 _ctzsi2 _ffssi2 \ + _ashldi3 _ashrdi3 _lshrdi3 \ + _negsf2 _addsubsf3 _mulsf3 _divsf3 _cmpsf2 _fixsfsi _fixsfdi \ + _fixunssfsi _fixunssfdi _floatsisf _floatunsisf \ + _floatdisf _floatundisf \ + _negdf2 _addsubdf3 _muldf3 _divdf3 _cmpdf2 _fixdfsi _fixdfdi \ + _fixunsdfsi _fixunsdfdi _floatsidf _floatunsidf \ + _floatdidf _floatundidf \ + _truncdfsf2 _extendsfdf2 + LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \ $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c |