| //===------------------ COFF.cpp - COFF format utilities ------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "llvm/ExecutionEngine/Orc/COFF.h" | |
| #include "llvm/Object/Binary.h" | |
| #define DEBUG_TYPE "orc" | |
| namespace llvm::orc { | |
| Expected<bool> COFFImportFileScanner::operator()(object::Archive &A, | |
| MemoryBufferRef MemberBuf, | |
| size_t Index) const { | |
| // Try to build a binary for the member. | |
| auto Bin = object::createBinary(MemberBuf); | |
| if (!Bin) { | |
| // If we can't then consume the error and return false (i.e. not loadable). | |
| consumeError(Bin.takeError()); | |
| return false; | |
| } | |
| // If this is a COFF import file then handle it and return false (not | |
| // loadable). | |
| if ((*Bin)->isCOFFImportFile()) { | |
| ImportedDynamicLibraries.insert((*Bin)->getFileName().str()); | |
| return false; | |
| } | |
| // Otherwise the member is loadable (at least as far as COFFImportFileScanner | |
| // is concerned), so return true; | |
| return true; | |
| } | |
| } // namespace llvm::orc |