190075Sobrien/* Definitions of target machine for GNU compiler.
290075Sobrien   For ARM with COFF object format.
3169689Skan   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005
490075Sobrien   Free Software Foundation, Inc.
590075Sobrien   Contributed by Doug Evans (devans@cygnus.com).
690075Sobrien
7132718Skan   This file is part of GCC.
890075Sobrien
9132718Skan   GCC is free software; you can redistribute it and/or modify it
10132718Skan   under the terms of the GNU General Public License as published
11132718Skan   by the Free Software Foundation; either version 2, or (at your
12132718Skan   option) any later version.
1390075Sobrien
14132718Skan   GCC is distributed in the hope that it will be useful, but WITHOUT
15132718Skan   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16132718Skan   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17132718Skan   License for more details.
1890075Sobrien
19132718Skan   You should have received a copy of the GNU General Public License
20132718Skan   along with GCC; see the file COPYING.  If not, write to
21169689Skan   the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22169689Skan   Boston, MA 02110-1301, USA.  */
2390075Sobrien
24132718Skan/* Note - it is important that this definition matches the one in tcoff.h.  */
2590075Sobrien#undef  USER_LABEL_PREFIX
2690075Sobrien#define USER_LABEL_PREFIX "_"
2790075Sobrien
2890075Sobrien
2990075Sobrien/* Run-time Target Specification.  */
3090075Sobrien#undef  TARGET_VERSION
3190075Sobrien#define TARGET_VERSION fputs (" (ARM/coff)", stderr)
3290075Sobrien
33169689Skan#undef  TARGET_DEFAULT_FLOAT_ABI
34169689Skan#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
35169689Skan
3690075Sobrien#undef  TARGET_DEFAULT
37169689Skan#define TARGET_DEFAULT (MASK_APCS_FRAME)
3890075Sobrien
3990075Sobrien#ifndef MULTILIB_DEFAULTS
4090075Sobrien#define MULTILIB_DEFAULTS \
41169689Skan  { "marm", "mlittle-endian", "msoft-float", "mno-thumb-interwork" }
4290075Sobrien#endif
4390075Sobrien
4490075Sobrien/* This is COFF, but prefer stabs.  */
45117395Skan#define SDB_DEBUGGING_INFO 1
4690075Sobrien
4790075Sobrien#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
4890075Sobrien
4990075Sobrien
50132718Skan#define TARGET_ASM_FILE_START_APP_OFF true
5190075Sobrien
5290075Sobrien/* Switch into a generic section.  */
5390075Sobrien#define TARGET_ASM_NAMED_SECTION  default_coff_asm_named_section
5490075Sobrien
5590075Sobrien/* Support the ctors/dtors and other sections.  */
5690075Sobrien
5790075Sobrien#undef INIT_SECTION_ASM_OP
5890075Sobrien
5990075Sobrien/* Define this macro if jump tables (for `tablejump' insns) should be
6090075Sobrien   output in the text section, along with the assembler instructions.
6190075Sobrien   Otherwise, the readonly data section is used.  */
6296263Sobrien/* We put ARM jump tables in the text section, because it makes the code
6396263Sobrien   more efficient, but for Thumb it's better to put them out of band.  */
6496263Sobrien#define JUMP_TABLES_IN_TEXT_SECTION (TARGET_ARM)
6590075Sobrien
66117395Skan#undef  READONLY_DATA_SECTION_ASM_OP
67117395Skan#define READONLY_DATA_SECTION_ASM_OP	"\t.section .rdata"
6890075Sobrien#undef  CTORS_SECTION_ASM_OP
6990075Sobrien#define CTORS_SECTION_ASM_OP	"\t.section .ctors,\"x\""
7090075Sobrien#undef  DTORS_SECTION_ASM_OP
7190075Sobrien#define DTORS_SECTION_ASM_OP	"\t.section .dtors,\"x\""
7290075Sobrien
7390075Sobrien/* Support the ctors/dtors sections for g++.  */
7490075Sobrien
7590075Sobrien/* __CTOR_LIST__ and __DTOR_LIST__ must be defined by the linker script.  */
7690075Sobrien#define CTOR_LISTS_DEFINED_EXTERNALLY
7790075Sobrien
7890075Sobrien#undef DO_GLOBAL_CTORS_BODY
7990075Sobrien#undef DO_GLOBAL_DTORS_BODY
8090075Sobrien
8190075Sobrien/* The ARM development system defines __main.  */
8290075Sobrien#define NAME__MAIN  "__gccmain"
8390075Sobrien#define SYMBOL__MAIN __gccmain
8490075Sobrien
8590075Sobrien#define SUPPORTS_INIT_PRIORITY 0
86