d85ffee
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
d283f95
From: Nigel Croxon <ncroxon@redhat.com>
d283f95
Date: Fri, 15 Mar 2019 09:32:06 -0400
d85ffee
Subject: [PATCH] Redefine jmp_buf to comply with C calling convention.
d283f95
d283f95
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
d283f95
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
d283f95
---
d283f95
 apps/setjmp.c                 | 6 +++---
d283f95
 inc/aarch64/efisetjmp_arch.h  | 2 +-
d283f95
 inc/arm/efisetjmp_arch.h      | 2 +-
d283f95
 inc/efisetjmp.h               | 4 ++--
d283f95
 inc/ia32/efisetjmp_arch.h     | 2 +-
d283f95
 inc/ia64/efisetjmp_arch.h     | 2 +-
d283f95
 inc/mips64el/efisetjmp_arch.h | 2 +-
d283f95
 inc/x86_64/efisetjmp_arch.h   | 2 +-
d283f95
 8 files changed, 11 insertions(+), 11 deletions(-)
d283f95
d283f95
diff --git a/apps/setjmp.c b/apps/setjmp.c
d283f95
index bd70c11b0ba..b20070e7c95 100644
d283f95
--- a/apps/setjmp.c
d283f95
+++ b/apps/setjmp.c
d283f95
@@ -12,12 +12,12 @@ efi_main(
d283f95
 	int rc;
d283f95
 
d283f95
 	InitializeLib(image_handle, systab);
d283f95
-	rc = setjmp(&env;;
d283f95
+	rc = setjmp(env);
d283f95
 	Print(L"setjmp() = %d\n", rc);
d283f95
 
d283f95
 	if (rc == 3) {
d283f95
 		Print(L"3 worked\n");
d283f95
-		longjmp(&env, 0);
d283f95
+		longjmp(env, 0);
d283f95
 		return 0;
d283f95
 	}
d283f95
 
d283f95
@@ -26,6 +26,6 @@ efi_main(
d283f95
 		return 0;
d283f95
 	}
d283f95
 
d283f95
-	longjmp(&env, 3);
d283f95
+	longjmp(env, 3);
d283f95
 	return 0;
d283f95
 }
d283f95
diff --git a/inc/aarch64/efisetjmp_arch.h b/inc/aarch64/efisetjmp_arch.h
d283f95
index abd7a0e9ad9..8dbce07821f 100644
d283f95
--- a/inc/aarch64/efisetjmp_arch.h
d283f95
+++ b/inc/aarch64/efisetjmp_arch.h
d283f95
@@ -28,6 +28,6 @@ typedef struct {
d283f95
 	UINT64	D13;
d283f95
 	UINT64	D14;
d283f95
 	UINT64	D15;
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_AARCH64_SETJMP_H */
d283f95
diff --git a/inc/arm/efisetjmp_arch.h b/inc/arm/efisetjmp_arch.h
d283f95
index 3a09ea5fa52..17f5dc0facb 100644
d283f95
--- a/inc/arm/efisetjmp_arch.h
d283f95
+++ b/inc/arm/efisetjmp_arch.h
d283f95
@@ -16,6 +16,6 @@ typedef struct {
d283f95
 	UINT32 R12;
d283f95
 	UINT32 R13;
d283f95
 	UINT32 R14;
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_ARM_SETJMP_H */
d283f95
diff --git a/inc/efisetjmp.h b/inc/efisetjmp.h
d283f95
index 58a93a7e64f..de69194b4f9 100644
d283f95
--- a/inc/efisetjmp.h
d283f95
+++ b/inc/efisetjmp.h
d283f95
@@ -4,7 +4,7 @@
d283f95
 #include "eficompiler.h"
d283f95
 #include "efisetjmp_arch.h"
d283f95
 
d283f95
-extern UINTN setjmp(jmp_buf *env) __attribute__((returns_twice));
d283f95
-extern VOID longjmp(jmp_buf *env, UINTN value) __attribute__((noreturn));
d283f95
+extern UINTN setjmp(jmp_buf env) __attribute__((returns_twice));
d283f95
+extern VOID longjmp(jmp_buf env, UINTN value) __attribute__((noreturn));
d283f95
 
d283f95
 #endif /* GNU_EFI_SETJMP_H */
d283f95
diff --git a/inc/ia32/efisetjmp_arch.h b/inc/ia32/efisetjmp_arch.h
d283f95
index 17184e75a2d..a5c1a81c969 100644
d283f95
--- a/inc/ia32/efisetjmp_arch.h
d283f95
+++ b/inc/ia32/efisetjmp_arch.h
d283f95
@@ -10,6 +10,6 @@ typedef struct {
d283f95
 	UINT32	Ebp;
d283f95
 	UINT32	Esp;
d283f95
 	UINT32	Eip;
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_IA32_SETJMP_H */
d283f95
diff --git a/inc/ia64/efisetjmp_arch.h b/inc/ia64/efisetjmp_arch.h
d283f95
index 3afa04426f5..ceda4481d98 100644
d283f95
--- a/inc/ia64/efisetjmp_arch.h
d283f95
+++ b/inc/ia64/efisetjmp_arch.h
d283f95
@@ -42,6 +42,6 @@ typedef struct {
d283f95
 	UINT64	Predicates;
d283f95
 	UINT64	LoopCount;
d283f95
 	UINT64	FPSR;
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_IA64_SETJMP_H */
d283f95
diff --git a/inc/mips64el/efisetjmp_arch.h b/inc/mips64el/efisetjmp_arch.h
d283f95
index fd17f1fc6d4..2b8f756eb75 100644
d283f95
--- a/inc/mips64el/efisetjmp_arch.h
d283f95
+++ b/inc/mips64el/efisetjmp_arch.h
d283f95
@@ -29,6 +29,6 @@ typedef struct {
d283f95
 	UINT64	F30;
d283f95
 	UINT64	F31;
d283f95
 #endif
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_MIPS64EL_SETJMP_H */
d283f95
diff --git a/inc/x86_64/efisetjmp_arch.h b/inc/x86_64/efisetjmp_arch.h
d283f95
index a489993c174..b1ad1fe3087 100644
d283f95
--- a/inc/x86_64/efisetjmp_arch.h
d283f95
+++ b/inc/x86_64/efisetjmp_arch.h
d283f95
@@ -17,6 +17,6 @@ typedef struct {
d283f95
 	UINT64	Rip;
d283f95
 	UINT64	MxCsr;
d283f95
 	UINT8	XmmBuffer[160]; // XMM6 - XMM15
d283f95
-} ALIGN(JMPBUF_ALIGN) jmp_buf;
d283f95
+} ALIGN(JMPBUF_ALIGN) jmp_buf[1];
d283f95
 
d283f95
 #endif /* GNU_EFI_X86_64_SETJMP_H */