From: Ian Lance Taylor Date: Tue, 20 Nov 2007 04:26:15 +0000 (+0000) Subject: From Craig Silverstein: Also set entsize for .debug_str sections. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4f833eee90d9ad55784bfb63abd41f256a16a2f9;p=binutils-gdb.git From Craig Silverstein: Also set entsize for .debug_str sections. --- diff --git a/gold/output.cc b/gold/output.cc index 5e9758b84dd..97277e0996b 100644 --- a/gold/output.cc +++ b/gold/output.cc @@ -1114,11 +1114,15 @@ Output_section::add_input_section(Sized_relobj* object, this->addralign_ = addralign; typename elfcpp::Elf_types::Elf_WXword sh_flags = shdr.get_sh_flags(); + uint64_t entsize = shdr.get_sh_entsize(); // .debug_str is a mergeable string section, but is not always so // marked by compilers. Mark manually here so we can optimize. if (strcmp(secname, ".debug_str") == 0) - sh_flags |= (elfcpp::SHF_MERGE | elfcpp::SHF_STRINGS); + { + sh_flags |= (elfcpp::SHF_MERGE | elfcpp::SHF_STRINGS); + entsize = 1; + } // 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 @@ -1127,8 +1131,7 @@ Output_section::add_input_section(Sized_relobj* object, && reloc_shndx == 0) { if (this->add_merge_input_section(object, shndx, sh_flags, - shdr.get_sh_entsize(), - addralign)) + entsize, addralign)) { // Tell the relocation routines that they need to call the // output_offset method to determine the final address.