aboutsummaryrefslogtreecommitdiff
path: root/gold/output.cc
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2010-10-29 20:49:20 +0000
committerDoug Kwan <dougkwan@google.com>2010-10-29 20:49:20 +0000
commitd06fb4d1df16ab118624e9abd711005d044a176b (patch)
treeaa6a4a62b185dea10390a299c048c1e13a595b7e /gold/output.cc
parentae6a0217c573fdf00a40820a325cb988a03271d2 (diff)
downloadgdb-d06fb4d1df16ab118624e9abd711005d044a176b.zip
gdb-d06fb4d1df16ab118624e9abd711005d044a176b.tar.gz
gdb-d06fb4d1df16ab118624e9abd711005d044a176b.tar.bz2
2010-10-29 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to Output_section::add_relaxed_input_section. * output.cc (Output_section::add_relaxed_input_section): Add new arguments LAYOUT and NAME. Set section order index. (Output_section::convert_input_sections_in_list_to_relaxed_sections): Copy section order index. * output.h (Output_section::add_relaxed_input_section): Add new arguments LAYOUT and NAME.
Diffstat (limited to 'gold/output.cc')
-rw-r--r--gold/output.cc24
1 files changed, 23 insertions, 1 deletions
diff --git a/gold/output.cc b/gold/output.cc
index 1368c19..dda475d 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -2203,9 +2203,25 @@ Output_section::add_output_section_data(Output_section_data* posd)
// Add a relaxed input section.
void
-Output_section::add_relaxed_input_section(Output_relaxed_input_section* poris)
+Output_section::add_relaxed_input_section(Layout* layout,
+ Output_relaxed_input_section* poris,
+ const std::string& name)
{
Input_section inp(poris);
+
+ // If the --section-ordering-file option is used to specify the order of
+ // sections, we need to keep track of sections.
+ if (parameters->options().section_ordering_file())
+ {
+ unsigned int section_order_index =
+ layout->find_section_order_index(name);
+ if (section_order_index != 0)
+ {
+ inp.set_section_order_index(section_order_index);
+ this->set_input_section_order_specified();
+ }
+ }
+
this->add_output_section_data(&inp);
if (this->lookup_maps_->is_valid())
this->lookup_maps_->add_relaxed_input_section(poris->relobj(),
@@ -2373,7 +2389,13 @@ Output_section::convert_input_sections_in_list_to_relaxed_sections(
Relaxation_map::const_iterator p = map.find(sid);
gold_assert(p != map.end());
gold_assert((*input_sections)[p->second].is_input_section());
+
+ // Remember section order index of original input section
+ // if it is set. Copy it to the relaxed input section.
+ unsigned int soi =
+ (*input_sections)[p->second].section_order_index();
(*input_sections)[p->second] = Input_section(poris);
+ (*input_sections)[p->second].set_section_order_index(soi);
}
}