startup: setup the stack protector for the stage before main function (#46)

pull/25/head
mcudev 7 years ago committed by Pavol Rusnak
parent 4c9e2d45a5
commit 70594a9bfe

@ -122,7 +122,6 @@ static const uint8_t * const BOARDLOADER_KEYS[] = {
int main(void)
{
__stack_chk_guard = rng_get();
#if PRODUCTION
flash_set_option_bytes();

@ -47,6 +47,11 @@ reset_handler:
ldr r2, =data_size // size in bytes
bl memcpy
// setup the stack protector (see build script "-fstack-protector-all") with an unpredictable value
bl rng_get
ldr r1, = __stack_chk_guard
str r0, [r1]
// enter the application code
bl main

@ -183,7 +183,6 @@ void check_bootloader_version(void)
int main(void)
{
__stack_chk_guard = rng_get();
#if PRODUCTION
check_bootloader_version();

@ -22,6 +22,11 @@ reset_handler:
ldr r2, =data_size // size in bytes
bl memcpy
// setup the stack protector (see build script "-fstack-protector-all") with an unpredictable value
bl rng_get
ldr r1, = __stack_chk_guard
str r0, [r1]
// re-enable exceptions
// according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.7:
// "If it is not necessary to ensure that a pended interrupt is recognized immediately before

@ -23,7 +23,6 @@
int main(void)
{
__stack_chk_guard = rng_get();
periph_init();

@ -22,6 +22,11 @@ reset_handler:
ldr r2, =data_size // size in bytes
bl memcpy
// setup the stack protector (see build script "-fstack-protector-all") with an unpredictable value
bl rng_get
ldr r1, = __stack_chk_guard
str r0, [r1]
// re-enable exceptions
// according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.7:
// "If it is not necessary to ensure that a pended interrupt is recognized immediately before

Loading…
Cancel
Save