diff options
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/output.cc | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 297ab894..c1dc309 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,8 @@ +2008-07-22 Ian Lance Taylor <iant@google.com> + + * output.cc (Output_section::add_input_section): Don't try to + merge empty merge sections. + 2008-07-21 Craig Silverstein <csilvers@google.com> * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol): diff --git a/gold/output.cc b/gold/output.cc index 6ec4aef..a24ee5f 100644 --- a/gold/output.cc +++ b/gold/output.cc @@ -1819,9 +1819,11 @@ Output_section::add_input_section(Sized_relobj<size, big_endian>* object, // If this is a SHF_MERGE section, we pass all the input sections to // a Output_data_merge. We don't try to handle relocations for such - // a section. + // a section. We don't try to handle empty merge sections--they + // mess up the mappings, and are useless anyhow. if ((sh_flags & elfcpp::SHF_MERGE) != 0 - && reloc_shndx == 0) + && reloc_shndx == 0 + && shdr.get_sh_size() > 0) { if (this->add_merge_input_section(object, shndx, sh_flags, entsize, addralign)) |