Instead of removing the reserved range, we should split the range around the mapped area.
So if the memory looks like this:
``` [-- reserved range --] [preloader] ```
Then, instead of giving up the reserved range, we could simply split the reservation, like this:
``` [-- reserved range --] [-- rsvd 1 --][preloader][-- rsvd 2 --] ```
Note that the preloader *itself* now acts as part of the reservation, as its address won't be reused by mmap(2)—just like other reservations.
See https://gitlab.winehq.org/wine/wine/-/merge_requests/6/diffs?commit_id=02247... for how this could be done.