From 796b380ca7d263ca504b82fe5317a78d3546d537 Mon Sep 17 00:00:00 2001 From: Alex James Date: Thu, 28 Nov 2019 13:56:45 +0800 Subject: [PATCH] MdePkg: Use __builtin_offset with CLANGPDB toolchain BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2393 CLANGPDB does not define __GNUC__, but it does define __clang__. Check for the __clang__ preprocessor definition to use __builtin_offsetof to implement the OFFSET_OF macro. Cc: Michael D Kinney Cc: Liming Gao Signed-off-by: Alex James Reviewed-by: Liming Gao --- MdePkg/Include/Base.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/MdePkg/Include/Base.h b/MdePkg/Include/Base.h index 4680e64136..e0bcd0ae67 100644 --- a/MdePkg/Include/Base.h +++ b/MdePkg/Include/Base.h @@ -781,11 +781,9 @@ typedef UINTN *BASE_LIST; @return Offset, in bytes, of field. **/ -#ifdef __GNUC__ -#if __GNUC__ >= 4 +#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__) #define OFFSET_OF(TYPE, Field) ((UINTN) __builtin_offsetof(TYPE, Field)) #endif -#endif #ifndef OFFSET_OF #define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field))