aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin (Intel) <hpa@zytor.com>2019-03-23 17:06:48 -0700
committerH. Peter Anvin (Intel) <hpa@zytor.com>2019-03-23 17:06:48 -0700
commit80b516df534ff9d6cb0659d7eff6022d959cb334 (patch)
treee198aaabb1a2f2492fdfbb5cf99d7ccfaec5783b
parent6be0597ff1d1d4f2c3b0a6d283b04caafc29016d (diff)
downloadsyslinux-80b516df534ff9d6cb0659d7eff6022d959cb334.tar.gz
syslinux-80b516df534ff9d6cb0659d7eff6022d959cb334.tar.xz
syslinux-80b516df534ff9d6cb0659d7eff6022d959cb334.zip
setjmp: for EFI, use setjmp() from gnu-efi
setjmp() is provided by gnu-efi, so if we are using gnu-efi, use the version defined in <efi.h>, not the one from klibc. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
-rw-r--r--com32/include/setjmp.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/com32/include/setjmp.h b/com32/include/setjmp.h
index e7090955..3403b72c 100644
--- a/com32/include/setjmp.h
+++ b/com32/include/setjmp.h
@@ -5,24 +5,32 @@
#ifndef _SETJMP_H
#define _SETJMP_H
-#include <klibc/extern.h>
-#include <klibc/compiler.h>
-#include <stddef.h>
-
-#if __SIZEOF_POINTER__ == 4
-#include <klibc/i386/archsetjmp.h>
-#elif __SIZEOF_POINTER__ == 8
-#include <klibc/x86_64/archsetjmp.h>
+#if defined(__FIRMWARE_EFI32__) || defined(__FIRMWARE_EFI64__)
+
+# include <efi.h>
+
#else
-#error "unsupported architecture"
-#endif
+
+# include <klibc/extern.h>
+# include <klibc/compiler.h>
+# include <stddef.h>
+
+# ifdef __i386__
+# include <klibc/i386/archsetjmp.h>
+# elif defined(__x86_64__)
+# include <klibc/x86_64/archsetjmp.h>
+# else
+# error "unsupported architecture"
+# endif
__extern int setjmp(jmp_buf);
__extern __noreturn longjmp(jmp_buf, int);
typedef jmp_buf sigjmp_buf;
-#define sigsetjmp(__env, __save) setjmp(__env)
-#define siglongjmp(__env, __val) longjmp(__env, __val)
+# define sigsetjmp(__env, __save) setjmp(__env)
+# define siglongjmp(__env, __val) longjmp(__env, __val)
+
+#endif
#endif /* _SETJMP_H */