diff options
Diffstat (limited to 'lib/Object')
| -rw-r--r-- | lib/Object/COFFObjectFile.cpp | 24 | ||||
| -rw-r--r-- | lib/Object/ELF.cpp | 7 | 
2 files changed, 31 insertions, 0 deletions
| diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 1f2111759a0e..4cd6aff5f17c 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/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 diff --git a/lib/Object/ELF.cpp b/lib/Object/ELF.cpp index 62c27cc427a6..12b772d930ba 100644 --- a/lib/Object/ELF.cpp +++ b/lib/Object/ELF.cpp @@ -91,6 +91,13 @@ StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {        break;      }      break; +  case ELF::EM_WEBASSEMBLY: +    switch (Type) { +#include "llvm/Support/ELFRelocs/WebAssembly.def" +    default: +      break; +    } +    break;    default:      break;    } | 
