* --disable-high-entropy-va is not accepted on 32-bit ld, it should be added only on 64-bit. * New Cygwin linker driver was not passing --large-address-aware on 32-bit * Microsoft-style calling convention name mangling (such as stdcall Name@N) was disabled on Cygwin, regression from 21.1. This would have been an issue on x86_64 as well with vectorcall I think
89 lines
3.8 KiB
Diff
89 lines
3.8 KiB
Diff
diff -ur a/clang/lib/Driver/ToolChains/Cygwin.cpp b/clang/lib/Driver/ToolChains/Cygwin.cpp
|
|
--- a/clang/lib/Driver/ToolChains/Cygwin.cpp 2025-08-26 16:56:22.501734100 -0700
|
|
+++ b/clang/lib/Driver/ToolChains/Cygwin.cpp 2025-08-26 16:57:41.547408900 -0700
|
|
@@ -218,7 +218,7 @@
|
|
else
|
|
CmdArgs.push_back("-Bdynamic");
|
|
|
|
- CmdArgs.push_back("--dll-search-prefix=cyg");
|
|
+ CmdArgs.push_back("--dll-search-prefix=msys-");
|
|
if (Args.hasArg(options::OPT_rdynamic))
|
|
CmdArgs.push_back("--export-all-symbols");
|
|
if (!Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_mdll)) {
|
|
@@ -245,8 +245,8 @@
|
|
if (Args.hasArg(options::OPT_mdll) || IsShared) {
|
|
CmdArgs.push_back("-e");
|
|
CmdArgs.push_back(ToolChain.getArch() == llvm::Triple::x86
|
|
- ? "__cygwin_dll_entry@12"
|
|
- : "_cygwin_dll_entry");
|
|
+ ? "__msys_dll_entry@12"
|
|
+ : "_msys_dll_entry");
|
|
CmdArgs.push_back("--enable-auto-image-base");
|
|
}
|
|
|
|
@@ -373,7 +373,7 @@
|
|
CmdArgs.push_back("-lc");
|
|
|
|
// Cygwin specific
|
|
- CmdArgs.push_back("-lcygwin");
|
|
+ CmdArgs.push_back("-lmsys-2.0");
|
|
if (Args.hasArg(options::OPT_mwindows)) {
|
|
CmdArgs.push_back("-lgdi32");
|
|
CmdArgs.push_back("-lcomdlg32");
|
|
diff -ur a/clang/test/Driver/cygwin.cpp b/clang/test/Driver/cygwin.cpp
|
|
--- a/clang/test/Driver/cygwin.cpp 2025-08-26 16:56:25.478289600 -0700
|
|
+++ b/clang/test/Driver/cygwin.cpp 2025-08-26 16:58:43.270615700 -0700
|
|
@@ -29,7 +29,7 @@
|
|
// RUN: -shared 2>&1 | FileCheck --check-prefix=CHECK-SHARED %s
|
|
// CHECK-SHARED: "{{.*}}ld{{(\.exe)?}}"
|
|
// CHECK-SHARED-SAME: "--shared"
|
|
-// CHECK-SHARED-SAME: "-e" "__cygwin_dll_entry@12"
|
|
+// CHECK-SHARED-SAME: "-e" "__msys_dll_entry@12"
|
|
|
|
// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as -fuse-ld=ld \
|
|
// RUN: --gcc-toolchain=%S/Inputs/basic_cross_cygwin_tree/usr \
|
|
@@ -70,7 +70,7 @@
|
|
// RUN: -shared 2>&1 | FileCheck --check-prefix=CHECK-64-SHARED %s
|
|
// CHECK-64-SHARED: "{{.*}}ld{{(\.exe)?}}"
|
|
// CHECK-64-SHARED-SAME: "--shared"
|
|
-// CHECK-64-SHARED-SAME: "-e" "_cygwin_dll_entry"
|
|
+// CHECK-64-SHARED-SAME: "-e" "_msys_dll_entry"
|
|
|
|
// RUN: %clang -### -o %t %s 2>&1 -no-integrated-as -fuse-ld=ld \
|
|
// RUN: --gcc-toolchain=%S/Inputs/basic_cross_cygwin_tree/usr \
|
|
@@ -83,13 +83,13 @@
|
|
// RUN: -mdll 2>&1 | FileCheck --check-prefix=CHECK-64-DLL %s
|
|
// CHECK-64-DLL: "{{.*}}ld{{(\.exe)?}}"
|
|
// CHECK-64-DLL-SAME: "--dll"
|
|
-// CHECK-64-DLL-SAME: "-e" "_cygwin_dll_entry"
|
|
+// CHECK-64-DLL-SAME: "-e" "_msys_dll_entry"
|
|
|
|
// RUN: %clang -### %s --target=i686-pc-cygwin --sysroot=%S/Inputs/basic_cygwin_tree \
|
|
// RUN: -mdll 2>&1 | FileCheck --check-prefix=CHECK-DLL %s
|
|
// CHECK-DLL: "{{.*}}ld{{(\.exe)?}}"
|
|
// CHECK-DLL-SAME: "--dll"
|
|
-// CHECK-DLL-SAME: "-e" "__cygwin_dll_entry@12"
|
|
+// CHECK-DLL-SAME: "-e" "__msys_dll_entry@12"
|
|
|
|
// RUN: %clang -### %s --target=x86_64-pc-cygwin --sysroot=%S/Inputs/basic_cygwin_tree \
|
|
// RUN: -mwindows 2>&1 | FileCheck --check-prefix=CHECK-64-WINDOWS %s
|
|
diff -ur a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h
|
|
--- a/clang/lib/Basic/Targets/X86.h 2025-08-27 11:34:52.422511100 -0700
|
|
+++ b/clang/lib/Basic/Targets/X86.h 2025-08-27 11:36:40.870706300 -0700
|
|
@@ -661,6 +661,7 @@
|
|
Builder.defineMacro("_X86_");
|
|
Builder.defineMacro("__CYGWIN__");
|
|
Builder.defineMacro("__CYGWIN32__");
|
|
+ Builder.defineMacro("__MSYS__");
|
|
addCygMingDefines(Opts, Builder);
|
|
DefineStd(Builder, "unix", Opts);
|
|
if (Opts.CPlusPlus)
|
|
@@ -994,6 +995,7 @@
|
|
Builder.defineMacro("__x86_64__");
|
|
Builder.defineMacro("__CYGWIN__");
|
|
Builder.defineMacro("__CYGWIN64__");
|
|
+ Builder.defineMacro("__MSYS__");
|
|
addCygMingDefines(Opts, Builder);
|
|
DefineStd(Builder, "unix", Opts);
|
|
if (Opts.CPlusPlus)
|