From c54b27d1c04f53043688d5d3141e74ae5c23aba8 Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Thu, 5 Apr 2018 14:51:37 -0700 Subject: Improve warnings for relocations referring to discarded sections. gold/ * target-reloc.h (relocate_section): Add local symbol index or global symbol name to warning about relocation that refers to discarded section. --- gold/ChangeLog | 6 ++++++ gold/target-reloc.h | 23 +++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) (limited to 'gold') diff --git a/gold/ChangeLog b/gold/ChangeLog index 010dad4..97777aa 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2018-04-05 Cary Coutant + + * target-reloc.h (relocate_section): Add local symbol index or global + symbol name to warning about relocation that refers to discarded + section. + 2018-04-05 James Cowgill Revert previous patch and apply revised patch. diff --git a/gold/target-reloc.h b/gold/target-reloc.h index f52e42f..36032fb 100644 --- a/gold/target-reloc.h +++ b/gold/target-reloc.h @@ -305,6 +305,7 @@ relocate_section( const Symbol_value *psymval; bool is_defined_in_discarded_section; unsigned int shndx; + const Symbol* gsym = NULL; if (r_sym < local_count && (reloc_symbol_changes == NULL || (*reloc_symbol_changes)[i] == NULL)) @@ -327,7 +328,6 @@ relocate_section( } else { - const Symbol* gsym; if (reloc_symbol_changes != NULL && (*reloc_symbol_changes)[i] != NULL) gsym = (*reloc_symbol_changes)[i]; @@ -383,9 +383,24 @@ relocate_section( else { if (comdat_behavior == CB_WARNING) - gold_warning_at_location(relinfo, i, offset, - _("relocation refers to discarded " - "section")); + { + if (gsym == NULL) + { + gold_warning_at_location( + relinfo, i, offset, + _("relocation refers to local symbol %d " + "defined in discarded section"), + r_sym); + } + else + { + gold_warning_at_location( + relinfo, i, offset, + _("relocation refers to symbol \"%s\" " + "defined in discarded section"), + gsym->demangled_name().c_str()); + } + } symval2.set_output_value(0); } symval2.set_no_output_symtab_entry(); -- cgit v1.1