Rearrange arm/elf header files

From-SVN: r45594
This commit is contained in:
Nick Clifton 2001-09-14 10:19:30 +00:00 committed by Nick Clifton
parent 7330797589
commit be393ecf35
21 changed files with 328 additions and 513 deletions

View File

@ -1,3 +1,50 @@
2001-09-14 Nick Clifton <nickc@cambridge.redhat.com>
* config.gcc: Move inclusion of arm elf specific header files
from the files themselves into the tm_file variable. Make
sure that elfos.h is included before target specific elf
headers.
* config/arm/aout.h (NO_DOLLAR_IN_LABEL): Only define if not
already defined.
(ASM_OUTPUT_ASCII, ASM_OUTPUT_SKIP): Protect definition.
* config/arm.arm.h (TARGET_MEM_FUNCTIONS,
ASM_OUTPUT_CASE_LABEL): Protect definition.
(CC1_SPEC, FP_DEFAULT, ARM_FUNCTION_PROFILE): Only define if
not already defined.
* config/arm/conix-elf.h: (USER_LABEL_PREFIX,
LOCAL_LABEL_PREFIX, MAKE_DECL_ONE_ONLY, UNIQUE_SECTION):
Remove duplicate definition.
(READONLY_DATA_SECTION, SUBTARGET_EXTRA_SECTION,
(SUBTARGET_EXTRA_SECTION_FUNCTION, RDATA_SECTION_ASM_OP,
(RDATA_SECTION_FUNCTION): Remove redundant definition.
(STARTFILE_SPEC, ENDFILE_SPEC): Protect definition.
Remove inclusion of arm/elf.h.
* config/arm/unknown-elf.h: as for conix-elf.h.
(STARTFILE_SPEC): Include crti.o and crtn.o.
* config/arm/linux-elf.h: as for conix-elf.h.
* config/arm/ecos-elf.h: Remove inclusion of unknown-elf.h.
* config/arm/strongarm-elf.h: Remove inclusion of
unknown-elf.h.
* config/arm/xscale-elf.h: Remove inclusion of unknown-elf.h.
* config/arm/unknown-elf-oabi.h: Remove inclusion of
unknown-elf.h and elf.h.
* config/arm/uclinux-elf.h: Remove inclusion of linux-elf.h.
* config/arm/linux-gas.h (DBX_DEBUGGING_INFO,
ASM_WEAKEN_LABEL): Remove redundant definition.
* config/arm/elf.h: Test for inclusion of elfos.h
(USER_LABEL_PREFIX, ASM_DECLARE_RESULT, ASM_DECLARE_RESULT,
ASM_DECLARE_OBJECT_NAME, ASM_FINISH_DECLARE_OBJECT_NAME,
SUBTARGET_EXTRA_SECTION, SUBTARGET_EXTRA_SECTION_FUNCTION,
EXTRA_SECTIONS, INT_ASM_OP, ASM_WEAKEN_LABEL): Remove
redundant definition.
(TYPE_OPERAND_FMT, ASM_DECLARE_FUNCTION_NAME,
ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_INTERNAL_LABEL,
ASM_OUTPUT_ALIGNED_COMMON): Protect definition.
* t-arm-elf (EXTRA_MULTILIB_PARTS): Add crti.o and crtn.o.
Add rules to build crti.o and crtn.o
* crti.asm: New file.
* crtn.asm: New file.
2001-09-13 Neil Booth <neil@daikokuya.demon.co.uk>
* c-parse.in (_yylex): Use _cpp_backup_tokens.

View File

@ -531,7 +531,7 @@ arc-*-elf*)
extra_parts="crtinit.o crtfini.o"
;;
arm*-*-rtems*)
tm_file=arm/rtems-elf.h
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/rtems-elf.h rtems.h"
tmake_file="arm/t-arm-elf t-rtems"
if test x$enable_threads = xyes; then
thread_file='rtems'
@ -576,7 +576,7 @@ arm*-*-netbsd*)
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
xmake_file=x-linux
tm_file="arm/linux-elf.h"
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
gnu_ld=yes
@ -587,7 +587,7 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
esac
;;
arm*-*-uclinux*) # ARM ucLinux
tm_file=arm/uclinux-elf.h
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/uclinux-elf.h"
tmake_file=arm/t-arm-elf
;;
arm*-*-aout)
@ -595,19 +595,19 @@ arm*-*-aout)
tmake_file=arm/t-arm-aout
;;
arm*-*-ecos-elf)
tm_file=arm/ecos-elf.h
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/ecos-elf.h"
tmake_file=arm/t-arm-elf
;;
arm*-*-elf)
tm_file=arm/unknown-elf.h
tm_file="elfos.h arm/unknown-elf.h arm/elf.h"
tmake_file=arm/t-arm-elf
;;
arm*-*-conix*)
tm_file=arm/conix-elf.h
tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/conix-elf.h"
tmake_file=arm/t-arm-elf
;;
arm*-*-oabi)
tm_file=arm/unknown-elf-oabi.h
tm_file="arm/unknown-elf-oabi.h elfos.h arm/unknown-elf.h arm/elf.h"
tmake_file=arm/t-arm-elf
;;
arm-*-pe*)
@ -3117,7 +3117,7 @@ stormy16-*-elf)
extra_parts="crtbegin.o crtend.o"
;;
strongarm-*-elf*)
tm_file=arm/strongarm-elf.h
tm_file="arm/strongarm-elf.h elfos.h arm/unknown-elf.h arm/elf.h"
tmake_file=arm/t-strongarm-elf
out_file=arm/arm.c
md_file=arm/arm.md
@ -3203,7 +3203,7 @@ we32k-att-sysv*)
use_collect2=yes
;;
xscale-*-elf)
tm_file=arm/xscale-elf.h
tm_file="arm/xscale-elf.h elfos.h arm/unknown-elf.h arm/elf.h"
tmake_file=arm/t-xscale-elf
out_file=arm/arm.c
md_file=arm/arm.md

