[U-Boot] [PATCH v4 15/21] sandbox: Fix setjmp/longjmp
Simon Glass
sjg at chromium.org
Thu Jun 21 19:45:05 UTC 2018
Hi Alex,
On 21 June 2018 at 03:41, Alexander Graf <agraf at suse.de> wrote:
>
> On 06/21/2018 04:02 AM, Simon Glass wrote:
>>
>> Hi Alex,
>>
>> On 18 June 2018 at 09:23, Alexander Graf <agraf at suse.de> wrote:
>>>
>>> In sandbox, longjmp returns to itself in an endless loop. Cut this through
>>> by calling the real OS function.
>>>
>>> Setjmp on the other hand must not return. So here we have to call the OS
>>> setjmp function straight from the code where the setjmp call happens.
>>>
>>> Signed-off-by: Alexander Graf <agraf at suse.de>
>>> ---
>>> arch/sandbox/cpu/cpu.c | 5 -----
>>> arch/sandbox/cpu/os.c | 20 ++------------------
>>> arch/sandbox/include/asm/setjmp.h | 4 +++-
>>> 3 files changed, 5 insertions(+), 24 deletions(-)
>>>
>> I think we do need to do something like this. But I cannot find the
>> man page for _longjmp(). Are you sure this is a valid function on all
>> systems? Or is it Linux only?
>
>
> I'm afraid it may be Linux (glibc) only.
>
> I guess the alternative to this would be to not use system setjmp/longjmp at all and instead use the in-U-Boot versions of them.
So can we update this patch to check for Linux glibc? Failing that,
perhaps setjmp() could return a negative error value? Then (in other
patches) the caller can make a note that longjmp() cannot be used, and
will return errors from things that need to call it.
Regards,
Simon
More information about the U-Boot
mailing list