diff options
Diffstat (limited to 'llvm/lib/Object/COFFImportFile.cpp')
-rw-r--r-- | llvm/lib/Object/COFFImportFile.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Object/COFFImportFile.cpp b/llvm/lib/Object/COFFImportFile.cpp index 7090d3ca5618..765c12cc076c 100644 --- a/llvm/lib/Object/COFFImportFile.cpp +++ b/llvm/lib/Object/COFFImportFile.cpp @@ -39,6 +39,7 @@ static bool is32bit(MachineTypes Machine) { llvm_unreachable("unsupported machine"); case IMAGE_FILE_MACHINE_ARM64: case IMAGE_FILE_MACHINE_ARM64EC: + case IMAGE_FILE_MACHINE_ARM64X: case IMAGE_FILE_MACHINE_AMD64: return false; case IMAGE_FILE_MACHINE_ARMNT: @@ -57,6 +58,7 @@ static uint16_t getImgRelRelocation(MachineTypes Machine) { return IMAGE_REL_ARM_ADDR32NB; case IMAGE_FILE_MACHINE_ARM64: case IMAGE_FILE_MACHINE_ARM64EC: + case IMAGE_FILE_MACHINE_ARM64X: return IMAGE_REL_ARM64_ADDR32NB; case IMAGE_FILE_MACHINE_I386: return IMAGE_REL_I386_DIR32NB; @@ -86,7 +88,8 @@ static void writeStringTable(std::vector<uint8_t> &B, for (const auto &S : Strings) { B.resize(Pos + S.length() + 1); - strcpy(reinterpret_cast<char *>(&B[Pos]), S.c_str()); + std::copy(S.begin(), S.end(), std::next(B.begin(), Pos)); + B[Pos + S.length()] = 0; Pos += S.length() + 1; } |