This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] PR binutils/16496: Display symbol version when dumping dynrelocs


On Tue, Nov 25, 2014 at 6:36 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Jan 30, 2014 at 4:41 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Thu, Jan 30, 2014 at 1:39 AM, Andreas Schwab <schwab@linux-m68k.org> wrote:
>>> Since it breaks building glibc, perhaps there is another way to display
>>
>> It is the most consistent way to display symbol version.  But It did cause:
>>
>> make[4]: *** [/export/build/gnu/glibc/build-x86_64-linux/elf/check-localplt.out]
>> Error 1
>> Extra PLT reference: libc.so: realloc@@GLIBC_2.2.5
>> Extra PLT reference: libc.so: malloc@@GLIBC_2.2.5
>> Extra PLT reference: libc.so: memalign@@GLIBC_2.2.5
>> Extra PLT reference: libc.so: calloc@@GLIBC_2.2.5
>> Extra PLT reference: libc.so: free@@GLIBC_2.2.5
>> Extra PLT reference: libm.so: matherr@@GLIBC_2.2.5
>> Missing required PLT reference: libc.so: realloc
>> Missing required PLT reference: libc.so: malloc
>> Missing required PLT reference: libc.so: calloc
>> Missing required PLT reference: libc.so: memalign
>> Missing required PLT reference: libc.so: free
>> Missing required PLT reference: libm.so: matherr
>>
>> It is easy to fix by stripping @@GLIBC_2.2.5 from readelf -r output.
>>
>>> the symbol version?
>
> A very old patch:
>
> https://sourceware.org/ml/binutils/2014-01/msg00310.html
>
> My binutils PLT optimization commit:
>
> https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=dd7e64d45b317128f5fe813a8da0b13b4ad046ae
>
> will require updating elf/check-localplt test in glibc.  I am checking in this
> so that elf/check-localplt will be updated for both.
>

I checked in this patch to add get_symbol_version_string to
BFD_JUMP_TABLE_SYMBOLS so that we can use
bfd_get_symbol_version_string in objdump for non-ELF targets.


-- 
H.J.
From 60bb06bc89858ee50ad02907a833565dcc317182 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Tue, 25 Nov 2014 09:28:32 -0800
Subject: [PATCH] Use get_symbol_version_string in BFD_JUMP_TABLE_SYMBOLS

This patch adds get_symbol_version_string to BFD_JUMP_TABLE_SYMBOLS so
that we can use bfd_get_symbol_version_string in objdump for non-ELF
targets.

bfd/

	* targets.c (BFD_JUMP_TABLE_SYMBOLS): Use
	NAME##_get_symbol_version_string.
	(bfd_get_symbol_version_string): New.
	* aout-adobe.c (aout_32_get_symbol_version_string): Define using
	_bfd_nosymbols define.
	* aout-target.h (MY_get_symbol_version_string): Likewise.
	* aout-tic30.c (MY_get_symbol_version_string): Likewise.
	* binary.c (binary_get_symbol_version_string): Likewise.
	* bout.c (aout_32_get_symbol_version_string): Likewise.
	* coff-rs6000.c (_bfd_xcoff_get_symbol_version_string): Likewise.
	* i386msdos.c (msdos_get_symbol_version_string): Likewise.
	* i386os9k.c (aout_32_get_symbol_version_string): Likewise.
	* ieee.c (ieee_get_symbol_version_string): Likewise.
	* ihex.c (ihex_get_symbol_version_string): Likewise.
	* libecoff.h (_bfd_ecoff_get_symbol_version_string): Likewise.
	* mach-o-target.c (bfd_mach_o_get_symbol_version_string): Likewise.
	* mmo.c (mmo_get_symbol_version_string): Likewise.
	* nlm-target.h (nlm_get_symbol_version_string): Likewise.
	* oasys.c (oasys_get_symbol_version_string): Likewise.
	* pef.c (bfd_pef_get_symbol_version_string): Likewise.
	* plugin.c (bfd_plugin_get_symbol_version_string): Likewise.
	* ppcboot.c (ppcboot_get_symbol_version_string): Likewise.
	* som.c (som_get_symbol_version_string): Likewise.
	* srec.c (srec_get_symbol_version_string): Likewise.
	* tekhex.c (tekhex_get_symbol_version_string): Likewise.
	* versados.c (versados_get_symbol_version_string): Likewise.
	* vms-alpha.c (alpha_vms_get_symbol_version_string): Likewise.
	* xsym.c (bfd_sym_get_symbol_version_string): Likewise.

	* coff64-rs6000.c (rs6000_xcoff64_vec): Use
	coff_get_symbol_version_string.
	(rs6000_xcoff64_aix_vec): Likewise.

	* elf-bfd.h (bfd_elf_get_symbol_version_string): Renamed to ...
	(_bfd_elf_get_symbol_version_string): This.
	* elf.c: Likewise.
	(bfd_elf_print_symbol): Updated.
	* elfxx-target.h (bfd_elfNN_get_symbol_version_string): Define.

	* libbfd-in.h (_bfd_nosymbols_get_symbol_version_string): Define.
	* libcoff-in.h (coff_get_symbol_version_string): Likewise.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Likewise.
	* libcoff.h: Likewise.

