1 |
38 |
julius |
/* 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
|