--
Best regards,
LIU Hao
From b8b2b024cde9fd66b2280cba7ed995771882b366 Mon Sep 17 00:00:00 2001
From: LIU Hao <lh_mo...@126.com>
Date: Mon, 15 Apr 2024 23:30:50 +0800
Subject: [PATCH 1/2] crt/xaudio2_9: Fix export names of `X3DAudioCalculate`
 and `X3DAudioInitialize`

These are not `__stdcall` functions, but `__cdecl` ones.

N.B. it was `__stdcall` in X3DAUDIO1_2.

Signed-off-by: LIU Hao <lh_mo...@126.com>
---
 mingw-w64-crt/lib32/xaudio2_9.def | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mingw-w64-crt/lib32/xaudio2_9.def 
b/mingw-w64-crt/lib32/xaudio2_9.def
index b283fab53..610271dc5 100644
--- a/mingw-w64-crt/lib32/xaudio2_9.def
+++ b/mingw-w64-crt/lib32/xaudio2_9.def
@@ -9,8 +9,8 @@ XAudio2Create@12
 CreateAudioReverb@4
 CreateAudioVolumeMeter@4
 CreateFX@0
-X3DAudioCalculate@0
-X3DAudioInitialize@0
+X3DAudioCalculate
+X3DAudioInitialize
 CreateAudioReverbV2_8@4
 XAudio2CreateV2_9@12
 XAudio2CreateWithVersionInfo@16
-- 
2.44.0

From 357c980c8a7b472a8e115b7af942531be915242b Mon Sep 17 00:00:00 2001
From: LIU Hao <lh_mo...@126.com>
Date: Mon, 15 Apr 2024 23:08:08 +0800
Subject: [PATCH 2/2] crt: Fix some symbols with duplicate stdcall suffixes

Some of these functions, such as `ConvertAtJobsToTasks`, are exported with both
undecorated and decorated names, respectively, `ConvertAtJobsToTasks` and
`_ConvertAtJobsToTasks@0`. The decorated names are almost useless for C code
anyway and are removed.

Some other stdcall functions, such as `__fls_getvalue`, are only exported with
decorated names. We have the macro `ADD_UNDERSCORE()` for them.

This fixes errors like

   #include <stdio.h>
   #include <windows.h>

   /* This was `__stdcall` in X3DAUDIO1_2.DLL, and changed to `__cdecl` later.  
*/
   __declspec(dllimport) void __stdcall X3DAudioCalculate(void*, void*, void*, 
UINT, void*);

   int main(void)
     {
       printf("X3DAudioCalculate = %p\n", (void*)(INT_PTR) X3DAudioCalculate);
     }