binutils/

	* objdump.c (objdump_print_symname): Replace
	bfd_elf_get_symbol_version_string with
	bfd_get_symbol_version_string.
---
 bfd/ChangeLog       | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 bfd/aout-adobe.c    |  1 +
 bfd/aout-target.h   |  4 ++++
 bfd/aout-tic30.c    |  4 ++++
 bfd/bfd-in2.h       |  4 ++++
 bfd/binary.c        |  2 ++
 bfd/bout.c          |  1 +
 bfd/coff-rs6000.c   |  2 ++
 bfd/coff64-rs6000.c |  2 ++
 bfd/elf-bfd.h       |  2 +-
 bfd/elf.c           | 10 +++++-----
 bfd/elfxx-target.h  |  4 ++++
 bfd/i386msdos.c     |  2 ++
 bfd/i386os9k.c      |  2 ++
 bfd/ieee.c          |  2 ++
 bfd/ihex.c          |  1 +
 bfd/libbfd-in.h     |  2 ++
 bfd/libbfd.h        |  2 ++
 bfd/libcoff-in.h    |  2 ++
 bfd/libcoff.h       |  2 ++
 bfd/libecoff.h      |  2 ++
 bfd/mach-o-target.c |  1 +
 bfd/mmo.c           |  3 +++
 bfd/nlm-target.h    |  1 +
 bfd/oasys.c         |  1 +
 bfd/pef.c           |  1 +
 bfd/plugin.c        |  1 +
 bfd/ppcboot.c       |  2 ++
 bfd/som.c           |  1 +
 bfd/srec.c          |  1 +
 bfd/targets.c       |  4 ++++
 bfd/tekhex.c        |  1 +
 bfd/versados.c      |  1 +
 bfd/vms-alpha.c     |  3 +++
 bfd/xsym.c          |  1 +
 binutils/ChangeLog  |  6 ++++++
 binutils/objdump.c  |  4 +---
 37 files changed, 123 insertions(+), 9 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7b3971e..54942a1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,52 @@
 2014-11-25  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* targets.c (BFD_JUMP_TABLE_SYMBOLS): Use
+	NAME##_get_symbol_version_string.
+	(bfd_get_symbol_version_string): New.
+	* aout-adobe.c (aout_32_get_symbol_version_string): Define using
+	_bfd_nosymbols define.
+	* aout-target.h (MY_get_symbol_version_string): Likewise.
+	* aout-tic30.c (MY_get_symbol_version_string): Likewise.
+	* binary.c (binary_get_symbol_version_string): Likewise.
+	* bout.c (aout_32_get_symbol_version_string): Likewise.
+	* coff-rs6000.c (_bfd_xcoff_get_symbol_version_string): Likewise.
+	* i386msdos.c (msdos_get_symbol_version_string): Likewise.
+	* i386os9k.c (aout_32_get_symbol_version_string): Likewise.
+	* ieee.c (ieee_get_symbol_version_string): Likewise.
+	* ihex.c (ihex_get_symbol_version_string): Likewise.
+	* libecoff.h (_bfd_ecoff_get_symbol_version_string): Likewise.
+	* mach-o-target.c (bfd_mach_o_get_symbol_version_string): Likewise.
+	* mmo.c (mmo_get_symbol_version_string): Likewise.
+	* nlm-target.h (nlm_get_symbol_version_string): Likewise.
+	* oasys.c (oasys_get_symbol_version_string): Likewise.
+	* pef.c (bfd_pef_get_symbol_version_string): Likewise.
+	* plugin.c (bfd_plugin_get_symbol_version_string): Likewise.
+	* ppcboot.c (ppcboot_get_symbol_version_string): Likewise.
+	* som.c (som_get_symbol_version_string): Likewise.
+	* srec.c (srec_get_symbol_version_string): Likewise.
+	* tekhex.c (tekhex_get_symbol_version_string): Likewise.
+	* versados.c (versados_get_symbol_version_string): Likewise.
+	* vms-alpha.c (alpha_vms_get_symbol_version_string): Likewise.
+	* xsym.c (bfd_sym_get_symbol_version_string): Likewise.
+
+	* coff64-rs6000.c (rs6000_xcoff64_vec): Use
+	coff_get_symbol_version_string.
+	(rs6000_xcoff64_aix_vec): Likewise.
+
+	* elf-bfd.h (bfd_elf_get_symbol_version_string): Renamed to ...
+	(_bfd_elf_get_symbol_version_string): This.
+	* elf.c: Likewise.
+	(bfd_elf_print_symbol): Updated.
+	* elfxx-target.h (bfd_elfNN_get_symbol_version_string): Define.
+
+	* libbfd-in.h (_bfd_nosymbols_get_symbol_version_string): Define.
+	* libcoff-in.h (coff_get_symbol_version_string): Likewise.
+	* bfd-in2.h: Regenerated.
+	* libbfd.h: Likewise.
+	* libcoff.h: Likewise.
+
+2014-11-25  H.J. Lu  <hongjiu.lu@intel.com>
+
 	PR binutils/16496
 	* elf-bfd.h (bfd_elf_get_symbol_version_string): New.
 	* elf.c (bfd_elf_get_symbol_version_string): New.  Extracted
diff --git a/bfd/aout-adobe.c b/bfd/aout-adobe.c
index cfdcc64..50394a2 100644
--- a/bfd/aout-adobe.c
+++ b/bfd/aout-adobe.c
@@ -447,6 +447,7 @@ aout_adobe_sizeof_headers (bfd *ignore_abfd ATTRIBUTE_UNUSED,
 /* Build the transfer vector for Adobe A.Out files.  */
 
 #define aout_32_find_line			    _bfd_nosymbols_find_line
+#define aout_32_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
 #define aout_32_bfd_make_debug_symbol		    _bfd_nosymbols_bfd_make_debug_symbol
 #define aout_32_bfd_reloc_type_lookup		    _bfd_norelocs_bfd_reloc_type_lookup
 #define aout_32_bfd_reloc_name_lookup		    _bfd_norelocs_bfd_reloc_name_lookup
diff --git a/bfd/aout-target.h b/bfd/aout-target.h
index 3bca8b5..7982bf0 100644
--- a/bfd/aout-target.h
+++ b/bfd/aout-target.h
@@ -459,6 +459,10 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 #ifndef MY_get_symbol_info
 #define MY_get_symbol_info NAME (aout, get_symbol_info)
 #endif
+#ifndef MY_get_symbol_version_string
+#define MY_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
+#endif
 #ifndef MY_get_lineno
 #define MY_get_lineno NAME (aout, get_lineno)
 #endif
diff --git a/bfd/aout-tic30.c b/bfd/aout-tic30.c
index e74464d..e164446 100644
--- a/bfd/aout-tic30.c
+++ b/bfd/aout-tic30.c
@@ -917,6 +917,10 @@ tic30_aout_set_arch_mach (bfd *abfd,
 #ifndef MY_get_symbol_info
 #define MY_get_symbol_info NAME (aout, get_symbol_info)
 #endif
+#ifndef MY_get_symbol_version_string
+#define MY_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
+#endif
 #ifndef MY_get_lineno
 #define MY_get_lineno NAME (aout, get_lineno)
 #endif
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 433b171..ed7be29 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -7015,6 +7015,7 @@ typedef struct bfd_target
   NAME##_make_empty_symbol, \
   NAME##_print_symbol, \
   NAME##_get_symbol_info, \
+  NAME##_get_symbol_version_string, \
   NAME##_bfd_is_local_label_name, \
   NAME##_bfd_is_target_special_symbol, \
   NAME##_get_lineno, \
@@ -7036,6 +7037,9 @@ typedef struct bfd_target
   void        (*_bfd_get_symbol_info)
     (bfd *, struct bfd_symbol *, symbol_info *);
 #define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+  const char *(*_bfd_get_symbol_version_string)
+    (bfd *, struct bfd_symbol *, bfd_boolean *);
+#define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
   bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
   bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
   alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
diff --git a/bfd/binary.c b/bfd/binary.c
index d35e859..93a0cff 100644
--- a/bfd/binary.c
+++ b/bfd/binary.c
@@ -190,6 +190,8 @@ binary_canonicalize_symtab (bfd *abfd, asymbol **alocation)
 
 #define binary_make_empty_symbol  _bfd_generic_make_empty_symbol
 #define binary_print_symbol       _bfd_nosymbols_print_symbol
+#define binary_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 
 /* Get information about a symbol.  */
 
diff --git a/bfd/bout.c b/bfd/bout.c
index a27df58..de9c7c7 100644
--- a/bfd/bout.c
+++ b/bfd/bout.c
@@ -1375,6 +1375,7 @@ b_out_bfd_get_relocated_section_contents (bfd *output_bfd,
 /* Build the transfer vectors for Big and Little-Endian B.OUT files.  */
 
 #define aout_32_find_line                      _bfd_nosymbols_find_line
+#define aout_32_get_symbol_version_string      _bfd_nosymbols_get_symbol_version_string
 #define aout_32_bfd_make_debug_symbol          _bfd_nosymbols_bfd_make_debug_symbol
 #define aout_32_close_and_cleanup              aout_32_bfd_free_cached_info
 #define b_out_bfd_link_hash_table_create       _bfd_generic_link_hash_table_create
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index fea5f3b..05c45cf 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -4008,6 +4008,8 @@ const struct xcoff_dwsect_name xcoff_dwsect_names[] = {
 #define _bfd_xcoff_make_empty_symbol coff_make_empty_symbol
 #define _bfd_xcoff_print_symbol coff_print_symbol
 #define _bfd_xcoff_get_symbol_info coff_get_symbol_info
+#define _bfd_xcoff_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 #define _bfd_xcoff_bfd_is_local_label_name _bfd_xcoff_is_local_label_name
 #define _bfd_xcoff_bfd_is_target_special_symbol \
   coff_bfd_is_target_special_symbol
diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c
index 5985d81..72ea58b 100644
--- a/bfd/coff64-rs6000.c
+++ b/bfd/coff64-rs6000.c
@@ -2712,6 +2712,7 @@ const bfd_target rs6000_xcoff64_vec =
     coff_make_empty_symbol,
     coff_print_symbol,
     coff_get_symbol_info,
+    coff_get_symbol_version_string,
     _bfd_xcoff_is_local_label_name,
     coff_bfd_is_target_special_symbol,
     coff_get_lineno,
@@ -2969,6 +2970,7 @@ const bfd_target rs6000_xcoff64_aix_vec =
     coff_make_empty_symbol,
     coff_print_symbol,
     coff_get_symbol_info,
+    coff_get_symbol_version_string,
     _bfd_xcoff_is_local_label_name,
     coff_bfd_is_target_special_symbol,
     coff_get_lineno,
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index bee0ea1..4368658 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1772,7 +1772,7 @@ extern bfd_boolean _bfd_elf_copy_private_bfd_data
   (bfd *, bfd *);
 extern bfd_boolean _bfd_elf_print_private_bfd_data
   (bfd *, void *);
-const char * bfd_elf_get_symbol_version_string
+const char * _bfd_elf_get_symbol_version_string
   (bfd *, asymbol *, bfd_boolean *);
 extern void bfd_elf_print_symbol
   (bfd *, void *, asymbol *, bfd_print_symbol_type);
diff --git a/bfd/elf.c b/bfd/elf.c
index c0c7fef..0cf1991 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -1425,8 +1425,8 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
 /* Get version string.  */
 
 const char *
-bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol,
-				   bfd_boolean *hidden)
+_bfd_elf_get_symbol_version_string (bfd *abfd, asymbol *symbol,
+				    bfd_boolean *hidden)
 {
   const char *version_string = NULL;
   if (elf_dynversym (abfd) != 0
@@ -1522,9 +1522,9 @@ bfd_elf_print_symbol (bfd *abfd,
 	bfd_fprintf_vma (abfd, file, val);
 
 	/* If we have version information, print it.  */
-	version_string = bfd_elf_get_symbol_version_string (abfd,
-							    symbol,
-							    &hidden);
+	version_string = _bfd_elf_get_symbol_version_string (abfd,
+							     symbol,
+							     &hidden);
 	if (version_string)
 	  {
 	    if (!hidden)
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
index 692fb46..9bf4b18 100644
--- a/bfd/elfxx-target.h
+++ b/bfd/elfxx-target.h
@@ -66,6 +66,10 @@
 #ifndef bfd_elfNN_get_symbol_info
 #define bfd_elfNN_get_symbol_info	_bfd_elf_get_symbol_info
 #endif
+#ifndef bfd_elfNN_get_symbol_version_string
+#define bfd_elfNN_get_symbol_version_string \
+  _bfd_elf_get_symbol_version_string
+#endif
 #define bfd_elfNN_canonicalize_symtab	_bfd_elf_canonicalize_symtab
 #define bfd_elfNN_get_symtab_upper_bound _bfd_elf_get_symtab_upper_bound
 #define bfd_elfNN_make_empty_symbol	_bfd_elf_make_empty_symbol
diff --git a/bfd/i386msdos.c b/bfd/i386msdos.c
index f02659f..bd2730a 100644
--- a/bfd/i386msdos.c
+++ b/bfd/i386msdos.c
@@ -162,6 +162,8 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_canonicalize_symtab _bfd_nosymbols_canonicalize_symtab
 #define msdos_print_symbol _bfd_nosymbols_print_symbol
 #define msdos_get_symbol_info _bfd_nosymbols_get_symbol_info
+#define msdos_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 #define msdos_find_nearest_line _bfd_nosymbols_find_nearest_line
 #define msdos_find_line _bfd_nosymbols_find_line
 #define msdos_find_inliner_info _bfd_nosymbols_find_inliner_info
diff --git a/bfd/i386os9k.c b/bfd/i386os9k.c
index d8d5408..a8f87e5 100644
--- a/bfd/i386os9k.c
+++ b/bfd/i386os9k.c
@@ -155,6 +155,8 @@ os9k_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define aout_32_close_and_cleanup aout_32_bfd_free_cached_info
 
 #define aout_32_find_line	      _bfd_nosymbols_find_line
+#define aout_32_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 #define aout_32_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
 
 #define aout_32_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
diff --git a/bfd/ieee.c b/bfd/ieee.c
index 70ce4c5..04ac666 100644
--- a/bfd/ieee.c
+++ b/bfd/ieee.c
@@ -3828,6 +3828,8 @@ ieee_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define ieee_update_armap_timestamp bfd_true
 #define ieee_get_elt_at_index _bfd_generic_get_elt_at_index
 
+#define ieee_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 #define ieee_bfd_is_target_special_symbol  \
   ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define ieee_bfd_is_local_label_name bfd_generic_is_local_label_name
diff --git a/bfd/ihex.c b/bfd/ihex.c
index 9b3b813..7ce8c4b 100644
--- a/bfd/ihex.c
+++ b/bfd/ihex.c
@@ -918,6 +918,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define ihex_make_empty_symbol                    _bfd_generic_make_empty_symbol
 #define ihex_print_symbol                         _bfd_nosymbols_print_symbol
 #define ihex_get_symbol_info                      _bfd_nosymbols_get_symbol_info
+#define ihex_get_symbol_version_string		  _bfd_nosymbols_get_symbol_version_string
 #define ihex_bfd_is_target_special_symbol         ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define ihex_bfd_is_local_label_name              _bfd_nosymbols_bfd_is_local_label_name
 #define ihex_get_lineno                           _bfd_nosymbols_get_lineno
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index 50a46ac..f51bc11 100644
--- a/bfd/libbfd-in.h
+++ b/bfd/libbfd-in.h
@@ -392,6 +392,8 @@ extern bfd_boolean _bfd_vms_lib_ia64_mkarchive (bfd *abfd);
   ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
 #define _bfd_nosymbols_get_symbol_info \
   ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
+#define _bfd_nosymbols_get_symbol_version_string \
+  ((const char *(*) (bfd *, asymbol *, bfd_boolean *)) bfd_nullvoidptr)
 #define _bfd_nosymbols_bfd_is_local_label_name \
   ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
 #define _bfd_nosymbols_bfd_is_target_special_symbol \
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 6c48f82..a1923c8 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -397,6 +397,8 @@ extern bfd_boolean _bfd_vms_lib_ia64_mkarchive (bfd *abfd);
   ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
 #define _bfd_nosymbols_get_symbol_info \
   ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
+#define _bfd_nosymbols_get_symbol_version_string \
+  ((const char *(*) (bfd *, asymbol *, bfd_boolean *)) bfd_nullvoidptr)
 #define _bfd_nosymbols_bfd_is_local_label_name \
   ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
 #define _bfd_nosymbols_bfd_is_target_special_symbol \
diff --git a/bfd/libcoff-in.h b/bfd/libcoff-in.h
index 6b6eb28..dc7866d 100644
--- a/bfd/libcoff-in.h
+++ b/bfd/libcoff-in.h
@@ -353,6 +353,8 @@ extern void coff_print_symbol
   (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
 extern void coff_get_symbol_info
   (bfd *, asymbol *, symbol_info *ret);
+#define coff_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 extern bfd_boolean _bfd_coff_is_local_label_name
   (bfd *, const char *);
 extern asymbol *coff_bfd_make_debug_symbol
diff --git a/bfd/libcoff.h b/bfd/libcoff.h
index 9479985..d1c466a 100644
--- a/bfd/libcoff.h
+++ b/bfd/libcoff.h
@@ -357,6 +357,8 @@ extern void coff_print_symbol
   (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
 extern void coff_get_symbol_info
   (bfd *, asymbol *, symbol_info *ret);
+#define coff_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 extern bfd_boolean _bfd_coff_is_local_label_name
   (bfd *, const char *);
 extern asymbol *coff_bfd_make_debug_symbol
diff --git a/bfd/libecoff.h b/bfd/libecoff.h
index 06434c2..ebfa37e 100644
--- a/bfd/libecoff.h
+++ b/bfd/libecoff.h
@@ -285,6 +285,8 @@ extern void _bfd_ecoff_print_symbol
   (bfd *, void *, asymbol *, bfd_print_symbol_type);
 extern void _bfd_ecoff_get_symbol_info
   (bfd *, asymbol *, symbol_info *);
+#define _bfd_ecoff_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 extern bfd_boolean _bfd_ecoff_bfd_is_local_label_name
   (bfd *, const char *);
 #define _bfd_ecoff_get_lineno _bfd_nosymbols_get_lineno
diff --git a/bfd/mach-o-target.c b/bfd/mach-o-target.c
index a070e67..dd1ced1 100644
--- a/bfd/mach-o-target.c
+++ b/bfd/mach-o-target.c
@@ -31,6 +31,7 @@
 #define bfd_mach_o_bfd_is_local_label_name            bfd_generic_is_local_label_name
 #define bfd_mach_o_get_lineno                         _bfd_nosymbols_get_lineno
 #define bfd_mach_o_find_inliner_info                  _bfd_nosymbols_find_inliner_info
+#define bfd_mach_o_get_symbol_version_string	      _bfd_nosymbols_get_symbol_version_string
 #define bfd_mach_o_bfd_make_debug_symbol              _bfd_nosymbols_bfd_make_debug_symbol
 #define bfd_mach_o_read_minisymbols                   _bfd_generic_read_minisymbols
 #define bfd_mach_o_minisymbol_to_symbol               _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/mmo.c b/bfd/mmo.c
index 2c74c76..698ffa5 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -3204,6 +3204,9 @@ mmo_write_object_contents (bfd *abfd)
 #define mmo_bfd_is_target_special_symbol  \
   ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 
+#define mmo_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
+
 /* Is this one really used or defined by anyone?  */
 #define mmo_get_lineno _bfd_nosymbols_get_lineno
 
diff --git a/bfd/nlm-target.h b/bfd/nlm-target.h
index 2343cff..44b41ed 100644
--- a/bfd/nlm-target.h
+++ b/bfd/nlm-target.h
@@ -25,6 +25,7 @@
 #define nlm_make_empty_symbol                   nlmNAME (make_empty_symbol)
 #define nlm_print_symbol                        nlmNAME (print_symbol)
 #define nlm_get_symbol_info                     nlmNAME (get_symbol_info)
+#define nlm_get_symbol_version_string		_bfd_nosymbols_get_symbol_version_string
 #define nlm_bfd_is_local_label_name             bfd_generic_is_local_label_name
 #define nlm_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define nlm_get_lineno                          _bfd_nosymbols_get_lineno
diff --git a/bfd/oasys.c b/bfd/oasys.c
index 9ff9b9e..9ff9117 100644
--- a/bfd/oasys.c
+++ b/bfd/oasys.c
@@ -1170,6 +1170,7 @@ oasys_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
 #define oasys_bfd_is_local_label_name              bfd_generic_is_local_label_name
 #define oasys_bfd_is_target_special_symbol         ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define oasys_get_lineno                           _bfd_nosymbols_get_lineno
+#define oasys_get_symbol_version_string		   _bfd_nosymbols_get_symbol_version_string
 #define oasys_bfd_make_debug_symbol                _bfd_nosymbols_bfd_make_debug_symbol
 #define oasys_read_minisymbols                     _bfd_generic_read_minisymbols
 #define oasys_minisymbol_to_symbol                 _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/pef.c b/bfd/pef.c
index 4c29417..363e641 100644
--- a/bfd/pef.c
+++ b/bfd/pef.c
@@ -43,6 +43,7 @@
 #define bfd_pef_find_nearest_line                   _bfd_nosymbols_find_nearest_line
 #define bfd_pef_find_line                           _bfd_nosymbols_find_line
 #define bfd_pef_find_inliner_info                   _bfd_nosymbols_find_inliner_info
+#define bfd_pef_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
 #define bfd_pef_bfd_make_debug_symbol               _bfd_nosymbols_bfd_make_debug_symbol
 #define bfd_pef_read_minisymbols                    _bfd_generic_read_minisymbols
 #define bfd_pef_minisymbol_to_symbol                _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/plugin.c b/bfd/plugin.c
index a068861..7f8f8b5 100644
--- a/bfd/plugin.c
+++ b/bfd/plugin.c
@@ -85,6 +85,7 @@ dlerror (void)
 #define bfd_plugin_find_nearest_line                  _bfd_nosymbols_find_nearest_line
 #define bfd_plugin_find_line                          _bfd_nosymbols_find_line
 #define bfd_plugin_find_inliner_info                  _bfd_nosymbols_find_inliner_info
+#define bfd_plugin_get_symbol_version_string	      _bfd_nosymbols_get_symbol_version_string
 #define bfd_plugin_bfd_make_debug_symbol              _bfd_nosymbols_bfd_make_debug_symbol
 #define bfd_plugin_read_minisymbols                   _bfd_generic_read_minisymbols
 #define bfd_plugin_minisymbol_to_symbol               _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c
index 9ee8ab5..7599e20 100644
--- a/bfd/ppcboot.c
+++ b/bfd/ppcboot.c
@@ -326,6 +326,8 @@ ppcboot_get_symbol_info (bfd *ignore_abfd ATTRIBUTE_UNUSED,
   bfd_symbol_info (symbol, ret);
 }
 
+#define ppcboot_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
 #define ppcboot_bfd_is_target_special_symbol \
   ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define ppcboot_bfd_is_local_label_name bfd_generic_is_local_label_name
diff --git a/bfd/som.c b/bfd/som.c
index 513e4fa..5f96caa 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -6718,6 +6718,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 }
 
 #define som_find_line			        _bfd_nosymbols_find_line
+#define som_get_symbol_version_string		_bfd_nosymbols_get_symbol_version_string
 #define	som_close_and_cleanup		        som_bfd_free_cached_info
 #define som_read_ar_hdr			        _bfd_generic_read_ar_hdr
 #define som_write_ar_hdr		        _bfd_generic_write_ar_hdr
diff --git a/bfd/srec.c b/bfd/srec.c
index 5f9a546..8de6e42 100644
--- a/bfd/srec.c
+++ b/bfd/srec.c
@@ -1258,6 +1258,7 @@ srec_print_symbol (bfd *abfd,
 #define srec_find_line                            _bfd_nosymbols_find_line
 #define srec_find_inliner_info                    _bfd_nosymbols_find_inliner_info
 #define srec_make_empty_symbol                    _bfd_generic_make_empty_symbol
+#define srec_get_symbol_version_string		  _bfd_nosymbols_get_symbol_version_string
 #define srec_bfd_make_debug_symbol                _bfd_nosymbols_bfd_make_debug_symbol
 #define srec_read_minisymbols                     _bfd_generic_read_minisymbols
 #define srec_minisymbol_to_symbol                 _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/targets.c b/bfd/targets.c
index 8323e92..6a282ea 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -363,6 +363,7 @@ BFD_JUMP_TABLE macros.
 .  NAME##_make_empty_symbol, \
 .  NAME##_print_symbol, \
 .  NAME##_get_symbol_info, \
+.  NAME##_get_symbol_version_string, \
 .  NAME##_bfd_is_local_label_name, \
 .  NAME##_bfd_is_target_special_symbol, \
 .  NAME##_get_lineno, \
@@ -384,6 +385,9 @@ BFD_JUMP_TABLE macros.
 .  void        (*_bfd_get_symbol_info)
 .    (bfd *, struct bfd_symbol *, symbol_info *);
 .#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+.  const char *(*_bfd_get_symbol_version_string)
+.    (bfd *, struct bfd_symbol *, bfd_boolean *);
+.#define bfd_get_symbol_version_string(b,s,h) BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,h))
 .  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
 .  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
 .  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
diff --git a/bfd/tekhex.c b/bfd/tekhex.c
index 0328689..2f14194 100644
--- a/bfd/tekhex.c
+++ b/bfd/tekhex.c
@@ -957,6 +957,7 @@ tekhex_print_symbol (bfd *abfd,
 #define tekhex_find_nearest_line                    _bfd_nosymbols_find_nearest_line
 #define tekhex_find_line                            _bfd_nosymbols_find_line
 #define tekhex_find_inliner_info                    _bfd_nosymbols_find_inliner_info
+#define tekhex_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
 #define tekhex_bfd_make_debug_symbol                _bfd_nosymbols_bfd_make_debug_symbol
 #define tekhex_read_minisymbols                     _bfd_generic_read_minisymbols
 #define tekhex_minisymbol_to_symbol                 _bfd_generic_minisymbol_to_symbol
diff --git a/bfd/versados.c b/bfd/versados.c
index 5bafcb1..2368998 100644
--- a/bfd/versados.c
+++ b/bfd/versados.c
@@ -811,6 +811,7 @@ versados_canonicalize_reloc (bfd *abfd,
 #define versados_find_nearest_line                    _bfd_nosymbols_find_nearest_line
 #define versados_find_line                            _bfd_nosymbols_find_line
 #define versados_find_inliner_info                    _bfd_nosymbols_find_inliner_info
+#define versados_get_symbol_version_string	      _bfd_nosymbols_get_symbol_version_string
 #define versados_make_empty_symbol                    _bfd_generic_make_empty_symbol
 #define versados_bfd_make_debug_symbol                _bfd_nosymbols_bfd_make_debug_symbol
 #define versados_read_minisymbols                     _bfd_generic_read_minisymbols
diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c
index 3789f79..8c24ef0 100644
--- a/bfd/vms-alpha.c
+++ b/bfd/vms-alpha.c
@@ -9191,6 +9191,9 @@ bfd_vms_get_data (bfd *abfd)
    ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
 #define alpha_vms_print_symbol             vms_print_symbol
 #define alpha_vms_get_symbol_info          vms_get_symbol_info
+#define alpha_vms_get_symbol_version_string \
+  _bfd_nosymbols_get_symbol_version_string
+
 #define alpha_vms_read_minisymbols         _bfd_generic_read_minisymbols
 #define alpha_vms_minisymbol_to_symbol     _bfd_generic_minisymbol_to_symbol
 #define alpha_vms_get_lineno               _bfd_nosymbols_get_lineno
diff --git a/bfd/xsym.c b/bfd/xsym.c
index 4e2a8ab..870795e 100644
--- a/bfd/xsym.c
+++ b/bfd/xsym.c
@@ -35,6 +35,7 @@
 #define bfd_sym_find_nearest_line                   _bfd_nosymbols_find_nearest_line
 #define bfd_sym_find_line                           _bfd_nosymbols_find_line
 #define bfd_sym_find_inliner_info                   _bfd_nosymbols_find_inliner_info
+#define bfd_sym_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
 #define bfd_sym_bfd_make_debug_symbol               _bfd_nosymbols_bfd_make_debug_symbol
 #define bfd_sym_read_minisymbols                    _bfd_generic_read_minisymbols
 #define bfd_sym_minisymbol_to_symbol                _bfd_generic_minisymbol_to_symbol
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f4d9aa6..86c8555 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,11 @@
 2014-11-25  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* objdump.c (objdump_print_symname): Replace
+	bfd_elf_get_symbol_version_string with
+	bfd_get_symbol_version_string.
+
+2014-11-25  H.J. Lu  <hongjiu.lu@intel.com>
+
 	PR binutils/16496
 	* objdump.c (objdump_print_symname): Call
 	bfd_elf_get_symbol_version_string to get ELF symbol version
diff --git a/binutils/objdump.c b/binutils/objdump.c
index e04c3ee..fdfa602 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -808,9 +808,7 @@ objdump_print_symname (bfd *abfd, struct disassemble_info *inf,
 	name = alloc;
     }
 
-  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-    version_string = bfd_elf_get_symbol_version_string (abfd, sym,
-							&hidden);
+  version_string = bfd_get_symbol_version_string (abfd, sym, &hidden);
 
   if (bfd_is_und_section (bfd_get_section (sym)))
     hidden = TRUE;
-- 
1.9.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]