mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-25 00:24:26 +00:00
Retry submitting r186623: COFFDumper: Dump data directory entries.
The original change was rolled back in r186627 because of test failures on the big endian machine. I believe I fixed the issue so re-submitting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186734 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -60,6 +60,8 @@ private:
|
||||
|
||||
void printRelocation(section_iterator SecI, relocation_iterator RelI);
|
||||
|
||||
void printDataDirectory(uint32_t Index, const std::string &FieldName);
|
||||
|
||||
void printX64UnwindInfo();
|
||||
|
||||
void printRuntimeFunction(
|
||||
@ -560,6 +562,14 @@ void COFFDumper::cacheRelocations() {
|
||||
}
|
||||
}
|
||||
|
||||
void COFFDumper::printDataDirectory(uint32_t Index, const std::string &FieldName) {
|
||||
const data_directory *Data;
|
||||
if (Obj->getDataDirectory(Index, Data))
|
||||
return;
|
||||
W.printHex(FieldName + "RVA", Data->RelativeVirtualAddress);
|
||||
W.printHex(FieldName + "Size", Data->Size);
|
||||
}
|
||||
|
||||
void COFFDumper::printFileHeaders() {
|
||||
// Print COFF header
|
||||
const coff_file_header *COFFHeader = 0;
|
||||
@ -621,6 +631,20 @@ void COFFDumper::printFileHeaders() {
|
||||
W.printNumber("SizeOfHeapReserve", PEHeader->SizeOfHeapReserve);
|
||||
W.printNumber("SizeOfHeapCommit", PEHeader->SizeOfHeapCommit);
|
||||
W.printNumber("NumberOfRvaAndSize", PEHeader->NumberOfRvaAndSize);
|
||||
|
||||
if (PEHeader->NumberOfRvaAndSize > 0) {
|
||||
DictScope D(W, "DataDirectory");
|
||||
static const char * const directory[] = {
|
||||
"ExportTable", "ImportTable", "ResourceTable", "ExceptionTable",
|
||||
"CertificateTable", "BaseRelocationTable", "Debug", "Architecture",
|
||||
"GlobalPtr", "TLSTable", "LoadConfigTable", "BoundImport", "IAT",
|
||||
"DelayImportDescriptor", "CLRRuntimeHeader", "Reserved"
|
||||
};
|
||||
|
||||
for (uint32_t i = 0; i < PEHeader->NumberOfRvaAndSize; ++i) {
|
||||
printDataDirectory(i, directory[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user