.CRT section is combined into .rdata which doesn't have shared attribute but
read only. If we declare it with shared, it will causes LNK4254 warning.

Also remove the read and write attribute in .tls as this is default.

Signed-off-by: Yang Kun <ikspr...@outlook.com>
---
 mingw-w64-crt/include/sect_attribs.h | 93 +++++++++++++---------------
 1 file changed, 43 insertions(+), 50 deletions(-)

diff --git a/mingw-w64-crt/include/sect_attribs.h b/mingw-w64-crt/include/sect_attribs.h
index 66087d7..7621e04 100644
--- a/mingw-w64-crt/include/sect_attribs.h
+++ b/mingw-w64-crt/include/sect_attribs.h
@@ -6,60 +6,54 @@

 #if defined(_MSC_VER)

-#if defined(_M_IA64) || defined(_M_AMD64)
-#define _ATTRIBUTES
-#else
-#define _ATTRIBUTES shared
-#endif
-
 /* Reference list of existing section for msvcrt.  */
-#pragma section(".CRTMP$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XIA",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XIZ",long,_ATTRIBUTES)
+#pragma section(".CRTMP$XCA", long, read)
+#pragma section(".CRTMP$XCZ", long, read)
+#pragma section(".CRTMP$XIA", long, read)
+#pragma section(".CRTMP$XIZ", long, read)

-#pragma section(".CRTMA$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XIA",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XIZ",long,_ATTRIBUTES)
+#pragma section(".CRTMA$XCA", long, read)
+#pragma section(".CRTMA$XCZ", long, read)
+#pragma section(".CRTMA$XIA", long, read)
+#pragma section(".CRTMA$XIZ", long, read)

-#pragma section(".CRTVT$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTVT$XCZ",long,_ATTRIBUTES)
+#pragma section(".CRTVT$XCA", long, read)
+#pragma section(".CRTVT$XCZ", long, read)

-#pragma section(".CRT$XCA",long,_ATTRIBUTES)
-#pragma section(".CRT$XCAA",long,_ATTRIBUTES)
-#pragma section(".CRT$XCC",long,_ATTRIBUTES)
-#pragma section(".CRT$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XDA",long,_ATTRIBUTES)
-#pragma section(".CRT$XDC",long,_ATTRIBUTES)
-#pragma section(".CRT$XDZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XIA",long,_ATTRIBUTES)
-#pragma section(".CRT$XIAA",long,_ATTRIBUTES)
-#pragma section(".CRT$XIC",long,_ATTRIBUTES)
-#pragma section(".CRT$XID",long,_ATTRIBUTES)
-#pragma section(".CRT$XIY",long,_ATTRIBUTES)
-#pragma section(".CRT$XIZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XLA",long,_ATTRIBUTES)
-#pragma section(".CRT$XLC",long,_ATTRIBUTES)
-#pragma section(".CRT$XLD",long,_ATTRIBUTES)
-#pragma section(".CRT$XLZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XPA",long,_ATTRIBUTES)
-#pragma section(".CRT$XPX",long,_ATTRIBUTES)
-#pragma section(".CRT$XPXA",long,_ATTRIBUTES)
-#pragma section(".CRT$XPZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XTA",long,_ATTRIBUTES)
-#pragma section(".CRT$XTB",long,_ATTRIBUTES)
-#pragma section(".CRT$XTX",long,_ATTRIBUTES)
-#pragma section(".CRT$XTZ",long,_ATTRIBUTES)
-#pragma section(".rdata$T",long,read)
-#pragma section(".rtc$IAA",long,read)
-#pragma section(".rtc$IZZ",long,read)
-#pragma section(".rtc$TAA",long,read)
-#pragma section(".rtc$TZZ",long,read)
+#pragma section(".CRT$XCA", long, read)
+#pragma section(".CRT$XCAA", long, read)
+#pragma section(".CRT$XCC", long, read)
+#pragma section(".CRT$XCZ", long, read)
+#pragma section(".CRT$XDA", long, read)
+#pragma section(".CRT$XDC", long, read)
+#pragma section(".CRT$XDZ", long, read)
+#pragma section(".CRT$XIA", long, read)
+#pragma section(".CRT$XIAA", long, read)
+#pragma section(".CRT$XIC", long, read)
+#pragma section(".CRT$XID", long, read)
+#pragma section(".CRT$XIY", long, read)
+#pragma section(".CRT$XIZ", long, read)
+#pragma section(".CRT$XLA", long, read)
+#pragma section(".CRT$XLC", long, read)
+#pragma section(".CRT$XLD", long, read)
+#pragma section(".CRT$XLZ", long, read)
+#pragma section(".CRT$XPA", long, read)
+#pragma section(".CRT$XPX", long, read)
+#pragma section(".CRT$XPXA", long, read)
+#pragma section(".CRT$XPZ", long, read)
+#pragma section(".CRT$XTA", long, read)
+#pragma section(".CRT$XTB", long, read)
+#pragma section(".CRT$XTX", long, read)
+#pragma section(".CRT$XTZ", long, read)
+#pragma section(".rdata$T", long, read)
+#pragma section(".rtc$IAA", long, read)
+#pragma section(".rtc$IZZ", long, read)
+#pragma section(".rtc$TAA", long, read)
+#pragma section(".rtc$TZZ", long, read)
 /* for tlssup.c: */
-#pragma section(".tls",long,read,write)
-#pragma section(".tls$AAA",long,read,write)
-#pragma section(".tls$ZZZ",long,read,write)
+#pragma section(".tls", long)
+#pragma section(".tls$AAA", long)
+#pragma section(".tls$ZZZ", long)
 #endif /* _MSC_VER */

 #if defined(_MSC_VER)
@@ -69,4 +63,3 @@
 #else
 #error Your compiler is not supported.
 #endif
-
From 26f66d5028ba6af0316da3d474581ea6fa27ef55 Mon Sep 17 00:00:00 2001
From: Yang Kun <ikspr...@outlook.com>
Date: Sat, 17 May 2025 15:51:17 +0800
Subject: [PATCH] crt: Make .CRT section read only

.CRT section is combined into .rdata which doesn't have shared attribute but
read only. If we declare it with shared, it will causes LNK4254 warning.

Also remove the read and write attribute in .tls as this is default.

Signed-off-by: Yang Kun <ikspr...@outlook.com>
---
 mingw-w64-crt/include/sect_attribs.h | 93 +++++++++++++---------------
 1 file changed, 43 insertions(+), 50 deletions(-)

diff --git a/mingw-w64-crt/include/sect_attribs.h 
b/mingw-w64-crt/include/sect_attribs.h
index 66087d7..7621e04 100644
--- a/mingw-w64-crt/include/sect_attribs.h
+++ b/mingw-w64-crt/include/sect_attribs.h
@@ -6,60 +6,54 @@
 
 #if defined(_MSC_VER)
 
-#if defined(_M_IA64) || defined(_M_AMD64)
-#define _ATTRIBUTES
-#else
-#define _ATTRIBUTES shared
-#endif
-
 /* Reference list of existing section for msvcrt.  */
-#pragma section(".CRTMP$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XIA",long,_ATTRIBUTES)
-#pragma section(".CRTMP$XIZ",long,_ATTRIBUTES)
+#pragma section(".CRTMP$XCA", long, read)
+#pragma section(".CRTMP$XCZ", long, read)
+#pragma section(".CRTMP$XIA", long, read)
+#pragma section(".CRTMP$XIZ", long, read)
 
-#pragma section(".CRTMA$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XIA",long,_ATTRIBUTES)
-#pragma section(".CRTMA$XIZ",long,_ATTRIBUTES)
+#pragma section(".CRTMA$XCA", long, read)
+#pragma section(".CRTMA$XCZ", long, read)
+#pragma section(".CRTMA$XIA", long, read)
+#pragma section(".CRTMA$XIZ", long, read)
 
-#pragma section(".CRTVT$XCA",long,_ATTRIBUTES)
-#pragma section(".CRTVT$XCZ",long,_ATTRIBUTES)
+#pragma section(".CRTVT$XCA", long, read)
+#pragma section(".CRTVT$XCZ", long, read)
 
-#pragma section(".CRT$XCA",long,_ATTRIBUTES)
-#pragma section(".CRT$XCAA",long,_ATTRIBUTES)
-#pragma section(".CRT$XCC",long,_ATTRIBUTES)
-#pragma section(".CRT$XCZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XDA",long,_ATTRIBUTES)
-#pragma section(".CRT$XDC",long,_ATTRIBUTES)
-#pragma section(".CRT$XDZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XIA",long,_ATTRIBUTES)
-#pragma section(".CRT$XIAA",long,_ATTRIBUTES)
-#pragma section(".CRT$XIC",long,_ATTRIBUTES)
-#pragma section(".CRT$XID",long,_ATTRIBUTES)
-#pragma section(".CRT$XIY",long,_ATTRIBUTES)
-#pragma section(".CRT$XIZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XLA",long,_ATTRIBUTES)
-#pragma section(".CRT$XLC",long,_ATTRIBUTES)
-#pragma section(".CRT$XLD",long,_ATTRIBUTES)
-#pragma section(".CRT$XLZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XPA",long,_ATTRIBUTES)
-#pragma section(".CRT$XPX",long,_ATTRIBUTES)
-#pragma section(".CRT$XPXA",long,_ATTRIBUTES)
-#pragma section(".CRT$XPZ",long,_ATTRIBUTES)
-#pragma section(".CRT$XTA",long,_ATTRIBUTES)
-#pragma section(".CRT$XTB",long,_ATTRIBUTES)
-#pragma section(".CRT$XTX",long,_ATTRIBUTES)
-#pragma section(".CRT$XTZ",long,_ATTRIBUTES)
-#pragma section(".rdata$T",long,read)
-#pragma section(".rtc$IAA",long,read)
-#pragma section(".rtc$IZZ",long,read)
-#pragma section(".rtc$TAA",long,read)
-#pragma section(".rtc$TZZ",long,read)
+#pragma section(".CRT$XCA", long, read)
+#pragma section(".CRT$XCAA", long, read)
+#pragma section(".CRT$XCC", long, read)
+#pragma section(".CRT$XCZ", long, read)
+#pragma section(".CRT$XDA", long, read)
+#pragma section(".CRT$XDC", long, read)
+#pragma section(".CRT$XDZ", long, read)
+#pragma section(".CRT$XIA", long, read)
+#pragma section(".CRT$XIAA", long, read)
+#pragma section(".CRT$XIC", long, read)
+#pragma section(".CRT$XID", long, read)
+#pragma section(".CRT$XIY", long, read)
+#pragma section(".CRT$XIZ", long, read)
+#pragma section(".CRT$XLA", long, read)
+#pragma section(".CRT$XLC", long, read)
+#pragma section(".CRT$XLD", long, read)
+#pragma section(".CRT$XLZ", long, read)
+#pragma section(".CRT$XPA", long, read)
+#pragma section(".CRT$XPX", long, read)
+#pragma section(".CRT$XPXA", long, read)
+#pragma section(".CRT$XPZ", long, read)
+#pragma section(".CRT$XTA", long, read)
+#pragma section(".CRT$XTB", long, read)
+#pragma section(".CRT$XTX", long, read)
+#pragma section(".CRT$XTZ", long, read)
+#pragma section(".rdata$T", long, read)
+#pragma section(".rtc$IAA", long, read)
+#pragma section(".rtc$IZZ", long, read)
+#pragma section(".rtc$TAA", long, read)
+#pragma section(".rtc$TZZ", long, read)
 /* for tlssup.c: */
-#pragma section(".tls",long,read,write)
-#pragma section(".tls$AAA",long,read,write)
-#pragma section(".tls$ZZZ",long,read,write)
+#pragma section(".tls", long)
+#pragma section(".tls$AAA", long)
+#pragma section(".tls$ZZZ", long)
 #endif /* _MSC_VER */
 
 #if defined(_MSC_VER)
@@ -69,4 +63,3 @@
 #else
 #error Your compiler is not supported.
 #endif
-
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to