aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCParser/ELFAsmParser.cpp
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2013-02-16 00:32:53 +0000
committerJoerg Sonnenberger <joerg@bec.de>2013-02-16 00:32:53 +0000
commite2bb314a30b1a5c13b9fcf2cf6ba36369b864321 (patch)
treef4094ea3752eaa4fdeb3b1461cf41c1c0706bd33 /llvm/lib/MC/MCParser/ELFAsmParser.cpp
parentdf25c435991ad751a319433c1425a1acf53c687e (diff)
downloadllvm-e2bb314a30b1a5c13b9fcf2cf6ba36369b864321.zip
llvm-e2bb314a30b1a5c13b9fcf2cf6ba36369b864321.tar.gz
llvm-e2bb314a30b1a5c13b9fcf2cf6ba36369b864321.tar.bz2
Derive ELF section type from the name in some cases where GNU as does
so. llvm-svn: 175327
Diffstat (limited to 'llvm/lib/MC/MCParser/ELFAsmParser.cpp')
-rw-r--r--llvm/lib/MC/MCParser/ELFAsmParser.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp
index eb39415..7921abb 100644
--- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp
+++ b/llvm/lib/MC/MCParser/ELFAsmParser.cpp
@@ -413,7 +413,16 @@ bool ELFAsmParser::ParseDirectiveSection(StringRef, SMLoc) {
unsigned Type = ELF::SHT_PROGBITS;
- if (!TypeName.empty()) {
+ if (TypeName.empty()) {
+ if (SectionName.startswith(".note"))
+ Type = ELF::SHT_NOTE;
+ else if (SectionName == ".init_array")
+ Type = ELF::SHT_INIT_ARRAY;
+ else if (SectionName == ".fini_array")
+ Type = ELF::SHT_FINI_ARRAY;
+ else if (SectionName == ".preinit_array")
+ Type = ELF::SHT_PREINIT_ARRAY;
+ } else {
if (TypeName == "init_array")
Type = ELF::SHT_INIT_ARRAY;
else if (TypeName == "fini_array")