aboutsummaryrefslogtreecommitdiff
path: root/lib/MC/MCAssembler.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-03-08 22:03:42 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-03-08 22:03:42 +0000
commitb2b4acd757194b4b75e571ec7225811f94e753f3 (patch)
treec252cfeb9a50450f31e24527e118d92f62f6c693 /lib/MC/MCAssembler.cpp
parent77bf295dbb0b049fdec853ced0763084c43b2438 (diff)
MC/Macho-O: Align the zerofill section itself to the maximum alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97991 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCAssembler.cpp')
-rw-r--r--lib/MC/MCAssembler.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/MC/MCAssembler.cpp b/lib/MC/MCAssembler.cpp
index 1ec1d815de..4b78dc034f 100644
--- a/lib/MC/MCAssembler.cpp
+++ b/lib/MC/MCAssembler.cpp
@@ -1279,9 +1279,19 @@ void MCAssembler::Finish() {
if (!isVirtualSection(SD.getSection()))
continue;
+ // Align this section if necessary by adding padding bytes to the previous
+ // section.
+ if (uint64_t Pad = OffsetToAlignment(Address, it->getAlignment())) {
+ assert(Prev && "Missing prev section!");
+ Prev->setFileSize(Prev->getFileSize() + Pad);
+ Address += Pad;
+ }
+
SD.setAddress(Address);
LayoutSection(SD);
Address += SD.getSize();
+
+ Prev = &SD;
}
DEBUG_WITH_TYPE("mc-dump", {