BZ https://bugzilla.tianocore.org/show_bug.cgi?id=2393 is submitted to record 
this issue. 

This is the corner issue when STATIC_ASSERT and OFFSET_OF are used together. 
So, I think we can fix it after stable tag 201911.

Thanks
Liming
>-----Original Message-----
>From: Alex James [mailto:theracermas...@gmail.com]
>Sent: Thursday, November 28, 2019 1:57 PM
>To: devel@edk2.groups.io
>Cc: Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming
><liming....@intel.com>
>Subject: [PATCH v1] MdePkg: Use __builtin_offset with CLANGPDB toolchain
>
>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 <michael.d.kin...@intel.com>
>Cc: Liming Gao <liming....@intel.com>
>Signed-off-by: Alex James <theracermas...@gmail.com>
>---
> 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))
>
>--
>2.24.0


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#51485): https://edk2.groups.io/g/devel/message/51485
Mute This Topic: https://groups.io/mt/64067723/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to