2009-06-13 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 14 Jun 2009 05:53:55 +0000 (05:53 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 14 Jun 2009 05:53:55 +0000 (05:53 +0000)
* elf32-i386.c (elf_i386_relocate_section): Properly report
local symbol for unhandled relocation against STT_GNU_IFUNC
symbol.
* elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.

bfd/ChangeLog
bfd/elf32-i386.c
bfd/elf64-x86-64.c

index 05e93da..5d8c8f3 100644 (file)
@@ -3,7 +3,9 @@
        * elf32-i386.c (elf_i386_check_relocs): Properly report
        local symbol for unhandled relocation against STT_GNU_IFUNC
        symbol.
+       (elf_i386_relocate_section): Likewise.
        * elf64-x86-64.c (elf64_x86_64_check_relocs):  Likewise.
+       (elf64_x86_64_relocate_section): Likewise.
 
 2009-06-13  H.J. Lu  <hongjiu.lu@intel.com>
 
index c6e6265..7ac90c2 100644 (file)
@@ -3163,7 +3163,9 @@ elf_i386_relocate_section (bfd *output_bfd,
                (_("%B: relocation %s against STT_GNU_IFUNC "
                   "symbol `%s' isn't handled by %s"), input_bfd,
                 elf_howto_table[r_type].name,
-                h->root.root.string, __FUNCTION__);
+                (h->root.root.string
+                 ? h->root.root.string : "a local symbol"),
+                __FUNCTION__);
              bfd_set_error (bfd_error_bad_value);
              return FALSE;
 
index 3cb4f06..27b1cbd 100644 (file)
@@ -2867,7 +2867,9 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                (_("%B: relocation %s against STT_GNU_IFUNC "
                   "symbol `%s' isn't handled by %s"), input_bfd,
                 x86_64_elf_howto_table[r_type].name,
-                h->root.root.string, __FUNCTION__);
+                (h->root.root.string
+                 ? h->root.root.string : "a local symbol"),
+                __FUNCTION__);
              bfd_set_error (bfd_error_bad_value);
              return FALSE;
 
@@ -2883,7 +2885,9 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
                    (_("%B: relocation %s against STT_GNU_IFUNC "
                       "symbol `%s' has non-zero addend: %d"),
                     input_bfd, x86_64_elf_howto_table[r_type].name,
-                    h->root.root.string, rel->r_addend);
+                    (h->root.root.string
+                     ? h->root.root.string : "a local symbol"),
+                    rel->r_addend);
                  bfd_set_error (bfd_error_bad_value);
                  return FALSE;
                }