[edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets

Pedro Falcato pedro.falcato at gmail.com
Wed Jun 29 22:06:01 UTC 2022


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 :)

On Wed, Jun 29, 2022 at 10:57 PM dann frazier <dann.frazier at 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 at 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 at 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
> >
>
>
> 
>
>
>

-- 
Pedro Falcato


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#90912): https://edk2.groups.io/g/devel/message/90912
Mute This Topic: https://groups.io/mt/91674193/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20220629/b942b735/attachment-0001.htm>


More information about the edk2-devel-archive mailing list