Hi Alex, On 22 June 2018 at 06:44, Alexander Graf <[email protected]> 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 <[email protected]> > > --- > > 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 <[email protected]> Regards, Simon _______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

