sim: fix color running stack crash when use -Os

Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
ligd 2023-02-01 18:37:14 +08:00 committed by Xiang Xiao
parent b6472b8b15
commit 8d0094f6c9

View File

@ -35,6 +35,12 @@
#include "sim_internal.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#define STACK_MARGIN_WORDS 32
/****************************************************************************
* Public Functions
****************************************************************************/
@ -171,7 +177,7 @@ void nostackprotect_function sim_stack_color(void *stackbase,
if (nbytes == 0) /* 0: colorize the running stack */
{
stkend = up_getsp();
if (stkend > (uintptr_t)&sp)
if (stkend < (uintptr_t)&sp)
{
stkend = (uintptr_t)&sp;
}
@ -183,6 +189,7 @@ void nostackprotect_function sim_stack_color(void *stackbase,
stkend = STACK_ALIGN_DOWN(stkend);
nwords = (stkend - (uintptr_t)stackbase) >> 2;
nwords = nwords > STACK_MARGIN_WORDS ? nwords - STACK_MARGIN_WORDS : 0;
/* Set the entire stack to the coloration value */