View File

@ -105,7 +105,9 @@ Boston, MA 02111-1307, USA. */
/* Arm Assembler barfs on dollars */
#define DOLLARS_IN_IDENTIFIERS 0
#ifndef NO_DOLLAR_IN_LABEL
#define NO_DOLLAR_IN_LABEL 1
#endif
/* DBX register number for a given compiler register number */
#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
@ -257,10 +259,12 @@ Boston, MA 02111-1307, USA. */
#define ASM_OUTPUT_BYTE(STREAM, VALUE) \
fprintf (STREAM, "\t.byte\t%d\n", VALUE)
#undef ASM_OUTPUT_ASCII
#define ASM_OUTPUT_ASCII(STREAM, PTR, LEN) \
output_ascii_pseudo_op (STREAM, (const unsigned char *)(PTR), LEN)
/* Output a gap. In fact we fill it with nulls. */
#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(STREAM, NBYTES) \
fprintf (STREAM, "\t.space\t%d\n", NBYTES)

View File

@ -258,7 +258,9 @@ Unrecognized value in TARGET_CPU_DEFAULT.
%{!mthumb-interwork:%{!mno-thumb-interwork:%(cpp_interwork_default)}} \
"
#ifndef CC1_SPEC
#define CC1_SPEC ""
#endif
/* This macro defines names of additional specifications to put in the specs
that can be used in various specifications like CC1_SPEC. Its definition
@ -548,7 +550,9 @@ extern enum floating_point_type arm_fpu_arch;
/* Default floating point architecture. Override in sub-target if
necessary. */
#ifndef FP_DEFAULT
#define FP_DEFAULT FP_SOFT2
#endif
/* Nonzero if the processor has a fast multiply insn, and one that does
a 64-bit multiply of two 32-bit values. */
@ -586,6 +590,7 @@ extern int arm_is_6_or_7;
that is controlled by the APCS-FRAME option. */
#define CAN_DEBUG_WITHOUT_FP
#undef TARGET_MEM_FUNCTIONS
#define TARGET_MEM_FUNCTIONS 1
#define OVERRIDE_OPTIONS arm_override_options ()
@ -1554,6 +1559,7 @@ typedef struct
The ``mov ip,lr'' seems like a good idea to stick with cc convention.
``prof'' doesn't seem to mind about this! */
#ifndef ARM_FUNCTION_PROFILER
#define ARM_FUNCTION_PROFILER(STREAM, LABELNO) \
{ \
char temp[20]; \
@ -1567,6 +1573,7 @@ typedef struct
sym = gen_rtx (SYMBOL_REF, Pmode, temp); \
ASM_OUTPUT_INT (STREAM, sym); \
}
#endif
#define THUMB_FUNCTION_PROFILER(STREAM, LABELNO) \
{ \
@ -2578,6 +2585,7 @@ extern int making_const_table;
/* This is how to output a label which precedes a jumptable. Since
Thumb instructions are 2 bytes, we may need explicit alignment here. */
#undef ASM_OUTPUT_CASE_LABEL
#define ASM_OUTPUT_CASE_LABEL(FILE, PREFIX, NUM, JUMPTABLE) \
do \
{ \

View File

@ -1,6 +1,6 @@
/* Definitions of target machine for GNU compiler,
for ARM with ConiX OS.
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
Contributed by Philip Blundell <pb@futuretv.com>
This file is part of GNU CC.
@ -18,95 +18,18 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
`Boston, MA 02111-1307, USA. */
/* elfos.h should have already been included. Now just override
any conflicting definitions and add any extras. */
/* Run-time Target Specification. */
#ifndef TARGET_VERSION
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF ConiX)", stderr);
#endif
/* Default to using APCS-32 and software floating point. */
#ifndef TARGET_DEFAULT
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32)
#endif
/* Now we define the strings used to build the spec file. */
#define STARTFILE_SPEC "crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC "crtend%O%s"
#define USER_LABEL_PREFIX ""
#define LOCAL_LABEL_PREFIX "."
#define TEXT_SECTION "\t.text"
/* Debugging */
#define DWARF2_DEBUGGING_INFO
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* Support for Constructors and Destructors. */
#define READONLY_DATA_SECTION rdata_section
/* A list of other sections which the compiler might be "in" at any
given time. */
#define SUBTARGET_EXTRA_SECTIONS in_rdata,
/* A list of extra section function definitions. */
#define SUBTARGET_EXTRA_SECTION_FUNCTIONS RDATA_SECTION_FUNCTION
#define RDATA_SECTION_ASM_OP "\t.section .rodata"
#define RDATA_SECTION_FUNCTION \
void \
rdata_section () \
{ \
if (in_section != in_rdata) \
{ \
fprintf (asm_out_file, "%s\n", RDATA_SECTION_ASM_OP); \
in_section = in_rdata; \
} \
}
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
/* The ARM development system defines __main. */
#define NAME__MAIN "__gccmain"
#define SYMBOL__MAIN __gccmain
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#define UNIQUE_SECTION(DECL,RELOC) \
do \
{ \
int len; \
char * name, * string, * prefix; \
\
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
\
if (! DECL_ONE_ONLY (DECL)) \
{ \
prefix = "."; \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
prefix = ".text."; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
prefix = ".rodata."; \
else \
prefix = ".data."; \
} \
else if (TREE_CODE (DECL) == FUNCTION_DECL) \
prefix = ".gnu.linkonce.t."; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
prefix = ".gnu.linkonce.r."; \
else \
prefix = ".gnu.linkonce.d."; \
\
len = strlen (name) + strlen (prefix); \
string = alloca (len + 1); \
sprintf (string, "%s%s", prefix, name); \
\
DECL_SECTION_NAME (DECL) = build_string (len, string); \
} \
while (0)
#ifndef CPP_APCS_PC_DEFAULT_SPEC
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
@ -116,8 +39,6 @@ rdata_section () \
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm7tdmi
#endif
#undef CPP_PREDEFINES
#define CPP_PREDEFINES \
"-D__arm__ -D__CONIX__ -Acpu=arm -Amachine=arm -D__ELF__"
/* Now get the routine arm-elf definitions. */
#include "arm/elf.h"

70
gcc/config/arm/crti.asm Normal file
View File

@ -0,0 +1,70 @@
# Copyright (C) 2001 Free Software Foundation, Inc.
# Written By Nick Clifton
#
# This file 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.
#
# In addition to the permissions in the GNU General Public License, the
# Free Software Foundation gives you unlimited permission to link the
# compiled version of this file with other programs, and to distribute
# those programs without any restriction coming from the use of this
# file. (The General Public License restrictions do apply in other
# respects; for example, they cover modification of the file, and
# distribution when not linked into another program.)
#
# This file 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 this program; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# As a special exception, if you link this library with files
# compiled with GCC to produce an executable, this does not cause
# the resulting executable to be covered by the GNU General Public License.
# This exception does not however invalidate any other reasons why
# the executable file might be covered by the GNU General Public License.
#
# This file just make a stack frame for the contents of the .fini and
# .init sections. Users may put any desired instructions in those
# sections.
# Note - this macro is complimented by the FUNC_END macro
# in crtn.asm. If you change this macro you must also change
# that macro match.
.macro FUNC_START
#ifdef __thumb__
.thumb
push {r4, r5, r6, r7, lr}
#else
.arm
# Create a stack frame and save any call-preserved registers
mov ip, sp
stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr, pc}
sub fp, ip, #4
#endif
.endm
.file "crti.asm"
.section ".init"
.align 2
.global _init
_init:
FUNC_START
.section ".fini"
.align 2
.global _fini
_fini:
FUNC_START
# end of crti.asm

81
gcc/config/arm/crtn.asm Normal file
View File

@ -0,0 +1,81 @@
# Copyright (C) 2001 Free Software Foundation, Inc.
# Written By Nick Clifton
#
# This file 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.
#
# In addition to the permissions in the GNU General Public License, the
# Free Software Foundation gives you unlimited permission to link the
# compiled version of this file with other programs, and to distribute
# those programs without any restriction coming from the use of this
# file. (The General Public License restrictions do apply in other
# respects; for example, they cover modification of the file, and
# distribution when not linked into another program.)
#
# This file 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 this program; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# As a special exception, if you link this library with files
# compiled with GCC to produce an executable, this does not cause
# the resulting executable to be covered by the GNU General Public License.
# This exception does not however invalidate any other reasons why
# the executable file might be covered by the GNU General Public License.
#
# This file just makes sure that the .fini and .init sections do in
# fact return. Users may put any desired instructions in those sections.
# This file is the last thing linked into any executable.
# Note - this macro is complimented by the FUNC_START macro
# in crti.asm. If you change this macro you must also change
# that macro match.
#
# Note - we do not try any fancy optimisations of the return
# sequences here, it is just not worth it. Instead keep things
# simple. Restore all the save resgisters, including the link
# register and then perform the correct function return instruction.
.macro FUNC_END
#ifdef __thumb__
.thumb
pop {r4, r5, r6, r7}
pop {r3}
mov lr, r3
#else
.arm
ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, lr}
#endif
#if defined __THUMB_INTERWORK__ || defined __thumb__
bx lr
#else
#ifdef __APCS_26__
movs pc, lr
#else
mov pc, lr
#endif
#endif
.endm
.file "crtn.asm"
.section ".init"
;;
FUNC_END
.section ".fini"
;;
FUNC_END
# end of crtn.asm

View File

@ -1,5 +1,5 @@
/* Definitions for ecos based ARM systems using ELF
Copyright (C) 1998 Free Software Foundation, Inc.
Copyright (C) 1998, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -19,11 +19,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Run-time Target Specification. */
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF Ecos)", stderr);
#define HAS_INIT_SECTION
#include "unknown-elf.h"
#undef INVOKE_main

View File

@ -22,17 +22,14 @@ along with GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#define OBJECT_FORMAT_ELF
#ifndef OBJECT_FORMAT_ELF
#error elf.h included before elfos.h
#endif
#ifndef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
#endif
#ifndef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
#endif
#ifndef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC "-D__ELF__"
#endif
@ -58,30 +55,13 @@ Boston, MA 02111-1307, USA. */
%(subtarget_extra_asm_spec)"
#endif
/* The following macro defines the format used to output the second
operand of the .type assembler directive. Different svr4 assemblers
expect various different forms for this operand. The one given here
is just a default. You may need to override it in your machine-
specific tm.h file (depending upon the particulars of your assembler). */
/* The ARM uses @ are a comment character so we need to redefine
TYPE_OPERAND_FMT. */
#undef TYPE_OPERAND_FMT
#define TYPE_OPERAND_FMT "%s"
/* Write the extra assembler code needed to declare a function's result.
Most svr4 assemblers don't require any special declaration of the
result value, but there are exceptions. */
#ifndef ASM_DECLARE_RESULT
#define ASM_DECLARE_RESULT(FILE, RESULT)
#endif
/* These macros generate the special .type and .size directives which
are used to set the corresponding fields of the linker symbol table
entries in an ELF object file under SVR4. These macros also output
the starting labels for the relevant functions/objects. */
#define TYPE_ASM_OP "\t.type\t"
#define SIZE_ASM_OP "\t.size\t"
/* Write the extra assembler code needed to declare a function properly.
Some svr4 assemblers need to also have something extra said about the
function's return value. We allow for that here. */
/* We might need a ARM specific header to function declarations. */
#undef ASM_DECLARE_FUNCTION_NAME
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
do \
{ \
@ -96,56 +76,8 @@ Boston, MA 02111-1307, USA. */
} \
while (0)
/* Write the extra assembler code needed to declare an object properly. */
#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
do \
{ \
fprintf (FILE, "%s", TYPE_ASM_OP); \
assemble_name (FILE, NAME); \
putc (',', FILE); \
fprintf (FILE, TYPE_OPERAND_FMT, "object"); \
putc ('\n', FILE); \
size_directive_output = 0; \
if (!flag_inhibit_size_directive && DECL_SIZE (DECL)) \
{ \
size_directive_output = 1; \
fprintf (FILE, "%s", SIZE_ASM_OP); \
assemble_name (FILE, NAME); \
putc (',', FILE); \
fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, \
int_size_in_bytes (TREE_TYPE (DECL))); \
fputc ('\n', FILE); \
} \
ASM_OUTPUT_LABEL(FILE, NAME); \
} \
while (0)
/* Output the size directive for a decl in rest_of_decl_compilation
in the case where we did not do so before the initializer.
Once we find the error_mark_node, we know that the value of
size_directive_output was set
by ASM_DECLARE_OBJECT_NAME when it was run for the same decl. */
#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END) \
do \
{ \
const char * name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \
if (!flag_inhibit_size_directive && DECL_SIZE (DECL) \
&& ! AT_END && TOP_LEVEL \
&& DECL_INITIAL (DECL) == error_mark_node \
&& !size_directive_output) \
{ \
size_directive_output = 1; \
fprintf (FILE, "%s", SIZE_ASM_OP); \
assemble_name (FILE, name); \
putc (',', FILE); \
fprintf (FILE, HOST_WIDE_INT_PRINT_DEC, \
int_size_in_bytes (TREE_TYPE (DECL))); \
fputc ('\n', FILE); \
} \
} \
while (0)
/* This is how to declare the size of a function. */
/* We might need an ARM specific trailer for function declarations. */
#undef ASM_DECLARE_FUNCTION_SIZE
#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
do \
{ \
@ -207,7 +139,7 @@ Boston, MA 02111-1307, USA. */
#endif
/* Output an internal label definition. */
#ifndef ASM_OUTPUT_INTERNAL_LABEL
#undef ASM_OUTPUT_INTERNAL_LABEL
#define ASM_OUTPUT_INTERNAL_LABEL(STREAM, PREFIX, NUM) \
do \
{ \
@ -216,58 +148,20 @@ Boston, MA 02111-1307, USA. */
extern rtx arm_target_insn; \
\
if (arm_ccfsm_state == 3 && arm_target_label == (NUM) \
&& !strcmp (PREFIX, "L")) \
&& !strcmp (PREFIX, "L")) \
{ \
arm_ccfsm_state = 0; \
arm_target_insn = NULL; \
} \
ASM_GENERATE_INTERNAL_LABEL (s, (PREFIX), (NUM)); \
ASM_OUTPUT_LABEL (STREAM, s); \
ASM_GENERATE_INTERNAL_LABEL (s, (PREFIX), (NUM)); \
ASM_OUTPUT_LABEL (STREAM, s); \
} \
while (0)
#endif
/* A list of other sections which the compiler might be "in" at any
given time. */
#ifndef SUBTARGET_EXTRA_SECTIONS
#define SUBTARGET_EXTRA_SECTIONS
#endif
#ifndef EXTRA_SECTIONS
#define EXTRA_SECTIONS SUBTARGET_EXTRA_SECTIONS
#endif
/* A list of extra section function definitions. */
#ifndef SUBTARGET_EXTRA_SECTION_FUNCTIONS
#define SUBTARGET_EXTRA_SECTION_FUNCTIONS
#endif
#ifndef EXTRA_SECTION_FUNCTIONS
#define EXTRA_SECTION_FUNCTIONS \
SUBTARGET_EXTRA_SECTION_FUNCTIONS
#endif
/* Switch into a generic section. */
#undef TARGET_ASM_NAMED_SECTION
#undef TARGET_ASM_NAMED_SECTION
#define TARGET_ASM_NAMED_SECTION arm_elf_asm_named_section
/* Support the ctors/dtors sections for g++. */
#ifndef INT_ASM_OP
#define INT_ASM_OP "\t.word\t"
#endif
/* This is how we tell the assembler that a symbol is weak. */
#define ASM_WEAKEN_LABEL(FILE, NAME) \
do \
{ \
fputs ("\t.weak\t", FILE); \
assemble_name (FILE, NAME); \
fputc ('\n', FILE); \
} \
while (0)
#ifndef ASM_OUTPUT_ALIGNED_COMMON
#undef ASM_OUTPUT_ALIGNED_COMMON
#define ASM_OUTPUT_ALIGNED_COMMON(STREAM, NAME, SIZE, ALIGN) \
do \
{ \
@ -276,7 +170,6 @@ Boston, MA 02111-1307, USA. */
fprintf (STREAM, ", %d, %d\n", SIZE, ALIGN); \
} \
while (0)
#endif
/* For PIC code we need to explicitly specify (PLT) and (GOT) relocs. */
#define NEED_PLT_RELOC flag_pic

View File

@ -20,21 +20,27 @@ along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* elfos.h should have already been included. Now just override
any conflicting definitions and add any extras. */
/* Run-time Target Specification. */
#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
/* Default is to use APCS-32 mode. */
#undef TARGET_DEFAULT
#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
#undef MULTILIB_DEFAULTS
#define MULTILIB_DEFAULTS \
{ "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" }
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
/* Handle #pragma weak and #pragma pack. */
#define HANDLE_SYSV_PRAGMA
#define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
/* Now we define the strings used to build the spec file. */
#define LIB_SPEC \
@ -42,7 +48,6 @@ Boston, MA 02111-1307, USA. */
%{!shared: %{pthread:-lpthread} \
%{profile:-lc_p} %{!profile: -lc}}"
#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
@ -50,6 +55,7 @@ Boston, MA 02111-1307, USA. */
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} \
@ -63,9 +69,11 @@ Boston, MA 02111-1307, USA. */
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 LINK_SPEC
#define LINK_SPEC "%{h*} %{version:-v} \
%{b} %{Wl,*:%*} \
%{static:-Bstatic} \
@ -85,159 +93,16 @@ Boston, MA 02111-1307, USA. */
/* Allow #sccs in preprocessor. */
#define SCCS_DIRECTIVE
#define USER_LABEL_PREFIX "" /* For ELF the default is no underscores */
#define LOCAL_LABEL_PREFIX "."
#define IDENT_ASM_OP "\t.ident\t"
/* Output #ident as a .ident. */
#define ASM_OUTPUT_IDENT(FILE, NAME) \
fprintf (FILE, "%s\"%s\"\n", IDENT_ASM_OP, NAME);
/* Support const sections and the ctors and dtors sections for g++.
Note that there appears to be two different ways to support const
sections at the moment. You can either #define the symbol
READONLY_DATA_SECTION (giving it some code which switches to the
readonly data section) or else you can #define the symbols
EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and
SELECT_RTX_SECTION. We do both here just to be on the safe side. */
#define USE_CONST_SECTION 1
/* Support for Constructors and Destructors. */
#define READONLY_DATA_SECTION() const_section ()
/* A default list of other sections which we might be "in" at any given
time. For targets that use additional sections (e.g. .tdesc) you
should override this definition in the target-specific file which
includes this file. */
#define SUBTARGET_EXTRA_SECTIONS in_const,
/* A default list of extra section function definitions. For targets
that use additional sections (e.g. .tdesc) you should override this
definition in the target-specific file which includes this file. */
#define SUBTARGET_EXTRA_SECTION_FUNCTIONS CONST_SECTION_FUNCTION
#define CONST_SECTION_ASM_OP "\t.section\t.rodata"
#define CONST_SECTION_FUNCTION \
void \
const_section () \
{ \
if (!USE_CONST_SECTION) \
text_section (); \
else if (in_section != in_const) \
{ \
fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); \
in_section = in_const; \
} \
}
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION arm_elf_asm_named_section
/* A C statement or statements to switch to the appropriate
section for output of DECL. DECL is either a `VAR_DECL' node
or a constant of some sort. RELOC indicates whether forming
the initial value of DECL requires link-time relocations. */
#define SELECT_SECTION(DECL,RELOC,ALIGN) \
{ \
if (TREE_CODE (DECL) == STRING_CST) \
{ \
if (! flag_writable_strings) \
const_section (); \
else \
data_section (); \
} \
else if (TREE_CODE (DECL) == VAR_DECL) \
{ \
if ((flag_pic && RELOC) \
|| !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \
|| !DECL_INITIAL (DECL) \
|| (DECL_INITIAL (DECL) != error_mark_node \
&& !TREE_CONSTANT (DECL_INITIAL (DECL)))) \
data_section (); \
else \
const_section (); \
} \
else \
const_section (); \
}
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#define UNIQUE_SECTION(DECL, RELOC) \
do \
{ \
int len; \
char * name; \
char * string; \
char * prefix; \
\
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
\
if (! DECL_ONE_ONLY (DECL)) \
{ \
prefix = "."; \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
prefix = ".text."; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
prefix = ".rodata."; \
else \
prefix = ".data."; \
} \
else if (TREE_CODE (DECL) == FUNCTION_DECL) \
prefix = ".gnu.linkonce.t."; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
prefix = ".gnu.linkonce.r."; \
else \
prefix = ".gnu.linkonce.d."; \
\
len = strlen (name) + strlen (prefix); \
string = alloca (len + 1); \
sprintf (string, "%s%s", prefix, name); \
\
DECL_SECTION_NAME (DECL) = build_string (len, string); \
} \
while (0)
/* A C statement or statements to switch to the appropriate
section for output of RTX in mode MODE. RTX is some kind
of constant in RTL. The argument MODE is redundant except
in the case of a `const_int' rtx. Currently, these always
go into the const section. */
#define SELECT_RTX_SECTION(MODE,RTX,ALIGN) const_section ()
/* On svr4, we *do* have support for the .init and .fini sections, and we
can put stuff in there to be executed before and after `main'. We let
crtstuff.c and other files know this by defining the following symbols.
The definitions say how to change sections to the .init and .fini
sections. This is the same for all known svr4 assemblers. */
#define INIT_SECTION_ASM_OP "\t.section\t.init"
#define FINI_SECTION_ASM_OP "\t.section\t.fini"
/* This is how we tell the assembler that a symbol is weak. */
#define ASM_WEAKEN_LABEL(FILE,NAME) \
do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
fputc ('\n', FILE); } while (0)
/* This is how we tell the assembler that two symbols have the same value. */
#define ASM_OUTPUT_DEF(FILE,NAME1,NAME2) \
do { assemble_name (FILE, NAME1); \
fputs (" = ", FILE); \
assemble_name (FILE, NAME2); \
fputc ('\n', FILE); } while (0)
/* Make DWARF2 an option, but keep DBX as the default for now.
Use -gdwarf-2 to turn on DWARF2. */
#define DWARF2_DEBUGGING_INFO
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
/* Get the standard ELF stabs definitions. */
#include "dbxelf.h"
#include "arm/elf.h"
#include "arm/linux-gas.h"
#define ASM_OUTPUT_DEF(FILE, NAME1, NAME2) \
do \
{ \
assemble_name (FILE, NAME1); \
fputs (" = ", FILE); \
assemble_name (FILE, NAME2); \
fputc ('\n', FILE); \
} \
while (0)
/* NWFPE always understands FPA instructions. */
#undef FP_DEFAULT

View File

@ -20,24 +20,10 @@ along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/*
* We are using GAS, so stabs should work.
*/
/* This is how we tell the assembler that a symbol is weak.
GAS always supports weak symbols. */
#ifndef DBX_DEBUGGING_INFO
#define DBX_DEBUGGING_INFO 1
#endif
/*
* This is how we tell the assembler that a symbol is weak. GAS always
* supports weak symbols.
*/
#define ASM_WEAKEN_LABEL(FILE,NAME) \
do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
fputc ('\n', FILE); } while (0)
/* This is used in ASM_FILE_START */
/* This is used in ASM_FILE_START. */
#undef ARM_OS_NAME
#define ARM_OS_NAME "Linux"

View File

@ -1,5 +1,5 @@
/* Definitions for RTEMS based ARM systems using ELF
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -19,19 +19,15 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Run-time Target Specification. */
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF RTEMS)", stderr);
#define HAS_INIT_SECTION
#include "unknown-elf.h"
#undef CPP_PREDEFINES
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Darm -Darm_elf -Drtems -D__rtems__ -D__ELF__ \
-Asystem(rtems) -Acpu(arm) -Amachine(arm)"
/*#undef INVOKE_main*/
/* Get machine-independent configuration parameters for RTEMS. */
#include <rtems.h>

View File

@ -21,11 +21,17 @@ Boston, MA 02111-1307, USA. */
#define STARTFILE_SPEC "crt0.o%s"
#ifndef LIB_SPEC
#define LIB_SPEC "-lc"
#endif
#ifndef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC "-D__semi__"
#endif
#ifndef LINK_SPEC
#define LINK_SPEC "%{mbig-endian:-EB} -X"
#endif
#ifndef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/semi-hosted)", stderr);

View File

@ -1,5 +1,5 @@
/* Definitions for non-Linux based StrongARM systems using ELF
Copyright (C) 1999 Free Software Foundation, Inc.
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
Contributed by Catherine Moore <clm@cygnus.com>
This file is part of GNU CC.
@ -28,4 +28,3 @@ Boston, MA 02111-1307, USA. */
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
#endif
#include "unknown-elf.h"

View File

@ -70,10 +70,10 @@ MULTILIB_EXCEPTIONS =
# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610
# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
# If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here
# EXTRA_PARTS = crtbegin.o crtend.o
# EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
@ -82,3 +82,12 @@ INSTALL_LIBGCC = install-multilib
# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
# Disabling function inlining is a workaround for this problem.
TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
# Assemble startup files.
$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm

View File

@ -24,10 +24,7 @@ MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
MULTILIB_DIRNAMES = le be fpu soft
MULTILIB_EXCEPTIONS =
MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
# If EXTRA_MULTILIB_PARTS is not defined above then define EXTRA_PARTS here
# EXTRA_PARTS = crtbegin.o crtend.o
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
@ -36,3 +33,12 @@ INSTALL_LIBGCC = install-multilib
# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
# Disabling function inlining is a workaround for this problem.
TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
# Assemble startup files.
$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm

View File

@ -37,7 +37,8 @@ MULTILIB_EXCEPTIONS += *mhard-float/*mthumb*
MULTILIB_REDUNDANT_DIRS = interwork/thumb=thumb
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
@ -45,3 +46,12 @@ INSTALL_LIBGCC = install-multilib
# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
# Disabling function inlining is a workaround for this problem.
TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
# Assemble startup files.
$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm

View File

@ -1,5 +1,5 @@
/* Definitions for ARM running ucLinux using ELF
Copyright (C) 1999 Free Software Foundation, Inc.
Copyright (C) 1999, 2001 Free Software Foundation, Inc.
Contributed by Philip Blundell <pb@nexus.co.uk>
This file is part of GNU CC.
@ -19,8 +19,6 @@ along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "arm/linux-elf.h"
/* We don't want a PLT. */
#undef NEED_PLT_RELOC
#define NEED_PLT_RELOC 0

View File

@ -20,17 +20,13 @@ the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Run-time Target Specification. */
#ifndef TARGET_VERSION
#undef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF non-Linux old abi)", stderr);
#endif
#undef CPP_PREDEFINES
#define CPP_PREDEFINES "-Darm_oabi -Darm -Darm_elf -Acpu=arm -Amachine=arm -D__ELF__"
#ifndef ASM_SPEC
#undef ASM_SPEC
#define ASM_SPEC "-moabi %{mbig-endian:-EB} %{mcpu=*:-m%*} %{march=*:-m%*} \
%{mapcs-*:-mapcs-%*} %{mthumb-interwork:-mthumb-interwork}"
#endif
/* Now get the routine arm-elf definitions. */
#include "arm/unknown-elf.h"
#include "arm/elf.h"

View File

@ -19,6 +19,9 @@ along with this program; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* elfos.h should have already been included. Now just override
any conflicting definitions and add any extras. */
/* Run-time Target Specification. */
#ifndef TARGET_VERSION
#define TARGET_VERSION fputs (" (ARM/ELF non-Linux)", stderr);
@ -30,103 +33,25 @@ Boston, MA 02111-1307, USA. */
#endif
/* Now we define the strings used to build the spec file. */
#define STARTFILE_SPEC "crtbegin%O%s crt0%O%s"
#undef STARTFILE_SPEC
#define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC "crtend%O%s"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtend%O%s crtn%O%s"
#define USER_LABEL_PREFIX ""
#define LOCAL_LABEL_PREFIX "."
/* The __USES_INITFINI__ define is tested in newlib/libc/sys/arm/crt0.S
to see if it needs to invoked _init() and _fini(). */
#undef SUBTARGET_CPP_SPEC
#define SUBTARGET_CPP_SPEC "-D__ELF__ -D__USES_INITFINI__"
#define TEXT_SECTION_ASM_OP "\t.text"
#define INIT_SECTION_ASM_OP "\t.section\t.init"
#define FINI_SECTION_ASM_OP "\t.section\t.fini"
#define INVOKE__main
/* Debugging */
#define DWARF_DEBUGGING_INFO
#define DWARF2_DEBUGGING_INFO
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
/* Support for Constructors and Destrcutors . */
#define READONLY_DATA_SECTION rdata_section
/* A list of other sections which the compiler might be "in" at any
given time. */
#define SUBTARGET_EXTRA_SECTIONS in_rdata
/* A list of extra section function definitions. */
#define SUBTARGET_EXTRA_SECTION_FUNCTIONS RDATA_SECTION_FUNCTION
#define RDATA_SECTION_ASM_OP "\t.section .rodata"
#define RDATA_SECTION_FUNCTION \
void rdata_section PARAMS ((void)); \
\
void \
rdata_section () \
{ \
if (in_section != in_rdata) \
{ \
fprintf (asm_out_file, "%s\n", RDATA_SECTION_ASM_OP); \
in_section = in_rdata; \
} \
}
/* Switch into a generic section. */
#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
/* The ARM development system defines __main. */
#define NAME__MAIN "__gccmain"
#define SYMBOL__MAIN __gccmain
/* Return a non-zero value if DECL has a section attribute. */
#define IN_NAMED_SECTION(DECL) \
((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
&& DECL_SECTION_NAME (DECL) != NULL_TREE)
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#define UNIQUE_SECTION(DECL, RELOC) \
do \
{ \
int len; \
int sec; \
const char * name; \
char * string; \
char * prefix; \
static char * prefixes[4][2] = \
{ \
{ ".text.", ".gnu.linkonce.t." }, \
{ ".rodata.", ".gnu.linkonce.r." }, \
{ ".data.", ".gnu.linkonce.d." }, \
{ ".bss.", ".gnu.linkonce.b." } \
}; \
\
if (TREE_CODE (DECL) == FUNCTION_DECL) \
sec = 0; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
sec = 1; \
else if (DECL_INITIAL (DECL) == NULL_TREE) \
sec = 3; \
else \
sec = 2; \
\
prefix = prefixes[sec][DECL_ONE_ONLY(DECL)]; \
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
\
/* Strip off any encoding in name. */ \
STRIP_NAME_ENCODING (name, name); \
\
len = strlen (name) + strlen (prefix); \
string = alloca (len + 1); \
\
sprintf (string, "%s%s", prefix, name); \
\
DECL_SECTION_NAME (DECL) = build_string (len, string); \
} \
while (0)
#undef ASM_OUTPUT_ALIGNED_BSS
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
do \
@ -169,5 +94,3 @@ rdata_section () \
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm7tdmi
#endif
/* Now get the routine arm-elf definitions. */
#include "elf.h"

View File

@ -1,5 +1,5 @@
/* Definitions for XScale architectures using ELF
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
Contributed by Catherine Moore <clm@cygnus.com>
This file is part of GNU CC.
@ -34,5 +34,3 @@ Boston, MA 02111-1307, USA. */
#define MULTILIB_DEFAULTS \
{ "mlittle-endian", "mno-thumb-interwork", "marm" }
#endif
#include "unknown-elf.h"