From d399ae674b67725d39ada360cda4cc668a4a6af0 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 10 Oct 2005 01:04:31 +0000 Subject: [PATCH] config.gcc (arm*-*-linux*): Remove redundant extra_parts and gnu_ld assignments. * config.gcc (arm*-*-linux*): Remove redundant extra_parts and gnu_ld assignments. * config/arm/t-linux-eabi (LIB1ASMFUNCS) (EXTRA_MULTILIB_PARTS): Define. * config/arm/linux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC) (STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC) (LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED): Move to... * config/arm/uclinux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC) (STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC) (LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED): ... here. From-SVN: r105162 --- gcc/ChangeLog | 13 +++++++++++ gcc/config.gcc | 2 -- gcc/config/arm/linux-elf.h | 41 --------------------------------- gcc/config/arm/t-linux-eabi | 7 ++++++ gcc/config/arm/uclinux-elf.h | 44 ++++++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 43 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 31163ac68ac..1e0034bb8ac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2005-10-09 Daniel Jacobowitz + + * config.gcc (arm*-*-linux*): Remove redundant extra_parts and + gnu_ld assignments. + * config/arm/t-linux-eabi (LIB1ASMFUNCS) + (EXTRA_MULTILIB_PARTS): Define. + * config/arm/linux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC) + (STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC) + (LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED): Move to... + * config/arm/uclinux-elf.h (NO_IMPLICIT_EXTERN_C, CPLUSPLUS_CPP_SPEC) + (STARTFILE_SPEC, ENDFILE_SPEC, CC1_SPEC) + (LINK_GCC_C_SEQUENCE_SPEC, USE_LD_AS_NEEDED): ... here. + 2005-10-09 Zdenek Dvorak PR tree-optimization/24226 diff --git a/gcc/config.gcc b/gcc/config.gcc index 4634517e26e..9acca827cc8 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -673,8 +673,6 @@ arm*-*-netbsd*) 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" tmake_file="${tmake_file} t-linux arm/t-arm" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes case ${target} in arm*-*-linux-gnueabi) tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 5429a13a97b..15354e5ba0d 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -28,9 +28,6 @@ #undef TARGET_VERSION #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr); -/* Do not assume anything about header files. */ -#define NO_IMPLICIT_EXTERN_C - #undef TARGET_DEFAULT_FLOAT_ABI #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD @@ -45,10 +42,6 @@ #define MULTILIB_DEFAULTS \ { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } -/* The GNU C++ standard library requires that these macros be defined. */ -#undef CPLUSPLUS_CPP_SPEC -#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" - /* Now we define the strings used to build the spec file. */ #undef LIB_SPEC #define LIB_SPEC \ @@ -58,29 +51,6 @@ #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which - provides part of the support for getting C++ file-scope static - object constructed before entering `main'. */ - -#undef STARTFILE_SPEC -#define STARTFILE_SPEC \ - "%{!shared: \ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ - crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" - -/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on - the GNU/Linux magical crtend.o file (see crtstuff.c) which - provides part of the support for getting C++ file-scope static - object constructed before entering `main', followed by a normal - GNU/Linux "finalizer" file, `crtn.o'. */ - -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ @@ -139,14 +109,3 @@ /* The GNU/Linux profiler needs a frame pointer. */ #define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile - -#undef CC1_SPEC -#define CC1_SPEC "%{profile:-p}" - -#define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" - -/* Use --as-needed -lgcc_s for eh support. */ -#ifdef HAVE_LD_AS_NEEDED -#define USE_LD_AS_NEEDED 1 -#endif diff --git a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi index 7cfee90f809..5e8d94d7a28 100644 --- a/gcc/config/arm/t-linux-eabi +++ b/gcc/config/arm/t-linux-eabi @@ -5,3 +5,10 @@ TARGET_LIBGCC2_CFLAGS = -fPIC # CLEAR_INSN_CACHE in linux-gas.h does not work in Thumb mode. MULTILIB_OPTIONS = MULTILIB_DIRNAMES = + +# Use a version of div0 which raises SIGFPE. +LIB1ASMFUNCS := $(filter-out _dvmd_tls,$(LIB1ASMFUNCS)) _dvmd_lnx + +# Multilib the standard Linux files. Don't include crti.o or crtn.o, +# which are provided by glibc. +EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o diff --git a/gcc/config/arm/uclinux-elf.h b/gcc/config/arm/uclinux-elf.h index 645243e97c4..9f112cddaa2 100644 --- a/gcc/config/arm/uclinux-elf.h +++ b/gcc/config/arm/uclinux-elf.h @@ -28,3 +28,47 @@ #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_SINGLE_PIC_BASE) + +/* NOTE: The remaining definitions in this file are needed because uclinux + does not use config/linux.h. */ + +/* Do not assume anything about header files. */ +#define NO_IMPLICIT_EXTERN_C + +/* The GNU C++ standard library requires that these macros be defined. */ +#undef CPLUSPLUS_CPP_SPEC +#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" + +/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add + the GNU/Linux magical crtbegin.o file (see crtstuff.c) which + provides part of the support for getting C++ file-scope static + object constructed before entering `main'. */ + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ + %{!p:%{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" + +/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on + the GNU/Linux magical crtend.o file (see crtstuff.c) which + provides part of the support for getting C++ file-scope static + object constructed before entering `main', followed by a normal + GNU/Linux "finalizer" file, `crtn.o'. */ + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + +#undef CC1_SPEC +#define CC1_SPEC "%{profile:-p}" + +#define LINK_GCC_C_SEQUENCE_SPEC \ + "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" + +/* Use --as-needed -lgcc_s for eh support. */ +#ifdef HAVE_LD_AS_NEEDED +#define USE_LD_AS_NEEDED 1 +#endif