gold/
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:
parent
07a8e9f036
commit
3136a00eec
2 changed files with 15 additions and 18 deletions
|
@ -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>
|
2013-01-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
Ian Lance Taylor <iant@google.com>
|
Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
|
|
|
@ -2422,7 +2422,7 @@ Output_section::add_input_section(Layout* layout,
|
||||||
input_section_size = uncompressed_size;
|
input_section_size = uncompressed_size;
|
||||||
|
|
||||||
off_t offset_in_section;
|
off_t offset_in_section;
|
||||||
off_t aligned_offset_in_section;
|
|
||||||
if (this->has_fixed_layout())
|
if (this->has_fixed_layout())
|
||||||
{
|
{
|
||||||
// For incremental updates, find a chunk of unused space in the section.
|
// 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; "
|
gold_fallback(_("out of patch space in section %s; "
|
||||||
"relink with --incremental-full"),
|
"relink with --incremental-full"),
|
||||||
this->name());
|
this->name());
|
||||||
aligned_offset_in_section = offset_in_section;
|
return 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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
// 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
|
// section is written. When the target is relaxing, we want to delay fill
|
||||||
// generating to avoid adjusting them during relaxation. Also, if we are
|
// 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();
|
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);
|
this->input_sections_.push_back(isecn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue