diff --git a/lld/Common/DriverDispatcher.cpp b/lld/Common/DriverDispatcher.cpp index fe18c320983fa..34f0ed24b3df0 100644 --- a/lld/Common/DriverDispatcher.cpp +++ b/lld/Common/DriverDispatcher.cpp @@ -45,7 +45,7 @@ static cl::TokenizerCallback getDefaultQuotingStyle() { static bool isPETargetName(StringRef s) { return s == "i386pe" || s == "i386pep" || s == "thumb2pe" || s == "arm64pe" || - s == "arm64ecpe"; + s == "arm64ecpe" || s == "arm64xpe"; } static std::optional isPETarget(llvm::ArrayRef args) { diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 98d48bdfcf311..5098dbd77b4fd 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -448,6 +448,8 @@ bool link(ArrayRef argsArr, llvm::raw_ostream &stdoutOS, add("-machine:arm64"); else if (s == "arm64ecpe") add("-machine:arm64ec"); + else if (s == "arm64xpe") + add("-machine:arm64x"); else error("unknown parameter: -m" + s); } diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index 907d2d87dda5c..618b888504320 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -31,6 +31,12 @@ ARM64EC-SAME: -machine:arm64ec ARM64EC-SAME: -alternatename:__image_base__=__ImageBase ARM64EC-SAME: foo.o +RUN: ld.lld -### foo.o -m arm64xpe 2>&1 | FileCheck -check-prefix=ARM64X %s +ARM64X: -out:a.exe +ARM64X-SAME: -machine:arm64x +ARM64X-SAME: -alternatename:__image_base__=__ImageBase +ARM64X-SAME: foo.o + RUN: ld.lld -### foo.o -m i386pep -shared 2>&1 | FileCheck -check-prefix=SHARED %s RUN: ld.lld -### foo.o -m i386pep --shared 2>&1 | FileCheck -check-prefix=SHARED %s RUN: ld.lld -### foo.o -m i386pep --dll 2>&1 | FileCheck -check-prefix=SHARED %s