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.
#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 =
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
#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 =
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
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. */
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;