diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-10-08 18:17:20 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-10-08 18:17:20 +0000 |
commit | 6783d878387d2474d8a694d0b0eb8f7257e15963 (patch) | |
tree | 9d6a64cda920ff265ef6281c9618ed7a6c15afe7 /gcc/config | |
parent | 0fc339a882e3c2095840b3eb7796c7f4aabe7783 (diff) | |
download | gcc-6783d878387d2474d8a694d0b0eb8f7257e15963.tar.gz |
/
* configure.in (arm-*-linux-gnueabi): Add to noconfigdirs
target-libffi, target-qthreads, target-libjava, and
targetlibobjc.
* configure: Regenerate.
gcc/
Merge from csl-arm-branch:
2005-09-07 Paul Brook <paul@codesourcery.com>
* config/arm/linux-eabi.h (SUBTARGET_EXTRA_LINK_SPEC): Prepend a
space to string.
2005-04-30 Paul Brook <paul@codesourcery.com>
* config/arm/bpabi.h (TARGET_DEFAULT): Define.
* config/arm/linux-eabi.h (SUBTARGET_CPU_DEFAULT): Define.
2005-03-07 Daniel Jacobowitz <dan@codesourcery.com>
* config/arm/arm.c (arm_all_abis): Add aapcs-linux.
(arm_override_options): Use TARGET_AAPCS_BASED.
* config/arm/arm.h (enum arm_abi_type): Add ARM_ABI_AAPCS_LINUX.
(PTRDIFF_TYPE): Use int for AAPCS.
(DEFAULT_SHORT_ENUMS): Use false for aapcs-linux.
* config/arm/linux-eabi.h (ARM_DEFAULT_ABI, WCHAR_TYPE): Define.
(DEFAULT_SHORT_ENUMS): Delete.
* doc/invoke.texi (ARM Options): Document -mabi=aapcs-linux.
2004-12-15 Daniel Jacobowitz <dan@codesourcery.com>
* config/arm/arm.h (DEFAULT_SHORT_ENUMS): Wrap in #ifndef.
* config/arm/linux-eabi.h (DEFAULT_SHORT_ENUMS): Define to 0.
* config/arm/t-linux-eabi (TARGET_LIBGCC2_CFLAGS): Set to -fPIC.
2004-12-03 Mark Mitchell <mark@codesourcery.com>
* config/arm/linux-eabi.h (LIBGCC_SPEC): Do not define.
2004-11-22 Mark Mitchell <mark@codesourcery.com>
* config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit.
2004-11-19 Mark Mitchell <mark@codesourcery.com>
* config.gcc (arm*-*-linux-gnueabi): Add it.
* config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before
redefining it.
(TARGET_OS_CPP_BUILTINS): Likeiwse.
* config/arm/linux-eabi.h: New file.
* config/arm/linux-elf.h (LINUX_TARGET_INTERPRETER): New macro.
(LINUX_TARET_LINK_SPEC): Likewise.
(LINK_SPEC): Use it.
* config/arm/t-linux-eabi: New file.
libcpp/
* configure.ac: Require 64-bit int for arm*-*-*eabi*.
* configure: Regenerate.
libstdc++/
Merge from csl-arm-branch:
2004-12-15 Daniel Jacobowitz <dan@codesourcery.com>
* libstdc++-v3/config/linker-map.gnu: Add ARM EABI symbols.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105121 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/arm/arm.c | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.h | 7 | ||||
-rw-r--r-- | gcc/config/arm/bpabi.h | 6 | ||||
-rw-r--r-- | gcc/config/arm/linux-eabi.h | 70 | ||||
-rw-r--r-- | gcc/config/arm/linux-elf.h | 10 | ||||
-rw-r--r-- | gcc/config/arm/t-linux-eabi | 7 |
6 files changed, 100 insertions, 7 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 60acf36d1f1..dd976b0865c 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -673,7 +673,8 @@ static const struct abi_name arm_all_abis[] = {"apcs-gnu", ARM_ABI_APCS}, {"atpcs", ARM_ABI_ATPCS}, {"aapcs", ARM_ABI_AAPCS}, - {"iwmmxt", ARM_ABI_IWMMXT} + {"iwmmxt", ARM_ABI_IWMMXT}, + {"aapcs-linux", ARM_ABI_AAPCS_LINUX} }; /* Return the number of bits set in VALUE. */ @@ -1194,7 +1195,7 @@ arm_override_options (void) flag_schedule_insns = flag_schedule_insns_after_reload = 0; /* Override the default structure alignment for AAPCS ABI. */ - if (arm_abi == ARM_ABI_AAPCS) + if (TARGET_AAPCS_BASED) arm_structure_size_boundary = 8; if (structure_size_string != NULL) @@ -14527,7 +14528,7 @@ arm_promote_prototypes (tree t ATTRIBUTE_UNUSED) static bool arm_default_short_enums (void) { - return TARGET_AAPCS_BASED; + return TARGET_AAPCS_BASED && arm_abi != ARM_ABI_AAPCS_LINUX; } diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 64b5e373d3c..ae13a9d92b1 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -279,7 +279,8 @@ enum arm_abi_type ARM_ABI_APCS, ARM_ABI_ATPCS, ARM_ABI_AAPCS, - ARM_ABI_IWMMXT + ARM_ABI_IWMMXT, + ARM_ABI_AAPCS_LINUX }; extern enum arm_abi_type arm_abi; @@ -501,6 +502,10 @@ extern int arm_structure_size_boundary; #define SIZE_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "long unsigned int") #endif +#ifndef PTRDIFF_TYPE +#define PTRDIFF_TYPE (TARGET_AAPCS_BASED ? "int" : "long int") +#endif + /* AAPCS requires that structure alignment is affected by bitfields. */ #ifndef PCC_BITFIELD_TYPE_MATTERS #define PCC_BITFIELD_TYPE_MATTERS TARGET_AAPCS_BASED diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index 7fb7d6a265b..ac5a0905cc5 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -30,8 +30,13 @@ #define TARGET_UNWIND_INFO 1 /* Section 4.1 of the AAPCS requires the use of VFP format. */ +#undef FPUTYPE_DEFAULT #define FPUTYPE_DEFAULT FPUTYPE_VFP +/* EABI targets should enable interworking by default. */ +#undef TARGET_DEFAULT +#define TARGET_DEFAULT MASK_INTERWORK + /* The ARM BPABI functions return a boolean; they use no special calling convention. */ #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) TARGET_BPABI @@ -101,6 +106,7 @@ } \ while (false) +#undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS() \ TARGET_BPABI_CPP_BUILTINS() diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h new file mode 100644 index 00000000000..62aa6dd10a1 --- /dev/null +++ b/gcc/config/arm/linux-eabi.h @@ -0,0 +1,70 @@ +/* Configuration file for ARM GNU/Linux EABI targets. + Copyright (C) 2004 + Free Software Foundation, Inc. + Contributed by CodeSourcery, LLC + + 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 2, 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 COPYING. If not, write to + the Free Software Foundation, 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* On EABI GNU/Linux, we want both the BPABI builtins and the + GNU/Linux builtins. */ +#undef TARGET_OS_CPP_BUILTINS +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + TARGET_BPABI_CPP_BUILTINS(); \ + LINUX_TARGET_OS_CPP_BUILTINS(); \ + } \ + while (false) + +/* We default to a soft-float ABI so that binaries can run on all + target hardware. */ +#undef TARGET_DEFAULT_FLOAT_ABI +#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT + +/* We default to the "aapcs-linux" ABI so that enums are int-sized by + default. */ +#undef ARM_DEFAULT_ABI +#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX + +/* Default to armv5t so that thumb shared libraries work. + The ARM10TDMI core is the default for armv5t, so set + SUBTARGET_CPU_DEFAULT to achieve this. */ +#undef SUBTARGET_CPU_DEFAULT +#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi + +#undef SUBTARGET_EXTRA_LINK_SPEC +#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux_eabi" + +/* Use ld-linux.so.3 so that it will be possible to run "classic" + GNU/Linux binaries on an EABI system. */ +#undef LINUX_TARGET_INTERPRETER +#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" + +/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to + use the GNU/Linux version, not the generic BPABI version. */ +#undef LINK_SPEC +#define LINK_SPEC LINUX_TARGET_LINK_SPEC + +/* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we + do not use -lfloat. */ +#undef LIBGCC_SPEC + +/* Use the AAPCS type for wchar_t, or the previous Linux default for + non-AAPCS. */ +#undef WCHAR_TYPE +#define WCHAR_TYPE (TARGET_AAPCS_BASED ? "unsigned int" : "long int") diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 100632944d2..5429a13a97b 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -81,18 +81,22 @@ #define ENDFILE_SPEC \ "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" -#undef LINK_SPEC -#define LINK_SPEC "%{h*} %{version:-v} \ +#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" + +#define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ %{b} \ %{static:-Bstatic} \ %{shared:-shared} \ %{symbolic:-Bsymbolic} \ %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ + %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \ -X \ %{mbig-endian:-EB}" \ SUBTARGET_EXTRA_LINK_SPEC +#undef LINK_SPEC +#define LINK_SPEC LINUX_TARGET_LINK_SPEC + #define TARGET_OS_CPP_BUILTINS() \ do \ { \ diff --git a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi new file mode 100644 index 00000000000..7cfee90f809 --- /dev/null +++ b/gcc/config/arm/t-linux-eabi @@ -0,0 +1,7 @@ +# These functions are included in shared libraries. +TARGET_LIBGCC2_CFLAGS = -fPIC + +# We do not build a Thumb multilib for Linux because the definition of +# CLEAR_INSN_CACHE in linux-gas.h does not work in Thumb mode. +MULTILIB_OPTIONS = +MULTILIB_DIRNAMES = |