Abuse subsections for arranging to place literals near the functions
which need them. These are no use for human-written code, but they're
useful in macros, especially since GAS is actually rather bad at dealing
with complex expressions and relocation types in its ARM literal syntax.
///--------------------------------------------------------------------------
/// General definitions.
+// Some useful variables.
+ .L$_subsec = 0
+
+// Literal pools done the hard way.
+#define _LIT .text .L$_subsec + 1
+#define _ENDLIT .text .L$_subsec
+
// Announcing an external function.
#define FUNC(name) \
.globl F(name); \
#define _ENDFUNC(name) \
.purgem ENDFUNC; \
SIZE_OBJ(name); \
- ENDFUNC_HOOK(name)
+ ENDFUNC_HOOK(name); \
+ .L$_subsec = .L$_subsec + 2; \
+ .text .L$_subsec
///--------------------------------------------------------------------------
/// ELF-specific hacking.