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