* libelf.h (struct elf_backend_data): Added fields
authorIan Lance Taylor <ian@airs.com>
Thu, 18 Nov 1993 17:10:42 +0000 (17:10 +0000)
committerIan Lance Taylor <ian@airs.com>
Thu, 18 Nov 1993 17:10:42 +0000 (17:10 +0000)
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
bfd/elf64-target.h
bfd/libelf.h

index 2711fbd3d5e81ac48e56926128feaf515d16fe56..ed1f417cd0b8297dfffdbc052338a228cbd3088c 100644 (file)
@@ -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
index 8ada3b98ab42b3cea2c0d67474aae9aff6c381a6..84501796f546faa5b261f2a01fb1204f3e8cc35a 100644 (file)
@@ -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
index 4d58293c53275e93ab121b8f1b72743fff60cba7..04db170d415127a41b65cd712fae77b33ee1e7c4 100644 (file)
@@ -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;