config.gcc (arm*-*-symbianelf*): Do not include t-bpabi.
authorMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 1 Sep 2004 06:08:34 +0000 (06:08 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 1 Sep 2004 06:08:34 +0000 (06:08 +0000)
* 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
gcc/config/arm/lib1funcs.asm
gcc/config/arm/symbian.h
gcc/config/arm/t-symbian

index 6d9abd464c70287a553671e123d682b6b1996077..576694fbe02317327b55d548817c910b9151f743 100644 (file)
@@ -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
index 61de0a30855e44d5675cf299631b8174984ab4f6..bc425e5e840bdb56d4d4ab0a66806364d9cc1d57 100644 (file)
@@ -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__ */
index d30e7384a2101385178d165d7b211dbd818c2648..47fe2cbba003fa031e5f84cd936c9b19366bd77a 100644 (file)
 #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)
index fba534ce8ef9397b65300e53af5ac0663516f988..1b7208b936a5b279eab1ee727751392ef19d5e71 100644 (file)
@@ -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