From 41a6e6a69852117c0bb18c97673e0cab57e8547c Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Mon, 25 May 2015 19:12:18 +0000 Subject: [PATCH] [llvm-readobj/ELF] Teach how to decode DF_1_XXX flags llvm-readobj -dynamic-table output. Before: 0x000000006FFFFFFB unknown After: 0x000000006FFFFFFB FLAGS_1 NOW ORIGIN Differential Revision: http://reviews.llvm.org/D9958 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238151 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../llvm-readobj/Inputs/dtflags.elf-x86-64 | Bin 0 -> 11800 bytes test/tools/llvm-readobj/elf-dtflags.test | 6 ++++ tools/llvm-readobj/ELFDumper.cpp | 32 ++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100755 test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 create mode 100644 test/tools/llvm-readobj/elf-dtflags.test diff --git a/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 b/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 new file mode 100755 index 0000000000000000000000000000000000000000..c6e8501d9e7398d272987f05e7675b8c8b43fc73 GIT binary patch literal 11800 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 ElfDynamicDTFlags[] = { LLVM_READOBJ_DT_FLAG_ENT(DF, STATIC_TLS) }; +static const EnumEntry ElfDynamicDTFlags1[] = { + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NOW), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, GLOBAL), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, GROUP), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NODELETE), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, LOADFLTR), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, INITFIRST), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NOOPEN), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, ORIGIN), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, DIRECT), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, TRANS), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, INTERPOSE), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NODEFLIB), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NODUMP), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, CONFALT), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, ENDFILTEE), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, DISPRELDNE), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NODIRECT), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, IGNMULDEF), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NOKSYMS), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NOHDR), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, EDITED), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, NORELOC), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, SYMINTPOSE), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, GLOBAUDIT), + LLVM_READOBJ_DT_FLAG_ENT(DF_1, SINGLETON) +}; + static const EnumEntry ElfDynamicDTMipsFlags[] = { LLVM_READOBJ_DT_FLAG_ENT(RHF, NONE), LLVM_READOBJ_DT_FLAG_ENT(RHF, QUICKSTART), @@ -950,6 +979,9 @@ static void printValue(const ELFFile *O, uint64_t Type, uint64_t Value, case DT_FLAGS: printFlags(Value, makeArrayRef(ElfDynamicDTFlags), OS); break; + case DT_FLAGS_1: + printFlags(Value, makeArrayRef(ElfDynamicDTFlags1), OS); + break; } } -- 2.34.1