summaryrefslogtreecommitdiffstats
path: root/src/arch/arm32/libgcc
diff options
context:
space:
mode:
authorMichael Brown2016-05-08 00:55:28 +0200
committerMichael Brown2016-05-08 01:08:48 +0200
commit2a187f480ecc9d7943a53658e748bb5e60104788 (patch)
treec7e739cac5c78017b15e4b6a3720cf6fc58066d4 /src/arch/arm32/libgcc
parent[arm] Add support for 32-bit ARM (diff)
downloadipxe-2a187f480ecc9d7943a53658e748bb5e60104788.tar.gz
ipxe-2a187f480ecc9d7943a53658e748bb5e60104788.tar.xz
ipxe-2a187f480ecc9d7943a53658e748bb5e60104788.zip
[arm] Avoid instruction references to symbols defined via ".equ"
When building for 64-bit ARM, some symbol references may be resolved via an "adrp" instruction (to obtain the start of the 4kB page containing the symbol) and a separate 12-bit offset. For example (taken from the GNU assembler documentation): adrp x0, foo ldr x0, [x0, #:lo12:foo] We occasionally refer to symbols defined via mechanisms that are not directly visible to gcc. For example: extern char some_magic_symbol[]; __asm__ ( ".equ some_magic_symbol, some_magic_expression" ); The subsequent use of the ":lo12:" prefix on such magically-defined symbols triggers an assertion failure in the assembler. This problem seems to affect only "private_key_len" in the current codebase. Fix by storing this value as static data; this avoids the need to provide the value as a literal within the instruction stream, and so avoids the problematic use of the ":lo12:" prefix. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/arm32/libgcc')
0 files changed, 0 insertions, 0 deletions