which used to result in

   test.c:(.text+0xf): undefined reference to `_imp__X3DAudioCalculate@20'

Signed-off-by: LIU Hao <lh_mo...@126.com>
---
 mingw-w64-crt/def-include/func.def.in          |  3 +++
 mingw-w64-crt/def-include/msvcrt-common.def.in |  3 ---
 mingw-w64-crt/lib32/mstask.def                 | 13 -------------
 mingw-w64-crt/lib32/msvcr100.def.in            |  4 ++--
 mingw-w64-crt/lib32/msvcr90.def.in             |  4 ++--
 mingw-w64-crt/lib32/msvcr90d.def.in            |  4 ++--
 mingw-w64-crt/lib32/msvcrt20.def.in            |  2 +-
 mingw-w64-crt/lib32/t2embed.def                | 11 -----------
 mingw-w64-crt/lib32/usbd.def                   | 12 +++---------
 mingw-w64-crt/lib32/x3daudio1_2.def            | 11 -----------
 mingw-w64-crt/lib32/x3daudio1_2.def.in         |  6 ++++++
 11 files changed, 19 insertions(+), 54 deletions(-)
 delete mode 100644 mingw-w64-crt/lib32/x3daudio1_2.def
 create mode 100644 mingw-w64-crt/lib32/x3daudio1_2.def.in

diff --git a/mingw-w64-crt/def-include/func.def.in 
b/mingw-w64-crt/def-include/func.def.in
index 58cc36d86..c67b6efe1 100644
--- a/mingw-w64-crt/def-include/func.def.in
+++ b/mingw-w64-crt/def-include/func.def.in
@@ -55,3 +55,6 @@
 #ifndef F_NON_I386
 #define F_NON_I386(x)
 #endif
+
+#define ADD_UNDERSCORE(symbol) symbol == _ ## symbol
+#define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol
diff --git a/mingw-w64-crt/def-include/msvcrt-common.def.in 
b/mingw-w64-crt/def-include/msvcrt-common.def.in
index 9728b5ab8..80ce5e9fe 100644
--- a/mingw-w64-crt/def-include/msvcrt-common.def.in
+++ b/mingw-w64-crt/def-include/msvcrt-common.def.in
@@ -1,8 +1,5 @@
 #include "func.def.in"
 
-#define ADD_UNDERSCORE(symbol) symbol == _ ## symbol
-#define ADD_DOUBLE_UNDERSCORE(symbol) symbol == __ ## symbol
-
 ADD_DOUBLE_UNDERSCORE(iscsymf)
 ADD_DOUBLE_UNDERSCORE(iscsym)
 ADD_DOUBLE_UNDERSCORE(isascii)
diff --git a/mingw-w64-crt/lib32/mstask.def b/mingw-w64-crt/lib32/mstask.def
index 2cc5298e7..ba8f873a0 100644
--- a/mingw-w64-crt/lib32/mstask.def
+++ b/mingw-w64-crt/lib32/mstask.def
@@ -18,16 +18,3 @@ SAGetNSAccountInformation@12
 SASetAccountInformation@20
 SASetNSAccountInformation@12
 SetNetScheduleAccountInformation@12
-_ConvertAtJobsToTasks@0@0
-_DllCanUnloadNow@0@0
-_DllGetClassObject@12@12
-_GetNetScheduleAccountInformation@12@12
-_NetrJobAdd@12@12
-_NetrJobDel@12@12
-_NetrJobEnum@20@20
-_NetrJobGetInfo@12@12
-_SAGetAccountInformation@16@16
-_SAGetNSAccountInformation@12@12
-_SASetAccountInformation@20@20
-_SASetNSAccountInformation@12@12
-_SetNetScheduleAccountInformation@12@12
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in 
b/mingw-w64-crt/lib32/msvcr100.def.in
index e2e0e18c7..b802b288c 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -626,8 +626,8 @@ __daylight
 __dllonexit
 __doserrno
 __dstbias
-___fls_getvalue@4@4
-___fls_setvalue@8@8
+ADD_UNDERSCORE(__fls_getvalue@4)
+ADD_UNDERSCORE(__fls_setvalue@8)
 __fpecode
 __free_locale
 __get_current_locale
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in 
b/mingw-w64-crt/lib32/msvcr90.def.in
index 4424adfe5..1bc161a5f 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -230,8 +230,8 @@ __daylight
 __dllonexit
 __doserrno
 __dstbias
-___fls_getvalue@4@4
-___fls_setvalue@8@8
+ADD_UNDERSCORE(__fls_getvalue@4)
+ADD_UNDERSCORE(__fls_setvalue@8)
 __fpecode
 __free_locale
 __get_app_type
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in 
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 2835301f0..61c63b65b 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -270,8 +270,8 @@ __daylight
 __dllonexit
 __doserrno
 __dstbias
-___fls_getvalue@4@4
-___fls_setvalue@8@8
+ADD_UNDERSCORE(__fls_getvalue@4)
+ADD_UNDERSCORE(__fls_setvalue@8)
 __fpecode
 __free_locale
 __get_app_type
diff --git a/mingw-w64-crt/lib32/msvcrt20.def.in 
b/mingw-w64-crt/lib32/msvcrt20.def.in
index d2702db90..fc2965421 100644
--- a/mingw-w64-crt/lib32/msvcrt20.def.in
+++ b/mingw-w64-crt/lib32/msvcrt20.def.in
@@ -1168,7 +1168,7 @@ _rotl
 _rotr
 _scalb
 _searchenv
-__seh_longjmp_unwind@4@4
+ADD_UNDERSCORE(_seh_longjmp_unwind@4)
 _seterrormode
 _setjmp
 _setjmp3
diff --git a/mingw-w64-crt/lib32/t2embed.def b/mingw-w64-crt/lib32/t2embed.def
index f186061ee..77930644a 100644
--- a/mingw-w64-crt/lib32/t2embed.def
+++ b/mingw-w64-crt/lib32/t2embed.def
@@ -11,17 +11,6 @@ TTIsEmbeddingEnabled@8
 TTIsEmbeddingEnabledForFacename@8
 TTLoadEmbeddedFont@40
 TTRunValidationTests@8
-_TTCharToUnicode@24@24
-_TTDeleteEmbeddedFont@12@12
-_TTEmbedFont@44@44
-_TTEmbedFontFromFileA@52@52
-_TTEnableEmbeddingForFacename@8@8
-_TTGetEmbeddedFontInfo@28@28
-_TTGetEmbeddingType@8@8
-_TTIsEmbeddingEnabled@8@8
-_TTIsEmbeddingEnabledForFacename@8@8
-_TTLoadEmbeddedFont@40@40
-_TTRunValidationTests@8@8
 TTEmbedFontEx@44
 TTRunValidationTestsEx@8
 TTGetNewFontName@20
diff --git a/mingw-w64-crt/lib32/usbd.def b/mingw-w64-crt/lib32/usbd.def
index 1b52c7c99..b14a76662 100644
--- a/mingw-w64-crt/lib32/usbd.def
+++ b/mingw-w64-crt/lib32/usbd.def
@@ -5,16 +5,15 @@
 ;
 LIBRARY "USBD.SYS"
 EXPORTS
-; USBD_CreateConfigurationRequestEx@8
-; USBD_ParseConfigurationDescriptorEx@28
-; USBD_ParseDescriptors@16
+USBD_CreateConfigurationRequestEx@8
+USBD_ParseConfigurationDescriptorEx@28
+USBD_ParseDescriptors@16
 DllInitialize@4
 DllUnload@0
 USBD_AllocateDeviceName@4
 USBD_CalculateUsbBandwidth@12
 USBD_CompleteRequest@8
 USBD_CreateConfigurationRequest@8
-; _USBD_CreateConfigurationRequestEx@8@8
 USBD_CreateDevice@20
 USBD_Debug_GetHeap@16
 USBD_Debug_LogEntry@16
@@ -30,8 +29,6 @@ USBD_GetUSBDIVersion@4
 USBD_InitializeDevice@24
 USBD_MakePdoName@8
 USBD_ParseConfigurationDescriptor@12
-; _USBD_ParseConfigurationDescriptorEx@28@28
-; _USBD_ParseDescriptors@16@16
 USBD_QueryBusTime@8
 USBD_RegisterHcDeviceCapabilities@12
 USBD_RegisterHcFilter@8
@@ -40,6 +37,3 @@ USBD_RemoveDevice@12
 USBD_RestoreDevice@12
 USBD_SetSuspendPowerState@8
 USBD_WaitDeviceMutex@4
-USBD_CreateConfigurationRequestEx@8==_USBD_CreateConfigurationRequestEx@8
-USBD_ParseConfigurationDescriptorEx@28==_USBD_ParseConfigurationDescriptorEx@28
-USBD_ParseDescriptors@16==_USBD_ParseDescriptors@16
diff --git a/mingw-w64-crt/lib32/x3daudio1_2.def 
b/mingw-w64-crt/lib32/x3daudio1_2.def
deleted file mode 100644
index fb34ad0d0..000000000
--- a/mingw-w64-crt/lib32/x3daudio1_2.def
+++ /dev/null
@@ -1,11 +0,0 @@
-;
-; Definition file of X3DAudio1_2.dll
-; Automatic generated by gendef
-; written by Kai Tietz 2008
-;
-LIBRARY "X3DAudio1_2.dll"
-EXPORTS
-;_X3DAudioCalculate@20@20
-;_X3DAudioInitialize@12@12
-_X3DAudioCalculate@20 == _X3DAudioCalculate@20
-_X3DAudioInitialize@12 == _X3DAudioInitialize@12
diff --git a/mingw-w64-crt/lib32/x3daudio1_2.def.in 
b/mingw-w64-crt/lib32/x3daudio1_2.def.in
new file mode 100644
index 000000000..ce617f9c9
--- /dev/null
+++ b/mingw-w64-crt/lib32/x3daudio1_2.def.in
@@ -0,0 +1,6 @@
+#include "func.def.in"
+
+LIBRARY "X3DAudio1_2.dll"
+EXPORTS
+ADD_UNDERSCORE(X3DAudioCalculate@20)
+ADD_UNDERSCORE(X3DAudioInitialize@12)
-- 
2.44.0

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to