1 /* Target definitions for NN-bit ELF 2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 3 2003, 2004, 2005, 2006 Free Software Foundation, Inc. 4 5 This file is part of BFD, the Binary File Descriptor library. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 20 21 /* This structure contains everything that BFD knows about a target. 22 It includes things like its byte order, name, what routines to call 23 to do various operations, etc. Every BFD points to a target structure 24 with its "xvec" member. 25 26 There are two such structures here: one for big-endian machines and 27 one for little-endian machines. */ 28 29 #ifndef bfd_elfNN_close_and_cleanup 30 #define bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup 31 #endif 32 #define bfd_elfNN_bfd_free_cached_info _bfd_generic_bfd_free_cached_info 33 #ifndef bfd_elfNN_get_section_contents 34 #define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents 35 #endif 36 37 #define bfd_elfNN_canonicalize_dynamic_symtab \ 38 _bfd_elf_canonicalize_dynamic_symtab 39 #ifndef bfd_elfNN_get_synthetic_symtab 40 #define bfd_elfNN_get_synthetic_symtab \ 41 _bfd_elf_get_synthetic_symtab 42 #endif 43 #ifndef bfd_elfNN_canonicalize_reloc 44 #define bfd_elfNN_canonicalize_reloc _bfd_elf_canonicalize_reloc 45 #endif 46 #ifndef bfd_elfNN_find_nearest_line 47 #define bfd_elfNN_find_nearest_line _bfd_elf_find_nearest_line 48 #endif 49 #ifndef bfd_elfNN_find_inliner_info 50 #define bfd_elfNN_find_inliner_info _bfd_elf_find_inliner_info 51 #endif 52 #define bfd_elfNN_read_minisymbols _bfd_elf_read_minisymbols 53 #define bfd_elfNN_minisymbol_to_symbol _bfd_elf_minisymbol_to_symbol 54 #define bfd_elfNN_get_dynamic_symtab_upper_bound \ 55 _bfd_elf_get_dynamic_symtab_upper_bound 56 #define bfd_elfNN_get_lineno _bfd_elf_get_lineno 57 #ifndef bfd_elfNN_get_reloc_upper_bound 58 #define bfd_elfNN_get_reloc_upper_bound _bfd_elf_get_reloc_upper_bound 59 #endif 60 #ifndef bfd_elfNN_get_symbol_info 61 #define bfd_elfNN_get_symbol_info _bfd_elf_get_symbol_info 62 #endif 63 #define bfd_elfNN_canonicalize_symtab _bfd_elf_canonicalize_symtab 64 #define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound 65 #define bfd_elfNN_make_empty_symbol _bfd_elf_make_empty_symbol 66 #ifndef bfd_elfNN_new_section_hook 67 #define bfd_elfNN_new_section_hook _bfd_elf_new_section_hook 68 #endif 69 #define bfd_elfNN_set_arch_mach _bfd_elf_set_arch_mach 70 #ifndef bfd_elfNN_set_section_contents 71 #define bfd_elfNN_set_section_contents _bfd_elf_set_section_contents 72 #endif 73 #define bfd_elfNN_sizeof_headers _bfd_elf_sizeof_headers 74 #define bfd_elfNN_write_object_contents _bfd_elf_write_object_contents 75 #define bfd_elfNN_write_corefile_contents _bfd_elf_write_corefile_contents 76 77 #define bfd_elfNN_get_section_contents_in_window \ 78 _bfd_generic_get_section_contents_in_window 79 80 #ifndef elf_backend_can_refcount 81 #define elf_backend_can_refcount 0 82 #endif 83 #ifndef elf_backend_want_got_plt 84 #define elf_backend_want_got_plt 0 85 #endif 86 #ifndef elf_backend_plt_readonly 87 #define elf_backend_plt_readonly 0 88 #endif 89 #ifndef elf_backend_want_plt_sym 90 #define elf_backend_want_plt_sym 0 91 #endif 92 #ifndef elf_backend_plt_not_loaded 93 #define elf_backend_plt_not_loaded 0 94 #endif 95 #ifndef elf_backend_plt_alignment 96 #define elf_backend_plt_alignment 2 97 #endif 98 #ifndef elf_backend_want_dynbss 99 #define elf_backend_want_dynbss 1 100 #endif 101 #ifndef elf_backend_want_p_paddr_set_to_zero 102 #define elf_backend_want_p_paddr_set_to_zero 0 103 #endif 104 105 #define bfd_elfNN_bfd_debug_info_start bfd_void 106 #define bfd_elfNN_bfd_debug_info_end bfd_void 107 #define bfd_elfNN_bfd_debug_info_accumulate \ 108 ((void (*) (bfd*, struct bfd_section *)) bfd_void) 109 110 #ifndef bfd_elfNN_bfd_get_relocated_section_contents 111 #define bfd_elfNN_bfd_get_relocated_section_contents \ 112 bfd_generic_get_relocated_section_contents 113 #endif 114 115 #ifndef bfd_elfNN_bfd_relax_section 116 #define bfd_elfNN_bfd_relax_section bfd_generic_relax_section 117 #endif 118 119 #ifndef elf_backend_can_gc_sections 120 #define elf_backend_can_gc_sections 0 121 #endif 122 #ifndef elf_backend_can_refcount 123 #define elf_backend_can_refcount 0 124 #endif 125 #ifndef elf_backend_want_got_sym 126 #define elf_backend_want_got_sym 1 127 #endif 128 #ifndef elf_backend_gc_mark_dynamic_ref 129 #define elf_backend_gc_mark_dynamic_ref bfd_elf_gc_mark_dynamic_ref_symbol 130 #endif 131 #ifndef elf_backend_gc_mark_hook 132 #define elf_backend_gc_mark_hook NULL 133 #endif 134 #ifndef elf_backend_gc_sweep_hook 135 #define elf_backend_gc_sweep_hook NULL 136 #endif 137 #ifndef bfd_elfNN_bfd_gc_sections 138 #define bfd_elfNN_bfd_gc_sections bfd_elf_gc_sections 139 #endif 140 141 #ifndef bfd_elfNN_bfd_merge_sections 142 #define bfd_elfNN_bfd_merge_sections \ 143 _bfd_elf_merge_sections 144 #endif 145 146 #ifndef bfd_elfNN_bfd_is_group_section 147 #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section 148 #endif 149 150 #ifndef bfd_elfNN_bfd_discard_group 151 #define bfd_elfNN_bfd_discard_group bfd_generic_discard_group 152 #endif 153 154 #ifndef bfd_elfNN_section_already_linked 155 #define bfd_elfNN_section_already_linked \ 156 _bfd_elf_section_already_linked 157 #endif 158 159 #ifndef bfd_elfNN_bfd_make_debug_symbol 160 #define bfd_elfNN_bfd_make_debug_symbol \ 161 ((asymbol * (*) (bfd *, void *, unsigned long)) bfd_nullvoidptr) 162 #endif 163 164 #ifndef bfd_elfNN_bfd_copy_private_symbol_data 165 #define bfd_elfNN_bfd_copy_private_symbol_data \ 166 _bfd_elf_copy_private_symbol_data 167 #endif 168 169 #ifndef bfd_elfNN_bfd_copy_private_section_data 170 #define bfd_elfNN_bfd_copy_private_section_data \ 171 _bfd_elf_copy_private_section_data 172 #endif 173 #ifndef bfd_elfNN_bfd_copy_private_header_data 174 #define bfd_elfNN_bfd_copy_private_header_data \ 175 _bfd_elf_copy_private_header_data 176 #endif 177 #ifndef bfd_elfNN_bfd_copy_private_bfd_data 178 #define bfd_elfNN_bfd_copy_private_bfd_data \ 179 _bfd_elf_copy_private_bfd_data 180 #endif 181 #ifndef bfd_elfNN_bfd_print_private_bfd_data 182 #define bfd_elfNN_bfd_print_private_bfd_data \ 183 _bfd_elf_print_private_bfd_data 184 #endif 185 #ifndef bfd_elfNN_bfd_merge_private_bfd_data 186 #define bfd_elfNN_bfd_merge_private_bfd_data \ 187 ((bfd_boolean (*) (bfd *, bfd *)) bfd_true) 188 #endif 189 #ifndef bfd_elfNN_bfd_set_private_flags 190 #define bfd_elfNN_bfd_set_private_flags \ 191 ((bfd_boolean (*) (bfd *, flagword)) bfd_true) 192 #endif 193 #ifndef bfd_elfNN_bfd_is_local_label_name 194 #define bfd_elfNN_bfd_is_local_label_name _bfd_elf_is_local_label_name 195 #endif 196 #ifndef bfd_elfNN_bfd_is_target_special_symbol 197 #define bfd_elfNN_bfd_is_target_special_symbol \ 198 ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false) 199 #endif 200 201 #ifndef bfd_elfNN_get_dynamic_reloc_upper_bound 202 #define bfd_elfNN_get_dynamic_reloc_upper_bound \ 203 _bfd_elf_get_dynamic_reloc_upper_bound 204 #endif 205 #ifndef bfd_elfNN_canonicalize_dynamic_reloc 206 #define bfd_elfNN_canonicalize_dynamic_reloc \ 207 _bfd_elf_canonicalize_dynamic_reloc 208 #endif 209 210 #ifndef bfd_elfNN_bfd_link_hash_table_free 211 #define bfd_elfNN_bfd_link_hash_table_free _bfd_generic_link_hash_table_free 212 #endif 213 214 #ifdef elf_backend_relocate_section 215 #ifndef bfd_elfNN_bfd_link_hash_table_create 216 #define bfd_elfNN_bfd_link_hash_table_create _bfd_elf_link_hash_table_create 217 #endif 218 #ifndef bfd_elfNN_bfd_link_add_symbols 219 #define bfd_elfNN_bfd_link_add_symbols bfd_elf_link_add_symbols 220 #endif 221 #ifndef bfd_elfNN_bfd_final_link 222 #define bfd_elfNN_bfd_final_link bfd_elf_final_link 223 #endif 224 #else /* ! defined (elf_backend_relocate_section) */ 225 /* If no backend relocate_section routine, use the generic linker. 226 Note - this will prevent the port from being able to use some of 227 the other features of the ELF linker, because the generic hash structure 228 does not have the fields needed by the ELF linker. In particular it 229 means that linking directly to S-records will not work. */ 230 #ifndef bfd_elfNN_bfd_link_hash_table_create 231 #define bfd_elfNN_bfd_link_hash_table_create \ 232 _bfd_generic_link_hash_table_create 233 #endif 234 #ifndef bfd_elfNN_bfd_link_add_symbols 235 #define bfd_elfNN_bfd_link_add_symbols _bfd_generic_link_add_symbols 236 #endif 237 #ifndef bfd_elfNN_bfd_final_link 238 #define bfd_elfNN_bfd_final_link _bfd_generic_final_link 239 #endif 240 #endif /* ! defined (elf_backend_relocate_section) */ 241 242 #ifndef bfd_elfNN_bfd_link_just_syms 243 #define bfd_elfNN_bfd_link_just_syms _bfd_elf_link_just_syms 244 #endif 245 246 #ifndef bfd_elfNN_bfd_link_split_section 247 #define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section 248 #endif 249 250 #ifndef bfd_elfNN_archive_p 251 #define bfd_elfNN_archive_p bfd_generic_archive_p 252 #endif 253 254 #ifndef bfd_elfNN_write_archive_contents 255 #define bfd_elfNN_write_archive_contents _bfd_write_archive_contents 256 #endif 257 258 #ifndef bfd_elfNN_mkobject 259 #define bfd_elfNN_mkobject bfd_elf_mkobject 260 #endif 261 262 #ifndef bfd_elfNN_mkcorefile 263 #define bfd_elfNN_mkcorefile bfd_elf_mkcorefile 264 #endif 265 266 #ifndef bfd_elfNN_mkarchive 267 #define bfd_elfNN_mkarchive _bfd_generic_mkarchive 268 #endif 269 270 #ifndef bfd_elfNN_print_symbol 271 #define bfd_elfNN_print_symbol bfd_elf_print_symbol 272 #endif 273 274 #ifndef elf_symbol_leading_char 275 #define elf_symbol_leading_char 0 276 #endif 277 278 #ifndef elf_info_to_howto 279 #define elf_info_to_howto 0 280 #endif 281 282 #ifndef elf_info_to_howto_rel 283 #define elf_info_to_howto_rel 0 284 #endif 285 286 #ifndef ELF_MAXPAGESIZE 287 #error ELF_MAXPAGESIZE is not defined 288 #define ELF_MAXPAGESIZE 1 289 #endif 290 291 #ifndef ELF_MINPAGESIZE 292 #define ELF_MINPAGESIZE ELF_MAXPAGESIZE 293 #endif 294 295 #ifndef ELF_DYNAMIC_SEC_FLAGS 296 /* Note that we set the SEC_IN_MEMORY flag for these sections. */ 297 #define ELF_DYNAMIC_SEC_FLAGS \ 298 (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS \ 299 | SEC_IN_MEMORY | SEC_LINKER_CREATED) 300 #endif 301 302 #ifndef elf_backend_collect 303 #define elf_backend_collect FALSE 304 #endif 305 #ifndef elf_backend_type_change_ok 306 #define elf_backend_type_change_ok FALSE 307 #endif 308 309 #ifndef elf_backend_sym_is_global 310 #define elf_backend_sym_is_global 0 311 #endif 312 #ifndef elf_backend_object_p 313 #define elf_backend_object_p 0 314 #endif 315 #ifndef elf_backend_symbol_processing 316 #define elf_backend_symbol_processing 0 317 #endif 318 #ifndef elf_backend_symbol_table_processing 319 #define elf_backend_symbol_table_processing 0 320 #endif 321 #ifndef elf_backend_get_symbol_type 322 #define elf_backend_get_symbol_type 0 323 #endif 324 #ifndef elf_backend_archive_symbol_lookup 325 #define elf_backend_archive_symbol_lookup _bfd_elf_archive_symbol_lookup 326 #endif 327 #ifndef elf_backend_name_local_section_symbols 328 #define elf_backend_name_local_section_symbols 0 329 #endif 330 #ifndef elf_backend_section_processing 331 #define elf_backend_section_processing 0 332 #endif 333 #ifndef elf_backend_section_from_shdr 334 #define elf_backend_section_from_shdr _bfd_elf_make_section_from_shdr 335 #endif 336 #ifndef elf_backend_section_flags 337 #define elf_backend_section_flags 0 338 #endif 339 #ifndef elf_backend_get_sec_type_attr 340 #define elf_backend_get_sec_type_attr _bfd_elf_get_sec_type_attr 341 #endif 342 #ifndef elf_backend_section_from_phdr 343 #define elf_backend_section_from_phdr _bfd_elf_make_section_from_phdr 344 #endif 345 #ifndef elf_backend_fake_sections 346 #define elf_backend_fake_sections 0 347 #endif 348 #ifndef elf_backend_section_from_bfd_section 349 #define elf_backend_section_from_bfd_section 0 350 #endif 351 #ifndef elf_backend_add_symbol_hook 352 #define elf_backend_add_symbol_hook 0 353 #endif 354 #ifndef elf_backend_link_output_symbol_hook 355 #define elf_backend_link_output_symbol_hook 0 356 #endif 357 #ifndef elf_backend_create_dynamic_sections 358 #define elf_backend_create_dynamic_sections 0 359 #endif 360 #ifndef elf_backend_omit_section_dynsym 361 #define elf_backend_omit_section_dynsym _bfd_elf_link_omit_section_dynsym 362 #endif 363 #ifndef elf_backend_check_relocs 364 #define elf_backend_check_relocs 0 365 #endif 366 #ifndef elf_backend_check_directives 367 #define elf_backend_check_directives 0 368 #endif 369 #ifndef elf_backend_adjust_dynamic_symbol 370 #define elf_backend_adjust_dynamic_symbol 0 371 #endif 372 #ifndef elf_backend_always_size_sections 373 #define elf_backend_always_size_sections 0 374 #endif 375 #ifndef elf_backend_size_dynamic_sections 376 #define elf_backend_size_dynamic_sections 0 377 #endif 378 #ifndef elf_backend_relocate_section 379 #define elf_backend_relocate_section 0 380 #endif 381 #ifndef elf_backend_finish_dynamic_symbol 382 #define elf_backend_finish_dynamic_symbol 0 383 #endif 384 #ifndef elf_backend_finish_dynamic_sections 385 #define elf_backend_finish_dynamic_sections 0 386 #endif 387 #ifndef elf_backend_begin_write_processing 388 #define elf_backend_begin_write_processing 0 389 #endif 390 #ifndef elf_backend_final_write_processing 391 #define elf_backend_final_write_processing 0 392 #endif 393 #ifndef elf_backend_additional_program_headers 394 #define elf_backend_additional_program_headers 0 395 #endif 396 #ifndef elf_backend_modify_segment_map 397 #define elf_backend_modify_segment_map 0 398 #endif 399 #ifndef elf_backend_ecoff_debug_swap 400 #define elf_backend_ecoff_debug_swap 0 401 #endif 402 #ifndef elf_backend_bfd_from_remote_memory 403 #define elf_backend_bfd_from_remote_memory _bfd_elfNN_bfd_from_remote_memory 404 #endif 405 #ifndef elf_backend_got_header_size 406 #define elf_backend_got_header_size 0 407 #endif 408 #ifndef elf_backend_post_process_headers 409 #define elf_backend_post_process_headers NULL 410 #endif 411 #ifndef elf_backend_print_symbol_all 412 #define elf_backend_print_symbol_all NULL 413 #endif 414 #ifndef elf_backend_output_arch_syms 415 #define elf_backend_output_arch_syms NULL 416 #endif 417 #ifndef elf_backend_copy_indirect_symbol 418 #define elf_backend_copy_indirect_symbol _bfd_elf_link_hash_copy_indirect 419 #endif 420 #ifndef elf_backend_hide_symbol 421 #define elf_backend_hide_symbol _bfd_elf_link_hash_hide_symbol 422 #endif 423 #ifndef elf_backend_fixup_symbol 424 #define elf_backend_fixup_symbol NULL 425 #endif 426 #ifndef elf_backend_merge_symbol_attribute 427 #define elf_backend_merge_symbol_attribute NULL 428 #endif 429 #ifndef elf_backend_ignore_undef_symbol 430 #define elf_backend_ignore_undef_symbol NULL 431 #endif 432 #ifndef elf_backend_emit_relocs 433 #define elf_backend_emit_relocs _bfd_elf_link_output_relocs 434 #endif 435 #ifndef elf_backend_count_relocs 436 #define elf_backend_count_relocs NULL 437 #endif 438 #ifndef elf_backend_grok_prstatus 439 #define elf_backend_grok_prstatus NULL 440 #endif 441 #ifndef elf_backend_grok_psinfo 442 #define elf_backend_grok_psinfo NULL 443 #endif 444 #ifndef elf_backend_sprintf_vma 445 #define elf_backend_sprintf_vma _bfd_elf_sprintf_vma 446 #endif 447 #ifndef elf_backend_fprintf_vma 448 #define elf_backend_fprintf_vma _bfd_elf_fprintf_vma 449 #endif 450 #ifndef elf_backend_reloc_type_class 451 #define elf_backend_reloc_type_class _bfd_elf_reloc_type_class 452 #endif 453 #ifndef elf_backend_discard_info 454 #define elf_backend_discard_info NULL 455 #endif 456 #ifndef elf_backend_ignore_discarded_relocs 457 #define elf_backend_ignore_discarded_relocs NULL 458 #endif 459 #ifndef elf_backend_action_discarded 460 #define elf_backend_action_discarded _bfd_elf_default_action_discarded 461 #endif 462 #ifndef elf_backend_eh_frame_address_size 463 #define elf_backend_eh_frame_address_size _bfd_elf_eh_frame_address_size 464 #endif 465 #ifndef elf_backend_can_make_relative_eh_frame 466 #define elf_backend_can_make_relative_eh_frame _bfd_elf_can_make_relative 467 #endif 468 #ifndef elf_backend_can_make_lsda_relative_eh_frame 469 #define elf_backend_can_make_lsda_relative_eh_frame _bfd_elf_can_make_relative 470 #endif 471 #ifndef elf_backend_encode_eh_address 472 #define elf_backend_encode_eh_address _bfd_elf_encode_eh_address 473 #endif 474 #ifndef elf_backend_write_section 475 #define elf_backend_write_section NULL 476 #endif 477 #ifndef elf_backend_mips_irix_compat 478 #define elf_backend_mips_irix_compat NULL 479 #endif 480 #ifndef elf_backend_mips_rtype_to_howto 481 #define elf_backend_mips_rtype_to_howto NULL 482 #endif 483 484 /* Previously, backends could only use SHT_REL or SHT_RELA relocation 485 sections, but not both. They defined USE_REL to indicate SHT_REL 486 sections, and left it undefined to indicated SHT_RELA sections. 487 For backwards compatibility, we still support this usage. */ 488 #ifndef USE_REL 489 #define USE_REL 0 490 #endif 491 492 /* Use these in new code. */ 493 #ifndef elf_backend_may_use_rel_p 494 #define elf_backend_may_use_rel_p USE_REL 495 #endif 496 #ifndef elf_backend_may_use_rela_p 497 #define elf_backend_may_use_rela_p !USE_REL 498 #endif 499 #ifndef elf_backend_default_use_rela_p 500 #define elf_backend_default_use_rela_p !USE_REL 501 #endif 502 503 #ifndef elf_backend_rela_normal 504 #define elf_backend_rela_normal 0 505 #endif 506 507 #ifndef elf_backend_plt_sym_val 508 #define elf_backend_plt_sym_val NULL 509 #endif 510 #ifndef elf_backend_relplt_name 511 #define elf_backend_relplt_name NULL 512 #endif 513 514 #ifndef ELF_MACHINE_ALT1 515 #define ELF_MACHINE_ALT1 0 516 #endif 517 518 #ifndef ELF_MACHINE_ALT2 519 #define ELF_MACHINE_ALT2 0 520 #endif 521 522 #ifndef elf_backend_size_info 523 #define elf_backend_size_info _bfd_elfNN_size_info 524 #endif 525 526 #ifndef elf_backend_special_sections 527 #define elf_backend_special_sections NULL 528 #endif 529 530 #ifndef elf_backend_sign_extend_vma 531 #define elf_backend_sign_extend_vma 0 532 #endif 533 534 #ifndef elf_backend_link_order_error_handler 535 #define elf_backend_link_order_error_handler _bfd_default_error_handler 536 #endif 537 538 #ifndef elf_backend_common_definition 539 #define elf_backend_common_definition _bfd_elf_common_definition 540 #endif 541 542 #ifndef elf_backend_common_section_index 543 #define elf_backend_common_section_index _bfd_elf_common_section_index 544 #endif 545 546 #ifndef elf_backend_common_section 547 #define elf_backend_common_section _bfd_elf_common_section 548 #endif 549 550 #ifndef elf_backend_merge_symbol 551 #define elf_backend_merge_symbol NULL 552 #endif 553 554 #ifndef elf_backend_hash_symbol 555 #define elf_backend_hash_symbol _bfd_elf_hash_symbol 556 #endif 557 558 extern const struct elf_size_info _bfd_elfNN_size_info; 559 560 #ifndef INCLUDED_TARGET_FILE 561 static const struct elf_backend_data elfNN_bed = 562 { 563 ELF_ARCH, /* arch */ 564 ELF_MACHINE_CODE, /* elf_machine_code */ 565 ELF_MAXPAGESIZE, /* maxpagesize */ 566 ELF_MINPAGESIZE, /* minpagesize */ 567 ELF_DYNAMIC_SEC_FLAGS, /* dynamic_sec_flags */ 568 elf_info_to_howto, 569 elf_info_to_howto_rel, 570 elf_backend_sym_is_global, 571 elf_backend_object_p, 572 elf_backend_symbol_processing, 573 elf_backend_symbol_table_processing, 574 elf_backend_get_symbol_type, 575 elf_backend_archive_symbol_lookup, 576 elf_backend_name_local_section_symbols, 577 elf_backend_section_processing, 578 elf_backend_section_from_shdr, 579 elf_backend_section_flags, 580 elf_backend_get_sec_type_attr, 581 elf_backend_section_from_phdr, 582 elf_backend_fake_sections, 583 elf_backend_section_from_bfd_section, 584 elf_backend_add_symbol_hook, 585 elf_backend_link_output_symbol_hook, 586 elf_backend_create_dynamic_sections, 587 elf_backend_omit_section_dynsym, 588 elf_backend_check_relocs, 589 elf_backend_check_directives, 590 elf_backend_adjust_dynamic_symbol, 591 elf_backend_always_size_sections, 592 elf_backend_size_dynamic_sections, 593 elf_backend_relocate_section, 594 elf_backend_finish_dynamic_symbol, 595 elf_backend_finish_dynamic_sections, 596 elf_backend_begin_write_processing, 597 elf_backend_final_write_processing, 598 elf_backend_additional_program_headers, 599 elf_backend_modify_segment_map, 600 elf_backend_gc_mark_dynamic_ref, 601 elf_backend_gc_mark_hook, 602 elf_backend_gc_sweep_hook, 603 elf_backend_post_process_headers, 604 elf_backend_print_symbol_all, 605 elf_backend_output_arch_syms, 606 elf_backend_copy_indirect_symbol, 607 elf_backend_hide_symbol, 608 elf_backend_fixup_symbol, 609 elf_backend_merge_symbol_attribute, 610 elf_backend_ignore_undef_symbol, 611 elf_backend_emit_relocs, 612 elf_backend_count_relocs, 613 elf_backend_grok_prstatus, 614 elf_backend_grok_psinfo, 615 elf_backend_sprintf_vma, 616 elf_backend_fprintf_vma, 617 elf_backend_reloc_type_class, 618 elf_backend_discard_info, 619 elf_backend_ignore_discarded_relocs, 620 elf_backend_action_discarded, 621 elf_backend_eh_frame_address_size, 622 elf_backend_can_make_relative_eh_frame, 623 elf_backend_can_make_lsda_relative_eh_frame, 624 elf_backend_encode_eh_address, 625 elf_backend_write_section, 626 elf_backend_mips_irix_compat, 627 elf_backend_mips_rtype_to_howto, 628 elf_backend_ecoff_debug_swap, 629 elf_backend_bfd_from_remote_memory, 630 elf_backend_plt_sym_val, 631 elf_backend_common_definition, 632 elf_backend_common_section_index, 633 elf_backend_common_section, 634 elf_backend_merge_symbol, 635 elf_backend_hash_symbol, 636 elf_backend_link_order_error_handler, 637 elf_backend_relplt_name, 638 ELF_MACHINE_ALT1, 639 ELF_MACHINE_ALT2, 640 &elf_backend_size_info, 641 elf_backend_special_sections, 642 elf_backend_got_header_size, 643 elf_backend_collect, 644 elf_backend_type_change_ok, 645 elf_backend_may_use_rel_p, 646 elf_backend_may_use_rela_p, 647 elf_backend_default_use_rela_p, 648 elf_backend_rela_normal, 649 elf_backend_sign_extend_vma, 650 elf_backend_want_got_plt, 651 elf_backend_plt_readonly, 652 elf_backend_want_plt_sym, 653 elf_backend_plt_not_loaded, 654 elf_backend_plt_alignment, 655 elf_backend_can_gc_sections, 656 elf_backend_can_refcount, 657 elf_backend_want_got_sym, 658 elf_backend_want_dynbss, 659 elf_backend_want_p_paddr_set_to_zero 660 }; 661 #endif 662 663 /* Forward declaration for use when initialising alternative_target field. */ 664 #ifdef TARGET_LITTLE_SYM 665 extern const bfd_target TARGET_LITTLE_SYM; 666 #endif 667 668 #ifdef TARGET_BIG_SYM 669 const bfd_target TARGET_BIG_SYM = 670 { 671 /* name: identify kind of target */ 672 TARGET_BIG_NAME, 673 674 /* flavour: general indication about file */ 675 bfd_target_elf_flavour, 676 677 /* byteorder: data is big endian */ 678 BFD_ENDIAN_BIG, 679 680 /* header_byteorder: header is also big endian */ 681 BFD_ENDIAN_BIG, 682 683 /* object_flags: mask of all file flags */ 684 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 685 | DYNAMIC | WP_TEXT | D_PAGED), 686 687 /* section_flags: mask of all section flags */ 688 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 689 | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES 690 | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP), 691 692 /* leading_symbol_char: is the first char of a user symbol 693 predictable, and if so what is it */ 694 elf_symbol_leading_char, 695 696 /* ar_pad_char: pad character for filenames within an archive header 697 FIXME: this really has nothing to do with ELF, this is a characteristic 698 of the archiver and/or os and should be independently tunable */ 699 '/', 700 701 /* ar_max_namelen: maximum number of characters in an archive header 702 FIXME: this really has nothing to do with ELF, this is a characteristic 703 of the archiver and should be independently tunable. The System V ABI, 704 Chapter 7 (Formats & Protocols), Archive section sets this as 15. */ 705 15, 706 707 /* Routines to byte-swap various sized integers from the data sections */ 708 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 709 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 710 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 711 712 /* Routines to byte-swap various sized integers from the file headers */ 713 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 714 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 715 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 716 717 /* bfd_check_format: check the format of a file being read */ 718 { _bfd_dummy_target, /* unknown format */ 719 bfd_elfNN_object_p, /* assembler/linker output (object file) */ 720 bfd_elfNN_archive_p, /* an archive */ 721 bfd_elfNN_core_file_p /* a core file */ 722 }, 723 724 /* bfd_set_format: set the format of a file being written */ 725 { bfd_false, 726 bfd_elfNN_mkobject, 727 bfd_elfNN_mkarchive, 728 bfd_elfNN_mkcorefile 729 }, 730 731 /* bfd_write_contents: write cached information into a file being written */ 732 { bfd_false, 733 bfd_elfNN_write_object_contents, 734 bfd_elfNN_write_archive_contents, 735 bfd_elfNN_write_corefile_contents, 736 }, 737 738 BFD_JUMP_TABLE_GENERIC (bfd_elfNN), 739 BFD_JUMP_TABLE_COPY (bfd_elfNN), 740 BFD_JUMP_TABLE_CORE (bfd_elfNN), 741 #ifdef bfd_elfNN_archive_functions 742 BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive), 743 #else 744 BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), 745 #endif 746 BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN), 747 BFD_JUMP_TABLE_RELOCS (bfd_elfNN), 748 BFD_JUMP_TABLE_WRITE (bfd_elfNN), 749 BFD_JUMP_TABLE_LINK (bfd_elfNN), 750 BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN), 751 752 /* Alternative endian target. */ 753 #ifdef TARGET_LITTLE_SYM 754 & TARGET_LITTLE_SYM, 755 #else 756 NULL, 757 #endif 758 759 /* backend_data: */ 760 &elfNN_bed 761 }; 762 #endif 763 764 #ifdef TARGET_LITTLE_SYM 765 const bfd_target TARGET_LITTLE_SYM = 766 { 767 /* name: identify kind of target */ 768 TARGET_LITTLE_NAME, 769 770 /* flavour: general indication about file */ 771 bfd_target_elf_flavour, 772 773 /* byteorder: data is little endian */ 774 BFD_ENDIAN_LITTLE, 775 776 /* header_byteorder: header is also little endian */ 777 BFD_ENDIAN_LITTLE, 778 779 /* object_flags: mask of all file flags */ 780 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 781 | DYNAMIC | WP_TEXT | D_PAGED), 782 783 /* section_flags: mask of all section flags */ 784 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 785 | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES 786 | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP), 787 788 /* leading_symbol_char: is the first char of a user symbol 789 predictable, and if so what is it */ 790 elf_symbol_leading_char, 791 792 /* ar_pad_char: pad character for filenames within an archive header 793 FIXME: this really has nothing to do with ELF, this is a characteristic 794 of the archiver and/or os and should be independently tunable */ 795 '/', 796 797 /* ar_max_namelen: maximum number of characters in an archive header 798 FIXME: this really has nothing to do with ELF, this is a characteristic 799 of the archiver and should be independently tunable. The System V ABI, 800 Chapter 7 (Formats & Protocols), Archive section sets this as 15. */ 801 15, 802 803 /* Routines to byte-swap various sized integers from the data sections */ 804 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 805 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 806 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 807 808 /* Routines to byte-swap various sized integers from the file headers */ 809 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 810 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 811 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 812 813 /* bfd_check_format: check the format of a file being read */ 814 { _bfd_dummy_target, /* unknown format */ 815 bfd_elfNN_object_p, /* assembler/linker output (object file) */ 816 bfd_elfNN_archive_p, /* an archive */ 817 bfd_elfNN_core_file_p /* a core file */ 818 }, 819 820 /* bfd_set_format: set the format of a file being written */ 821 { bfd_false, 822 bfd_elfNN_mkobject, 823 bfd_elfNN_mkarchive, 824 bfd_elfNN_mkcorefile 825 }, 826 827 /* bfd_write_contents: write cached information into a file being written */ 828 { bfd_false, 829 bfd_elfNN_write_object_contents, 830 bfd_elfNN_write_archive_contents, 831 bfd_elfNN_write_corefile_contents, 832 }, 833 834 BFD_JUMP_TABLE_GENERIC (bfd_elfNN), 835 BFD_JUMP_TABLE_COPY (bfd_elfNN), 836 BFD_JUMP_TABLE_CORE (bfd_elfNN), 837 #ifdef bfd_elfNN_archive_functions 838 BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive), 839 #else 840 BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), 841 #endif 842 BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN), 843 BFD_JUMP_TABLE_RELOCS (bfd_elfNN), 844 BFD_JUMP_TABLE_WRITE (bfd_elfNN), 845 BFD_JUMP_TABLE_LINK (bfd_elfNN), 846 BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN), 847 848 /* Alternative endian target. */ 849 #ifdef TARGET_BIG_SYM 850 & TARGET_BIG_SYM, 851 #else 852 NULL, 853 #endif 854 855 /* backend_data: */ 856 &elfNN_bed 857 }; 858 #endif 859