]> Git Repo - binutils.git/commitdiff
* elf64-ppc.c (ppc64_elf_get_symbol_info): New function.
authorAlan Modra <[email protected]>
Wed, 29 May 2002 05:00:01 +0000 (05:00 +0000)
committerAlan Modra <[email protected]>
Wed, 29 May 2002 05:00:01 +0000 (05:00 +0000)
(bfd_elf64_get_symbol_info): Define.
* elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef.

bfd/ChangeLog
bfd/elf64-ppc.c
bfd/elfxx-target.h

index b96730ba7906373f95bfc86a46d04673af222831..0db8544a7220e7b9d573b436a2eb5406ee2d81c3 100644 (file)
@@ -1,3 +1,9 @@
+2002-05-29  Alan Modra  <[email protected]>
+
+       * elf64-ppc.c (ppc64_elf_get_symbol_info): New function.
+       (bfd_elf64_get_symbol_info): Define.
+       * elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef.
+
 2002-05-29  Andrey Volkov  <[email protected]>
 
        * cpu-h8300.c: Make default h8300 machine first in machine list.
index b703ab6081c968401d1575010910a5ebe9f61500..ff956a583010e295acc0d3dbd771bd38338b80c0 100644 (file)
@@ -55,6 +55,8 @@ static bfd_reloc_status_type ppc64_elf_toc64_reloc
   PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
 static bfd_reloc_status_type ppc64_elf_unhandled_reloc
   PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **));
+static void ppc64_elf_get_symbol_info
+  PARAMS ((bfd *, asymbol *, symbol_info *));
 static boolean ppc64_elf_set_private_flags
   PARAMS ((bfd *, flagword));
 static boolean ppc64_elf_merge_private_bfd_data
@@ -1631,6 +1633,22 @@ ppc64_elf_unhandled_reloc (abfd, reloc_entry, symbol, data,
   return bfd_reloc_dangerous;
 }
 
+/* Return symbol info as per usual for ELF targets, except that
+   symbols in .opd are given 'd' or 'D' for type.  */
+
+static void
+ppc64_elf_get_symbol_info (abfd, symbol, ret)
+     bfd *abfd;
+     asymbol *symbol;
+     symbol_info *ret;
+{
+  _bfd_elf_get_symbol_info (abfd, symbol, ret);
+  if (ret->type == '?'
+      && (symbol->flags & (BSF_GLOBAL | BSF_LOCAL)) != 0
+      && strcmp (symbol->section->name, ".opd") == 0)
+    ret->type = (symbol->flags & BSF_GLOBAL) != 0 ? 'D' : 'd';
+}
+
 /* Function to set whether a module needs the -mrelocatable bit set.  */
 
 static boolean
@@ -6108,6 +6126,7 @@ ppc64_elf_finish_dynamic_sections (output_bfd, info)
 #define bfd_elf64_bfd_merge_private_bfd_data  ppc64_elf_merge_private_bfd_data
 #define bfd_elf64_bfd_link_hash_table_create  ppc64_elf_link_hash_table_create
 #define bfd_elf64_bfd_link_hash_table_free    ppc64_elf_link_hash_table_free
+#define bfd_elf64_get_symbol_info            ppc64_elf_get_symbol_info
 
 #define elf_backend_section_from_shdr        ppc64_elf_section_from_shdr
 #define elf_backend_create_dynamic_sections   ppc64_elf_create_dynamic_sections
index 08b680a9a84aa20df53ccf9adde6d6ae5eb7adaf..fbcd0a7f9ba026dcaca51b6abf33a81230916a14 100644 (file)
@@ -44,7 +44,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #ifndef bfd_elfNN_get_reloc_upper_bound
 #define bfd_elfNN_get_reloc_upper_bound _bfd_elf_get_reloc_upper_bound
 #endif
+#ifndef bfd_elfNN_get_symbol_info
 #define bfd_elfNN_get_symbol_info      _bfd_elf_get_symbol_info
+#endif
 #define bfd_elfNN_get_symtab           _bfd_elf_get_symtab
 #define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound
 #if 0 /* done in elf-bfd.h */
This page took 0.05276 seconds and 4 git commands to generate.