diff options
author | George Rimar <grimar@accesssoftek.com> | 2016-05-21 10:16:58 +0000 |
---|---|---|
committer | George Rimar <grimar@accesssoftek.com> | 2016-05-21 10:16:58 +0000 |
commit | c13c59afa702bd2ed7804acb2672a8793eff41c7 (patch) | |
tree | acb0a8ca40f57eb66ff245808e2e0319b6b7ac12 /llvm/tools/llvm-readobj/ELFDumper.cpp | |
parent | 0287e17d09b9c8cdf9e607f6b568e3ec5ed65e70 (diff) | |
download | bcm5719-llvm-c13c59afa702bd2ed7804acb2672a8793eff41c7.tar.gz bcm5719-llvm-c13c59afa702bd2ed7804acb2672a8793eff41c7.zip |
[llvm-readobj] - Teach readobj to recognize SHF_COMPRESSED flag.
Main problem here was that SHF_COMPRESSED has the same value with
XCORE_SHF_CP_SECTION, which was included as standart (common) flag.
As far I understand xCore is a family of controllers and it that
means it's constant should be processed separately,
only if e_machine == EM_XCORE, otherwise llvm-readobj would output
different constants twice for compressed section:
Flags [
..
SHF_COMPRESSED (0x800)
..
XCORE_SHF_CP_SECTION (0x800)
..
]
what probably does not make sence if you're not working with xcore file.
Differential revision: http://reviews.llvm.org/D20273
llvm-svn: 270320
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index a1d92e0b6fe..dfdd029a7f9 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -994,8 +994,12 @@ static const EnumEntry<unsigned> ElfSectionFlags[] = { ENUM_ENT(SHF_TLS, "T"), ENUM_ENT(SHF_MASKOS, "o"), ENUM_ENT(SHF_MASKPROC, "p"), - ENUM_ENT_1(XCORE_SHF_CP_SECTION), - ENUM_ENT_1(XCORE_SHF_DP_SECTION), + ENUM_ENT_1(SHF_COMPRESSED), +}; + +static const EnumEntry<unsigned> ElfXCoreSectionFlags[] = { + LLVM_READOBJ_ENUM_ENT(ELF, XCORE_SHF_CP_SECTION), + LLVM_READOBJ_ENUM_ENT(ELF, XCORE_SHF_DP_SECTION) }; static const EnumEntry<unsigned> ElfAMDGPUSectionFlags[] = { @@ -3281,6 +3285,10 @@ template <class ELFT> void LLVMStyle<ELFT>::printSections(const ELFO *Obj) { SectionFlags.insert(SectionFlags.end(), std::begin(ElfX86_64SectionFlags), std::end(ElfX86_64SectionFlags)); break; + case EM_XCORE: + SectionFlags.insert(SectionFlags.end(), std::begin(ElfXCoreSectionFlags), + std::end(ElfXCoreSectionFlags)); + break; default: // Nothing to do. break; |