mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-02 04:18:20 +00:00
startup: setup the stack protector for the stage before main function (#46)
This commit is contained in:
parent
4c9e2d45a5
commit
70594a9bfe
@ -122,7 +122,6 @@ static const uint8_t * const BOARDLOADER_KEYS[] = {
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
__stack_chk_guard = rng_get();
|
|
||||||
|
|
||||||
#if PRODUCTION
|
#if PRODUCTION
|
||||||
flash_set_option_bytes();
|
flash_set_option_bytes();
|
||||||
|
@ -47,6 +47,11 @@ reset_handler:
|
|||||||
ldr r2, =data_size // size in bytes
|
ldr r2, =data_size // size in bytes
|
||||||
bl memcpy
|
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
|
// enter the application code
|
||||||
bl main
|
bl main
|
||||||
|
|
||||||
|
@ -183,7 +183,6 @@ void check_bootloader_version(void)
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
__stack_chk_guard = rng_get();
|
|
||||||
|
|
||||||
#if PRODUCTION
|
#if PRODUCTION
|
||||||
check_bootloader_version();
|
check_bootloader_version();
|
||||||
|
@ -22,6 +22,11 @@ reset_handler:
|
|||||||
ldr r2, =data_size // size in bytes
|
ldr r2, =data_size // size in bytes
|
||||||
bl memcpy
|
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
|
// re-enable exceptions
|
||||||
// according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.7:
|
// 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
|
// "If it is not necessary to ensure that a pended interrupt is recognized immediately before
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
__stack_chk_guard = rng_get();
|
|
||||||
|
|
||||||
periph_init();
|
periph_init();
|
||||||
|
|
||||||
|
@ -22,6 +22,11 @@ reset_handler:
|
|||||||
ldr r2, =data_size // size in bytes
|
ldr r2, =data_size // size in bytes
|
||||||
bl memcpy
|
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
|
// re-enable exceptions
|
||||||
// according to "ARM Cortex-M Programming Guide to Memory Barrier Instructions" Application Note 321, section 4.7:
|
// 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
|
// "If it is not necessary to ensure that a pended interrupt is recognized immediately before
|
||||||
|
Loading…
Reference in New Issue
Block a user