[edk2-devel] [PATCH v2 6/7] BaseTools/tools_def CLANG3x ARM AARCH64: force use of C99 standard

Liming Gao liming.gao at intel.com
Tue May 28 00:17:20 UTC 2019


Ard:
  Is there any impact with new option? If no behavior change, I am OK for this patch. Reviewed-by: Liming Gao <liming.gao at intel.com> 

Thanks
Liming
>-----Original Message-----
>From: Ard Biesheuvel [mailto:ard.biesheuvel at linaro.org]
>Sent: Tuesday, May 28, 2019 4:52 AM
>To: devel at edk2.groups.io
>Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>; Laszlo Ersek
><lersek at redhat.com>; Gao, Liming <liming.gao at intel.com>; Wang, Jian J
><jian.j.wang at intel.com>; Leif Lindholm <leif.lindholm at linaro.org>; Kinney,
>Michael D <michael.d.kinney at intel.com>
>Subject: [PATCH v2 6/7] BaseTools/tools_def CLANG3x ARM AARCH64: force
>use of C99 standard
>
>When building OpenSSL for ARM or AARCH64 with recent Clang, the following
>error may result:
>
>  In file included
>from .../CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c:18:
>  In file included
>from .../CryptoPkg/Library/OpensslLib/openssl/crypto/include/internal/x509_
>int.h:10:
>  In file included
>from .../CryptoPkg/Library/OpensslLib/openssl/include/internal/refcount.h:2
>1:
>  In file included from /usr/lib/llvm-7/lib/clang/7.0.1/include/stdatomic.h:35:
>  In file included from /usr/lib/llvm-7/lib/clang/7.0.1/include/stdint.h:61:
>  /usr/include/stdint.h:26:10: fatal error: 'bits/libc-header-start.h' file not
>found
>  #include <bits/libc-header-start.h>
>         ^~~~~~~~~~~~~~~~~~~~~~~~~~
>  1 error generated.
>
>This is caused by the fact that the refcount.h header includes compiler
>headers that in turn rely on system headers, which we don't support.
>
>Since the C native atomics are a C11 feature, let's explicitly use the
>C99 standard instead to work around this issue.
>
>Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
>---
> BaseTools/Conf/tools_def.template | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
>diff --git a/BaseTools/Conf/tools_def.template
>b/BaseTools/Conf/tools_def.template
>index 26a2cf604f74..7fe6f4406a72 100755
>--- a/BaseTools/Conf/tools_def.template
>+++ b/BaseTools/Conf/tools_def.template
>@@ -2280,8 +2280,8 @@ DEFINE CLANG35_ARM_TARGET        = -target arm-
>linux-gnueabi
> DEFINE CLANG35_AARCH64_TARGET    = -target aarch64-linux-gnu
>
> DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality -
>Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare
>-Wno-empty-body -Wno-unknown-warning-option
>-DEFINE CLANG35_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS)
>DEF(CLANG35_ARM_TARGET) DEF(CLANG35_WARNING_OVERRIDES)
>-DEFINE CLANG35_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)
>DEF(CLANG35_AARCH64_TARGET) -mcmodel=small
>DEF(CLANG35_WARNING_OVERRIDES)
>+DEFINE CLANG35_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS)
>DEF(CLANG35_ARM_TARGET) DEF(CLANG35_WARNING_OVERRIDES) -
>std=c99
>+DEFINE CLANG35_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)
>DEF(CLANG35_AARCH64_TARGET) -mcmodel=small
>DEF(CLANG35_WARNING_OVERRIDES) -std=c99
>
> ##################
> # CLANG35 ARM definitions
>@@ -2430,7 +2430,7 @@ NOOPT_CLANG38_X64_DLINK2_FLAGS     =
>DEF(GCC5_X64_DLINK2_FLAGS) -O0
> # CLANG38 ARM definitions
> ##################
> DEFINE CLANG38_ARM_TARGET        = -target arm-linux-gnueabi
>-DEFINE CLANG38_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS)
>DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-
>movt
>+DEFINE CLANG38_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS)
>DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-
>movt -std=c99
> DEFINE CLANG38_ARM_DLINK_FLAGS   = DEF(CLANG38_ARM_TARGET)
>DEF(GCC_ARM_DLINK_FLAGS)
>
> *_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)
>@@ -2474,7 +2474,7 @@ RELEASE_CLANG38_ARM_DLINK_FLAGS  =
>DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L
> # CLANG38 AARCH64 definitions
> ##################
> DEFINE CLANG38_AARCH64_TARGET    = -target aarch64-linux-gnu
>-DEFINE CLANG38_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)
>DEF(CLANG38_AARCH64_TARGET) -mcmodel=small
>DEF(CLANG38_WARNING_OVERRIDES)
>+DEFINE CLANG38_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)
>DEF(CLANG38_AARCH64_TARGET) -mcmodel=small
>DEF(CLANG38_WARNING_OVERRIDES) -std=c99
> DEFINE CLANG38_AARCH64_DLINK_FLAGS  =
>DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z
>common-page-size=0x1000
>
> *_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)
>--
>2.20.1


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

View/Reply Online (#41433): https://edk2.groups.io/g/devel/message/41433
Mute This Topic: https://groups.io/mt/31813772/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