xref: /dflybsd-src/contrib/gdb-7/bfd/elfxx-target.h (revision de8e141f24382815c10a4012d209bbbf7abf1112)
15796c8dcSSimon Schubert /* Target definitions for NN-bit ELF
25796c8dcSSimon Schubert    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
3*ef5ccd6cSJohn Marino    2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4a45ae5f8SJohn Marino    Free Software Foundation, Inc.
55796c8dcSSimon Schubert 
65796c8dcSSimon Schubert    This file is part of BFD, the Binary File Descriptor library.
75796c8dcSSimon Schubert 
85796c8dcSSimon Schubert    This program is free software; you can redistribute it and/or modify
95796c8dcSSimon Schubert    it under the terms of the GNU General Public License as published by
105796c8dcSSimon Schubert    the Free Software Foundation; either version 3 of the License, or
115796c8dcSSimon Schubert    (at your option) any later version.
125796c8dcSSimon Schubert 
135796c8dcSSimon Schubert    This program is distributed in the hope that it will be useful,
145796c8dcSSimon Schubert    but WITHOUT ANY WARRANTY; without even the implied warranty of
155796c8dcSSimon Schubert    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
165796c8dcSSimon Schubert    GNU General Public License for more details.
175796c8dcSSimon Schubert 
185796c8dcSSimon Schubert    You should have received a copy of the GNU General Public License
195796c8dcSSimon Schubert    along with this program; if not, write to the Free Software
205796c8dcSSimon Schubert    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
215796c8dcSSimon Schubert    MA 02110-1301, USA.  */
225796c8dcSSimon Schubert 
235796c8dcSSimon Schubert 
245796c8dcSSimon Schubert /* This structure contains everything that BFD knows about a target.
255796c8dcSSimon Schubert    It includes things like its byte order, name, what routines to call
265796c8dcSSimon Schubert    to do various operations, etc.  Every BFD points to a target structure
275796c8dcSSimon Schubert    with its "xvec" member.
285796c8dcSSimon Schubert 
295796c8dcSSimon Schubert    There are two such structures here:  one for big-endian machines and
305796c8dcSSimon Schubert    one for little-endian machines.   */
315796c8dcSSimon Schubert 
325796c8dcSSimon Schubert #ifndef bfd_elfNN_close_and_cleanup
335796c8dcSSimon Schubert #define	bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup
345796c8dcSSimon Schubert #endif
355796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_free_cached_info
365796c8dcSSimon Schubert #define bfd_elfNN_bfd_free_cached_info _bfd_free_cached_info
375796c8dcSSimon Schubert #endif
385796c8dcSSimon Schubert #ifndef bfd_elfNN_get_section_contents
395796c8dcSSimon Schubert #define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents
405796c8dcSSimon Schubert #endif
415796c8dcSSimon Schubert 
425796c8dcSSimon Schubert #define bfd_elfNN_canonicalize_dynamic_symtab \
435796c8dcSSimon Schubert   _bfd_elf_canonicalize_dynamic_symtab
445796c8dcSSimon Schubert #ifndef bfd_elfNN_get_synthetic_symtab
455796c8dcSSimon Schubert #define bfd_elfNN_get_synthetic_symtab \
465796c8dcSSimon Schubert   _bfd_elf_get_synthetic_symtab
475796c8dcSSimon Schubert #endif
485796c8dcSSimon Schubert #ifndef bfd_elfNN_canonicalize_reloc
495796c8dcSSimon Schubert #define bfd_elfNN_canonicalize_reloc	_bfd_elf_canonicalize_reloc
505796c8dcSSimon Schubert #endif
515796c8dcSSimon Schubert #ifndef bfd_elfNN_find_nearest_line
525796c8dcSSimon Schubert #define bfd_elfNN_find_nearest_line	_bfd_elf_find_nearest_line
535796c8dcSSimon Schubert #endif
545796c8dcSSimon Schubert #ifndef bfd_elfNN_find_inliner_info
555796c8dcSSimon Schubert #define bfd_elfNN_find_inliner_info	_bfd_elf_find_inliner_info
565796c8dcSSimon Schubert #endif
575796c8dcSSimon Schubert #define bfd_elfNN_read_minisymbols	_bfd_elf_read_minisymbols
585796c8dcSSimon Schubert #define bfd_elfNN_minisymbol_to_symbol	_bfd_elf_minisymbol_to_symbol
595796c8dcSSimon Schubert #define bfd_elfNN_get_dynamic_symtab_upper_bound \
605796c8dcSSimon Schubert   _bfd_elf_get_dynamic_symtab_upper_bound
615796c8dcSSimon Schubert #define bfd_elfNN_get_lineno		_bfd_elf_get_lineno
625796c8dcSSimon Schubert #ifndef bfd_elfNN_get_reloc_upper_bound
635796c8dcSSimon Schubert #define bfd_elfNN_get_reloc_upper_bound _bfd_elf_get_reloc_upper_bound
645796c8dcSSimon Schubert #endif
655796c8dcSSimon Schubert #ifndef bfd_elfNN_get_symbol_info
665796c8dcSSimon Schubert #define bfd_elfNN_get_symbol_info	_bfd_elf_get_symbol_info
675796c8dcSSimon Schubert #endif
685796c8dcSSimon Schubert #define bfd_elfNN_canonicalize_symtab	_bfd_elf_canonicalize_symtab
695796c8dcSSimon Schubert #define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound
705796c8dcSSimon Schubert #define bfd_elfNN_make_empty_symbol	_bfd_elf_make_empty_symbol
715796c8dcSSimon Schubert #ifndef bfd_elfNN_new_section_hook
725796c8dcSSimon Schubert #define bfd_elfNN_new_section_hook	_bfd_elf_new_section_hook
735796c8dcSSimon Schubert #endif
745796c8dcSSimon Schubert #define bfd_elfNN_set_arch_mach		_bfd_elf_set_arch_mach
755796c8dcSSimon Schubert #ifndef bfd_elfNN_set_section_contents
765796c8dcSSimon Schubert #define bfd_elfNN_set_section_contents	_bfd_elf_set_section_contents
775796c8dcSSimon Schubert #endif
785796c8dcSSimon Schubert #define bfd_elfNN_sizeof_headers	_bfd_elf_sizeof_headers
795796c8dcSSimon Schubert #define bfd_elfNN_write_object_contents _bfd_elf_write_object_contents
805796c8dcSSimon Schubert #define bfd_elfNN_write_corefile_contents _bfd_elf_write_corefile_contents
815796c8dcSSimon Schubert 
825796c8dcSSimon Schubert #define bfd_elfNN_get_section_contents_in_window \
835796c8dcSSimon Schubert   _bfd_generic_get_section_contents_in_window
845796c8dcSSimon Schubert 
855796c8dcSSimon Schubert #ifndef elf_backend_can_refcount
865796c8dcSSimon Schubert #define elf_backend_can_refcount 0
875796c8dcSSimon Schubert #endif
885796c8dcSSimon Schubert #ifndef elf_backend_want_got_plt
895796c8dcSSimon Schubert #define elf_backend_want_got_plt 0
905796c8dcSSimon Schubert #endif
915796c8dcSSimon Schubert #ifndef elf_backend_plt_readonly
925796c8dcSSimon Schubert #define elf_backend_plt_readonly 0
935796c8dcSSimon Schubert #endif
945796c8dcSSimon Schubert #ifndef elf_backend_want_plt_sym
955796c8dcSSimon Schubert #define elf_backend_want_plt_sym 0
965796c8dcSSimon Schubert #endif
975796c8dcSSimon Schubert #ifndef elf_backend_plt_not_loaded
985796c8dcSSimon Schubert #define elf_backend_plt_not_loaded 0
995796c8dcSSimon Schubert #endif
1005796c8dcSSimon Schubert #ifndef elf_backend_plt_alignment
1015796c8dcSSimon Schubert #define elf_backend_plt_alignment 2
1025796c8dcSSimon Schubert #endif
1035796c8dcSSimon Schubert #ifndef elf_backend_want_dynbss
1045796c8dcSSimon Schubert #define elf_backend_want_dynbss 1
1055796c8dcSSimon Schubert #endif
1065796c8dcSSimon Schubert #ifndef elf_backend_want_p_paddr_set_to_zero
1075796c8dcSSimon Schubert #define elf_backend_want_p_paddr_set_to_zero 0
1085796c8dcSSimon Schubert #endif
1095796c8dcSSimon Schubert #ifndef elf_backend_default_execstack
1105796c8dcSSimon Schubert #define elf_backend_default_execstack 1
1115796c8dcSSimon Schubert #endif
112*ef5ccd6cSJohn Marino #ifndef elf_backend_stack_align
113*ef5ccd6cSJohn Marino #define elf_backend_stack_align 16
114*ef5ccd6cSJohn Marino #endif
1155796c8dcSSimon Schubert 
1165796c8dcSSimon Schubert #define bfd_elfNN_bfd_debug_info_start	bfd_void
1175796c8dcSSimon Schubert #define bfd_elfNN_bfd_debug_info_end	bfd_void
1185796c8dcSSimon Schubert #define bfd_elfNN_bfd_debug_info_accumulate \
1195796c8dcSSimon Schubert   ((void (*) (bfd*, struct bfd_section *)) bfd_void)
1205796c8dcSSimon Schubert 
1215796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_get_relocated_section_contents
1225796c8dcSSimon Schubert #define bfd_elfNN_bfd_get_relocated_section_contents \
1235796c8dcSSimon Schubert   bfd_generic_get_relocated_section_contents
1245796c8dcSSimon Schubert #endif
1255796c8dcSSimon Schubert 
1265796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_relax_section
1275796c8dcSSimon Schubert #define bfd_elfNN_bfd_relax_section bfd_generic_relax_section
1285796c8dcSSimon Schubert #endif
1295796c8dcSSimon Schubert 
1305796c8dcSSimon Schubert #ifndef elf_backend_can_gc_sections
1315796c8dcSSimon Schubert #define elf_backend_can_gc_sections 0
1325796c8dcSSimon Schubert #endif
1335796c8dcSSimon Schubert #ifndef elf_backend_can_refcount
1345796c8dcSSimon Schubert #define elf_backend_can_refcount 0
1355796c8dcSSimon Schubert #endif
1365796c8dcSSimon Schubert #ifndef elf_backend_want_got_sym
1375796c8dcSSimon Schubert #define elf_backend_want_got_sym 1
1385796c8dcSSimon Schubert #endif
1395796c8dcSSimon Schubert #ifndef elf_backend_gc_keep
1405796c8dcSSimon Schubert #define elf_backend_gc_keep		_bfd_elf_gc_keep
1415796c8dcSSimon Schubert #endif
1425796c8dcSSimon Schubert #ifndef elf_backend_gc_mark_dynamic_ref
1435796c8dcSSimon Schubert #define elf_backend_gc_mark_dynamic_ref	bfd_elf_gc_mark_dynamic_ref_symbol
1445796c8dcSSimon Schubert #endif
1455796c8dcSSimon Schubert #ifndef elf_backend_gc_mark_hook
1465796c8dcSSimon Schubert #define elf_backend_gc_mark_hook	_bfd_elf_gc_mark_hook
1475796c8dcSSimon Schubert #endif
1485796c8dcSSimon Schubert #ifndef elf_backend_gc_mark_extra_sections
149a45ae5f8SJohn Marino #define elf_backend_gc_mark_extra_sections _bfd_elf_gc_mark_extra_sections
1505796c8dcSSimon Schubert #endif
1515796c8dcSSimon Schubert #ifndef elf_backend_gc_sweep_hook
1525796c8dcSSimon Schubert #define elf_backend_gc_sweep_hook	NULL
1535796c8dcSSimon Schubert #endif
1545796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_gc_sections
1555796c8dcSSimon Schubert #define bfd_elfNN_bfd_gc_sections bfd_elf_gc_sections
1565796c8dcSSimon Schubert #endif
1575796c8dcSSimon Schubert 
1585796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_merge_sections
1595796c8dcSSimon Schubert #define bfd_elfNN_bfd_merge_sections \
1605796c8dcSSimon Schubert   _bfd_elf_merge_sections
1615796c8dcSSimon Schubert #endif
1625796c8dcSSimon Schubert 
1635796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_is_group_section
1645796c8dcSSimon Schubert #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section
1655796c8dcSSimon Schubert #endif
1665796c8dcSSimon Schubert 
1675796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_discard_group
1685796c8dcSSimon Schubert #define bfd_elfNN_bfd_discard_group bfd_generic_discard_group
1695796c8dcSSimon Schubert #endif
1705796c8dcSSimon Schubert 
1715796c8dcSSimon Schubert #ifndef bfd_elfNN_section_already_linked
1725796c8dcSSimon Schubert #define bfd_elfNN_section_already_linked \
1735796c8dcSSimon Schubert   _bfd_elf_section_already_linked
1745796c8dcSSimon Schubert #endif
1755796c8dcSSimon Schubert 
1765796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_define_common_symbol
1775796c8dcSSimon Schubert #define bfd_elfNN_bfd_define_common_symbol bfd_generic_define_common_symbol
1785796c8dcSSimon Schubert #endif
1795796c8dcSSimon Schubert 
180a45ae5f8SJohn Marino #ifndef bfd_elfNN_bfd_lookup_section_flags
181a45ae5f8SJohn Marino #define bfd_elfNN_bfd_lookup_section_flags bfd_elf_lookup_section_flags
182a45ae5f8SJohn Marino #endif
183a45ae5f8SJohn Marino 
1845796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_make_debug_symbol
1855796c8dcSSimon Schubert #define bfd_elfNN_bfd_make_debug_symbol \
1865796c8dcSSimon Schubert   ((asymbol * (*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
1875796c8dcSSimon Schubert #endif
1885796c8dcSSimon Schubert 
1895796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_copy_private_symbol_data
1905796c8dcSSimon Schubert #define bfd_elfNN_bfd_copy_private_symbol_data \
1915796c8dcSSimon Schubert   _bfd_elf_copy_private_symbol_data
1925796c8dcSSimon Schubert #endif
1935796c8dcSSimon Schubert 
1945796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_copy_private_section_data
1955796c8dcSSimon Schubert #define bfd_elfNN_bfd_copy_private_section_data \
1965796c8dcSSimon Schubert   _bfd_elf_copy_private_section_data
1975796c8dcSSimon Schubert #endif
1985796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_copy_private_header_data
1995796c8dcSSimon Schubert #define bfd_elfNN_bfd_copy_private_header_data \
2005796c8dcSSimon Schubert   _bfd_elf_copy_private_header_data
2015796c8dcSSimon Schubert #endif
2025796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_copy_private_bfd_data
2035796c8dcSSimon Schubert #define bfd_elfNN_bfd_copy_private_bfd_data \
2045796c8dcSSimon Schubert   _bfd_elf_copy_private_bfd_data
2055796c8dcSSimon Schubert #endif
2065796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_print_private_bfd_data
2075796c8dcSSimon Schubert #define bfd_elfNN_bfd_print_private_bfd_data \
2085796c8dcSSimon Schubert   _bfd_elf_print_private_bfd_data
2095796c8dcSSimon Schubert #endif
2105796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_merge_private_bfd_data
2115796c8dcSSimon Schubert #define bfd_elfNN_bfd_merge_private_bfd_data \
2125796c8dcSSimon Schubert   ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
2135796c8dcSSimon Schubert #endif
2145796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_set_private_flags
2155796c8dcSSimon Schubert #define bfd_elfNN_bfd_set_private_flags \
2165796c8dcSSimon Schubert   ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
2175796c8dcSSimon Schubert #endif
2185796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_is_local_label_name
2195796c8dcSSimon Schubert #define bfd_elfNN_bfd_is_local_label_name _bfd_elf_is_local_label_name
2205796c8dcSSimon Schubert #endif
2215796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_is_target_special_symbol
2225796c8dcSSimon Schubert #define bfd_elfNN_bfd_is_target_special_symbol \
2235796c8dcSSimon Schubert   ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
2245796c8dcSSimon Schubert #endif
2255796c8dcSSimon Schubert 
2265796c8dcSSimon Schubert #ifndef bfd_elfNN_get_dynamic_reloc_upper_bound
2275796c8dcSSimon Schubert #define bfd_elfNN_get_dynamic_reloc_upper_bound \
2285796c8dcSSimon Schubert   _bfd_elf_get_dynamic_reloc_upper_bound
2295796c8dcSSimon Schubert #endif
2305796c8dcSSimon Schubert #ifndef bfd_elfNN_canonicalize_dynamic_reloc
2315796c8dcSSimon Schubert #define bfd_elfNN_canonicalize_dynamic_reloc \
2325796c8dcSSimon Schubert   _bfd_elf_canonicalize_dynamic_reloc
2335796c8dcSSimon Schubert #endif
2345796c8dcSSimon Schubert 
2355796c8dcSSimon Schubert #ifdef elf_backend_relocate_section
2365796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_hash_table_create
2375796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_hash_table_create _bfd_elf_link_hash_table_create
2385796c8dcSSimon Schubert #endif
239*ef5ccd6cSJohn Marino #ifndef bfd_elfNN_bfd_link_hash_table_free
240*ef5ccd6cSJohn Marino #define bfd_elfNN_bfd_link_hash_table_free _bfd_elf_link_hash_table_free
241*ef5ccd6cSJohn Marino #endif
2425796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_add_symbols
2435796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_add_symbols	bfd_elf_link_add_symbols
2445796c8dcSSimon Schubert #endif
2455796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_final_link
2465796c8dcSSimon Schubert #define bfd_elfNN_bfd_final_link	bfd_elf_final_link
2475796c8dcSSimon Schubert #endif
2485796c8dcSSimon Schubert #else /* ! defined (elf_backend_relocate_section) */
2495796c8dcSSimon Schubert /* If no backend relocate_section routine, use the generic linker.
2505796c8dcSSimon Schubert    Note - this will prevent the port from being able to use some of
2515796c8dcSSimon Schubert    the other features of the ELF linker, because the generic hash structure
2525796c8dcSSimon Schubert    does not have the fields needed by the ELF linker.  In particular it
2535796c8dcSSimon Schubert    means that linking directly to S-records will not work.  */
2545796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_hash_table_create
2555796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_hash_table_create \
2565796c8dcSSimon Schubert   _bfd_generic_link_hash_table_create
2575796c8dcSSimon Schubert #endif
258*ef5ccd6cSJohn Marino #ifndef bfd_elfNN_bfd_link_hash_table_free
259*ef5ccd6cSJohn Marino #define bfd_elfNN_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
260*ef5ccd6cSJohn Marino #endif
2615796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_add_symbols
2625796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_add_symbols	_bfd_generic_link_add_symbols
2635796c8dcSSimon Schubert #endif
2645796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_final_link
2655796c8dcSSimon Schubert #define bfd_elfNN_bfd_final_link	_bfd_generic_final_link
2665796c8dcSSimon Schubert #endif
2675796c8dcSSimon Schubert #endif /* ! defined (elf_backend_relocate_section) */
2685796c8dcSSimon Schubert 
2695796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_just_syms
2705796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_just_syms	_bfd_elf_link_just_syms
2715796c8dcSSimon Schubert #endif
2725796c8dcSSimon Schubert 
273cf7f2e2dSJohn Marino #ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type
274cf7f2e2dSJohn Marino #define bfd_elfNN_bfd_copy_link_hash_symbol_type \
275cf7f2e2dSJohn Marino   _bfd_elf_copy_link_hash_symbol_type
276cf7f2e2dSJohn Marino #endif
277cf7f2e2dSJohn Marino 
2785796c8dcSSimon Schubert #ifndef bfd_elfNN_bfd_link_split_section
2795796c8dcSSimon Schubert #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section
2805796c8dcSSimon Schubert #endif
2815796c8dcSSimon Schubert 
2825796c8dcSSimon Schubert #ifndef bfd_elfNN_archive_p
2835796c8dcSSimon Schubert #define bfd_elfNN_archive_p bfd_generic_archive_p
2845796c8dcSSimon Schubert #endif
2855796c8dcSSimon Schubert 
2865796c8dcSSimon Schubert #ifndef bfd_elfNN_write_archive_contents
2875796c8dcSSimon Schubert #define bfd_elfNN_write_archive_contents _bfd_write_archive_contents
2885796c8dcSSimon Schubert #endif
2895796c8dcSSimon Schubert 
2905796c8dcSSimon Schubert #ifndef bfd_elfNN_mkobject
291c50c785cSJohn Marino #define bfd_elfNN_mkobject bfd_elf_make_object
2925796c8dcSSimon Schubert #endif
2935796c8dcSSimon Schubert 
2945796c8dcSSimon Schubert #ifndef bfd_elfNN_mkcorefile
2955796c8dcSSimon Schubert #define bfd_elfNN_mkcorefile bfd_elf_mkcorefile
2965796c8dcSSimon Schubert #endif
2975796c8dcSSimon Schubert 
2985796c8dcSSimon Schubert #ifndef bfd_elfNN_mkarchive
2995796c8dcSSimon Schubert #define bfd_elfNN_mkarchive _bfd_generic_mkarchive
3005796c8dcSSimon Schubert #endif
3015796c8dcSSimon Schubert 
3025796c8dcSSimon Schubert #ifndef bfd_elfNN_print_symbol
3035796c8dcSSimon Schubert #define bfd_elfNN_print_symbol bfd_elf_print_symbol
3045796c8dcSSimon Schubert #endif
3055796c8dcSSimon Schubert 
3065796c8dcSSimon Schubert #ifndef elf_symbol_leading_char
3075796c8dcSSimon Schubert #define elf_symbol_leading_char 0
3085796c8dcSSimon Schubert #endif
3095796c8dcSSimon Schubert 
3105796c8dcSSimon Schubert #ifndef elf_info_to_howto
3115796c8dcSSimon Schubert #define elf_info_to_howto 0
3125796c8dcSSimon Schubert #endif
3135796c8dcSSimon Schubert 
3145796c8dcSSimon Schubert #ifndef elf_info_to_howto_rel
3155796c8dcSSimon Schubert #define elf_info_to_howto_rel 0
3165796c8dcSSimon Schubert #endif
3175796c8dcSSimon Schubert 
318a45ae5f8SJohn Marino #ifndef elf_backend_arch_data
319a45ae5f8SJohn Marino #define elf_backend_arch_data NULL
320a45ae5f8SJohn Marino #endif
321a45ae5f8SJohn Marino 
322c50c785cSJohn Marino #ifndef ELF_TARGET_ID
323c50c785cSJohn Marino #define ELF_TARGET_ID	GENERIC_ELF_DATA
324c50c785cSJohn Marino #endif
325c50c785cSJohn Marino 
3265796c8dcSSimon Schubert #ifndef ELF_OSABI
3275796c8dcSSimon Schubert #define ELF_OSABI ELFOSABI_NONE
3285796c8dcSSimon Schubert #endif
3295796c8dcSSimon Schubert 
3305796c8dcSSimon Schubert #ifndef ELF_MAXPAGESIZE
3315796c8dcSSimon Schubert # error ELF_MAXPAGESIZE is not defined
3325796c8dcSSimon Schubert #define ELF_MAXPAGESIZE 1
3335796c8dcSSimon Schubert #endif
3345796c8dcSSimon Schubert 
3355796c8dcSSimon Schubert #ifndef ELF_COMMONPAGESIZE
3365796c8dcSSimon Schubert #define ELF_COMMONPAGESIZE ELF_MAXPAGESIZE
3375796c8dcSSimon Schubert #endif
3385796c8dcSSimon Schubert 
3395796c8dcSSimon Schubert #ifndef ELF_MINPAGESIZE
3405796c8dcSSimon Schubert #define ELF_MINPAGESIZE ELF_COMMONPAGESIZE
3415796c8dcSSimon Schubert #endif
3425796c8dcSSimon Schubert 
3435796c8dcSSimon Schubert #if ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
3445796c8dcSSimon Schubert # error ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
3455796c8dcSSimon Schubert #endif
3465796c8dcSSimon Schubert #if ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
3475796c8dcSSimon Schubert # error ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
3485796c8dcSSimon Schubert #endif
3495796c8dcSSimon Schubert 
3505796c8dcSSimon Schubert #ifndef ELF_DYNAMIC_SEC_FLAGS
3515796c8dcSSimon Schubert /* Note that we set the SEC_IN_MEMORY flag for these sections.  */
3525796c8dcSSimon Schubert #define ELF_DYNAMIC_SEC_FLAGS			\
3535796c8dcSSimon Schubert   (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS	\
3545796c8dcSSimon Schubert    | SEC_IN_MEMORY | SEC_LINKER_CREATED)
3555796c8dcSSimon Schubert #endif
3565796c8dcSSimon Schubert 
3575796c8dcSSimon Schubert #ifndef elf_backend_collect
3585796c8dcSSimon Schubert #define elf_backend_collect FALSE
3595796c8dcSSimon Schubert #endif
3605796c8dcSSimon Schubert #ifndef elf_backend_type_change_ok
3615796c8dcSSimon Schubert #define elf_backend_type_change_ok FALSE
3625796c8dcSSimon Schubert #endif
3635796c8dcSSimon Schubert 
3645796c8dcSSimon Schubert #ifndef elf_backend_sym_is_global
3655796c8dcSSimon Schubert #define elf_backend_sym_is_global	0
3665796c8dcSSimon Schubert #endif
3675796c8dcSSimon Schubert #ifndef elf_backend_object_p
3685796c8dcSSimon Schubert #define elf_backend_object_p		0
3695796c8dcSSimon Schubert #endif
3705796c8dcSSimon Schubert #ifndef elf_backend_symbol_processing
3715796c8dcSSimon Schubert #define elf_backend_symbol_processing	0
3725796c8dcSSimon Schubert #endif
3735796c8dcSSimon Schubert #ifndef elf_backend_symbol_table_processing
3745796c8dcSSimon Schubert #define elf_backend_symbol_table_processing	0
3755796c8dcSSimon Schubert #endif
3765796c8dcSSimon Schubert #ifndef elf_backend_get_symbol_type
3775796c8dcSSimon Schubert #define elf_backend_get_symbol_type 0
3785796c8dcSSimon Schubert #endif
3795796c8dcSSimon Schubert #ifndef elf_backend_archive_symbol_lookup
3805796c8dcSSimon Schubert #define elf_backend_archive_symbol_lookup _bfd_elf_archive_symbol_lookup
3815796c8dcSSimon Schubert #endif
3825796c8dcSSimon Schubert #ifndef elf_backend_name_local_section_symbols
3835796c8dcSSimon Schubert #define elf_backend_name_local_section_symbols	0
3845796c8dcSSimon Schubert #endif
3855796c8dcSSimon Schubert #ifndef elf_backend_section_processing
3865796c8dcSSimon Schubert #define elf_backend_section_processing	0
3875796c8dcSSimon Schubert #endif
3885796c8dcSSimon Schubert #ifndef elf_backend_section_from_shdr
3895796c8dcSSimon Schubert #define elf_backend_section_from_shdr	_bfd_elf_make_section_from_shdr
3905796c8dcSSimon Schubert #endif
3915796c8dcSSimon Schubert #ifndef elf_backend_section_flags
3925796c8dcSSimon Schubert #define elf_backend_section_flags	0
3935796c8dcSSimon Schubert #endif
3945796c8dcSSimon Schubert #ifndef elf_backend_get_sec_type_attr
3955796c8dcSSimon Schubert #define elf_backend_get_sec_type_attr	_bfd_elf_get_sec_type_attr
3965796c8dcSSimon Schubert #endif
3975796c8dcSSimon Schubert #ifndef elf_backend_section_from_phdr
3985796c8dcSSimon Schubert #define elf_backend_section_from_phdr	_bfd_elf_make_section_from_phdr
3995796c8dcSSimon Schubert #endif
4005796c8dcSSimon Schubert #ifndef elf_backend_fake_sections
4015796c8dcSSimon Schubert #define elf_backend_fake_sections	0
4025796c8dcSSimon Schubert #endif
4035796c8dcSSimon Schubert #ifndef elf_backend_section_from_bfd_section
4045796c8dcSSimon Schubert #define elf_backend_section_from_bfd_section	0
4055796c8dcSSimon Schubert #endif
4065796c8dcSSimon Schubert #ifndef elf_backend_add_symbol_hook
4075796c8dcSSimon Schubert #define elf_backend_add_symbol_hook	0
4085796c8dcSSimon Schubert #endif
4095796c8dcSSimon Schubert #ifndef elf_backend_link_output_symbol_hook
4105796c8dcSSimon Schubert #define elf_backend_link_output_symbol_hook 0
4115796c8dcSSimon Schubert #endif
4125796c8dcSSimon Schubert #ifndef elf_backend_create_dynamic_sections
4135796c8dcSSimon Schubert #define elf_backend_create_dynamic_sections 0
4145796c8dcSSimon Schubert #endif
4155796c8dcSSimon Schubert #ifndef elf_backend_omit_section_dynsym
4165796c8dcSSimon Schubert #define elf_backend_omit_section_dynsym _bfd_elf_link_omit_section_dynsym
4175796c8dcSSimon Schubert #endif
4185796c8dcSSimon Schubert #ifndef elf_backend_relocs_compatible
4195796c8dcSSimon Schubert #define elf_backend_relocs_compatible _bfd_elf_default_relocs_compatible
4205796c8dcSSimon Schubert #endif
4215796c8dcSSimon Schubert #ifndef elf_backend_check_relocs
4225796c8dcSSimon Schubert #define elf_backend_check_relocs	0
4235796c8dcSSimon Schubert #endif
4245796c8dcSSimon Schubert #ifndef elf_backend_check_directives
4255796c8dcSSimon Schubert #define elf_backend_check_directives	0
4265796c8dcSSimon Schubert #endif
4275796c8dcSSimon Schubert #ifndef elf_backend_as_needed_cleanup
4285796c8dcSSimon Schubert #define elf_backend_as_needed_cleanup	0
4295796c8dcSSimon Schubert #endif
4305796c8dcSSimon Schubert #ifndef elf_backend_adjust_dynamic_symbol
4315796c8dcSSimon Schubert #define elf_backend_adjust_dynamic_symbol 0
4325796c8dcSSimon Schubert #endif
4335796c8dcSSimon Schubert #ifndef elf_backend_always_size_sections
4345796c8dcSSimon Schubert #define elf_backend_always_size_sections 0
4355796c8dcSSimon Schubert #endif
4365796c8dcSSimon Schubert #ifndef elf_backend_size_dynamic_sections
4375796c8dcSSimon Schubert #define elf_backend_size_dynamic_sections 0
4385796c8dcSSimon Schubert #endif
4395796c8dcSSimon Schubert #ifndef elf_backend_init_index_section
4405796c8dcSSimon Schubert #define elf_backend_init_index_section \
4415796c8dcSSimon Schubert  ((void (*) (bfd *, struct bfd_link_info *)) bfd_void)
4425796c8dcSSimon Schubert #endif
4435796c8dcSSimon Schubert #ifndef elf_backend_relocate_section
4445796c8dcSSimon Schubert #define elf_backend_relocate_section	0
4455796c8dcSSimon Schubert #endif
4465796c8dcSSimon Schubert #ifndef elf_backend_finish_dynamic_symbol
4475796c8dcSSimon Schubert #define elf_backend_finish_dynamic_symbol	0
4485796c8dcSSimon Schubert #endif
4495796c8dcSSimon Schubert #ifndef elf_backend_finish_dynamic_sections
4505796c8dcSSimon Schubert #define elf_backend_finish_dynamic_sections	0
4515796c8dcSSimon Schubert #endif
4525796c8dcSSimon Schubert #ifndef elf_backend_begin_write_processing
4535796c8dcSSimon Schubert #define elf_backend_begin_write_processing	0
4545796c8dcSSimon Schubert #endif
4555796c8dcSSimon Schubert #ifndef elf_backend_final_write_processing
4565796c8dcSSimon Schubert #define elf_backend_final_write_processing	0
4575796c8dcSSimon Schubert #endif
4585796c8dcSSimon Schubert #ifndef elf_backend_additional_program_headers
4595796c8dcSSimon Schubert #define elf_backend_additional_program_headers	0
4605796c8dcSSimon Schubert #endif
4615796c8dcSSimon Schubert #ifndef elf_backend_modify_segment_map
4625796c8dcSSimon Schubert #define elf_backend_modify_segment_map	0
4635796c8dcSSimon Schubert #endif
4645796c8dcSSimon Schubert #ifndef elf_backend_modify_program_headers
4655796c8dcSSimon Schubert #define elf_backend_modify_program_headers	0
4665796c8dcSSimon Schubert #endif
4675796c8dcSSimon Schubert #ifndef elf_backend_ecoff_debug_swap
4685796c8dcSSimon Schubert #define elf_backend_ecoff_debug_swap	0
4695796c8dcSSimon Schubert #endif
4705796c8dcSSimon Schubert #ifndef elf_backend_bfd_from_remote_memory
4715796c8dcSSimon Schubert #define elf_backend_bfd_from_remote_memory _bfd_elfNN_bfd_from_remote_memory
4725796c8dcSSimon Schubert #endif
4735796c8dcSSimon Schubert #ifndef elf_backend_got_header_size
4745796c8dcSSimon Schubert #define elf_backend_got_header_size	0
4755796c8dcSSimon Schubert #endif
4765796c8dcSSimon Schubert #ifndef elf_backend_got_elt_size
4775796c8dcSSimon Schubert #define elf_backend_got_elt_size _bfd_elf_default_got_elt_size
4785796c8dcSSimon Schubert #endif
4795796c8dcSSimon Schubert #ifndef elf_backend_obj_attrs_vendor
4805796c8dcSSimon Schubert #define elf_backend_obj_attrs_vendor		NULL
4815796c8dcSSimon Schubert #endif
4825796c8dcSSimon Schubert #ifndef elf_backend_obj_attrs_section
4835796c8dcSSimon Schubert #define elf_backend_obj_attrs_section		NULL
4845796c8dcSSimon Schubert #endif
4855796c8dcSSimon Schubert #ifndef elf_backend_obj_attrs_arg_type
4865796c8dcSSimon Schubert #define elf_backend_obj_attrs_arg_type		NULL
4875796c8dcSSimon Schubert #endif
4885796c8dcSSimon Schubert #ifndef elf_backend_obj_attrs_section_type
4895796c8dcSSimon Schubert #define elf_backend_obj_attrs_section_type		SHT_GNU_ATTRIBUTES
4905796c8dcSSimon Schubert #endif
4915796c8dcSSimon Schubert #ifndef elf_backend_obj_attrs_order
4925796c8dcSSimon Schubert #define elf_backend_obj_attrs_order		NULL
4935796c8dcSSimon Schubert #endif
494c50c785cSJohn Marino #ifndef elf_backend_obj_attrs_handle_unknown
495c50c785cSJohn Marino #define elf_backend_obj_attrs_handle_unknown	NULL
496c50c785cSJohn Marino #endif
497c50c785cSJohn Marino #ifndef elf_backend_static_tls_alignment
498c50c785cSJohn Marino #define elf_backend_static_tls_alignment	1
499c50c785cSJohn Marino #endif
5005796c8dcSSimon Schubert #ifndef elf_backend_post_process_headers
5015796c8dcSSimon Schubert #define elf_backend_post_process_headers	NULL
5025796c8dcSSimon Schubert #endif
5035796c8dcSSimon Schubert #ifndef elf_backend_print_symbol_all
5045796c8dcSSimon Schubert #define elf_backend_print_symbol_all		NULL
5055796c8dcSSimon Schubert #endif
5065796c8dcSSimon Schubert #ifndef elf_backend_output_arch_local_syms
5075796c8dcSSimon Schubert #define elf_backend_output_arch_local_syms	NULL
5085796c8dcSSimon Schubert #endif
5095796c8dcSSimon Schubert #ifndef elf_backend_output_arch_syms
5105796c8dcSSimon Schubert #define elf_backend_output_arch_syms		NULL
5115796c8dcSSimon Schubert #endif
5125796c8dcSSimon Schubert #ifndef elf_backend_copy_indirect_symbol
5135796c8dcSSimon Schubert #define elf_backend_copy_indirect_symbol  _bfd_elf_link_hash_copy_indirect
5145796c8dcSSimon Schubert #endif
5155796c8dcSSimon Schubert #ifndef elf_backend_hide_symbol
5165796c8dcSSimon Schubert #define elf_backend_hide_symbol		_bfd_elf_link_hash_hide_symbol
5175796c8dcSSimon Schubert #endif
5185796c8dcSSimon Schubert #ifndef elf_backend_fixup_symbol
5195796c8dcSSimon Schubert #define elf_backend_fixup_symbol		NULL
5205796c8dcSSimon Schubert #endif
5215796c8dcSSimon Schubert #ifndef elf_backend_merge_symbol_attribute
5225796c8dcSSimon Schubert #define elf_backend_merge_symbol_attribute	NULL
5235796c8dcSSimon Schubert #endif
5245796c8dcSSimon Schubert #ifndef elf_backend_get_target_dtag
5255796c8dcSSimon Schubert #define elf_backend_get_target_dtag		NULL
5265796c8dcSSimon Schubert #endif
5275796c8dcSSimon Schubert #ifndef elf_backend_ignore_undef_symbol
5285796c8dcSSimon Schubert #define elf_backend_ignore_undef_symbol		NULL
5295796c8dcSSimon Schubert #endif
5305796c8dcSSimon Schubert #ifndef elf_backend_emit_relocs
5315796c8dcSSimon Schubert #define elf_backend_emit_relocs			_bfd_elf_link_output_relocs
5325796c8dcSSimon Schubert #endif
5335796c8dcSSimon Schubert #ifndef elf_backend_count_relocs
5345796c8dcSSimon Schubert #define elf_backend_count_relocs		NULL
5355796c8dcSSimon Schubert #endif
5365796c8dcSSimon Schubert #ifndef elf_backend_grok_prstatus
5375796c8dcSSimon Schubert #define elf_backend_grok_prstatus		NULL
5385796c8dcSSimon Schubert #endif
5395796c8dcSSimon Schubert #ifndef elf_backend_grok_psinfo
5405796c8dcSSimon Schubert #define elf_backend_grok_psinfo			NULL
5415796c8dcSSimon Schubert #endif
5425796c8dcSSimon Schubert #ifndef elf_backend_write_core_note
5435796c8dcSSimon Schubert #define elf_backend_write_core_note		NULL
5445796c8dcSSimon Schubert #endif
545a45ae5f8SJohn Marino #ifndef elf_backend_lookup_section_flags_hook
546a45ae5f8SJohn Marino #define elf_backend_lookup_section_flags_hook	NULL
547a45ae5f8SJohn Marino #endif
5485796c8dcSSimon Schubert #ifndef elf_backend_reloc_type_class
5495796c8dcSSimon Schubert #define elf_backend_reloc_type_class		_bfd_elf_reloc_type_class
5505796c8dcSSimon Schubert #endif
5515796c8dcSSimon Schubert #ifndef elf_backend_discard_info
5525796c8dcSSimon Schubert #define elf_backend_discard_info		NULL
5535796c8dcSSimon Schubert #endif
5545796c8dcSSimon Schubert #ifndef elf_backend_ignore_discarded_relocs
5555796c8dcSSimon Schubert #define elf_backend_ignore_discarded_relocs	NULL
5565796c8dcSSimon Schubert #endif
5575796c8dcSSimon Schubert #ifndef elf_backend_action_discarded
5585796c8dcSSimon Schubert #define elf_backend_action_discarded _bfd_elf_default_action_discarded
5595796c8dcSSimon Schubert #endif
5605796c8dcSSimon Schubert #ifndef elf_backend_eh_frame_address_size
5615796c8dcSSimon Schubert #define elf_backend_eh_frame_address_size _bfd_elf_eh_frame_address_size
5625796c8dcSSimon Schubert #endif
5635796c8dcSSimon Schubert #ifndef elf_backend_can_make_relative_eh_frame
5645796c8dcSSimon Schubert #define elf_backend_can_make_relative_eh_frame	_bfd_elf_can_make_relative
5655796c8dcSSimon Schubert #endif
5665796c8dcSSimon Schubert #ifndef elf_backend_can_make_lsda_relative_eh_frame
5675796c8dcSSimon Schubert #define elf_backend_can_make_lsda_relative_eh_frame	_bfd_elf_can_make_relative
5685796c8dcSSimon Schubert #endif
5695796c8dcSSimon Schubert #ifndef elf_backend_encode_eh_address
5705796c8dcSSimon Schubert #define elf_backend_encode_eh_address		_bfd_elf_encode_eh_address
5715796c8dcSSimon Schubert #endif
5725796c8dcSSimon Schubert #ifndef elf_backend_write_section
5735796c8dcSSimon Schubert #define elf_backend_write_section		NULL
5745796c8dcSSimon Schubert #endif
5755796c8dcSSimon Schubert #ifndef elf_backend_mips_irix_compat
5765796c8dcSSimon Schubert #define elf_backend_mips_irix_compat		NULL
5775796c8dcSSimon Schubert #endif
5785796c8dcSSimon Schubert #ifndef elf_backend_mips_rtype_to_howto
5795796c8dcSSimon Schubert #define elf_backend_mips_rtype_to_howto		NULL
5805796c8dcSSimon Schubert #endif
5815796c8dcSSimon Schubert 
5825796c8dcSSimon Schubert /* Previously, backends could only use SHT_REL or SHT_RELA relocation
5835796c8dcSSimon Schubert    sections, but not both.  They defined USE_REL to indicate SHT_REL
5845796c8dcSSimon Schubert    sections, and left it undefined to indicated SHT_RELA sections.
5855796c8dcSSimon Schubert    For backwards compatibility, we still support this usage.  */
5865796c8dcSSimon Schubert #ifndef USE_REL
5875796c8dcSSimon Schubert #define USE_REL 0
5885796c8dcSSimon Schubert #endif
5895796c8dcSSimon Schubert 
5905796c8dcSSimon Schubert /* Use these in new code.  */
5915796c8dcSSimon Schubert #ifndef elf_backend_may_use_rel_p
5925796c8dcSSimon Schubert #define elf_backend_may_use_rel_p USE_REL
5935796c8dcSSimon Schubert #endif
5945796c8dcSSimon Schubert #ifndef elf_backend_may_use_rela_p
5955796c8dcSSimon Schubert #define elf_backend_may_use_rela_p !USE_REL
5965796c8dcSSimon Schubert #endif
5975796c8dcSSimon Schubert #ifndef elf_backend_default_use_rela_p
5985796c8dcSSimon Schubert #define elf_backend_default_use_rela_p !USE_REL
5995796c8dcSSimon Schubert #endif
6005796c8dcSSimon Schubert #ifndef elf_backend_rela_plts_and_copies_p
6015796c8dcSSimon Schubert #define elf_backend_rela_plts_and_copies_p elf_backend_default_use_rela_p
6025796c8dcSSimon Schubert #endif
6035796c8dcSSimon Schubert 
6045796c8dcSSimon Schubert #ifndef elf_backend_rela_normal
6055796c8dcSSimon Schubert #define elf_backend_rela_normal 0
6065796c8dcSSimon Schubert #endif
6075796c8dcSSimon Schubert 
6085796c8dcSSimon Schubert #ifndef elf_backend_plt_sym_val
6095796c8dcSSimon Schubert #define elf_backend_plt_sym_val NULL
6105796c8dcSSimon Schubert #endif
6115796c8dcSSimon Schubert #ifndef elf_backend_relplt_name
6125796c8dcSSimon Schubert #define elf_backend_relplt_name NULL
6135796c8dcSSimon Schubert #endif
6145796c8dcSSimon Schubert 
6155796c8dcSSimon Schubert #ifndef ELF_MACHINE_ALT1
6165796c8dcSSimon Schubert #define ELF_MACHINE_ALT1 0
6175796c8dcSSimon Schubert #endif
6185796c8dcSSimon Schubert 
6195796c8dcSSimon Schubert #ifndef ELF_MACHINE_ALT2
6205796c8dcSSimon Schubert #define ELF_MACHINE_ALT2 0
6215796c8dcSSimon Schubert #endif
6225796c8dcSSimon Schubert 
6235796c8dcSSimon Schubert #ifndef elf_backend_size_info
6245796c8dcSSimon Schubert #define elf_backend_size_info _bfd_elfNN_size_info
6255796c8dcSSimon Schubert #endif
6265796c8dcSSimon Schubert 
6275796c8dcSSimon Schubert #ifndef elf_backend_special_sections
6285796c8dcSSimon Schubert #define elf_backend_special_sections NULL
6295796c8dcSSimon Schubert #endif
6305796c8dcSSimon Schubert 
6315796c8dcSSimon Schubert #ifndef elf_backend_sign_extend_vma
6325796c8dcSSimon Schubert #define elf_backend_sign_extend_vma 0
6335796c8dcSSimon Schubert #endif
6345796c8dcSSimon Schubert 
6355796c8dcSSimon Schubert #ifndef elf_backend_link_order_error_handler
6365796c8dcSSimon Schubert #define elf_backend_link_order_error_handler _bfd_default_error_handler
6375796c8dcSSimon Schubert #endif
6385796c8dcSSimon Schubert 
6395796c8dcSSimon Schubert #ifndef elf_backend_common_definition
6405796c8dcSSimon Schubert #define elf_backend_common_definition _bfd_elf_common_definition
6415796c8dcSSimon Schubert #endif
6425796c8dcSSimon Schubert 
6435796c8dcSSimon Schubert #ifndef elf_backend_common_section_index
6445796c8dcSSimon Schubert #define elf_backend_common_section_index _bfd_elf_common_section_index
6455796c8dcSSimon Schubert #endif
6465796c8dcSSimon Schubert 
6475796c8dcSSimon Schubert #ifndef elf_backend_common_section
6485796c8dcSSimon Schubert #define elf_backend_common_section _bfd_elf_common_section
6495796c8dcSSimon Schubert #endif
6505796c8dcSSimon Schubert 
6515796c8dcSSimon Schubert #ifndef elf_backend_merge_symbol
6525796c8dcSSimon Schubert #define elf_backend_merge_symbol NULL
6535796c8dcSSimon Schubert #endif
6545796c8dcSSimon Schubert 
6555796c8dcSSimon Schubert #ifndef elf_backend_hash_symbol
6565796c8dcSSimon Schubert #define elf_backend_hash_symbol _bfd_elf_hash_symbol
6575796c8dcSSimon Schubert #endif
6585796c8dcSSimon Schubert 
6595796c8dcSSimon Schubert #ifndef elf_backend_is_function_type
6605796c8dcSSimon Schubert #define elf_backend_is_function_type _bfd_elf_is_function_type
6615796c8dcSSimon Schubert #endif
6625796c8dcSSimon Schubert 
663*ef5ccd6cSJohn Marino #ifndef elf_backend_maybe_function_sym
664*ef5ccd6cSJohn Marino #define elf_backend_maybe_function_sym _bfd_elf_maybe_function_sym
665*ef5ccd6cSJohn Marino #endif
666*ef5ccd6cSJohn Marino 
667a45ae5f8SJohn Marino #ifndef elf_match_priority
668a45ae5f8SJohn Marino #define elf_match_priority \
669a45ae5f8SJohn Marino   (ELF_ARCH == bfd_arch_unknown ? 2 : ELF_OSABI == ELFOSABI_NONE ? 1 : 0)
670a45ae5f8SJohn Marino #endif
671a45ae5f8SJohn Marino 
6725796c8dcSSimon Schubert extern const struct elf_size_info _bfd_elfNN_size_info;
6735796c8dcSSimon Schubert 
6745796c8dcSSimon Schubert static struct elf_backend_data elfNN_bed =
6755796c8dcSSimon Schubert {
6765796c8dcSSimon Schubert   ELF_ARCH,			/* arch */
677c50c785cSJohn Marino   ELF_TARGET_ID,		/* target_id */
6785796c8dcSSimon Schubert   ELF_MACHINE_CODE,		/* elf_machine_code */
6795796c8dcSSimon Schubert   ELF_OSABI,			/* elf_osabi  */
6805796c8dcSSimon Schubert   ELF_MAXPAGESIZE,		/* maxpagesize */
6815796c8dcSSimon Schubert   ELF_MINPAGESIZE,		/* minpagesize */
6825796c8dcSSimon Schubert   ELF_COMMONPAGESIZE,		/* commonpagesize */
6835796c8dcSSimon Schubert   ELF_DYNAMIC_SEC_FLAGS,	/* dynamic_sec_flags */
684a45ae5f8SJohn Marino   elf_backend_arch_data,
6855796c8dcSSimon Schubert   elf_info_to_howto,
6865796c8dcSSimon Schubert   elf_info_to_howto_rel,
6875796c8dcSSimon Schubert   elf_backend_sym_is_global,
6885796c8dcSSimon Schubert   elf_backend_object_p,
6895796c8dcSSimon Schubert   elf_backend_symbol_processing,
6905796c8dcSSimon Schubert   elf_backend_symbol_table_processing,
6915796c8dcSSimon Schubert   elf_backend_get_symbol_type,
6925796c8dcSSimon Schubert   elf_backend_archive_symbol_lookup,
6935796c8dcSSimon Schubert   elf_backend_name_local_section_symbols,
6945796c8dcSSimon Schubert   elf_backend_section_processing,
6955796c8dcSSimon Schubert   elf_backend_section_from_shdr,
6965796c8dcSSimon Schubert   elf_backend_section_flags,
6975796c8dcSSimon Schubert   elf_backend_get_sec_type_attr,
6985796c8dcSSimon Schubert   elf_backend_section_from_phdr,
6995796c8dcSSimon Schubert   elf_backend_fake_sections,
7005796c8dcSSimon Schubert   elf_backend_section_from_bfd_section,
7015796c8dcSSimon Schubert   elf_backend_add_symbol_hook,
7025796c8dcSSimon Schubert   elf_backend_link_output_symbol_hook,
7035796c8dcSSimon Schubert   elf_backend_create_dynamic_sections,
7045796c8dcSSimon Schubert   elf_backend_omit_section_dynsym,
7055796c8dcSSimon Schubert   elf_backend_relocs_compatible,
7065796c8dcSSimon Schubert   elf_backend_check_relocs,
7075796c8dcSSimon Schubert   elf_backend_check_directives,
7085796c8dcSSimon Schubert   elf_backend_as_needed_cleanup,
7095796c8dcSSimon Schubert   elf_backend_adjust_dynamic_symbol,
7105796c8dcSSimon Schubert   elf_backend_always_size_sections,
7115796c8dcSSimon Schubert   elf_backend_size_dynamic_sections,
7125796c8dcSSimon Schubert   elf_backend_init_index_section,
7135796c8dcSSimon Schubert   elf_backend_relocate_section,
7145796c8dcSSimon Schubert   elf_backend_finish_dynamic_symbol,
7155796c8dcSSimon Schubert   elf_backend_finish_dynamic_sections,
7165796c8dcSSimon Schubert   elf_backend_begin_write_processing,
7175796c8dcSSimon Schubert   elf_backend_final_write_processing,
7185796c8dcSSimon Schubert   elf_backend_additional_program_headers,
7195796c8dcSSimon Schubert   elf_backend_modify_segment_map,
7205796c8dcSSimon Schubert   elf_backend_modify_program_headers,
7215796c8dcSSimon Schubert   elf_backend_gc_keep,
7225796c8dcSSimon Schubert   elf_backend_gc_mark_dynamic_ref,
7235796c8dcSSimon Schubert   elf_backend_gc_mark_hook,
7245796c8dcSSimon Schubert   elf_backend_gc_mark_extra_sections,
7255796c8dcSSimon Schubert   elf_backend_gc_sweep_hook,
7265796c8dcSSimon Schubert   elf_backend_post_process_headers,
7275796c8dcSSimon Schubert   elf_backend_print_symbol_all,
7285796c8dcSSimon Schubert   elf_backend_output_arch_local_syms,
7295796c8dcSSimon Schubert   elf_backend_output_arch_syms,
7305796c8dcSSimon Schubert   elf_backend_copy_indirect_symbol,
7315796c8dcSSimon Schubert   elf_backend_hide_symbol,
7325796c8dcSSimon Schubert   elf_backend_fixup_symbol,
7335796c8dcSSimon Schubert   elf_backend_merge_symbol_attribute,
7345796c8dcSSimon Schubert   elf_backend_get_target_dtag,
7355796c8dcSSimon Schubert   elf_backend_ignore_undef_symbol,
7365796c8dcSSimon Schubert   elf_backend_emit_relocs,
7375796c8dcSSimon Schubert   elf_backend_count_relocs,
7385796c8dcSSimon Schubert   elf_backend_grok_prstatus,
7395796c8dcSSimon Schubert   elf_backend_grok_psinfo,
7405796c8dcSSimon Schubert   elf_backend_write_core_note,
741a45ae5f8SJohn Marino   elf_backend_lookup_section_flags_hook,
7425796c8dcSSimon Schubert   elf_backend_reloc_type_class,
7435796c8dcSSimon Schubert   elf_backend_discard_info,
7445796c8dcSSimon Schubert   elf_backend_ignore_discarded_relocs,
7455796c8dcSSimon Schubert   elf_backend_action_discarded,
7465796c8dcSSimon Schubert   elf_backend_eh_frame_address_size,
7475796c8dcSSimon Schubert   elf_backend_can_make_relative_eh_frame,
7485796c8dcSSimon Schubert   elf_backend_can_make_lsda_relative_eh_frame,
7495796c8dcSSimon Schubert   elf_backend_encode_eh_address,
7505796c8dcSSimon Schubert   elf_backend_write_section,
7515796c8dcSSimon Schubert   elf_backend_mips_irix_compat,
7525796c8dcSSimon Schubert   elf_backend_mips_rtype_to_howto,
7535796c8dcSSimon Schubert   elf_backend_ecoff_debug_swap,
7545796c8dcSSimon Schubert   elf_backend_bfd_from_remote_memory,
7555796c8dcSSimon Schubert   elf_backend_plt_sym_val,
7565796c8dcSSimon Schubert   elf_backend_common_definition,
7575796c8dcSSimon Schubert   elf_backend_common_section_index,
7585796c8dcSSimon Schubert   elf_backend_common_section,
7595796c8dcSSimon Schubert   elf_backend_merge_symbol,
7605796c8dcSSimon Schubert   elf_backend_hash_symbol,
7615796c8dcSSimon Schubert   elf_backend_is_function_type,
762*ef5ccd6cSJohn Marino   elf_backend_maybe_function_sym,
7635796c8dcSSimon Schubert   elf_backend_link_order_error_handler,
7645796c8dcSSimon Schubert   elf_backend_relplt_name,
7655796c8dcSSimon Schubert   ELF_MACHINE_ALT1,
7665796c8dcSSimon Schubert   ELF_MACHINE_ALT2,
7675796c8dcSSimon Schubert   &elf_backend_size_info,
7685796c8dcSSimon Schubert   elf_backend_special_sections,
7695796c8dcSSimon Schubert   elf_backend_got_header_size,
7705796c8dcSSimon Schubert   elf_backend_got_elt_size,
7715796c8dcSSimon Schubert   elf_backend_obj_attrs_vendor,
7725796c8dcSSimon Schubert   elf_backend_obj_attrs_section,
7735796c8dcSSimon Schubert   elf_backend_obj_attrs_arg_type,
7745796c8dcSSimon Schubert   elf_backend_obj_attrs_section_type,
7755796c8dcSSimon Schubert   elf_backend_obj_attrs_order,
776c50c785cSJohn Marino   elf_backend_obj_attrs_handle_unknown,
777c50c785cSJohn Marino   elf_backend_static_tls_alignment,
778*ef5ccd6cSJohn Marino   elf_backend_stack_align,
7795796c8dcSSimon Schubert   elf_backend_collect,
7805796c8dcSSimon Schubert   elf_backend_type_change_ok,
7815796c8dcSSimon Schubert   elf_backend_may_use_rel_p,
7825796c8dcSSimon Schubert   elf_backend_may_use_rela_p,
7835796c8dcSSimon Schubert   elf_backend_default_use_rela_p,
7845796c8dcSSimon Schubert   elf_backend_rela_plts_and_copies_p,
7855796c8dcSSimon Schubert   elf_backend_rela_normal,
7865796c8dcSSimon Schubert   elf_backend_sign_extend_vma,
7875796c8dcSSimon Schubert   elf_backend_want_got_plt,
7885796c8dcSSimon Schubert   elf_backend_plt_readonly,
7895796c8dcSSimon Schubert   elf_backend_want_plt_sym,
7905796c8dcSSimon Schubert   elf_backend_plt_not_loaded,
7915796c8dcSSimon Schubert   elf_backend_plt_alignment,
7925796c8dcSSimon Schubert   elf_backend_can_gc_sections,
7935796c8dcSSimon Schubert   elf_backend_can_refcount,
7945796c8dcSSimon Schubert   elf_backend_want_got_sym,
7955796c8dcSSimon Schubert   elf_backend_want_dynbss,
7965796c8dcSSimon Schubert   elf_backend_want_p_paddr_set_to_zero,
7975796c8dcSSimon Schubert   elf_backend_default_execstack
7985796c8dcSSimon Schubert };
7995796c8dcSSimon Schubert 
8005796c8dcSSimon Schubert /* Forward declaration for use when initialising alternative_target field.  */
8015796c8dcSSimon Schubert #ifdef TARGET_LITTLE_SYM
8025796c8dcSSimon Schubert extern const bfd_target TARGET_LITTLE_SYM;
8035796c8dcSSimon Schubert #endif
8045796c8dcSSimon Schubert 
8055796c8dcSSimon Schubert #ifdef TARGET_BIG_SYM
8065796c8dcSSimon Schubert const bfd_target TARGET_BIG_SYM =
8075796c8dcSSimon Schubert {
8085796c8dcSSimon Schubert   /* name: identify kind of target */
8095796c8dcSSimon Schubert   TARGET_BIG_NAME,
8105796c8dcSSimon Schubert 
8115796c8dcSSimon Schubert   /* flavour: general indication about file */
8125796c8dcSSimon Schubert   bfd_target_elf_flavour,
8135796c8dcSSimon Schubert 
8145796c8dcSSimon Schubert   /* byteorder: data is big endian */
8155796c8dcSSimon Schubert   BFD_ENDIAN_BIG,
8165796c8dcSSimon Schubert 
8175796c8dcSSimon Schubert   /* header_byteorder: header is also big endian */
8185796c8dcSSimon Schubert   BFD_ENDIAN_BIG,
8195796c8dcSSimon Schubert 
8205796c8dcSSimon Schubert   /* object_flags: mask of all file flags */
8215796c8dcSSimon Schubert   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
822c50c785cSJohn Marino    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
8235796c8dcSSimon Schubert 
8245796c8dcSSimon Schubert   /* section_flags: mask of all section flags */
8255796c8dcSSimon Schubert   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
8265796c8dcSSimon Schubert    | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES
8275796c8dcSSimon Schubert    | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP),
8285796c8dcSSimon Schubert 
8295796c8dcSSimon Schubert    /* leading_symbol_char: is the first char of a user symbol
8305796c8dcSSimon Schubert       predictable, and if so what is it */
8315796c8dcSSimon Schubert   elf_symbol_leading_char,
8325796c8dcSSimon Schubert 
8335796c8dcSSimon Schubert   /* ar_pad_char: pad character for filenames within an archive header
8345796c8dcSSimon Schubert      FIXME:  this really has nothing to do with ELF, this is a characteristic
8355796c8dcSSimon Schubert      of the archiver and/or os and should be independently tunable */
8365796c8dcSSimon Schubert   '/',
8375796c8dcSSimon Schubert 
8385796c8dcSSimon Schubert   /* ar_max_namelen: maximum number of characters in an archive header
8395796c8dcSSimon Schubert      FIXME:  this really has nothing to do with ELF, this is a characteristic
8405796c8dcSSimon Schubert      of the archiver and should be independently tunable.  The System V ABI,
8415796c8dcSSimon Schubert      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
8425796c8dcSSimon Schubert   15,
8435796c8dcSSimon Schubert 
844a45ae5f8SJohn Marino   elf_match_priority,
845a45ae5f8SJohn Marino 
8465796c8dcSSimon Schubert   /* Routines to byte-swap various sized integers from the data sections */
8475796c8dcSSimon Schubert   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
8485796c8dcSSimon Schubert     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
8495796c8dcSSimon Schubert     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
8505796c8dcSSimon Schubert 
8515796c8dcSSimon Schubert   /* Routines to byte-swap various sized integers from the file headers */
8525796c8dcSSimon Schubert   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
8535796c8dcSSimon Schubert     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
8545796c8dcSSimon Schubert     bfd_getb16, bfd_getb_signed_16, bfd_putb16,
8555796c8dcSSimon Schubert 
8565796c8dcSSimon Schubert   /* bfd_check_format: check the format of a file being read */
8575796c8dcSSimon Schubert   { _bfd_dummy_target,		/* unknown format */
8585796c8dcSSimon Schubert     bfd_elfNN_object_p,		/* assembler/linker output (object file) */
8595796c8dcSSimon Schubert     bfd_elfNN_archive_p,	/* an archive */
8605796c8dcSSimon Schubert     bfd_elfNN_core_file_p	/* a core file */
8615796c8dcSSimon Schubert   },
8625796c8dcSSimon Schubert 
8635796c8dcSSimon Schubert   /* bfd_set_format: set the format of a file being written */
8645796c8dcSSimon Schubert   { bfd_false,
8655796c8dcSSimon Schubert     bfd_elfNN_mkobject,
8665796c8dcSSimon Schubert     bfd_elfNN_mkarchive,
8675796c8dcSSimon Schubert     bfd_elfNN_mkcorefile
8685796c8dcSSimon Schubert   },
8695796c8dcSSimon Schubert 
8705796c8dcSSimon Schubert   /* bfd_write_contents: write cached information into a file being written */
8715796c8dcSSimon Schubert   { bfd_false,
8725796c8dcSSimon Schubert     bfd_elfNN_write_object_contents,
8735796c8dcSSimon Schubert     bfd_elfNN_write_archive_contents,
8745796c8dcSSimon Schubert     bfd_elfNN_write_corefile_contents,
8755796c8dcSSimon Schubert   },
8765796c8dcSSimon Schubert 
8775796c8dcSSimon Schubert   BFD_JUMP_TABLE_GENERIC (bfd_elfNN),
8785796c8dcSSimon Schubert   BFD_JUMP_TABLE_COPY (bfd_elfNN),
8795796c8dcSSimon Schubert   BFD_JUMP_TABLE_CORE (bfd_elfNN),
8805796c8dcSSimon Schubert #ifdef bfd_elfNN_archive_functions
8815796c8dcSSimon Schubert   BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
8825796c8dcSSimon Schubert #else
8835796c8dcSSimon Schubert   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
8845796c8dcSSimon Schubert #endif
8855796c8dcSSimon Schubert   BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),
8865796c8dcSSimon Schubert   BFD_JUMP_TABLE_RELOCS (bfd_elfNN),
8875796c8dcSSimon Schubert   BFD_JUMP_TABLE_WRITE (bfd_elfNN),
8885796c8dcSSimon Schubert   BFD_JUMP_TABLE_LINK (bfd_elfNN),
8895796c8dcSSimon Schubert   BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN),
8905796c8dcSSimon Schubert 
8915796c8dcSSimon Schubert   /* Alternative endian target.  */
8925796c8dcSSimon Schubert #ifdef TARGET_LITTLE_SYM
8935796c8dcSSimon Schubert   & TARGET_LITTLE_SYM,
8945796c8dcSSimon Schubert #else
8955796c8dcSSimon Schubert   NULL,
8965796c8dcSSimon Schubert #endif
8975796c8dcSSimon Schubert 
8985796c8dcSSimon Schubert   /* backend_data: */
8995796c8dcSSimon Schubert   &elfNN_bed
9005796c8dcSSimon Schubert };
9015796c8dcSSimon Schubert #endif
9025796c8dcSSimon Schubert 
9035796c8dcSSimon Schubert #ifdef TARGET_LITTLE_SYM
9045796c8dcSSimon Schubert const bfd_target TARGET_LITTLE_SYM =
9055796c8dcSSimon Schubert {
9065796c8dcSSimon Schubert   /* name: identify kind of target */
9075796c8dcSSimon Schubert   TARGET_LITTLE_NAME,
9085796c8dcSSimon Schubert 
9095796c8dcSSimon Schubert   /* flavour: general indication about file */
9105796c8dcSSimon Schubert   bfd_target_elf_flavour,
9115796c8dcSSimon Schubert 
9125796c8dcSSimon Schubert   /* byteorder: data is little endian */
9135796c8dcSSimon Schubert   BFD_ENDIAN_LITTLE,
9145796c8dcSSimon Schubert 
9155796c8dcSSimon Schubert   /* header_byteorder: header is also little endian */
9165796c8dcSSimon Schubert   BFD_ENDIAN_LITTLE,
9175796c8dcSSimon Schubert 
9185796c8dcSSimon Schubert   /* object_flags: mask of all file flags */
9195796c8dcSSimon Schubert   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
920c50c785cSJohn Marino    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
9215796c8dcSSimon Schubert 
9225796c8dcSSimon Schubert   /* section_flags: mask of all section flags */
9235796c8dcSSimon Schubert   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
9245796c8dcSSimon Schubert    | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES
9255796c8dcSSimon Schubert    | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP),
9265796c8dcSSimon Schubert 
9275796c8dcSSimon Schubert    /* leading_symbol_char: is the first char of a user symbol
9285796c8dcSSimon Schubert       predictable, and if so what is it */
9295796c8dcSSimon Schubert   elf_symbol_leading_char,
9305796c8dcSSimon Schubert 
9315796c8dcSSimon Schubert   /* ar_pad_char: pad character for filenames within an archive header
9325796c8dcSSimon Schubert      FIXME:  this really has nothing to do with ELF, this is a characteristic
9335796c8dcSSimon Schubert      of the archiver and/or os and should be independently tunable */
9345796c8dcSSimon Schubert   '/',
9355796c8dcSSimon Schubert 
9365796c8dcSSimon Schubert   /* ar_max_namelen: maximum number of characters in an archive header
9375796c8dcSSimon Schubert      FIXME:  this really has nothing to do with ELF, this is a characteristic
9385796c8dcSSimon Schubert      of the archiver and should be independently tunable.  The System V ABI,
9395796c8dcSSimon Schubert      Chapter 7 (Formats & Protocols), Archive section sets this as 15.  */
9405796c8dcSSimon Schubert   15,
9415796c8dcSSimon Schubert 
942a45ae5f8SJohn Marino   elf_match_priority,
943a45ae5f8SJohn Marino 
9445796c8dcSSimon Schubert   /* Routines to byte-swap various sized integers from the data sections */
9455796c8dcSSimon Schubert   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
9465796c8dcSSimon Schubert     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
9475796c8dcSSimon Schubert     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
9485796c8dcSSimon Schubert 
9495796c8dcSSimon Schubert   /* Routines to byte-swap various sized integers from the file headers */
9505796c8dcSSimon Schubert   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
9515796c8dcSSimon Schubert     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
9525796c8dcSSimon Schubert     bfd_getl16, bfd_getl_signed_16, bfd_putl16,
9535796c8dcSSimon Schubert 
9545796c8dcSSimon Schubert   /* bfd_check_format: check the format of a file being read */
9555796c8dcSSimon Schubert   { _bfd_dummy_target,		/* unknown format */
9565796c8dcSSimon Schubert     bfd_elfNN_object_p,		/* assembler/linker output (object file) */
9575796c8dcSSimon Schubert     bfd_elfNN_archive_p,	/* an archive */
9585796c8dcSSimon Schubert     bfd_elfNN_core_file_p	/* a core file */
9595796c8dcSSimon Schubert   },
9605796c8dcSSimon Schubert 
9615796c8dcSSimon Schubert   /* bfd_set_format: set the format of a file being written */
9625796c8dcSSimon Schubert   { bfd_false,
9635796c8dcSSimon Schubert     bfd_elfNN_mkobject,
9645796c8dcSSimon Schubert     bfd_elfNN_mkarchive,
9655796c8dcSSimon Schubert     bfd_elfNN_mkcorefile
9665796c8dcSSimon Schubert   },
9675796c8dcSSimon Schubert 
9685796c8dcSSimon Schubert   /* bfd_write_contents: write cached information into a file being written */
9695796c8dcSSimon Schubert   { bfd_false,
9705796c8dcSSimon Schubert     bfd_elfNN_write_object_contents,
9715796c8dcSSimon Schubert     bfd_elfNN_write_archive_contents,
9725796c8dcSSimon Schubert     bfd_elfNN_write_corefile_contents,
9735796c8dcSSimon Schubert   },
9745796c8dcSSimon Schubert 
9755796c8dcSSimon Schubert   BFD_JUMP_TABLE_GENERIC (bfd_elfNN),
9765796c8dcSSimon Schubert   BFD_JUMP_TABLE_COPY (bfd_elfNN),
9775796c8dcSSimon Schubert   BFD_JUMP_TABLE_CORE (bfd_elfNN),
9785796c8dcSSimon Schubert #ifdef bfd_elfNN_archive_functions
9795796c8dcSSimon Schubert   BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive),
9805796c8dcSSimon Schubert #else
9815796c8dcSSimon Schubert   BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
9825796c8dcSSimon Schubert #endif
9835796c8dcSSimon Schubert   BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN),
9845796c8dcSSimon Schubert   BFD_JUMP_TABLE_RELOCS (bfd_elfNN),
9855796c8dcSSimon Schubert   BFD_JUMP_TABLE_WRITE (bfd_elfNN),
9865796c8dcSSimon Schubert   BFD_JUMP_TABLE_LINK (bfd_elfNN),
9875796c8dcSSimon Schubert   BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN),
9885796c8dcSSimon Schubert 
9895796c8dcSSimon Schubert   /* Alternative endian target.  */
9905796c8dcSSimon Schubert #ifdef TARGET_BIG_SYM
9915796c8dcSSimon Schubert   & TARGET_BIG_SYM,
9925796c8dcSSimon Schubert #else
9935796c8dcSSimon Schubert   NULL,
9945796c8dcSSimon Schubert #endif
9955796c8dcSSimon Schubert 
9965796c8dcSSimon Schubert   /* backend_data: */
9975796c8dcSSimon Schubert   &elfNN_bed
9985796c8dcSSimon Schubert };
9995796c8dcSSimon Schubert #endif
1000