X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=bfd%2Felf32-m68hc1x.h;h=59ef46fdcfe4ef809369a2921706c8682b5e2904;hb=40ae4abe44fa4e0a53d1681bc48adf445df25822;hp=677dab1c3e0c26a0848dc7b1a7de871e69048223;hpb=87d72d41b073d51b7409d2b0e7f0bbb7b840e1e6;p=binutils-gdb.git diff --git a/bfd/elf32-m68hc1x.h b/bfd/elf32-m68hc1x.h index 677dab1c3e0..59ef46fdcfe 100644 --- a/bfd/elf32-m68hc1x.h +++ b/bfd/elf32-m68hc1x.h @@ -1,5 +1,5 @@ /* Motorola 68HC11/68HC12-specific support for 32-bit ELF - Copyright 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2003-2022 Free Software Foundation, Inc. Contributed by Stephane Carrez (stcarrez@nerim.fr) This file is part of BFD, the Binary File Descriptor library. @@ -33,17 +33,18 @@ #define BFD_M68HC11_BANK_VIRTUAL_NAME "__bank_virtual" /* Set and control ELF flags in ELF header. */ -extern bfd_boolean _bfd_m68hc11_elf_merge_private_bfd_data (bfd*,bfd*); -extern bfd_boolean _bfd_m68hc11_elf_set_private_flags (bfd*,flagword); -extern bfd_boolean _bfd_m68hc11_elf_print_private_bfd_data (bfd*, void*); +extern bool _bfd_m68hc11_elf_merge_private_bfd_data + (bfd *, struct bfd_link_info *); +extern bool _bfd_m68hc11_elf_set_private_flags (bfd*,flagword); +extern bool _bfd_m68hc11_elf_print_private_bfd_data (bfd*, void*); /* This hash entry is used to record a trampoline that must be generated to call a far function using a normal calling convention ('jsr'). The trampoline is used when a pointer to a far function is used. It takes care of installing the proper memory bank as well as creating the 'call/rtc' calling convention. */ -struct elf32_m68hc11_stub_hash_entry { - +struct elf32_m68hc11_stub_hash_entry +{ /* Base hash table entry structure. */ struct bfd_hash_entry root; @@ -74,18 +75,17 @@ struct elf32_m68hc11_stub_hash_entry { These parameters are obtained from the symbol table by looking at the following: - __bank_start Symbol marking the start of memory bank window - (bank_physical) - __bank_virtual Logical address of symbols for which the transformation - must be computed - __bank_page_size Size in bytes of page size (this is *NOT* the memory - bank window size and the window size is always - less or equal to the page size) + __bank_start Symbol marking the start of memory bank window + (bank_physical) + __bank_virtual Logical address of symbols for which the transformation + must be computed + __bank_page_size Size in bytes of page size (this is *NOT* the memory + bank window size and the window size is always + less or equal to the page size) For 68HC12, the window is at 0x8000 and the page size is 16K (full window). - For 68HC11 this is board specific (implemented by external hardware). + For 68HC11 this is board specific (implemented by external hardware). */ -*/ struct m68hc11_page_info { bfd_vma bank_virtual; @@ -113,30 +113,28 @@ struct m68hc11_elf_link_hash_table asection* tramp_section; /* Linker call-backs. */ - asection * (*add_stub_section) PARAMS ((const char *, asection *)); + asection * (*add_stub_section) (const char *, asection *); /* Assorted information used by elf32_hppa_size_stubs. */ unsigned int bfd_count; int top_index; asection **input_list; - /* Small local sym cache. */ - struct sym_cache sym_cache; - - bfd_boolean (* size_one_stub) PARAMS((struct bfd_hash_entry*, void*)); - bfd_boolean (* build_one_stub) PARAMS((struct bfd_hash_entry*, void*)); + bool (* size_one_stub) (struct bfd_hash_entry*, void*); + bool (* build_one_stub) (struct bfd_hash_entry*, void*); }; /* Get the Sparc64 ELF linker hash table from a link_info structure. */ #define m68hc11_elf_hash_table(p) \ - ((struct m68hc11_elf_link_hash_table *) ((p)->hash)) + ((is_elf_hash_table ((p)->hash) \ + && elf_hash_table_id (elf_hash_table (p)) == M68HC11_ELF_DATA) \ + ? (struct m68hc11_elf_link_hash_table *) (p)->hash : NULL) /* Create a 68HC11/68HC12 ELF linker hash table. */ extern struct m68hc11_elf_link_hash_table* m68hc11_elf_hash_table_create (bfd*); -extern void m68hc11_elf_bfd_link_hash_table_free (struct bfd_link_hash_table*); extern void m68hc11_elf_get_bank_parameters (struct bfd_link_info*); @@ -160,30 +158,33 @@ bfd_reloc_status_type m68hc11_elf_special_reloc asymbol *symbol, void *data, asection *input_section, bfd *output_bfd, char **error_message); -bfd_boolean elf32_m68hc11_check_relocs +bool elf32_m68hc11_check_relocs (bfd * abfd, struct bfd_link_info * info, asection * sec, const Elf_Internal_Rela * relocs); -bfd_boolean elf32_m68hc11_relocate_section +int elf32_m68hc11_relocate_section (bfd *output_bfd, struct bfd_link_info *info, bfd *input_bfd, asection *input_section, bfd_byte *contents, Elf_Internal_Rela *relocs, Elf_Internal_Sym *local_syms, asection **local_sections); -bfd_boolean elf32_m68hc11_add_symbol_hook +bool elf32_m68hc11_add_symbol_hook (bfd *abfd, struct bfd_link_info *info, Elf_Internal_Sym *sym, const char **namep, flagword *flagsp, asection **secp, bfd_vma *valp); +void elf32_m68hc11_merge_symbol_attribute + (struct elf_link_hash_entry *, unsigned int, bool, bool); + /* Tweak the OSABI field of the elf header. */ -extern void elf32_m68hc11_post_process_headers (bfd*, struct bfd_link_info*); +extern bool elf32_m68hc11_init_file_header (bfd*, struct bfd_link_info*); int elf32_m68hc11_setup_section_lists (bfd *, struct bfd_link_info *); -bfd_boolean elf32_m68hc11_size_stubs +bool elf32_m68hc11_size_stubs (bfd *, bfd *, struct bfd_link_info *, asection * (*) (const char *, asection *)); -bfd_boolean elf32_m68hc11_build_stubs (bfd* abfd, struct bfd_link_info *); +bool elf32_m68hc11_build_stubs (bfd* abfd, struct bfd_link_info *); #endif