MC: Add section layout order indices to MCSectionData.

llvm-svn: 103715
This commit is contained in:
Daniel Dunbar 2010-05-13 15:17:26 +00:00
parent bc6fabbd3e
commit 5a601f9e09
2 changed files with 10 additions and 0 deletions

View File

@ -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
/// @{

View File

@ -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.