diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/config/darwin-sections.def | |
download | cbb-gcc-4.6.4-upstream.tar.bz2 cbb-gcc-4.6.4-upstream.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'gcc/config/darwin-sections.def')
-rw-r--r-- | gcc/config/darwin-sections.def | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/gcc/config/darwin-sections.def b/gcc/config/darwin-sections.def new file mode 100644 index 000000000..61b6f69b1 --- /dev/null +++ b/gcc/config/darwin-sections.def @@ -0,0 +1,195 @@ +/* Copyright (C) 2005, 2006, 2010 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 3, or (at your option) any later +version. + +GCC is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +/* Since Darwin's ld will not allow zero-sized objects, and gcc wants them, + we emit one byte (in darwin.c) when such an object is encountered. + + This messes up section anchoring because the emitted byte is not counted + outside the port. To cope with this, we set aside sections for zero-sized + objects and disallow those sections from participating in section anchors + ("zobj_" sections, below). + + Items that might be coalesced by the linker are prevented from participating, + (and those in mergeable sections are disallowed in varasm.c). */ + +/* The .text section is generated in varasm.c */ +DEF_SECTION (text_coal_section, SECTION_CODE|SECTION_NO_ANCHOR, + ".section __TEXT,__textcoal_nt,coalesced,pure_instructions", 0) + +DEF_SECTION (text_hot_section, SECTION_CODE, + ".section __TEXT,__text_hot,regular,pure_instructions", 0) +DEF_SECTION (text_cold_section, SECTION_CODE, + ".section __TEXT,__text_cold,regular,pure_instructions", 0) +DEF_SECTION (text_startup_section, SECTION_CODE, + ".section __TEXT,__text_startup,regular,pure_instructions", 0) +DEF_SECTION (text_exit_section, SECTION_CODE, + ".section __TEXT,__text_exit,regular,pure_instructions", 0) + +DEF_SECTION (text_hot_coal_section, SECTION_CODE, + ".section __TEXT,__text_hot_coal,coalesced,pure_instructions", 0) +DEF_SECTION (text_cold_coal_section, SECTION_CODE, + ".section __TEXT,__text_cold_coal,coalesced,pure_instructions", 0) +DEF_SECTION (text_startup_coal_section, SECTION_CODE, + ".section __TEXT,__text_stt_coal,coalesced,pure_instructions", 0) +DEF_SECTION (text_exit_coal_section, SECTION_CODE, + ".section __TEXT,__text_exit_coal,coalesced,pure_instructions", 0) + +/* const */ +DEF_SECTION (const_section, 0, ".const", 0) +DEF_SECTION (const_coal_section, SECTION_NO_ANCHOR, + ".section __TEXT,__const_coal,coalesced", 0) +/* Place to put zero-sized to avoid issues with section anchors. */ +DEF_SECTION (zobj_const_section, SECTION_NO_ANCHOR, + ".section\t__DATA,__zobj_const", 0) + +/* Write-able data. '.data' handled in varasm.c */ +DEF_SECTION (static_data_section, SECTION_WRITE, ".static_data", 0) +DEF_SECTION (data_coal_section, SECTION_WRITE|SECTION_NO_ANCHOR, + ".section __DATA,__datacoal_nt,coalesced", 0) +/* Place to put zero-sized to avoid issues with section anchors. */ +DEF_SECTION (zobj_data_section, SECTION_WRITE|SECTION_NO_ANCHOR, + ".section\t__DATA,__zobj_data", 0) + +/* BSS - .lcomm / .zerofill __DATA,__bss sections cannot be switched to + explicitly (will create an assembler error). */ +DEF_SECTION (zobj_bss_section, SECTION_WRITE|SECTION_BSS|SECTION_NO_ANCHOR, + ".section\t__DATA,__zobj_bss", 0) + +/* const data */ +DEF_SECTION (const_data_section, 0, ".const_data", 0) +DEF_SECTION (const_data_coal_section, SECTION_NO_ANCHOR, + ".section __DATA,__const_coal,coalesced", 0) +/* Place to put zero-sized to avoid issues with section anchors. */ +DEF_SECTION (zobj_const_data_section, SECTION_NO_ANCHOR, + ".section\t__DATA,__zobj_const_data", 0) + +/* Strings and other literals. */ +DEF_SECTION (cstring_section, SECTION_MERGE | SECTION_STRINGS, ".cstring", 0) +DEF_SECTION (literal4_section, SECTION_MERGE, ".literal4", 0) +DEF_SECTION (literal8_section, SECTION_MERGE, ".literal8", 0) +DEF_SECTION (literal16_section, SECTION_MERGE, ".literal16", 0) +/* Unlike constant NSStrings, constant CFStrings do not live in the + __OBJC segment since they may also occur in pure C or C++ programs. */ +DEF_SECTION (cfstring_constant_object_section, 0, + ".section __DATA, __cfstring", 0) + +/* Module init, term, constructors & destructors. */ +DEF_SECTION (mod_init_section, 0, ".mod_init_func", 0) +DEF_SECTION (mod_term_section, 0, ".mod_term_func", 0) +DEF_SECTION (constructor_section, 0, ".constructor", 0) +DEF_SECTION (destructor_section, 0, ".destructor", 0) + +/* Objective-C ABI=0 (Original version) sections. */ +DEF_SECTION (objc_class_section, 0, ".objc_class", 1) +DEF_SECTION (objc_meta_class_section, 0, ".objc_meta_class", 1) +DEF_SECTION (objc_category_section, 0, ".objc_category", 1) +DEF_SECTION (objc_class_vars_section, 0, ".objc_class_vars", 1) +DEF_SECTION (objc_instance_vars_section, 0, ".objc_instance_vars", 1) +DEF_SECTION (objc_cls_meth_section, 0, ".objc_cls_meth", 1) +DEF_SECTION (objc_inst_meth_section, 0, ".objc_inst_meth", 1) +DEF_SECTION (objc_cat_cls_meth_section, 0, ".objc_cat_cls_meth", 1) +DEF_SECTION (objc_cat_inst_meth_section, 0, ".objc_cat_inst_meth", 1) +DEF_SECTION (objc_selector_refs_section, SECTION_MERGE, ".objc_message_refs", 1) +DEF_SECTION (objc_selector_fixup_section, 0, + ".section __OBJC, __sel_fixup, regular, no_dead_strip", 1) +DEF_SECTION (objc_symbols_section, 0, ".objc_symbols", 1) +DEF_SECTION (objc_module_info_section, 0, ".objc_module_info", 1) +DEF_SECTION (objc_protocol_section, 0, ".objc_protocol", 1) +DEF_SECTION (objc_string_object_section, 0, ".objc_string_object", 1) +DEF_SECTION (objc_constant_string_object_section, 0, + ".section __OBJC, __cstring_object, regular, no_dead_strip", 0) + +/* Fix-and-Continue image marker. */ +DEF_SECTION (objc_image_info_section, 0, + ".section __OBJC, __image_info, regular, no_dead_strip", 1) +DEF_SECTION (objc_class_names_section, 0, ".objc_class_names", 1) +DEF_SECTION (objc_meth_var_names_section, 0, ".objc_meth_var_names", 1) +DEF_SECTION (objc_meth_var_types_section, 0, ".objc_meth_var_types", 1) +DEF_SECTION (objc_cls_refs_section, SECTION_MERGE, ".objc_cls_refs", 1) + +/* Stubs and symbol indirection sections. */ +/* lazy symbol pointers. */ +DEF_SECTION (machopic_lazy_symbol_ptr_section, SECTION_NO_ANCHOR, + ".lazy_symbol_pointer", 0) +DEF_SECTION (machopic_lazy_symbol_ptr2_section, SECTION_NO_ANCHOR, + ".section __DATA, __la_sym_ptr2,lazy_symbol_pointers", 0) +DEF_SECTION (machopic_lazy_symbol_ptr3_section, SECTION_NO_ANCHOR, + ".section __DATA, __la_sym_ptr3,lazy_symbol_pointers", 0) +/* non-lazy symbol pointers. */ +DEF_SECTION (machopic_nl_symbol_ptr_section, SECTION_NO_ANCHOR, + MACHOPIC_NL_SYMBOL_PTR_SECTION, 0) +/* Symbol stubs. */ +DEF_SECTION (machopic_symbol_stub_section, SECTION_NO_ANCHOR, + ".symbol_stub", 0) +DEF_SECTION (machopic_symbol_stub1_section, SECTION_NO_ANCHOR, + ".section __TEXT,__symbol_stub1,symbol_stubs," + "pure_instructions,16", 0) +/* PIC symbol stubs. */ +DEF_SECTION (machopic_picsymbol_stub_section, SECTION_NO_ANCHOR, + ".picsymbol_stub", 0) +DEF_SECTION (machopic_picsymbol_stub1_section, SECTION_NO_ANCHOR, + ".section __TEXT,__picsymbolstub1,symbol_stubs," + "pure_instructions,32", 0) +DEF_SECTION (machopic_picsymbol_stub2_section, SECTION_NO_ANCHOR, + ".section __TEXT,__picsymbolstub2,symbol_stubs,pure_instructions,25", 0) +DEF_SECTION (machopic_picsymbol_stub3_section, SECTION_NO_ANCHOR, + ".section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5", 0) + +/* Exception-related. */ +DEF_SECTION (darwin_exception_section, SECTION_NO_ANCHOR, + ".section __DATA,__gcc_except_tab", 0) +DEF_SECTION (darwin_eh_frame_section, SECTION_NO_ANCHOR, + ".section " EH_FRAME_SECTION_NAME ",__eh_frame" + EH_FRAME_SECTION_ATTR, 0) + +/* Sections for ObjC ABI=1 (ObjC 'V1' extensions) */ +DEF_SECTION (objc1_class_ext_section, 0, + ".section __OBJC, __class_ext, regular, no_dead_strip", 1) +DEF_SECTION (objc1_prop_list_section, 0, + ".section __OBJC, __property, regular, no_dead_strip", 1) +DEF_SECTION (objc1_protocol_ext_section, 0, + ".section __OBJC, __protocol_ext, regular, no_dead_strip", 1) + +/* Sections for ObjC ABI=2 (m64). */ +DEF_SECTION (objc2_message_refs_section, 0, + ".section __DATA, __objc_msgrefs, regular, no_dead_strip", 1) +DEF_SECTION (objc2_classdefs_section, 0, ".section __DATA, __objc_data", 1) +DEF_SECTION (objc2_metadata_section, 0, ".section __DATA, __objc_const", 1) + +DEF_SECTION (objc2_classrefs_section, 0, + ".section __DATA, __objc_classrefs, regular, no_dead_strip", 1) +DEF_SECTION (objc2_classlist_section, 0, + ".section __DATA, __objc_classlist, regular, no_dead_strip", 1) +DEF_SECTION (objc2_categorylist_section, 0, + ".section __DATA, __objc_catlist, regular, no_dead_strip", 1) +DEF_SECTION (objc2_selector_refs_section, 0, + ".section __DATA, __objc_selrefs, literal_pointers, no_dead_strip", 1) +DEF_SECTION (objc2_nonlazy_class_section, 0, + ".section __DATA, __objc_nlclslist, regular, no_dead_strip", 1) +DEF_SECTION (objc2_nonlazy_category_section, 0, + ".section __DATA, __objc_nlcatlist, regular, no_dead_strip", 1) +DEF_SECTION (objc2_protocollist_section, 0, + ".section __DATA, __objc_protolist, regular, no_dead_strip", 1) +DEF_SECTION (objc2_protocolrefs_section, 0, + ".section __DATA, __objc_protorefs, regular, no_dead_strip", 1) +DEF_SECTION (objc2_super_classrefs_section, 0, + ".section __DATA, __objc_superrefs, regular, no_dead_strip", 1) +DEF_SECTION (objc2_image_info_section, 0, + ".section __DATA, __objc_imageinfo, regular, no_dead_strip", 1) +DEF_SECTION (objc2_constant_string_object_section, 0, + ".section __DATA, __objc_stringobj, regular, no_dead_strip", 1) |