PR gold/14993
	* output.cc (Output_section::add_input_section): For incremental
	updates, don't track input sections that are allocated from patch
	space.
This commit is contained in:
Cary Coutant 2013-01-07 21:36:56 +00:00
parent 07a8e9f036
commit 3136a00eec
2 changed files with 15 additions and 18 deletions

View file

@ -1,3 +1,10 @@
2013-01-07 Cary Coutant <ccoutant@google.com>
PR gold/14993
* output.cc (Output_section::add_input_section): For incremental
updates, don't track input sections that are allocated from patch
space.
2013-01-07 H.J. Lu <hongjiu.lu@intel.com>
Ian Lance Taylor <iant@google.com>

View file

@ -2422,7 +2422,7 @@ Output_section::add_input_section(Layout* layout,
input_section_size = uncompressed_size;
off_t offset_in_section;
off_t aligned_offset_in_section;
if (this->has_fixed_layout())
{
// For incremental updates, find a chunk of unused space in the section.
@ -2432,17 +2432,15 @@ Output_section::add_input_section(Layout* layout,
gold_fallback(_("out of patch space in section %s; "
"relink with --incremental-full"),
this->name());
aligned_offset_in_section = offset_in_section;
}
else
{
offset_in_section = this->current_data_size_for_child();
aligned_offset_in_section = align_address(offset_in_section,
addralign);
this->set_current_data_size_for_child(aligned_offset_in_section
+ input_section_size);
return offset_in_section;
}
offset_in_section = this->current_data_size_for_child();
off_t aligned_offset_in_section = align_address(offset_in_section,
addralign);
this->set_current_data_size_for_child(aligned_offset_in_section
+ input_section_size);
// Determine if we want to delay code-fill generation until the output
// section is written. When the target is relaxing, we want to delay fill
// generating to avoid adjusting them during relaxation. Also, if we are
@ -2507,14 +2505,6 @@ Output_section::add_input_section(Layout* layout,
this->set_input_section_order_specified();
}
}
if (this->has_fixed_layout())
{
// For incremental updates, finalize the address and offset now.
uint64_t addr = this->address();
isecn.set_address_and_file_offset(addr + aligned_offset_in_section,
aligned_offset_in_section,
this->offset());
}
this->input_sections_.push_back(isecn);
}