[llvm] r290623 - llvm-readobj: ELF: Make DT tags machine aware
Hemant Kulkarni via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 27 11:59:29 PST 2016
Author: khemant
Date: Tue Dec 27 13:59:29 2016
New Revision: 290623
URL: http://llvm.org/viewvc/llvm-project?rev=290623&view=rev
Log:
llvm-readobj: ELF: Make DT tags machine aware
Modified:
llvm/trunk/include/llvm/Support/ELF.h
llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
Modified: llvm/trunk/include/llvm/Support/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ELF.h?rev=290623&r1=290622&r2=290623&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Support/ELF.h (original)
+++ llvm/trunk/include/llvm/Support/ELF.h Tue Dec 27 13:59:29 2016
@@ -1143,6 +1143,11 @@ enum {
DT_VERNEED = 0X6FFFFFFE, // The address of the version Dependency table.
DT_VERNEEDNUM = 0X6FFFFFFF, // The number of entries in DT_VERNEED.
+ // Hexagon specific dynamic table entries
+ DT_HEXAGON_SYMSZ = 0x70000000,
+ DT_HEXAGON_VER = 0x70000001,
+ DT_HEXAGON_PLT = 0x70000002,
+
// Mips specific dynamic table entry tags.
DT_MIPS_RLD_VERSION = 0x70000001, // 32 bit version number for runtime
// linker interface.
Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-readobj/ELFDumper.cpp?rev=290623&r1=290622&r2=290623&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
+++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Tue Dec 27 13:59:29 2016
@@ -1504,7 +1504,29 @@ template <class ELFT> void ELFDumper<ELF
#define LLVM_READOBJ_TYPE_CASE(name) \
case DT_##name: return #name
-static const char *getTypeString(uint64_t Type) {
+static const char *getTypeString(unsigned Arch, uint64_t Type) {
+ switch (Arch) {
+ case EM_HEXAGON:
+ switch (Type) {
+ LLVM_READOBJ_TYPE_CASE(HEXAGON_SYMSZ);
+ LLVM_READOBJ_TYPE_CASE(HEXAGON_VER);
+ LLVM_READOBJ_TYPE_CASE(HEXAGON_PLT);
+ }
+ case EM_MIPS:
+ switch (Type) {
+ LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL);
+ LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION);
+ LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS);
+ LLVM_READOBJ_TYPE_CASE(MIPS_BASE_ADDRESS);
+ LLVM_READOBJ_TYPE_CASE(MIPS_LOCAL_GOTNO);
+ LLVM_READOBJ_TYPE_CASE(MIPS_SYMTABNO);
+ LLVM_READOBJ_TYPE_CASE(MIPS_UNREFEXTNO);
+ LLVM_READOBJ_TYPE_CASE(MIPS_GOTSYM);
+ LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP);
+ LLVM_READOBJ_TYPE_CASE(MIPS_PLTGOT);
+ LLVM_READOBJ_TYPE_CASE(MIPS_OPTIONS);
+ }
+ }
switch (Type) {
LLVM_READOBJ_TYPE_CASE(BIND_NOW);
LLVM_READOBJ_TYPE_CASE(DEBUG);
@@ -1550,17 +1572,6 @@ static const char *getTypeString(uint64_
LLVM_READOBJ_TYPE_CASE(GNU_HASH);
LLVM_READOBJ_TYPE_CASE(TLSDESC_PLT);
LLVM_READOBJ_TYPE_CASE(TLSDESC_GOT);
- LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION);
- LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL);
- LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS);
- LLVM_READOBJ_TYPE_CASE(MIPS_BASE_ADDRESS);
- LLVM_READOBJ_TYPE_CASE(MIPS_LOCAL_GOTNO);
- LLVM_READOBJ_TYPE_CASE(MIPS_SYMTABNO);
- LLVM_READOBJ_TYPE_CASE(MIPS_UNREFEXTNO);
- LLVM_READOBJ_TYPE_CASE(MIPS_GOTSYM);
- LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP);
- LLVM_READOBJ_TYPE_CASE(MIPS_PLTGOT);
- LLVM_READOBJ_TYPE_CASE(MIPS_OPTIONS);
LLVM_READOBJ_TYPE_CASE(AUXILIARY);
default: return "unknown";
}
@@ -1793,7 +1804,7 @@ void ELFDumper<ELFT>::printDynamicTable(
uintX_t Tag = Entry.getTag();
++I;
W.startLine() << " " << format_hex(Tag, Is64 ? 18 : 10, opts::Output != opts::GNU) << " "
- << format("%-21s", getTypeString(Tag));
+ << format("%-21s", getTypeString(Obj->getHeader()->e_machine, Tag));
printValue(Tag, Entry.getVal());
OS << "\n";
}
More information about the llvm-commits
mailing list