///--------------------------------------------------------------------------
/// General definitions.
+// Preprocessor hacks.
+#define STRINGY(x) _STRINGY(x, y)
+#define _STRINGY(x) #x
+#define GLUE(x, y) _GLUE(x, y)
+#define _GLUE(x, y) x##y
+#define _EMPTY
+
// Some useful variables.
.L$_subsec = 0
#define _ENDLIT .text .L$_subsec
#define _LTORG .L$_subsec = .L$_subsec + 2; .text .L$_subsec
+// ELF section types.
+#if __ELF__
+# if CPUFAM_ARMEL
+# define _SECTTY(ty) %ty
+# else
+# define _SECTTY(ty) @ty
+# endif
+#endif
+
+// Section selection.
+#define TEXT .text .L$_subsec
+#if ABI_WIN
+# define RODATA .section .rdata, "dr"
+#elif __ELF__
+# define RODATA .section .rodata, "a", _SECTTY(progbits)
+#else
+# define RODATA TEXT
+#endif
+#define DATA .data
+
// Announcing an external function.
#define FUNC(name) \
.globl F(name); \