mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-28 07:05:03 +00:00
[MCJIT] Make RuntimeDyld dump section contents in -debug mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216400 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8c96862847
commit
f9526ac188
@ -41,6 +41,35 @@ void RuntimeDyldImpl::registerEHFrames() {}
|
||||
|
||||
void RuntimeDyldImpl::deregisterEHFrames() {}
|
||||
|
||||
static void dumpSectionMemory(const SectionEntry &S) {
|
||||
dbgs() << "----- Contents of section " << S.Name << " -----";
|
||||
|
||||
uint8_t *DataAddr = S.Address;
|
||||
uint64_t LoadAddr = S.LoadAddress;
|
||||
|
||||
unsigned StartPadding = LoadAddr & 7;
|
||||
unsigned BytesRemaining = S.Size;
|
||||
|
||||
if (StartPadding) {
|
||||
dbgs() << "\n" << format("0x%08x", LoadAddr & ~7) << ":";
|
||||
while (StartPadding--)
|
||||
dbgs() << " ";
|
||||
}
|
||||
|
||||
while (BytesRemaining > 0) {
|
||||
if ((LoadAddr & 7) == 0)
|
||||
dbgs() << "\n" << format("0x%08x", LoadAddr) << ":";
|
||||
|
||||
dbgs() << " " << format("%02x", *DataAddr);
|
||||
|
||||
++DataAddr;
|
||||
++LoadAddr;
|
||||
--BytesRemaining;
|
||||
}
|
||||
|
||||
dbgs() << "\n";
|
||||
}
|
||||
|
||||
// Resolve the relocations for all symbols we currently know about.
|
||||
void RuntimeDyldImpl::resolveRelocations() {
|
||||
MutexGuard locked(lock);
|
||||
@ -56,7 +85,8 @@ void RuntimeDyldImpl::resolveRelocations() {
|
||||
// entry provides the section to which the relocation will be applied.
|
||||
uint64_t Addr = Sections[i].LoadAddress;
|
||||
DEBUG(dbgs() << "Resolving relocations Section #" << i << "\t"
|
||||
<< format("%p", (uint8_t *)Addr) << "\n");
|
||||
<< format("0x%x", Addr) << "\n");
|
||||
DEBUG(dumpSectionMemory(Sections[i]));
|
||||
resolveRelocationList(Relocations[i], Addr);
|
||||
Relocations.erase(i);
|
||||
}
|
||||
@ -371,7 +401,7 @@ void RuntimeDyldImpl::emitCommonSymbols(ObjectImage &Obj,
|
||||
if (!Addr)
|
||||
report_fatal_error("Unable to allocate memory for common symbols!");
|
||||
uint64_t Offset = 0;
|
||||
Sections.push_back(SectionEntry(StringRef(), Addr, TotalSize, 0));
|
||||
Sections.push_back(SectionEntry("<common symbols>", Addr, TotalSize, 0));
|
||||
memset(Addr, 0, TotalSize);
|
||||
|
||||
DEBUG(dbgs() << "emitCommonSection SectionID: " << SectionID << " new addr: "
|
||||
|
@ -104,8 +104,8 @@ void RuntimeDyldMachO::dumpRelocationToResolve(const RelocationEntry &RE,
|
||||
|
||||
dbgs() << "resolveRelocation Section: " << RE.SectionID
|
||||
<< " LocalAddress: " << format("%p", LocalAddress)
|
||||
<< " FinalAddress: " << format("%p", FinalAddress)
|
||||
<< " Value: " << format("%p", Value) << " Addend: " << RE.Addend
|
||||
<< " FinalAddress: " << format("0x%x", FinalAddress)
|
||||
<< " Value: " << format("0x%x", Value) << " Addend: " << RE.Addend
|
||||
<< " isPCRel: " << RE.IsPCRel << " MachoType: " << RE.RelType
|
||||
<< " Size: " << (1 << RE.Size) << "\n";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user