20

macOS Catalina is said to have dropped support for 32-bit apps. It’s not clear how much support is dropped.

Is there any supported way for a 64-bit app to request the kernel to create a 32-bit code segment?

0

3 Answers 3

18

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

2
6

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.)

1
  • I wonder what they did to get around SIP...
    – fabspro
    Commented Apr 14, 2022 at 11:30
-3

Unfortunately the answer is just flat no. As stated here and here Apple started requiring AppStore apps to be 64 bit in 2018. They have been working on this for a while and with Catalina they are finally shutting the door entirely.

Edit: This sheds more light on app development.

6
  • 2
    You're talking about the organizational side of things which is what all the news are about, but the question is purely technical.
    – Grishka
    Commented Jul 30, 2019 at 20:42
  • @Grishka What are you talking about? There is only one side of this question, the technical side. Apps either work or they don't. What organizational side is there? Commented Jul 31, 2019 at 0:53
  • 1
    32-bit apps don't work as is on an unmodified OS. There's a lot of components to 32-bit support on a 64-bit OS. The question is how much of those are removed, if any, and whether it is feasible/possible at all to restore this support by modifying the system.
    – Grishka
    Commented Jul 31, 2019 at 10:19
  • 7
    This answer is wrong and unhelpful. OP essentially asks 1) Does XNU still recognize 32-bit mach-O? 2) Does XNU still recognize fat binaries? 3) Does dyld still recognize 32-bit mach-O? 4) Does dyld still recognize fat binaries? 5) Is a fat libSystem still shipped in Catalina? 6) How many other fat binaries does Catalina still ship? None of these were answered. Commented Sep 11, 2019 at 15:19
  • 2
    "No" is not an answer for a "how much" question ;-). Even if the official stance by Apple is that 32-bit support is dropped entirely, the reality is that there is still 32-bit support inside the OS which can be enabled back by advanced users for the time being.
    – OMA
    Commented Feb 25, 2020 at 9:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .