aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog7
-rw-r--r--gold/output.cc26
2 files changed, 15 insertions, 18 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index 47ef7e8..9d48cd0 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -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>
diff --git a/gold/output.cc b/gold/output.cc
index f2321b7..01126a3 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);
}