Mark __aeabi_lmul section as allocatable and executable (#722)

When using a linker script which does not provide a .time_critical.
section that is marked "ax" and wrongly define
PICO_INT64_OPS_IN_RAM=1 this would generate a malformed
executable with strange runtime bugs in the worst case.
This commit is contained in:
Stefan Kerkmann 2022-03-22 23:51:24 +01:00 committed by GitHub
parent b7e82b638a
commit bc3484e793
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -10,11 +10,16 @@
#include "pico/asm_helper.S" #include "pico/asm_helper.S"
.macro int64_section name
#if PICO_INT64_OPS_IN_RAM #if PICO_INT64_OPS_IN_RAM
.section RAM_SECTION_NAME(__aeabi_lmul) .section RAM_SECTION_NAME(\name), "ax"
#else #else
.section SECTION_NAME(__aeabi_lmul) .section SECTION_NAME(\name), "ax"
#endif #endif
.endm
int64_section __aeabi_lmul
wrapper_func __aeabi_lmul wrapper_func __aeabi_lmul
muls r1, r2 muls r1, r2
muls r3, r0 muls r3, r0
@ -41,4 +46,3 @@ wrapper_func __aeabi_lmul
adcs r1, r2 adcs r1, r2
add r1, r12 add r1, r12
bx lr bx lr