[syslinux] [PATCH] efi/main.c: include <efisetjmp.h>

Thomas Petazzoni thomas.petazzoni at bootlin.com
Tue Mar 24 03:57:51 PDT 2020

Building syslinux against gnu-efi 3.0.10 currently fails with:

syslinux/efi/main.c:33:8: error: unknown type name ‘jmp_buf’
   33 | static jmp_buf load_error_buf;
      |        ^~~~~~~
syslinux/efi/main.c: In function ‘local_boot’:
syslinux/efi/main.c:189:5: warning: implicit declaration of function ‘longjmp’ [-Wimplicit-function-declaration]
  189 |     longjmp(&load_error_buf, 1);
      |     ^~~~~~~
syslinux/efi/main.c: In function ‘build_gdt’:
syslinux/efi/main.c:907:75: warning: taking address of packed member of ‘struct dt_desc’ may result in an unaligned pointer value [-Waddress-of-packed-member]
  907 |  status = emalloc(gdt.limit, __SIZEOF_POINTER__ , (EFI_PHYSICAL_ADDRESS *)&gdt.base);
      |                                                                           ^~~~~~~~~
syslinux/efi/main.c: In function ‘efi_main’:
syslinux/efi/main.c:1390:7: warning: implicit declaration of function ‘setjmp’ [-Wimplicit-function-declaration]
 1390 |  if (!setjmp(&load_error_buf))
      |       ^~~~~~
make[3]: *** [syslinux/mk/efi.mk:63: main.o] Error 1

This is due to gnu-efi commit 486ba3c3bdd147b7d98159b9e650be60bce0f027
("Do not include efisetjmp.h on efi.h"), in which they state:

    Do not include efisetjmp.h on efi.h

    People than really want to use efisetjmp implementation can include
    the header on their own.

    Signed-off-by: leo <leo.sartre at geebol.fr>

So we act as specified, and include <efisetjmp.h> from efi/main.c.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
 efi/main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/efi/main.c b/efi/main.c
index 6a748412..e924cfb1 100644
--- a/efi/main.c
+++ b/efi/main.c
@@ -12,6 +12,7 @@
 #include <sys/ansi.h>
 #include "efi.h"
+#include <efisetjmp.h>
 #include "fio.h"
 #include "version.h"
 #include "efi_pxe.h"

More information about the Syslinux mailing list