diff options
author | Michael Brown <mcb30@ipxe.org> | 2023-06-07 12:18:38 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2023-06-07 12:24:03 +0100 |
commit | 9cb0a4b8ecfa2aa24df36eb43d3f50dde32442d1 (patch) | |
tree | ef27ba9dbf9ad3ca08dba921c9b65ff1a39cbd3f | |
parent | b0093571f8bc0207673bb6a6ad5081263e7863b6 (diff) | |
download | ipxe-9cb0a4b8ecfa2aa24df36eb43d3f50dde32442d1.zip ipxe-9cb0a4b8ecfa2aa24df36eb43d3f50dde32442d1.tar.gz ipxe-9cb0a4b8ecfa2aa24df36eb43d3f50dde32442d1.tar.bz2 |
[efi] Disable static assertions in EFI headers on non-EFI platforms
The EDK2 headers may be included even in builds for non-EFI platforms.
Commits such as 9de6c45 ("[arm] Use -fno-short-enums for all 32-bit
ARM builds") have so far ensured that the compile-time checks within
the EDK2 headers will pass even when building for a non-EFI platform.
As a more general solution, temporarily disable static assertions
while including UefiBaseType.h if building on a non-EFI platform.
This avoids the need to modify the ABI on other platforms.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/include/ipxe/efi/efi.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/include/ipxe/efi/efi.h b/src/include/ipxe/efi/efi.h index e0e2db6..29117fa 100644 --- a/src/include/ipxe/efi/efi.h +++ b/src/include/ipxe/efi/efi.h @@ -43,10 +43,19 @@ FILE_LICENCE ( GPL2_OR_LATER ); * checking somewhat useless. Work around this bizarre sabotage * attempt by redefining EFI_HANDLE as a pointer to an anonymous * structure. + * + * EFI headers perform some ABI validation checks via _Static_assert() + * that may fail when EFI headers are included on a non-EFI platform. + * Temporarily disable static assertions to allow these headers to be + * included. */ #define EFI_HANDLE STUPID_EFI_HANDLE +#ifndef PLATFORM_efi +#define _Static_assert(expr, msg) +#endif #include <ipxe/efi/Uefi/UefiBaseType.h> #undef EFI_HANDLE +#undef _Static_assert typedef struct {} *EFI_HANDLE; /* Include the top-level EFI header files */ |