summaryrefslogtreecommitdiff
path: root/gold/layout.h
diff options
context:
space:
mode:
authorSriraman Tallam <tmsriram@google.com>2011-09-29 23:45:57 +0000
committerSriraman Tallam <tmsriram@google.com>2011-09-29 23:45:57 +0000
commitf0558624db8e79622bb71ea5279ec6b5f8c9bc79 (patch)
treed197f7cab34bbcca71419dd08cdc05e47d661d0d /gold/layout.h
parenta7dac15368485853f4bd463352afb9b49517b624 (diff)
downloadbinutils-gdb-f0558624db8e79622bb71ea5279ec6b5f8c9bc79.tar.gz
2011-09-29 Sriraman Tallam <tmsriram@google.com>
* layout.h (section_order_map_): New member. (get_section_order_map): New member function. * output.cc (Output_section::add_input_section): Check for patterns only when --section-ordering-file is specified. * gold.cc (queue_middle_tasks): Delay updating order of sections till output_sections have been formed. * layout.cc (Layout_Layout): Initialize section_order_map_. * plugin.cc (update_section_order): Store order in order_map. Do not update the order. * testsuite/Makefile.am: Add test case for plugin_final_layout. * testsuite/Makefile.in: Regenerate. * testsuite/plugin_section_order.c: New file. * testsuite/plugin_final_layout.cc: New file. * testsuite/plugin_final_layout.sh: New file.
Diffstat (limited to 'gold/layout.h')
-rw-r--r--gold/layout.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/gold/layout.h b/gold/layout.h
index 05cb50fa6a4..d76fc96bee1 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -522,6 +522,10 @@ class Layout
const char* name, const elfcpp::Shdr<size, big_endian>& shdr,
unsigned int reloc_shndx, unsigned int reloc_type, off_t* offset);
+ std::map<Section_id, unsigned int>*
+ get_section_order_map()
+ { return &this->section_order_map_; }
+
bool
is_section_ordering_specified()
{ return this->section_ordering_specified_; }
@@ -1322,6 +1326,9 @@ class Layout
Segment_states* segment_states_;
// A relaxation debug checker. We only create one when in debugging mode.
Relaxation_debug_check* relaxation_debug_check_;
+ // Plugins specify section_ordering using this map. This is set in
+ // update_section_order in plugin.cc
+ std::map<Section_id, unsigned int> section_order_map_;
// Hash a pattern to its position in the section ordering file.
Unordered_map<std::string, unsigned int> input_section_position_;
// Vector of glob only patterns in the section_ordering file.