As a first step towards disentangling the arguments passed to the various flavors of GCC we support, refactor the CC flags so that we distinguish more clearly between toolchains that generate PE/COFF directly (for IA32 and X86 only) and toolchains that generate ELF only.
Note that this does not modify the options passed that are ultimately passed to GCC, although it does deduplicate ARM and AARCH64 since those toolchains were passing both GCC_ALL_CC_FLAGS and GCC44_ALL_CC_FLAGS, which overlap to a great extent. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> --- BaseTools/Conf/tools_def.template | 35 ++++++++++---------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 5aa703996554..78c2d0a64599 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -3807,12 +3807,14 @@ NOOPT_DDK3790xASL_IPF_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF DEBUG_*_*_OBJCOPY_ADDDEBUGFLAG = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_NAME).debug RELEASE_*_*_OBJCOPY_ADDDEBUGFLAG = -DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe -DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe -DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -minline-int-divide-min-latency -DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft -DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables +DEFINE GCC_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -Wno-address -Wno-unused-but-set-variable -c -include AutoGen.h +DEFINE GCC_ALL_PE_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) +DEFINE GCC_ALL_ELF_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings +DEFINE GCC_IA32_CC_PE_FLAGS = DEF(GCC_ALL_PE_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe +DEFINE GCC_X64_CC_PE_FLAGS = DEF(GCC_ALL_PE_CC_FLAGS) -Os -mno-red-zone -mno-stack-arg-probe +DEFINE GCC_IPF_CC_FLAGS = DEF(GCC_ALL_ELF_CC_FLAGS) -Os -minline-int-divide-min-latency +DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_ELF_CC_FLAGS) -Os -mword-relocations -mlittle-endian -mabi=aapcs -mapcs -fno-short-enums -save-temps -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft +DEFINE GCC_AARCH64_CC_FLAGS = DEF(GCC_ALL_ELF_CC_FLAGS) -Os -mcmodel=large -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -fsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-builtin -Wno-address -fno-asynchronous-unwind-tables DEFINE GCC_DLINK_FLAGS_COMMON = -nostdlib --pie DEFINE GCC_DLINK2_FLAGS_COMMON = --script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds DEFINE GCC_IA32_X64_DLINK_COMMON = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections @@ -3837,9 +3839,8 @@ DEFINE GCC_IPF_RC_FLAGS = -I binary -O elf64-ia64-little -B ia64 DEFINE GCC_ARM_RC_FLAGS = -I binary -O elf32-littlearm -B arm --rename-section .data=.hii DEFINE GCC_AARCH64_RC_FLAGS = -I binary -O elf64-littleaarch64 -B aarch64 --rename-section .data=.hii -DEFINE GCC44_ALL_CC_FLAGS = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -Wno-address -Wno-unused-but-set-variable -ffunction-sections -fdata-sections -c -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m32 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -DEFINE GCC44_X64_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large -fno-asynchronous-unwind-tables +DEFINE GCC44_IA32_CC_FLAGS = DEF(GCC_ALL_ELF_CC_FLAGS) -m32 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables +DEFINE GCC44_X64_CC_FLAGS = DEF(GCC_ALL_ELF_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -DNO_BUILTIN_VA_FUNCS -mno-red-zone -Wno-address -mcmodel=large -fno-asynchronous-unwind-tables DEFINE GCC44_IA32_X64_DLINK_COMMON = -nostdlib -n -q --gc-sections -z common-page-size=0x20 DEFINE GCC44_IA32_X64_ASLDLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry ReferenceAcpiTable -u ReferenceAcpiTable DEFINE GCC44_IA32_X64_DLINK_FLAGS = DEF(GCC44_IA32_X64_DLINK_COMMON) --entry $(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map @@ -3868,7 +3869,7 @@ DEFINE GCC46_X64_DLINK_FLAGS = DEF(GCC45_X64_DLINK_FLAGS) DEFINE GCC46_X64_DLINK2_FLAGS = DEF(GCC45_X64_DLINK2_FLAGS) DEFINE GCC46_ASM_FLAGS = DEF(GCC45_ASM_FLAGS) DEFINE GCC46_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian -DEFINE GCC46_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector +DEFINE GCC46_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector DEFINE GCC46_ARM_DLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) --oformat=elf32-littlearm DEFINE GCC46_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_ASLDLINK_FLAGS) --oformat=elf32-littlearm @@ -3884,7 +3885,7 @@ DEFINE GCC47_ASM_FLAGS = DEF(GCC46_ASM_FLAGS) DEFINE GCC47_ARM_ASM_FLAGS = DEF(GCC46_ARM_ASM_FLAGS) DEFINE GCC47_AARCH64_ASM_FLAGS = $(ARCHASM_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian DEFINE GCC47_ARM_CC_FLAGS = DEF(GCC46_ARM_CC_FLAGS) -mno-unaligned-access -DEFINE GCC47_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC44_ALL_CC_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) +DEFINE GCC47_AARCH64_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) DEFINE GCC47_ARM_DLINK_FLAGS = DEF(GCC46_ARM_DLINK_FLAGS) DEFINE GCC47_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) DEFINE GCC47_AARCH64_DLINK2_FLAGS = --defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON) @@ -3969,7 +3970,7 @@ DEFINE GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS) *_UNIXGCC_IA32_VFRPP_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)gcc *_UNIXGCC_IA32_RC_PATH = DEF(UNIXGCC_IA32_PETOOLS_PREFIX)objcopy -*_UNIXGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_UNIXGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_PE_FLAGS) *_UNIXGCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) *_UNIXGCC_IA32_OBJCOPY_FLAGS = *_UNIXGCC_IA32_NASM_FLAGS = -f win32 @@ -3989,7 +3990,7 @@ DEFINE GCC49_AARCH64_ASLDLINK_FLAGS = DEF(GCC48_AARCH64_ASLDLINK_FLAGS) *_UNIXGCC_X64_RC_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)objcopy *_UNIXGCC_X64_OBJCOPY_PATH = DEF(UNIXGCC_X64_PETOOLS_PREFIX)objcopy -*_UNIXGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_UNIXGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_PE_FLAGS) *_UNIXGCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) *_UNIXGCC_X64_OBJCOPY_FLAGS = *_UNIXGCC_X64_NASM_FLAGS = -f win64 @@ -4730,7 +4731,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_CYGGCC_IA32_RC_PATH = DEF(CYGWIN_BINIA32)objcopy *_CYGGCC_IA32_OBJCOPY_PATH = DEF(CYGWIN_BINIA32)objcopy -*_CYGGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_CYGGCC_IA32_CC_FLAGS = DEF(GCC_IA32_CC_PE_FLAGS) *_CYGGCC_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) *_CYGGCC_IA32_OBJCOPY_FLAGS = *_CYGGCC_IA32_NASM_FLAGS = -f win32 @@ -4751,7 +4752,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_CYGGCC_X64_RC_PATH = DEF(CYGWIN_BINX64)objcopy *_CYGGCC_X64_OBJCOPY_PATH = DEF(CYGWIN_BINX64)objcopy -*_CYGGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_CYGGCC_X64_CC_FLAGS = DEF(GCC_X64_CC_PE_FLAGS) *_CYGGCC_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) *_CYGGCC_X64_OBJCOPY_FLAGS = *_CYGGCC_X64_NASM_FLAGS = -f win64 @@ -4838,7 +4839,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_CYGGCCxASL_IA32_ASLDLINK_PATH = DEF(CYGWIN_BINIA32)ld *_CYGGCCxASL_IA32_RC_PATH = DEF(CYGWIN_BINIA32)objcopy -*_CYGGCCxASL_IA32_CC_FLAGS = DEF(GCC_IA32_CC_FLAGS) +*_CYGGCCxASL_IA32_CC_FLAGS = DEF(GCC_IA32_CC_PE_FLAGS) *_CYGGCCxASL_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) ################## @@ -4856,7 +4857,7 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(ARCHCC_FLAGS) *_CYGGCCxASL_X64_ASLDLINK_PATH = DEF(CYGWIN_BINX64)ld *_CYGGCCxASL_X64_RC_PATH = DEF(CYGWIN_BINX64)objcopy -*_CYGGCCxASL_X64_CC_FLAGS = DEF(GCC_X64_CC_FLAGS) +*_CYGGCCxASL_X64_CC_FLAGS = DEF(GCC_X64_CC_PE_FLAGS) *_CYGGCCxASL_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) ################## -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel