From 0f81512d7da2934d9f0df088106a10a37838581b Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Sun, 27 Jan 2013 01:08:01 +0100 Subject: [PATCH] Fix stack alignment on 8 bytes at function call Ensure stack pointer is correctly adjusted in prolog to be aligned on 8 bytes after the change of frame linking. --- arm-gen.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arm-gen.c b/arm-gen.c index e3e502bc..fb157b0c 100644 --- a/arm-gen.c +++ b/arm-gen.c @@ -1231,7 +1231,7 @@ from_stack: } last_itod_magic=0; leaffunc = 1; - loc = -12; + loc = 0; } /* generate function epilog */ @@ -1255,9 +1255,9 @@ void gfunc_epilog(void) diff = (-loc + 3) & -4; #ifdef TCC_ARM_EABI if(!leaffunc) - diff = (diff + 7) & -8; + diff = ((diff + 11) & -8) - 4; #endif - if(diff > 12) { + if(diff > 0) { x=stuff_const(0xE24BD000, diff); /* sub sp,fp,# */ if(x) *(uint32_t *)(cur_text_section->data + func_sub_sp_offset) = x; -- 2.11.4.GIT