* [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets @ 2022-06-10 18:09 dann frazier 2022-06-29 21:57 ` dann frazier 0 siblings, 1 reply; 8+ messages in thread From: dann frazier @ 2022-06-10 18:09 UTC (permalink / raw) To: Bob Feng, Liming Gao, Yuwei Chen; +Cc: devel 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 -- 2.36.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 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 0 siblings, 1 reply; 8+ messages in thread From: dann frazier @ 2022-06-29 21:57 UTC (permalink / raw) To: Bob Feng, Liming Gao, Yuwei Chen; +Cc: devel 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 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-29 21:57 ` dann frazier @ 2022-06-29 22:06 ` Pedro Falcato 2022-06-29 23:25 ` dann frazier 0 siblings, 1 reply; 8+ messages in thread From: Pedro Falcato @ 2022-06-29 22:06 UTC (permalink / raw) To: edk2-devel-groups-io, dann.frazier; +Cc: Bob Feng, Liming Gao, Yuwei Chen [-- Attachment #1: Type: text/plain, Size: 10269 bytes --] 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@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 > > > > > > > > -- Pedro Falcato [-- Attachment #2: Type: text/html, Size: 11672 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-29 22:06 ` [edk2-devel] " Pedro Falcato @ 2022-06-29 23:25 ` dann frazier 2022-06-30 0:09 ` Michael D Kinney 2022-06-30 1:05 ` Pedro Falcato 0 siblings, 2 replies; 8+ messages in thread From: dann frazier @ 2022-06-29 23:25 UTC (permalink / raw) To: Pedro Falcato; +Cc: edk2-devel-groups-io, Bob Feng, Liming Gao, Yuwei Chen 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 > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-29 23:25 ` dann frazier @ 2022-06-30 0:09 ` Michael D Kinney 2022-06-30 0:42 ` dann frazier 2022-06-30 1:05 ` Pedro Falcato 1 sibling, 1 reply; 8+ messages in thread From: Michael D Kinney @ 2022-06-30 0:09 UTC (permalink / raw) To: devel@edk2.groups.io, dann.frazier@canonical.com, Pedro Falcato, Kinney, Michael D Cc: Feng, Bob C, Gao, Liming, Chen, Christine 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-30 0:09 ` Michael D Kinney @ 2022-06-30 0:42 ` dann frazier 0 siblings, 0 replies; 8+ messages in thread From: dann frazier @ 2022-06-30 0:42 UTC (permalink / raw) To: Kinney, Michael D Cc: edk2-devel-groups-io, Pedro Falcato, Feng, Bob C, Gao, Liming, Chen, Christine [-- Attachment #1: Type: text/plain, Size: 12697 bytes --] On Wed, Jun 29, 2022, 18:10 Kinney, Michael D <michael.d.kinney@intel.com> wrote: > What is the default when -march is not specified? > Whatever your compiler was built to target by default. Today that's x86-64 pretty much everywhere. But it's possible some distros may change that, and I don't think we want edk2 builds changing if they happen to be built on one of them. -dann 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [-- Attachment #2: Type: text/html, Size: 17190 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-29 23:25 ` dann frazier 2022-06-30 0:09 ` Michael D Kinney @ 2022-06-30 1:05 ` Pedro Falcato 2022-07-01 22:20 ` dann frazier 1 sibling, 1 reply; 8+ messages in thread From: Pedro Falcato @ 2022-06-30 1:05 UTC (permalink / raw) To: dann frazier; +Cc: edk2-devel-groups-io, Bob Feng, Liming Gao, Yuwei Chen [-- Attachment #1: Type: text/plain, Size: 11986 bytes --] GCC 5.4 documentation ( https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/x86-Options.html#x86-Options) doesn't include x86-64. I assume that specific option was added somewhere in the last 2-3 years when this x86-64-v* concept was added? I went looking around in linux and they don't seem to specify anything of sorts either. I can't speak for ARM but for IA32 it's pretty logic: the Pentium 1 (i586) was the first processor with CPUID, RDTSC, RD/WRMSR, etc. Essentials for firmware code that will never really even run on a processor that old. On Thu, Jun 30, 2022 at 12:25 AM dann frazier <dann.frazier@canonical.com> wrote: > 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 > > > > > > > > > > > > > > > > > > > > > > > > > -- Pedro Falcato [-- Attachment #2: Type: text/html, Size: 15160 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [edk2-devel] [PATCH] BaseTools/tools_def.txt: Add -march=x86-64 for X64 CLANG and GCC targets 2022-06-30 1:05 ` Pedro Falcato @ 2022-07-01 22:20 ` dann frazier 0 siblings, 0 replies; 8+ messages in thread From: dann frazier @ 2022-07-01 22:20 UTC (permalink / raw) To: Pedro Falcato; +Cc: edk2-devel-groups-io, Bob Feng, Liming Gao, Yuwei Chen Hi Pedro, Yeah, apparently GCC didn't document it until 8.1.0: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=c7cb6c178884 But it appears to have been introduced far earlier - best I can tell, in 4.1: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=3fec9fa9b726 It seems to be unrelated to the introduction of x86-64-v*, which was in 11.1: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=324bec558e95 I don't speak GCC source fluently, so it's possible I could've misinterpreted those commits, so I did some testing. Ubuntu 16.04 had compilers based on GCC 5.4.0 and clang 4.0. Both accept -march=x86-64: $ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gcc hello.c -o hello -march=x86-64 $ clang-4.0 --version clang version 4.0.0-1ubuntu1~16.04.2 (tags/RELEASE_400/rc1) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin $ clang-4.0 hello.c -o hello -march=x86-64 $ Going all the way back to Ubuntu 12.04, which included compilers based on GCC 4.4.7 and clang 3.3: $ gcc-4.4 --version gcc-4.4 (Ubuntu/Linaro 4.4.7-1ubuntu2) 4.4.7 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gcc-4.4 test.c -o test -march=x86-64 $ clang --version Ubuntu clang version 3.3-5ubuntu4~precise1 (branches/release_33) (based on LLVM 3.3) Target: x86_64-pc-linux-gnu Thread model: posix $ clang test.c -o test -march=x86-64 $ -dann On Thu, Jun 30, 2022 at 02:05:52AM +0100, Pedro Falcato wrote: > GCC 5.4 documentation ( > https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/x86-Options.html#x86-Options) > doesn't include x86-64. I assume that specific option was added somewhere > in the last 2-3 years when this x86-64-v* concept was added? > > I went looking around in linux and they don't seem to specify anything of > sorts either. > > I can't speak for ARM but for IA32 it's pretty logic: the Pentium 1 (i586) > was the first processor with CPUID, RDTSC, RD/WRMSR, etc. Essentials for > firmware code that will never really even run on a processor that old. > > On Thu, Jun 30, 2022 at 12:25 AM dann frazier <dann.frazier@canonical.com> > wrote: > > > 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-07-01 22:20 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 2022-06-30 0:42 ` dann frazier 2022-06-30 1:05 ` Pedro Falcato 2022-07-01 22:20 ` dann frazier
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox