* layout.cc (Layout::layout_reloc): In relocatable link don't

combine reloc sections for grouped sections.
This commit is contained in:
Ian Lance Taylor 2010-04-24 14:32:23 +00:00
parent ab38a727c9
commit bd288ea21b
2 changed files with 19 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2010-04-24 Ian Lance Taylor <iant@google.com>
* layout.cc (Layout::layout_reloc): In relocatable link don't
combine reloc sections for grouped sections.
2010-04-23 Sriraman Tallam <tmsriram@google.com>
* gc.h (gc_process_relocs): Pass information on relocs pointing to

View File

@ -699,11 +699,20 @@ Layout::layout_reloc(Sized_relobj<size, big_endian>* object,
gold_unreachable();
name += data_section->name();
Output_section* os = this->choose_output_section(object, name.c_str(),
sh_type,
shdr.get_sh_flags(),
false, false, false,
false, false, false);
// In a relocatable link relocs for a grouped section must not be
// combined with other reloc sections.
Output_section* os;
if (!parameters->options().relocatable()
|| (data_section->flags() & elfcpp::SHF_GROUP) == 0)
os = this->choose_output_section(object, name.c_str(), sh_type,
shdr.get_sh_flags(), false, false,
false, false, false, false);
else
{
const char* n = this->namepool_.add(name.c_str(), true, NULL);
os = this->make_output_section(n, sh_type, shdr.get_sh_flags(),
false, false, false, false, false);
}
os->set_should_link_to_symtab();
os->set_info_section(data_section);