[edk2-devel] [PATCH v1] MdePkg: Use __builtin_offset with CLANGPDB toolchain

Liming Gao liming.gao at intel.com
Tue Dec 10 00:50:02 UTC 2019


Alex:
  The change is good. Can you show what test has been done?

Thanks
Liming
>-----Original Message-----
>From: devel at edk2.groups.io [mailto:devel at edk2.groups.io] On Behalf Of
>Liming Gao
>Sent: Friday, November 29, 2019 2:12 PM
>To: Alex James <theracermaster at gmail.com>; devel at edk2.groups.io
>Cc: Kinney, Michael D <michael.d.kinney at intel.com>
>Subject: Re: [edk2-devel] [PATCH v1] MdePkg: Use __builtin_offset with
>CLANGPDB toolchain
>
>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:theracermaster at gmail.com]
>>Sent: Thursday, November 28, 2019 1:57 PM
>>To: devel at edk2.groups.io
>>Cc: Kinney, Michael D <michael.d.kinney at intel.com>; Gao, Liming
>><liming.gao at 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.kinney at intel.com>
>>Cc: Liming Gao <liming.gao at intel.com>
>>Signed-off-by: Alex James <theracermaster at 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 (#52064): https://edk2.groups.io/g/devel/message/52064
Mute This Topic: https://groups.io/mt/64067723/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list