aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/MC/ELFObjectWriter.cpp1
-rw-r--r--lib/MC/MCParser/ELFAsmParser.cpp2
-rw-r--r--lib/MC/MCSectionELF.cpp2
-rw-r--r--test/MC/ELF/section.s15
4 files changed, 19 insertions, 1 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index ef6e0f1414..5ff12bc01f 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -1265,6 +1265,7 @@ void ELFObjectWriter::WriteSection(MCAssembler &Asm,
case ELF::SHT_PROGBITS:
case ELF::SHT_STRTAB:
case ELF::SHT_NOBITS:
+ case ELF::SHT_NOTE:
case ELF::SHT_NULL:
case ELF::SHT_ARM_ATTRIBUTES:
// Nothing to do.
diff --git a/lib/MC/MCParser/ELFAsmParser.cpp b/lib/MC/MCParser/ELFAsmParser.cpp
index 0aa89c20a2..0456b4bac4 100644
--- a/lib/MC/MCParser/ELFAsmParser.cpp
+++ b/lib/MC/MCParser/ELFAsmParser.cpp
@@ -335,6 +335,8 @@ bool ELFAsmParser::ParseDirectiveSection(StringRef, SMLoc) {
Type = MCSectionELF::SHT_NOBITS;
else if (TypeName == "progbits")
Type = MCSectionELF::SHT_PROGBITS;
+ else if (TypeName == "note")
+ Type = MCSectionELF::SHT_NOTE;
else
return TokError("unknown section type");
}
diff --git a/lib/MC/MCSectionELF.cpp b/lib/MC/MCSectionELF.cpp
index 59568adf70..a53489790d 100644
--- a/lib/MC/MCSectionELF.cpp
+++ b/lib/MC/MCSectionELF.cpp
@@ -92,6 +92,8 @@ void MCSectionELF::PrintSwitchToSection(const MCAsmInfo &MAI,
OS << "preinit_array";
else if (Type == MCSectionELF::SHT_NOBITS)
OS << "nobits";
+ else if (Type == MCSectionELF::SHT_NOTE)
+ OS << "note";
else if (Type == MCSectionELF::SHT_PROGBITS)
OS << "progbits";
diff --git a/test/MC/ELF/section.s b/test/MC/ELF/section.s
index 38cf8ad435..8e40ae8c04 100644
--- a/test/MC/ELF/section.s
+++ b/test/MC/ELF/section.s
@@ -12,7 +12,7 @@
// CHECK: ('sh_name', 0x00000033) # '.note.GNU-'
// CHECK: ('sh_name', 0x0000003e) # '-.note.GNU'
-// Test that the dafults are used
+// Test that the defaults are used
.section .init
.section .fini
@@ -67,6 +67,19 @@
// CHECK-NEXT: ('sh_entsize', 0x00000000)
// CHECK-NEXT: ),
+.section .note.test,"",@note
+// CHECK: (('sh_name', 0x00000061) # '.note.test'
+// CHECK-NEXT: ('sh_type', 0x00000007)
+// CHECK-NEXT: ('sh_flags', 0x00000000)
+// CHECK-NEXT: ('sh_addr', 0x00000000)
+// CHECK-NEXT: ('sh_offset', 0x00000050)
+// CHECK-NEXT: ('sh_size', 0x00000000)
+// CHECK-NEXT: ('sh_link', 0x00000000)
+// CHECK-NEXT: ('sh_info', 0x00000000)
+// CHECK-NEXT: ('sh_addralign', 0x00000001)
+// CHECK-NEXT: ('sh_entsize', 0x00000000)
+// CHECK-NEXT: ),
+
// Test that we can parse these
foo:
bar: