0
|
1 /* elf.h for Sunplus S+CORE processor
|
|
2 Copyright (C) 2005, 2007 Free Software Foundation, Inc.
|
|
3
|
|
4 This file is part of GCC.
|
|
5
|
|
6 GCC is free software; you can redistribute it and/or modify it
|
|
7 under the terms of the GNU General Public License as published
|
|
8 by the Free Software Foundation; either version 3, or (at your
|
|
9 option) any later version.
|
|
10
|
|
11 GCC is distributed in the hope that it will be useful, but WITHOUT
|
|
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
14 License for more details.
|
|
15
|
|
16 You should have received a copy of the GNU General Public License
|
|
17 along with GCC; see the file COPYING3. If not see
|
|
18 <http://www.gnu.org/licenses/>. */
|
|
19
|
|
20 #define OBJECT_FORMAT_ELF
|
|
21
|
|
22 /* Biggest alignment supported by the object file format of this machine. */
|
|
23 #undef MAX_OFILE_ALIGNMENT
|
|
24 #define MAX_OFILE_ALIGNMENT (32768 * 8)
|
|
25
|
|
26 /* Switch into a generic section. */
|
|
27 #undef TARGET_ASM_NAMED_SECTION
|
|
28 #define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
|
|
29
|
|
30 /* The following macro defines the format used to output the second
|
|
31 operand of the .type assembler directive. */
|
|
32 #define TYPE_OPERAND_FMT "@%s"
|
|
33
|
|
34 #undef TYPE_ASM_OP
|
|
35 #define TYPE_ASM_OP "\t.type\t"
|
|
36
|
|
37 #undef SIZE_ASM_OP
|
|
38 #define SIZE_ASM_OP "\t.size\t"
|
|
39
|
|
40 /* A c expression whose value is a string containing the
|
|
41 assembler operation to identify the following data as
|
|
42 uninitialized global data. */
|
|
43 #ifndef BSS_SECTION_ASM_OP
|
|
44 #define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
|
45 #endif
|
|
46
|
|
47 #ifndef ASM_OUTPUT_ALIGNED_BSS
|
|
48 #define ASM_OUTPUT_ALIGNED_BSS asm_output_aligned_bss
|
|
49 #endif
|
|
50
|
|
51 #define ASM_OUTPUT_DEF(FILE, LABEL1, LABEL2) \
|
|
52 do { \
|
|
53 fputc ('\t', FILE); \
|
|
54 assemble_name (FILE, LABEL1); \
|
|
55 fputs (" = ", FILE); \
|
|
56 assemble_name (FILE, LABEL2); \
|
|
57 fputc ('\n', FILE); \
|
|
58 } while (0)
|
|
59
|
|
60
|
|
61 /* This is how we tell the assembler that a symbol is weak. */
|
|
62 #undef ASM_WEAKEN_LABEL
|
|
63 #define ASM_WEAKEN_LABEL(FILE, NAME) ASM_OUTPUT_WEAK_ALIAS (FILE, NAME, 0)
|
|
64
|
|
65 #define ASM_OUTPUT_WEAK_ALIAS(FILE, NAME, VALUE) \
|
|
66 do { \
|
|
67 fputs ("\t.weak\t", FILE); \
|
|
68 assemble_name (FILE, NAME); \
|
|
69 if (VALUE) \
|
|
70 { \
|
|
71 fputc (' ', FILE); \
|
|
72 assemble_name (FILE, VALUE); \
|
|
73 } \
|
|
74 fputc ('\n', FILE); \
|
|
75 } while (0)
|
|
76
|
|
77 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
|
|
78
|
|
79 /* On elf, we *do* have support for the .init and .fini sections, and we
|
|
80 can put stuff in there to be executed before and after `main'. We let
|
|
81 crtstuff.c and other files know this by defining the following symbols.
|
|
82 The definitions say how to change sections to the .init and .fini
|
|
83 sections. This is the same for all known elf assemblers. */
|
|
84 #undef INIT_SECTION_ASM_OP
|
|
85 #define INIT_SECTION_ASM_OP "\t.section\t.init"
|
|
86 #undef FINI_SECTION_ASM_OP
|
|
87 #define FINI_SECTION_ASM_OP "\t.section\t.fini"
|
|
88
|
|
89 /* Don't set the target flags, this is done by the linker script */
|
|
90 #undef LIB_SPEC
|
|
91 #define LIB_SPEC ""
|
|
92
|
|
93 #undef STARTFILE_SPEC
|
|
94 #define STARTFILE_SPEC "crti%O%s crtbegin%O%s"
|
|
95
|
|
96 #undef ENDFILE_SPEC
|
|
97 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"
|
|
98
|
|
99 /* We support #pragma. */
|
|
100 #define HANDLE_SYSV_PRAGMA 1
|