]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/darwin-sections.def
Fix PR testsuite/47013
[thirdparty/gcc.git] / gcc / config / darwin-sections.def
CommitLineData
fee3eacd 1/* Copyright (C) 2005, 2006, 2010 Free Software Foundation, Inc.
ad41bd84
JM
2
3This file is part of GCC.
4
5GCC is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free
7Software Foundation; either version 3, or (at your option) any later
8version.
9
10GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11WARRANTY; without even the implied warranty of MERCHANTABILITY or
12FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13for more details.
14
15You should have received a copy of the GNU General Public License
16along with GCC; see the file COPYING3. If not see
17<http://www.gnu.org/licenses/>. */
18
46a99b06
IS
19/* Since Darwin's ld will not allow zero-sized objects, and gcc wants them,
20 we emit one byte (in darwin.c) when such an object is encountered.
21
22 This messes up section anchoring because the emitted byte is not counted
23 outside the port. To cope with this, we set aside sections for zero-sized
24 objects and disallow those sections from participating in section anchors
25 ("zobj_" sections, below).
26
27 Items that might be coalesced by the linker are prevented from participating,
28 (and those in mergeable sections are disallowed in varasm.c). */
29
fbbfcaf1 30/* The .text section is generated in varasm.c */
46a99b06 31DEF_SECTION (text_coal_section, SECTION_CODE|SECTION_NO_ANCHOR,
d6b5193b 32 ".section __TEXT,__textcoal_nt,coalesced,pure_instructions", 0)
46a99b06 33
1f81953b
IS
34DEF_SECTION (text_hot_section, SECTION_CODE,
35 ".section __TEXT,__text_hot,regular,pure_instructions", 0)
36DEF_SECTION (text_cold_section, SECTION_CODE,
37 ".section __TEXT,__text_cold,regular,pure_instructions", 0)
38DEF_SECTION (text_startup_section, SECTION_CODE,
39 ".section __TEXT,__text_startup,regular,pure_instructions", 0)
40DEF_SECTION (text_exit_section, SECTION_CODE,
41 ".section __TEXT,__text_exit,regular,pure_instructions", 0)
42
43DEF_SECTION (text_hot_coal_section, SECTION_CODE,
44 ".section __TEXT,__text_hot_coal,coalesced,pure_instructions", 0)
45DEF_SECTION (text_cold_coal_section, SECTION_CODE,
46 ".section __TEXT,__text_cold_coal,coalesced,pure_instructions", 0)
47DEF_SECTION (text_startup_coal_section, SECTION_CODE,
48 ".section __TEXT,__text_stt_coal,coalesced,pure_instructions", 0)
49DEF_SECTION (text_exit_coal_section, SECTION_CODE,
50 ".section __TEXT,__text_exit_coal,coalesced,pure_instructions", 0)
51
46a99b06 52/* const */
d6b5193b 53DEF_SECTION (const_section, 0, ".const", 0)
46a99b06 54DEF_SECTION (const_coal_section, SECTION_NO_ANCHOR,
d6b5193b 55 ".section __TEXT,__const_coal,coalesced", 0)
46a99b06
IS
56/* Place to put zero-sized to avoid issues with section anchors. */
57DEF_SECTION (zobj_const_section, SECTION_NO_ANCHOR,
58 ".section\t__DATA,__zobj_const", 0)
59
60/* Write-able data. '.data' handled in varasm.c */
61DEF_SECTION (static_data_section, SECTION_WRITE, ".static_data", 0)
62DEF_SECTION (data_coal_section, SECTION_WRITE|SECTION_NO_ANCHOR,
63 ".section __DATA,__datacoal_nt,coalesced", 0)
64/* Place to put zero-sized to avoid issues with section anchors. */
65DEF_SECTION (zobj_data_section, SECTION_WRITE|SECTION_NO_ANCHOR,
66 ".section\t__DATA,__zobj_data", 0)
67
68/* BSS - .lcomm / .zerofill __DATA,__bss sections cannot be switched to
69 explicitly (will create an assembler error). */
70DEF_SECTION (zobj_bss_section, SECTION_WRITE|SECTION_BSS|SECTION_NO_ANCHOR,
71 ".section\t__DATA,__zobj_bss", 0)
72
73/* const data */
d6b5193b 74DEF_SECTION (const_data_section, 0, ".const_data", 0)
46a99b06 75DEF_SECTION (const_data_coal_section, SECTION_NO_ANCHOR,
d6b5193b 76 ".section __DATA,__const_coal,coalesced", 0)
46a99b06
IS
77/* Place to put zero-sized to avoid issues with section anchors. */
78DEF_SECTION (zobj_const_data_section, SECTION_NO_ANCHOR,
79 ".section\t__DATA,__zobj_const_data", 0)
80
81/* Strings and other literals. */
59ff4a1c 82DEF_SECTION (cstring_section, SECTION_MERGE | SECTION_STRINGS, ".cstring", 0)
ab0ff804
AP
83DEF_SECTION (literal4_section, SECTION_MERGE, ".literal4", 0)
84DEF_SECTION (literal8_section, SECTION_MERGE, ".literal8", 0)
f7288899 85DEF_SECTION (literal16_section, SECTION_MERGE, ".literal16", 0)
46a99b06
IS
86/* Unlike constant NSStrings, constant CFStrings do not live in the
87 __OBJC segment since they may also occur in pure C or C++ programs. */
88DEF_SECTION (cfstring_constant_object_section, 0,
89 ".section __DATA, __cfstring", 0)
90
91/* Module init, term, constructors & destructors. */
d6b5193b
RS
92DEF_SECTION (mod_init_section, 0, ".mod_init_func", 0)
93DEF_SECTION (mod_term_section, 0, ".mod_term_func", 0)
46a99b06 94DEF_SECTION (constructor_section, 0, ".constructor", 0)
d6b5193b 95DEF_SECTION (destructor_section, 0, ".destructor", 0)
46a99b06 96
d764a8e6 97/* Objective-C ABI=0 (Original version) sections. */
d6b5193b
RS
98DEF_SECTION (objc_class_section, 0, ".objc_class", 1)
99DEF_SECTION (objc_meta_class_section, 0, ".objc_meta_class", 1)
100DEF_SECTION (objc_category_section, 0, ".objc_category", 1)
101DEF_SECTION (objc_class_vars_section, 0, ".objc_class_vars", 1)
102DEF_SECTION (objc_instance_vars_section, 0, ".objc_instance_vars", 1)
103DEF_SECTION (objc_cls_meth_section, 0, ".objc_cls_meth", 1)
104DEF_SECTION (objc_inst_meth_section, 0, ".objc_inst_meth", 1)
105DEF_SECTION (objc_cat_cls_meth_section, 0, ".objc_cat_cls_meth", 1)
106DEF_SECTION (objc_cat_inst_meth_section, 0, ".objc_cat_inst_meth", 1)
ab0ff804 107DEF_SECTION (objc_selector_refs_section, SECTION_MERGE, ".objc_message_refs", 1)
d6b5193b
RS
108DEF_SECTION (objc_selector_fixup_section, 0,
109 ".section __OBJC, __sel_fixup, regular, no_dead_strip", 1)
110DEF_SECTION (objc_symbols_section, 0, ".objc_symbols", 1)
111DEF_SECTION (objc_module_info_section, 0, ".objc_module_info", 1)
112DEF_SECTION (objc_protocol_section, 0, ".objc_protocol", 1)
113DEF_SECTION (objc_string_object_section, 0, ".objc_string_object", 1)
114DEF_SECTION (objc_constant_string_object_section, 0,
d764a8e6 115 ".section __OBJC, __cstring_object, regular, no_dead_strip", 0)
d6b5193b
RS
116
117/* Fix-and-Continue image marker. */
118DEF_SECTION (objc_image_info_section, 0,
119 ".section __OBJC, __image_info, regular, no_dead_strip", 1)
120DEF_SECTION (objc_class_names_section, 0, ".objc_class_names", 1)
121DEF_SECTION (objc_meth_var_names_section, 0, ".objc_meth_var_names", 1)
122DEF_SECTION (objc_meth_var_types_section, 0, ".objc_meth_var_types", 1)
ab0ff804 123DEF_SECTION (objc_cls_refs_section, SECTION_MERGE, ".objc_cls_refs", 1)
46a99b06
IS
124
125/* Stubs and symbol indirection sections. */
fee3eacd 126/* lazy symbol pointers. */
46a99b06
IS
127DEF_SECTION (machopic_lazy_symbol_ptr_section, SECTION_NO_ANCHOR,
128 ".lazy_symbol_pointer", 0)
129DEF_SECTION (machopic_lazy_symbol_ptr2_section, SECTION_NO_ANCHOR,
fee3eacd 130 ".section __DATA, __la_sym_ptr2,lazy_symbol_pointers", 0)
46a99b06 131DEF_SECTION (machopic_lazy_symbol_ptr3_section, SECTION_NO_ANCHOR,
fee3eacd
IS
132 ".section __DATA, __la_sym_ptr3,lazy_symbol_pointers", 0)
133/* non-lazy symbol pointers. */
46a99b06 134DEF_SECTION (machopic_nl_symbol_ptr_section, SECTION_NO_ANCHOR,
fee3eacd
IS
135 MACHOPIC_NL_SYMBOL_PTR_SECTION, 0)
136/* Symbol stubs. */
46a99b06
IS
137DEF_SECTION (machopic_symbol_stub_section, SECTION_NO_ANCHOR,
138 ".symbol_stub", 0)
139DEF_SECTION (machopic_symbol_stub1_section, SECTION_NO_ANCHOR,
d6b5193b
RS
140 ".section __TEXT,__symbol_stub1,symbol_stubs,"
141 "pure_instructions,16", 0)
fee3eacd 142/* PIC symbol stubs. */
46a99b06
IS
143DEF_SECTION (machopic_picsymbol_stub_section, SECTION_NO_ANCHOR,
144 ".picsymbol_stub", 0)
145DEF_SECTION (machopic_picsymbol_stub1_section, SECTION_NO_ANCHOR,
d6b5193b
RS
146 ".section __TEXT,__picsymbolstub1,symbol_stubs,"
147 "pure_instructions,32", 0)
46a99b06 148DEF_SECTION (machopic_picsymbol_stub2_section, SECTION_NO_ANCHOR,
fee3eacd 149 ".section __TEXT,__picsymbolstub2,symbol_stubs,pure_instructions,25", 0)
46a99b06 150DEF_SECTION (machopic_picsymbol_stub3_section, SECTION_NO_ANCHOR,
fee3eacd 151 ".section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5", 0)
46a99b06 152
fee3eacd 153/* Exception-related. */
46a99b06 154DEF_SECTION (darwin_exception_section, SECTION_NO_ANCHOR,
d6b5193b 155 ".section __DATA,__gcc_except_tab", 0)
46a99b06 156DEF_SECTION (darwin_eh_frame_section, SECTION_NO_ANCHOR,
d6b5193b
RS
157 ".section " EH_FRAME_SECTION_NAME ",__eh_frame"
158 EH_FRAME_SECTION_ATTR, 0)
d764a8e6
IS
159
160/* Sections for ObjC ABI=1 (ObjC 'V1' extensions) */
161DEF_SECTION (objc1_class_ext_section, 0,
162 ".section __OBJC, __class_ext, regular, no_dead_strip", 1)
163DEF_SECTION (objc1_prop_list_section, 0,
164 ".section __OBJC, __property, regular, no_dead_strip", 1)
165DEF_SECTION (objc1_protocol_ext_section, 0,
166 ".section __OBJC, __protocol_ext, regular, no_dead_strip", 1)
167
168/* Sections for ObjC ABI=2 (m64). */
169DEF_SECTION (objc2_message_refs_section, 0,
170 ".section __DATA, __objc_msgrefs, regular, no_dead_strip", 1)
171DEF_SECTION (objc2_classdefs_section, 0, ".section __DATA, __objc_data", 1)
172DEF_SECTION (objc2_metadata_section, 0, ".section __DATA, __objc_const", 1)
173
174DEF_SECTION (objc2_classrefs_section, 0,
175 ".section __DATA, __objc_classrefs, regular, no_dead_strip", 1)
176DEF_SECTION (objc2_classlist_section, 0,
177 ".section __DATA, __objc_classlist, regular, no_dead_strip", 1)
178DEF_SECTION (objc2_categorylist_section, 0,
179 ".section __DATA, __objc_catlist, regular, no_dead_strip", 1)
180DEF_SECTION (objc2_selector_refs_section, 0,
181 ".section __DATA, __objc_selrefs, literal_pointers, no_dead_strip", 1)
182DEF_SECTION (objc2_nonlazy_class_section, 0,
183 ".section __DATA, __objc_nlclslist, regular, no_dead_strip", 1)
184DEF_SECTION (objc2_nonlazy_category_section, 0,
185 ".section __DATA, __objc_nlcatlist, regular, no_dead_strip", 1)
186DEF_SECTION (objc2_protocollist_section, 0,
187 ".section __DATA, __objc_protolist, regular, no_dead_strip", 1)
188DEF_SECTION (objc2_protocolrefs_section, 0,
189 ".section __DATA, __objc_protorefs, regular, no_dead_strip", 1)
190DEF_SECTION (objc2_super_classrefs_section, 0,
191 ".section __DATA, __objc_superrefs, regular, no_dead_strip", 1)
192DEF_SECTION (objc2_image_info_section, 0,
193 ".section __DATA, __objc_imageinfo, regular, no_dead_strip", 1)
194DEF_SECTION (objc2_constant_string_object_section, 0,
195 ".section __DATA, __objc_stringobj, regular, no_dead_strip", 1)