File 5781.patch of Package edk2

From 93d48fc90778b5a3621e650377ca9609ace0d82d Mon Sep 17 00:00:00 2001
From: Rebecca Cran <rebecca@bsdio.com>
Date: Sun, 16 Jun 2024 02:55:33 -0600
Subject: [PATCH] MdePkg: Check if compiler has __has_builtin before trying to
 use it

When building AArch64 code, cpp gets run with the `-undef` flag which on
Fedora 40 with gcc version 14.1.1 20240607 (Red Hat 14.1.1-5) causes
__has_builtin to be undefined. When running the check for
__builtin_unreachable in Base.h it causes an error
"missing binary operator before token "("".

Check that we have __has_builtin before trying to use it.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 MdePkg/Include/Base.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h
index e02970a052fc..7caebbeb1f4a 100644
--- a/MdePkg/Include/Base.h
+++ b/MdePkg/Include/Base.h
@@ -59,7 +59,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 /// up to the compiler to remove any code past that point.
 ///
 #define UNREACHABLE()  __builtin_unreachable ()
-  #elif defined (__has_feature)
+  #elif defined (__has_builtin) && defined (__has_feature)
     #if __has_builtin (__builtin_unreachable)
 ///
 /// Signal compilers and analyzers that this call is not reachable.  It is
openSUSE Build Service is sponsored by