From 3aa626eaf392b06e6b71823ea74e3c7d5733babe Mon Sep 17 00:00:00 2001 From: Alex Vanderveen Date: Sat, 8 Aug 2026 23:02:52 -0400 Subject: [PATCH] fix PSX_BSS section attribute for Mach-O / macOS Apple Clang requires segment,section form; ELF .bss breaks Bomberman World CI. Co-authored-by: Cursor --- runtime/include/psx_bss.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/include/psx_bss.h b/runtime/include/psx_bss.h index 783286e3..d903df9c 100644 --- a/runtime/include/psx_bss.h +++ b/runtime/include/psx_bss.h @@ -3,11 +3,16 @@ * MinGW + LTO has been observed to place multi‑MiB uninitialized globals into * .rdata as literal zeros, bloating release .exe size by ~100+ MiB (e.g. * g_fntrace_ring). Explicit .bss placement keeps them RAM-only on disk. + * + * Mach-O requires "segment,section" (not ELF ".bss"); Apple Clang rejects + * section(".bss") at compile time. */ #ifndef PSXRECOMP_PSX_BSS_H #define PSXRECOMP_PSX_BSS_H -#if defined(__GNUC__) || defined(__clang__) +#if defined(__APPLE__) +#define PSX_BSS __attribute__((section("__DATA,__bss"))) +#elif defined(__GNUC__) || defined(__clang__) #define PSX_BSS __attribute__((section(".bss"))) #elif defined(_MSC_VER) /* MSVC already puts uninitialized globals in .bss by default. */