Skip to content

Defs: attributes

Objects from specific sections

#define GSECTION ((x)) __attribute__((section(x)))

Objects from the gint’s uninitialized BSS section

#define GBSS __attribute__((section(".gint.bss")))

Additional sections that are only needed on SH3

#define GRODATA3 __attribute__((section(".gint.rodata.sh3")))

Objects for the ILRAM, XRAM and YRAM regions

#define GILRAM __attribute__((section(".ilram")))

Unused parameters or variables

#define GUNUSED __attribute__((unused))

Used parameters or variables but invisible to the compiler

#define GUSED __attribute__((used))

Functions that must be inlined

#define GINLINE __attribute__((always_inline)) inline

Aligned variables

#define GALIGNED ((x)) __attribute__((aligned(x)))

Packed structures. I require explicit alignment because if it’s unspecified, GCC cannot optimize access size, and reads to memory-mapped I/O with invalid access sizes silently fail - honestly you don’t want this to happen

#define GPACKED ((x)) __attribute__((packed, aligned(x)))

Packed enumerations

#define GPACKEDENUM __attribute__((packed))

Transparent unions

#define GTRANSPARENT __attribute__((transparent_union))

Functions and globals that are visible through whole-program optimization

#define GVISIBLE __attribute__((externally_visible))

Weak symbols

#define GWEAK __attribute__((weak))

Constructors

#define GCONSTRUCTOR __attribute__((constructor))

Functions that do not return

#define GNORETURN __attribute__((noreturn))
#define GDATA3 __attribute__((section(".gint.data.sh3")))
#define GBSS3 __attribute__((section(".gint.bss.sh3")))
#define GXRAM __attribute__((section(".xyram")))
#define GYRAM __attribute__((section(".xyram")))
#define GDESTRUCTOR __attribute__((destructor))