On Tue, Jun 28, 2016 at 4:18 PM, Shi, Steven <steven....@intel.com> wrote: > +DEFINE CLANG38_ALL_CC_FLAGS = -c -fshort-wchar -fno-strict-aliasing > -Wall -Werror -Wno-array-bounds -Wno-empty-body -ffunction-sections > -fdata-sections -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings > -fno-stack-protector -fno-builtin -mms-bitfields -Wno-address > -Wno-shift-negative-value -Wno-parentheses-equality -Wno-unknown-pragmas > -Wno-tautological-constant-out-of-range-compare > -Wno-incompatible-library-redeclaration -target x86_64-pc-linux-gnu > -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float > -mno-implicit-float > -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang > -funsigned-char -fno-ms-extensions -fno-common -Wno-null-dereference > -Wno-tautological-compare > +
By default you add the x86_64-pc-linux-gnu target for all architectures, which is wrong. > +DEFINE CLANG38_ALL_DLINK_FLAGS = -flto -nostdlib -Wl,-n -Wl,-q > -Wl,--gc-sections -z common-page-size=0x40 -Wl,--entry,$(IMAGE_ENTRY_POINT) > -Wl,-u,$(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map > +DEFINE CLANG38_IA32_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 > -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > +DEFINE CLANG38_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 > -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds > + > +########################### > +# CLANG38 IA32 definitions > +########################### > +*_CLANG38_IA32_OBJCOPY_PATH = DEF(GCC49_IA32_PREFIX)objcopy > +*_CLANG38_IA32_CC_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_SLINK_PATH = DEF(CLANG38_IA32_PREFIX)llvm-ar > +*_CLANG38_IA32_DLINK_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_ASLDLINK_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_ASM_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_PP_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_VFRPP_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_ASLCC_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_ASLPP_PATH = DEF(CLANG38_IA32_PREFIX)clang > +*_CLANG38_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy > + > +*_CLANG38_IA32_ASLCC_FLAGS = -x c -Os -m32 -target > x86_64-pc-linux-gnu -flto And you used the wrong target again here. Maybe you could use a definition, like for the CLANG35 target, and add DEF(CLANG38_IA32_TARGET) where appropriate. I attached a patch (on top of your current patch) that does this to better explain what I am saying. What do you think?
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index d401031..2d595c5 100755 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -7442,9 +7442,6 @@ RELEASE_RVCTCYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_F *_CLANG38_*_*_DLL = ENV(CLANG38_DLL) *_CLANG38_*_ASL_PATH = DEF(UNIX_IASL_BIN) -*_CLANG38_*_PP_FLAGS = DEF(GCC_PP_FLAGS) -target x86_64-pc-linux-gnu -*_CLANG38_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) -target x86_64-pc-linux-gnu -*_CLANG38_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) -target x86_64-pc-linux-gnu *_CLANG38_*_APP_FLAGS = *_CLANG38_*_ASL_FLAGS = DEF(IASL_FLAGS) *_CLANG38_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) @@ -7452,6 +7449,9 @@ RELEASE_RVCTCYGWIN_ARM_CC_FLAGS = "$(CCPATH_FLAG)" $(ARCHCC_FLAGS) $(PLATFORM_F DEFINE CLANG38_IA32_PREFIX = ENV(CLANG38_BIN) DEFINE CLANG38_X64_PREFIX = ENV(CLANG38_BIN) +DEFINE CLANG38_IA32_TARGET = -target i686-pc-linux-gnu +DEFINE CLANG38_X64_TARGET = -target x86_64-pc-linux-gnu + DEFINE CLANG38_ALL_CC_FLAGS = -c -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -Wno-empty-body -ffunction-sections -fdata-sections -include AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -fno-stack-protector -fno-builtin -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-parentheses-equality -Wno-unknown-pragmas -Wno-tautological-constant-out-of-range-compare -Wno-incompatible-library-redeclaration -target x86_64-pc-linux-gnu -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -fno-common -Wno-null-dereference -Wno-tautological-compare DEFINE CLANG38_ALL_DLINK_FLAGS = -flto -nostdlib -Wl,-n -Wl,-q -Wl,--gc-sections -z common-page-size=0x40 -Wl,--entry,$(IMAGE_ENTRY_POINT) -Wl,-u,$(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map @@ -7473,16 +7473,19 @@ DEFINE CLANG38_X64_DLINK2_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 -Wl,--s *_CLANG38_IA32_ASLPP_PATH = DEF(CLANG38_IA32_PREFIX)clang *_CLANG38_IA32_RC_PATH = DEF(GCC49_IA32_PREFIX)objcopy -*_CLANG38_IA32_ASLCC_FLAGS = -x c -Os -m32 -target x86_64-pc-linux-gnu -flto +*_CLANG38_IA32_ASLCC_FLAGS = -x c -Os -m32 DEF(CLANG38_IA32_TARGET) -flto *_CLANG38_IA32_ASLDLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_i386 -Wl,--entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable -*_CLANG38_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386 -DEBUG_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 -g -RELEASE_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 +*_CLANG38_IA32_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET) +DEBUG_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 -g DEF(CLANG38_IA32_TARGET) +RELEASE_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) *_CLANG38_IA32_DLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386 *_CLANG38_IA32_DLINK2_FLAGS = DEF(CLANG38_IA32_DLINK2_FLAGS) *_CLANG38_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS) *_CLANG38_IA32_OBJCOPY_FLAGS = *_CLANG38_IA32_NASM_FLAGS = -f elf32 +*_CLANG38_IA32_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET) +*_CLANG38_IA32_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET) ########################## # CLANG38 X64 definitions @@ -7499,16 +7502,19 @@ RELEASE_CLANG38_IA32_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m32 -D EFI32 -O *_CLANG38_X64_ASLPP_PATH = DEF(CLANG38_X64_PREFIX)clang *_CLANG38_X64_RC_PATH = DEF(GCC49_X64_PREFIX)objcopy -*_CLANG38_X64_ASLCC_FLAGS = -x c -Os -m64 -target x86_64-pc-linux-gnu -flto +*_CLANG38_X64_ASLCC_FLAGS = -x c -Os -m64 -flto DEF(CLANG38_X64_TARGET) *_CLANG38_X64_ASLDLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_x86_64 -Wl,--entry,ReferenceAcpiTable -Wl,-u,ReferenceAcpiTable -Wl,-pie -mcmodel=small -*_CLANG38_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 -target x86_64-pc-linux-gnu -DEBUG_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -g -Oz -flto -RELEASE_CLANG38_X64_CC_FLAGS = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto +*_CLANG38_X64_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) -m64 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 -g -Oz -flto DEF(CLANG38_X64_TARGET) +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) *_CLANG38_X64_DLINK_FLAGS = DEF(CLANG38_ALL_DLINK_FLAGS) -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small *_CLANG38_X64_DLINK2_FLAGS = DEF(CLANG38_X64_DLINK2_FLAGS) *_CLANG38_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) *_CLANG38_X64_OBJCOPY_FLAGS = *_CLANG38_X64_NASM_FLAGS = -f elf64 +*_CLANG38_X64_PP_FLAGS = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET) +*_CLANG38_X64_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET) #################################################################################### #
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel