diff options
author | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-27 11:13:39 +0000 |
---|---|---|
committer | nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-10-27 11:13:39 +0000 |
commit | 6cd477622327a0d6cbb48d69b5f9d80fafe97b6b (patch) | |
tree | d27a78ca988127b3ee084a5ed05f914db234fcb9 /gcc/config/arm/coff.h | |
parent | 01e459635681dc101ac28648960d2251047428e0 (diff) | |
download | gcc-6cd477622327a0d6cbb48d69b5f9d80fafe97b6b.tar.gz |
Appleid arm-elf contribution from Philip Blundell and merged with Catherine
Moore's work.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23364 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/coff.h')
-rw-r--r-- | gcc/config/arm/coff.h | 54 |
1 files changed, 25 insertions, 29 deletions
diff --git a/gcc/config/arm/coff.h b/gcc/config/arm/coff.h index 4e568cb7941..6db0c1afd06 100644 --- a/gcc/config/arm/coff.h +++ b/gcc/config/arm/coff.h @@ -1,6 +1,6 @@ /* Definitions of target machine for GNU compiler, for ARM with COFF obj format. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Contributed by Doug Evans (dje@cygnus.com). This file is part of GNU CC. @@ -21,27 +21,25 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "arm/semi.h" +#include "arm/aout.h" /* Run-time Target Specification. */ -#undef TARGET_VERSION +#undef TARGET_VERSION #define TARGET_VERSION fputs (" (ARM/coff)", stderr) -/* ??? Maybe use --with{enable?}-fpu or some such to make hardware floating - point the default. NOT --nfp! --with{enable?} is supposed to replace it - (right?), so let's stop using it. */ -#undef TARGET_DEFAULT +#undef TARGET_DEFAULT #define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32) -/* ??? Is a big-endian default intended to be supported? */ -#if 0 /*TARGET_CPU_DEFAULT & ARM_FLAG_BIG_END*/ -#define MULTILIB_DEFAULTS { "mbig-endian" } -#else -#define MULTILIB_DEFAULTS { "mlittle-endian" } -#endif +#define MULTILIB_DEFAULTS { "mlittle-endian", "msoft-float", "mapcs-32" } -/* ??? Does arm.h really need to set this to 32? */ -#undef STRUCTURE_SIZE_BOUNDARY -#define STRUCTURE_SIZE_BOUNDARY 8 +/* Setting this to 32 produces more efficient code, but the value set in previous + versions of this toolchain was 8, which produces more compact structures. The + command line option -mstructure_size_boundary=<n> can be used to change this + value. */ +#undef STRUCTURE_SIZE_BOUNDARY +#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary + +extern int arm_structure_size_boundary; /* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS is a valid machine specific attribute for DECL. @@ -57,12 +55,6 @@ arm_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS) #include "dbxcoff.h" -#undef LOCAL_LABEL_PREFIX -#define LOCAL_LABEL_PREFIX "." - -#undef USER_LABEL_PREFIX -#define USER_LABEL_PREFIX "" - /* A C statement to output assembler commands which will identify the object file as having been compiled with GNU CC (or another GNU compiler). */ @@ -71,7 +63,8 @@ arm_valid_machine_decl_attribute (DECL, ATTRIBUTES, IDENTIFIER, ARGS) Also, when using stabs, gcc2_compiled must be a stabs entry, not an ordinary symbol, or gdb won't see it. The stabs entry must be before the N_SO in order for gdb to find it. */ -#define ASM_IDENTIFY_GCC(STREAM) +#define ASM_IDENTIFY_GCC(STREAM) \ + fprintf (STREAM, "%sgcc2_compiled.:\n", LOCAL_LABEL_PREFIX ) /* This outputs a lot of .req's to define alias for various registers. Let's try to avoid this. */ @@ -106,14 +99,13 @@ do { \ Otherwise, the readonly data section is used. */ #define JUMP_TABLES_IN_TEXT_SECTION 1 -#undef READONLY_DATA_SECTION +#undef READONLY_DATA_SECTION #define READONLY_DATA_SECTION rdata_section -#undef RDATA_SECTION_ASM_OP +#undef RDATA_SECTION_ASM_OP #define RDATA_SECTION_ASM_OP "\t.section .rdata" - -#undef CTORS_SECTION_ASM_OP +#undef CTORS_SECTION_ASM_OP #define CTORS_SECTION_ASM_OP "\t.section .ctors,\"x\"" -#undef DTORS_SECTION_ASM_OP +#undef DTORS_SECTION_ASM_OP #define DTORS_SECTION_ASM_OP "\t.section .dtors,\"x\"" /* A list of other sections which the compiler might be "in" at any @@ -200,8 +192,12 @@ do { \ #undef DO_GLOBAL_CTORS_BODY #undef DO_GLOBAL_DTORS_BODY -/* The ARM development system has atexit and doesn't have _exit, - so define this for now. */ +/* If you don't define HAVE_ATEXIT, and the object file format/OS/whatever + does not support constructors/destructors, then gcc implements destructors + by defining its own exit function, which calls the destructors. This gcc + exit function overrides the C library's exit function, and this can cause + all kinds of havoc if the C library has a non-trivial exit function. You + really don't want to use the exit function in libgcc2.c. */ #define HAVE_ATEXIT /* The ARM development system defines __main. */ |