Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/i386/i386elf.h @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
rev | line source |
---|---|
0 | 1 /* Target definitions for GCC for Intel 80386 using ELF |
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
|
2 Copyright (C) 1988, 1991, 1995, 2000, 2001, 2002, 2007, 2008, 2010 |
0 | 3 Free Software Foundation, Inc. |
4 | |
5 Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com). | |
6 | |
7 This file is part of GCC. | |
8 | |
9 GCC is free software; you can redistribute it and/or modify | |
10 it under the terms of the GNU General Public License as published by | |
11 the Free Software Foundation; either version 3, or (at your option) | |
12 any later version. | |
13 | |
14 GCC is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU General Public License for more details. | |
18 | |
19 You should have received a copy of the GNU General Public License | |
20 along with GCC; see the file COPYING3. If not see | |
21 <http://www.gnu.org/licenses/>. */ | |
22 | |
23 /* Use stabs instead of DWARF debug format. */ | |
24 #undef PREFERRED_DEBUGGING_TYPE | |
25 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG | |
26 | |
27 #define TARGET_VERSION fprintf (stderr, " (i386 bare ELF target)"); | |
28 | |
29 /* The ELF ABI for the i386 says that records and unions are returned | |
30 in memory. */ | |
31 | |
32 #define SUBTARGET_RETURN_IN_MEMORY(TYPE, FNTYPE) \ | |
33 (TYPE_MODE (TYPE) == BLKmode \ | |
34 || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) == 8)) | |
35 | |
36 #undef CPP_SPEC | |
37 #define CPP_SPEC "" | |
38 | |
39 #define ENDFILE_SPEC "crtend.o%s" | |
40 | |
41 #define STARTFILE_SPEC "%{!shared: \ | |
42 %{!symbolic: \ | |
43 %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}}\ | |
44 crtbegin.o%s" | |
45 | |
46 #undef DBX_REGISTER_NUMBER | |
47 #define DBX_REGISTER_NUMBER(n) \ | |
48 (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n]) | |
49 | |
50 /* The routine used to output sequences of byte values. We use a special | |
51 version of this for most svr4 targets because doing so makes the | |
52 generated assembly code more compact (and thus faster to assemble) | |
53 as well as more readable. Note that if we find subparts of the | |
54 character sequence which end with NUL (and which are shorter than | |
55 STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */ | |
56 | |
57 #undef ASM_OUTPUT_ASCII | |
58 #define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \ | |
59 do \ | |
60 { \ | |
61 const unsigned char *_ascii_bytes = \ | |
62 (const unsigned char *) (STR); \ | |
63 const unsigned char *limit = _ascii_bytes + (LENGTH); \ | |
64 unsigned bytes_in_chunk = 0; \ | |
65 for (; _ascii_bytes < limit; _ascii_bytes++) \ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
66 { \ |
0 | 67 const unsigned char *p; \ |
68 if (bytes_in_chunk >= 64) \ | |
69 { \ | |
70 fputc ('\n', (FILE)); \ | |
71 bytes_in_chunk = 0; \ | |
72 } \ | |
73 for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ | |
74 continue; \ | |
75 if (p < limit && (p - _ascii_bytes) <= (long) STRING_LIMIT) \ | |
76 { \ | |
77 if (bytes_in_chunk > 0) \ | |
78 { \ | |
79 fputc ('\n', (FILE)); \ | |
80 bytes_in_chunk = 0; \ | |
81 } \ | |
82 ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \ | |
83 _ascii_bytes = p; \ | |
84 } \ | |
85 else \ | |
86 { \ | |
87 if (bytes_in_chunk == 0) \ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
88 fputs (ASM_BYTE, (FILE)); \ |
0 | 89 else \ |
90 fputc (',', (FILE)); \ | |
63
b7f97abdc517
update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
55
diff
changeset
|
91 fprintf ((FILE), "0x%02x", *_ascii_bytes); \ |
0 | 92 bytes_in_chunk += 5; \ |
93 } \ | |
94 } \ | |
95 if (bytes_in_chunk > 0) \ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
96 fputc ('\n', (FILE)); \ |
0 | 97 } \ |
98 while (0) | |
99 | |
100 #define LOCAL_LABEL_PREFIX "." | |
101 | |
102 /* Switch into a generic section. */ | |
103 #define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section | |
104 | |
105 /* If defined, a C expression whose value is a string containing the | |
106 assembler operation to identify the following data as | |
107 uninitialized global data. If not defined, and neither | |
108 `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined, | |
109 uninitialized global data will be output in the data section if | |
110 `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be | |
111 used. */ | |
112 #undef BSS_SECTION_ASM_OP | |
113 #define BSS_SECTION_ASM_OP "\t.section\t.bss" | |
114 | |
115 /* Like `ASM_OUTPUT_BSS' except takes the required alignment as a | |
116 separate, explicit argument. If you define this macro, it is used | |
117 in place of `ASM_OUTPUT_BSS', and gives you more flexibility in | |
118 handling the required alignment of the variable. The alignment is | |
119 specified as the number of bits. | |
120 | |
121 Try to use function `asm_output_aligned_bss' defined in file | |
122 `varasm.c' when defining this macro. */ | |
123 #undef ASM_OUTPUT_ALIGNED_BSS | |
124 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ | |
125 asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) |