[PATCH] Always -lntdll for all cygming targets [PR113501]

Shengdun Wang euloanty@live.com
Sat Jun 22 21:15:48 GMT 2024


From: Shengdun Wang <uwgghhbcad@gmail.com>

The mcf thread has already linked to -lntdll, and it's confirmed that even Windows 95 includes ntdll.dll. Additionally, if users do not use any functions from ntdll directly, the inclusion of -lntdll does not result in linking to it. Therefore, I propose making it a default toggle to simplify compilation for Windows.

On windows 95, if we do -lntdll, it won't still run. I have tried and confirmed it.

gcc/ChangeLog:

	* config/i386/cygwin.h:
	* config/i386/mingw-w64.h:
	* config/mingw/mingw32.h:

libgcc/ChangeLog:

	* config/i386/t-cygwin:
	* config/i386/t-mingw32:
---
 gcc/config/i386/cygwin.h     | 2 +-
 gcc/config/i386/mingw-w64.h  | 2 +-
 gcc/config/mingw/mingw32.h   | 4 ++--
 libgcc/config/i386/t-cygwin  | 2 +-
 libgcc/config/i386/t-mingw32 | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h
index 63de10c17d4..8655c9cff43 100644
--- a/gcc/config/i386/cygwin.h
+++ b/gcc/config/i386/cygwin.h
@@ -89,7 +89,7 @@ along with GCC; see the file COPYING3.  If not see
   %{mwindows:-lgdi32 -lcomdlg32} \
   %{fvtable-verify=preinit:-lvtv -lpsapi; \
     fvtable-verify=std:-lvtv -lpsapi} \
-  -ladvapi32 -lshell32 -luser32 -lkernel32"
+  -ladvapi32 -lshell32 -luser32 -lkernel32 -lntdll"
 
 /* To implement C++ function replacement we always wrap the cxx
    malloc-like operators.  See N2800 #17.6.4.6 [replacement.functions] */
diff --git a/gcc/config/i386/mingw-w64.h b/gcc/config/i386/mingw-w64.h
index dde26413e22..b3d0c94ca5f 100644
--- a/gcc/config/i386/mingw-w64.h
+++ b/gcc/config/i386/mingw-w64.h
@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3.  If not see
 		 "%{mwindows:-lgdi32 -lcomdlg32} " \
      "%{fvtable-verify=preinit:-lvtv -lpsapi; \
         fvtable-verify=std:-lvtv -lpsapi} " \
-		 "-ladvapi32 -lshell32 -luser32 -lkernel32"
+		 "-ladvapi32 -lshell32 -luser32 -lkernel32 -lntdll"
 
 #undef SPEC_32
 #undef SPEC_64
diff --git a/gcc/config/mingw/mingw32.h b/gcc/config/mingw/mingw32.h
index fa6e307476c..95353394328 100644
--- a/gcc/config/mingw/mingw32.h
+++ b/gcc/config/mingw/mingw32.h
@@ -117,7 +117,7 @@ along with GCC; see the file COPYING3.  If not see
 		 "%{mwindows:-lgdi32 -lcomdlg32} " \
      "%{fvtable-verify=preinit:-lvtv -lpsapi; \
         fvtable-verify=std:-lvtv -lpsapi} " \
-                 "-ladvapi32 -lshell32 -luser32 -lkernel32"
+                 "-ladvapi32 -lshell32 -luser32 -lkernel32 -lntdll"
 
 /* Weak symbols do not get resolved if using a Windows dll import lib.
    Make the unwind registration references strong undefs.  */
@@ -204,7 +204,7 @@ along with GCC; see the file COPYING3.  If not see
    " SHARED_LIBGCC_SPEC " \
    %{mcrtdll=crtdll*:-lcoldname} %{!mcrtdll=crtdll*:-lmoldname} \
    -lmingwex %{!mcrtdll=*:-lmsvcrt} %{mcrtdll=*:-l%*} \
-   -lkernel32 " MCFGTHREAD_SPEC
+   -lkernel32 -lntdll " MCFGTHREAD_SPEC
 
 #undef STARTFILE_SPEC
 #define STARTFILE_SPEC " \
diff --git a/libgcc/config/i386/t-cygwin b/libgcc/config/i386/t-cygwin
index f85ec24220e..4118534e5f6 100644
--- a/libgcc/config/i386/t-cygwin
+++ b/libgcc/config/i386/t-cygwin
@@ -5,7 +5,7 @@ LIBGCC2_INCLUDES += -I$(srcdir)/../winsup/include \
 	-I$(srcdir)/../winsup/cygwin/include
 
 # Cygwin-specific parts of LIB_SPEC
-SHLIB_LC = -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32
+SHLIB_LC = -lcygwin -ladvapi32 -lshell32 -luser32 -lkernel32 -lntdll
 
 # We have already included one of the t-{dw2,sjlj}-eh fragments for EH_MODEL
 SHLIB_EH_EXTENSION = $(subst -dw2,,-$(EH_MODEL))
diff --git a/libgcc/config/i386/t-mingw32 b/libgcc/config/i386/t-mingw32
index bfdef6723ce..aee08b541cf 100644
--- a/libgcc/config/i386/t-mingw32
+++ b/libgcc/config/i386/t-mingw32
@@ -1,2 +1,2 @@
 # MinGW-specific parts of LIB_SPEC
-SHLIB_LC = -lmingwthrd -lmingw32 -lmingwex -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32
+SHLIB_LC = -lmingwthrd -lmingw32 -lmingwex -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lntdll
-- 
2.45.2



More information about the Gcc-patches mailing list