Subject: bug#50666: 28.0.50; Fix native compilation on Cygwin

From: Ken Brown <[email-masked]>
Date: Sat, 18 Sep 2021 16:46:42 -0400

Building --with-native-compilation on 32-bit Cygwin currently fails with
errors like the following:

child_info_fork::abort: address space needed by
'simple-fab5b0cf-aaf18a4e.eln' (0x5910000) is already occupied

This happens because shared libraries (usually DLLs, but also *.eln
files in this case) often need to be rebased in order for Cygwin's fork
implementation to work.  See

   https://cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process-problems

for an explanation.  It's mostly an issue in the 32-bit case because of
the limited address space, but on rare occasions it can be a problem on
64-bit Cygwin also.

For shared libraries installed in standard places, Cygwin normally takes
care of the rebasing automatically.  But if libraries are created in the
course of a build and then used later in the build, an "ephemeral" rebase
might be necessary.  This is the case for the *.eln libraries produced
during the emacs build.

In a followup to this message, I'll submit a patch that does this
ephemeral rebase and fixes the build problem.

Note: The build will not actually be convenient to use on 32-bit Cygwin, because 
sooner or later the *.eln files in ~/.emacs.d/eln-cache will also need to be 
rebased.  I hope to address this in future patches.

Ken