From f9a024084fa2fb9dd89d19019e473eb7dae61e08 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Wed, 1 Sep 2004 06:08:34 +0000 Subject: [PATCH] config.gcc (arm*-*-symbianelf*): Do not include t-bpabi. * config.gcc (arm*-*-symbianelf*): Do not include t-bpabi. * config/arm/lib1funcs.asm: Do not include supplemental .S files when compiling for Symbian. * config/arm/symbian.h (RENAME_LIBRARY): New macro. (TARGET_OS_CPP_BUILTINS): Likewise. * config/arm/t-symbian (LIB1ASMFUNCS): Define. From-SVN: r86875 --- gcc/config.gcc | 7 ++++++- gcc/config/arm/lib1funcs.asm | 2 ++ gcc/config/arm/symbian.h | 12 ++++++++++++ gcc/config/arm/t-symbian | 14 ++++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index 6d9abd464c7..576694fbe02 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -658,10 +658,15 @@ arm*-*-eabi* | arm*-*-symbianelf* ) # TImode. need_64bit_hwint=yes tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h" - tmake_file="t-slibgcc-elf-ver arm/t-arm arm/t-arm-elf arm/t-bpabi" + tmake_file="t-slibgcc-elf-ver arm/t-arm arm/t-arm-elf" case ${target} in + arm*-*-eabi*) + tmake_file="${tmake_file} arm/t-bpabi" + ;; arm*-*-symbianelf*) tm_file="${tm_file} arm/symbian.h" + # We do not include t-bpabi for Symbian OS because the system + # provides its own implementation of the BPABI functions. tmake_file="${tmake_file} arm/t-symbian" ;; esac diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm index 61de0a30855..bc425e5e840 100644 --- a/gcc/config/arm/lib1funcs.asm +++ b/gcc/config/arm/lib1funcs.asm @@ -1163,6 +1163,8 @@ LSYM(Lchange_\register): #endif /* L_interwork_call_via_rX */ #endif /* Arch supports thumb. */ +#ifndef __symbian__ #include "ieee754-df.S" #include "ieee754-sf.S" #include "bpabi.S" +#endif /* __symbian__ */ diff --git a/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h index d30e7384a21..47fe2cbba00 100644 --- a/gcc/config/arm/symbian.h +++ b/gcc/config/arm/symbian.h @@ -64,3 +64,15 @@ #define SUBTARGET_ASM_FLOAT_SPEC \ "%{!mfpu=*:-mfpu=vfp} %{!mcpu=*:%{!march=*:-march=armv5t}}" +/* SymbianOS provides the BPABI routines in a separate library. + Therefore, we do not need to define any of them in libgcc. */ +#undef RENAME_LIBRARY +#define RENAME_LIBRARY(GCC_NAME, AEABI_NAME) /* empty */ + +/* Define the __symbian__ macro. */ +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__symbian__"); \ + } \ + while (false) diff --git a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian index fba534ce8ef..1b7208b936a 100644 --- a/gcc/config/arm/t-symbian +++ b/gcc/config/arm/t-symbian @@ -1,3 +1,17 @@ +LIB1ASMFUNCS = _bb_init_func _call_via_rX _interwork_call_via_rX + +# 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 + # Create a multilib for processors with VFP floating-point, and a # multilib for those without -- using the soft-float ABI in both # cases. Symbian OS object should be compiled with interworking -- 2.30.2