Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/ia64/sysv4.h @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children | 77e2b8dfacca |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
1 /* Override definitions in elfos.h/svr4.h to be correct for IA64. */ | |
2 | |
3 #undef TARGET_INIT_LIBFUNCS | |
4 #define TARGET_INIT_LIBFUNCS ia64_sysv4_init_libfuncs | |
5 | |
6 /* We want DWARF2 as specified by the IA64 ABI. */ | |
7 #undef PREFERRED_DEBUGGING_TYPE | |
8 #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG | |
9 | |
10 /* Stabs does not work properly for 64-bit targets. */ | |
11 #undef DBX_DEBUGGING_INFO | |
12 | |
13 /* Various pseudo-ops for which the Intel assembler uses non-standard | |
14 definitions. */ | |
15 | |
16 #undef STRING_ASM_OP | |
17 #define STRING_ASM_OP "\tstringz\t" | |
18 | |
19 #undef SKIP_ASM_OP | |
20 #define SKIP_ASM_OP "\t.skip\t" | |
21 | |
22 #undef COMMON_ASM_OP | |
23 #define COMMON_ASM_OP "\t.common\t" | |
24 | |
25 #undef ASCII_DATA_ASM_OP | |
26 #define ASCII_DATA_ASM_OP "\tstring\t" | |
27 | |
28 /* ia64-specific options for gas | |
29 ??? ia64 gas doesn't accept standard svr4 assembler options? */ | |
30 #undef ASM_SPEC | |
31 #define ASM_SPEC "-x %{mconstant-gp} %{mauto-pic} %(asm_extra)" | |
32 | |
33 /* ??? Unfortunately, .lcomm doesn't work, because it puts things in either | |
34 .bss or .sbss, and we can't control the decision of which is used. When | |
35 I use .lcomm, I get a cryptic "Section group has no member" error from | |
36 the Intel simulator. So we must explicitly put variables in .bss | |
37 instead. This matters only if we care about the Intel assembler. */ | |
38 | |
39 /* This is asm_output_aligned_bss from varasm.c without the | |
40 (*targetm.asm_out.globalize_label) call at the beginning. */ | |
41 | |
42 /* This is for final.c, because it is used by ASM_DECLARE_OBJECT_NAME. */ | |
43 extern int size_directive_output; | |
44 | |
45 #undef ASM_OUTPUT_ALIGNED_LOCAL | |
46 #define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \ | |
47 do { \ | |
48 if ((DECL) && sdata_symbolic_operand (XEXP (DECL_RTL (DECL), 0), Pmode)) \ | |
49 switch_to_section (sbss_section); \ | |
50 else \ | |
51 switch_to_section (bss_section); \ | |
52 ASM_OUTPUT_ALIGN (FILE, floor_log2 ((ALIGN) / BITS_PER_UNIT)); \ | |
53 ASM_DECLARE_OBJECT_NAME (FILE, NAME, DECL); \ | |
54 ASM_OUTPUT_SKIP (FILE, SIZE ? SIZE : 1); \ | |
55 } while (0) | |
56 | |
57 /* The # tells the Intel assembler that this is not a register name. | |
58 However, we can't emit the # in a label definition, so we set a variable | |
59 in ASM_OUTPUT_LABEL to control whether we want the postfix here or not. | |
60 We append the # to the label name, but since NAME can be an expression | |
61 we have to scan it for a non-label character and insert the # there. */ | |
62 | |
63 #undef ASM_OUTPUT_LABELREF | |
64 #define ASM_OUTPUT_LABELREF(STREAM, NAME) \ | |
65 do { \ | |
66 const char *name_ = NAME; \ | |
67 if (*name_ == '*') \ | |
68 name_++; \ | |
69 else \ | |
70 fputs (user_label_prefix, STREAM); \ | |
71 fputs (name_, STREAM); \ | |
72 if (!ia64_asm_output_label) \ | |
73 fputc ('#', STREAM); \ | |
74 } while (0) | |
75 | |
76 /* Intel assembler requires both flags and type if declaring a non-predefined | |
77 section. */ | |
78 #undef INIT_SECTION_ASM_OP | |
79 #define INIT_SECTION_ASM_OP "\t.section\t.init,\"ax\",\"progbits\"" | |
80 #undef FINI_SECTION_ASM_OP | |
81 #define FINI_SECTION_ASM_OP "\t.section\t.fini,\"ax\",\"progbits\"" | |
82 | |
83 /* svr4.h undefines this, so we need to define it here. */ | |
84 #define DBX_REGISTER_NUMBER(REGNO) \ | |
85 ia64_dbx_register_number(REGNO) | |
86 | |
87 /* Things that svr4.h defines to the wrong type, because it assumes 32-bit | |
88 ints and 32-bit longs. */ | |
89 | |
90 #undef SIZE_TYPE | |
91 #define SIZE_TYPE "long unsigned int" | |
92 | |
93 #undef PTRDIFF_TYPE | |
94 #define PTRDIFF_TYPE "long int" | |
95 | |
96 #undef WCHAR_TYPE | |
97 #define WCHAR_TYPE "int" | |
98 | |
99 #undef WCHAR_TYPE_SIZE | |
100 #define WCHAR_TYPE_SIZE 32 | |
101 | |
102 /* We redefine this to use the ia64 .proc pseudo-op. */ | |
103 | |
104 #undef ASM_DECLARE_FUNCTION_NAME | |
105 #define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ | |
106 do { \ | |
107 fputs ("\t.proc ", FILE); \ | |
108 assemble_name (FILE, NAME); \ | |
109 fputc ('\n', FILE); \ | |
110 ASM_OUTPUT_LABEL (FILE, NAME); \ | |
111 } while (0) | |
112 | |
113 /* We redefine this to use the ia64 .endp pseudo-op. */ | |
114 | |
115 #undef ASM_DECLARE_FUNCTION_SIZE | |
116 #define ASM_DECLARE_FUNCTION_SIZE(FILE, NAME, DECL) \ | |
117 do { \ | |
118 fputs ("\t.endp ", FILE); \ | |
119 assemble_name (FILE, NAME); \ | |
120 fputc ('\n', FILE); \ | |
121 } while (0) | |
122 | |
123 /* Override default elf definition. */ | |
124 #undef TARGET_ASM_RELOC_RW_MASK | |
125 #define TARGET_ASM_RELOC_RW_MASK ia64_reloc_rw_mask | |
126 #undef TARGET_ASM_SELECT_RTX_SECTION | |
127 #define TARGET_ASM_SELECT_RTX_SECTION ia64_select_rtx_section | |
128 | |
129 #define SDATA_SECTION_ASM_OP "\t.sdata" | |
130 #define SBSS_SECTION_ASM_OP "\t.sbss" |