aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1993-11-18 17:10:42 +0000
committerIan Lance Taylor <ian@airs.com>1993-11-18 17:10:42 +0000
commit643e9fc7683e5df2e66a43576bdaea2ea794e735 (patch)
tree7b20973549762e1c2d3b7f8ee54cf4d155dba68d
parent7855533586f9dbdce6ef1fc48b5ce5f4fc4e4f32 (diff)
downloadgdb-643e9fc7683e5df2e66a43576bdaea2ea794e735.zip
gdb-643e9fc7683e5df2e66a43576bdaea2ea794e735.tar.gz
gdb-643e9fc7683e5df2e66a43576bdaea2ea794e735.tar.bz2
* 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.
-rw-r--r--bfd/elf32-target.h44
-rw-r--r--bfd/elf64-target.h43
-rw-r--r--bfd/libelf.h11
3 files changed, 62 insertions, 36 deletions
diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h
index 2711fbd..ed1f417 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 8ada3b9..8450179 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 4d58293..04db170 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;