xref: /dflybsd-src/contrib/binutils-2.34/bfd/elfxx-target.h (revision b52ef7118d1621abed722c5bbbd542210290ecef)
1*fae548d3Szrj /* Target definitions for NN-bit ELF
2*fae548d3Szrj    Copyright (C) 1993-2020 Free Software Foundation, Inc.
3*fae548d3Szrj 
4*fae548d3Szrj    This file is part of BFD, the Binary File Descriptor library.
5*fae548d3Szrj 
6*fae548d3Szrj    This program is free software; you can redistribute it and/or modify
7*fae548d3Szrj    it under the terms of the GNU General Public License as published by
8*fae548d3Szrj    the Free Software Foundation; either version 3 of the License, or
9*fae548d3Szrj    (at your option) any later version.
10*fae548d3Szrj 
11*fae548d3Szrj    This program is distributed in the hope that it will be useful,
12*fae548d3Szrj    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*fae548d3Szrj    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*fae548d3Szrj    GNU General Public License for more details.
15*fae548d3Szrj 
16*fae548d3Szrj    You should have received a copy of the GNU General Public License
17*fae548d3Szrj    along with this program; if not, write to the Free Software
18*fae548d3Szrj    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
19*fae548d3Szrj    MA 02110-1301, USA.  */
20*fae548d3Szrj 
21*fae548d3Szrj 
22*fae548d3Szrj /* This structure contains everything that BFD knows about a target.
23*fae548d3Szrj    It includes things like its byte order, name, what routines to call
24*fae548d3Szrj    to do various operations, etc.  Every BFD points to a target structure
25*fae548d3Szrj    with its "xvec" member.
26*fae548d3Szrj 
27*fae548d3Szrj    There are two such structures here:  one for big-endian machines and
28*fae548d3Szrj    one for little-endian machines.   */
29*fae548d3Szrj 
30*fae548d3Szrj #ifndef bfd_elfNN_close_and_cleanup
31*fae548d3Szrj #define	bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup
32*fae548d3Szrj #endif
33*fae548d3Szrj #ifndef bfd_elfNN_bfd_free_cached_info
34*fae548d3Szrj #define bfd_elfNN_bfd_free_cached_info _bfd_free_cached_info
35*fae548d3Szrj #endif
36*fae548d3Szrj #ifndef bfd_elfNN_get_section_contents
37*fae548d3Szrj #define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents
38*fae548d3Szrj #endif
39*fae548d3Szrj 
40*fae548d3Szrj #define bfd_elfNN_canonicalize_dynamic_symtab \
41*fae548d3Szrj   _bfd_elf_canonicalize_dynamic_symtab
42*fae548d3Szrj #ifndef bfd_elfNN_get_synthetic_symtab
43*fae548d3Szrj #define bfd_elfNN_get_synthetic_symtab \
44*fae548d3Szrj   _bfd_elf_get_synthetic_symtab
45*fae548d3Szrj #endif
46*fae548d3Szrj #ifndef bfd_elfNN_canonicalize_reloc
47*fae548d3Szrj #define bfd_elfNN_canonicalize_reloc	_bfd_elf_canonicalize_reloc
48*fae548d3Szrj #endif
49*fae548d3Szrj #ifndef bfd_elfNN_set_reloc
50*fae548d3Szrj #define bfd_elfNN_set_reloc		_bfd_generic_set_reloc
51*fae548d3Szrj #endif
52*fae548d3Szrj #ifndef bfd_elfNN_find_nearest_line
53*fae548d3Szrj #define bfd_elfNN_find_nearest_line	_bfd_elf_find_nearest_line
54*fae548d3Szrj #endif
55*fae548d3Szrj #ifndef bfd_elfNN_find_line
56*fae548d3Szrj #define bfd_elfNN_find_line		_bfd_elf_find_line
57*fae548d3Szrj #endif
58*fae548d3Szrj #ifndef bfd_elfNN_find_inliner_info
59*fae548d3Szrj #define bfd_elfNN_find_inliner_info	_bfd_elf_find_inliner_info
60*fae548d3Szrj #endif
61*fae548d3Szrj #define bfd_elfNN_read_minisymbols	_bfd_elf_read_minisymbols
62*fae548d3Szrj #define bfd_elfNN_minisymbol_to_symbol	_bfd_elf_minisymbol_to_symbol
63*fae548d3Szrj #define bfd_elfNN_get_dynamic_symtab_upper_bound \
64*fae548d3Szrj   _bfd_elf_get_dynamic_symtab_upper_bound
65*fae548d3Szrj #define bfd_elfNN_get_lineno		_bfd_elf_get_lineno
66*fae548d3Szrj #ifndef bfd_elfNN_get_reloc_upper_bound
67*fae548d3Szrj #define bfd_elfNN_get_reloc_upper_bound _bfd_elf_get_reloc_upper_bound
68*fae548d3Szrj #endif
69*fae548d3Szrj #ifndef bfd_elfNN_get_symbol_info
70*fae548d3Szrj #define bfd_elfNN_get_symbol_info	_bfd_elf_get_symbol_info
71*fae548d3Szrj #endif
72*fae548d3Szrj #ifndef bfd_elfNN_get_symbol_version_string
73*fae548d3Szrj #define bfd_elfNN_get_symbol_version_string \
74*fae548d3Szrj   _bfd_elf_get_symbol_version_string
75*fae548d3Szrj #endif
76*fae548d3Szrj #define bfd_elfNN_canonicalize_symtab	_bfd_elf_canonicalize_symtab
77*fae548d3Szrj #define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound
78*fae548d3Szrj #define bfd_elfNN_make_empty_symbol	_bfd_elf_make_empty_symbol
79*fae548d3Szrj #ifndef bfd_elfNN_new_section_hook
80*fae548d3Szrj #define bfd_elfNN_new_section_hook	_bfd_elf_new_section_hook
81*fae548d3Szrj #endif
82*fae548d3Szrj #define bfd_elfNN_set_arch_mach		_bfd_elf_set_arch_mach
83*fae548d3Szrj #ifndef bfd_elfNN_set_section_contents
84*fae548d3Szrj #define bfd_elfNN_set_section_contents	_bfd_elf_set_section_contents
85*fae548d3Szrj #endif
86*fae548d3Szrj #define bfd_elfNN_sizeof_headers	_bfd_elf_sizeof_headers
87*fae548d3Szrj #define bfd_elfNN_write_object_contents _bfd_elf_write_object_contents
88*fae548d3Szrj #define bfd_elfNN_write_corefile_contents _bfd_elf_write_corefile_contents
89*fae548d3Szrj 
90*fae548d3Szrj #define bfd_elfNN_get_section_contents_in_window \
91*fae548d3Szrj   _bfd_generic_get_section_contents_in_window
92*fae548d3Szrj 
93*fae548d3Szrj #ifndef elf_backend_can_refcount
94*fae548d3Szrj #define elf_backend_can_refcount 0
95*fae548d3Szrj #endif
96*fae548d3Szrj #ifndef elf_backend_want_got_plt
97*fae548d3Szrj #define elf_backend_want_got_plt 0
98*fae548d3Szrj #endif
99*fae548d3Szrj #ifndef elf_backend_plt_readonly
100*fae548d3Szrj #define elf_backend_plt_readonly 0
101*fae548d3Szrj #endif
102*fae548d3Szrj #ifndef elf_backend_want_plt_sym
103*fae548d3Szrj #define elf_backend_want_plt_sym 0
104*fae548d3Szrj #endif
105*fae548d3Szrj #ifndef elf_backend_plt_not_loaded
106*fae548d3Szrj #define elf_backend_plt_not_loaded 0
107*fae548d3Szrj #endif
108*fae548d3Szrj #ifndef elf_backend_plt_alignment
109*fae548d3Szrj #define elf_backend_plt_alignment 2
110*fae548d3Szrj #endif
111*fae548d3Szrj #ifndef elf_backend_want_dynbss
112*fae548d3Szrj #define elf_backend_want_dynbss 1
113*fae548d3Szrj #endif
114*fae548d3Szrj #ifndef elf_backend_want_dynrelro
115*fae548d3Szrj #define elf_backend_want_dynrelro 0
116*fae548d3Szrj #endif
117*fae548d3Szrj #ifndef elf_backend_want_p_paddr_set_to_zero
118*fae548d3Szrj #define elf_backend_want_p_paddr_set_to_zero 0
119*fae548d3Szrj #endif
120*fae548d3Szrj #ifndef elf_backend_no_page_alias
121*fae548d3Szrj #define elf_backend_no_page_alias 0
122*fae548d3Szrj #endif
123*fae548d3Szrj #ifndef elf_backend_default_execstack
124*fae548d3Szrj #define elf_backend_default_execstack 1
125*fae548d3Szrj #endif
126*fae548d3Szrj #ifndef elf_backend_caches_rawsize
127*fae548d3Szrj #define elf_backend_caches_rawsize 0
128*fae548d3Szrj #endif
129*fae548d3Szrj #ifndef elf_backend_extern_protected_data
130*fae548d3Szrj #define elf_backend_extern_protected_data 0
131*fae548d3Szrj #endif
132*fae548d3Szrj #ifndef elf_backend_always_renumber_dynsyms
133*fae548d3Szrj #define elf_backend_always_renumber_dynsyms FALSE
134*fae548d3Szrj #endif
135*fae548d3Szrj #ifndef elf_backend_linux_prpsinfo32_ugid16
136*fae548d3Szrj #define elf_backend_linux_prpsinfo32_ugid16 FALSE
137*fae548d3Szrj #endif
138*fae548d3Szrj #ifndef elf_backend_linux_prpsinfo64_ugid16
139*fae548d3Szrj #define elf_backend_linux_prpsinfo64_ugid16 FALSE
140*fae548d3Szrj #endif
141*fae548d3Szrj #ifndef elf_backend_stack_align
142*fae548d3Szrj #define elf_backend_stack_align 16
143*fae548d3Szrj #endif
144*fae548d3Szrj #ifndef elf_backend_strtab_flags
145*fae548d3Szrj #define elf_backend_strtab_flags 0
146*fae548d3Szrj #endif
147*fae548d3Szrj 
148*fae548d3Szrj #define bfd_elfNN_bfd_debug_info_start		_bfd_void_bfd
149*fae548d3Szrj #define bfd_elfNN_bfd_debug_info_end		_bfd_void_bfd
150*fae548d3Szrj #define bfd_elfNN_bfd_debug_info_accumulate	_bfd_void_bfd_asection
151*fae548d3Szrj 
152*fae548d3Szrj #ifndef bfd_elfNN_bfd_get_relocated_section_contents
153*fae548d3Szrj #define bfd_elfNN_bfd_get_relocated_section_contents \
154*fae548d3Szrj   bfd_generic_get_relocated_section_contents
155*fae548d3Szrj #endif
156*fae548d3Szrj 
157*fae548d3Szrj #ifndef bfd_elfNN_bfd_relax_section
158*fae548d3Szrj #define bfd_elfNN_bfd_relax_section bfd_generic_relax_section
159*fae548d3Szrj #endif
160*fae548d3Szrj 
161*fae548d3Szrj #ifndef elf_backend_can_gc_sections
162*fae548d3Szrj #define elf_backend_can_gc_sections 0
163*fae548d3Szrj #endif
164*fae548d3Szrj #ifndef elf_backend_can_refcount
165*fae548d3Szrj #define elf_backend_can_refcount 0
166*fae548d3Szrj #endif
167*fae548d3Szrj #ifndef elf_backend_want_got_sym
168*fae548d3Szrj #define elf_backend_want_got_sym 1
169*fae548d3Szrj #endif
170*fae548d3Szrj #ifndef elf_backend_gc_keep
171*fae548d3Szrj #define elf_backend_gc_keep		_bfd_elf_gc_keep
172*fae548d3Szrj #endif
173*fae548d3Szrj #ifndef elf_backend_gc_mark_dynamic_ref
174*fae548d3Szrj #define elf_backend_gc_mark_dynamic_ref	bfd_elf_gc_mark_dynamic_ref_symbol
175*fae548d3Szrj #endif
176*fae548d3Szrj #ifndef elf_backend_gc_mark_hook
177*fae548d3Szrj #define elf_backend_gc_mark_hook	_bfd_elf_gc_mark_hook
178*fae548d3Szrj #endif
179*fae548d3Szrj #ifndef elf_backend_gc_mark_extra_sections
180*fae548d3Szrj #define elf_backend_gc_mark_extra_sections _bfd_elf_gc_mark_extra_sections
181*fae548d3Szrj #endif
182*fae548d3Szrj #ifndef bfd_elfNN_bfd_gc_sections
183*fae548d3Szrj #define bfd_elfNN_bfd_gc_sections bfd_elf_gc_sections
184*fae548d3Szrj #endif
185*fae548d3Szrj 
186*fae548d3Szrj #ifndef bfd_elfNN_bfd_merge_sections
187*fae548d3Szrj #define bfd_elfNN_bfd_merge_sections \
188*fae548d3Szrj   _bfd_elf_merge_sections
189*fae548d3Szrj #endif
190*fae548d3Szrj 
191*fae548d3Szrj #ifndef bfd_elfNN_bfd_is_group_section
192*fae548d3Szrj #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section
193*fae548d3Szrj #endif
194*fae548d3Szrj 
195*fae548d3Szrj #ifndef bfd_elfNN_bfd_group_name
196*fae548d3Szrj #define bfd_elfNN_bfd_group_name bfd_elf_group_name
197*fae548d3Szrj #endif
198*fae548d3Szrj 
199*fae548d3Szrj #ifndef bfd_elfNN_bfd_discard_group
200*fae548d3Szrj #define bfd_elfNN_bfd_discard_group bfd_generic_discard_group
201*fae548d3Szrj #endif
202*fae548d3Szrj 
203*fae548d3Szrj #ifndef bfd_elfNN_section_already_linked
204*fae548d3Szrj #define bfd_elfNN_section_already_linked \
205*fae548d3Szrj   _bfd_elf_section_already_linked
206*fae548d3Szrj #endif
207*fae548d3Szrj 
208*fae548d3Szrj #ifndef bfd_elfNN_bfd_define_common_symbol
209*fae548d3Szrj #define bfd_elfNN_bfd_define_common_symbol bfd_generic_define_common_symbol
210*fae548d3Szrj #endif
211*fae548d3Szrj 
212*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_hide_symbol
213*fae548d3Szrj #define bfd_elfNN_bfd_link_hide_symbol _bfd_elf_link_hide_symbol
214*fae548d3Szrj #endif
215*fae548d3Szrj 
216*fae548d3Szrj #ifndef bfd_elfNN_bfd_lookup_section_flags
217*fae548d3Szrj #define bfd_elfNN_bfd_lookup_section_flags bfd_elf_lookup_section_flags
218*fae548d3Szrj #endif
219*fae548d3Szrj 
220*fae548d3Szrj #ifndef bfd_elfNN_bfd_make_debug_symbol
221*fae548d3Szrj #define bfd_elfNN_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
222*fae548d3Szrj #endif
223*fae548d3Szrj 
224*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_private_symbol_data
225*fae548d3Szrj #define bfd_elfNN_bfd_copy_private_symbol_data \
226*fae548d3Szrj   _bfd_elf_copy_private_symbol_data
227*fae548d3Szrj #endif
228*fae548d3Szrj 
229*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_private_section_data
230*fae548d3Szrj #define bfd_elfNN_bfd_copy_private_section_data \
231*fae548d3Szrj   _bfd_elf_copy_private_section_data
232*fae548d3Szrj #endif
233*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_private_header_data
234*fae548d3Szrj #define bfd_elfNN_bfd_copy_private_header_data \
235*fae548d3Szrj   _bfd_elf_copy_private_header_data
236*fae548d3Szrj #endif
237*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_private_bfd_data
238*fae548d3Szrj #define bfd_elfNN_bfd_copy_private_bfd_data \
239*fae548d3Szrj   _bfd_elf_copy_private_bfd_data
240*fae548d3Szrj #endif
241*fae548d3Szrj #ifndef bfd_elfNN_bfd_print_private_bfd_data
242*fae548d3Szrj #define bfd_elfNN_bfd_print_private_bfd_data \
243*fae548d3Szrj   _bfd_elf_print_private_bfd_data
244*fae548d3Szrj #endif
245*fae548d3Szrj #ifndef bfd_elfNN_bfd_merge_private_bfd_data
246*fae548d3Szrj #define bfd_elfNN_bfd_merge_private_bfd_data _bfd_bool_bfd_link_true
247*fae548d3Szrj #endif
248*fae548d3Szrj #ifndef bfd_elfNN_bfd_set_private_flags
249*fae548d3Szrj #define bfd_elfNN_bfd_set_private_flags _bfd_bool_bfd_uint_true
250*fae548d3Szrj #endif
251*fae548d3Szrj #ifndef bfd_elfNN_bfd_is_local_label_name
252*fae548d3Szrj #define bfd_elfNN_bfd_is_local_label_name _bfd_elf_is_local_label_name
253*fae548d3Szrj #endif
254*fae548d3Szrj #ifndef bfd_elfNN_bfd_is_target_special_symbol
255*fae548d3Szrj #define bfd_elfNN_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
256*fae548d3Szrj #endif
257*fae548d3Szrj 
258*fae548d3Szrj #ifndef bfd_elfNN_get_dynamic_reloc_upper_bound
259*fae548d3Szrj #define bfd_elfNN_get_dynamic_reloc_upper_bound \
260*fae548d3Szrj   _bfd_elf_get_dynamic_reloc_upper_bound
261*fae548d3Szrj #endif
262*fae548d3Szrj #ifndef bfd_elfNN_canonicalize_dynamic_reloc
263*fae548d3Szrj #define bfd_elfNN_canonicalize_dynamic_reloc \
264*fae548d3Szrj   _bfd_elf_canonicalize_dynamic_reloc
265*fae548d3Szrj #endif
266*fae548d3Szrj 
267*fae548d3Szrj #ifdef elf_backend_relocate_section
268*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_hash_table_create
269*fae548d3Szrj #define bfd_elfNN_bfd_link_hash_table_create _bfd_elf_link_hash_table_create
270*fae548d3Szrj #endif
271*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type
272*fae548d3Szrj #define bfd_elfNN_bfd_copy_link_hash_symbol_type \
273*fae548d3Szrj   _bfd_elf_copy_link_hash_symbol_type
274*fae548d3Szrj #endif
275*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_add_symbols
276*fae548d3Szrj #define bfd_elfNN_bfd_link_add_symbols	bfd_elf_link_add_symbols
277*fae548d3Szrj #endif
278*fae548d3Szrj #ifndef bfd_elfNN_bfd_define_start_stop
279*fae548d3Szrj #define bfd_elfNN_bfd_define_start_stop bfd_elf_define_start_stop
280*fae548d3Szrj #endif
281*fae548d3Szrj #ifndef bfd_elfNN_bfd_final_link
282*fae548d3Szrj #define bfd_elfNN_bfd_final_link	bfd_elf_final_link
283*fae548d3Szrj #endif
284*fae548d3Szrj #else /* ! defined (elf_backend_relocate_section) */
285*fae548d3Szrj /* If no backend relocate_section routine, use the generic linker.
286*fae548d3Szrj    Note - this will prevent the port from being able to use some of
287*fae548d3Szrj    the other features of the ELF linker, because the generic hash structure
288*fae548d3Szrj    does not have the fields needed by the ELF linker.  In particular it
289*fae548d3Szrj    means that linking directly to S-records will not work.  */
290*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_hash_table_create
291*fae548d3Szrj #define bfd_elfNN_bfd_link_hash_table_create \
292*fae548d3Szrj   _bfd_generic_link_hash_table_create
293*fae548d3Szrj #endif
294*fae548d3Szrj #ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type
295*fae548d3Szrj #define bfd_elfNN_bfd_copy_link_hash_symbol_type \
296*fae548d3Szrj   _bfd_generic_copy_link_hash_symbol_type
297*fae548d3Szrj #endif
298*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_add_symbols
299*fae548d3Szrj #define bfd_elfNN_bfd_link_add_symbols	_bfd_generic_link_add_symbols
300*fae548d3Szrj #endif
301*fae548d3Szrj #ifndef bfd_elfNN_bfd_define_start_stop
302*fae548d3Szrj #define bfd_elfNN_bfd_define_start_stop bfd_generic_define_start_stop
303*fae548d3Szrj #endif
304*fae548d3Szrj #ifndef bfd_elfNN_bfd_final_link
305*fae548d3Szrj #define bfd_elfNN_bfd_final_link	_bfd_generic_final_link
306*fae548d3Szrj #endif
307*fae548d3Szrj #endif /* ! defined (elf_backend_relocate_section) */
308*fae548d3Szrj 
309*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_just_syms
310*fae548d3Szrj #define bfd_elfNN_bfd_link_just_syms	_bfd_elf_link_just_syms
311*fae548d3Szrj #endif
312*fae548d3Szrj 
313*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_split_section
314*fae548d3Szrj #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section
315*fae548d3Szrj #endif
316*fae548d3Szrj 
317*fae548d3Szrj #ifndef bfd_elfNN_bfd_link_check_relocs
318*fae548d3Szrj #define bfd_elfNN_bfd_link_check_relocs  _bfd_elf_link_check_relocs
319*fae548d3Szrj #endif
320*fae548d3Szrj 
321*fae548d3Szrj #ifndef bfd_elfNN_archive_p
322*fae548d3Szrj #define bfd_elfNN_archive_p bfd_generic_archive_p
323*fae548d3Szrj #endif
324*fae548d3Szrj 
325*fae548d3Szrj #ifndef bfd_elfNN_write_archive_contents
326*fae548d3Szrj #define bfd_elfNN_write_archive_contents _bfd_write_archive_contents
327*fae548d3Szrj #endif
328*fae548d3Szrj 
329*fae548d3Szrj #ifndef bfd_elfNN_mkobject
330*fae548d3Szrj #define bfd_elfNN_mkobject bfd_elf_make_object
331*fae548d3Szrj #endif
332*fae548d3Szrj 
333*fae548d3Szrj #ifndef bfd_elfNN_mkcorefile
334*fae548d3Szrj #define bfd_elfNN_mkcorefile bfd_elf_mkcorefile
335*fae548d3Szrj #endif
336*fae548d3Szrj 
337*fae548d3Szrj #ifndef bfd_elfNN_mkarchive
338*fae548d3Szrj #define bfd_elfNN_mkarchive _bfd_generic_mkarchive
339*fae548d3Szrj #endif
340*fae548d3Szrj 
341*fae548d3Szrj #ifndef bfd_elfNN_print_symbol
342*fae548d3Szrj #define bfd_elfNN_print_symbol bfd_elf_print_symbol
343*fae548d3Szrj #endif
344*fae548d3Szrj 
345*fae548d3Szrj #ifndef elf_symbol_leading_char
346*fae548d3Szrj #define elf_symbol_leading_char 0
347*fae548d3Szrj #endif
348*fae548d3Szrj 
349*fae548d3Szrj #ifndef elf_info_to_howto
350*fae548d3Szrj #define elf_info_to_howto NULL
351*fae548d3Szrj #endif
352*fae548d3Szrj 
353*fae548d3Szrj #ifndef elf_info_to_howto_rel
354*fae548d3Szrj #define elf_info_to_howto_rel NULL
355*fae548d3Szrj #endif
356*fae548d3Szrj 
357*fae548d3Szrj #ifndef elf_backend_arch_data
358*fae548d3Szrj #define elf_backend_arch_data NULL
359*fae548d3Szrj #endif
360*fae548d3Szrj 
361*fae548d3Szrj #ifndef ELF_TARGET_ID
362*fae548d3Szrj #define ELF_TARGET_ID	GENERIC_ELF_DATA
363*fae548d3Szrj #endif
364*fae548d3Szrj 
365*fae548d3Szrj #ifndef ELF_OSABI
366*fae548d3Szrj #define ELF_OSABI ELFOSABI_NONE
367*fae548d3Szrj #endif
368*fae548d3Szrj 
369*fae548d3Szrj #ifndef ELF_MAXPAGESIZE
370*fae548d3Szrj # error ELF_MAXPAGESIZE is not defined
371*fae548d3Szrj #define ELF_MAXPAGESIZE 1
372*fae548d3Szrj #endif
373*fae548d3Szrj 
374*fae548d3Szrj #ifndef ELF_COMMONPAGESIZE
375*fae548d3Szrj #define ELF_COMMONPAGESIZE ELF_MAXPAGESIZE
376*fae548d3Szrj #endif
377*fae548d3Szrj 
378*fae548d3Szrj #ifndef ELF_RELROPAGESIZE
379*fae548d3Szrj #define ELF_RELROPAGESIZE ELF_COMMONPAGESIZE
380*fae548d3Szrj #endif
381*fae548d3Szrj 
382*fae548d3Szrj #ifndef ELF_MINPAGESIZE
383*fae548d3Szrj #define ELF_MINPAGESIZE ELF_COMMONPAGESIZE
384*fae548d3Szrj #endif
385*fae548d3Szrj 
386*fae548d3Szrj #if ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
387*fae548d3Szrj # error ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
388*fae548d3Szrj #endif
389*fae548d3Szrj #if ELF_RELROPAGESIZE > ELF_MAXPAGESIZE
390*fae548d3Szrj # error ELF_RELROPAGESIZE > ELF_MAXPAGESIZE
391*fae548d3Szrj #endif
392*fae548d3Szrj #if ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
393*fae548d3Szrj # error ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
394*fae548d3Szrj #endif
395*fae548d3Szrj #if ELF_MINPAGESIZE > ELF_RELROPAGESIZE
396*fae548d3Szrj # error ELF_MINPAGESIZE > ELF_RELROPAGESIZE
397*fae548d3Szrj #endif
398*fae548d3Szrj 
399*fae548d3Szrj #ifndef ELF_DYNAMIC_SEC_FLAGS
400*fae548d3Szrj /* Note that we set the SEC_IN_MEMORY flag for these sections.  */
401*fae548d3Szrj #define ELF_DYNAMIC_SEC_FLAGS			\
402*fae548d3Szrj   (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS	\
403*fae548d3Szrj    | SEC_IN_MEMORY | SEC_LINKER_CREATED)
404*fae548d3Szrj #endif
405*fae548d3Szrj 
406*fae548d3Szrj #ifndef elf_backend_collect
407*fae548d3Szrj #define elf_backend_collect FALSE
408*fae548d3Szrj #endif
409*fae548d3Szrj #ifndef elf_backend_type_change_ok
410*fae548d3Szrj #define elf_backend_type_change_ok FALSE
411*fae548d3Szrj #endif
412*fae548d3Szrj 
413*fae548d3Szrj #ifndef elf_backend_sym_is_global
414*fae548d3Szrj #define elf_backend_sym_is_global	0
415*fae548d3Szrj #endif
416*fae548d3Szrj #ifndef elf_backend_object_p
417*fae548d3Szrj #define elf_backend_object_p		0
418*fae548d3Szrj #endif
419*fae548d3Szrj #ifndef elf_backend_symbol_processing
420*fae548d3Szrj #define elf_backend_symbol_processing	0
421*fae548d3Szrj #endif
422*fae548d3Szrj #ifndef elf_backend_symbol_table_processing
423*fae548d3Szrj #define elf_backend_symbol_table_processing	0
424*fae548d3Szrj #endif
425*fae548d3Szrj #ifndef elf_backend_get_symbol_type
426*fae548d3Szrj #define elf_backend_get_symbol_type 0
427*fae548d3Szrj #endif
428*fae548d3Szrj #ifndef elf_backend_archive_symbol_lookup
429*fae548d3Szrj #define elf_backend_archive_symbol_lookup _bfd_elf_archive_symbol_lookup
430*fae548d3Szrj #endif
431*fae548d3Szrj #ifndef elf_backend_name_local_section_symbols
432*fae548d3Szrj #define elf_backend_name_local_section_symbols	0
433*fae548d3Szrj #endif
434*fae548d3Szrj #ifndef elf_backend_section_processing
435*fae548d3Szrj #define elf_backend_section_processing	0
436*fae548d3Szrj #endif
437*fae548d3Szrj #ifndef elf_backend_section_from_shdr
438*fae548d3Szrj #define elf_backend_section_from_shdr	_bfd_elf_make_section_from_shdr
439*fae548d3Szrj #endif
440*fae548d3Szrj #ifndef elf_backend_section_flags
441*fae548d3Szrj #define elf_backend_section_flags	0
442*fae548d3Szrj #endif
443*fae548d3Szrj #ifndef elf_backend_get_sec_type_attr
444*fae548d3Szrj #define elf_backend_get_sec_type_attr	_bfd_elf_get_sec_type_attr
445*fae548d3Szrj #endif
446*fae548d3Szrj #ifndef elf_backend_section_from_phdr
447*fae548d3Szrj #define elf_backend_section_from_phdr	_bfd_elf_make_section_from_phdr
448*fae548d3Szrj #endif
449*fae548d3Szrj #ifndef elf_backend_fake_sections
450*fae548d3Szrj #define elf_backend_fake_sections	0
451*fae548d3Szrj #endif
452*fae548d3Szrj #ifndef elf_backend_section_from_bfd_section
453*fae548d3Szrj #define elf_backend_section_from_bfd_section	0
454*fae548d3Szrj #endif
455*fae548d3Szrj #ifndef elf_backend_add_symbol_hook
456*fae548d3Szrj #define elf_backend_add_symbol_hook	0
457*fae548d3Szrj #endif
458*fae548d3Szrj #ifndef elf_backend_link_output_symbol_hook
459*fae548d3Szrj #define elf_backend_link_output_symbol_hook 0
460*fae548d3Szrj #endif
461*fae548d3Szrj #ifndef elf_backend_create_dynamic_sections
462*fae548d3Szrj #define elf_backend_create_dynamic_sections 0
463*fae548d3Szrj #endif
464*fae548d3Szrj #ifndef elf_backend_omit_section_dynsym
465*fae548d3Szrj #define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_default
466*fae548d3Szrj #endif
467*fae548d3Szrj #ifndef elf_backend_relocs_compatible
468*fae548d3Szrj #define elf_backend_relocs_compatible _bfd_elf_default_relocs_compatible
469*fae548d3Szrj #endif
470*fae548d3Szrj #ifndef elf_backend_check_relocs
471*fae548d3Szrj #define elf_backend_check_relocs	0
472*fae548d3Szrj #endif
473*fae548d3Szrj #ifndef elf_backend_check_directives
474*fae548d3Szrj #define elf_backend_check_directives	0
475*fae548d3Szrj #endif
476*fae548d3Szrj #ifndef elf_backend_notice_as_needed
477*fae548d3Szrj #define elf_backend_notice_as_needed	_bfd_elf_notice_as_needed
478*fae548d3Szrj #endif
479*fae548d3Szrj #ifndef elf_backend_adjust_dynamic_symbol
480*fae548d3Szrj #define elf_backend_adjust_dynamic_symbol 0
481*fae548d3Szrj #endif
482*fae548d3Szrj #ifndef elf_backend_always_size_sections
483*fae548d3Szrj #define elf_backend_always_size_sections 0
484*fae548d3Szrj #endif
485*fae548d3Szrj #ifndef elf_backend_size_dynamic_sections
486*fae548d3Szrj #define elf_backend_size_dynamic_sections 0
487*fae548d3Szrj #endif
488*fae548d3Szrj #ifndef elf_backend_init_index_section
489*fae548d3Szrj #define elf_backend_init_index_section _bfd_void_bfd_link
490*fae548d3Szrj #endif
491*fae548d3Szrj #ifndef elf_backend_relocate_section
492*fae548d3Szrj #define elf_backend_relocate_section	0
493*fae548d3Szrj #endif
494*fae548d3Szrj #ifndef elf_backend_finish_dynamic_symbol
495*fae548d3Szrj #define elf_backend_finish_dynamic_symbol	0
496*fae548d3Szrj #endif
497*fae548d3Szrj #ifndef elf_backend_finish_dynamic_sections
498*fae548d3Szrj #define elf_backend_finish_dynamic_sections	0
499*fae548d3Szrj #endif
500*fae548d3Szrj #ifndef elf_backend_begin_write_processing
501*fae548d3Szrj #define elf_backend_begin_write_processing	0
502*fae548d3Szrj #endif
503*fae548d3Szrj #ifndef elf_backend_final_write_processing
504*fae548d3Szrj #define elf_backend_final_write_processing	_bfd_elf_final_write_processing
505*fae548d3Szrj #endif
506*fae548d3Szrj #ifndef elf_backend_additional_program_headers
507*fae548d3Szrj #define elf_backend_additional_program_headers	0
508*fae548d3Szrj #endif
509*fae548d3Szrj #ifndef elf_backend_modify_segment_map
510*fae548d3Szrj #define elf_backend_modify_segment_map	0
511*fae548d3Szrj #endif
512*fae548d3Szrj #ifndef elf_backend_modify_headers
513*fae548d3Szrj #define elf_backend_modify_headers		_bfd_elf_modify_headers
514*fae548d3Szrj #endif
515*fae548d3Szrj #ifndef elf_backend_allow_non_load_phdr
516*fae548d3Szrj #define elf_backend_allow_non_load_phdr	0
517*fae548d3Szrj #endif
518*fae548d3Szrj #ifndef elf_backend_ecoff_debug_swap
519*fae548d3Szrj #define elf_backend_ecoff_debug_swap	0
520*fae548d3Szrj #endif
521*fae548d3Szrj #ifndef elf_backend_bfd_from_remote_memory
522*fae548d3Szrj #define elf_backend_bfd_from_remote_memory _bfd_elfNN_bfd_from_remote_memory
523*fae548d3Szrj #endif
524*fae548d3Szrj #ifndef elf_backend_core_find_build_id
525*fae548d3Szrj #define elf_backend_core_find_build_id _bfd_elfNN_core_find_build_id
526*fae548d3Szrj #endif
527*fae548d3Szrj #ifndef elf_backend_got_header_size
528*fae548d3Szrj #define elf_backend_got_header_size	0
529*fae548d3Szrj #endif
530*fae548d3Szrj #ifndef elf_backend_got_elt_size
531*fae548d3Szrj #define elf_backend_got_elt_size _bfd_elf_default_got_elt_size
532*fae548d3Szrj #endif
533*fae548d3Szrj #ifndef elf_backend_obj_attrs_vendor
534*fae548d3Szrj #define elf_backend_obj_attrs_vendor		NULL
535*fae548d3Szrj #endif
536*fae548d3Szrj #ifndef elf_backend_obj_attrs_section
537*fae548d3Szrj #define elf_backend_obj_attrs_section		NULL
538*fae548d3Szrj #endif
539*fae548d3Szrj #ifndef elf_backend_obj_attrs_arg_type
540*fae548d3Szrj #define elf_backend_obj_attrs_arg_type		NULL
541*fae548d3Szrj #endif
542*fae548d3Szrj #ifndef elf_backend_obj_attrs_section_type
543*fae548d3Szrj #define elf_backend_obj_attrs_section_type		SHT_GNU_ATTRIBUTES
544*fae548d3Szrj #endif
545*fae548d3Szrj #ifndef elf_backend_obj_attrs_order
546*fae548d3Szrj #define elf_backend_obj_attrs_order		NULL
547*fae548d3Szrj #endif
548*fae548d3Szrj #ifndef elf_backend_obj_attrs_handle_unknown
549*fae548d3Szrj #define elf_backend_obj_attrs_handle_unknown	NULL
550*fae548d3Szrj #endif
551*fae548d3Szrj #ifndef elf_backend_parse_gnu_properties
552*fae548d3Szrj #define elf_backend_parse_gnu_properties	NULL
553*fae548d3Szrj #endif
554*fae548d3Szrj #ifndef elf_backend_merge_gnu_properties
555*fae548d3Szrj #define elf_backend_merge_gnu_properties	NULL
556*fae548d3Szrj #endif
557*fae548d3Szrj #ifndef elf_backend_setup_gnu_properties
558*fae548d3Szrj #define elf_backend_setup_gnu_properties	_bfd_elf_link_setup_gnu_properties
559*fae548d3Szrj #endif
560*fae548d3Szrj #ifndef elf_backend_fixup_gnu_properties
561*fae548d3Szrj #define elf_backend_fixup_gnu_properties	NULL
562*fae548d3Szrj #endif
563*fae548d3Szrj #ifndef elf_backend_static_tls_alignment
564*fae548d3Szrj #define elf_backend_static_tls_alignment	1
565*fae548d3Szrj #endif
566*fae548d3Szrj #ifndef elf_backend_init_file_header
567*fae548d3Szrj #define elf_backend_init_file_header		_bfd_elf_init_file_header
568*fae548d3Szrj #endif
569*fae548d3Szrj #ifndef elf_backend_print_symbol_all
570*fae548d3Szrj #define elf_backend_print_symbol_all		NULL
571*fae548d3Szrj #endif
572*fae548d3Szrj #ifndef elf_backend_output_arch_local_syms
573*fae548d3Szrj #define elf_backend_output_arch_local_syms	NULL
574*fae548d3Szrj #endif
575*fae548d3Szrj #ifndef elf_backend_output_arch_syms
576*fae548d3Szrj #define elf_backend_output_arch_syms		NULL
577*fae548d3Szrj #endif
578*fae548d3Szrj #ifndef elf_backend_filter_implib_symbols
579*fae548d3Szrj #define elf_backend_filter_implib_symbols	NULL
580*fae548d3Szrj #endif
581*fae548d3Szrj #ifndef elf_backend_copy_indirect_symbol
582*fae548d3Szrj #define elf_backend_copy_indirect_symbol	_bfd_elf_link_hash_copy_indirect
583*fae548d3Szrj #endif
584*fae548d3Szrj #ifndef elf_backend_hide_symbol
585*fae548d3Szrj #define elf_backend_hide_symbol			_bfd_elf_link_hash_hide_symbol
586*fae548d3Szrj #endif
587*fae548d3Szrj #ifndef elf_backend_fixup_symbol
588*fae548d3Szrj #define elf_backend_fixup_symbol		NULL
589*fae548d3Szrj #endif
590*fae548d3Szrj #ifndef elf_backend_merge_symbol_attribute
591*fae548d3Szrj #define elf_backend_merge_symbol_attribute	NULL
592*fae548d3Szrj #endif
593*fae548d3Szrj #ifndef elf_backend_get_target_dtag
594*fae548d3Szrj #define elf_backend_get_target_dtag		NULL
595*fae548d3Szrj #endif
596*fae548d3Szrj #ifndef elf_backend_ignore_undef_symbol
597*fae548d3Szrj #define elf_backend_ignore_undef_symbol		NULL
598*fae548d3Szrj #endif
599*fae548d3Szrj #ifndef elf_backend_emit_relocs
600*fae548d3Szrj #define elf_backend_emit_relocs			_bfd_elf_link_output_relocs
601*fae548d3Szrj #endif
602*fae548d3Szrj #ifndef elf_backend_update_relocs
603*fae548d3Szrj #define elf_backend_update_relocs		NULL
604*fae548d3Szrj #endif
605*fae548d3Szrj #ifndef elf_backend_count_relocs
606*fae548d3Szrj #define elf_backend_count_relocs		NULL
607*fae548d3Szrj #endif
608*fae548d3Szrj #ifndef elf_backend_count_additional_relocs
609*fae548d3Szrj #define elf_backend_count_additional_relocs	NULL
610*fae548d3Szrj #endif
611*fae548d3Szrj #ifndef elf_backend_sort_relocs_p
612*fae548d3Szrj #define elf_backend_sort_relocs_p		NULL
613*fae548d3Szrj #endif
614*fae548d3Szrj #ifndef elf_backend_grok_prstatus
615*fae548d3Szrj #define elf_backend_grok_prstatus		NULL
616*fae548d3Szrj #endif
617*fae548d3Szrj #ifndef elf_backend_grok_psinfo
618*fae548d3Szrj #define elf_backend_grok_psinfo			NULL
619*fae548d3Szrj #endif
620*fae548d3Szrj #ifndef elf_backend_grok_freebsd_prstatus
621*fae548d3Szrj #define elf_backend_grok_freebsd_prstatus	NULL
622*fae548d3Szrj #endif
623*fae548d3Szrj #ifndef elf_backend_write_core_note
624*fae548d3Szrj #define elf_backend_write_core_note		NULL
625*fae548d3Szrj #endif
626*fae548d3Szrj #ifndef elf_backend_lookup_section_flags_hook
627*fae548d3Szrj #define elf_backend_lookup_section_flags_hook	NULL
628*fae548d3Szrj #endif
629*fae548d3Szrj #ifndef elf_backend_reloc_type_class
630*fae548d3Szrj #define elf_backend_reloc_type_class		_bfd_elf_reloc_type_class
631*fae548d3Szrj #endif
632*fae548d3Szrj #ifndef elf_backend_discard_info
633*fae548d3Szrj #define elf_backend_discard_info		NULL
634*fae548d3Szrj #endif
635*fae548d3Szrj #ifndef elf_backend_ignore_discarded_relocs
636*fae548d3Szrj #define elf_backend_ignore_discarded_relocs	NULL
637*fae548d3Szrj #endif
638*fae548d3Szrj #ifndef elf_backend_action_discarded
639*fae548d3Szrj #define elf_backend_action_discarded _bfd_elf_default_action_discarded
640*fae548d3Szrj #endif
641*fae548d3Szrj #ifndef elf_backend_eh_frame_address_size
642*fae548d3Szrj #define elf_backend_eh_frame_address_size _bfd_elf_eh_frame_address_size
643*fae548d3Szrj #endif
644*fae548d3Szrj #ifndef elf_backend_can_make_relative_eh_frame
645*fae548d3Szrj #define elf_backend_can_make_relative_eh_frame	_bfd_elf_can_make_relative
646*fae548d3Szrj #endif
647*fae548d3Szrj #ifndef elf_backend_can_make_lsda_relative_eh_frame
648*fae548d3Szrj #define elf_backend_can_make_lsda_relative_eh_frame	_bfd_elf_can_make_relative
649*fae548d3Szrj #endif
650*fae548d3Szrj #ifndef elf_backend_encode_eh_address
651*fae548d3Szrj #define elf_backend_encode_eh_address		_bfd_elf_encode_eh_address
652*fae548d3Szrj #endif
653*fae548d3Szrj #ifndef elf_backend_write_section
654*fae548d3Szrj #define elf_backend_write_section		NULL
655*fae548d3Szrj #endif
656*fae548d3Szrj #ifndef elf_backend_mips_irix_compat
657*fae548d3Szrj #define elf_backend_mips_irix_compat		NULL
658*fae548d3Szrj #endif
659*fae548d3Szrj #ifndef elf_backend_mips_rtype_to_howto
660*fae548d3Szrj #define elf_backend_mips_rtype_to_howto		NULL
661*fae548d3Szrj #endif
662*fae548d3Szrj 
663*fae548d3Szrj /* Previously, backends could only use SHT_REL or SHT_RELA relocation
664*fae548d3Szrj    sections, but not both.  They defined USE_REL to indicate SHT_REL
665*fae548d3Szrj    sections, and left it undefined to indicated SHT_RELA sections.
666*fae548d3Szrj    For backwards compatibility, we still support this usage.  */
667*fae548d3Szrj #ifndef USE_REL
668*fae548d3Szrj #define USE_REL 0
669*fae548d3Szrj #endif
670*fae548d3Szrj 
671*fae548d3Szrj /* Use these in new code.  */
672*fae548d3Szrj #ifndef elf_backend_may_use_rel_p
673*fae548d3Szrj #define elf_backend_may_use_rel_p USE_REL
674*fae548d3Szrj #endif
675*fae548d3Szrj #ifndef elf_backend_may_use_rela_p
676*fae548d3Szrj #define elf_backend_may_use_rela_p !USE_REL
677*fae548d3Szrj #endif
678*fae548d3Szrj #ifndef elf_backend_default_use_rela_p
679*fae548d3Szrj #define elf_backend_default_use_rela_p !USE_REL
680*fae548d3Szrj #endif
681*fae548d3Szrj #ifndef elf_backend_rela_plts_and_copies_p
682*fae548d3Szrj #define elf_backend_rela_plts_and_copies_p elf_backend_default_use_rela_p
683*fae548d3Szrj #endif
684*fae548d3Szrj 
685*fae548d3Szrj #ifndef elf_backend_rela_normal
686*fae548d3Szrj #define elf_backend_rela_normal 0
687*fae548d3Szrj #endif
688*fae548d3Szrj 
689*fae548d3Szrj #ifndef elf_backend_dtrel_excludes_plt
690*fae548d3Szrj #define elf_backend_dtrel_excludes_plt 0
691*fae548d3Szrj #endif
692*fae548d3Szrj 
693*fae548d3Szrj #ifndef elf_backend_plt_sym_val
694*fae548d3Szrj #define elf_backend_plt_sym_val NULL
695*fae548d3Szrj #endif
696*fae548d3Szrj #ifndef elf_backend_relplt_name
697*fae548d3Szrj #define elf_backend_relplt_name NULL
698*fae548d3Szrj #endif
699*fae548d3Szrj 
700*fae548d3Szrj #ifndef ELF_MACHINE_ALT1
701*fae548d3Szrj #define ELF_MACHINE_ALT1 0
702*fae548d3Szrj #endif
703*fae548d3Szrj 
704*fae548d3Szrj #ifndef ELF_MACHINE_ALT2
705*fae548d3Szrj #define ELF_MACHINE_ALT2 0
706*fae548d3Szrj #endif
707*fae548d3Szrj 
708*fae548d3Szrj #ifndef elf_backend_size_info
709*fae548d3Szrj #define elf_backend_size_info _bfd_elfNN_size_info
710*fae548d3Szrj #endif
711*fae548d3Szrj 
712*fae548d3Szrj #ifndef elf_backend_special_sections
713*fae548d3Szrj #define elf_backend_special_sections NULL
714*fae548d3Szrj #endif
715*fae548d3Szrj 
716*fae548d3Szrj #ifndef elf_backend_sign_extend_vma
717*fae548d3Szrj #define elf_backend_sign_extend_vma 0
718*fae548d3Szrj #endif
719*fae548d3Szrj 
720*fae548d3Szrj #ifndef elf_backend_link_order_error_handler
721*fae548d3Szrj #define elf_backend_link_order_error_handler _bfd_error_handler
722*fae548d3Szrj #endif
723*fae548d3Szrj 
724*fae548d3Szrj #ifndef elf_backend_common_definition
725*fae548d3Szrj #define elf_backend_common_definition _bfd_elf_common_definition
726*fae548d3Szrj #endif
727*fae548d3Szrj 
728*fae548d3Szrj #ifndef elf_backend_common_section_index
729*fae548d3Szrj #define elf_backend_common_section_index _bfd_elf_common_section_index
730*fae548d3Szrj #endif
731*fae548d3Szrj 
732*fae548d3Szrj #ifndef elf_backend_common_section
733*fae548d3Szrj #define elf_backend_common_section _bfd_elf_common_section
734*fae548d3Szrj #endif
735*fae548d3Szrj 
736*fae548d3Szrj #ifndef elf_backend_merge_symbol
737*fae548d3Szrj #define elf_backend_merge_symbol NULL
738*fae548d3Szrj #endif
739*fae548d3Szrj 
740*fae548d3Szrj #ifndef elf_backend_hash_symbol
741*fae548d3Szrj #define elf_backend_hash_symbol _bfd_elf_hash_symbol
742*fae548d3Szrj #endif
743*fae548d3Szrj 
744*fae548d3Szrj #ifndef elf_backend_record_xhash_symbol
745*fae548d3Szrj #define elf_backend_record_xhash_symbol NULL
746*fae548d3Szrj #endif
747*fae548d3Szrj 
748*fae548d3Szrj #ifndef elf_backend_is_function_type
749*fae548d3Szrj #define elf_backend_is_function_type _bfd_elf_is_function_type
750*fae548d3Szrj #endif
751*fae548d3Szrj 
752*fae548d3Szrj #ifndef elf_backend_maybe_function_sym
753*fae548d3Szrj #define elf_backend_maybe_function_sym _bfd_elf_maybe_function_sym
754*fae548d3Szrj #endif
755*fae548d3Szrj 
756*fae548d3Szrj #ifndef elf_backend_get_reloc_section
757*fae548d3Szrj #define elf_backend_get_reloc_section _bfd_elf_plt_get_reloc_section
758*fae548d3Szrj #endif
759*fae548d3Szrj 
760*fae548d3Szrj #ifndef elf_backend_copy_special_section_fields
761*fae548d3Szrj #define elf_backend_copy_special_section_fields NULL
762*fae548d3Szrj #endif
763*fae548d3Szrj 
764*fae548d3Szrj #ifndef elf_backend_compact_eh_encoding
765*fae548d3Szrj #define elf_backend_compact_eh_encoding NULL
766*fae548d3Szrj #endif
767*fae548d3Szrj 
768*fae548d3Szrj #ifndef elf_backend_cant_unwind_opcode
769*fae548d3Szrj #define elf_backend_cant_unwind_opcode 0
770*fae548d3Szrj #endif
771*fae548d3Szrj 
772*fae548d3Szrj #ifndef elf_match_priority
773*fae548d3Szrj #define elf_match_priority \
774*fae548d3Szrj   (ELF_ARCH == bfd_arch_unknown ? 2 : ELF_OSABI == ELFOSABI_NONE ? 1 : 0)
775*fae548d3Szrj #endif
776*fae548d3Szrj 
777*fae548d3Szrj extern const struct elf_size_info _bfd_elfNN_size_info;
778*fae548d3Szrj 
779*fae548d3Szrj static struct elf_backend_data elfNN_bed =
780*fae548d3Szrj {
781*fae548d3Szrj   ELF_ARCH,			/* arch */
782*fae548d3Szrj   ELF_TARGET_ID,		/* target_id */
783*fae548d3Szrj   ELF_MACHINE_CODE,		/* elf_machine_code */
784*fae548d3Szrj   ELF_OSABI,			/* elf_osabi  */
785*fae548d3Szrj   ELF_MAXPAGESIZE,		/* maxpagesize */
786*fae548d3Szrj   ELF_MINPAGESIZE,		/* minpagesize */
787*fae548d3Szrj   ELF_COMMONPAGESIZE,		/* commonpagesize */
788*fae548d3Szrj   ELF_RELROPAGESIZE,		/* commonpagesize to use with -z relro */
789*fae548d3Szrj   ELF_DYNAMIC_SEC_FLAGS,	/* dynamic_sec_flags */
790*fae548d3Szrj   elf_backend_arch_data,
791*fae548d3Szrj   elf_info_to_howto,
792*fae548d3Szrj   elf_info_to_howto_rel,
793*fae548d3Szrj   elf_backend_sym_is_global,
794*fae548d3Szrj   elf_backend_object_p,
795*fae548d3Szrj   elf_backend_symbol_processing,
796*fae548d3Szrj   elf_backend_symbol_table_processing,
797*fae548d3Szrj   elf_backend_get_symbol_type,
798*fae548d3Szrj   elf_backend_archive_symbol_lookup,
799*fae548d3Szrj   elf_backend_name_local_section_symbols,
800*fae548d3Szrj   elf_backend_section_processing,
801*fae548d3Szrj   elf_backend_section_from_shdr,
802*fae548d3Szrj   elf_backend_section_flags,
803*fae548d3Szrj   elf_backend_get_sec_type_attr,
804*fae548d3Szrj   elf_backend_section_from_phdr,
805*fae548d3Szrj   elf_backend_fake_sections,
806*fae548d3Szrj   elf_backend_section_from_bfd_section,
807*fae548d3Szrj   elf_backend_add_symbol_hook,
808*fae548d3Szrj   elf_backend_link_output_symbol_hook,
809*fae548d3Szrj   elf_backend_create_dynamic_sections,
810*fae548d3Szrj   elf_backend_omit_section_dynsym,
811*fae548d3Szrj   elf_backend_relocs_compatible,
812*fae548d3Szrj   elf_backend_check_relocs,
813*fae548d3Szrj   elf_backend_check_directives,
814*fae548d3Szrj   elf_backend_notice_as_needed,
815*fae548d3Szrj   elf_backend_adjust_dynamic_symbol,
816*fae548d3Szrj   elf_backend_always_size_sections,
817*fae548d3Szrj   elf_backend_size_dynamic_sections,
818*fae548d3Szrj   elf_backend_init_index_section,
819*fae548d3Szrj   elf_backend_relocate_section,
820*fae548d3Szrj   elf_backend_finish_dynamic_symbol,
821*fae548d3Szrj   elf_backend_finish_dynamic_sections,
822*fae548d3Szrj   elf_backend_begin_write_processing,
823*fae548d3Szrj   elf_backend_final_write_processing,
824*fae548d3Szrj   elf_backend_additional_program_headers,
825*fae548d3Szrj   elf_backend_modify_segment_map,
826*fae548d3Szrj   elf_backend_modify_headers,
827*fae548d3Szrj   elf_backend_allow_non_load_phdr,
828*fae548d3Szrj   elf_backend_gc_keep,
829*fae548d3Szrj   elf_backend_gc_mark_dynamic_ref,
830*fae548d3Szrj   elf_backend_gc_mark_hook,
831*fae548d3Szrj   elf_backend_gc_mark_extra_sections,
832*fae548d3Szrj   elf_backend_init_file_header,
833*fae548d3Szrj   elf_backend_print_symbol_all,
834*fae548d3Szrj   elf_backend_output_arch_local_syms,
835*fae548d3Szrj   elf_backend_output_arch_syms,
836*fae548d3Szrj   elf_backend_filter_implib_symbols,
837*fae548d3Szrj   elf_backend_copy_indirect_symbol,
838*fae548d3Szrj   elf_backend_hide_symbol,
839*fae548d3Szrj   elf_backend_fixup_symbol,
840*fae548d3Szrj   elf_backend_merge_symbol_attribute,
841*fae548d3Szrj   elf_backend_get_target_dtag,
842*fae548d3Szrj   elf_backend_ignore_undef_symbol,
843*fae548d3Szrj   elf_backend_emit_relocs,
844*fae548d3Szrj   elf_backend_update_relocs,
845*fae548d3Szrj   elf_backend_count_relocs,
846*fae548d3Szrj   elf_backend_count_additional_relocs,
847*fae548d3Szrj   elf_backend_sort_relocs_p,
848*fae548d3Szrj   elf_backend_grok_prstatus,
849*fae548d3Szrj   elf_backend_grok_psinfo,
850*fae548d3Szrj   elf_backend_grok_freebsd_prstatus,
851*fae548d3Szrj   elf_backend_write_core_note,
852*fae548d3Szrj   elf_backend_lookup_section_flags_hook,
853*fae548d3Szrj   elf_backend_reloc_type_class,
854*fae548d3Szrj   elf_backend_discard_info,
855*fae548d3Szrj   elf_backend_ignore_discarded_relocs,
856*fae548d3Szrj   elf_backend_action_discarded,
857*fae548d3Szrj   elf_backend_eh_frame_address_size,
858*fae548d3Szrj   elf_backend_can_make_relative_eh_frame,
859*fae548d3Szrj   elf_backend_can_make_lsda_relative_eh_frame,
860*fae548d3Szrj   elf_backend_encode_eh_address,
861*fae548d3Szrj   elf_backend_write_section,
862*fae548d3Szrj   elf_backend_mips_irix_compat,
863*fae548d3Szrj   elf_backend_mips_rtype_to_howto,
864*fae548d3Szrj   elf_backend_ecoff_debug_swap,
865*fae548d3Szrj   elf_backend_bfd_from_remote_memory,
866*fae548d3Szrj   elf_backend_core_find_build_id,
867*fae548d3Szrj   elf_backend_plt_sym_val,
868*fae548d3Szrj   elf_backend_common_definition,
869*fae548d3Szrj   elf_backend_common_section_index,
870*fae548d3Szrj   elf_backend_common_section,
871*fae548d3Szrj   elf_backend_merge_symbol,
872*fae548d3Szrj   elf_backend_hash_symbol,
873*fae548d3Szrj   elf_backend_record_xhash_symbol,
874*fae548d3Szrj   elf_backend_is_function_type,
875*fae548d3Szrj   elf_backend_maybe_function_sym,
876*fae548d3Szrj   elf_backend_get_reloc_section,
877*fae548d3Szrj   elf_backend_copy_special_section_fields,
878*fae548d3Szrj   elf_backend_link_order_error_handler,
879*fae548d3Szrj   elf_backend_relplt_name,
880*fae548d3Szrj   ELF_MACHINE_ALT1,
881*fae548d3Szrj   ELF_MACHINE_ALT2,
882*fae548d3Szrj   &elf_backend_size_info,
883*fae548d3Szrj   elf_backend_special_sections,
884*fae548d3Szrj   elf_backend_got_header_size,
885*fae548d3Szrj   elf_backend_got_elt_size,
886*fae548d3Szrj   elf_backend_obj_attrs_vendor,
887*fae548d3Szrj   elf_backend_obj_attrs_section,
888*fae548d3Szrj   elf_backend_obj_attrs_arg_type,
889*fae548d3Szrj   elf_backend_obj_attrs_section_type,
890*fae548d3Szrj   elf_backend_obj_attrs_order,
891*fae548d3Szrj   elf_backend_obj_attrs_handle_unknown,
892*fae548d3Szrj   elf_backend_parse_gnu_properties,
893*fae548d3Szrj   elf_backend_merge_gnu_properties,
894*fae548d3Szrj   elf_backend_setup_gnu_properties,
895*fae548d3Szrj   elf_backend_fixup_gnu_properties,
896*fae548d3Szrj   elf_backend_compact_eh_encoding,
897*fae548d3Szrj   elf_backend_cant_unwind_opcode,
898*fae548d3Szrj   elf_backend_static_tls_alignment,
899*fae548d3Szrj   elf_backend_stack_align,
900*fae548d3Szrj   elf_backend_strtab_flags,
901*fae548d3Szrj   elf_backend_collect,
902*fae548d3Szrj   elf_backend_type_change_ok,
903*fae548d3Szrj   elf_backend_may_use_rel_p,
904*fae548d3Szrj   elf_backend_may_use_rela_p,
905*fae548d3Szrj   elf_backend_default_use_rela_p,
906*fae548d3Szrj   elf_backend_rela_plts_and_copies_p,
907*fae548d3Szrj   elf_backend_rela_normal,
908*fae548d3Szrj   elf_backend_dtrel_excludes_plt,
909*fae548d3Szrj   elf_backend_sign_extend_vma,
910*fae548d3Szrj   elf_backend_want_got_plt,
911*fae548d3Szrj   elf_backend_plt_readonly,
912*fae548d3Szrj   elf_backend_want_plt_sym,
913*fae548d3Szrj   elf_backend_plt_not_loaded,
914*fae548d3Szrj   elf_backend_plt_alignment,
915*fae548d3Szrj   elf_backend_can_gc_sections,
916*fae548d3Szrj   elf_backend_can_refcount,
917*fae548d3Szrj   elf_backend_want_got_sym,
918*fae548d3Szrj   elf_backend_want_dynbss,
919*fae548d3Szrj   elf_backend_want_dynrelro,
920*fae548d3Szrj   elf_backend_want_p_paddr_set_to_zero,
921*fae548d3Szrj   elf_backend_no_page_alias,
922*fae548d3Szrj   elf_backend_default_execstack,
923*fae548d3Szrj   elf_backend_caches_rawsize,
924*fae548d3Szrj   elf_backend_extern_protected_data,
925*fae548d3Szrj   elf_backend_always_renumber_dynsyms,
926*fae548d3Szrj   elf_backend_linux_prpsinfo32_ugid16,
927*fae548d3Szrj   elf_backend_linux_prpsinfo64_ugid16
928*fae548d3Szrj };
929*fae548d3Szrj 
930*fae548d3Szrj /* Forward declaration for use when initialising alternative_target field.  */
931*fae548d3Szrj #ifdef TARGET_LITTLE_SYM
932*fae548d3Szrj extern const bfd_target TARGET_LITTLE_SYM;
933*fae548d3Szrj #endif
934*fae548d3Szrj 
935*fae548d3Szrj #ifdef TARGET_BIG_SYM
936*fae548d3Szrj const bfd_target TARGET_BIG_SYM =
937*fae548d3Szrj {
938*fae548d3Szrj   /* name: identify kind of target */
939*fae548d3Szrj   TARGET_BIG_NAME,
940*fae548d3Szrj 
941*fae548d3Szrj   /* flavour: general indication about file */
942*fae548d3Szrj   bfd_target_elf_flavour,
943*fae548d3Szrj 
944*fae548d3Szrj   /* byteorder: data is big endian */
945*fae548d3Szrj   BFD_ENDIAN_BIG,
946*fae548d3Szrj 
947*fae548d3Szrj   /* header_byteorder: header is also big endian */
948*fae548d3Szrj   BFD_ENDIAN_BIG,
949*fae548d3Szrj 
950*fae548d3Szrj   /* object_flags: mask of all file flags */
951*fae548d3Szrj   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
952*fae548d3Szrj    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
953*fae548d3Szrj    | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON),
954*fae548d3Szrj 
955*fae548d3Szrj   /* section_flags: mask of all section flags */
956*fae548d3Szrj   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
957*fae548d3Szrj    | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES
958*fae548d3Szrj    | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP),
959*fae548d3Szrj 
960*fae548d3Szrj    /* leading_symbol_char: is the first char of a user symbol
961*fae548d3Szrj       predictable, and if so what is it */
962*fae548d3Szrj   elf_symbol_leading_char,
963*fae548d3Szrj 
964*fae548d3Szrj   /* ar_pad_char: pad character for filenames within an archive header
965*fae548d3Szrj      FIXME:  this really has nothing to do with ELF, this is a characteristic
966*fae548d3Szrj      of the archiver and/or os and should be independently tunable */
967*fae548d3Szrj   '/',
968*fae548d3Szrj 
969*fae548d3Szrj   /* ar_max_namelen: maximum number of characters in an archive header
970*fae548d3Szrj      FIXME:  this really has nothing to do with ELF, this is a characteristic
971*fae548d3Szrj      of the archiver and should be independently tunable.  The System V ABI,
972*fae548d3Szrj      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
973*fae548d3Szrj   15,
974*fae548d3Szrj 
975*fae548d3Szrj   elf_match_priority,
976*fae548d3Szrj 
977*fae548d3Szrj   /* Routines to byte-swap various sized integers from the data sections */
978*fae548d3Szrj   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
979*fae548d3Szrj     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
980*fae548d3Szrj     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
981*fae548d3Szrj 
982*fae548d3Szrj   /* Routines to byte-swap various sized integers from the file headers */
983*fae548d3Szrj   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
984*fae548d3Szrj     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
985*fae548d3Szrj     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
986*fae548d3Szrj 
987*fae548d3Szrj   /* bfd_check_format: check the format of a file being read */
988*fae548d3Szrj   { _bfd_dummy_target,		/* unknown format */
989*fae548d3Szrj     bfd_elfNN_object_p,		/* assembler/linker output (object file) */
990*fae548d3Szrj     bfd_elfNN_archive_p,	/* an archive */
991*fae548d3Szrj     bfd_elfNN_core_file_p	/* a core file */
992*fae548d3Szrj   },
993*fae548d3Szrj 
994*fae548d3Szrj   /* bfd_set_format: set the format of a file being written */
995*fae548d3Szrj   { _bfd_bool_bfd_false_error,
996*fae548d3Szrj     bfd_elfNN_mkobject,
997*fae548d3Szrj     bfd_elfNN_mkarchive,
998*fae548d3Szrj     bfd_elfNN_mkcorefile
999*fae548d3Szrj   },
1000*fae548d3Szrj 
1001*fae548d3Szrj   /* bfd_write_contents: write cached information into a file being written */
1002*fae548d3Szrj   { _bfd_bool_bfd_false_error,
1003*fae548d3Szrj     bfd_elfNN_write_object_contents,
1004*fae548d3Szrj     bfd_elfNN_write_archive_contents,
1005*fae548d3Szrj     bfd_elfNN_write_corefile_contents,
1006*fae548d3Szrj   },
1007*fae548d3Szrj 
1008*fae548d3Szrj   BFD_JUMP_TABLE_GENERIC (bfd_elfNN),
1009*fae548d3Szrj   BFD_JUMP_TABLE_COPY (bfd_elfNN),
1010*fae548d3Szrj   BFD_JUMP_TABLE_CORE (bfd_elfNN),
1011*fae548d3Szrj #ifdef bfd_elfNN_archive_functions
1012*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
1013*fae548d3Szrj #elif defined USE_64_BIT_ARCHIVE
1014*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_64_bit),
1015*fae548d3Szrj #else
1016*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
1017*fae548d3Szrj #endif
1018*fae548d3Szrj   BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),
1019*fae548d3Szrj   BFD_JUMP_TABLE_RELOCS (bfd_elfNN),
1020*fae548d3Szrj   BFD_JUMP_TABLE_WRITE (bfd_elfNN),
1021*fae548d3Szrj   BFD_JUMP_TABLE_LINK (bfd_elfNN),
1022*fae548d3Szrj   BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN),
1023*fae548d3Szrj 
1024*fae548d3Szrj   /* Alternative endian target.  */
1025*fae548d3Szrj #ifdef TARGET_LITTLE_SYM
1026*fae548d3Szrj   & TARGET_LITTLE_SYM,
1027*fae548d3Szrj #else
1028*fae548d3Szrj   NULL,
1029*fae548d3Szrj #endif
1030*fae548d3Szrj 
1031*fae548d3Szrj   /* backend_data: */
1032*fae548d3Szrj   &elfNN_bed
1033*fae548d3Szrj };
1034*fae548d3Szrj #endif
1035*fae548d3Szrj 
1036*fae548d3Szrj #ifdef TARGET_LITTLE_SYM
1037*fae548d3Szrj const bfd_target TARGET_LITTLE_SYM =
1038*fae548d3Szrj {
1039*fae548d3Szrj   /* name: identify kind of target */
1040*fae548d3Szrj   TARGET_LITTLE_NAME,
1041*fae548d3Szrj 
1042*fae548d3Szrj   /* flavour: general indication about file */
1043*fae548d3Szrj   bfd_target_elf_flavour,
1044*fae548d3Szrj 
1045*fae548d3Szrj   /* byteorder: data is little endian */
1046*fae548d3Szrj   BFD_ENDIAN_LITTLE,
1047*fae548d3Szrj 
1048*fae548d3Szrj   /* header_byteorder: header is also little endian */
1049*fae548d3Szrj   BFD_ENDIAN_LITTLE,
1050*fae548d3Szrj 
1051*fae548d3Szrj   /* object_flags: mask of all file flags */
1052*fae548d3Szrj   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
1053*fae548d3Szrj    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
1054*fae548d3Szrj    | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON),
1055*fae548d3Szrj 
1056*fae548d3Szrj   /* section_flags: mask of all section flags */
1057*fae548d3Szrj   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
1058*fae548d3Szrj    | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES
1059*fae548d3Szrj    | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP),
1060*fae548d3Szrj 
1061*fae548d3Szrj    /* leading_symbol_char: is the first char of a user symbol
1062*fae548d3Szrj       predictable, and if so what is it */
1063*fae548d3Szrj   elf_symbol_leading_char,
1064*fae548d3Szrj 
1065*fae548d3Szrj   /* ar_pad_char: pad character for filenames within an archive header
1066*fae548d3Szrj      FIXME:  this really has nothing to do with ELF, this is a characteristic
1067*fae548d3Szrj      of the archiver and/or os and should be independently tunable */
1068*fae548d3Szrj   '/',
1069*fae548d3Szrj 
1070*fae548d3Szrj   /* ar_max_namelen: maximum number of characters in an archive header
1071*fae548d3Szrj      FIXME:  this really has nothing to do with ELF, this is a characteristic
1072*fae548d3Szrj      of the archiver and should be independently tunable.  The System V ABI,
1073*fae548d3Szrj      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
1074*fae548d3Szrj   15,
1075*fae548d3Szrj 
1076*fae548d3Szrj   elf_match_priority,
1077*fae548d3Szrj 
1078*fae548d3Szrj   /* Routines to byte-swap various sized integers from the data sections */
1079*fae548d3Szrj   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
1080*fae548d3Szrj     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
1081*fae548d3Szrj     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
1082*fae548d3Szrj 
1083*fae548d3Szrj   /* Routines to byte-swap various sized integers from the file headers */
1084*fae548d3Szrj   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
1085*fae548d3Szrj     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
1086*fae548d3Szrj     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
1087*fae548d3Szrj 
1088*fae548d3Szrj   /* bfd_check_format: check the format of a file being read */
1089*fae548d3Szrj   { _bfd_dummy_target,		/* unknown format */
1090*fae548d3Szrj     bfd_elfNN_object_p,		/* assembler/linker output (object file) */
1091*fae548d3Szrj     bfd_elfNN_archive_p,	/* an archive */
1092*fae548d3Szrj     bfd_elfNN_core_file_p	/* a core file */
1093*fae548d3Szrj   },
1094*fae548d3Szrj 
1095*fae548d3Szrj   /* bfd_set_format: set the format of a file being written */
1096*fae548d3Szrj   { _bfd_bool_bfd_false_error,
1097*fae548d3Szrj     bfd_elfNN_mkobject,
1098*fae548d3Szrj     bfd_elfNN_mkarchive,
1099*fae548d3Szrj     bfd_elfNN_mkcorefile
1100*fae548d3Szrj   },
1101*fae548d3Szrj 
1102*fae548d3Szrj   /* bfd_write_contents: write cached information into a file being written */
1103*fae548d3Szrj   { _bfd_bool_bfd_false_error,
1104*fae548d3Szrj     bfd_elfNN_write_object_contents,
1105*fae548d3Szrj     bfd_elfNN_write_archive_contents,
1106*fae548d3Szrj     bfd_elfNN_write_corefile_contents,
1107*fae548d3Szrj   },
1108*fae548d3Szrj 
1109*fae548d3Szrj   BFD_JUMP_TABLE_GENERIC (bfd_elfNN),
1110*fae548d3Szrj   BFD_JUMP_TABLE_COPY (bfd_elfNN),
1111*fae548d3Szrj   BFD_JUMP_TABLE_CORE (bfd_elfNN),
1112*fae548d3Szrj #ifdef bfd_elfNN_archive_functions
1113*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
1114*fae548d3Szrj #elif defined USE_64_BIT_ARCHIVE
1115*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_64_bit),
1116*fae548d3Szrj #else
1117*fae548d3Szrj   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
1118*fae548d3Szrj #endif
1119*fae548d3Szrj   BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),
1120*fae548d3Szrj   BFD_JUMP_TABLE_RELOCS (bfd_elfNN),
1121*fae548d3Szrj   BFD_JUMP_TABLE_WRITE (bfd_elfNN),
1122*fae548d3Szrj   BFD_JUMP_TABLE_LINK (bfd_elfNN),
1123*fae548d3Szrj   BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN),
1124*fae548d3Szrj 
1125*fae548d3Szrj   /* Alternative endian target.  */
1126*fae548d3Szrj #ifdef TARGET_BIG_SYM
1127*fae548d3Szrj   & TARGET_BIG_SYM,
1128*fae548d3Szrj #else
1129*fae548d3Szrj   NULL,
1130*fae548d3Szrj #endif
1131*fae548d3Szrj 
1132*fae548d3Szrj   /* backend_data: */
1133*fae548d3Szrj   &elfNN_bed
1134*fae548d3Szrj };
1135*fae548d3Szrj #endif
1136