From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=KOIJkO7W; spf=pass (domain: linaro.org, ip: 209.85.166.196, mailfrom: ard.biesheuvel@linaro.org) Received: from mail-it1-f196.google.com (mail-it1-f196.google.com [209.85.166.196]) by groups.io with SMTP; Mon, 27 May 2019 23:10:58 -0700 Received: by mail-it1-f196.google.com with SMTP id m3so2403191itl.1 for ; Mon, 27 May 2019 23:10:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7kIr2hF7iaYUJkKrFKEMtCb7w/Ee6Pat47jsdpaHYMk=; b=KOIJkO7WXSve7BTr6HE27jBP80L8O9AiGks9fVNG3vdIyBzy1pHm4fHgGjjeMndUXE 5Ro5YIyVIQ6Jqq9ugdfCf/yKvQTgXORQxqIQ+/Y3UNc6Fjzh0NW81bz06/bgPfbQpqsf bQWj3FSwYteLFWmC69K+NyC8TqMcZaHYI8TTszJxzvYAzQrlP+F29GugegzuVIQ4rZxJ 1WPKswPzstVgcijeCTdHsKydjtf1BWjgQSf9wjmyOagN7h9zwBW1H2mLXlWnRDUgSl0a f9wVEK8OR6RqfiJ3JlEqdC5Zs4eVW6KNJAUP83uq228UCkwT2Tt9b0XHzLemNDbIme2A 26Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7kIr2hF7iaYUJkKrFKEMtCb7w/Ee6Pat47jsdpaHYMk=; b=W7tEQ4lOkqvcyQZJaaDF3aZ48OhIvZljWkdkliWmk4nKPC/u+vEpzTq+BryZVMJBpd dy9S6+oAwl1JmwCnWL83e9C71drm32EeX74bzOGNNHfPUxu69SWJrW+09XAKHCQl1VYO X0FzULj7rBzgy/feNVNKrSKhmyxosdaEE4Cfb3Lh6vmEvbn3/BMFsvoJ1kxPpOZc3iVD G9lpxp7UN2wPrEr+uk78udYmmC57+OSjAc2nOqpSk65SJbRy4SVsqNoAiEC5g9nawAYo ICYM+OYsPD6Jlh+MrCiS4PB9Y55+R+KQb2LjQSsCUXFMZNpFPspdJFttdfdzRLw0F1k/ Uk3w== X-Gm-Message-State: APjAAAUu3c+j3SLObUH1YpQ0F0svvDOo32II3fsP6mIRuzxn9PKXh8tQ dSDxTtRnwRubgQMPSr+bQ+6H/gvALRqp+SZ6hEe690g+6hc= X-Google-Smtp-Source: APXvYqyaY6p56Lo8YntPIL7mlNj0EMpWpVS2lnMautKK//JLmqjR/QEUHk2sYVpFgEoO4LWC5ZohNnvSszZzvvbkIIs= X-Received: by 2002:a02:b01c:: with SMTP id p28mr9139644jah.130.1559023857144; Mon, 27 May 2019 23:10:57 -0700 (PDT) MIME-Version: 1.0 References: <20190527205141.12344-1-ard.biesheuvel@linaro.org> <20190527205141.12344-7-ard.biesheuvel@linaro.org> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4549B5@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4549B5@SHSMSX104.ccr.corp.intel.com> From: "Ard Biesheuvel" Date: Tue, 28 May 2019 08:10:44 +0200 Message-ID: Subject: Re: [edk2-devel] [PATCH v2 6/7] BaseTools/tools_def CLANG3x ARM AARCH64: force use of C99 standard To: edk2-devel-groups-io , "Gao, Liming" Cc: Laszlo Ersek , "Wang, Jian J" , Leif Lindholm , "Kinney, Michael D" Content-Type: text/plain; charset="UTF-8" On Tue, 28 May 2019 at 02:17, Liming Gao wrote: > > Ard: > Is there any impact with new option? If no behavior change, I am OK for this patch. Reviewed-by: Liming Gao > We don't rely on anything provided by the C11 standard, so it should not result in a behavior change. I do wonder whether x86 may be affected as well, though. Jian, did you try building OpenSSL 1.1.1b for x86 with the CLANG38 toolchain with a recent version of Clang? > >-----Original Message----- > >From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] > >Sent: Tuesday, May 28, 2019 4:52 AM > >To: devel@edk2.groups.io > >Cc: Ard Biesheuvel ; Laszlo Ersek > >; Gao, Liming ; Wang, Jian J > >; Leif Lindholm ; Kinney, > >Michael D > >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 > > ^~~~~~~~~~~~~~~~~~~~~~~~~~ > > 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 > >--- > > 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 > > > >