diff options
Diffstat (limited to 'contrib/llvm/lib/Object/COFFObjectFile.cpp')
| -rw-r--r-- | contrib/llvm/lib/Object/COFFObjectFile.cpp | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/contrib/llvm/lib/Object/COFFObjectFile.cpp b/contrib/llvm/lib/Object/COFFObjectFile.cpp index 1f2111759a0e..4cd6aff5f17c 100644 --- a/contrib/llvm/lib/Object/COFFObjectFile.cpp +++ b/contrib/llvm/lib/Object/COFFObjectFile.cpp @@ -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 | 
