grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] efi: Allow expression as func argument to efi_call_* macros on a


From: Glenn Washburn
Subject: [PATCH] efi: Allow expression as func argument to efi_call_* macros on all platforms
Date: Tue, 21 Feb 2023 12:20:32 -0600

On EFI platforms where EFI calls do not require a wrapper (notably i386-efi
and arm64-efi), the func argument needs to be wrapped in parenthesis to
allow valid syntax when func is an expression which evaluates to a function
pointer. On EFI platforms that do need a wrapper, this was never an issue
because func is passed to the C function wrapper as an argument and thus
does not need parenthesis to be evaluated.

Signed-off-by: Glenn Washburn <development@efficientek.com>
---
This is not needed by the current GRUB code base. However, it is needed by
some local modifications I've made. Regardless, I think this makes the official
source better.

Glenn
---
 include/grub/efi/api.h | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/include/grub/efi/api.h b/include/grub/efi/api.h
index ad2680341b..b4c4646651 100644
--- a/include/grub/efi/api.h
+++ b/include/grub/efi/api.h
@@ -1799,15 +1799,15 @@ typedef struct initrd_media_device_path 
initrd_media_device_path_t;
   || defined (__aarch64__) || defined (__MINGW64__) || defined (__CYGWIN__) \
   || defined(__riscv)
 
-#define efi_call_0(func)               func()
-#define efi_call_1(func, a)            func(a)
-#define efi_call_2(func, a, b)         func(a, b)
-#define efi_call_3(func, a, b, c)      func(a, b, c)
-#define efi_call_4(func, a, b, c, d)   func(a, b, c, d)
-#define efi_call_5(func, a, b, c, d, e)        func(a, b, c, d, e)
-#define efi_call_6(func, a, b, c, d, e, f) func(a, b, c, d, e, f)
-#define efi_call_7(func, a, b, c, d, e, f, g) func(a, b, c, d, e, f, g)
-#define efi_call_10(func, a, b, c, d, e, f, g, h, i, j)        func(a, b, c, 
d, e, f, g, h, i, j)
+#define efi_call_0(func)               (func)()
+#define efi_call_1(func, a)            (func)(a)
+#define efi_call_2(func, a, b)         (func)(a, b)
+#define efi_call_3(func, a, b, c)      (func)(a, b, c)
+#define efi_call_4(func, a, b, c, d)   (func)(a, b, c, d)
+#define efi_call_5(func, a, b, c, d, e)        (func)(a, b, c, d, e)
+#define efi_call_6(func, a, b, c, d, e, f) (func)(a, b, c, d, e, f)
+#define efi_call_7(func, a, b, c, d, e, f, g) (func)(a, b, c, d, e, f, g)
+#define efi_call_10(func, a, b, c, d, e, f, g, h, i, j)        (func)(a, b, c, 
d, e, f, g, h, i, j)
 
 #else
 
-- 
2.34.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]