mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 02:33:33 +00:00
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
This commit is contained in:
parent
77bf295dbb
commit
b2b4acd757
@ -1279,9 +1279,19 @@ void MCAssembler::Finish() {
|
|||||||
if (!isVirtualSection(SD.getSection()))
|
if (!isVirtualSection(SD.getSection()))
|
||||||
continue;
|
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);
|
SD.setAddress(Address);
|
||||||
LayoutSection(SD);
|
LayoutSection(SD);
|
||||||
Address += SD.getSize();
|
Address += SD.getSize();
|
||||||
|
|
||||||
|
Prev = &SD;
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_WITH_TYPE("mc-dump", {
|
DEBUG_WITH_TYPE("mc-dump", {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
|
// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
|
||||||
|
|
||||||
.zerofill __DATA,__bss,_fill0,1,0
|
.zerofill __DATA,__bss,_fill0,1,0
|
||||||
.zerofill __DATA,__bss,_a,4,2
|
.zerofill __DATA,__bss,_a,4,2
|
||||||
|
15
test/MC/MachO/zerofill-sect-align.s
Normal file
15
test/MC/MachO/zerofill-sect-align.s
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump | FileCheck %s
|
||||||
|
//
|
||||||
|
// Check that the section itself is aligned.
|
||||||
|
|
||||||
|
.byte 0
|
||||||
|
|
||||||
|
.zerofill __DATA,__bss,_a,1,0
|
||||||
|
.zerofill __DATA,__bss,_b,4,4
|
||||||
|
|
||||||
|
// CHECK: # Symbol 0
|
||||||
|
// CHECK: ('n_value', 16)
|
||||||
|
// CHECK: ('_string', '_a')
|
||||||
|
// CHECK: # Symbol 1
|
||||||
|
// CHECK: ('n_value', 32)
|
||||||
|
// CHECK: ('_string', '_b')
|
Loading…
x
Reference in New Issue
Block a user