COFF: Teach llvm-objdump how to dump DLL forwarder symbols.
llvm-svn: 257539
This commit is contained in:
@@ -1336,6 +1336,30 @@ ExportDirectoryEntryRef::getSymbolName(StringRef &Result) const {
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code ExportDirectoryEntryRef::isForwarder(bool &Result) const {
|
||||
const data_directory *DataEntry;
|
||||
if (auto EC = OwningObject->getDataDirectory(COFF::EXPORT_TABLE, DataEntry))
|
||||
return EC;
|
||||
uint32_t RVA;
|
||||
if (auto EC = getExportRVA(RVA))
|
||||
return EC;
|
||||
uint32_t Begin = DataEntry->RelativeVirtualAddress;
|
||||
uint32_t End = DataEntry->RelativeVirtualAddress + DataEntry->Size;
|
||||
Result = (Begin <= RVA && RVA < End);
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
std::error_code ExportDirectoryEntryRef::getForwardTo(StringRef &Result) const {
|
||||
uint32_t RVA;
|
||||
if (auto EC = getExportRVA(RVA))
|
||||
return EC;
|
||||
uintptr_t IntPtr = 0;
|
||||
if (auto EC = OwningObject->getRvaPtr(RVA, IntPtr))
|
||||
return EC;
|
||||
Result = StringRef(reinterpret_cast<const char *>(IntPtr));
|
||||
return std::error_code();
|
||||
}
|
||||
|
||||
bool ImportedSymbolRef::
|
||||
operator==(const ImportedSymbolRef &Other) const {
|
||||
return Entry32 == Other.Entry32 && Entry64 == Other.Entry64
|
||||
|
||||
Reference in New Issue
Block a user