Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/alpha/elf.h @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 1830386684a0 |
children |
rev | line source |
---|---|
0 | 1 /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF. |
145 | 2 Copyright (C) 1996-2020 Free Software Foundation, Inc. |
0 | 3 Contributed by Richard Henderson (rth@tamu.edu). |
4 | |
5 This file is part of GCC. | |
6 | |
7 GCC is free software; you can redistribute it and/or modify | |
8 it under the terms of the GNU General Public License as published by | |
9 the Free Software Foundation; either version 3, or (at your option) | |
10 any later version. | |
11 | |
12 GCC is distributed in the hope that it will be useful, | |
13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 GNU General Public License for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with GCC; see the file COPYING3. If not see | |
19 <http://www.gnu.org/licenses/>. */ | |
20 | |
21 #undef CC1_SPEC | |
22 #define CC1_SPEC "%{G*}" | |
23 | |
24 #undef ASM_SPEC | |
111 | 25 #define ASM_SPEC "%{G*} %{relax:-relax} %{!gstabs*:-no-mdebug}%{gstabs*:-mdebug} %{mcpu=*:-m%*}" |
0 | 26 |
111 | 27 /* Do not output a .file directive at the beginning of the input file. */ |
28 | |
29 #undef TARGET_ASM_FILE_START_FILE_DIRECTIVE | |
30 #define TARGET_ASM_FILE_START_FILE_DIRECTIVE false | |
0 | 31 |
111 | 32 /* This is how to output an assembler line |
33 that says to advance the location counter | |
34 to a multiple of 2**LOG bytes. */ | |
0 | 35 |
111 | 36 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ |
37 if ((LOG) != 0) \ | |
38 fprintf (FILE, "\t.align %d\n", LOG); | |
0 | 39 |
40 /* This says how to output assembler code to declare an | |
41 uninitialized internal linkage data object. Under SVR4, | |
42 the linker seems to want the alignment of data objects | |
43 to depend on their types. We do exactly that here. */ | |
44 | |
45 #undef ASM_OUTPUT_ALIGNED_LOCAL | |
46 #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ | |
47 do { \ | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
63
diff
changeset
|
48 if ((SIZE) <= (unsigned HOST_WIDE_INT) g_switch_value) \ |
0 | 49 switch_to_section (sbss_section); \ |
50 else \ | |
51 switch_to_section (bss_section); \ | |
52 ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ | |
53 if (!flag_inhibit_size_directive) \ | |
54 ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE); \ | |
55 ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT)); \ | |
56 ASM_OUTPUT_LABEL(FILE, NAME); \ | |
57 ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1); \ | |
58 } while (0) | |
59 | |
60 /* This says how to output assembler code to declare an | |
61 uninitialized external linkage data object. */ | |
62 | |
63 #undef ASM_OUTPUT_ALIGNED_BSS | |
64 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ | |
65 do { \ | |
66 ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN); \ | |
67 } while (0) | |
68 | |
69 #undef BSS_SECTION_ASM_OP | |
70 #define BSS_SECTION_ASM_OP "\t.section\t.bss" | |
71 #undef SBSS_SECTION_ASM_OP | |
72 #define SBSS_SECTION_ASM_OP "\t.section\t.sbss,\"aw\"" | |
73 #undef SDATA_SECTION_ASM_OP | |
74 #define SDATA_SECTION_ASM_OP "\t.section\t.sdata,\"aw\"" | |
75 | |
76 /* This is how we tell the assembler that two symbols have the same value. */ | |
77 | |
78 #undef ASM_OUTPUT_DEF | |
79 #define ASM_OUTPUT_DEF(FILE, ALIAS, NAME) \ | |
80 do { \ | |
81 assemble_name(FILE, ALIAS); \ | |
82 fputs(" = ", FILE); \ | |
83 assemble_name(FILE, NAME); \ | |
84 fputc('\n', FILE); \ | |
85 } while (0) | |
86 | |
87 #undef ASM_OUTPUT_DEF_FROM_DECLS | |
88 #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET) \ | |
89 do { \ | |
90 const char *alias = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \ | |
91 const char *name = IDENTIFIER_POINTER (TARGET); \ | |
92 if (TREE_CODE (DECL) == FUNCTION_DECL) \ | |
93 { \ | |
94 fputc ('$', FILE); \ | |
95 assemble_name (FILE, alias); \ | |
96 fputs ("..ng = $", FILE); \ | |
97 assemble_name (FILE, name); \ | |
98 fputs ("..ng\n", FILE); \ | |
99 } \ | |
111 | 100 ASM_OUTPUT_DEF (FILE, alias, name); \ |
0 | 101 } while (0) |
102 | |
111 | 103 /* This variable should be set to 'true' if the target ABI requires |
104 unwinding tables even when exceptions are not used. */ | |
105 #define TARGET_UNWIND_TABLES_DEFAULT true | |
106 | |
0 | 107 /* Select a format to encode pointers in exception handling data. CODE |
108 is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is | |
109 true if the symbol may be affected by dynamic relocations. | |
110 | |
111 Since application size is already constrained to <2GB by the form of | |
112 the ldgp relocation, we can use a 32-bit pc-relative relocation to | |
113 static data. Dynamic data is accessed indirectly to allow for read | |
114 only EH sections. */ | |
115 #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ | |
116 (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4) | |
117 | |
118 /* If defined, a C statement to be executed just prior to the output of | |
119 assembler code for INSN. */ | |
120 #define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \ | |
121 (alpha_this_literal_sequence_number = 0, \ | |
122 alpha_this_gpdisp_sequence_number = 0) | |
123 extern int alpha_this_literal_sequence_number; | |
124 extern int alpha_this_gpdisp_sequence_number; | |
125 | |
126 /* Since the bits of the _init and _fini function is spread across | |
127 many object files, each potentially with its own GP, we must assume | |
128 we need to load our GP. Further, the .init/.fini section can | |
129 easily be more than 4MB away from the function to call so we can't | |
130 use bsr. */ | |
131 #define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC) \ | |
132 asm (SECTION_OP "\n" \ | |
133 " br $29,1f\n" \ | |
134 "1: ldgp $29,0($29)\n" \ | |
135 " unop\n" \ | |
136 " jsr $26," USER_LABEL_PREFIX #FUNC "\n" \ | |
137 " .align 3\n" \ | |
138 " .previous"); | |
139 | |
140 /* If we have the capability create headers for efficient EH lookup. | |
141 As of Jan 2002, only glibc 2.2.4 can actually make use of this, but | |
142 I imagine that other systems will catch up. In the meantime, it | |
143 doesn't harm to make sure that the data exists to be used later. */ | |
144 #if defined(HAVE_LD_EH_FRAME_HDR) | |
111 | 145 #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} " |
0 | 146 #endif |