From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Sun, 26 Aug 2018 19:13:09 +0200 Subject: [U-Boot] [PATCH v9 13/18] efi: Add a call to exit() along with why we can't use it In-Reply-To: <9a0a90f7-2f15-71f8-1f90-27af91ca97b9@gmx.de> References: <20180808095433.230882-1-sjg@chromium.org> <20180808095433.230882-14-sjg@chromium.org> <9a0a90f7-2f15-71f8-1f90-27af91ca97b9@gmx.de> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 23.08.18 22:37, Heinrich Schuchardt wrote: > On 08/08/2018 11:54 AM, Simon Glass wrote: >> The test should exit like any other EFI application, by calling exit() >> in the boot services API. But this crashes at present on sandbox. For now, >> add in the placeholder code. >> >> Signed-off-by: Simon Glass >> --- >> >> Changes in v9: None >> Changes in v8: None >> Changes in v7: None >> Changes in v6: None >> Changes in v5: None >> Changes in v4: None >> Changes in v3: None >> Changes in v2: None >> >> lib/efi_loader/efi_test.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/lib/efi_loader/efi_test.c b/lib/efi_loader/efi_test.c >> index 4b8d49f324b..5401a0f4715 100644 >> --- a/lib/efi_loader/efi_test.c >> +++ b/lib/efi_loader/efi_test.c >> @@ -9,8 +9,18 @@ >> int efi_test(efi_handle_t image_handle, struct efi_system_table *systable) >> { >> struct efi_simple_text_output_protocol *con_out = systable->con_out; >> + struct efi_boot_services *boottime = systable->boottime; >> + int ret; >> >> - con_out->output_string(con_out, L"Hello, world!\n"); >> + ret = con_out->output_string(con_out, L"Hello, world!\n"); >> + >> + /* >> + * We should really call EFI's exit() here but this crashes at present >> + * on sandbox due to the incorrect use of setjmp() and longjmp(). Once > > What makes you think that setjmp and longjmp are incorrectly used? > Couldn't the sandbox implementation of both create the problem? I agree, last time we tracked exit problems down to incorrect setjmp/longjmp implementations in sandbox. Alex