U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 15/21] sandbox: Fix setjmp/longjmp
Date: Fri, 22 Jun 2018 13:54:45 +0200	[thread overview]
Message-ID: <34f99c82-4205-e0bc-7e51-6479db62f65f@suse.de> (raw)
In-Reply-To: <CAPnjgZ0Lb9uvUYJThAExEo23w9WEf_X1mjiLe87+_omH+CtfSg@mail.gmail.com>

On 06/21/2018 09:45 PM, Simon Glass wrote:
> Hi Alex,
>
> On 21 June 2018 at 03:41, Alexander Graf <agraf@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@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@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.

I actually think there is a much easier way. We can just directly export 
the symbols for libc's setjmp/longjmp functions in the sandbox setjmp.h 
header. That way we avoid all the nasty problems we've encountered so 
far. I've cooked up a patch and it seems to work fine.


Alex

  reply	other threads:[~2018-06-22 11:54 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-18 15:22 [U-Boot] [PATCH v4 00/21] sandbox: efi_loader support Alexander Graf
2018-06-18 15:22 ` [U-Boot] [PATCH v4 01/21] efi: sandbox: Add distroboot support Alexander Graf
2018-06-18 15:22 ` [U-Boot] [PATCH v4 02/21] efi: sandbox: Add relocation constants Alexander Graf
2018-06-18 15:22 ` [U-Boot] [PATCH v4 03/21] efi_loader: Use compiler constants for image loader Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:22 ` [U-Boot] [PATCH v4 04/21] efi_loader: Use map_sysmem() in bootefi command Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:22 ` [U-Boot] [PATCH v4 05/21] efi.h: Do not use config options Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 06/21] efi_loader: Allow SMBIOS tables in highmem Alexander Graf
2018-06-21  2:01   ` Simon Glass
2018-06-21  9:38     ` Alexander Graf
2018-06-21 19:44       ` Simon Glass
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 07/21] sandbox: Map host memory for efi_loader Alexander Graf
2018-06-21  2:01   ` Simon Glass
2018-06-18 15:23 ` [U-Boot] [PATCH v4 08/21] efi_loader: efi_allocate_pages is too restrictive Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 09/21] efi_loader: Disable miniapps on sandbox Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 10/21] fs: Convert fs_read/write to take buffer instead of address Alexander Graf
2018-06-21  2:02   ` Simon Glass
2018-06-21 15:27     ` Tom Rini
2018-06-18 15:23 ` [U-Boot] [PATCH v4 11/21] efi_loader: Introduce ms abi vararg helpers Alexander Graf
2018-06-21  2:02   ` Simon Glass
2018-06-21  9:40     ` Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-23  8:37     ` Bin Meng
2018-06-25 16:47       ` Alexander Graf
2018-06-26  1:51         ` Bin Meng
2018-06-26 11:18           ` Alexander Graf
2018-06-27  2:59             ` Bin Meng
2018-06-18 15:23 ` [U-Boot] [PATCH v4 12/21] efi: sandbox: Enable EFI loader for sandbox Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 13/21] distro: Move to compiler based target architecture determination Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 14/21] efi_loader: " Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 15/21] sandbox: Fix setjmp/longjmp Alexander Graf
2018-06-21  2:02   ` Simon Glass
2018-06-21  9:41     ` Alexander Graf
2018-06-21 19:45       ` Simon Glass
2018-06-22 11:54         ` Alexander Graf [this message]
2018-06-18 15:23 ` [U-Boot] [PATCH v4 16/21] elf: Move x86 reloc defines to common elf.h Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 17/21] efi_loader: Use common elf.h reloc defines Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 18/21] efi: sandbox: Adjust memory usage for sandbox Alexander Graf
2018-06-21  2:02   ` Simon Glass
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 19/21] sandbox: Allow to execute from RAM Alexander Graf
2018-06-21  2:02   ` Simon Glass
2018-06-21  9:44     ` Alexander Graf
2018-06-21 19:45       ` Simon Glass
2018-06-22  9:43         ` Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 20/21] sandbox: Always allocate aligned buffers Alexander Graf
2018-06-18 15:23 ` [U-Boot] [PATCH v4 21/21] efi_loader: Expose U-Boot addresses in memory map for sandbox Alexander Graf
2018-06-21 15:13   ` [U-Boot] [U-Boot, v4, " Alexander Graf
2018-06-23  4:01   ` [U-Boot] [PATCH v4 " Simon Glass
2018-06-23  6:57     ` Alexander Graf
2018-06-25  2:58       ` Simon Glass
2018-06-25  2:58   ` Simon Glass
2018-06-18 15:53 ` [U-Boot] [PATCH v4 00/21] sandbox: efi_loader support Alexander Graf
2018-06-21  2:44   ` Simon Glass
2018-06-21  9:47     ` Alexander Graf
2018-06-21 19:45       ` Simon Glass
2018-06-22  9:44         ` Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=34f99c82-4205-e0bc-7e51-6479db62f65f@suse.de \
    --to=agraf@suse.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox