Files
Alex Vanderveen 3aa626eaf3 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 <cursoragent@cursor.com>
2026-08-08 23:02:52 -04:00

25 lines
830 B
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* psx_bss.h — force large zero-init objects into BSS (not stored in the PE).
*
* 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(__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. */
#define PSX_BSS
#else
#define PSX_BSS
#endif
#endif /* PSXRECOMP_PSX_BSS_H */