From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from nwk-aaemail-lapp01.apple.com (nwk-aaemail-lapp01.apple.com [17.151.62.66]) by mx.groups.io with SMTP id smtpd.web10.290.1570576103893093575 for ; Tue, 08 Oct 2019 16:08:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=ixYrd4tv; spf=pass (domain: apple.com, ip: 17.151.62.66, mailfrom: afish@apple.com) Received: from pps.filterd (nwk-aaemail-lapp01.apple.com [127.0.0.1]) by nwk-aaemail-lapp01.apple.com (8.16.0.27/8.16.0.27) with SMTP id x98N7VOk016155; Tue, 8 Oct 2019 16:08:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=sender : from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=EofJcreUlS5kGvs2iU3jMAmGUTGUHgyDUK6hoommQMw=; b=ixYrd4tvsfbeAwIDhb5AfmoxGKIUjVNIYrjSSch3a4Of6ekrVRi71TWK5KxMCuTqFUwe orLcCU4SO5PMIi/EtL13kIq3cBDb6vv7o65IUeKhAKHyeJXfvzYFwYJWFr9V+oo+bKCt VZu8zqH5IwKKUpoD9SDzXwggdo6nCeM2OnCTdyFe+ZAPSmJZMdUJkPa97i3h+gyDgPEG brqVNxczeoXqnaCyB+aL6PL9R+z1LAT+inHRkf8gXRsiFcKl5/HMaeeaQa+DM0GCtCGl gmx7uN6LzGbSbadGhyeLqTSNpDkMebZLjBmjQ1Y4AqfgMRsJvUzle2I7G0getQKWwNmE Ug== Received: from ma1-mtap-s01.corp.apple.com (ma1-mtap-s01.corp.apple.com [17.40.76.5]) by nwk-aaemail-lapp01.apple.com with ESMTP id 2vet4b92xn-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 08 Oct 2019 16:08:21 -0700 Received: from nwk-mmpp-sz13.apple.com (nwk-mmpp-sz13.apple.com [17.128.115.216]) by ma1-mtap-s01.corp.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPS id <0PZ200LSJW9TDN80@ma1-mtap-s01.corp.apple.com>; Tue, 08 Oct 2019 16:08:19 -0700 (PDT) Received: from process_milters-daemon.nwk-mmpp-sz13.apple.com by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) id <0PZ200D00VWAHO00@nwk-mmpp-sz13.apple.com>; Tue, 08 Oct 2019 16:08:17 -0700 (PDT) X-Va-A: X-Va-T-CD: 08777febe38bb384cc57fda39d0586b7 X-Va-E-CD: 7089de0e78478859cd10a9847375a06a X-Va-R-CD: e4a2608e06c747242500bd6e6ccfdb6f X-Va-CD: 0 X-Va-ID: a82ef57b-d85d-49c2-b5d5-84b649c09bba X-V-A: X-V-T-CD: 08777febe38bb384cc57fda39d0586b7 X-V-E-CD: 7089de0e78478859cd10a9847375a06a X-V-R-CD: e4a2608e06c747242500bd6e6ccfdb6f X-V-CD: 0 X-V-ID: 4f7212b4-25be-413a-8579-335e4dddcfe8 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-10-08_09:,, signatures=0 Received: from [17.235.2.217] (unknown [17.235.2.217]) by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPSA id <0PZ200CM1W9QGR40@nwk-mmpp-sz13.apple.com>; Tue, 08 Oct 2019 16:08:15 -0700 (PDT) Sender: afish@apple.com From: "Andrew Fish" Message-id: <767711D5-7C33-4703-8E97-F4F5B5A6BD5F@apple.com> MIME-version: 1.0 (Mac OS X Mail 13.0 \(3594.4.17\)) Subject: Re: [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool chain Date: Tue, 08 Oct 2019 16:08:13 -0700 In-reply-to: <7fc791fe-9d08-9763-ecc9-529e88b621c6@redhat.com> Cc: "Gao, Liming" To: devel@edk2.groups.io, Laszlo Ersek References: <1569570395-11240-1-git-send-email-liming.gao@intel.com> <1569570395-11240-12-git-send-email-liming.gao@intel.com> <4c27bdc4-60b4-26bf-c416-c02b69ef8051@redhat.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E5124FA@SHSMSX104.ccr.corp.intel.com> <7fc791fe-9d08-9763-ecc9-529e88b621c6@redhat.com> X-Mailer: Apple Mail (2.3594.4.17) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-10-08_09:,, signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_A6EBF378-CBAE-49BA-90A7-F13A76827DE8" --Apple-Mail=_A6EBF378-CBAE-49BA-90A7-F13A76827DE8 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii > On Oct 8, 2019, at 3:29 PM, Laszlo Ersek wrote: >=20 > On 10/08/19 17:02, Gao, Liming wrote: >> Laszlo: >>=20 >>> -----Original Message----- >>> From: Laszlo Ersek >>> Sent: Tuesday, October 1, 2019 4:42 AM >>> To: devel@edk2.groups.io; Gao, Liming >>> Subject: Re: [edk2-devel] [Patch 11/12] OvmfPkg: Enable CLANG9 tool ch= ain >>>=20 >>> Hi Liming, >>>=20 >>> On 09/27/19 09:46, Liming Gao wrote: >>>> 1. Apply CLANG9 Linker option. >>>=20 >>> I'm confused by this, in two regards. >>>=20 >>> - 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?) >>=20 >> CLANGPE is used to override GCC option. GCC is used to append GCC optio= ns.=20 >> You can see XCODE5 take the same way.=20 >> CLANG9 tool chain doesn't recognize -z common-page-size=3D0x1000 option= .=20 >> So, here CLANGPE is used to specify /ALIGN:4096 option.=20 >=20 > 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) >=20 > 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)? >=20 > Put differently, is XCODE in two toolchain families at the same time > (GCC and XCODE)? >=20 > Similarly, is CLANG9 in two toolchain families at the same time (GCC and > CLANGPE)? >=20 > Wait... from "BaseTools/Conf/tools_def.template": >=20 >> # >> # >> # XCODE5 support >> # >>=20 >> *_XCODE5_*_*_FAMILY =3D GCC >> *_XCODE5_*_*_BUILDRULEFAMILY =3D XCODE >=20 > This makes me very unhappy. I don't know how anyone can follow this. >=20 > What is the difference between "FAMILY" and "BUILDRULEFAMILY"? >=20 > When I see >=20 > GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 > XCODE:*_*_*_DLINK_FLAGS =3D >=20 > 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)? >=20 > Hmmm.... >=20 > https://edk2-docs.gitbooks.io/edk-ii-build-specification/5_meta-data_fil= e_specifications/52_tools_def_txt.html >=20 > """ > 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. >=20 > 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. > """ >=20 > Well, I can't say that it's entirely clear to me what applies when. :/ >=20 Laszlo, If you just have *_*_*_*_FAMILY then that matches the statements in the I= NF and DSC files (It also matters for build_rule.txt) like this example for= GCC [1].=20 When you have *_*_*_*_FAMILY and *_*_*_*_BUILDRULEFAMILY you get 2 levels.= Thus XCODE is generally compatible with GCC so it is in that *_*_*_*_FAMIL= Y, 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 wo= uld need XCODE and see the list [1]. Thus XCODE can use GCC when it is comp= atible with GCC (which is a majority of the time) and then use XCODE to hav= e XCODE rules that are different than GCC.=20 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.=20 > 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. >=20 >=20 > Anyway, let's say that we use the following syntax for linker flag > overrides: >=20 > [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] > GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000 > XCODE:*_*_*_DLINK_FLAGS =3D > CLANGPE: *_*_*_DLINK_FLAGS =3D /ALIGN:4096 >=20 > Fine. >=20 > But then, why don't we similarly use: >=20 > [BuildOptions] > GCC:*_*_*_CC_FLAGS =3D -mno-mmx -mno-sse > XCODE:*_*_*_CC_FLAGS =3D > CLANGPE:*_*_*_CC_FLAGS =3D >=20 > for CC flag overrides? >=20 > Because, the proposal is: >=20 > !if $(TOOL_CHAIN_TAG) !=3D "XCODE5" && $(TOOL_CHAIN_TAG) !=3D "CLANG9" > GCC:*_*_*_CC_FLAGS =3D -mno-mmx -mno-sse > !endif >=20 Is this really the same as: XCODE: *_*_*_CC_FLAGS =3D -mno-mmx -mno-sse GCC:*_CLANG8_*_CC_FLAGS =3D -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?= = =20 [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/ExceptionSuppo= rt.S | GCC ArmPkg/Library/ArmExceptionLib/ArmRelocateExceptionLib.inf:32: Arm/Except= ionSupport.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= =3D -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/as= hrdi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:46: Arm/as= hldi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:47: Arm/di= v.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:48: Arm/di= vdi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:49: Arm/di= vsi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:50: Arm/ls= hrdi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:51: Arm/me= mmove.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:52: Arm/mo= dsi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:53: Arm/mo= ddi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:54: Arm/mu= ldi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:55: Arm/mu= llu.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:56: Arm/ud= ivsi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:57: Arm/um= odsi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:58: Arm/ud= ivdi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:59: Arm/um= oddi3.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:60: Arm/ud= ivmoddi4.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:61: Arm/cl= zsi2.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:62: Arm/ct= zsi2.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:63: Arm/uc= mpdi2.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:64: Arm/sw= itch8.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:65: Arm/sw= itchu8.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:66: Arm/sw= itch16.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:67: Arm/sw= itch32.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:68: Arm/so= urcery.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:69: Arm/ul= div.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:70: Arm/ld= ivmod.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:71: Arm/la= sr.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:72: Arm/ll= sr.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:73: Arm/ll= sl.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:74: Arm/ur= ead.S | GCC ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:75: Arm/uw= rite.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: Ar= m/ArmPlatformStackLib.S | GCC ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf:25: Arm/PrePeiCoreEntryPoi= nt.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/PrePeiCoreEntryPo= int.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 =3D -includ= e $(WORKSPACE)/ArmVirtPkg/Include/Platform/Hidden.h ArmVirtPkg/ArmVirtXen.dsc:61: GCC:*_CLANG38_*_CC_FLAGS =3D -include $(WOR= KSPACE)/ArmVirtPkg/Include/Platform/Hidden.h ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf:100: GCC:*_*_*_DLINK_= FLAGS =3D -Wl,-Bsymbolic,-pie,-T,$(MODULE_DIR)/Scripts/PrePi-PIE.lds CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:102: GCC:*_CLANG35_*_CC_F= LAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:103: GCC:*_CLANG38_*_CC_F= LAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:97: GCC:*_CLANG35_*_CC_FLA= GS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:98: GCC:*_CLANG38_*_CC_FLA= GS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:108: GCC:*_CLANG35_*_C= C_FLAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:109: GCC:*_CLANG38_*_C= C_FLAGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:105: GCC:*_CLANG35_*_CC_FL= AGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:106: GCC:*_CLANG38_*_CC_FL= AGS =3D -std=3Dc99 CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:38: Ia32/MathLShiftS64.na= sm | GCC CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:39: Ia32/MathRShiftU64.na= sm | GCC CryptoPkg/Library/OpensslLib/OpensslLib.inf:659: GCC:*_*_IA32_CC_FLAGS = =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -W= no-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLib.inf:660: GCC:*_*_X64_CC_FLAGS = =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -W= no-error=3Dformat -Wno-format -Wno-error=3Dunused-but-set-variable -DNO_MSA= BI_VA_FUNCS CryptoPkg/Library/OpensslLib/OpensslLib.inf:661: GCC:*_*_ARM_CC_FLAGS = =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dunused-= but-set-variable CryptoPkg/Library/OpensslLib/OpensslLib.inf:662: GCC:*_*_AARCH64_CC_FLAGS= =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-format -Wno-err= or=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLib.inf:663: GCC:*_CLANG35_*_CC_FLAGS= =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLib.inf:664: GCC:*_CLANG38_*_CC_FLAGS= =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLib.inf:698: GCC:*_*_AARCH64_CC_XIPFL= AGS =3D=3D CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:607: GCC:*_*_IA32_CC_FL= AGS =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitiali= zed -Wno-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:608: GCC:*_*_X64_CC_FLA= GS =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitiali= zed -Wno-error=3Dformat -Wno-format -Wno-error=3Dunused-but-set-variable -D= NO_MSABI_VA_FUNCS CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:609: GCC:*_*_ARM_CC_FLA= GS =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Du= nused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:610: GCC:*_*_AARCH64_CC= _FLAGS =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-format -W= no-error=3Dunused-but-set-variable CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:611: GCC:*_CLANG35_*_CC= _FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:612: GCC:*_CLANG38_*_CC= _FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:646: GCC:*_*_AARCH64_CC= _XIPFLAGS =3D=3D 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 environme= nt with the date command EmbeddedPkg/Library/VirtualRealTimeClockLib/VirtualRealTimeClockLib.inf:37= : GCC:*_*_*_CC_FLAGS =3D -DBUILD_EPOCH=3D`date +%s` EmulatorPkg/Unix/Host/Host.inf:115: GCC:*_*_IA32_DLINK_FLAGS =3D=3D -o $= (BIN_DIR)/Host -m32 -L/usr/X11R6/lib EmulatorPkg/Unix/Host/Host.inf:116: GCC:*_*_IA32_CC_FLAGS =3D=3D -m32 -g= -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/inc= lude -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=3D$(BASE_N= AME)Strings EmulatorPkg/Unix/Host/Host.inf:117: GCC:*_*_IA32_PP_FLAGS =3D=3D -m32 -E= -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h EmulatorPkg/Unix/Host/Host.inf:118: GCC:*_*_IA32_ASM_FLAGS =3D=3D -m32 -= c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h EmulatorPkg/Unix/Host/Host.inf:120: GCC:*_*_X64_DLINK_FLAGS =3D=3D -o $(= BIN_DIR)/Host -m64 -L/usr/X11R6/lib EmulatorPkg/Unix/Host/Host.inf:121: GCC:*_GCC5_X64_DLINK_FLAGS =3D=3D -f= lto -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib EmulatorPkg/Unix/Host/Host.inf:122: GCC:*_*_X64_CC_FLAGS =3D=3D -m64 -g = -fshort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/incl= ude -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=3D$(BASE_NA= ME)Strings EmulatorPkg/Unix/Host/Host.inf:123: GCC:*_GCC48_X64_CC_FLAGS =3D "-DEFIA= PI=3D__attribute__((ms_abi))" EmulatorPkg/Unix/Host/Host.inf:124: GCC:*_GCC49_X64_CC_FLAGS =3D "-DEFIA= PI=3D__attribute__((ms_abi))" EmulatorPkg/Unix/Host/Host.inf:125: GCC:*_GCC5_X64_CC_FLAGS =3D "-DEFIAP= I=3D__attribute__((ms_abi))" -flto -DUSING_LTO -Os EmulatorPkg/Unix/Host/Host.inf:126: GCC:*_*_X64_PP_FLAGS =3D=3D -m64 -E = -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h EmulatorPkg/Unix/Host/Host.inf:127: GCC:*_*_X64_ASM_FLAGS =3D=3D -m64 -c= -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h EmulatorPkg/Unix/Host/Host.inf:129: GCC:*_*_*_DLINK2_FLAGS =3D=3D -lpthr= ead -ldl -lXext -lX11 FatPkg/FatPkg.dsc:23: GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG_N= DEBUG IntelFsp2Pkg/FspSecCore/FspSecCoreM.inf:39: RAW|Vtf0/Bin/ResetVec.ia32.ra= w |GCC IntelFsp2Pkg/FspSecCore/FspSecCoreS.inf:34: RAW|Vtf0/Bin/ResetVec.ia32.ra= w |GCC IntelFsp2Pkg/FspSecCore/FspSecCoreT.inf:33: RAW|Vtf0/Bin/ResetVec.ia32.ra= w |GCC MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:108: = GCC:*_*_*_CC_FLAGS =3D -Wno-error=3Dmaybe-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 | GC= C MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:58: AArch64/CpuSleep.S | GC= C 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/A= rmVirtMmio.S | GCC MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicArmVirt.inf:38: AArch= 64/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 | G= CC 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 | G= CC MdePkg/Library/BaseLib/BaseLib.inf:352: Arm/SwitchStack.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:353: Arm/EnableInterrupts.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:354: Arm/DisableInterrupts.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:355: Arm/GetInterruptsState.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:356: Arm/SetJumpLongJump.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:357: Arm/CpuBreakpoint.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:358: Arm/MemoryFence.S | G= CC MdePkg/Library/BaseLib/BaseLib.inf:359: Arm/SpeculationBarrier.S | G= CC 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/ScanMe= m.S |GCC MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:83: Arm/SetMem= .S |GCC MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:84: Arm/CopyMe= m.S |GCC MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:85: Arm/Compar= eMem.S |GCC MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:86: Arm/Compar= eGuid.S |GCC MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf:28: BaseStackCheck= Gcc.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: Sync= hronizationGcc.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: Sync= hronizationGcc.c | GCC MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:74: Arm/= Synchronization.S | GCC MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:78: AArc= h64/Synchronization.S | GCC OvmfPkg/OvmfPkgIa32.dsc:66: GCC:RELEASE_*_*_CC_FLAGS =3D -DMD= EPKG_NDEBUG OvmfPkg/OvmfPkgIa32.dsc:70: GCC:*_*_*_CC_FLAGS =3D -mno= -mmx -mno-sse OvmfPkg/OvmfPkgIa32.dsc:78: GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECA= TED_INTERFACES OvmfPkg/OvmfPkgIa32.dsc:81: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size= = =3D0x1000 OvmfPkg/OvmfPkgIa32.dsc:87: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size= = =3D0x1000 OvmfPkg/OvmfPkgIa32X64.dsc:66: GCC:RELEASE_*_*_CC_FLAGS =3D -= DMDEPKG_NDEBUG OvmfPkg/OvmfPkgIa32X64.dsc:70: GCC:*_*_*_CC_FLAGS =3D -= mno-mmx -mno-sse OvmfPkg/OvmfPkgIa32X64.dsc:74: GCC:*_*_X64_GENFW_FLAGS =3D --keepexcept= iontable OvmfPkg/OvmfPkgIa32X64.dsc:83: GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPR= ECATED_INTERFACES OvmfPkg/OvmfPkgIa32X64.dsc:86: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-s= ize=3D0x1000 OvmfPkg/OvmfPkgIa32X64.dsc:92: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-s= ize=3D0x1000 OvmfPkg/OvmfPkgX64.dsc:66: GCC:RELEASE_*_*_CC_FLAGS =3D -DMDE= PKG_NDEBUG OvmfPkg/OvmfPkgX64.dsc:70: GCC:*_*_*_CC_FLAGS =3D -mno-= mmx -mno-sse OvmfPkg/OvmfPkgX64.dsc:74: GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiont= able OvmfPkg/OvmfPkgX64.dsc:83: GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECAT= ED_INTERFACES OvmfPkg/OvmfPkgX64.dsc:86: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size= =3D0x1000 OvmfPkg/OvmfPkgX64.dsc:92: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size= =3D0x1000 OvmfPkg/OvmfXen.dsc:63: GCC:RELEASE_*_*_CC_FLAGS =3D -DMDEPKG= _NDEBUG OvmfPkg/OvmfXen.dsc:67: GCC:*_*_*_CC_FLAGS =3D -mno-mmx= -mno-sse OvmfPkg/OvmfXen.dsc:71: GCC:*_*_X64_GENFW_FLAGS =3D --keepexceptiontabl= e OvmfPkg/OvmfXen.dsc:80: GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECATED_= INTERFACES OvmfPkg/OvmfXen.dsc:83: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0= x1000 OvmfPkg/OvmfXen.dsc:89: GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0= x1000 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 pr= otector StandaloneMmPkg/StandaloneMmPkg.dsc:116:GCC:*_*_*_DLINK_FLAGS =3D -z commo= n-page-size=3D0x1000 -march=3Darmv8-a+nofp -mstrict-align StandaloneMmPkg/StandaloneMmPkg.dsc:117:GCC:*_*_*_CC_FLAGS =3D -mstrict-al= ign UefiPayloadPkg/UefiPayloadPkgIa32.dsc:86: GCC:*_UNIXGCC_*_CC_FLAGS = = =3D -DMDEPKG_NDEBUG UefiPayloadPkg/UefiPayloadPkgIa32.dsc:87: GCC:RELEASE_*_*_CC_FLAGS = = =3D -DMDEPKG_NDEBUG UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc:86: GCC:*_UNIXGCC_*_CC_FLAGS = =3D -DMDEPKG_NDEBUG UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc:87: GCC:RELEASE_*_*_CC_FLAGS = =3D -DMDEPKG_NDEBUG [2] git grep XCODE -- *.inf *.dsc CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf:105: XCODE:*_*_*_CC_FLAGS= =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf:100: XCODE:*_*_*_CC_FLAGS = = =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf:111: XCODE:*_*_*_CC_FL= AGS =3D -std=3Dc99 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf:103: XCODE:*_*_*_CC_FLAGS = = =3D -mmmx -msse -std=3Dc99 CryptoPkg/Library/OpensslLib/OpensslLib.inf:686: XCODE:*_*_IA32_CC_FLAGS = =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-err= or=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLib.inf:687: XCODE:*_*_X64_CC_FLAGS = =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-err= or=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:634: XCODE:*_*_IA32_CC_= FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -W= no-error=3Duninitialized CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:635: XCODE:*_*_X64_CC_F= LAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -W= no-error=3Duninitialized 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 =3D=3D gcc EmulatorPkg/Unix/Host/Host.inf:134: XCODE:*_*_IA32_DLINK_PATH =3D=3D gcc EmulatorPkg/Unix/Host/Host.inf:135: XCODE:*_*_IA32_CC_FLAGS =3D -I$(WORK= SPACE)/EmulatorPkg/Unix/Host/X11IncludeHack EmulatorPkg/Unix/Host/Host.inf:136: XCODE:*_*_IA32_DLINK_FLAGS =3D=3D -a= rch i386 -o $(BIN_DIR)/Host -L/usr/X11R6/lib -lXext -lX11 -framework Carbon EmulatorPkg/Unix/Host/Host.inf:137: XCODE:*_*_IA32_ASM_FLAGS =3D=3D -arc= h i386 -g EmulatorPkg/Unix/Host/Host.inf:139: XCODE:*_*_X64_DLINK_PATH =3D=3D gcc EmulatorPkg/Unix/Host/Host.inf:140: XCODE:*_*_X64_DLINK_FLAGS =3D=3D -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 =3D=3D -g EmulatorPkg/Unix/Host/Host.inf:142: XCODE:*_*_X64_CC_FLAGS =3D -O0 -targ= et x86_64-apple-darwin -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack = "-DEFIAPI=3D__attribute__((ms_abi))" MdeModulePkg/MdeModulePkg.dsc:442:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf:110: = # Not add -Wno-error=3Dmaybe-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 =3D OvmfPkg/OvmfPkgIa32.dsc:69:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfPkgIa32.dsc:82: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgIa32.dsc:88: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgIa32.dsc:807:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfPkgIa32X64.dsc:69:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfPkgIa32X64.dsc:87: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgIa32X64.dsc:93: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgIa32X64.dsc:820:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfPkgX64.dsc:69:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfPkgX64.dsc:87: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgX64.dsc:93: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfPkgX64.dsc:818:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfXen.dsc:66:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" OvmfPkg/OvmfXen.dsc:84: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfXen.dsc:90: XCODE:*_*_*_DLINK_FLAGS =3D OvmfPkg/OvmfXen.dsc:689:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" SecurityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf:63: XCODE:*_*_*_CC_FL= AGS =3D -mmmx -msse Thanks, Andrew Fish > I mean, in one case (for the linker flags), we rely on BUILDRULEFAMILY > for specifying the override. >=20 > But in the other case (for the C compilation flags), we do not rely on > BUILDRULEFAMILY; instead we check $(TOOL_CHAIN_TAG). >=20 > Is this difference justified? Why? >=20 >=20 > The rest of your answers sounds good to me. Thanks! > Laszlo >=20 >=20 --Apple-Mail=_A6EBF378-CBAE-49BA-90A7-F13A76827DE8 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=us-ascii
On Oct 8,= 2019, at 3:29 PM, Laszlo Ersek <lersek@redhat.com> wrote:

On 10/08/19 17:02, Gao, Liming wrote:
Laszlo:
-----Origin= al Message-----
From: Laszlo Ersek <lersek@redhat.com>
Sent: Tue= sday, 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 differen= t family name
(CLANGPE?)

CLANGPE is used to override GCC option. GCC is used to append GCC op= tions. 
You= can see XCODE5 take the same way.&nb= sp;
CLANG9 tool chain doesn't recognize -z common-page= -size=3D0x1000 option. So, here CLANGPE is used to specify /ALIGN:4096 option. 
Wait, so the "GCC" toolchain *fa= mily* applies to:
- a= ctual GCC toolchains (such as GCC48, GCC49, GCC5)
- XCODE toolchains (such as XCODE5)
- CLANG toolchains (such as CLANG9)=

but the "X= CODE" 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<= /span>
CLANGPE)?

Wait... from "BaseTools/Conf/tools_def.template":


#
#
# XCODE5 supp= ort
#

*_XCODE5_*_*_FAMILY  =           =3D GCC
*_XCODE5_*_*_BUILDRULEFAMILY   =3D XCODE

This makes me very = unhappy. I don't know how anyone can follow this.

What is t= he difference between "FAMILY" and "BUILDRULEFAMILY"?

When I see

  GCC:*_*_*_DLINK_FLAGS =3D -z comm= on-page-size=3D0x1000
&= nbsp; XCODE:*_*_*_DLINK_FLAGS =3D

how can I know that = the first line applies due to "FAMILY", but the
second line also applies due to "BUILDRULEFAMILY" = (and overrides the
fir= st line)?

Hmmm....

https://ed= k2-docs.gitbooks.io/edk-ii-build-specification/5_meta-data_file_specificati= ons/52_tools_def_txt.html

"""
FAMILY -- A flag to the build command that will be used= to ensure the
 &n= bsp;       correct commands and flags ar= e used in the generated Makefile
         or GNUMakef= ile, as well as to use the correct options for
        &nb= sp;independent tools, such as the ACPI compiler. This is
       = ;  typically used to identify the type of Makefile that needs to<= /span>
    = ;     be generated.

BUILDRULEFAMIL= Y -- This flag is used by some tool chain tags to set a
       =            special F= AMILY value when processing the
           =        build_rule.txt file. Normally, th= e FAMILY attribute
&nb= sp;            =      is used to identify the type of makefile the = tools
   = ;            &n= bsp;  need to generate. Tools such as XCODE will use GCC as
    &nbs= p;            &= nbsp;the FAMILY, but uses different (from GCC) processing
      &= nbsp;           rule= s. If present and if a build rule (in
          =         build_rules.txt) contains a= n attribute with the value
           &n= bsp;      specified in this entry, that rule = will be processed

&nb= sp;            =      and the rule with the FAMILY attribute will b= e
   &nb= sp;            =   ignored.
""= "

Well, I can't say that it's entirely clear to me what app= lies when. :/


Laszlo,

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

When you have&nb= sp;*_*_*_*_FAMILY and *_*_*_*_BUILDRULEFAMILY you get 2 levels. Thus X= CODE 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 *_*_*_*_BU= ILDRULEFAMILY. If we did not have 2 levels every place we had GCC would nee= d 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 t= o 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 fo= r
overrides in "build_r= ules.txt", we use BUILDRULEFAMILY for overrides in
DSC files.


Anyway, let's say that we use the following syntax for l= inker flag
overrides:

[BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER]
 GCC:*_*_*_DLINK_FLAGS =3D -z c= ommon-page-size=3D0x1000
 XCODE:*_*_*_DLINK_FLAGS =3D

 CLANGPE: *_*_*_DLINK_FLAGS =3D /ALIGN:4096

Fine.

But then, why don't we similarly use:
[BuildOptions]
=  GCC:*_*_*_CC_FLAGS         &n= bsp;         =3D -mno-mmx -mno= -sse
 XCODE:*_*_*_= CC_FLAGS            =      =3D
 CLANGPE:*_*_*_CC_FLAGS      &n= bsp;        =3D

for= CC flag overrides?

Because, the proposal is:

!if $(TOOL_CHAIN_TAG) !=3D "XCODE5" && $(TOOL_CHAIN_TAG) != =3D "CLANG9"
 GCC= :*_*_*_CC_FLAGS           = ;        =3D -mno-mmx -mno-sse
!endif


Is this really the same as:
  XCODE: *_*_*_CC_FLAGS           &nbs= p;       =3D -mno-mmx -mno-sse
  GCC:*_CLANG8= _*_CC_FLAGS            =3D -mno-mmx -mno-sse<= /div>

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

[1] git grep GCC -- *.inf *.dsc
ArmPkg/ArmP= kg.dsc:93:<= /span>  # Add support for GCC stack protector
ArmPkg/Drivers/ArmGic/ArmGicLib.inf<= /span>:24:<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">&nbs= p; GicV3/Arm/ArmGicV3.S     | GCC
ArmPkg/Library/ArmExceptionLib/ArmExcept= ionLib.inf:37:  Arm/ExceptionSupport.S   | GCC
ArmPkg/Library/ArmExceptionLib/Arm= RelocateExceptionLib.inf:32:  Arm/ExceptionSupport.S   = ;| GCC
ArmPkg/Library/Ar= mHvcLib/ArmHvcLib.inf:19:  Arm/ArmHvc.S      | = GCC
ArmPkg/Library/ArmLib/= ArmBaseLib.inf:28:  Arm/ArmLibSupport.S        = ;   | GCC
<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">ArmP= kg/Library/ArmLib/ArmBaseLib.inf:29:  Arm/ArmLibSupportV7.S   =       | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:= 30:  Arm/ArmV7Support.S&= nbsp;           | GCC
ArmPkg/Library/ArmLib/ArmBaseLib.inf:31:  A= rm/ArmV7ArchTimerSupport.S   | GCC
ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib.inf:25: &n= bsp;Arm/ArmMmuLibV7Support.S   |GCC
ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf:18:  Arm/Ar= mSmc.S      | GCC
ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystem= Lib.inf:19:=   AArch64/Reset.S   | GCC
ArmPkg/Library/ArmSmcPsciResetSystemLib/A= rmSmcPsciResetSystemLib.inf:23:  Arm/Reset.S      &n= bsp;| GCC
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=3D"">ArmPkg/Librar= y/ArmSoftFloatLib/ArmSoftFloatLib.inf:= 57<= /span>:  berkeley-softfloat-3/source/i= nclude/opts-GCC.h=
ArmPkg/= Library/ArmSoftFloatLib/ArmSoftFloatLib.inf:<= /span>92:  GCC:*_*_*_CC_FLAGS =3D -fno-lto -ffreestanding= -Wno-unused-label
ArmPkg/Library/ArmSvcLib/ArmSvcLib.inf:18:  Arm/ArmS= vc.S      | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.in= f:24:&n= bsp; memcpy.c             |&nb= sp;GCC
ArmPkg/Library/Compile= rIntrinsicsLib/CompilerIntrinsicsLib.inf:= 25:  memset.c    = ;         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib= .inf:45:  Arm/ashrdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsL= ib/CompilerIntrinsicsLib.inf:46:  Arm/ashldi3.S      &nbs= p; | GCC
ArmPkg/Lib= rary/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:47:  Arm/div.S = ;           | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrin= sicsLib.inf:48:  Arm/divdi3.S         |&nb= sp;GCC
ArmPkg/Library/Compile= rIntrinsicsLib/CompilerIntrinsicsLib.inf:= 49:  Arm/divsi3.S   &= nbsp;     | = GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:50: &nb= sp;Arm/lshrdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/Compi= lerIntrinsicsLib.inf:51:  Arm/memmove.S        = ;| GCC
ArmPkg/Library/Co= mpilerIntrinsicsLib/CompilerIntrinsicsLib.inf= :52:  Arm/modsi3.S &= nbsp;       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.in= f:53:&n= bsp; Arm/moddi3.S         | = GCC
ArmPkg/Library/CompilerIntrinsic= sLib/CompilerIntrinsicsLib.inf:54<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:  Arm/muldi3.S     &nbs= p;   | GCC
= Arm= Pkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:55:  Arm/mul= lu.S          | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIn= trinsicsLib.inf:56:  Arm/udivsi3.S        |&nbs= p;GCC
ArmPkg/Library/Compile= rIntrinsicsLib/CompilerIntrinsicsLib.inf:= 57:  Arm/umodsi3.S   =     | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:58: &nb= sp;Arm/udivdi3.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/Compi= lerIntrinsicsLib.inf:59:  Arm/umoddi3.S        = ;| GCC
ArmPkg/Library/Co= mpilerIntrinsicsLib/CompilerIntrinsicsLib.inf= :60:  Arm/udivmoddi4.S&nb= sp;    | GCC=
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:61: &nb= sp;Arm/clzsi2.S         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/Co= mpilerIntrinsicsLib.inf:62:  Arm/ctzsi2.S       &nbs= p; | GCC
ArmPkg/Lib= rary/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:63:  Arm/ucmpdi2.S&= nbsp;       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.in= f:64:&n= bsp; Arm/switch8.S        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/= CompilerIntrinsicsLib.inf:65:  Arm/switchu8.S      = ; | GCC
ArmPkg/Libr= ary/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:66:  Arm/switch16.S=        | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.in= f:67:&n= bsp; Arm/switch32.S       | GCC
ArmPkg/Library/CompilerIntrinsicsLib/= CompilerIntrinsicsLib.inf:68:  Arm/sourcery.S      = ; | GCC
ArmPkg/Libr= ary/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:69:  Arm/uldiv.S&nb= sp;         | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsL= ib.inf:70:<= /span>  Arm/ldivmod.S        | = GCC
ArmPkg/Library/CompilerIntrinsic= sLib/CompilerIntrinsicsLib.inf:71<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:  Arm/lasr.S      =     | GCC
ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:72: &nb= sp;Arm/llsr.S           | GCC
ArmPkg/Library/CompilerIntrinsicsL= ib/CompilerIntrinsicsLib.inf:73:  Arm/llsl.S       &= nbsp;   | GCC=
= ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf:74:  A= rm/uread.S          | GCC
ArmPkg/Library/CompilerIntrinsicsLib/Compi= lerIntrinsicsLib.inf:75:  Arm/uwrite.S        =  | GCC
ArmPkg/Libra= ry/SemihostLib/SemihostLib.inf:30<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:  Arm/GccSemihost.S | GCC
ArmPlatformPkg/Library/ArmPlatformLi= bNull/ArmPlatformLibNull.inf:31:  Arm/ArmPlatformHelper.S   &n= bsp;| GCC
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=3D"">ArmPlatformPk= g/Library/ArmPlatformStackLib/ArmPlatformStackLib.inf:25:  Arm/ArmPlatfo= rmStackLib.S       | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf<= /span>:25:<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">&nbs= p; Arm/PrePeiCoreEntryPoint.S   | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCor= e.inf:27:  Arm/SwitchStack.S        | GCC
ArmPlatformPkg/PrePeiCore/Pre= PeiCoreMPCore.inf:29:  Arm/Exception.S         =  | GCC
ArmPlatformP= kg/PrePeiCore/PrePeiCoreUniCore.inf:25:  Arm/PrePeiCoreEntryPoint.S = ;  | GCC
ArmPl= atformPkg/PrePeiCore/PrePeiCoreUniCore.inf:27:  Arm/SwitchStack.S  =       | GCC
ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf:29:  Arm/Exce= ption.S          | GCC
ArmPlatformPkg/PrePi/PeiMPCore.inf:24:  A= rm/ModuleEntryPoint.S   | = GCC
ArmPlatformPkg/PrePi/PeiUniCore.inf:24:  Arm/Modu= leEntryPoint.S   | GCC
ArmVirtPkg/ArmVirtQemuKernel.dsc:90:  GCC:*_CLANG38_*_CC_FLAGS =3D -include $(W= ORKSPACE)/ArmVirtPkg/Include/Platform/Hidden.h
ArmVirtPkg/ArmVirtXen.dsc:61: &= nbsp;GCC:*_CLANG38_*_= CC_FLAGS =3D -include $(WORKSPACE)/ArmVirtPkg/Include/Platform/Hidden.h
<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">ArmV= irtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf:100:  GCC:*_*_*_DLINK_FLAGS =3D -Wl,-Bsymbolic,= -pie,-T,$(MODULE_DIR)/Scripts/PrePi-PIE.lds
CryptoPkg/Library/BaseCryptLib/B= aseCryptLib.inf:102:  GCC= :*_CLANG35_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/B= aseCryptLib.inf:103:  GCC= :*_CLANG38_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/P= eiCryptLib.inf:97:  GCC<= /span>:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/PeiCr= yptLib.inf:98:  GCC:*= _CLANG38_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/RuntimeCry= ptLib.inf:108:  GCC:*= _CLANG35_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/RuntimeCry= ptLib.inf:109:  GCC:*= _CLANG38_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/SmmCryptLi= b.inf:105:<= /span>  GCC:*_CLA= NG35_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/BaseCryptLib/SmmCryptLib.in= f:106:&= nbsp; GCC:*_CLANG38= _*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf:38: = ; Ia32/MathLShiftS64.nasm   | GCC
CryptoPkg/Library/IntrinsicLib/IntrinsicLi= b.inf:39:  Ia32/MathRShiftU64.nasm   | GCC
CryptoPkg/Library/OpensslLib/OpensslLi= b.inf:659:<= /span>  GCC:*_*_I= A32_CC_FLAGS    =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-= error=3Dmaybe-uninitialized -Wno-error=3Dunused-but-set-variable
CryptoPkg/L= ibrary/OpensslLib/OpensslLib.inf:660:  GCC:*_*_X64_CC_FLAGS     =3D -U_WIN32= -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dfo= rmat -Wno-format -Wno-error=3Dunused-but-set-variable -DNO_MSABI_VA_FUNCS
Cr= yptoPkg/Library/OpensslLib/OpensslLib.inf:661:  GCC:*_*_ARM_CC_FLAGS     = =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dunused-= but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLib.inf:662:  GCC:*_*_AARCH64_CC_FLAGS =3D $= (OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-format -Wno-error=3Du= nused-but-set-variable
CryptoPkg/Library/OpensslLib/OpensslLib.inf:663:  = GCC:*_CLANG35_*_CC_FLAGS= =3D -std=3Dc99 -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/Open= sslLib.inf:664:  GCC:= *_CLANG38_*_CC_FLAGS =3D -std=3Dc99 -Wno-error=3Duninitialized
=
CryptoPkg/Lib= rary/OpensslLib/OpensslLib.inf:698= :  GCC:*_*_AARCH64_CC_XIPFLAGS =3D=3D
CryptoPkg/Library/Open= sslLib/OpensslLibCrypto.inf:607:  GCC:*_*_IA32_CC_FLAGS    =3D -U_WIN32 -U_WIN6= 4 $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dunused-but= -set-variable
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:608:  <= /span>GCC:*_*_X64_CC_FLAGS = ;    =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-error=3Dmay= be-uninitialized -Wno-error=3Dformat -Wno-format -Wno-error=3Dunused-but-se= t-variable -DNO_MSABI_VA_FUNCS
CryptoPkg/Library/OpensslLib/OpensslLibCrypto= .inf:609:  GCC:*_*_AR= M_CC_FLAGS     =3D $(OPENSSL_FLAGS) -Wno-error=3Dmaybe-= uninitialized -Wno-error=3Dunused-but-set-variable
CryptoPkg/Library/Open= sslLib/OpensslLibCrypto.inf:610:  GCC:*_*_AARCH64_CC_FLAGS =3D $(OPENSSL_FLAGS) -Wno-error=3Dm= aybe-uninitialized -Wno-format -Wno-error=3Dunused-but-set-variable<= /div>
CryptoPk= g/Library/OpensslLib/OpensslLibCrypto.inf:611:  GCC:*_CLANG35_*_CC_FLAGS =3D -std=3Dc99 -Wno-e= rror=3Duninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:612: &n= bsp;GCC:*_CLANG38_*_CC_F= LAGS =3D -std=3Dc99 -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/= OpensslLibCrypto.inf:646:  GC= C:*_*_AARCH64_CC_XIPFLAGS =3D=3D
EmbeddedPkg/EmbeddedPkg.dsc<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:128: &nbs= p;# Add support for GCC=  stack protector
EmbeddedPkg/Library/VirtualRealTimeClockLib/Vir= tualRealTimeClockLib.inf:35:# Current usage of this library expects GCC in a UNIX-like shell = environment with the date command
EmbeddedPkg/Library/VirtualRealTimeClockLi= b/VirtualRealTimeClockLib.inf:37:  GCC:*_*_*_CC_FLAGS =3D -DBUILD_EPOCH=3D`date +%s`
EmulatorPkg= /Unix/Host/Host.inf:115:   GCC:*_*_IA32_DLINK_FLAGS =3D=3D -o $(BIN_DIR)/Host -m32 -L/u= sr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:116:   GCC:*_*_IA32_CC_FLAGS =3D=3D -m32 -g -fsh= ort-wchar -fno-strict-aliasing -Wall -malign-double -idirafter/usr/include = -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_ARRAY_NAME=3D$(BASE_NAME)S= trings
EmulatorPkg/Unix/Host/Host.inf:= 117= :   GCC:*_*_IA32_PP_FLAGS =3D=3D -m32 -E -x assemb= ler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host= .inf:118:   GCC:= *_*_IA32_ASM_FLAGS =3D=3D -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/A= utoGen.h
EmulatorPkg/Unix/Host/Host.inf:12= 0:   GCC:*_*_X64_DLINK_FLAGS =3D=3D -o $(BIN_DIR)/= Host -m64 -L/usr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:121:   <= /span>GCC:*_GCC5_X64_DLINK_FLAGS =3D=3D -flto -o $(BI= N_DIR)/Host -m64 -L/usr/X11R6/lib
EmulatorPkg/Unix/Host/Host.inf:122:  &= nbsp;GCC:*_*_X64_CC_F= LAGS =3D=3D -m64 -g -fshort-wchar -fno-strict-aliasing -Wall -malign-double= -idirafter/usr/include -c -include $(DEST_DIR_DEBUG)/AutoGen.h -DSTRING_AR= RAY_NAME=3D$(BASE_NAME)Strings
EmulatorPkg/Unix/Host/Host.inf:123:   = ;GCC:*_GCC48_X64_CC_FLAGS =3D "-DEFIAPI=3D__attr= ibute__((ms_abi))"
EmulatorPkg/Unix/Host/Host.inf:124:   GCC:*_= GCC49_X64_CC_FLAGS =3D "-DEFIAPI=3D__attribute__((ms_= abi))"
EmulatorPkg/Unix/Host/Host.inf:= 125= :   GCC:*_GCC5_X64_CC_FLAGS =3D "-DEFIAPI=3D__attribute__((ms_abi))" -flto= -DUSING_LTO -Os
EmulatorPkg/Unix/Host/Host.inf:126:   GCC:*_*_X64_PP_FLAGS =3D=3D -m64 -E = -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
EmulatorPkg/Unix/= Host/Host.inf:127:   GC= C:*_*_X64_ASM_FLAGS =3D=3D -m64 -c -x assembler -imacros $(DEST_DIR= _DEBUG)/AutoGen.h
EmulatorPkg/Unix/Host/Host.inf:129:   GCC:*_*_*_DLINK2_FLAGS =3D=3D -lpthr= ead -ldl -lXext -lX11
FatPkg/FatPkg.dsc:23= :  GCC:RELEASE_*_*_CC_FLAGS       &= nbsp;     =3D -DMDEPKG_NDEBUG
IntelFsp2Pkg/FspSecCore/FspSecC= oreM.inf:39= :  RAW|Vtf0/Bin/ResetVec.ia32.raw |GCC
IntelFsp2Pkg/FspSecCore/FspSecCoreS.inf<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:34:  = ;RAW|Vtf0/Bin/ResetVec.ia32.raw |GCC
IntelFsp2Pkg/FspSecCore/FspSecCoreT.inf:33:  RAW|Vtf0/Bin/ResetV= ec.ia32.raw |GCC
MdeModulePkg= /Universal/RegularExpressionDxe/RegularExpressionDxe.inf:108:  = GCC:*_*_*_CC_FLAGS =3D -Wno-err= or=3Dmaybe-uninitialized
MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:37:  I= a32/CpuSleepGcc.c | GCC=
= MdePkg/Library/BaseCpuLib/BaseCpuLib.inf:= 38:  Ia32/CpuFlushTlbGcc.c |&nb= sp;GCC
MdePkg/Library/BaseCpu= Lib/BaseCpuLib.inf:53:  Arm/CpuFlushTlb.S   | GCC
MdePkg/Library/BaseCpuLib/Ba= seCpuLib.inf:54:  Arm/CpuSleep.S      | GCC
MdePkg/Library/BaseCpuLib/Bas= eCpuLib.inf:57:  AArch64/CpuFlushTlb.S   | GCC
MdePkg/Library/BaseCpuLib/BaseCpuL= ib.inf:58:<= /span>  AArch64/CpuSleep.S      | GCC
MdePkg/Library/BaseIoLibIntrinsic/= BaseIoLibIntrinsic.inf:37:  IoLibGcc.c    | <= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">GCC
MdePkg/Library/BaseIoLibIntrinsic= /BaseIoLibIntrinsic.inf:43:  IoLibGcc.c    | = GCC
MdePkg/Library/BaseIoLibIntrinsi= c/BaseIoLibIntrinsicArmVirt.inf:33= :  Arm/ArmVirtMmio.S    = ;   | GCC
<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">MdeP= kg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicArmVirt.inf:38:  AArch64= /ArmVirtMmio.S   | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.inf:35: = ; IoLibGcc.c    | GCC
MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsicSev.i= nf:41:&= nbsp; IoLibGcc.c    | GCC
MdePkg/Library/BaseLib/BaseLib.inf:157:  Ia32/Gc= cInline.c | GCC<= /div>
MdePkg/L= ibrary/BaseLib/BaseLib.inf:159:  Ia32/EnableDisableInterrupts.nasm|&nbs= p;GCC
MdePkg/Library/BaseLib= /BaseLib.inf:161:  Ia32/DisablePaging32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:162: &nbs= p;Ia32/EnablePaging32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:163:  Ia32/Mwait.nasm| <= /span>GCC
MdePkg/Library/BaseLib/Bas= eLib.inf:164:  Ia32/Monitor.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:165:  Ia32/CpuIdEx.= nasm| GCC
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=3D"">MdePkg/Librar= y/BaseLib/BaseLib.inf:166:  Ia32/CpuId.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:169:  I= a32/SwapBytes64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:171:  Ia32/DivU64x32Remainder.= nasm| GCC
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=3D"">MdePkg/Librar= y/BaseLib/BaseLib.inf:172:  Ia32/ModU64x32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:173: &nbs= p;Ia32/DivU64x32.nasm| GCC<= /b>
MdePkg/Library/BaseLib/BaseLib.inf:174:  Ia32/MultU64x64.nasm|&nb= sp;GCC
MdePkg/Library/BaseLib= /BaseLib.inf:175:  Ia32/MultU64x32.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:176:  I= a32/RRotU64.nasm| GCC
Md= ePkg/Library/BaseLib/BaseLib.inf:177:  Ia32/LRotU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf= :178:&n= bsp; Ia32/ARShiftU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf:179:  Ia32/RShiftU64.na= sm| GCC
MdePkg/Librar= y/BaseLib/BaseLib.inf:180:  Ia32/LShiftU64.nasm| GCC
MdePkg/Library/BaseLib/BaseLib.inf<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:181: &nbs= p;Ia32/EnableCache.nasm| GC= C
MdePkg/Library/BaseLib/BaseLib.inf:182:  Ia32/DisableCache.nasm|&= nbsp;GCC
MdePkg/Library/BaseL= ib/BaseLib.inf:187:  Ia32/InternalSwitchStack.nasm | GCC
MdePkg/Library/BaseLib/BaseLib.inf:311: &= nbsp;X64/GccInline.c | GCC<= /b>
MdePkg/Library/BaseLib/BaseLib.inf:315:  ChkStkGcc.c  |=  GCC
MdePkg/Library/Base= Lib/BaseLib.inf:351:  Arm/Math64.S          &nb= sp;       | GCC
MdePkg/Library/BaseLib/BaseLib.inf:352:  Arm/SwitchStack.S=              | GCC
MdePkg/Library/BaseLib/BaseLib.inf:353: &n= bsp;Arm/EnableInterrupts.S        | GCC
MdePkg/Library/BaseLib/BaseLib.inf= :354:&n= bsp; Arm/DisableInterrupts.S       | GCC
MdePkg/Library/BaseLib/BaseL= ib.inf:355:=   Arm/GetInterruptsState.S      | = ;GCC
MdePkg/Library/BaseLib= /BaseLib.inf:356:  Arm/SetJumpLongJump.S       &nb= sp; | GCC
MdePkg/Li= brary/BaseLib/BaseLib.inf:357:  Arm/CpuBreakpoint.S    =       | GCC
MdePkg/Library/BaseLib/BaseLib.inf:<= /span>358:  Arm/MemoryFence.S = ;            | GCC
MdePkg/Library/BaseLib/BaseLib.inf<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:359: &nbs= p;Arm/SpeculationBarrier.S      | GCC
MdePkg/Library/BaseLib/BaseLib.inf= :366: &nb= sp;AArch64/MemoryFence.S            &nbs= p;| GCC
MdePkg/Librar= y/BaseLib/BaseLib.inf:367:  AArch64/SwitchStack.S     &nb= sp;       | GCC
MdePkg/Library/BaseLib/BaseLib.inf:368:  AArch64/EnableInt= errupts.S        | GCC
MdePkg/Library/BaseLib/BaseLib.inf:369:  AArch64= /DisableInterrupts.S       | GCC
MdePkg/Library/BaseLib/BaseLib.inf= :370: &nb= sp;AArch64/GetInterruptsState.S      | GCC
MdePkg/Library/BaseLib/BaseLib.inf:371:<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">&nbs= p; AArch64/SetJumpLongJump.S         |&n= bsp;GCC
MdePkg/Library/BaseLi= b/BaseLib.inf:372:  AArch64/CpuBreakpoint.S       &= nbsp;   | GCC=
= MdePkg/Library/BaseLib/BaseLib.inf:373:  AArch64/SpeculationBarrier.S&nb= sp;     | GC= C
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.inf:82:  A= rm/ScanMem.S       |<= b class=3D"">GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMemoryLibOptDxe.= inf:83:=   Arm/SetMem.S        |GCC
MdePkg/Library/BaseMemoryLibOptDxe/BaseMem= oryLibOptDxe.inf:84:  Arm/CopyMem.S       |GCC
MdePkg/Library/BaseMemoryLibO= ptDxe/BaseMemoryLibOptDxe.inf:85:  Arm/CompareMem.S    |<= /span>GCC
MdePkg/Library/BaseMemoryL= ibOptDxe/BaseMemoryLibOptDxe.inf:86:  Arm/CompareGuid.S   = ;|GCC
MdePkg/Library/BaseSta= ckCheckLib/BaseStackCheckLib.inf:28:  BaseStackCheckGcc.c  |&n= bsp;GCC
MdePkg/Library/BaseSy= nchronizationLib/BaseSynchronizationLib.inf:<= /span>43:  Ia32/InternalGetSpinLoc= kProperties.c | GCC
<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">MdeP= kg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:44:  Ia32/G= ccInline.c | GCC=
MdePkg/= Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:45:  Synchron= izationGcc.c  | G= CC
MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:63: &= nbsp;Ia32/InternalGetSpinLockProperties.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchroni= zationLib.inf:64:  X64/GccInline.c | GCC
MdePkg/Library/BaseSynchronizationLib/BaseSynchroniza= tionLib.inf:65:  SynchronizationGcc.c  | GCC
MdePkg/Library/BaseSynchronizationLib/Bas= eSynchronizationLib.inf:74:  Arm/Synchronization.S     &n= bsp;   | GCC<= /span>
M= dePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf:78:  A= Arch64/Synchronization.S     | GCC
OvmfPkg/OvmfPkgIa32.dsc:66:  <= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">GCC:RELEASE_*_*_CC_FLAGS &n= bsp;           =3D -DMDEPKG_NDEBUG
OvmfPkg/Ovm= fPkgIa32.dsc:70:  GCC<= /span>:*_*_*_CC_FLAGS               &n= bsp;   =3D -mno-mmx -mno-sse
OvmfPkg/OvmfPkgIa32.dsc:78:  GCC:*_*_*_CC_FLAGS =3D -D DIS= ABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/OvmfPkgIa32.dsc:81:  GCC:*_*_*_DLINK_FLAGS =3D -z common-p= age-size=3D0x1000
OvmfPkg/OvmfPkgIa32.dsc:= 87:  GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x= 1000
OvmfPkg/OvmfPkgIa32X64.dsc:66:  GCC:RELEASE_*_*_CC_FLAGS        =     =3D -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgIa32X64.dsc:70:  <= /span>GCC:*_*_*_CC_FLAGS &= nbsp;                 =3D -mno= -mmx -mno-sse
OvmfPkg/OvmfPkgIa32X64.dsc:7= 4:  GCC:*_*_X64_GENFW_FLAGS   =3D --keep= exceptiontable
OvmfPkg/OvmfPkgIa32X64.dsc:= 83:  GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECATED_I= NTERFACES
OvmfPkg/OvmfPkgIa32X64.dsc:86:  GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000<= /span>
O= vmfPkg/OvmfPkgIa32X64.dsc:92:  GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000
OvmfPk= g/OvmfPkgX64.dsc:66:  GCC= :RELEASE_*_*_CC_FLAGS            =  =3D -DMDEPKG_NDEBUG
OvmfPkg/OvmfPkgX64.dsc:70:  GCC:*_*_*_CC_FLAGS     &nb= sp;             =3D -mno-mmx -mno-sse
= Ovm= fPkg/OvmfPkgX64.dsc:74:  GC= C:*_*_X64_GENFW_FLAGS   =3D --keepexceptiontable
<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">Ovmf= Pkg/OvmfPkgX64.dsc:83:  GC= C:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECATED_INTERFACES
OvmfPkg/Ov= mfPkgX64.dsc:86:  GCC<= /span>:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000
OvmfPkg/OvmfPkgX64.ds= c:92:&n= bsp; GCC:*_*_*_DLIN= K_FLAGS =3D -z common-page-size=3D0x1000
OvmfPkg/OvmfXen.dsc:63:  = GCC:RELEASE_*_*_CC_FLAGS &= nbsp;           =3D -DMDEPKG_NDEBUG
OvmfPkg/Ov= mfXen.dsc:67:  GCC:*= _*_*_CC_FLAGS                 =   =3D -mno-mmx -mno-sse
OvmfPkg/OvmfXen.dsc:71:  GCC:*_*_X64_GENFW_FLAGS  &nb= sp;=3D --keepexceptiontable
OvmfPkg/OvmfXen.dsc:80:  GCC:*_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEP= RECATED_INTERFACES
OvmfPkg/OvmfXen.dsc:= 83<= /span>:  = GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x100= 0
OvmfPkg/OvmfXen.dsc:89:  GCC:*_*_*_DLINK_FLAGS =3D -z common-page-size=3D0x1000
Securi= tyPkg/SecurityPkg.dsc:78:  # Add support for GCC stack protector
ShellPkg/ShellPkg.dsc<= /span>:69:<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">&nbs= p; # Add support for G= CC stack protector
SignedCapsulePkg/SignedCapsulePkg.dsc= :107: &nb= sp;# Add support for GCC stack protector
StandaloneMmPkg/StandaloneMmPkg.dsc:116:GCC:*_*_*_DLINK_FLAGS =3D -z common-page-= size=3D0x1000 -march=3Darmv8-a+nofp -mstrict-align
StandaloneMmPkg/Standa= loneMmPkg.dsc:117:GCC:*_*_*_CC_FLA= GS =3D -mstrict-align
UefiPayloadPkg/UefiPayloadPkgIa32.dsc:86:  <= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">GCC:*_UNIXGCC_*_CC_FLAGS       = = =3D -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayloadPkgIa32.dsc:87:  <= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">GCC:RELEASE_*_*_CC_FLAGS &n= bsp;     =3D -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayloadPkgIa3= 2X64.dsc:86= :  GCC:*= _UNIXGCC_*_CC_FLAGS&n= bsp;      =3D -DMDEPKG_NDEBUG
UefiPayloadPkg/UefiPayload= PkgIa32X64.dsc:87:  GCC<= /span>:RELEASE_*_*_CC_FLAGS       =3D -DMDEPKG_NDEBUG

[2] git grep XCODE<= span style=3D"color: rgb(0, 0, 0); font-family: Menlo; font-size: 11px;" cl= ass=3D"">  -- *.inf *.dsc
CryptoPkg/Library/Base= CryptLib/BaseCryptLib.inf:105:  XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/Base= CryptLib/PeiCryptLib.inf:100:  XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/Base= CryptLib/RuntimeCryptLib.inf:111:  XCODE:*_*_*_CC_FLAGS =3D -std=3Dc99
CryptoPkg/Library/Base= CryptLib/SmmCryptLib.inf:103:  XCODE:*_*_*_CC_FLAGS =3D -mmmx -msse -std=3Dc99
=
CryptoPkg/Lib= rary/OpensslLib/OpensslLib.inf:686= :  XCODE:*_*_IA32_CC_FLAGS   =3D -mmmx -msse -U= _WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Duninitialized
Cr= yptoPkg/Library/OpensslLib/OpensslLib.inf:687:  XCODE:*_*_X64_CC_FLAGS    =3D -= mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc99 -Wno-error=3Dun= initialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf:634:  XCODE:*_*_IA32_CC_FLAGS =   =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -w -std=3Dc9= 9 -Wno-error=3Duninitialized
CryptoPkg/Library/OpensslLib/OpensslLibCrypto.i= nf:635:=   XCODE:*_*_X6= 4_CC_FLAGS    =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) -w -std=3Dc99 -Wno-error=3Duninitialized
EmulatorPkg/EmulatorPkg.dsc:335:!if "= XCODE5" not in $(TOOL_CH= AIN_TAG)
EmulatorPkg/EmulatorPkg.dsc:380:!if "XCODE5" not in $(TOOL_CHAIN_TAG)
EmulatorPkg/Library/ThunkPpi= List/ThunkPpiList.inf:32:   XCODE:*_*_*_DLINK_PATH =3D=3D gcc
EmulatorPkg/Unix/Host/Host.= inf:134:   XCODE= :*_*_IA32_DLINK_PATH =3D=3D gcc
EmulatorPkg/Unix/Host/Host.inf:135:  &= nbsp;XCODE:*_*_IA32_CC_= FLAGS =3D -I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack
<= div style=3D"margin: 0px; font-stretch: normal; font-size: 11px; line-heigh= t: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=3D"">EmulatorPkg/U= nix/Host/Host.inf:136:   XCODE:*_*_IA32_DLINK_FLAGS =3D=3D -arch i386 -o $(BIN_DIR)/H= ost -L/usr/X11R6/lib -lXext -lX11 -framework Carbon
EmulatorPkg/Unix/Host/= Host.inf:137:   XCODE:*_*_IA32_ASM_FLAGS =3D=3D -arch i386 -g
EmulatorPkg/Unix/Host/Host.i= nf:139:=    XCODE:= *_*_X64_DLINK_PATH =3D=3D gcc
EmulatorPkg/Unix/Host/Host.inf:140:   = XCODE:*_*_X64_DLINK_FLAG= S =3D=3D -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 =3D=3D -g<= /div>
Emulator= Pkg/Unix/Host/Host.inf:142:   XCODE:*_*_X64_CC_FLAGS =3D -O0 -target x86_64-apple-darwin -= I$(WORKSPACE)/EmulatorPkg/Unix/Host/X11IncludeHack "-DEFIAPI=3D__attribute_= _((ms_abi))"
MdeModulePkg/MdeModulePkg.dsc:442:!if $(TOOL_CHAIN_TAG) !=3D "<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">XCODE5"
MdeModulePkg/Universal= /RegularExpressionDxe/RegularExpressionDxe.inf:110:  # Not add -Wno-err= or=3Dmaybe-uninitialized option for XCODE
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpres= sionDxe.inf:111:  # X= CODE doesn't know this option
MdeModulePkg/Universal/RegularExp= ressionDxe/RegularExpressionDxe.inf:112:  <= b class=3D"">XCODE:*_*_*_CC_FLAGS =3D
OvmfPkg/OvmfPkgIa32.dsc= :69:!if $(TOOL= _CHAIN_TAG) !=3D "XCODE5= "
OvmfPkg/OvmfPkgIa32.dsc:82<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:  XCODE:*_*_*_DLINK_FLAGS =3D
OvmfPkg/OvmfPkgIa32.dsc:88:  <= /span>XCODE:*_*_*_DLINK_FLAGS = =3D
OvmfPkg/OvmfPkgIa32.dsc:807= :!if $(TOOL_CHAIN_TAG) !=3D "XCODE5"
OvmfPkg/OvmfPkgIa32X64.dsc<= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(56, 1= 85, 199);" class=3D"">:69:!if $(TOOL_= CHAIN_TAG) !=3D "XCODE5"=
= OvmfPkg/OvmfPkgIa32X64.dsc:87:  XCODE:*_*_*_DLINK_FLAGS =3D
OvmfPkg/OvmfPkgIa32X64.dsc= :93: &nbs= p;XCODE:*_*_*_DLINK_FLAG= S =3D
OvmfPkg/OvmfPkgIa32X64.dsc:820:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5"
OvmfPkg/OvmfPkgX64.dsc:69:!if $(TOOL_CH= AIN_TAG) !=3D "XCODE<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">5"
Ov= mfPkg/OvmfPkgX64.dsc:87:  XC= ODE:*_*_*_DLINK_FLAGS =3D
OvmfPkg/OvmfPkgX64.dsc:93:  <= span style=3D"font-variant-ligatures: no-common-ligatures; color: rgb(202, = 51, 35);" class=3D"">XCODE:*_*_*_DLINK_FLAGS =3D
OvmfP= kg/OvmfPkgX64.dsc:818:!if $(TOOL_CHAIN_TAG) !=3D "= XCODE5"
OvmfPkg/OvmfXen.dsc:66:!if $(TOOL_CHAIN_TAG) !=3D "XCODE5"
OvmfPkg/OvmfXen.dsc= :84:= &nb= sp; XCODE:*_*_*_DLI= NK_FLAGS =3D
OvmfPkg/OvmfXen.dsc:90= :  XCODE:*_*_*_DLINK_FLAGS =3D
OvmfPkg/OvmfXen.dsc:689:!if $(TOOL_CH= AIN_TAG) !=3D "XCODE<= span style=3D"font-variant-ligatures: no-common-ligatures;" class=3D"">5"
Se= curityPkg/RandomNumberGenerator/RngDxe/RngDxe.inf:63:  XCODE:*_*_*_CC_FLAGS =3D -mmmx -msse

Thanks,

Andrew Fish=

I mean, in one case (for the linker flags), we rely on B= UILDRULEFAMILY
for spec= ifying the override.

But in the other case (for the C comp= ilation 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!<= /span>
Laszlo


--Apple-Mail=_A6EBF378-CBAE-49BA-90A7-F13A76827DE8--