Prior to Apple releasing M1 Macs, you could run 32 bit address space code (using 4 byte pointers) on 64 bit Macs by using the pagezero_size option to place the code below the default start point of 4Gb. E.g. for a Hello World program:
c++ hello.cpp -o hello -pagezero_size 0x400000
Running otool -l hello confirms that the code starts at 0x400000.
If you try to do this on an M1 Mac, when you run the executable you get:
zsh: killed ./hello
When run under lldb you get:
error: Malformed Mach-o file
So it looks like it is not possible execute 32 bit address space code on an M1 chip using the pagezero_size option. Does anyone know any other way of getting this to work, or is it no longer possible?