[U-Boot] [PATCH v5 04/10] sandbox: Fix setjmp/longjmp
Simon Glass
sjg at chromium.org
Fri Jun 22 19:28:54 UTC 2018
Hi Alex,
On 22 June 2018 at 06:44, Alexander Graf <agraf at suse.de> wrote:
> In sandbox, longjmp returns to itself in an endless loop because
> os_longjmp() calls into longjmp() which is provided by U-Boot which
> again calls os_longjmp().
>
> Setjmp on the other hand must not return because otherwise the
> return freees up stack elements that we need during longjmp().
>
> The only straight forward fix that doesn't involve nasty hacks I
> could find is to directly link against the system setjmp/longjmp
> implementations. That means we just provide the compiler with
> hints that the symbol will be available and actually fill them
> out with versions from libc.
>
> This approach should be reasonably platform agnostic
>
> Signed-off-by: Alexander Graf <agraf at suse.de>
>
> ---
>
> v4 -> v5:
>
> - Use system setjmp/longjmp directly from target code
> ---
> arch/sandbox/cpu/cpu.c | 12 ------------
> arch/sandbox/cpu/os.c | 22 ----------------------
> arch/sandbox/include/asm/setjmp.h | 5 +++++
> include/os.h | 21 ---------------------
> 4 files changed, 5 insertions(+), 55 deletions(-)
I was wondering if that would work. It seems much better to me.
Reviewed-by: Simon Glass <sjg at chromium.org>
Regards,
Simon
More information about the U-Boot
mailing list