diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-12-20 14:16:56 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-12-20 14:16:56 +0000 |
| commit | 2cab237b5dbfe1b3e9c7aa7a3c02d2b98fcf7462 (patch) | |
| tree | 524fe828571f81358bba62fdb6d04c6e5e96a2a4 /contrib/llvm/lib/Object/COFFImportFile.cpp | |
| parent | 6c7828a2807ea5e50c79ca42dbedf2b589ce63b2 (diff) | |
| parent | 044eb2f6afba375a914ac9d8024f8f5142bb912e (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/Object/COFFImportFile.cpp')
| -rw-r--r-- | contrib/llvm/lib/Object/COFFImportFile.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/contrib/llvm/lib/Object/COFFImportFile.cpp b/contrib/llvm/lib/Object/COFFImportFile.cpp index ff039463d08c..93631f1ad811 100644 --- a/contrib/llvm/lib/Object/COFFImportFile.cpp +++ b/contrib/llvm/lib/Object/COFFImportFile.cpp @@ -20,8 +20,6 @@ #include "llvm/Support/Path.h" #include <cstdint> -#include <map> -#include <set> #include <string> #include <vector> @@ -36,6 +34,7 @@ static bool is32bit(MachineTypes Machine) { switch (Machine) { default: llvm_unreachable("unsupported machine"); + case IMAGE_FILE_MACHINE_ARM64: case IMAGE_FILE_MACHINE_AMD64: return false; case IMAGE_FILE_MACHINE_ARMNT: @@ -52,6 +51,8 @@ static uint16_t getImgRelRelocation(MachineTypes Machine) { return IMAGE_REL_AMD64_ADDR32NB; case IMAGE_FILE_MACHINE_ARMNT: return IMAGE_REL_ARM_ADDR32NB; + case IMAGE_FILE_MACHINE_ARM64: + return IMAGE_REL_ARM64_ADDR32NB; case IMAGE_FILE_MACHINE_I386: return IMAGE_REL_I386_DIR32NB; } @@ -187,7 +188,7 @@ ObjectFactory::createImportDescriptor(std::vector<uint8_t> &Buffer) { (ImportName.size() + 1)), u32(NumberOfSymbols), u16(0), - u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : 0), + u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : C_Invalid), }; append(Buffer, Header); @@ -323,7 +324,7 @@ ObjectFactory::createNullImportDescriptor(std::vector<uint8_t> &Buffer) { sizeof(coff_import_directory_table_entry)), u32(NumberOfSymbols), u16(0), - u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : 0), + u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : C_Invalid), }; append(Buffer, Header); @@ -386,7 +387,7 @@ NewArchiveMember ObjectFactory::createNullThunk(std::vector<uint8_t> &Buffer) { VASize), u32(NumberOfSymbols), u16(0), - u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : 0), + u16(is32bit(Machine) ? IMAGE_FILE_32BIT_MACHINE : C_Invalid), }; append(Buffer, Header); @@ -555,9 +556,9 @@ NewArchiveMember ObjectFactory::createWeakExternal(StringRef Sym, return {MemoryBufferRef(StringRef(Buf, Buffer.size()), ImportName)}; } -std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, - ArrayRef<COFFShortExport> Exports, - MachineTypes Machine, bool MakeWeakAliases) { +Error writeImportLibrary(StringRef ImportName, StringRef Path, + ArrayRef<COFFShortExport> Exports, + MachineTypes Machine, bool MakeWeakAliases) { std::vector<NewArchiveMember> Members; ObjectFactory OF(llvm::sys::path::filename(ImportName), Machine); @@ -593,19 +594,16 @@ std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, ? SymbolName : replace(SymbolName, E.Name, E.ExtName); - if (!Name) { - return errorToErrorCode(Name.takeError()); - } + if (!Name) + return Name.takeError(); Members.push_back( OF.createShortImport(*Name, E.Ordinal, ImportType, NameType)); } - std::pair<StringRef, std::error_code> Result = - writeArchive(Path, Members, /*WriteSymtab*/ true, object::Archive::K_GNU, - /*Deterministic*/ true, /*Thin*/ false); - - return Result.second; + return writeArchive(Path, Members, /*WriteSymtab*/ true, + object::Archive::K_GNU, + /*Deterministic*/ true, /*Thin*/ false); } } // namespace object |
