From 637fa7af7fc91adde728881444f49bcafd6ce3c5 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sun, 14 Jun 2009 05:53:55 +0000 Subject: 2009-06-13 H.J. Lu * 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 | 2 ++ bfd/elf32-i386.c | 4 +++- bfd/elf64-x86-64.c | 8 ++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 05e93da..5d8c8f3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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 diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index c6e6265..7ac90c2 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -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; diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 3cb4f06..27b1cbd 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -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; } -- cgit v1.1