1 // defstd.cc -- define standard symbols for gold.
8 // This is a simple file which defines the standard symbols like
16 const Define_symbol_in_section in_section
[] =
19 "__preinit_array_start", // name
20 ".preinit_array", // output_section
23 elfcpp::STT_NOTYPE
, // type
24 elfcpp::STB_GLOBAL
, // binding
25 elfcpp::STV_HIDDEN
, // visibility
27 false, // offset_is_from_end
31 "__preinit_array_end", // name
32 ".preinit_array", // output_section
35 elfcpp::STT_NOTYPE
, // type
36 elfcpp::STB_GLOBAL
, // binding
37 elfcpp::STV_HIDDEN
, // visibility
39 true, // offset_is_from_end
43 "__init_array_start", // name
44 ".init_array", // output_section
47 elfcpp::STT_NOTYPE
, // type
48 elfcpp::STB_GLOBAL
, // binding
49 elfcpp::STV_HIDDEN
, // visibility
51 false, // offset_is_from_end
55 "__init_array_end", // name
56 ".init_array", // output_section
59 elfcpp::STT_NOTYPE
, // type
60 elfcpp::STB_GLOBAL
, // binding
61 elfcpp::STV_HIDDEN
, // visibility
63 true, // offset_is_from_end
67 "__fini_array_start", // name
68 ".fini_array", // output_section
71 elfcpp::STT_NOTYPE
, // type
72 elfcpp::STB_GLOBAL
, // binding
73 elfcpp::STV_HIDDEN
, // visibility
75 false, // offset_is_from_end
79 "__fini_array_end", // name
80 ".fini_array", // output_section
83 elfcpp::STT_NOTYPE
, // type
84 elfcpp::STB_GLOBAL
, // binding
85 elfcpp::STV_HIDDEN
, // visibility
87 true, // offset_is_from_end
92 const int in_section_count
= sizeof in_section
/ sizeof in_section
[0];
94 const Define_symbol_in_segment in_segment
[] =
97 "__executable_start", // name
98 elfcpp::PT_LOAD
, // segment_type
99 elfcpp::PF(0), // segment_flags_set
100 elfcpp::PF(0), // segment_flags_clear
103 elfcpp::STT_NOTYPE
, // type
104 elfcpp::STB_GLOBAL
, // binding
105 elfcpp::STV_DEFAULT
, // visibility
107 Symbol::SEGMENT_START
, // offset_from_base
112 elfcpp::PT_LOAD
, // segment_type
113 elfcpp::PF_X
, // segment_flags_set
114 elfcpp::PF_W
, // segment_flags_clear
117 elfcpp::STT_NOTYPE
, // type
118 elfcpp::STB_GLOBAL
, // binding
119 elfcpp::STV_DEFAULT
, // visibility
121 Symbol::SEGMENT_END
, // offset_from_base
126 elfcpp::PT_LOAD
, // segment_type
127 elfcpp::PF_X
, // segment_flags_set
128 elfcpp::PF_W
, // segment_flags_clear
131 elfcpp::STT_NOTYPE
, // type
132 elfcpp::STB_GLOBAL
, // binding
133 elfcpp::STV_DEFAULT
, // visibility
135 Symbol::SEGMENT_END
, // offset_from_base
140 elfcpp::PT_LOAD
, // segment_type
141 elfcpp::PF_X
, // segment_flags_set
142 elfcpp::PF_W
, // segment_flags_clear
145 elfcpp::STT_NOTYPE
, // type
146 elfcpp::STB_GLOBAL
, // binding
147 elfcpp::STV_DEFAULT
, // visibility
149 Symbol::SEGMENT_END
, // offset_from_base
154 elfcpp::PT_LOAD
, // segment_type
155 elfcpp::PF_X
, // segment_flags_set
156 elfcpp::PF(0), // segment_flags_clear
159 elfcpp::STT_NOTYPE
, // type
160 elfcpp::STB_GLOBAL
, // binding
161 elfcpp::STV_DEFAULT
, // visibility
163 Symbol::SEGMENT_BSS
, // offset_from_base
168 elfcpp::PT_LOAD
, // segment_type
169 elfcpp::PF_X
, // segment_flags_set
170 elfcpp::PF(0), // segment_flags_clear
173 elfcpp::STT_NOTYPE
, // type
174 elfcpp::STB_GLOBAL
, // binding
175 elfcpp::STV_DEFAULT
, // visibility
177 Symbol::SEGMENT_BSS
, // offset_from_base
181 "__bss_start", // name
182 elfcpp::PT_LOAD
, // segment_type
183 elfcpp::PF_X
, // segment_flags_set
184 elfcpp::PF(0), // segment_flags_clear
187 elfcpp::STT_NOTYPE
, // type
188 elfcpp::STB_GLOBAL
, // binding
189 elfcpp::STV_DEFAULT
, // visibility
191 Symbol::SEGMENT_BSS
, // offset_from_base
196 elfcpp::PT_LOAD
, // segment_type
197 elfcpp::PF_X
, // segment_flags_set
198 elfcpp::PF(0), // segment_flags_clear
201 elfcpp::STT_NOTYPE
, // type
202 elfcpp::STB_GLOBAL
, // binding
203 elfcpp::STV_DEFAULT
, // visibility
205 Symbol::SEGMENT_START
, // offset_from_base
210 elfcpp::PT_LOAD
, // segment_type
211 elfcpp::PF_X
, // segment_flags_set
212 elfcpp::PF(0), // segment_flags_clear
215 elfcpp::STT_NOTYPE
, // type
216 elfcpp::STB_GLOBAL
, // binding
217 elfcpp::STV_DEFAULT
, // visibility
219 Symbol::SEGMENT_START
, // offset_from_base
224 const int in_segment_count
= sizeof in_segment
/ sizeof in_segment
[0];
226 } // End anonymous namespace.
232 define_standard_symbols(Symbol_table
* symtab
, const Layout
* layout
,
235 symtab
->define_symbols(layout
, target
, in_section_count
, in_section
);
236 symtab
->define_symbols(layout
, target
, in_segment_count
, in_segment
);
239 } // End namespace gold.