From 643e9fc7683e5df2e66a43576bdaea2ea794e735 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 18 Nov 1993 17:10:42 +0000 Subject: [PATCH] * libelf.h (struct elf_backend_data): Added fields elf_backend_sym_is_global and elf_backend_final_write_processing. * elf32-target.h (elf32_bed): Added corresponding initializers. * elf64-target.h (elf64_bed): Likewise. --- bfd/elf32-target.h | 44 ++++++++++++++++++++++++++------------------ bfd/elf64-target.h | 43 +++++++++++++++++++++++++------------------ bfd/libelf.h | 11 +++++++++++ 3 files changed, 62 insertions(+), 36 deletions(-) diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h index 2711fbd3d5e..ed1f417cd0b 100644 --- a/bfd/elf32-target.h +++ b/bfd/elf32-target.h @@ -61,29 +61,35 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define ELF_MAXPAGESIZE 1 #endif +#ifndef elf_backend_sym_is_global +#define elf_backend_sym_is_global 0 +#endif #ifndef elf_backend_object_p -#define elf_backend_object_p 0 /* elf_backend_object_p */ +#define elf_backend_object_p 0 #endif #ifndef elf_backend_symbol_processing -#define elf_backend_symbol_processing 0 /* elf_backend_symbol_processing */ +#define elf_backend_symbol_processing 0 #endif #ifndef elf_backend_symbol_table_processing -#define elf_backend_symbol_table_processing 0 /* elf_backend_symbol_table_processing */ +#define elf_backend_symbol_table_processing 0 #endif #ifndef elf_backend_section_processing -#define elf_backend_section_processing 0 /* elf_backend_section_processing */ +#define elf_backend_section_processing 0 #endif #ifndef elf_backend_section_from_shdr -#define elf_backend_section_from_shdr 0 /* elf_backend_section_from_shdr */ +#define elf_backend_section_from_shdr 0 #endif #ifndef elf_backend_fake_sections -#define elf_backend_fake_sections 0 /* elf_backend_fake_sections */ +#define elf_backend_fake_sections 0 #endif #ifndef elf_backend_section_from_bfd_section -#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */ +#define elf_backend_section_from_bfd_section 0 +#endif +#ifndef elf_backend_final_write_processing +#define elf_backend_final_write_processing 0 #endif #ifndef elf_backend_ecoff_debug_swap -#define elf_backend_ecoff_debug_swap 0 /* elf_backed_ecoff_debug_swap */ +#define elf_backend_ecoff_debug_swap 0 #endif static CONST struct elf_backend_data elf32_bed = @@ -97,16 +103,18 @@ static CONST struct elf_backend_data elf32_bed = ELF_ARCH, /* arch */ ELF_MACHINE_CODE, /* elf_machine_code */ ELF_MAXPAGESIZE, /* maxpagesize */ - elf_info_to_howto, /* elf_info_to_howto */ - elf_info_to_howto_rel, /* elf_info_to_howto_rel */ - elf_backend_object_p, /* elf_backend_object_p */ - elf_backend_symbol_processing, /* elf_backend_symbol_processing */ - elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */ - elf_backend_section_processing, /* elf_backend_section_processing */ - elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */ - elf_backend_fake_sections, /* elf_backend_fake_sections */ - elf_backend_section_from_bfd_section, /* elf_backend_section_from_bfd_section */ - elf_backend_ecoff_debug_swap /* elf_backend_ecoff_debug_swap */ + elf_info_to_howto, + elf_info_to_howto_rel, + elf_backend_sym_is_global, + elf_backend_object_p, + elf_backend_symbol_processing, + elf_backend_symbol_table_processing, + elf_backend_section_processing, + elf_backend_section_from_shdr, + elf_backend_fake_sections, + elf_backend_section_from_bfd_section, + elf_backend_final_write_processing, + elf_backend_ecoff_debug_swap }; #ifdef TARGET_BIG_SYM diff --git a/bfd/elf64-target.h b/bfd/elf64-target.h index 8ada3b98ab4..84501796f54 100644 --- a/bfd/elf64-target.h +++ b/bfd/elf64-target.h @@ -59,29 +59,35 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define ELF_MAXPAGESIZE 1 #endif +#ifndef elf_backend_sym_is_global +#define elf_backend_sym_is_global 0 +#endif #ifndef elf_backend_object_p -#define elf_backend_object_p 0 /* elf_backend_object_p */ +#define elf_backend_object_p 0 #endif #ifndef elf_backend_symbol_processing -#define elf_backend_symbol_processing 0 /* elf_backend_symbol_processing */ +#define elf_backend_symbol_processing 0 #endif #ifndef elf_backend_symbol_table_processing -#define elf_backend_symbol_table_processing 0 /* elf_backend_symbol_table_processing */ +#define elf_backend_symbol_table_processing 0 #endif #ifndef elf_backend_section_processing -#define elf_backend_section_processing 0 /* elf_backend_section_processing */ +#define elf_backend_section_processing 0 #endif #ifndef elf_backend_section_from_shdr -#define elf_backend_section_from_shdr 0 /* elf_backend_section_from_shdr */ +#define elf_backend_section_from_shdr 0 #endif #ifndef elf_backend_fake_sections -#define elf_backend_fake_sections 0 /* elf_backend_fake_sections */ +#define elf_backend_fake_sections 0 #endif #ifndef elf_backend_section_from_bfd_section -#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */ +#define elf_backend_section_from_bfd_section 0 +#endif +#ifndef elf_backend_final_write_processing +#define elf_backend_final_write_processing 0 #endif #ifndef elf_backend_ecoff_debug_swap -#define elf_backend_ecoff_debug_swap 0 /* elf_backed_ecoff_debug_swap */ +#define elf_backend_ecoff_debug_swap 0 #endif static CONST struct elf_backend_data elf64_bed = @@ -95,16 +101,17 @@ static CONST struct elf_backend_data elf64_bed = ELF_ARCH, /* arch */ ELF_MACHINE_CODE, /* elf_machine_code */ ELF_MAXPAGESIZE, /* maxpagesize */ - elf_info_to_howto, /* elf_info_to_howto */ - elf_info_to_howto_rel, /* elf_info_to_howto_rel */ - elf_backend_object_p, /* elf_backend_object_p */ - elf_backend_symbol_processing, /* elf_backend_symbol_processing */ - elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */ - elf_backend_section_processing, /* elf_backend_section_processing */ - elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */ - elf_backend_fake_sections, /* elf_backend_fake_sections */ - elf_backend_section_from_bfd_section, /* elf_backend_section_from_bfd_section */ - elf_backend_ecoff_debug_swap /* elf_backend_ecoff_debug_swap */ + elf_info_to_howto, + elf_info_to_howto_rel, + elf_backend_sym_is_global, + elf_backend_object_p, + elf_backend_symbol_processing, + elf_backend_symbol_table_processing, + elf_backend_section_processing, + elf_backend_section_from_shdr, + elf_backend_fake_sections, + elf_backend_section_from_bfd_section, + elf_backend_ecoff_debug_swap }; #ifdef TARGET_BIG_SYM diff --git a/bfd/libelf.h b/bfd/libelf.h index 4d58293c532..04db170d415 100644 --- a/bfd/libelf.h +++ b/bfd/libelf.h @@ -93,6 +93,13 @@ struct elf_backend_data void (*elf_info_to_howto_rel) PARAMS ((bfd *, arelent *, Elf_Internal_Rel *)); + /* A function to determine whether a symbol is global when + partitioning the symbol table into local and global symbols. + This should be NULL for most targets, in which case the correct + thing will be done. MIPS ELF, at least on the Irix 5, has + special requirements. */ + boolean (*elf_backend_sym_is_global) PARAMS ((bfd *, asymbol *)); + /* The remaining functions are hooks which are called only if they are not NULL. */ @@ -141,6 +148,10 @@ struct elf_backend_data boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *retval)); + /* A function to do any final processing needed for the ELF file + before writing it out. */ + void (*elf_backend_final_write_processing) PARAMS ((bfd *)); + /* The swapping table to use when dealing with ECOFF information. Used for the MIPS ELF .mdebug section. */ const struct ecoff_debug_swap *elf_backend_ecoff_debug_swap; -- 2.30.2