aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-05-13 15:17:26 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-05-13 15:17:26 +0000
commitf60c736c64d6c9d683df1cead3631958359c14f1 (patch)
tree2a0c2f020fdd44ea66de9c6612ff9152837418fe
parent62bacd69c2a21d55c308fb3e94e550559762b32c (diff)
downloadexternal_llvm-f60c736c64d6c9d683df1cead3631958359c14f1.zip
external_llvm-f60c736c64d6c9d683df1cead3631958359c14f1.tar.gz
external_llvm-f60c736c64d6c9d683df1cead3631958359c14f1.tar.bz2
MC: Add section layout order indices to MCSectionData.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103715 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCAssembler.h6
-rw-r--r--lib/MC/MCAssembler.cpp4
2 files changed, 10 insertions, 0 deletions
diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h
index 33fa295..095b174 100644
--- a/include/llvm/MC/MCAssembler.h
+++ b/include/llvm/MC/MCAssembler.h
@@ -392,6 +392,9 @@ private:
/// Ordinal - The section index in the assemblers section list.
unsigned Ordinal;
+ /// LayoutOrder - The index of this section in the layout order.
+ unsigned LayoutOrder;
+
/// Alignment - The maximum alignment seen in this section.
unsigned Alignment;
@@ -426,6 +429,9 @@ public:
unsigned getOrdinal() const { return Ordinal; }
void setOrdinal(unsigned Value) { Ordinal = Value; }
+ unsigned getLayoutOrder() const { return LayoutOrder; }
+ void setLayoutOrder(unsigned Value) { LayoutOrder = Value; }
+
/// @name Fragment Access
/// @{
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index ac91bad..f41b25f 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -601,6 +601,10 @@ void MCAssembler::Finish() {
// Create the layout object.
MCAsmLayout Layout(*this);
+ // Assign layout order indices.
+ for (unsigned i = 0, e = Layout.getSectionOrder().size(); i != e; ++i)
+ Layout.getSectionOrder()[i]->setLayoutOrder(i);
+
// Insert additional align fragments for concrete sections to explicitly pad
// the previous section to match their alignment requirements. This is for
// 'gas' compatibility, it shouldn't strictly be necessary.