mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
This change should fix compatibility with old versions of macOS. Thanks to Gijs Vermeulen for help with debugging and testing this patch. Old versions of libsystem_c.dylib crash while running initializers when the application does not contain a PAGEZERO section. This is probably caused by an incorrect comparison against NULL instead of (void *)-1. Unfortunately, when we just add a PAGEZERO section, we trigger the next bug - no matter if we actually use the page at address (void *)0 or not, it will not be used because the relocation code tries to find a memory hole of size (highAddr - lowAddr) ~ 2GB. We might be able to workaround this issue by manually reordering the sections in the main executable, but for now lets just drop the fixed image base. Please note that this introduces a risk of conflicts with builtin DLLs, which will be resolved in the next patch.