Make sure .text doesn't produce extra alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114895 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2010-09-27 21:40:27 +00:00
parent 1f386c4ce1
commit 0453dd9ca0
2 changed files with 22 additions and 9 deletions

View File

@ -54,25 +54,19 @@ public:
// FIXME: Part of this logic is duplicated in the MCELFStreamer. What is
// the best way for us to get access to it?
bool ParseSectionDirectiveData(StringRef, SMLoc) {
bool ret = ParseSectionSwitch(".data", MCSectionELF::SHT_PROGBITS,
return ParseSectionSwitch(".data", MCSectionELF::SHT_PROGBITS,
MCSectionELF::SHF_WRITE |MCSectionELF::SHF_ALLOC,
SectionKind::getDataRel());
getStreamer().EmitCodeAlignment(4, 0);
return ret;
}
bool ParseSectionDirectiveText(StringRef, SMLoc) {
bool ret = ParseSectionSwitch(".text", MCSectionELF::SHT_PROGBITS,
return ParseSectionSwitch(".text", MCSectionELF::SHT_PROGBITS,
MCSectionELF::SHF_EXECINSTR |
MCSectionELF::SHF_ALLOC, SectionKind::getText());
getStreamer().EmitCodeAlignment(4, 0);
return ret;
}
bool ParseSectionDirectiveBSS(StringRef, SMLoc) {
bool ret = ParseSectionSwitch(".bss", MCSectionELF::SHT_NOBITS,
return ParseSectionSwitch(".bss", MCSectionELF::SHT_NOBITS,
MCSectionELF::SHF_WRITE |
MCSectionELF::SHF_ALLOC, SectionKind::getBSS());
getStreamer().EmitCodeAlignment(4, 0);
return ret;
}
bool ParseSectionDirectiveRoData(StringRef, SMLoc) {
return ParseSectionSwitch(".rodata", MCSectionELF::SHT_PROGBITS,

19
test/MC/ELF/align-text.s Normal file
View File

@ -0,0 +1,19 @@
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s
// Test that the .text directive doesn't cause alignment.
.zero 1
.text
.zero 1
// CHECK: (('sh_name', 1) # '.text'
// CHECK-NEXT: ('sh_type', 1)
// CHECK-NEXT: ('sh_flags', 6)
// CHECK-NEXT: ('sh_addr', 0)
// CHECK-NEXT: ('sh_offset', 64)
// CHECK-NEXT: ('sh_size', 2)
// CHECK-NEXT: ('sh_link', 0)
// CHECK-NEXT: ('sh_info', 0)
// CHECK-NEXT: ('sh_addralign', 4)
// CHECK-NEXT: ('sh_entsize', 0)
// CHECK-NEXT: ),