On Fri, Oct 31, 2025 at 10:11 AM Bruno Haible via Gnulib discussion list <[email protected]> wrote: > > Sergey Fedorov wrote: > > > The needed information is, again, the set of compiler predefines. Like > > > in the earlier mails. > > > > > > > gcc 4.2 / 10.5.8 > > > > $ gcc -arch ppc -E -dM - < /dev/null | grep -i '\(ppc\|powerpc\)' | sort > > #define _ARCH_PPC 1 > > #define __POWERPC__ 1 > > #define __ppc__ 1 > > > > $ gcc -arch ppc64 -E -dM - < /dev/null | grep -i '\(ppc\|powerpc\)' | sort > > #define _ARCH_PPC 1 > > #define _ARCH_PPC64 1 > > #define __POWERPC__ 1 > > #define __ppc64__ 1 > > Thanks for these info. As it is hard to remember these predefines per > platform, I've added a wiki page about them here: > https://gitweb.git.savannah.gnu.org/gitweb/?p=gnulib/maint-tools.git;a=blob;f=platforms/predefines.txt > and am adjusting the code accordingly.
Also see <https://sourceforge.net/p/predef/wiki/Home/> and <https://sourceforge.net/p/predef/wiki/Architectures/>. [...] > > I have a setup in a VM with Rosetta too, but do not use it for normal > > builds. For the most part Rosetta is okay, may need explicit triple to be > > specified, but I agree, it is not 100% reliable and some software will not > > work at all in Rosetta (SBCL or GHC, for example, and surprisingly 3.x > > versions of Ruby – don’t ask, I have no idea why, since they all work on > > 10.4–10.6 ppc natively). > > SBCL has a JIT compiler. That means, it creates machine instructions > dynamically and then invokes the equivalent of gnulib/lib/jit/cache.h. > That's most likely why Rosetta does not work with it. Memory protections changed with Apple M1's, if I recall correctly. I don't recall the marketing name Apple used for it. Also see <https://developer.apple.com/documentation/browserenginecore/be_memory_inline_jit_restrict_rwx_to_rx_with_witness>. Jeff
