summaryrefslogtreecommitdiff
path: root/gold/output.cc
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2013-01-07 21:36:56 +0000
committerCary Coutant <ccoutant@google.com>2013-01-07 21:36:56 +0000
commit3136a00eec7368aa50169e286c6139a8e56f31a9 (patch)
treeb4664df55ccc337e8b36c408c3b4f5ead4121efd /gold/output.cc
parent07a8e9f0361a21ecced933a32e98a38e7b04d590 (diff)
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.
Diffstat (limited to 'gold/output.cc')
-rw-r--r--gold/output.cc26
1 files changed, 8 insertions, 18 deletions
diff --git a/gold/output.cc b/gold/output.cc
index f2321b77fc..01126a3d7d 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -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);
}