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@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__ */