diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2013-02-16 00:32:53 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2013-02-16 00:32:53 +0000 |
commit | e2bb314a30b1a5c13b9fcf2cf6ba36369b864321 (patch) | |
tree | f4094ea3752eaa4fdeb3b1461cf41c1c0706bd33 /llvm/lib/MC/MCParser/ELFAsmParser.cpp | |
parent | df25c435991ad751a319433c1425a1acf53c687e (diff) | |
download | llvm-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.cpp | 11 |
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") |