[PATCH] msvcrt: Add -norelay flag to lldiv definition in spec files.

Paul Gofman pgofman at codeweavers.com
Thu Jan 21 16:48:35 CST 2021


lldiv returns lldiv_t structure (which includes two int64).
In such case the address of return structure is implicitly
passed as the first parameter.

Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
    Supersedes 198481.
    Fixes No Man's Sky crashing with +relay trace.

 .../api-ms-win-crt-utility-l1-1-0.spec                          | 2 +-
 dlls/msvcr100/msvcr100.spec                                     | 2 +-
 dlls/msvcr110/msvcr110.spec                                     | 2 +-
 dlls/msvcr120/msvcr120.spec                                     | 2 +-
 dlls/msvcr120_app/msvcr120_app.spec                             | 2 +-
 dlls/ucrtbase/ucrtbase.spec                                     | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/api-ms-win-crt-utility-l1-1-0/api-ms-win-crt-utility-l1-1-0.spec b/dlls/api-ms-win-crt-utility-l1-1-0/api-ms-win-crt-utility-l1-1-0.spec
index c81c3d42127..584e61dd652 100644
--- a/dlls/api-ms-win-crt-utility-l1-1-0/api-ms-win-crt-utility-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-utility-l1-1-0/api-ms-win-crt-utility-l1-1-0.spec
@@ -22,7 +22,7 @@
 @ cdecl labs(long) ucrtbase.labs
 @ cdecl -ret64 ldiv(long long) ucrtbase.ldiv
 @ cdecl -ret64 llabs(int64) ucrtbase.llabs
-@ cdecl lldiv(int64 int64) ucrtbase.lldiv
+@ cdecl -norelay lldiv(int64 int64) ucrtbase.lldiv
 @ cdecl qsort(ptr long long ptr) ucrtbase.qsort
 @ cdecl qsort_s(ptr long long ptr ptr) ucrtbase.qsort_s
 @ cdecl rand() ucrtbase.rand
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index b15a6219c52..6af92d7ea6f 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1733,7 +1733,7 @@
 @ cdecl ldexp(double long)
 @ cdecl -ret64 ldiv(long long)
 @ cdecl -ret64 llabs(int64)
-@ cdecl lldiv(int64 int64)
+@ cdecl -norelay lldiv(int64 int64)
 @ cdecl localeconv()
 @ cdecl log(double)
 @ cdecl -arch=!i386 logf(float)
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec
index c4782b5977b..45d8e2b3507 100644
--- a/dlls/msvcr110/msvcr110.spec
+++ b/dlls/msvcr110/msvcr110.spec
@@ -2091,7 +2091,7 @@
 @ cdecl ldexp(double long)
 @ cdecl -ret64 ldiv(long long)
 @ cdecl -ret64 llabs(int64)
-@ cdecl lldiv(int64 int64)
+@ cdecl -norelay lldiv(int64 int64)
 @ cdecl localeconv()
 @ cdecl log(double)
 @ cdecl -arch=!i386 logf(float)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index b8ba61a2e8c..91be9c65d2d 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -2247,7 +2247,7 @@
 @ cdecl lgammaf(float)
 @ cdecl lgammal(double) lgamma
 @ cdecl -ret64 llabs(int64)
-@ cdecl lldiv(int64 int64)
+@ cdecl -norelay lldiv(int64 int64)
 @ cdecl -ret64 llrint(double)
 @ cdecl -ret64 llrintf(float)
 @ cdecl -ret64 llrintl(double) llrint
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index b99bb2ee614..f5d6cde1cac 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -1910,7 +1910,7 @@
 @ cdecl lgammaf(float) msvcr120.lgammaf
 @ cdecl lgammal(double) msvcr120.lgammal
 @ cdecl -ret64 llabs(int64) msvcr120.llabs
-@ cdecl lldiv(int64 int64) msvcr120.lldiv
+@ cdecl -norelay lldiv(int64 int64) msvcr120.lldiv
 @ cdecl -ret64 llrint(double) msvcr120.llrint
 @ cdecl -ret64 llrintf(float) msvcr120.llrintf
 @ cdecl -ret64 llrintl(double) msvcr120.llrintl
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index b1d6cf992b4..0a8d74521f5 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -2381,7 +2381,7 @@
 @ cdecl lgammaf(float)
 @ cdecl lgammal(double) lgamma
 @ cdecl -ret64 llabs(int64)
-@ cdecl lldiv(int64 int64)
+@ cdecl -norelay lldiv(int64 int64)
 @ cdecl -ret64 llrint(double)
 @ cdecl -ret64 llrintf(float)
 @ cdecl -ret64 llrintl(double) llrint
-- 
2.29.2




More information about the wine-devel mailing list