mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
Print more information about relocations.
With this patch llvm-readobj now prints if a relocation is pcrel, its length, if it is extern and if it is scattered. It also refactors the code a bit to use bit fields instead of shifts and masks all over the place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179294 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -330,20 +330,28 @@ void MachODumper::printRelocation(section_iterator SecI,
|
||||
relocation_iterator RelI) {
|
||||
uint64_t Offset;
|
||||
SmallString<32> RelocName;
|
||||
int64_t Info;
|
||||
StringRef SymbolName;
|
||||
SymbolRef Symbol;
|
||||
if (error(RelI->getOffset(Offset))) return;
|
||||
if (error(RelI->getTypeName(RelocName))) return;
|
||||
if (error(RelI->getAdditionalInfo(Info))) return;
|
||||
if (error(RelI->getSymbol(Symbol))) return;
|
||||
if (error(Symbol.getName(SymbolName))) return;
|
||||
|
||||
DataRefImpl DR = RelI->getRawDataRefImpl();
|
||||
const MachOObjectFileBase::RelocationEntry *RE = Obj->getRelocation(DR);
|
||||
bool IsScattered = Obj->isScattered(RE);
|
||||
|
||||
raw_ostream& OS = W.startLine();
|
||||
OS << W.hex(Offset)
|
||||
<< " " << RelocName
|
||||
<< " " << Obj->isPCRel(RE)
|
||||
<< " " << Obj->getLength(RE);
|
||||
if (IsScattered)
|
||||
OS << " n/a";
|
||||
else
|
||||
OS << " " << RE->External;
|
||||
OS << " " << RelocName
|
||||
<< " " << IsScattered
|
||||
<< " " << (SymbolName.size() > 0 ? SymbolName : "-")
|
||||
<< " " << W.hex(Info)
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user