aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/MC/MCParser/ELFAsmParser.cpp12
-rw-r--r--test/MC/ELF/align-text.s19
2 files changed, 22 insertions, 9 deletions
diff --git a/lib/MC/MCParser/ELFAsmParser.cpp b/lib/MC/MCParser/ELFAsmParser.cpp
index 072befa..7d8f68f 100644
--- a/lib/MC/MCParser/ELFAsmParser.cpp
+++ b/lib/MC/MCParser/ELFAsmParser.cpp
@@ -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,
diff --git a/test/MC/ELF/align-text.s b/test/MC/ELF/align-text.s
new file mode 100644
index 0000000..4f4497c
--- /dev/null
+++ b/test/MC/ELF/align-text.s
@@ -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: ),