How much of 32-bit support is dropped in macOS Catalina?
netkas has experimented with this here. It seems like Apple has not removed 32-bit capability from the Darwin kernel itself, but merely disabled it as well as removing all the 32-bit libraries from the system.
To re-enable 32-bit processing from the kernel, just disable Apple's disabling function by adding no32exec=0
to your boot-args (sudo nvram boot-args="no32exec=0"
if SIP is disabled, if not run the same command from Recovery mode).
To get the 32-bit libraries back, just copy them from Mojave
Sources: Bringing back 32-bit apps to life
Thanks to Ken Thomases from CodeWeavers, who has posted quite a bit of information on wine-devel
mailing list on how CrossOver runs Win32 apps on macOS Catalina, we now know that Apple enabled i386_set_ldt
syscall for 64-bit processes.
So, aside from doing hack described in Max Coplan's answer, it's possible to create 32-bit segments in 64-bit processes.
An excerpt from Ken's mail:
Speaking of code segments, the big thing that Catalina provides that enables this all to work is the ability to create 32-bit code segments in a 64-bit process. For that, they enabled the use of i386_set_ldt() in 64-bit processes. The big caveat though, is that this functionality is restricted by System Integrity Protection (SIP). For now, your best bet to get this working for yourself is to disable SIP. (CrossOver doesn't require that, but the mechanism by which we accomplish that is in flux internally to Apple. When it settles down, I'll update this thread.)