From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"dann.frazier@canonical.com" <dann.frazier@canonical.com>,
Pedro Falcato <pedro.falcato@gmail.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>
Cc: "Feng, Bob C" <bob.c.feng@intel.com>,
"Gao, Liming" <gaoliming@byosoft.com.cn>,
"Chen, Christine" <yuwei.chen@intel.com>
Subject: Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets
Date: Thu, 30 Jun 2022 00:09:54 +0000 [thread overview]
Message-ID: <CO1PR11MB49294DF1687600934594567DD2BA9@CO1PR11MB4929.namprd11.prod.outlook.com> (raw)
In-Reply-To: <YrzfUckOIznW9j0B@xps13.dannf>
What is the default when -march is not specified?
Mike
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of dann frazier
> Sent: Wednesday, June 29, 2022 4:25 PM
> To: Pedro Falcato <pedro.falcato@gmail.com>
> Cc: edk2-devel-groups-io <devel@edk2.groups.io>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>;
> Chen, Christine <yuwei.chen@intel.com>
> Subject: Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets
>
> On Wed, Jun 29, 2022 at 11:06:01PM +0100, Pedro Falcato wrote:
> > This may be a strong opinion but I would consider toolchains that
> > explicitly change the default -march from the well understood x86-64 (which
> > all 64-bit processors support) to be totally broken. If a distro wants to
> > switch the -march for the packages, override CFLAGS :)
>
> Opinion noted. But is there a downside to edk2 being explicit about
> its target CPU level on x86-64, given it already does so for IA32 and
> ARM?
>
> -dann
>
> > On Wed, Jun 29, 2022 at 10:57 PM dann frazier <dann.frazier@canonical.com>
> > wrote:
> >
> > > Ping on this. Would it be more palatable if I limited the change only
> > > to tested toolchains (gcc/clang)? Alternatively, is there a way to
> > > submit this code to CI to verify the !(gcc|clang) variants?
> > >
> > > -dann
> > >
> > > On Fri, Jun 10, 2022 at 12:09:18PM -0600, dann frazier wrote:
> > > > From: dann frazier <dann.frazier@canonical.com>
> > > >
> > > > Some Linux distributions are experimenting with builds that target a
> > > > higher x86-64 psABI, such as x86-64-v3. To avoid inheriting these
> > > > compiler defaults in edk2 builds, and therefore breaking compatibility
> > > > with machines using older CPUs, explicitly target the generic x86-64
> > > > psABI. This is similar to how we explicitly specify the cpu type for
> > > > some other architectures (-march=i586 for IA32, -march=armv7-a for ARM).
> > > >
> > > > Spot tested with OVMF builds using GCC5 and CLANG38.
> > > >
> > > > Signed-off-by: dann frazier <dann.frazier@canonical.com>
> > > > ---
> > > > BaseTools/Conf/tools_def.template | 20 ++++++++++----------
> > > > 1 file changed, 10 insertions(+), 10 deletions(-)
> > > >
> > > > diff --git a/BaseTools/Conf/tools_def.template
> > > b/BaseTools/Conf/tools_def.template
> > > > index adcd23f727..569d16fb3e 100755
> > > > --- a/BaseTools/Conf/tools_def.template
> > > > +++ b/BaseTools/Conf/tools_def.template
> > > > @@ -1885,7 +1885,7 @@ DEFINE GCC_DEPS_FLAGS = -MMD -MF
> > > $@.deps
> > > > DEFINE GCC48_ALL_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS)
> > > -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
> > > > DEFINE GCC48_IA32_X64_DLINK_COMMON = -nostdlib
> > > -Wl,-n,-q,--gc-sections -z common-page-size=0x20
> > > > DEFINE GCC48_IA32_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m32
> > > -march=i586 -malign-double -fno-stack-protector -D EFI32
> > > -fno-asynchronous-unwind-tables -Wno-address
> > > > -DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64
> > > -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))"
> > > -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie
> > > -fno-asynchronous-unwind-tables -Wno-address
> > > > +DEFINE GCC48_X64_CC_FLAGS = DEF(GCC48_ALL_CC_FLAGS) -m64
> > > -march=x86-64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))"
> > > -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie
> > > -fno-asynchronous-unwind-tables -Wno-address
> > > > DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON)
> > > -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
> > > > DEFINE GCC48_IA32_X64_DLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON)
> > > -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)
> > > -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
> > > > DEFINE GCC48_IA32_DLINK2_FLAGS =
> > > -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
> > > > @@ -2613,15 +2613,15 @@ NOOPT_CLANG38_IA32_DLINK2_FLAGS =
> > > DEF(GCC5_IA32_DLINK2_FLAGS) -O0
> > > > *_CLANG38_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
> > > DEF(CLANG38_X64_TARGET)
> > > > *_CLANG38_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
> > > DEF(CLANG38_X64_TARGET)
> > > >
> > > > -DEBUG_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > > -flto DEF(CLANG38_X64_TARGET) -g
> > > > +DEBUG_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g
> > > > DEBUG_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS)
> > > -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie
> > > -mcmodel=small
> > > > DEBUG_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3
> > > >
> > > > -RELEASE_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > > -flto DEF(CLANG38_X64_TARGET)
> > > > +RELEASE_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)
> > > > RELEASE_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS)
> > > -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie
> > > -mcmodel=small
> > > > RELEASE_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3
> > > >
> > > > -NOOPT_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0
> > > DEF(CLANG38_X64_TARGET) -g
> > > > +NOOPT_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g
> > > > NOOPT_CLANG38_X64_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS)
> > > -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
> > > > NOOPT_CLANG38_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O0
> > > >
> > > > @@ -2798,17 +2798,17 @@ NOOPT_CLANGPDB_IA32_DLINK2_FLAGS =
> > > > *_CLANGPDB_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
> > > DEF(CLANGPDB_X64_TARGET)
> > > > *_CLANGPDB_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
> > > DEF(CLANGPDB_X64_TARGET)
> > > >
> > > > -DEBUG_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto
> > > DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables
> > > > +DEBUG_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -gcodeview
> > > -funwind-tables
> > > > DEBUG_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB
> > > /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL
> > > /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO
> > > /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
> > > > DEBUG_CLANGPDB_X64_DLINK2_FLAGS =
> > > > DEBUG_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable
> > > >
> > > > -RELEASE_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -Oz -flto
> > > DEF(CLANGPDB_X64_TARGET) -fno-unwind-tables
> > > > +RELEASE_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -Oz -flto DEF(CLANGPDB_X64_TARGET) -fno-unwind-tables
> > > > RELEASE_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB
> > > /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32
> > > /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /DLL
> > > /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO
> > > /BASE:0 /MERGE:.rdata=.data /MLLVM:-exception-model=wineh /lldmap
> > > > RELEASE_CLANGPDB_X64_DLINK2_FLAGS =
> > > > RELEASE_CLANGPDB_X64_GENFW_FLAGS =
> > > >
> > > > -NOOPT_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -O0
> > > DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables
> > > > +NOOPT_CLANGPDB_X64_CC_FLAGS = DEF(CLANGPDB_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -O0 DEF(CLANGPDB_X64_TARGET) -gcodeview -funwind-tables
> > > > NOOPT_CLANGPDB_X64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB
> > > /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32 /FILEALIGN:32 /Machine:X64 /DLL
> > > /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO
> > > /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh /lldmap
> > > > NOOPT_CLANGPDB_X64_DLINK2_FLAGS =
> > > > NOOPT_CLANGPDB_X64_GENFW_FLAGS = --keepexceptiontable
> > > > @@ -2901,15 +2901,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =
> > > DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
> > > > *_CLANGDWARF_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS)
> > > DEF(CLANG38_X64_TARGET)
> > > > *_CLANGDWARF_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS)
> > > DEF(CLANG38_X64_TARGET)
> > > >
> > > > -DEBUG_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > > -flto DEF(CLANG38_X64_TARGET) -g
> > > > +DEBUG_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g
> > > > DEBUG_CLANGDWARF_X64_DLINK_FLAGS =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > > > DEBUG_CLANGDWARF_X64_DLINK2_FLAGS =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> > > >
> > > > -RELEASE_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > > -flto DEF(CLANG38_X64_TARGET)
> > > > +RELEASE_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)
> > > > RELEASE_CLANGDWARF_X64_DLINK_FLAGS =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > > > RELEASE_CLANGDWARF_X64_DLINK2_FLAGS =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> > > >
> > > > -NOOPT_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0
> > > DEF(CLANG38_X64_TARGET) -g
> > > > +NOOPT_CLANGDWARF_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64
> > > -march=x86-64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone
> > > -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g
> > > > NOOPT_CLANGDWARF_X64_DLINK_FLAGS =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > > > NOOPT_CLANGDWARF_X64_DLINK2_FLAGS =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
> > > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
>
>
>
>
next prev parent reply other threads:[~2022-06-30 0:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-10 18:09 [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets dann frazier
2022-06-29 21:57 ` dann frazier
2022-06-29 22:06 ` [edk2-devel] " Pedro Falcato
2022-06-29 23:25 ` dann frazier
2022-06-30 0:09 ` Michael D Kinney [this message]
2022-06-30 0:42 ` dann frazier
2022-06-30 1:05 ` Pedro Falcato
2022-07-01 22:20 ` dann frazier
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=CO1PR11MB49294DF1687600934594567DD2BA9@CO1PR11MB4929.namprd11.prod.outlook.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