aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>2004-09-01 06:08:34 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2004-09-01 06:08:34 +0000
commitf9a024084fa2fb9dd89d19019e473eb7dae61e08 (patch)
tree723131b3f2c5cea8c4151beefbc1da59a6c4451b
parent14945fe6b38b48f568e043070b81c04c60e08168 (diff)
downloadgcc-f9a024084fa2fb9dd89d19019e473eb7dae61e08.zip
gcc-f9a024084fa2fb9dd89d19019e473eb7dae61e08.tar.gz
gcc-f9a024084fa2fb9dd89d19019e473eb7dae61e08.tar.bz2
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
-rw-r--r--gcc/config.gcc7
-rw-r--r--gcc/config/arm/lib1funcs.asm2
-rw-r--r--gcc/config/arm/symbian.h12
-rw-r--r--gcc/config/arm/t-symbian14
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6d9abd4..576694f 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 61de0a3..bc425e5 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 d30e738..47fe2cb 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 fba534c..1b7208b 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