[PATCH] preloader: Extend low memory area a bit

Arkadiusz Hiler ahiler at codeweavers.com
Thu Aug 6 07:02:45 CDT 2020


SDL.dll which is shipped with Doom II on Steam has one of the fixup records
broken which causes relocation to fail on some Linux systems.

On Windows if we reserve that memory area before loading the DLL we experience
similar crash, and yet there are no bug reports for this dosbox.exe + SDL
combo.

The change here extends the low memory area over the DLL's base address (+ some)
to make sure that range is available.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49660
Signed-off-by: Arkadiusz Hiler <ahiler at codeweavers.com>
---
 loader/preloader.c     | 4 ++--
 loader/preloader_mac.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/loader/preloader.c b/loader/preloader.c
index bb16ecd96a..fe7e005320 100644
--- a/loader/preloader.c
+++ b/loader/preloader.c
@@ -114,11 +114,11 @@ static struct wine_preload_info preload_info[] =
 #ifdef __i386__
     { (void *)0x00000000, 0x00010000 },  /* low 64k */
     { (void *)0x00010000, 0x00100000 },  /* DOS area */
-    { (void *)0x00110000, 0x67ef0000 },  /* low memory area */
+    { (void *)0x00110000, 0x68160000 },  /* low memory area */
     { (void *)0x7f000000, 0x03000000 },  /* top-down allocations + shared heap + virtual heap */
 #else
     { (void *)0x000000010000, 0x00100000 },  /* DOS area */
-    { (void *)0x000000110000, 0x67ef0000 },  /* low memory area */
+    { (void *)0x000000110000, 0x68160000 },  /* low memory area */
     { (void *)0x00007ff00000, 0x000f0000 },  /* shared user data */
     { (void *)0x7ffffe000000, 0x01ff0000 },  /* top-down allocations + virtual heap */
 #endif
diff --git a/loader/preloader_mac.c b/loader/preloader_mac.c
index 43dc6b2b7e..6bd88882c6 100644
--- a/loader/preloader_mac.c
+++ b/loader/preloader_mac.c
@@ -73,11 +73,11 @@ static struct wine_preload_info preload_info[] =
     { (void *)0x00000000, 0x00001000 },  /* first page */
     { (void *)0x00001000, 0x0000f000 },  /* low 64k */
     { (void *)0x00010000, 0x00100000 },  /* DOS area */
-    { (void *)0x00110000, 0x67ef0000 },  /* low memory area */
+    { (void *)0x00110000, 0x68160000 },  /* low memory area */
     { (void *)0x7f000000, 0x03000000 },  /* top-down allocations + shared heap + virtual heap */
 #else  /* __i386__ */
     { (void *)0x000000010000, 0x00100000 },  /* DOS area */
-    { (void *)0x000000110000, 0x67ef0000 },  /* low memory area */
+    { (void *)0x000000110000, 0x68160000 },  /* low memory area */
     { (void *)0x00007ff00000, 0x000f0000 },  /* shared user data */
     { (void *)0x7ffef0000000, 0x01ff0000 },  /* top-down allocations + virtual heap */
 #endif /* __i386__ */
-- 
2.28.0




More information about the wine-devel mailing list