1 /* Operating system specific defines to be used when targeting GCC for some
2 embedded system running pSOS. We assume GNU tools with ELF, but
3 try to maintain compatibility with the MRI tools. Based on svr4.h.
4 Copyright (C) 1996, 1999, 2000 Free Software Foundation, Inc.
6 This file is part of GNU CC.
8 GNU CC is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2, or (at your option)
13 GNU CC is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with GNU CC; see the file COPYING. If not, write to
20 the Free Software Foundation, 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA.
23 To use this file, make up a file with a name like:
27 where ????? is replaced by the name of the basic hardware that you
28 are targeting for. Then, in the file ?????-psos.h, put something
34 followed by any really system-specific defines (or overrides of
35 defines) which you find that you need.
39 /* Define a symbol indicating that we are using psos.h. */
44 /* All pSOS targets currently use the ELF object file format. */
46 #define OBJECT_FORMAT_ELF
49 /* Provide a NULL STARTFILE_SPEC. The startfile cannot be specified
50 here because it depends on the architecture (e.g. 68K), the
51 board-support package (e.g. M162) and the run-time configuration
52 (e.g. application vs. ram-image vs. rom-image). Specify the
53 startfile in a linker-script created from the generic
54 architecture-specific linker-scripts. */
57 #define STARTFILE_SPEC ""
60 /* Predefined macros (independent of processor type). */
62 #define CPP_PREDEFINES "-Dpsos"
65 /* Implicit library calls should use ANSI memcpy rather than BSD
68 #define TARGET_MEM_FUNCTIONS
70 /* This is how we tell the assembler that a symbol is weak. */
72 #define ASM_WEAKEN_LABEL(FILE,NAME) \
73 do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
74 fputc ('\n', FILE); } while (0)
76 /* Switch into a generic section. */
78 #define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \
79 fprintf (FILE, ".section\t%s,\"%s\",@progbits\n", NAME, \
80 (DECL) && TREE_CODE (DECL) == FUNCTION_DECL ? "ax" : \
81 (DECL) && DECL_READONLY_SECTION (DECL, RELOC) ? "a" : "aw")
84 /* Define the pseudo-ops used to switch to the .ctors and .dtors
87 #define CTORS_SECTION_ASM_OP "\t.section\t.ctors,\"aw\""
88 #define DTORS_SECTION_ASM_OP "\t.section\t.dtors,\"aw\""
90 /* A default list of other sections which we might be "in" at any given
91 time. For targets that use additional sections (e.g. .tdesc) you
92 should override this definition in the target-specific file which
93 includes this file. */
96 #define EXTRA_SECTIONS in_ctors, in_dtors
98 /* A default list of extra section function definitions. For targets
99 that use additional sections (e.g. .tdesc) you should override this
100 definition in the target-specific file which includes this file. */
102 #undef EXTRA_SECTION_FUNCTIONS
103 #define EXTRA_SECTION_FUNCTIONS \
104 CTORS_SECTION_FUNCTION \
105 DTORS_SECTION_FUNCTION
107 #define CTORS_SECTION_FUNCTION \
111 if (in_section != in_ctors) \
113 fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP); \
114 in_section = in_ctors; \
118 #define DTORS_SECTION_FUNCTION \
122 if (in_section != in_dtors) \
124 fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP); \
125 in_section = in_dtors; \
129 /* A C statement (sans semicolon) to output an element in the table of
130 global constructors. */
133 #define INT_ASM_OP "\t.long\t"
135 #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \
138 fprintf (FILE, "%s", INT_ASM_OP); \
139 assemble_name (FILE, NAME); \
140 fprintf (FILE, "\n"); \
143 /* A C statement (sans semicolon) to output an element in the table of
144 global destructors. */
146 #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \
149 fprintf (FILE, "%s", INT_ASM_OP); \
150 assemble_name (FILE, NAME); \
151 fprintf (FILE, "\n"); \
155 /* Use DBX debugging info by default. */
157 #ifndef PREFERRED_DEBUGGING_TYPE
158 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
161 /* For pSOS we use DBX debugging info. */
163 #define DBX_DEBUGGING_INFO