From 99e9a495d54f59d91ec80973182c8832509274ee Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 15 Jan 2009 18:10:54 +0000 Subject: * object.cc (Sized_relobj::write_local_symbols): Don't write out local symbols when stripping all symbols. --- gold/ChangeLog | 7 ++++++- gold/object.cc | 15 +++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 6a86fba..d929d8b 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,6 +1,11 @@ +2009-01-15 Ian Lance Taylor + + * object.cc (Sized_relobj::write_local_symbols): Don't write out + local symbols when stripping all symbols. + 2009-01-14 Cary Coutant - * output.cc (Output_reloc): Add explicit instantiations. + * output.cc (Output_reloc): Add explicit instantiations. 2009-01-14 Cary Coutant diff --git a/gold/object.cc b/gold/object.cc index b1f83e7..6a23a6f 100644 --- a/gold/object.cc +++ b/gold/object.cc @@ -1416,9 +1416,13 @@ Sized_relobj::write_local_symbols( Output_symtab_xindex* symtab_xindex, Output_symtab_xindex* dynsym_xindex) { - if (parameters->options().strip_all() - && this->output_local_dynsym_count_ == 0) - return; + const bool strip_all = parameters->options().strip_all(); + if (strip_all) + { + if (this->output_local_dynsym_count_ == 0) + return; + this->output_local_symbol_count_ = 0; + } gold_assert(this->symtab_shndx_ != -1U); if (this->symtab_shndx_ == 0) @@ -1487,7 +1491,7 @@ Sized_relobj::write_local_symbols( st_shndx = out_sections[st_shndx]->out_shndx(); if (st_shndx >= elfcpp::SHN_LORESERVE) { - if (lv.needs_output_symtab_entry()) + if (lv.needs_output_symtab_entry() && !strip_all) symtab_xindex->add(lv.output_symtab_index(), st_shndx); if (lv.needs_output_dynsym_entry()) dynsym_xindex->add(lv.output_dynsym_index(), st_shndx); @@ -1496,8 +1500,7 @@ Sized_relobj::write_local_symbols( } // Write the symbol to the output symbol table. - if (!parameters->options().strip_all() - && lv.needs_output_symtab_entry()) + if (!strip_all && lv.needs_output_symtab_entry()) { elfcpp::Sym_write osym(ov); -- cgit v1.1