public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Andrew Fish" <afish@apple.com>
To: devel@edk2.groups.io, Laszlo Ersek <lersek@redhat.com>
Cc: "Gao, Liming" <liming.gao@intel.com>
Subject: Re: [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain
Date: Tue, 08 Oct 2019 16:08:13 -0700	[thread overview]
Message-ID: <767711D5-7C33-4703-8E97-F4F5B5A6BD5F@apple.com> (raw)
In-Reply-To: <7fc791fe-9d08-9763-ecc9-529e88b621c6@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 29212 bytes --]



> On Oct 8, 2019, at 3:29 PM, Laszlo Ersek <lersek@redhat.com> wrote:
> 
> On 10/08/19 17:02, Gao, Liming wrote:
>> Laszlo:
>> 
>>> -----Original Message-----
>>> From: Laszlo Ersek <lersek@redhat.com>
>>> Sent: Tuesday, October 1, 2019 4:42 AM
>>> To: devel@edk2.groups.io; Gao, Liming <liming.gao@intel.com>
>>> Subject: Re: [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain
>>> 
>>> Hi Liming,
>>> 
>>> On 09/27/19 09:46, Liming Gao wrote:
>>>> 1. Apply CLANG9 Linker option.
>>> 
>>> I'm confused by this, in two regards.
>>> 
>>> - Why do we refer to CLANG9 first as being in the GCC toolchain family
>>> (see near mmx/sse), and then under a totally different family name
>>> (CLANGPE?)
>> 
>> CLANGPE is used to override GCC option. GCC is used to append GCC options. 
>> You can see XCODE5 take the same way. 
>> CLANG9 tool chain doesn't recognize -z common-page-size=0x1000 option. 
>> So, here CLANGPE is used to specify /ALIGN:4096 option. 
> 
> Wait, so the "GCC" toolchain *family* applies to:
> - actual GCC toolchains (such as GCC48, GCC49, GCC5)
> - XCODE toolchains (such as XCODE5)
> - CLANG toolchains (such as CLANG9)
> 
> but the "XCODE" toolchain *family* only applies to XCODE toolchains
> (such as XCODE5), and similarly, the CLANGPE toolchain *family* only
> applies to CLANG toolchains (such as CLANG9)?
> 
> Put differently, is XCODE in two toolchain families at the same time
> (GCC and XCODE)?
> 
> Similarly, is CLANG9 in two toolchain families at the same time (GCC and
> CLANGPE)?
> 
> Wait... from "BaseTools/Conf/tools_def.template":

> 
>> #
>> #
>> # XCODE5 support
>> #
>> 
>> *_XCODE5_*_*_FAMILY            = GCC
>> *_XCODE5_*_*_BUILDRULEFAMILY   = XCODE
> 
> This makes me very unhappy. I don't know how anyone can follow this.
> 
> What is the difference between "FAMILY" and "BUILDRULEFAMILY"?
> 

> When I see
> 
>   GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
>   XCODE:*_*_*_DLINK_FLAGS =
> 
> how can I know that the first line applies due to "FAMILY", but the
> second line also applies due to "BUILDRULEFAMILY" (and overrides the
> first line)?
> 
> Hmmm....
> 
> https://edk2-docs.gitbooks.io/edk-ii-build-specification/5_meta-data_file_specifications/52_tools_def_txt.html <https://edk2-docs.gitbooks.io/edk-ii-build-specification/5_meta-data_file_specifications/52_tools_def_txt.html>
> 
> """
> FAMILY -- A flag to the build command that will be used to ensure the
>          correct commands and flags are used in the generated Makefile
>          or GNUMakefile, as well as to use the correct options for
>          independent tools, such as the ACPI compiler. This is
>          typically used to identify the type of Makefile that needs to
>          be generated.
> 
> BUILDRULEFAMILY -- This flag is used by some tool chain tags to set a
>                   special FAMILY value when processing the
>                   build_rule.txt file. Normally, the FAMILY attribute
>                   is used to identify the type of makefile the tools
>                   need to generate. Tools such as XCODE will use GCC as
>                   the FAMILY, but uses different (from GCC) processing
>                   rules. If present and if a build rule (in
>                   build_rules.txt) contains an attribute with the value
>                   specified in this entry, that rule will be processed
>                   and the rule with the FAMILY attribute will be
>                   ignored.
> """
> 
> Well, I can't say that it's entirely clear to me what applies when. :/
> 


Laszlo,

If you just have  *_*_*_*_FAMILY then that matches the statements in the INF and DSC files (It also matters for build_rule.txt) like this example for GCC [1]. 

When you have *_*_*_*_FAMILY and *_*_*_*_BUILDRULEFAMILY you get 2 levels. Thus XCODE is generally compatible with GCC so it is in that *_*_*_*_FAMILY, but if you need to do something XCODE specific you can use the XCODE *_*_*_*_BUILDRULEFAMILY. If we did not have 2 levels every place we had GCC would need XCODE and see the list [1]. Thus XCODE can use GCC when it is compatible with GCC (which is a majority of the time) and then use XCODE to have XCODE rules that are different than GCC. 

So I guess the way to describe it is XCODE inherits GCC and only needs to override when it is different.

As per usual we seem to have picked confusing names. 


> In particular because in this patch, we don't use BUILDRULEFAMILY for
> overrides in "build_rules.txt", we use BUILDRULEFAMILY for overrides in
> DSC files.
> 
> 
> Anyway, let's say that we use the following syntax for linker flag
> overrides:
> 
> [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
>  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
>  XCODE:*_*_*_DLINK_FLAGS =
>  CLANGPE: *_*_*_DLINK_FLAGS = /ALIGN:4096
> 
> Fine.
> 
> But then, why don't we similarly use:
> 
> [BuildOptions]
>  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
>  XCODE:*_*_*_CC_FLAGS                 =
>  CLANGPE:*_*_*_CC_FLAGS               =
> 
> for CC flag overrides?
> 
> Because, the proposal is:
> 
> !if $(TOOL_CHAIN_TAG) != "XCODE5" && $(TOOL_CHAIN_TAG) != "CLANG9"
>  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
> !endif
> 

Is this really the same as:
  XCODE: *_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
  GCC:*_CLANG8_*_CC_FLAGS            = -mno-mmx -mno-sse

Also for CLANG38 the above flags are part of CLANG38_ALL_CC_FLAGS. I they are needed then why are they not part of the generic tool chain definition? 

[1] git grep GCC -- *.inf *.dsc
ArmPkg/ArmPkg.dsc:93:  # Add support for GCC stack protector
ArmPkg/Drivers/ArmGic/ArmGicLib.inf:24:  GicV3/Arm/ArmGicV3.S     | GCC
ArmPkg/Library/ArmExceptionLib/ArmExceptionLib.inf:37:  Arm/ExceptionSupport.S   | GCC
ArmPkg/Library/ArmExceptionLib/ArmRelocateExceptionLib.inf:32:  Arm/ExceptionSupport.S   | GCC
ArmPkg/Library/ArmHvcLib/ArmHvcLib.inf:19:  Arm/ArmHvc.S      | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:28:  Arm/ArmLibSupport.S           | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:29:  Arm/ArmLibSupportV7.S         | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:30:  Arm/ArmV7Support.S            | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:31:  Arm/ArmV7ArchTimerSupport.S   | GCC
ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf:25:  Arm/ArmMmuLibV7Support.S   |GCC
ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf:18:  Arm/ArmSmc.S      | GCC
ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf:19:  AArch64/Reset.S   | GCC
ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf:23:  Arm/Reset.S       | GCC
ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf:57:  berkeley-softfloat-3/source/include/opts-GCC.h
ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf:92:  GCC:*_*_*_CC_FLAGS = -fno-lto -ffreestanding -Wno-unused-label
ArmPkg/Library/ArmSvcLib/ArmSvcLib.inf:18:  Arm/ArmSvc.S      | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:24:  memcpy.c             | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:25:  memset.c             | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:45:  Arm/ashrdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:46:  Arm/ashldi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:47:  Arm/div.S            | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:48:  Arm/divdi3.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:49:  Arm/divsi3.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:50:  Arm/lshrdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:51:  Arm/memmove.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:52:  Arm/modsi3.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:53:  Arm/moddi3.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:54:  Arm/muldi3.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:55:  Arm/mullu.S          | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:56:  Arm/udivsi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:57:  Arm/umodsi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:58:  Arm/udivdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:59:  Arm/umoddi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:60:  Arm/udivmoddi4.S     | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:61:  Arm/clzsi2.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:62:  Arm/ctzsi2.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:63:  Arm/ucmpdi2.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:64:  Arm/switch8.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:65:  Arm/switchu8.S       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:66:  Arm/switch16.S       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:67:  Arm/switch32.S       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:68:  Arm/sourcery.S       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:69:  Arm/uldiv.S          | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:70:  Arm/ldivmod.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:71:  Arm/lasr.S           | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:72:  Arm/llsr.S           | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:73:  Arm/llsl.S           | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:74:  Arm/uread.S          | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:75:  Arm/uwrite.S         | GCC
ArmPkg/Library/SemihostLib/SemihostLib.inf:30:  Arm/GccSemihost.S | GCC
ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibNull.inf:31:  Arm/ArmPlatformHelper.S    | GCC
ArmPlatformPkg/Library/ArmPlatformStackLib/ArmPlatformStackLib.inf:25:  Arm/ArmPlatformStackLib.S       | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf:25:  Arm/PrePeiCoreEntryPoint.S   | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf:27:  Arm/SwitchStack.S        | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf:29:  Arm/Exception.S          | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf:25:  Arm/PrePeiCoreEntryPoint.S   | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf:27:  Arm/SwitchStack.S        | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf:29:  Arm/Exception.S          | GCC
ArmPlatformPkg/PrePi/PeiMPCore.inf:24:  Arm/ModuleEntryPoint.S   | GCC
ArmPlatformPkg/PrePi/PeiUniCore.inf:24:  Arm/ModuleEntryPoint.S   | GCC
ArmVirtPkg/ArmVirtQemuKernel.dsc:90:  GCC:*_CLANG38_*_CC_FLAGS = -include $(WORKSPACE)/ArmVirtPkg/Include/Platform/Hidden.h
ArmVirtPkg/ArmVirtXen.dsc:61:  GCC:*_CLANG38_*_CC_FLAGS = -include $(WORKSPACE)/ArmVirtPkg/Include/Platform/Hidden.h
ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf:100:  GCC:*_*_*_DLINK_FLAGS = -Wl,-Bsymbolic,-pie,-T,$(MODULE_DIR)/Scripts/PrePi-PIE.lds
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:102:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:103:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:97:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:98:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:108:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:109:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:105:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:106:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:38:  Ia32/MathLShiftS64.nasm   | GCC
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:39:  Ia32/MathRShiftU64.nasm   | GCC
CryptoPkg/Library/OpensslLib/OpensslLib.inf:659:  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLib.inf:660:  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
CryptoPkg/Library/OpensslLib/OpensslLib.inf:661:  GCC:*_*_ARM_CC_FLAGS     = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLib.inf:662:  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLib.inf:663:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLib.inf:664:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLib.inf:698:  GCC:*_*_AARCH64_CC_XIPFLAGS ==
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:607:  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:608:  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:609:  GCC:*_*_ARM_CC_FLAGS     = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:610:  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:611:  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:612:  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:646:  GCC:*_*_AARCH64_CC_XIPFLAGS ==
EmbeddedPkg/EmbeddedPkg.dsc:128:  # Add support for GCC stack protector
EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf:35:# Current usage of this library expects GCC in a UNIX-like shell environment with the date command
EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf:37:  GCC:*_*_*_CC_FLAGS = -DBUILD_EPOCH=`date +%s`
EmulatorPkg/Unix/Host/Host.inf:115:   GCC:*_*_IA32_DLINK_FLAGS == -o $(BIN_DIR)/Host -m32 -L/usr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:116:   GCC:*_*_IA32_CC_FLAGS == -m32 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
EmulatorPkg/Unix/Host/Host.inf:117:   GCC:*_*_IA32_PP_FLAGS == -m32 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host.inf:118:   GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host.inf:120:   GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:121:   GCC:*_GCC5_X64_DLINK_FLAGS == -flto -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:122:   GCC:*_*_X64_CC_FLAGS == -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
EmulatorPkg/Unix/Host/Host.inf:123:   GCC:*_GCC48_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"
EmulatorPkg/Unix/Host/Host.inf:124:   GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"
EmulatorPkg/Unix/Host/Host.inf:125:   GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -flto -DUSING_LTO -Os
EmulatorPkg/Unix/Host/Host.inf:126:   GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host.inf:127:   GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host.inf:129:   GCC:*_*_*_DLINK2_FLAGS == -lpthread -ldl -lXext -lX11
FatPkg/FatPkg.dsc:23:  GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
IntelFsp2Pkg/FspSecCore/FspSecCoreM.inf:39:  RAW|Vtf0/Bin/ResetVec.ia32.raw |GCC
IntelFsp2Pkg/FspSecCore/FspSecCoreS.inf:34:  RAW|Vtf0/Bin/ResetVec.ia32.raw |GCC
IntelFsp2Pkg/FspSecCore/FspSecCoreT.inf:33:  RAW|Vtf0/Bin/ResetVec.ia32.raw |GCC
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:108:  GCC:*_*_*_CC_FLAGS = -Wno-error=maybe-uninitialized
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:37:  Ia32/CpuSleepGcc.c | GCC
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:38:  Ia32/CpuFlushTlbGcc.c | GCC
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:53:  Arm/CpuFlushTlb.S   | GCC
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:54:  Arm/CpuSleep.S      | GCC
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:57:  AArch64/CpuFlushTlb.S   | GCC
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:58:  AArch64/CpuSleep.S      | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf:37:  IoLibGcc.c    | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf:43:  IoLibGcc.c    | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicArmVirt.inf:33:  Arm/ArmVirtMmio.S       | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicArmVirt.inf:38:  AArch64/ArmVirtMmio.S   | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf:35:  IoLibGcc.c    | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf:41:  IoLibGcc.c    | GCC
MdePkg/Library/BaseLib/BaseLib.inf:157:  Ia32/GccInline.c | GCC
MdePkg/Library/BaseLib/BaseLib.inf:159:  Ia32/EnableDisableInterrupts.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:161:  Ia32/DisablePaging32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:162:  Ia32/EnablePaging32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:163:  Ia32/Mwait.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:164:  Ia32/Monitor.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:165:  Ia32/CpuIdEx.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:166:  Ia32/CpuId.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:169:  Ia32/SwapBytes64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:171:  Ia32/DivU64x32Remainder.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:172:  Ia32/ModU64x32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:173:  Ia32/DivU64x32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:174:  Ia32/MultU64x64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:175:  Ia32/MultU64x32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:176:  Ia32/RRotU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:177:  Ia32/LRotU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:178:  Ia32/ARShiftU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:179:  Ia32/RShiftU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:180:  Ia32/LShiftU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:181:  Ia32/EnableCache.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:182:  Ia32/DisableCache.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:187:  Ia32/InternalSwitchStack.nasm | GCC
MdePkg/Library/BaseLib/BaseLib.inf:311:  X64/GccInline.c | GCC
MdePkg/Library/BaseLib/BaseLib.inf:315:  ChkStkGcc.c  | GCC
MdePkg/Library/BaseLib/BaseLib.inf:351:  Arm/Math64.S                  | GCC
MdePkg/Library/BaseLib/BaseLib.inf:352:  Arm/SwitchStack.S             | GCC
MdePkg/Library/BaseLib/BaseLib.inf:353:  Arm/EnableInterrupts.S        | GCC
MdePkg/Library/BaseLib/BaseLib.inf:354:  Arm/DisableInterrupts.S       | GCC
MdePkg/Library/BaseLib/BaseLib.inf:355:  Arm/GetInterruptsState.S      | GCC
MdePkg/Library/BaseLib/BaseLib.inf:356:  Arm/SetJumpLongJump.S         | GCC
MdePkg/Library/BaseLib/BaseLib.inf:357:  Arm/CpuBreakpoint.S           | GCC
MdePkg/Library/BaseLib/BaseLib.inf:358:  Arm/MemoryFence.S             | GCC
MdePkg/Library/BaseLib/BaseLib.inf:359:  Arm/SpeculationBarrier.S      | GCC
MdePkg/Library/BaseLib/BaseLib.inf:366:  AArch64/MemoryFence.S             | GCC
MdePkg/Library/BaseLib/BaseLib.inf:367:  AArch64/SwitchStack.S             | GCC
MdePkg/Library/BaseLib/BaseLib.inf:368:  AArch64/EnableInterrupts.S        | GCC
MdePkg/Library/BaseLib/BaseLib.inf:369:  AArch64/DisableInterrupts.S       | GCC
MdePkg/Library/BaseLib/BaseLib.inf:370:  AArch64/GetInterruptsState.S      | GCC
MdePkg/Library/BaseLib/BaseLib.inf:371:  AArch64/SetJumpLongJump.S         | GCC
MdePkg/Library/BaseLib/BaseLib.inf:372:  AArch64/CpuBreakpoint.S           | GCC
MdePkg/Library/BaseLib/BaseLib.inf:373:  AArch64/SpeculationBarrier.S      | GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:82:  Arm/ScanMem.S       |GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:83:  Arm/SetMem.S        |GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:84:  Arm/CopyMem.S       |GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:85:  Arm/CompareMem.S    |GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:86:  Arm/CompareGuid.S   |GCC
MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf:28:  BaseStackCheckGcc.c  | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:43:  Ia32/InternalGetSpinLockProperties.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:44:  Ia32/GccInline.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:45:  SynchronizationGcc.c  | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:63:  Ia32/InternalGetSpinLockProperties.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:64:  X64/GccInline.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:65:  SynchronizationGcc.c  | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:74:  Arm/Synchronization.S         | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:78:  AArch64/Synchronization.S     | GCC
OvmfPkg/OvmfPkgIa32.dsc:66:  GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgIa32.dsc:70:  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
OvmfPkg/OvmfPkgIa32.dsc:78:  GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgIa32.dsc:81:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfPkgIa32.dsc:87:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfPkgIa32X64.dsc:66:  GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgIa32X64.dsc:70:  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
OvmfPkg/OvmfPkgIa32X64.dsc:74:  GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
OvmfPkg/OvmfPkgIa32X64.dsc:83:  GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgIa32X64.dsc:86:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfPkgIa32X64.dsc:92:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfPkgX64.dsc:66:  GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:70:  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
OvmfPkg/OvmfPkgX64.dsc:74:  GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
OvmfPkg/OvmfPkgX64.dsc:83:  GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgX64.dsc:86:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfPkgX64.dsc:92:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfXen.dsc:63:  GCC:RELEASE_*_*_CC_FLAGS             = -DMDEPKG_NDEBUG
OvmfPkg/OvmfXen.dsc:67:  GCC:*_*_*_CC_FLAGS                   = -mno-mmx -mno-sse
OvmfPkg/OvmfXen.dsc:71:  GCC:*_*_X64_GENFW_FLAGS   = --keepexceptiontable
OvmfPkg/OvmfXen.dsc:80:  GCC:*_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfXen.dsc:83:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
OvmfPkg/OvmfXen.dsc:89:  GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000
SecurityPkg/SecurityPkg.dsc:78:  # Add support for GCC stack protector
ShellPkg/ShellPkg.dsc:69:  # Add support for GCC stack protector
SignedCapsulePkg/SignedCapsulePkg.dsc:107:  # Add support for GCC stack protector
StandaloneMmPkg/StandaloneMmPkg.dsc:116:GCC:*_*_*_DLINK_FLAGS = -z common-page-size=0x1000 -march=armv8-a+nofp -mstrict-align
StandaloneMmPkg/StandaloneMmPkg.dsc:117:GCC:*_*_*_CC_FLAGS = -mstrict-align
UefiPayloadPkg/UefiPayloadPkgIa32.dsc:86:  GCC:*_UNIXGCC_*_CC_FLAGS       = -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayloadPkgIa32.dsc:87:  GCC:RELEASE_*_*_CC_FLAGS       = -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc:86:  GCC:*_UNIXGCC_*_CC_FLAGS       = -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc:87:  GCC:RELEASE_*_*_CC_FLAGS       = -DMDEPKG_NDEBUG

[2] git grep XCODE  -- *.inf *.dsc
CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:105:  XCODE:*_*_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:100:  XCODE:*_*_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:111:  XCODE:*_*_*_CC_FLAGS = -std=c99
CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:103:  XCODE:*_*_*_CC_FLAGS = -mmmx -msse -std=c99
CryptoPkg/Library/OpensslLib/OpensslLib.inf:686:  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLib.inf:687:  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:634:  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=c99 -Wno-error=uninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:635:  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=c99 -Wno-error=uninitialized
EmulatorPkg/EmulatorPkg.dsc:335:!if "XCODE5" not in $(TOOL_CHAIN_TAG)
EmulatorPkg/EmulatorPkg.dsc:380:!if "XCODE5" not in $(TOOL_CHAIN_TAG)
EmulatorPkg/Library/ThunkPpiList/ThunkPpiList.inf:32:   XCODE:*_*_*_DLINK_PATH == gcc
EmulatorPkg/Unix/Host/Host.inf:134:   XCODE:*_*_IA32_DLINK_PATH == gcc
EmulatorPkg/Unix/Host/Host.inf:135:   XCODE:*_*_IA32_CC_FLAGS = -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack
EmulatorPkg/Unix/Host/Host.inf:136:   XCODE:*_*_IA32_DLINK_FLAGS == -arch i386 -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon
EmulatorPkg/Unix/Host/Host.inf:137:   XCODE:*_*_IA32_ASM_FLAGS == -arch i386 -g
EmulatorPkg/Unix/Host/Host.inf:139:   XCODE:*_*_X64_DLINK_PATH == gcc
EmulatorPkg/Unix/Host/Host.inf:140:   XCODE:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon -Wl,-no_pie
EmulatorPkg/Unix/Host/Host.inf:141:   XCODE:*_*_X64_ASM_FLAGS == -g
EmulatorPkg/Unix/Host/Host.inf:142:   XCODE:*_*_X64_CC_FLAGS = -O0 -target x86_64-apple-darwin -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack "-DEFIAPI=__attribute__((ms_abi))"
MdeModulePkg/MdeModulePkg.dsc:442:!if $(TOOL_CHAIN_TAG) != "XCODE5"
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:110:  # Not add -Wno-error=maybe-uninitialized option for XCODE
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:111:  # XCODE doesn't know this option
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:112:  XCODE:*_*_*_CC_FLAGS =
OvmfPkg/OvmfPkgIa32.dsc:69:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfPkgIa32.dsc:82:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgIa32.dsc:88:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgIa32.dsc:807:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfPkgIa32X64.dsc:69:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfPkgIa32X64.dsc:87:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgIa32X64.dsc:93:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgIa32X64.dsc:820:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfPkgX64.dsc:69:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfPkgX64.dsc:87:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgX64.dsc:93:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfPkgX64.dsc:818:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfXen.dsc:66:!if $(TOOL_CHAIN_TAG) != "XCODE5"
OvmfPkg/OvmfXen.dsc:84:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfXen.dsc:90:  XCODE:*_*_*_DLINK_FLAGS =
OvmfPkg/OvmfXen.dsc:689:!if $(TOOL_CHAIN_TAG) != "XCODE5"
SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf:63:  XCODE:*_*_*_CC_FLAGS = -mmmx -msse

Thanks,

Andrew Fish

> I mean, in one case (for the linker flags), we rely on BUILDRULEFAMILY
> for specifying the override.
> 
> But in the other case (for the C compilation flags), we do not rely on
> BUILDRULEFAMILY; instead we check $(TOOL_CHAIN_TAG).
> 
> Is this difference justified? Why?
> 
> 
> The rest of your answers sounds good to me. Thanks!
> Laszlo
> 
> 


[-- Attachment #2: Type: text/html, Size: 279811 bytes --]

  reply	other threads:[~2019-10-08 23:08 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-27  7:46 [Patch 00/12] New Cross OS tool chain CLANG9 Liming Gao
2019-09-27  7:46 ` [Patch 01/12] BaseTools tools_def.template: Remove unnecessary $(DEST_DIR_DEBUG) path Liming Gao
2019-09-27  7:46 ` [Patch 02/12] BaseTools tools_def: Add CLANG9 tool chain to directly generate PE image Liming Gao
2019-09-27 10:13   ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-27  7:46 ` [Patch 03/12] BaseTools GenFw: Fix the issue to update the wrong size as SectionSize Liming Gao
2019-09-27 10:15   ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-27  7:46 ` [Patch 04/12] MdePkg Base.h: Add definition for CLANG9 tool chain Liming Gao
2019-09-27  7:46 ` [Patch 05/12] MdePkg BaseIoLibIntrinsic: Remove __inline__ attribute for IO functions Liming Gao
2019-09-30 20:35   ` [edk2-devel] " Laszlo Ersek
2019-09-30 21:11     ` Andrew Fish
2019-10-08 14:47       ` Liming Gao
2019-10-08 20:22         ` Laszlo Ersek
2019-10-10 12:32           ` Liming Gao
2019-10-10 16:32             ` Laszlo Ersek
2019-10-11  1:28               ` Liming Gao
2019-10-11 19:22               ` Jordan Justen
2019-10-12  6:18                 ` Liming Gao
2019-09-27  7:46 ` [Patch 06/12] MdeModulePkg LzmaCustomDecompressLib: Update macro to be same in CLANG tool Liming Gao
2019-09-27  7:46 ` [Patch 07/12] MdeModulePkg RegularExpressionDxe: Disable warning for CLANG9 tool chain Liming Gao
2019-09-27  7:46 ` [Patch 08/12] CryptoPkg: Append options to make CLANG9 tool chain pass build Liming Gao
2019-09-27  7:46 ` [Patch 09/12] CryptoPkg IntrinsicLib: Make _fltused always be used Liming Gao
2019-09-27  8:34   ` [edk2-devel] " Yao, Jiewen
2019-09-29  6:32     ` Liming Gao
2019-09-27  7:46 ` [Patch 10/12] EmulatorPkg: Enable CLANG9 tool chain Liming Gao
2019-09-27  7:46 ` [Patch 11/12] OvmfPkg: " Liming Gao
2019-09-30 20:42   ` [edk2-devel] " Laszlo Ersek
2019-10-08 15:02     ` Liming Gao
2019-10-08 22:29       ` Laszlo Ersek
2019-10-08 23:08         ` Andrew Fish [this message]
2019-10-09 13:43           ` Laszlo Ersek
2019-10-09 14:44             ` Liming Gao
2019-10-09 16:22               ` [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain - Andrew Fish
2019-10-10  7:35                 ` Laszlo Ersek
2019-10-10 12:18                   ` Liming Gao
2019-10-10 16:29                     ` [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain Andrew Fish
2019-10-10 16:43                     ` [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain - Laszlo Ersek
2019-10-11  1:47                       ` Liming Gao
2019-10-11  9:57                         ` Laszlo Ersek
2019-10-11  9:37               ` [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain Laszlo Ersek
2019-10-12  8:22                 ` Liming Gao
2019-09-27  7:46 ` [Patch 12/12] OvmfPkg SecMain: Add build option "-fno-omit-frame-pointer" for CLANG9 X64 Liming Gao
2019-09-30 21:09   ` [edk2-devel] " Laszlo Ersek
2019-10-08 15:09     ` Liming Gao
     [not found]     ` <15CBB488DC5DB3E9.15045@groups.io>
2019-10-10 14:08       ` Liming Gao
2019-10-10 17:35         ` Laszlo Ersek
2019-10-11  1:30           ` Liming Gao
2019-10-11  9:48             ` Laszlo Ersek
2019-09-27  8:33 ` [edk2-devel] [Patch 00/12] New Cross OS tool chain CLANG9 Yao, Jiewen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=767711D5-7C33-4703-8E97-F4F5B5A6BD5F@apple.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox