public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
	Leif Lindholm <leif.lindholm@linaro.org>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Zhu, Yonghong" <yonghong.zhu@intel.com>,
	"Shi, Steven" <steven.shi@intel.com>,
	Evan Lloyd <evan.lloyd@arm.com>
Subject: Re: [PATCH] BaseTools/tools_def: add CLANG38 LTO versions for AARCH64 and ARM
Date: Wed, 6 Dec 2017 15:28:00 +0100	[thread overview]
Message-ID: <5eb876bf-7362-0ab6-7931-76bd1b7ffd64@redhat.com> (raw)
In-Reply-To: <CAKv+Gu-LHugJxAAVo7gHj+354W5ubrU9RH6b_tnfwoFTzTOG0Q@mail.gmail.com>

On 12/06/17 15:16, Ard Biesheuvel wrote:
> On 6 December 2017 at 14:12, Laszlo Ersek <lersek@redhat.com> wrote:
>> On 12/06/17 12:39, Ard Biesheuvel wrote:
>>> Extend the CLANG38 toolchain definition so it can be used for
>>> ARM and AARCH64 as well. Note that this requires llvm-ar and
>>> the LLVMgold.so linker plugin.
>>>
>>> In preparation of doing the same for GCC5, this toolchain version
>>> also departs from the custom of using -O0 for DEBUG builds, which
>>> makes them needlessly slow. Instead, let's add a NOOPT flavor as
>>> well, and enable optimization for DEBUG like the other architectures
>>> do. (Note that this will require some trivial changes to the platform
>>> description files)
>>>
>>> Contributed-under: TianoCore Contribution Agreement 1.1
>>> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
>>> ---
>>>  BaseTools/Conf/tools_def.template | 98 +++++++++++++++++++-
>>>  1 file changed, 95 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
>>> index 91b135c2e569..6ee720d7586e 100755
>>> --- a/BaseTools/Conf/tools_def.template
>>> +++ b/BaseTools/Conf/tools_def.template
>>> @@ -399,8 +399,8 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
>>>  #                               Intel(r) ACPI Compiler from
>>>  #                               https://acpica.org/downloads
>>>  #   CLANG38  -Linux-  Requires:
>>> -#                             Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu
>>> -#                             Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 targeting x86_64-linux-gnu
>>> +#                             Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi
>>> +#                             Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi
>>>  #                        Optional:
>>>  #                             Required to build platforms or ACPI tables:
>>>  #                               Intel(r) ACPI Compiler from
>>> @@ -5652,6 +5652,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS)
>>>  *_CLANG38_*_MAKE_PATH               = make
>>>  *_CLANG38_*_*_DLL                   = ENV(CLANG38_DLL)
>>>  *_CLANG38_*_ASL_PATH                = DEF(UNIX_IASL_BIN)
>>> +*_CLANG38_*_DTC_PATH                = DEF(DTC_BIN)
>>>
>>>  *_CLANG38_*_APP_FLAGS               =
>>>  *_CLANG38_*_ASL_FLAGS               = DEF(IASL_FLAGS)
>>> @@ -5663,7 +5664,8 @@ DEFINE CLANG38_X64_PREFIX           = ENV(CLANG38_BIN)
>>>  DEFINE CLANG38_IA32_TARGET          = -target i686-pc-linux-gnu
>>>  DEFINE CLANG38_X64_TARGET           = -target x86_64-pc-linux-gnu
>>>
>>> -DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC44_ALL_CC_FLAGS) -Wno-empty-body -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-parentheses-equality -Wno-unknown-pragmas -Wno-tautological-constant-out-of-range-compare -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno-tautological-compare -Wno-unknown-warning-option -Wno-varargs
>>> +DEFINE CLANG38_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body  -Wno-varargs
>>> +DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC44_ALL_CC_FLAGS) DEF(CLANG38_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno-unknown-warning-option
>>
>> At a quite superficial look, the patch seems OK to me. I'm just curious
>> about one thing: what decides if a -Wno... option goes into
>> CLANG38_WARNING_OVERRIDES? You left some -Wno... options out of it (kept
>> them explicitly in the CLANG38_ALL_CC_FLAGS define).
>>
> 
> I split off some warning overrides that are shared between all
> architectures, and left the x86 only ones in CLANG38_ALL_CC_FLAGS

That's what I suspected; it just seemed strange that we wanted to
suppress e.g. "-Waddress" for x86 only.

... I do see the point though -- suppressing warnings is always a messy
business, so whenever we can opt for *enabling* warnings, we should. Not
inheriting a -Wno... flag does just that.


>> ... It seems like the CLANG38_ALL_CC_FLAGS is not used for the ARM /
>> AARCH64 toolchains. "ALL" becomes sort of a misnomer then. Is that OK?
>>
> 
> Yes. In tools_def land, ALL still means 'both IA32 and X64', and I
> have wasted too many cycles on trying to refactor the GCC toolchains
> to care about it.

Fair enough.

Acked-by: Laszlo Ersek <lersek@redhat.com>

Thanks!
Laszlo


  reply	other threads:[~2017-12-06 14:23 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-06 11:39 [PATCH] BaseTools/tools_def: add CLANG38 LTO versions for AARCH64 and ARM Ard Biesheuvel
2017-12-06 14:12 ` Laszlo Ersek
2017-12-06 14:16   ` Ard Biesheuvel
2017-12-06 14:28     ` Laszlo Ersek [this message]
2017-12-06 14:32       ` Ard Biesheuvel
2017-12-06 17:17 ` Leif Lindholm
2017-12-07  2:05 ` Shi, Steven
2017-12-07 11:09   ` Laszlo Ersek
2017-12-07 11:19     ` Ard Biesheuvel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5eb876bf-7362-0ab6-7931-76bd1b7ffd64@redhat.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox