[ARM] [GSoC] François Revol + Johannes Wischert: - add missing bits needed to use EABI by default (which should be == AAPCS == BPABI if I understood it right), - include t-bpabi and bpabi.h, - added an arm/t-haiku and arm/haiku.h to correct back some stuff after them as is done for linux, - add multilib variants for softfloat (for xscale) and softfp (AAPCS), - undo the LIBGCC_SPEC override for arm, it might have been the cause of multilib not working, not sure, - make armv6 default target. This allows building for both overo and verdex boards with some mods, though it emits calls to exception unwinding stuff that requires some more symbols (like abort), and should probably be fixed some other way.
git-svn-id: file:///srv/svn/repos/haiku/buildtools/trunk@32237 a95241bf-73f2-0310-859d-f6bbb57e9c96
Diff
gcc/gcc/config.gcc | 10 +++++++++-
gcc/gcc/config/arm/haiku.h | 24 ++++++++++++++++++++++--
gcc/gcc/config/arm/t-haiku | 21 +++++++++++++++++++++
3 files changed, 48 insertions(+), 7 deletions(-)
@@ -734,8 +734,14 @@
use_collect2=yes
;;
arm*-*-haiku*)
tmake_file="${tmake_file} t-haiku arm/t-arm arm/t-arm-elf"
tm_file="dbxelf.h elfos.h haiku.h arm/elf.h arm/aout.h arm/haiku.h arm/arm.h"
tmake_file="${tmake_file} t-haiku arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-haiku"
tm_file="dbxelf.h elfos.h haiku.h arm/elf.h arm/bpabi.h arm/haiku.h"
# The BPABI long long divmod functions return a 128-bit value in
# registers r0-r3. Correctly modeling that requires the use of
# TImode.
need_64bit_hwint=yes
default_use_cxa_atexit=yes
tm_file="${tm_file} arm/aout.h arm/arm.h"
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
@@ -29,18 +29,25 @@
#undef TARGET_DEFAULT_FLOAT_ABI
#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (0)
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
{ "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
/*
#undef TARGET_DEFAULT
*/
#undef SUBTARGET_CPU_DEFAULT
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm920t
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
do \
{ \
@@ -55,11 +62,18 @@
type_infos are not merged, so that they get compared by name \
instead of by pointer. */ \
builtin_define ("__GXX_MERGED_TYPEINFO_NAMES=0"); \
builtin_define ("__GXX_TYPEINFO_EQUALITY_INLINE=0");\
\
TARGET_BPABI_CPP_BUILTINS(); \
} \
while (0)
/* Use the default LIBGCC_SPEC, not the empty version in haiku.h, as we
do not use multilib (needed ??). */
#undef LIBGCC_SPEC
#undef LINK_SPEC
#define LINK_SPEC "%{!o*:-o %b} -m armelf -shared -no-undefined -Bsymbolic %{nostart:-e 0}"
#define LINK_SPEC "%{!o*:-o %b} -m armelf -shared -no-undefined -Bsymbolic %{nostart:-e 0} \
%{mbig-endian:-EB} %{mlittle-endian:-EL} -X"
@@ -1,0 +1,21 @@
# build multilib for soft float and VFP
# (unsure about how it should be done...)
# mix from t-symbian & t-wince-pe
#LIB1ASMSRC = arm/lib1funcs.asm
#LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX
#MULTILIB_OPTIONS += mhard-float
#MULTILIB_DIRNAMES += fpu
MULTILIB_OPTIONS += msoft-float
MULTILIB_DIRNAMES += fpu soft
MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
MULTILIB_OPTIONS += mfloat-abi=softfp
MULTILIB_DIRNAMES += softfp
#LIBGCC = stmp-multilib
#INSTALL_LIBGCC = install-multilib
#TARGET_LIBGCC2_CFLAGS =