annotate gcc/config/powerpcspe/xcoff.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Definitions of target machine for GNU compiler,
kono
parents:
diff changeset
2 for some generic XCOFF file format
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 Copyright (C) 2001-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 This file is part of GCC.
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 GCC is free software; you can redistribute it and/or modify it
kono
parents:
diff changeset
8 under the terms of the GNU General Public License as published
kono
parents:
diff changeset
9 by the Free Software Foundation; either version 3, or (at your
kono
parents:
diff changeset
10 option) any later version.
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 GCC is distributed in the hope that it will be useful, but WITHOUT
kono
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
kono
parents:
diff changeset
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
kono
parents:
diff changeset
15 License for more details.
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
18 along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
19 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 #define TARGET_OBJECT_FORMAT OBJECT_XCOFF
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 /* The RS/6000 uses the XCOFF format. */
kono
parents:
diff changeset
24 #define XCOFF_DEBUGGING_INFO 1
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 /* Define if the object format being used is COFF or a superset. */
kono
parents:
diff changeset
27 #define OBJECT_FORMAT_COFF
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 /* Define the magic numbers that we recognize as COFF.
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 AIX 4.3 adds U803XTOCMAGIC (0757) for 64-bit objects and AIX V5 adds
kono
parents:
diff changeset
32 U64_TOCMAGIC (0767), but collect2.c does not include files in the
kono
parents:
diff changeset
33 correct order to conditionally define the symbolic name in this macro.
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 The AIX linker accepts import/export files as object files,
kono
parents:
diff changeset
36 so accept "#!" (0x2321) magic number. */
kono
parents:
diff changeset
37 #define MY_ISCOFF(magic) \
kono
parents:
diff changeset
38 ((magic) == U802WRMAGIC || (magic) == U802ROMAGIC \
kono
parents:
diff changeset
39 || (magic) == U802TOCMAGIC || (magic) == 0757 || (magic) == 0767 \
kono
parents:
diff changeset
40 || (magic) == 0x2321)
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 /* We don't have GAS for the RS/6000 yet, so don't write out special
kono
parents:
diff changeset
43 .stabs in cc1plus. */
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 #define FASCIST_ASSEMBLER
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 /* We define this to prevent the name mangler from putting dollar signs into
kono
parents:
diff changeset
48 function names. */
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 #define NO_DOLLAR_IN_LABEL
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 /* We define this to 0 so that gcc will never accept a dollar sign in a
kono
parents:
diff changeset
53 variable name. This is needed because the AIX assembler will not accept
kono
parents:
diff changeset
54 dollar signs. */
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 #define DOLLARS_IN_IDENTIFIERS 0
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 /* AIX .align pseudo-op accept value from 0 to 12, corresponding to
kono
parents:
diff changeset
59 log base 2 of the alignment in bytes; 12 = 4096 bytes = 32768 bits. */
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 #define MAX_OFILE_ALIGNMENT 32768
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 /* Default alignment factor for csect directives, chosen to honor
kono
parents:
diff changeset
64 BIGGEST_ALIGNMENT. */
kono
parents:
diff changeset
65 #define XCOFF_CSECT_DEFAULT_ALIGNMENT_STR "4"
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 /* Return nonzero if this entry is to be written into the constant
kono
parents:
diff changeset
68 pool in a special way. We do so if this is a SYMBOL_REF, LABEL_REF
kono
parents:
diff changeset
69 or a CONST containing one of them. If -mfp-in-toc (the default),
kono
parents:
diff changeset
70 we also do this for floating-point constants. We actually can only
kono
parents:
diff changeset
71 do this if the FP formats of the target and host machines are the
kono
parents:
diff changeset
72 same, but we can't check that since not every file that uses these
kono
parents:
diff changeset
73 target macros includes real.h. We also do this when we can write the
kono
parents:
diff changeset
74 entry into the TOC and the entry is not larger than a TOC entry. */
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 #define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE) \
kono
parents:
diff changeset
77 (TARGET_TOC \
kono
parents:
diff changeset
78 && (GET_CODE (X) == SYMBOL_REF \
kono
parents:
diff changeset
79 || (GET_CODE (X) == CONST && GET_CODE (XEXP (X, 0)) == PLUS \
kono
parents:
diff changeset
80 && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF) \
kono
parents:
diff changeset
81 || GET_CODE (X) == LABEL_REF \
kono
parents:
diff changeset
82 || (GET_CODE (X) == CONST_INT \
kono
parents:
diff changeset
83 && GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode)) \
kono
parents:
diff changeset
84 || (GET_CODE (X) == CONST_DOUBLE \
kono
parents:
diff changeset
85 && (TARGET_MINIMAL_TOC \
kono
parents:
diff changeset
86 || (SCALAR_FLOAT_MODE_P (GET_MODE (X)) \
kono
parents:
diff changeset
87 && ! TARGET_NO_FP_IN_TOC)))))
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 #undef TARGET_DEBUG_UNWIND_INFO
kono
parents:
diff changeset
90 #define TARGET_DEBUG_UNWIND_INFO rs6000_xcoff_debug_unwind_info
kono
parents:
diff changeset
91 #define TARGET_ASM_OUTPUT_ANCHOR rs6000_xcoff_asm_output_anchor
kono
parents:
diff changeset
92 #define TARGET_ASM_GLOBALIZE_DECL_NAME rs6000_xcoff_asm_globalize_decl_name
kono
parents:
diff changeset
93 #define TARGET_ASM_GLOBALIZE_LABEL rs6000_xcoff_asm_globalize_label
kono
parents:
diff changeset
94 #define TARGET_ASM_INIT_SECTIONS rs6000_xcoff_asm_init_sections
kono
parents:
diff changeset
95 #define TARGET_ASM_RELOC_RW_MASK rs6000_xcoff_reloc_rw_mask
kono
parents:
diff changeset
96 #define TARGET_ASM_NAMED_SECTION rs6000_xcoff_asm_named_section
kono
parents:
diff changeset
97 #define TARGET_ASM_SELECT_SECTION rs6000_xcoff_select_section
kono
parents:
diff changeset
98 #define TARGET_ASM_SELECT_RTX_SECTION rs6000_xcoff_select_rtx_section
kono
parents:
diff changeset
99 #define TARGET_ASM_UNIQUE_SECTION rs6000_xcoff_unique_section
kono
parents:
diff changeset
100 #define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
kono
parents:
diff changeset
101 #define TARGET_STRIP_NAME_ENCODING rs6000_xcoff_strip_name_encoding
kono
parents:
diff changeset
102 #define TARGET_SECTION_TYPE_FLAGS rs6000_xcoff_section_type_flags
kono
parents:
diff changeset
103 #ifdef HAVE_AS_TLS
kono
parents:
diff changeset
104 #define TARGET_ENCODE_SECTION_INFO rs6000_xcoff_encode_section_info
kono
parents:
diff changeset
105 #endif
kono
parents:
diff changeset
106 #define ASM_OUTPUT_ALIGNED_DECL_COMMON rs6000_xcoff_asm_output_aligned_decl_common
kono
parents:
diff changeset
107
kono
parents:
diff changeset
108 /* FP save and restore routines. */
kono
parents:
diff changeset
109 #define SAVE_FP_PREFIX "._savef"
kono
parents:
diff changeset
110 #define SAVE_FP_SUFFIX ""
kono
parents:
diff changeset
111 #define RESTORE_FP_PREFIX "._restf"
kono
parents:
diff changeset
112 #define RESTORE_FP_SUFFIX ""
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 /* Function name to call to do profiling. */
kono
parents:
diff changeset
115 #undef RS6000_MCOUNT
kono
parents:
diff changeset
116 #define RS6000_MCOUNT ".__mcount"
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 /* This outputs NAME to FILE up to the first null or '['. */
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 #define RS6000_OUTPUT_BASENAME(FILE, NAME) \
kono
parents:
diff changeset
121 assemble_name ((FILE), (*targetm.strip_name_encoding) (NAME))
kono
parents:
diff changeset
122
kono
parents:
diff changeset
123 /* This is how to output the definition of a user-level label named NAME,
kono
parents:
diff changeset
124 such as the label on a static function or variable NAME. */
kono
parents:
diff changeset
125
kono
parents:
diff changeset
126 #define ASM_OUTPUT_LABEL(FILE,NAME) \
kono
parents:
diff changeset
127 do { RS6000_OUTPUT_BASENAME (FILE, NAME); fputs (":\n", FILE); } while (0)
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 /* This is how to output a command to make the user-level label named NAME
kono
parents:
diff changeset
130 defined for reference from other files. */
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 /* Globalizing directive for a label. */
kono
parents:
diff changeset
133 #define GLOBAL_ASM_OP "\t.globl "
kono
parents:
diff changeset
134
kono
parents:
diff changeset
135 #undef TARGET_ASM_FILE_START
kono
parents:
diff changeset
136 #define TARGET_ASM_FILE_START rs6000_xcoff_file_start
kono
parents:
diff changeset
137 #define TARGET_ASM_FILE_END rs6000_xcoff_file_end
kono
parents:
diff changeset
138 #undef TARGET_ASM_FILE_START_FILE_DIRECTIVE
kono
parents:
diff changeset
139 #define TARGET_ASM_FILE_START_FILE_DIRECTIVE false
kono
parents:
diff changeset
140
kono
parents:
diff changeset
141 /* This macro produces the initial definition of a function name. */
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 #undef ASM_DECLARE_FUNCTION_NAME
kono
parents:
diff changeset
144 #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
kono
parents:
diff changeset
145 rs6000_xcoff_declare_function_name ((FILE), (NAME), (DECL))
kono
parents:
diff changeset
146 #undef ASM_DECLARE_OBJECT_NAME
kono
parents:
diff changeset
147 #define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
kono
parents:
diff changeset
148 rs6000_xcoff_declare_object_name ((FILE), (NAME), (DECL))
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 /* Output a reference to SYM on FILE. */
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 #define ASM_OUTPUT_SYMBOL_REF(FILE, SYM) \
kono
parents:
diff changeset
153 rs6000_output_symbol_ref (FILE, SYM)
kono
parents:
diff changeset
154
kono
parents:
diff changeset
155 /* This says how to output an external.
kono
parents:
diff changeset
156 Dollar signs are converted to underscores. */
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 #undef ASM_OUTPUT_EXTERNAL
kono
parents:
diff changeset
159 #define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \
kono
parents:
diff changeset
160 { char *buffer = (char *) alloca (strlen (NAME) + 1); \
kono
parents:
diff changeset
161 char *p; \
kono
parents:
diff changeset
162 int dollar_inside = 0; \
kono
parents:
diff changeset
163 strcpy (buffer, NAME); \
kono
parents:
diff changeset
164 p = strchr (buffer, '$'); \
kono
parents:
diff changeset
165 while (p) { \
kono
parents:
diff changeset
166 *p = '_'; \
kono
parents:
diff changeset
167 dollar_inside++; \
kono
parents:
diff changeset
168 p = strchr (p + 1, '$'); \
kono
parents:
diff changeset
169 } \
kono
parents:
diff changeset
170 if (dollar_inside) { \
kono
parents:
diff changeset
171 fputs ("\t.extern .", FILE); \
kono
parents:
diff changeset
172 RS6000_OUTPUT_BASENAME (FILE, buffer); \
kono
parents:
diff changeset
173 putc ('\n', FILE); \
kono
parents:
diff changeset
174 fprintf (FILE, "\t.rename .%s,\".%s\"\n", buffer, NAME); \
kono
parents:
diff changeset
175 } \
kono
parents:
diff changeset
176 }
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 /* This is how to output a reference to a user-level label named NAME.
kono
parents:
diff changeset
179 `assemble_name' uses this. */
kono
parents:
diff changeset
180
kono
parents:
diff changeset
181 #define ASM_OUTPUT_LABELREF(FILE,NAME) \
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
182 asm_fprintf ((FILE), "%U%s", rs6000_xcoff_strip_dollar (NAME))
111
kono
parents:
diff changeset
183
kono
parents:
diff changeset
184 /* This is how to output an internal label prefix. rs6000.c uses this
kono
parents:
diff changeset
185 when generating traceback tables. */
kono
parents:
diff changeset
186
kono
parents:
diff changeset
187 #define ASM_OUTPUT_INTERNAL_LABEL_PREFIX(FILE,PREFIX) \
kono
parents:
diff changeset
188 fprintf (FILE, "%s..", PREFIX)
kono
parents:
diff changeset
189
kono
parents:
diff changeset
190 /* This is how to output a label for a jump table. Arguments are the same as
kono
parents:
diff changeset
191 for (*targetm.asm_out.internal_label), except the insn for the jump table is
kono
parents:
diff changeset
192 passed. */
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 #define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN) \
kono
parents:
diff changeset
195 { ASM_OUTPUT_ALIGN (FILE, 2); (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM); }
kono
parents:
diff changeset
196
kono
parents:
diff changeset
197 /* This is how to store into the string LABEL
kono
parents:
diff changeset
198 the symbol_ref name of an internal numbered label where
kono
parents:
diff changeset
199 PREFIX is the class of label and NUM is the number within the class.
kono
parents:
diff changeset
200 This is suitable for output with `assemble_name'. */
kono
parents:
diff changeset
201
kono
parents:
diff changeset
202 #define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
kono
parents:
diff changeset
203 sprintf (LABEL, "*%s..%u", rs6000_xcoff_strip_dollar (PREFIX), (unsigned) (NUM))
kono
parents:
diff changeset
204
kono
parents:
diff changeset
205 /* This is how to output an assembler line to define N characters starting
kono
parents:
diff changeset
206 at P to FILE. */
kono
parents:
diff changeset
207
kono
parents:
diff changeset
208 #define ASM_OUTPUT_ASCII(FILE, P, N) output_ascii ((FILE), (P), (N))
kono
parents:
diff changeset
209
kono
parents:
diff changeset
210 /* This is how to advance the location counter by SIZE bytes. */
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 #define SKIP_ASM_OP "\t.space "
kono
parents:
diff changeset
213
kono
parents:
diff changeset
214 #define ASM_OUTPUT_SKIP(FILE,SIZE) \
kono
parents:
diff changeset
215 fprintf (FILE, "%s" HOST_WIDE_INT_PRINT_UNSIGNED"\n", SKIP_ASM_OP, (SIZE))
kono
parents:
diff changeset
216
kono
parents:
diff changeset
217 /* This says how to output an assembler line
kono
parents:
diff changeset
218 to define a global common symbol. */
kono
parents:
diff changeset
219
kono
parents:
diff changeset
220 #define COMMON_ASM_OP "\t.comm "
kono
parents:
diff changeset
221
kono
parents:
diff changeset
222 /* This says how to output an assembler line
kono
parents:
diff changeset
223 to define a local common symbol.
kono
parents:
diff changeset
224 The assembler in AIX 6.1 and later supports an alignment argument.
kono
parents:
diff changeset
225 For earlier releases of AIX, we try to maintain
kono
parents:
diff changeset
226 alignment after preceding TOC section if it was aligned
kono
parents:
diff changeset
227 for 64-bit mode. */
kono
parents:
diff changeset
228
kono
parents:
diff changeset
229 #define LOCAL_COMMON_ASM_OP "\t.lcomm "
kono
parents:
diff changeset
230
kono
parents:
diff changeset
231 #if TARGET_AIX_VERSION >= 61
kono
parents:
diff changeset
232 #define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
kono
parents:
diff changeset
233 do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \
kono
parents:
diff changeset
234 RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
kono
parents:
diff changeset
235 if ((ALIGN) > 32) \
kono
parents:
diff changeset
236 fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED",%s%u_,%u\n", \
kono
parents:
diff changeset
237 (SIZE), xcoff_bss_section_name, \
kono
parents:
diff changeset
238 floor_log2 ((ALIGN) / BITS_PER_UNIT), \
kono
parents:
diff changeset
239 floor_log2 ((ALIGN) / BITS_PER_UNIT)); \
kono
parents:
diff changeset
240 else if ((SIZE) > 4) \
kono
parents:
diff changeset
241 fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED",%s3_,3\n", \
kono
parents:
diff changeset
242 (SIZE), xcoff_bss_section_name); \
kono
parents:
diff changeset
243 else \
kono
parents:
diff changeset
244 fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED",%s,2\n", \
kono
parents:
diff changeset
245 (SIZE), xcoff_bss_section_name); \
kono
parents:
diff changeset
246 } while (0)
kono
parents:
diff changeset
247 #endif
kono
parents:
diff changeset
248
kono
parents:
diff changeset
249 #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \
kono
parents:
diff changeset
250 do { fputs (LOCAL_COMMON_ASM_OP, (FILE)); \
kono
parents:
diff changeset
251 RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
kono
parents:
diff changeset
252 fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED",%s\n", \
kono
parents:
diff changeset
253 (TARGET_32BIT ? (SIZE) : (ROUNDED)), \
kono
parents:
diff changeset
254 xcoff_bss_section_name); \
kono
parents:
diff changeset
255 } while (0)
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 #ifdef HAVE_AS_TLS
kono
parents:
diff changeset
258 #define ASM_OUTPUT_TLS_COMMON(FILE, DECL, NAME, SIZE) \
kono
parents:
diff changeset
259 do { fputs (COMMON_ASM_OP, (FILE)); \
kono
parents:
diff changeset
260 RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
kono
parents:
diff changeset
261 fprintf ((FILE), "[UL]," HOST_WIDE_INT_PRINT_UNSIGNED"\n", \
kono
parents:
diff changeset
262 (SIZE)); \
kono
parents:
diff changeset
263 } while (0)
kono
parents:
diff changeset
264 #endif
kono
parents:
diff changeset
265
kono
parents:
diff changeset
266 /* This is how we tell the assembler that two symbols have the same value. */
kono
parents:
diff changeset
267 #define SET_ASM_OP "\t.set "
kono
parents:
diff changeset
268
kono
parents:
diff changeset
269 /* This is how we tell the assembler to equate two values.
kono
parents:
diff changeset
270 The semantic of AIX assembler's .set do not correspond to middle-end expectations.
kono
parents:
diff changeset
271 We output aliases as alternative symbols in the front of the definition
kono
parents:
diff changeset
272 via DECLARE_FUNCTION_NAME and DECLARE_OBJECT_NAME.
kono
parents:
diff changeset
273 We still need to define this macro to let middle-end know that aliases are
kono
parents:
diff changeset
274 supported.
kono
parents:
diff changeset
275 */
kono
parents:
diff changeset
276 #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2) do { } while (0)
kono
parents:
diff changeset
277
kono
parents:
diff changeset
278 /* Used by rs6000_assemble_integer, among others. */
kono
parents:
diff changeset
279
kono
parents:
diff changeset
280 /* Used by rs6000_assemble_integer, among others. */
kono
parents:
diff changeset
281 #define DOUBLE_INT_ASM_OP "\t.llong\t"
kono
parents:
diff changeset
282
kono
parents:
diff changeset
283 /* Output before instructions. */
kono
parents:
diff changeset
284 #define TEXT_SECTION_ASM_OP "\t.csect .text[PR]"
kono
parents:
diff changeset
285
kono
parents:
diff changeset
286 /* Output before writable data. */
kono
parents:
diff changeset
287 #define DATA_SECTION_ASM_OP \
kono
parents:
diff changeset
288 "\t.csect .data[RW]," XCOFF_CSECT_DEFAULT_ALIGNMENT_STR
kono
parents:
diff changeset
289
kono
parents:
diff changeset
290
kono
parents:
diff changeset
291 /* The eh_frames are put in the read-only text segment.
kono
parents:
diff changeset
292 Local code labels/function will also be in the local text segment so use
kono
parents:
diff changeset
293 PC relative addressing.
kono
parents:
diff changeset
294 Global symbols must be in the data segment to allow loader relocations.
kono
parents:
diff changeset
295 So use DW_EH_PE_indirect to allocate a slot in the local data segment.
kono
parents:
diff changeset
296 There is no constant offset to this data segment from the text segment,
kono
parents:
diff changeset
297 so use addressing relative to the data segment.
kono
parents:
diff changeset
298 */
kono
parents:
diff changeset
299 #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
kono
parents:
diff changeset
300 (((GLOBAL) ? DW_EH_PE_indirect | DW_EH_PE_datarel : DW_EH_PE_pcrel) \
kono
parents:
diff changeset
301 | (TARGET_64BIT ? DW_EH_PE_sdata8 : DW_EH_PE_sdata4))
kono
parents:
diff changeset
302
kono
parents:
diff changeset
303 #define EH_FRAME_THROUGH_COLLECT2 1
kono
parents:
diff changeset
304 #define EH_TABLES_CAN_BE_READ_ONLY 1
kono
parents:
diff changeset
305
kono
parents:
diff changeset
306 /* AIX Assembler implicitly assumes DWARF 64 bit extension in 64 bit mode. */
kono
parents:
diff changeset
307 #define DWARF_OFFSET_SIZE PTR_SIZE
kono
parents:
diff changeset
308
kono
parents:
diff changeset
309 #define ASM_OUTPUT_DWARF_PCREL(FILE,SIZE,LABEL) \
kono
parents:
diff changeset
310 rs6000_asm_output_dwarf_pcrel ((FILE), (SIZE), (LABEL));
kono
parents:
diff changeset
311
kono
parents:
diff changeset
312 #define ASM_OUTPUT_DWARF_DATAREL(FILE,SIZE,LABEL) \
kono
parents:
diff changeset
313 rs6000_asm_output_dwarf_datarel ((FILE), (SIZE), (LABEL));
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
kono
parents:
diff changeset
316