elfxx-target.h revision 89857
1/* Target definitions for NN-bit ELF 2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 3 Free Software Foundation, Inc. 4 5This file is part of BFD, the Binary File Descriptor library. 6 7This program is free software; you can redistribute it and/or modify 8it under the terms of the GNU General Public License as published by 9the Free Software Foundation; either version 2 of the License, or 10(at your option) any later version. 11 12This program is distributed in the hope that it will be useful, 13but WITHOUT ANY WARRANTY; without even the implied warranty of 14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15GNU General Public License for more details. 16 17You should have received a copy of the GNU General Public License 18along with this program; if not, write to the Free Software 19Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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#define bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup 30#define bfd_elfNN_bfd_free_cached_info _bfd_generic_bfd_free_cached_info 31#ifndef bfd_elfNN_get_section_contents 32#define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents 33#endif 34 35#define bfd_elfNN_canonicalize_dynamic_symtab _bfd_elf_canonicalize_dynamic_symtab 36#define bfd_elfNN_canonicalize_reloc _bfd_elf_canonicalize_reloc 37#ifndef bfd_elfNN_find_nearest_line 38#define bfd_elfNN_find_nearest_line _bfd_elf_find_nearest_line 39#endif 40#define bfd_elfNN_read_minisymbols _bfd_elf_read_minisymbols 41#define bfd_elfNN_minisymbol_to_symbol _bfd_elf_minisymbol_to_symbol 42#define bfd_elfNN_get_dynamic_symtab_upper_bound _bfd_elf_get_dynamic_symtab_upper_bound 43#define bfd_elfNN_get_lineno _bfd_elf_get_lineno 44#ifndef bfd_elfNN_get_reloc_upper_bound 45#define bfd_elfNN_get_reloc_upper_bound _bfd_elf_get_reloc_upper_bound 46#endif 47#define bfd_elfNN_get_symbol_info _bfd_elf_get_symbol_info 48#define bfd_elfNN_get_symtab _bfd_elf_get_symtab 49#define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound 50#if 0 /* done in elf-bfd.h */ 51#define bfd_elfNN_link_record_dynamic_symbol _bfd_elf_link_record_dynamic_symbol 52#endif 53#define bfd_elfNN_make_empty_symbol _bfd_elf_make_empty_symbol 54#define bfd_elfNN_new_section_hook _bfd_elf_new_section_hook 55#define bfd_elfNN_set_arch_mach _bfd_elf_set_arch_mach 56#ifndef bfd_elfNN_set_section_contents 57#define bfd_elfNN_set_section_contents _bfd_elf_set_section_contents 58#endif 59#define bfd_elfNN_sizeof_headers _bfd_elf_sizeof_headers 60#define bfd_elfNN_write_object_contents _bfd_elf_write_object_contents 61#define bfd_elfNN_write_corefile_contents _bfd_elf_write_corefile_contents 62 63#define bfd_elfNN_get_section_contents_in_window \ 64 _bfd_generic_get_section_contents_in_window 65 66#ifndef elf_backend_got_symbol_offset 67#define elf_backend_got_symbol_offset (bfd_vma) 0 68#endif 69#ifndef elf_backend_can_refcount 70#define elf_backend_can_refcount 0 71#endif 72#ifndef elf_backend_want_got_plt 73#define elf_backend_want_got_plt 0 74#endif 75#ifndef elf_backend_plt_readonly 76#define elf_backend_plt_readonly 0 77#endif 78#ifndef elf_backend_want_plt_sym 79#define elf_backend_want_plt_sym 0 80#endif 81#ifndef elf_backend_plt_not_loaded 82#define elf_backend_plt_not_loaded 0 83#endif 84#ifndef elf_backend_plt_alignment 85#define elf_backend_plt_alignment 2 86#endif 87#ifndef elf_backend_want_dynbss 88#define elf_backend_want_dynbss 1 89#endif 90 91#define bfd_elfNN_bfd_debug_info_start bfd_void 92#define bfd_elfNN_bfd_debug_info_end bfd_void 93#define bfd_elfNN_bfd_debug_info_accumulate \ 94 (void (*) PARAMS ((bfd*, struct sec *))) bfd_void 95 96#ifndef bfd_elfNN_bfd_get_relocated_section_contents 97#define bfd_elfNN_bfd_get_relocated_section_contents \ 98 bfd_generic_get_relocated_section_contents 99#endif 100 101#ifndef bfd_elfNN_bfd_relax_section 102#define bfd_elfNN_bfd_relax_section bfd_generic_relax_section 103#endif 104 105#ifndef elf_backend_can_gc_sections 106#define elf_backend_can_gc_sections 0 107#endif 108#ifndef elf_backend_can_refcount 109#define elf_backend_can_refcount 0 110#endif 111#ifndef elf_backend_want_got_sym 112#define elf_backend_want_got_sym 1 113#endif 114#ifndef elf_backend_gc_mark_hook 115#define elf_backend_gc_mark_hook NULL 116#endif 117#ifndef elf_backend_gc_sweep_hook 118#define elf_backend_gc_sweep_hook NULL 119#endif 120#ifndef bfd_elfNN_bfd_gc_sections 121#define bfd_elfNN_bfd_gc_sections _bfd_elfNN_gc_sections 122#endif 123 124#ifndef bfd_elfNN_bfd_merge_sections 125#define bfd_elfNN_bfd_merge_sections \ 126 _bfd_elf_merge_sections 127#endif 128 129#ifndef bfd_elfNN_bfd_make_debug_symbol 130#define bfd_elfNN_bfd_make_debug_symbol \ 131 ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) 132#endif 133 134#ifndef bfd_elfNN_bfd_copy_private_symbol_data 135#define bfd_elfNN_bfd_copy_private_symbol_data \ 136 _bfd_elf_copy_private_symbol_data 137#endif 138 139#ifndef bfd_elfNN_bfd_copy_private_section_data 140#define bfd_elfNN_bfd_copy_private_section_data \ 141 _bfd_elf_copy_private_section_data 142#endif 143#ifndef bfd_elfNN_bfd_copy_private_bfd_data 144#define bfd_elfNN_bfd_copy_private_bfd_data \ 145 _bfd_elf_copy_private_bfd_data 146#endif 147#ifndef bfd_elfNN_bfd_print_private_bfd_data 148#define bfd_elfNN_bfd_print_private_bfd_data \ 149 _bfd_elf_print_private_bfd_data 150#endif 151#ifndef bfd_elfNN_bfd_merge_private_bfd_data 152#define bfd_elfNN_bfd_merge_private_bfd_data \ 153 ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) 154#endif 155#ifndef bfd_elfNN_bfd_set_private_flags 156#define bfd_elfNN_bfd_set_private_flags \ 157 ((boolean (*) PARAMS ((bfd *, flagword))) bfd_true) 158#endif 159#ifndef bfd_elfNN_bfd_is_local_label_name 160#define bfd_elfNN_bfd_is_local_label_name _bfd_elf_is_local_label_name 161#endif 162 163#ifndef bfd_elfNN_get_dynamic_reloc_upper_bound 164#define bfd_elfNN_get_dynamic_reloc_upper_bound \ 165 _bfd_elf_get_dynamic_reloc_upper_bound 166#endif 167#ifndef bfd_elfNN_canonicalize_dynamic_reloc 168#define bfd_elfNN_canonicalize_dynamic_reloc \ 169 _bfd_elf_canonicalize_dynamic_reloc 170#endif 171 172#ifdef elf_backend_relocate_section 173#ifndef bfd_elfNN_bfd_link_hash_table_create 174#define bfd_elfNN_bfd_link_hash_table_create _bfd_elf_link_hash_table_create 175#endif 176#else /* ! defined (elf_backend_relocate_section) */ 177/* If no backend relocate_section routine, use the generic linker. 178 Note - this will prevent the port from being able to use some of 179 the other features of the ELF linker, because the generic hash structure 180 does not have the fields needed by the ELF linker. In particular it 181 means that linking directly to S-records will not work. */ 182#ifndef bfd_elfNN_bfd_link_hash_table_create 183#define bfd_elfNN_bfd_link_hash_table_create \ 184 _bfd_generic_link_hash_table_create 185#endif 186#ifndef bfd_elfNN_bfd_link_add_symbols 187#define bfd_elfNN_bfd_link_add_symbols _bfd_generic_link_add_symbols 188#endif 189#ifndef bfd_elfNN_bfd_final_link 190#define bfd_elfNN_bfd_final_link _bfd_generic_final_link 191#endif 192#endif /* ! defined (elf_backend_relocate_section) */ 193#ifndef bfd_elfNN_bfd_link_split_section 194#define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section 195#endif 196 197#ifndef bfd_elfNN_archive_p 198#define bfd_elfNN_archive_p bfd_generic_archive_p 199#endif 200 201#ifndef bfd_elfNN_write_archive_contents 202#define bfd_elfNN_write_archive_contents _bfd_write_archive_contents 203#endif 204 205#ifndef bfd_elfNN_mkobject 206#define bfd_elfNN_mkobject bfd_elf_mkobject 207#endif 208 209#ifndef bfd_elfNN_mkcorefile 210#define bfd_elfNN_mkcorefile bfd_elf_mkcorefile 211#endif 212 213#ifndef bfd_elfNN_mkarchive 214#define bfd_elfNN_mkarchive _bfd_generic_mkarchive 215#endif 216 217#ifndef elf_symbol_leading_char 218#define elf_symbol_leading_char 0 219#endif 220 221#ifndef elf_info_to_howto 222#define elf_info_to_howto 0 223#endif 224 225#ifndef elf_info_to_howto_rel 226#define elf_info_to_howto_rel 0 227#endif 228 229#ifndef ELF_MAXPAGESIZE 230 #error ELF_MAXPAGESIZE is not defined 231#define ELF_MAXPAGESIZE 1 232#endif 233 234#ifndef elf_backend_collect 235#define elf_backend_collect false 236#endif 237#ifndef elf_backend_type_change_ok 238#define elf_backend_type_change_ok false 239#endif 240 241#ifndef elf_backend_sym_is_global 242#define elf_backend_sym_is_global 0 243#endif 244#ifndef elf_backend_object_p 245#define elf_backend_object_p 0 246#endif 247#ifndef elf_backend_symbol_processing 248#define elf_backend_symbol_processing 0 249#endif 250#ifndef elf_backend_symbol_table_processing 251#define elf_backend_symbol_table_processing 0 252#endif 253#ifndef elf_backend_get_symbol_type 254#define elf_backend_get_symbol_type 0 255#endif 256#ifndef elf_backend_section_processing 257#define elf_backend_section_processing 0 258#endif 259#ifndef elf_backend_section_from_shdr 260#define elf_backend_section_from_shdr 0 261#endif 262#ifndef elf_backend_section_flags 263#define elf_backend_section_flags 0 264#endif 265#ifndef elf_backend_section_from_phdr 266#define elf_backend_section_from_phdr 0 267#endif 268#ifndef elf_backend_fake_sections 269#define elf_backend_fake_sections 0 270#endif 271#ifndef elf_backend_section_from_bfd_section 272#define elf_backend_section_from_bfd_section 0 273#endif 274#ifndef elf_backend_add_symbol_hook 275#define elf_backend_add_symbol_hook 0 276#endif 277#ifndef elf_backend_link_output_symbol_hook 278#define elf_backend_link_output_symbol_hook 0 279#endif 280#ifndef elf_backend_create_dynamic_sections 281#define elf_backend_create_dynamic_sections 0 282#endif 283#ifndef elf_backend_check_relocs 284#define elf_backend_check_relocs 0 285#endif 286#ifndef elf_backend_adjust_dynamic_symbol 287#define elf_backend_adjust_dynamic_symbol 0 288#endif 289#ifndef elf_backend_always_size_sections 290#define elf_backend_always_size_sections 0 291#endif 292#ifndef elf_backend_size_dynamic_sections 293#define elf_backend_size_dynamic_sections 0 294#endif 295#ifndef elf_backend_relocate_section 296#define elf_backend_relocate_section 0 297#endif 298#ifndef elf_backend_finish_dynamic_symbol 299#define elf_backend_finish_dynamic_symbol 0 300#endif 301#ifndef elf_backend_finish_dynamic_sections 302#define elf_backend_finish_dynamic_sections 0 303#endif 304#ifndef elf_backend_begin_write_processing 305#define elf_backend_begin_write_processing 0 306#endif 307#ifndef elf_backend_final_write_processing 308#define elf_backend_final_write_processing 0 309#endif 310#ifndef elf_backend_additional_program_headers 311#define elf_backend_additional_program_headers 0 312#endif 313#ifndef elf_backend_modify_segment_map 314#define elf_backend_modify_segment_map 0 315#endif 316#ifndef elf_backend_ecoff_debug_swap 317#define elf_backend_ecoff_debug_swap 0 318#endif 319#ifndef elf_backend_got_header_size 320#define elf_backend_got_header_size 0 321#endif 322#ifndef elf_backend_plt_header_size 323#define elf_backend_plt_header_size 0 324#endif 325#ifndef elf_backend_post_process_headers 326#define elf_backend_post_process_headers NULL 327#endif 328#ifndef elf_backend_print_symbol_all 329#define elf_backend_print_symbol_all NULL 330#endif 331#ifndef elf_backend_output_arch_syms 332#define elf_backend_output_arch_syms NULL 333#endif 334#ifndef elf_backend_copy_indirect_symbol 335#define elf_backend_copy_indirect_symbol _bfd_elf_link_hash_copy_indirect 336#endif 337#ifndef elf_backend_hide_symbol 338#define elf_backend_hide_symbol _bfd_elf_link_hash_hide_symbol 339#endif 340#ifndef elf_backend_emit_relocs 341#define elf_backend_emit_relocs NULL 342#endif 343#ifndef elf_backend_count_relocs 344#define elf_backend_count_relocs NULL 345#endif 346#ifndef elf_backend_grok_prstatus 347#define elf_backend_grok_prstatus NULL 348#endif 349#ifndef elf_backend_grok_psinfo 350#define elf_backend_grok_psinfo NULL 351#endif 352#ifndef elf_backend_sprintf_vma 353#define elf_backend_sprintf_vma _bfd_elf_sprintf_vma 354#endif 355#ifndef elf_backend_fprintf_vma 356#define elf_backend_fprintf_vma _bfd_elf_fprintf_vma 357#endif 358#ifndef elf_backend_reloc_type_class 359#define elf_backend_reloc_type_class _bfd_elf_reloc_type_class 360#endif 361#ifndef elf_backend_discard_info 362#define elf_backend_discard_info NULL 363#endif 364#ifndef elf_backend_ignore_discarded_relocs 365#define elf_backend_ignore_discarded_relocs NULL 366#endif 367#ifndef elf_backend_write_section 368#define elf_backend_write_section NULL 369#endif 370 371/* Previously, backends could only use SHT_REL or SHT_RELA relocation 372 sections, but not both. They defined USE_REL to indicate SHT_REL 373 sections, and left it undefined to indicated SHT_RELA sections. 374 For backwards compatibility, we still support this usage. */ 375#ifndef USE_REL 376#define USE_REL 0 377#else 378#undef USE_REL 379#define USE_REL 1 380#endif 381 382/* Use these in new code. */ 383#ifndef elf_backend_may_use_rel_p 384#define elf_backend_may_use_rel_p USE_REL 385#endif 386#ifndef elf_backend_may_use_rela_p 387#define elf_backend_may_use_rela_p !USE_REL 388#endif 389#ifndef elf_backend_default_use_rela_p 390#define elf_backend_default_use_rela_p !USE_REL 391#endif 392 393#ifndef ELF_MACHINE_ALT1 394#define ELF_MACHINE_ALT1 0 395#endif 396 397#ifndef ELF_MACHINE_ALT2 398#define ELF_MACHINE_ALT2 0 399#endif 400 401#ifndef elf_backend_size_info 402#define elf_backend_size_info _bfd_elfNN_size_info 403#endif 404 405#ifndef elf_backend_sign_extend_vma 406#define elf_backend_sign_extend_vma 0 407#endif 408 409extern const struct elf_size_info _bfd_elfNN_size_info; 410 411#ifndef INCLUDED_TARGET_FILE 412static const struct elf_backend_data elfNN_bed = 413{ 414 ELF_ARCH, /* arch */ 415 ELF_MACHINE_CODE, /* elf_machine_code */ 416 ELF_MAXPAGESIZE, /* maxpagesize */ 417 elf_info_to_howto, 418 elf_info_to_howto_rel, 419 elf_backend_sym_is_global, 420 elf_backend_object_p, 421 elf_backend_symbol_processing, 422 elf_backend_symbol_table_processing, 423 elf_backend_get_symbol_type, 424 elf_backend_section_processing, 425 elf_backend_section_from_shdr, 426 elf_backend_section_flags, 427 elf_backend_section_from_phdr, 428 elf_backend_fake_sections, 429 elf_backend_section_from_bfd_section, 430 elf_backend_add_symbol_hook, 431 elf_backend_link_output_symbol_hook, 432 elf_backend_create_dynamic_sections, 433 elf_backend_check_relocs, 434 elf_backend_adjust_dynamic_symbol, 435 elf_backend_always_size_sections, 436 elf_backend_size_dynamic_sections, 437 elf_backend_relocate_section, 438 elf_backend_finish_dynamic_symbol, 439 elf_backend_finish_dynamic_sections, 440 elf_backend_begin_write_processing, 441 elf_backend_final_write_processing, 442 elf_backend_additional_program_headers, 443 elf_backend_modify_segment_map, 444 elf_backend_gc_mark_hook, 445 elf_backend_gc_sweep_hook, 446 elf_backend_post_process_headers, 447 elf_backend_print_symbol_all, 448 elf_backend_output_arch_syms, 449 elf_backend_copy_indirect_symbol, 450 elf_backend_hide_symbol, 451 elf_backend_emit_relocs, 452 elf_backend_count_relocs, 453 elf_backend_grok_prstatus, 454 elf_backend_grok_psinfo, 455 elf_backend_sprintf_vma, 456 elf_backend_fprintf_vma, 457 elf_backend_reloc_type_class, 458 elf_backend_discard_info, 459 elf_backend_ignore_discarded_relocs, 460 elf_backend_write_section, 461 elf_backend_ecoff_debug_swap, 462 ELF_MACHINE_ALT1, 463 ELF_MACHINE_ALT2, 464 &elf_backend_size_info, 465 elf_backend_got_symbol_offset, 466 elf_backend_got_header_size, 467 elf_backend_plt_header_size, 468 elf_backend_collect, 469 elf_backend_type_change_ok, 470 elf_backend_may_use_rel_p, 471 elf_backend_may_use_rela_p, 472 elf_backend_default_use_rela_p, 473 elf_backend_sign_extend_vma, 474 elf_backend_want_got_plt, 475 elf_backend_plt_readonly, 476 elf_backend_want_plt_sym, 477 elf_backend_plt_not_loaded, 478 elf_backend_plt_alignment, 479 elf_backend_can_gc_sections, 480 elf_backend_can_refcount, 481 elf_backend_want_got_sym, 482 elf_backend_want_dynbss 483}; 484#endif 485 486/* Forward declaration for use when initialising alternative_target field. */ 487#ifdef TARGET_LITTLE_SYM 488extern const bfd_target TARGET_LITTLE_SYM; 489#endif 490 491#ifdef TARGET_BIG_SYM 492const bfd_target TARGET_BIG_SYM = 493{ 494 /* name: identify kind of target */ 495 TARGET_BIG_NAME, 496 497 /* flavour: general indication about file */ 498 bfd_target_elf_flavour, 499 500 /* byteorder: data is big endian */ 501 BFD_ENDIAN_BIG, 502 503 /* header_byteorder: header is also big endian */ 504 BFD_ENDIAN_BIG, 505 506 /* object_flags: mask of all file flags */ 507 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 508 | DYNAMIC | WP_TEXT | D_PAGED), 509 510 /* section_flags: mask of all section flags */ 511 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 512 | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES 513 | SEC_ARCH_BIT_0 | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP), 514 515 /* leading_symbol_char: is the first char of a user symbol 516 predictable, and if so what is it */ 517 elf_symbol_leading_char, 518 519 /* ar_pad_char: pad character for filenames within an archive header 520 FIXME: this really has nothing to do with ELF, this is a characteristic 521 of the archiver and/or os and should be independently tunable */ 522 '/', 523 524 /* ar_max_namelen: maximum number of characters in an archive header 525 FIXME: this really has nothing to do with ELF, this is a characteristic 526 of the archiver and should be independently tunable. This value is 527 a WAG (wild a** guess) */ 528 14, 529 530 /* Routines to byte-swap various sized integers from the data sections */ 531 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 532 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 533 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 534 535 /* Routines to byte-swap various sized integers from the file headers */ 536 bfd_getb64, bfd_getb_signed_64, bfd_putb64, 537 bfd_getb32, bfd_getb_signed_32, bfd_putb32, 538 bfd_getb16, bfd_getb_signed_16, bfd_putb16, 539 540 /* bfd_check_format: check the format of a file being read */ 541 { _bfd_dummy_target, /* unknown format */ 542 bfd_elfNN_object_p, /* assembler/linker output (object file) */ 543 bfd_elfNN_archive_p, /* an archive */ 544 bfd_elfNN_core_file_p /* a core file */ 545 }, 546 547 /* bfd_set_format: set the format of a file being written */ 548 { bfd_false, 549 bfd_elfNN_mkobject, 550 bfd_elfNN_mkarchive, 551 bfd_elfNN_mkcorefile 552 }, 553 554 /* bfd_write_contents: write cached information into a file being written */ 555 { bfd_false, 556 bfd_elfNN_write_object_contents, 557 bfd_elfNN_write_archive_contents, 558 bfd_elfNN_write_corefile_contents, 559 }, 560 561 BFD_JUMP_TABLE_GENERIC (bfd_elfNN), 562 BFD_JUMP_TABLE_COPY (bfd_elfNN), 563 BFD_JUMP_TABLE_CORE (bfd_elfNN), 564#ifdef bfd_elfNN_archive_functions 565 BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive), 566#else 567 BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), 568#endif 569 BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN), 570 BFD_JUMP_TABLE_RELOCS (bfd_elfNN), 571 BFD_JUMP_TABLE_WRITE (bfd_elfNN), 572 BFD_JUMP_TABLE_LINK (bfd_elfNN), 573 BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN), 574 575 /* Alternative endian target. */ 576#ifdef TARGET_LITTLE_SYM 577 & TARGET_LITTLE_SYM, 578#else 579 NULL, 580#endif 581 582 /* backend_data: */ 583 (PTR) &elfNN_bed 584}; 585#endif 586 587#ifdef TARGET_LITTLE_SYM 588const bfd_target TARGET_LITTLE_SYM = 589{ 590 /* name: identify kind of target */ 591 TARGET_LITTLE_NAME, 592 593 /* flavour: general indication about file */ 594 bfd_target_elf_flavour, 595 596 /* byteorder: data is little endian */ 597 BFD_ENDIAN_LITTLE, 598 599 /* header_byteorder: header is also little endian */ 600 BFD_ENDIAN_LITTLE, 601 602 /* object_flags: mask of all file flags */ 603 (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS 604 | DYNAMIC | WP_TEXT | D_PAGED), 605 606 /* section_flags: mask of all section flags */ 607 (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY 608 | SEC_CODE | SEC_DATA | SEC_DEBUGGING | SEC_EXCLUDE | SEC_SORT_ENTRIES 609 | SEC_ARCH_BIT_0 | SEC_SMALL_DATA | SEC_MERGE | SEC_STRINGS | SEC_GROUP), 610 611 /* leading_symbol_char: is the first char of a user symbol 612 predictable, and if so what is it */ 613 elf_symbol_leading_char, 614 615 /* ar_pad_char: pad character for filenames within an archive header 616 FIXME: this really has nothing to do with ELF, this is a characteristic 617 of the archiver and/or os and should be independently tunable */ 618 '/', 619 620 /* ar_max_namelen: maximum number of characters in an archive header 621 FIXME: this really has nothing to do with ELF, this is a characteristic 622 of the archiver and should be independently tunable. This value is 623 a WAG (wild a** guess) */ 624 14, 625 626 /* Routines to byte-swap various sized integers from the data sections */ 627 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 628 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 629 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 630 631 /* Routines to byte-swap various sized integers from the file headers */ 632 bfd_getl64, bfd_getl_signed_64, bfd_putl64, 633 bfd_getl32, bfd_getl_signed_32, bfd_putl32, 634 bfd_getl16, bfd_getl_signed_16, bfd_putl16, 635 636 /* bfd_check_format: check the format of a file being read */ 637 { _bfd_dummy_target, /* unknown format */ 638 bfd_elfNN_object_p, /* assembler/linker output (object file) */ 639 bfd_elfNN_archive_p, /* an archive */ 640 bfd_elfNN_core_file_p /* a core file */ 641 }, 642 643 /* bfd_set_format: set the format of a file being written */ 644 { bfd_false, 645 bfd_elfNN_mkobject, 646 bfd_elfNN_mkarchive, 647 bfd_elfNN_mkcorefile 648 }, 649 650 /* bfd_write_contents: write cached information into a file being written */ 651 { bfd_false, 652 bfd_elfNN_write_object_contents, 653 bfd_elfNN_write_archive_contents, 654 bfd_elfNN_write_corefile_contents, 655 }, 656 657 BFD_JUMP_TABLE_GENERIC (bfd_elfNN), 658 BFD_JUMP_TABLE_COPY (bfd_elfNN), 659 BFD_JUMP_TABLE_CORE (bfd_elfNN), 660#ifdef bfd_elfNN_archive_functions 661 BFD_JUMP_TABLE_ARCHIVE (bfd_elfNN_archive), 662#else 663 BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), 664#endif 665 BFD_JUMP_TABLE_SYMBOLS (bfd_elfNN), 666 BFD_JUMP_TABLE_RELOCS (bfd_elfNN), 667 BFD_JUMP_TABLE_WRITE (bfd_elfNN), 668 BFD_JUMP_TABLE_LINK (bfd_elfNN), 669 BFD_JUMP_TABLE_DYNAMIC (bfd_elfNN), 670 671 /* Alternative endian target. */ 672#ifdef TARGET_BIG_SYM 673 & TARGET_BIG_SYM, 674#else 675 NULL, 676#endif 677 678 /* backend_data: */ 679 (PTR) &elfNN_bed 680}; 681#endif 682