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:
		@ -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
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user