diff options
author | Nico Rieck <nico.rieck@gmail.com> | 2013-04-12 04:01:52 +0000 |
---|---|---|
committer | Nico Rieck <nico.rieck@gmail.com> | 2013-04-12 04:01:52 +0000 |
commit | f3f0b79704c57e05e2f2a859c2f6e06cbf684e5a (patch) | |
tree | f547a3b180c35bef20e0777132c7577ea2a9519d /llvm/tools/llvm-readobj/MachODumper.cpp | |
parent | 9d08f86b9517eaebeaeb9e695e4524b92b16402d (diff) | |
download | llvm-f3f0b79704c57e05e2f2a859c2f6e06cbf684e5a.zip llvm-f3f0b79704c57e05e2f2a859c2f6e06cbf684e5a.tar.gz llvm-f3f0b79704c57e05e2f2a859c2f6e06cbf684e5a.tar.bz2 |
Add -expand-relocs to llvm-readobj
This option expands shown relocations from single line to a dictionary
format:
Relocation {
Offset: 0x4
Type: R_386_32 (1)
Symbol: sym
Info: 0x0
}
llvm-svn: 179359
Diffstat (limited to 'llvm/tools/llvm-readobj/MachODumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/MachODumper.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/MachODumper.cpp index a13593b..69f1d63 100644 --- a/llvm/tools/llvm-readobj/MachODumper.cpp +++ b/llvm/tools/llvm-readobj/MachODumper.cpp @@ -341,18 +341,32 @@ void MachODumper::printRelocation(section_iterator SecI, const MachOObjectFileBase::RelocationEntry *RE = Obj->getRelocation(DR); bool IsScattered = Obj->isScattered(RE); - raw_ostream& OS = W.startLine(); - OS << W.hex(Offset) - << " " << Obj->isPCRel(RE) - << " " << Obj->getLength(RE); - if (IsScattered) - OS << " n/a"; - else - OS << " " << RE->getExternal(); - OS << " " << RelocName - << " " << IsScattered - << " " << (SymbolName.size() > 0 ? SymbolName : "-") - << "\n"; + if (opts::ExpandRelocs) { + DictScope Group(W, "Relocation"); + W.printHex("Offset", Offset); + W.printNumber("PCRel", Obj->isPCRel(RE)); + W.printNumber("Length", Obj->getLength(RE)); + if (IsScattered) + W.printString("Extern", StringRef("N/A")); + else + W.printNumber("Extern", RE->getExternal()); + W.printNumber("Type", RelocName, RE->getType()); + W.printString("Symbol", SymbolName.size() > 0 ? SymbolName : "-"); + W.printNumber("Scattered", IsScattered); + } else { + raw_ostream& OS = W.startLine(); + OS << W.hex(Offset) + << " " << Obj->isPCRel(RE) + << " " << Obj->getLength(RE); + if (IsScattered) + OS << " n/a"; + else + OS << " " << RE->getExternal(); + OS << " " << RelocName + << " " << IsScattered + << " " << (SymbolName.size() > 0 ? SymbolName : "-") + << "\n"; + } } void MachODumper::printSymbols() { |