public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
@ 2023-03-28 17:30 Rebecca Cran
  2023-03-28 17:30 ` [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call Rebecca Cran
                   ` (15 more replies)
  0 siblings, 16 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:30 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Update the toolchain definitions:

- Delete the CLANG35 and CLANG38 toolchains, and replace CLANG38 with
  CLANGDWARF, updating it to support ARM and AARCH64 in addition to X64
and IA32.

- Remove GCC48 and GCC49.

- Remove VS2008, VS2010, VS2012 and VS2013.

- Remove EBC compiler definitions. Full removal of EBC support from the
  various packages etc. will be done in a follow-up patch series.

- Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS definitions.

- Remove unused CYGWIN_ definitions.

- Rename GCC5 to GCC.

Personal GitHub PR: https://github.com/tianocore/edk2/pull/4158
GitHub branch: https://github.com/bcran/edk2/tree/clangdwarf

Note: CI will fail due to changes that are needed in the edk2-basetools
and containers repositories.

Changes from v1 to v2:

- Added a commit to delete GCC48 and GCC49, rename GCC5 to GCC and
  update the flags for other toolchains to work with the new GCC
  definitions.

- Bumped VERSION from 2.00 to 3.00 to inform users that they should
  updated their Conf/tools_def.txt.

Rebecca Cran (13):
  OvmfPkg: Replace static struct initialization with ZeroMem call
  CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler
    flags
  BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
  BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions
  BaseTools: Remove VS2008-VS2013 remnants
  MdePkg: Remove VS2008-VS2013 remnants
  edksetup.bat: Remove VS2008-VS2013 remnants
  BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs
  BaseTools: Remove EBC (EFI Byte Code) compiler definitions
  OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF
  Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC
  BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template
  Bump tools_def.txt VERSION to 3.0

 UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc               |    4 +-
 IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc                             |   12 +-
 OvmfPkg/OvmfPkgX64.dsc                                              |    2 +-
 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf                     |    3 +-
 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf                      |    3 +-
 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf                  |    3 +-
 CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf                      |    3 +-
 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf                      |    3 +-
 CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf         |    3 +-
 CryptoPkg/Library/OpensslLib/OpensslLib.inf                         |    5 +-
 CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf                    |    5 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                   |    5 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFull.inf                     |    5 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf                |    5 +-
 EmulatorPkg/Unix/Host/Host.inf                                      |    6 +-
 MdePkg/Include/Ia32/ProcessorBind.h                                 |    8 +-
 MdePkg/Include/X64/ProcessorBind.h                                  |    8 +-
 OvmfPkg/Library/PlatformInitLib/MemDetect.c                         |    4 +-
 OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c           |    5 -
 .azurepipelines/Ubuntu-GCC5.yml                                     |    4 +-
 .azurepipelines/templates/platform-build-run-steps.yml              |    2 +-
 .azurepipelines/templates/pr-gate-build-job.yml                     |    2 +-
 .azurepipelines/templates/pr-gate-steps.yml                         |    2 +-
 ArmPlatformPkg/Scripts/Makefile                                     |    2 +-
 ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml               |    4 +-
 ArmVirtPkg/PlatformCI/ReadMe.md                                     |    2 +-
 BaseTools/Conf/tools_def.template                                   | 2528 ++++----------------
 BaseTools/Edk2ToolsBuild.py                                         |    2 +-
 BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py |    2 +-
 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py           |   62 +-
 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml |    4 +-
 BaseTools/Scripts/SetVisualStudio.bat                               |   22 +-
 BaseTools/Scripts/ShowEnvironment.bat                               |   44 -
 BaseTools/get_vsvars.bat                                            |   13 -
 BaseTools/set_vsprefix_envs.bat                                     |   64 -
 BaseTools/toolsetup.bat                                             |   24 +-
 DynamicTablesPkg/Readme.md                                          |   10 +-
 EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml              |    4 +-
 EmulatorPkg/PlatformCI/ReadMe.md                                    |    2 +-
 EmulatorPkg/Readme.md                                               |    8 +-
 EmulatorPkg/build.sh                                                |   14 +-
 OvmfPkg/CloudHv/README                                              |    2 +-
 OvmfPkg/IntelTdx/README                                             |    4 +-
 OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml                  |    4 +-
 OvmfPkg/PlatformCI/ReadMe.md                                        |    2 +-
 OvmfPkg/README                                                      |    4 +-
 OvmfPkg/build.sh                                                    |   12 +-
 PrmPkg/Readme.md                                                    |    6 +-
 ReadMe.rst                                                          |  102 +-
 UnitTestFrameworkPkg/ReadMe.md                                      |    8 +-
 edksetup.bat                                                        |    6 +-
 51 files changed, 592 insertions(+), 2471 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 68+ messages in thread

* [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
@ 2023-03-28 17:30 ` Rebecca Cran
  2023-03-28 22:40   ` Yao, Jiewen
  2023-03-28 17:31 ` [PATCH v2 02/13] CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler flags Rebecca Cran
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:30 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Replace the static struct initialization with a call to ZeroMem to avoid
generating a call to memset in certain build configurations.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 OvmfPkg/Library/PlatformInitLib/MemDetect.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
index 38cece9173e8..0bcdfb83721f 100644
--- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
+++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
@@ -608,10 +608,12 @@ PlatformAddressWidthFromCpuid (
 {
   UINT32   RegEax, RegEbx, RegEcx, RegEdx, Max;
   UINT8    PhysBits;
-  CHAR8    Signature[13] = { 0 };
+  CHAR8    Signature[13];
   BOOLEAN  Valid         = FALSE;
   BOOLEAN  Page1GSupport = FALSE;
 
+  ZeroMem (Signature, sizeof (Signature));
+
   AsmCpuid (0x80000000, &RegEax, &RegEbx, &RegEcx, &RegEdx);
   *(UINT32 *)(Signature + 0) = RegEbx;
   *(UINT32 *)(Signature + 4) = RegEdx;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 02/13] CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler flags
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
  2023-03-28 17:30 ` [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Rebecca Cran
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

With the removal of CLANG35 and CLANG38 and the update of the CLANGDWARF
toolchain definition in Conf/tools_def.txt update the compiler flags in
BaseCryptLib and OpensslLib.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf             |  3 +-
 CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf              |  3 +-
 CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf          |  3 +-
 CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf              |  3 +-
 CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf              |  3 +-
 CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf |  3 +-
 CryptoPkg/Library/OpensslLib/OpensslLib.inf                 |  3 +-
 CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf            |  3 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf           |  3 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFull.inf             |  3 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf        |  3 +-
 BaseTools/Conf/tools_def.template                           | 86 +-------------------
 12 files changed, 13 insertions(+), 106 deletions(-)

diff --git a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
index 5be1724f0852..d99337a9ea39 100644
--- a/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
@@ -110,8 +110,7 @@ [BuildOptions]
   #
   # suppress the following warnings so we do not break the build with warnings-as-errors:
   #
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
 
   XCODE:*_*_*_CC_FLAGS = -std=c99
diff --git a/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
index 66261138a00b..5203941c75c1 100644
--- a/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf
@@ -97,8 +97,7 @@ [BuildOptions]
   #
   # suppress the following warnings so we do not break the build with warnings-as-errors:
   #
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
 
   XCODE:*_*_*_CC_FLAGS = -std=c99
diff --git a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
index 07dbc0e7a8bd..ea64d2aa72a9 100644
--- a/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
@@ -106,8 +106,7 @@ [BuildOptions]
   #
   # suppress the following warnings so we do not break the build with warnings-as-errors:
   #
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
 
   XCODE:*_*_*_CC_FLAGS = -std=c99
diff --git a/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
index 4ad59b7bbc59..426cab2c5c8f 100644
--- a/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
@@ -81,8 +81,7 @@ [BuildOptions]
   #
   # suppress the following warnings so we do not break the build with warnings-as-errors:
   #
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
 
   XCODE:*_*_*_CC_FLAGS = -std=c99
diff --git a/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
index ab1993087167..df345a8996e0 100644
--- a/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
@@ -105,6 +105,5 @@ [BuildOptions]
 
   XCODE:*_*_*_CC_FLAGS = -mmmx -msse -std=c99
 
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
diff --git a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
index 80261794470f..1f0f11c22cc5 100644
--- a/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
+++ b/CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf
@@ -78,8 +78,7 @@ [BuildOptions]
   #
   # suppress the following warnings so we do not break the build with warnings-as-errors:
   #
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=incompatible-pointer-types
 
   XCODE:*_*_*_CC_FLAGS = -std=c99
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
index 86a00b1c4b2a..003e17cb8e17 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
@@ -639,8 +639,7 @@ [BuildOptions]
   GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
   GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
   GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
   GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
index 2e4f95909b51..dded0b66806b 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
@@ -687,8 +687,7 @@ [BuildOptions]
   #
   GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
   GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
   GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
index 637d4769e8ca..523d766f6be0 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
@@ -589,8 +589,7 @@ [BuildOptions]
   GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
   GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
   GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
   GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
index c5f90221fc66..9baf0cbfb42c 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
@@ -694,8 +694,7 @@ [BuildOptions]
   GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
   GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
   GCC:*_*_LOONGARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized -Wno-format -Wno-error=unused-but-set-variable
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
   GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
index 076295244a2a..beb8e6986a4a 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
@@ -742,8 +742,7 @@ [BuildOptions]
   #
   GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-set-variable
   GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
-  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
-  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
+  GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
   GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 471eb67c0c83..2f0b804acef3 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -2479,90 +2479,8 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS       = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-un
 
 ####################################################################################
 #
-# CLANG35   - This configuration is used to compile under Linux to produce
-#             PE/COFF binaries using the clang compiler and assembler (v3.5 and up)
-#             and GNU linker
-#
-####################################################################################
-*_CLANG35_*_*_FAMILY             = GCC
-
-*_CLANG35_*_MAKE_PATH            = make
-*_CLANG35_*_*_DLL                = ENV(CLANG35_DLL)
-*_CLANG35_*_ASL_PATH             = DEF(UNIX_IASL_BIN)
-
-*_CLANG35_*_PP_FLAGS             = DEF(GCC_PP_FLAGS)
-*_CLANG35_*_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS)
-*_CLANG35_*_APP_FLAGS            =
-*_CLANG35_*_ASL_FLAGS            = DEF(IASL_FLAGS)
-*_CLANG35_*_ASL_OUTFLAGS         = DEF(IASL_OUTFLAGS)
-*_CLANG35_*_DTCPP_FLAGS          = DEF(GCC_DTCPP_FLAGS)
-
-*_CLANG35_*_CC_PATH              = ENV(CLANG35_BIN)clang
-*_CLANG35_*_ASM_PATH             = ENV(CLANG35_BIN)clang
-*_CLANG35_*_PP_PATH              = ENV(CLANG35_BIN)clang
-*_CLANG35_*_VFRPP_PATH           = ENV(CLANG35_BIN)clang
-*_CLANG35_*_ASLCC_PATH           = ENV(CLANG35_BIN)clang
-*_CLANG35_*_ASLPP_PATH           = ENV(CLANG35_BIN)clang
-*_CLANG35_*_DLINK_PATH           = ENV(CLANG35_BIN)clang
-*_CLANG35_*_ASLDLINK_PATH        = ENV(CLANG35_BIN)clang
-*_CLANG35_*_DEPS_FLAGS           = DEF(GCC_DEPS_FLAGS)
-
-DEFINE CLANG35_ARM_TARGET        = -target arm-linux-gnueabi
-DEFINE CLANG35_AARCH64_TARGET    = -target aarch64-linux-gnu
-
-DEFINE CLANG35_WARNING_OVERRIDES = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable
-DEFINE CLANG35_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG35_ARM_TARGET) DEF(CLANG35_WARNING_OVERRIDES)
-DEFINE CLANG35_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG35_AARCH64_TARGET) -mcmodel=small DEF(CLANG35_WARNING_OVERRIDES)
-
-##################
-# CLANG35 ARM definitions
-##################
-*_CLANG35_ARM_SLINK_PATH         = ENV(CLANG35_ARM_PREFIX)ar
-*_CLANG35_ARM_RC_PATH            = ENV(CLANG35_ARM_PREFIX)objcopy
-
-*_CLANG35_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)
-*_CLANG35_ARM_ASLDLINK_FLAGS     = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)
-*_CLANG35_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANG35_ARM_DLINK_FLAGS        = DEF(CLANG35_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)
-*_CLANG35_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
-*_CLANG35_ARM_PLATFORM_FLAGS     = -march=armv7-a -mkernel -Qunused-arguments
-*_CLANG35_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANG35_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)
-*_CLANG35_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANG35_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_ARM_TARGET)
-*_CLANG35_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)
-
-  DEBUG_CLANG35_ARM_CC_FLAGS     = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O1
-RELEASE_CLANG35_ARM_CC_FLAGS     = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -Oz
-  NOOPT_CLANG35_ARM_CC_FLAGS     = DEF(CLANG35_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0
-
-##################
-# CLANG35 AARCH64 definitions
-##################
-*_CLANG35_AARCH64_SLINK_PATH     = ENV(CLANG35_AARCH64_PREFIX)ar
-*_CLANG35_AARCH64_RC_PATH        = ENV(CLANG35_AARCH64_PREFIX)objcopy
-
-*_CLANG35_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)
-*_CLANG35_AARCH64_ASLDLINK_FLAGS = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)
-*_CLANG35_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANG35_AARCH64_DLINK_FLAGS    = DEF(CLANG35_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-*_CLANG35_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-*_CLANG35_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-*_CLANG35_AARCH64_PLATFORM_FLAGS =
-*_CLANG35_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANG35_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)
-*_CLANG35_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANG35_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANG35_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANG35_AARCH64_TARGET)
-*_CLANG35_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)
-
-  DEBUG_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O1
-RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -Oz
-  NOOPT_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0
-
-####################################################################################
-#
-# Clang 3.8 - This configuration is used to compile under Linux to produce
-#  PE/COFF binaries using LLVM/Clang 3.8 with Link Time Optimization enabled
+# Clang - This configuration is used to compile under Linux to produce
+#  PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled
 #
 ####################################################################################
 *_CLANG38_*_*_FAMILY                = GCC
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
  2023-03-28 17:30 ` [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 02/13] CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler flags Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-29  3:46   ` [edk2-devel] " Guo, Gua
       [not found]   ` <1750C725F99FA0C2.29160@groups.io>
  2023-03-28 17:31 ` [PATCH v2 04/13] BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions Rebecca Cran
                   ` (12 subsequent siblings)
  15 siblings, 2 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Update the CLANGDWARF toolchain definition with the settings from
CLANG38, and delete the CLANG35 and CLANG38 toolchains.

The CLANG35 and CLANG38 toolchains were added for compatibility with
ARM's proprietary clang-based toolchain. Things have since moved on, and
with the latest clang version being 16.0.0, versions 3.5 and 3.9 are
obsolete and can be removed.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 BaseTools/Conf/tools_def.template | 453 ++++++++------------
 1 file changed, 171 insertions(+), 282 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 2f0b804acef3..3abd22615533 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -273,32 +273,21 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler from
 #                               https://acpica.org/downloads
-#
-#   CLANG35     -Linux,Windows-  Requires:
-#                             Clang v3.5 or later, and GNU binutils targeting aarch64-linux-gnu or arm-linux-gnueabi
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler from
-#                               https://acpica.org/downloads
-#   CLANG38  -Linux-  Requires:
-#                             Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi
-#                             Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi
+#   CLANGDWARF  -Linux-  Requires:
+#                             Clang 9 or above, and GNU binutils targeting x86_64-linux-gnu, aaarch64-linux-gnu or arm-linux-gnuaebi
 #                        Optional:
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler from
 #                               https://acpica.org/downloads
+#                             Required to compile nasm source:
+#                               nasm compiler from
+#                               NASM -- https://nasm.us
 #   CLANGPDB -Linux, Windows, Mac-  Requires:
 #                             Clang 9 or above from http://releases.llvm.org/
 #                        Optional:
 #                             Required to compile nasm source:
 #                               nasm compiler from
 #                               NASM -- http://www.nasm.us/
-#   CLANGDWARF -Linux, Windows, Mac-  Requires:
-#                             Clang 9 or above from http://releases.llvm.org/
-#                        Optional:
-#                             Required to compile nasm source:
-#                               nasm compiler from
-#                               NASM -- http://www.nasm.us/
 #   VS2008x86   -win64-  Requires:
 #                             Microsoft Visual Studio 2008 (x86)
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
@@ -2483,187 +2472,187 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS       = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-un
 #  PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled
 #
 ####################################################################################
-*_CLANG38_*_*_FAMILY                = GCC
-*_CLANG38_*_MAKE_PATH               = make
-*_CLANG38_*_*_DLL                   = ENV(CLANG38_DLL)
-*_CLANG38_*_ASL_PATH                = DEF(UNIX_IASL_BIN)
+*_CLANGDWARF_*_*_FAMILY                = GCC
+*_CLANGDWARF_*_MAKE_PATH               = make
+*_CLANGDWARF_*_*_DLL                   = ENV(CLANGDWARF_DLL)
+*_CLANGDWARF_*_ASL_PATH                = DEF(UNIX_IASL_BIN)
 
-*_CLANG38_*_APP_FLAGS               =
-*_CLANG38_*_ASL_FLAGS               = DEF(IASL_FLAGS)
-*_CLANG38_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)
-*_CLANG38_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)
-DEFINE CLANG38_IA32_PREFIX          = ENV(CLANG38_BIN)
-DEFINE CLANG38_X64_PREFIX           = ENV(CLANG38_BIN)
+*_CLANGDWARF_*_APP_FLAGS               =
+*_CLANGDWARF_*_ASL_FLAGS               = DEF(IASL_FLAGS)
+*_CLANGDWARF_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)
+*_CLANGDWARF_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)
+DEFINE CLANGDWARF_IA32_PREFIX          = ENV(CLANGDWARF_BIN)
+DEFINE CLANGDWARF_X64_PREFIX           = ENV(CLANGDWARF_BIN)
 
-DEFINE CLANG38_IA32_TARGET          = -target i686-pc-linux-gnu
-DEFINE CLANG38_X64_TARGET           = -target x86_64-pc-linux-gnu
+DEFINE CLANGDWARF_IA32_TARGET          = -target i686-pc-linux-gnu
+DEFINE CLANGDWARF_X64_TARGET           = -target x86_64-pc-linux-gnu
 
-DEFINE CLANG38_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access
-DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference
+DEFINE CLANGDWARF_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access
+DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference
 
 ###########################
-# CLANG38 IA32 definitions
+# CLANGDWARF IA32 definitions
 ###########################
-*_CLANG38_IA32_OBJCOPY_PATH         = objcopy
-*_CLANG38_IA32_CC_PATH              = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_SLINK_PATH           = DEF(CLANG38_IA32_PREFIX)llvm-ar
-*_CLANG38_IA32_DLINK_PATH           = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_ASLDLINK_PATH        = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_ASM_PATH             = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_PP_PATH              = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_VFRPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_ASLCC_PATH           = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_ASLPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang
-*_CLANG38_IA32_RC_PATH              = objcopy
-
-*_CLANG38_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)
-*_CLANG38_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_CLANG38_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)
-*_CLANG38_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
-*_CLANG38_IA32_OBJCOPY_FLAGS        =
-*_CLANG38_IA32_NASM_FLAGS           = -f elf32
-*_CLANG38_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)
-*_CLANG38_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)
-*_CLANG38_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)
-
-DEBUG_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double
-DEBUG_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-DEBUG_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
-
-RELEASE_CLANG38_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double
-RELEASE_CLANG38_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-RELEASE_CLANG38_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
-
-NOOPT_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double
-NOOPT_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-NOOPT_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
+*_CLANGDWARF_IA32_OBJCOPY_PATH         = objcopy
+*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar
+*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
+*_CLANGDWARF_IA32_RC_PATH              = objcopy
+
+*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET)
+*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
+*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)
+*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
+*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =
+*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32
+*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
+*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
+*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
+
+DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
+DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
+
+RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double
+RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
+
+NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
+NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
 
 ##########################
-# CLANG38 X64 definitions
+# CLANGDWARF X64 definitions
 ##########################
-*_CLANG38_X64_OBJCOPY_PATH         = objcopy
-*_CLANG38_X64_CC_PATH              = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_SLINK_PATH           = DEF(CLANG38_X64_PREFIX)llvm-ar
-*_CLANG38_X64_DLINK_PATH           = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_ASLDLINK_PATH        = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_ASM_PATH             = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_PP_PATH              = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_VFRPP_PATH           = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_ASLCC_PATH           = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_ASLPP_PATH           = DEF(CLANG38_X64_PREFIX)clang
-*_CLANG38_X64_RC_PATH              = objcopy
-
-*_CLANG38_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)
-*_CLANG38_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_CLANG38_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)
-*_CLANG38_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
-*_CLANG38_X64_OBJCOPY_FLAGS        =
-*_CLANG38_X64_NASM_FLAGS           = -f elf64
-*_CLANG38_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)
-*_CLANG38_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)
-*_CLANG38_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)
-
-DEBUG_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g
-DEBUG_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
-DEBUG_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3
-
-RELEASE_CLANG38_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)
-RELEASE_CLANG38_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
-RELEASE_CLANG38_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3
-
-NOOPT_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g
-NOOPT_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
-NOOPT_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0
+*_CLANGDWARF_X64_OBJCOPY_PATH         = objcopy
+*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar
+*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
+*_CLANGDWARF_X64_RC_PATH              = objcopy
+
+*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET)
+*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
+*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)
+*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
+*_CLANGDWARF_X64_OBJCOPY_FLAGS        =
+*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64
+*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
+*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
+*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
+
+DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
+DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3
+
+RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)
+RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -fuse-ld=lld
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
+
+NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g
+NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0
 
 ##################
-# CLANG38 ARM definitions
+# CLANGDWARF ARM definitions
 ##################
-DEFINE CLANG38_ARM_TARGET        = -target arm-linux-gnueabi
-DEFINE CLANG38_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt
-DEFINE CLANG38_ARM_DLINK_FLAGS   = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)
-
-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)
-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)
-*_CLANG38_ARM_APP_FLAGS          =
-*_CLANG38_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)
-*_CLANG38_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)
-*_CLANG38_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)
-
-*_CLANG38_ARM_CC_PATH            = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_ASM_PATH           = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_PP_PATH            = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_VFRPP_PATH         = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_ASLCC_PATH         = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_ASLPP_PATH         = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_DLINK_PATH         = ENV(CLANG38_BIN)clang
-*_CLANG38_ARM_ASLDLINK_PATH      = ENV(CLANG38_BIN)clang
-
-*_CLANG38_ARM_SLINK_PATH         = ENV(CLANG38_BIN)llvm-ar
-*_CLANG38_ARM_RC_PATH            = ENV(CLANG38_ARM_PREFIX)objcopy
-
-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANG38_ARM_ASLDLINK_FLAGS     = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)
-*_CLANG38_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANG38_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
-*_CLANG38_ARM_PLATFORM_FLAGS     = -march=armv7-a
-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANG38_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)
-*_CLANG38_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)
-*_CLANG38_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_TARGET)
-*_CLANG38_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)
-
-  DEBUG_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
-  DEBUG_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-  NOOPT_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0
-  NOOPT_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS)
-RELEASE_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
-RELEASE_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
+DEFINE CLANGDWARF_ARM_TARGET        = -target arm-linux-gnueabi
+DEFINE CLANGDWARF_ARM_CC_FLAGS      = $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt
+DEFINE CLANGDWARF_ARM_DLINK_FLAGS   = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)
+
+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)
+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)
+*_CLANGDWARF_ARM_APP_FLAGS          =
+*_CLANGDWARF_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)
+*_CLANGDWARF_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)
+*_CLANGDWARF_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)
+
+*_CLANGDWARF_ARM_CC_PATH            = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_ASM_PATH           = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_PP_PATH            = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_VFRPP_PATH         = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_ASLCC_PATH         = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_ASLPP_PATH         = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_DLINK_PATH         = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_ARM_ASLDLINK_PATH      = ENV(CLANGDWARF_BIN)clang
+
+*_CLANGDWARF_ARM_SLINK_PATH         = ENV(CLANGDWARF_BIN)llvm-ar
+*_CLANGDWARF_ARM_RC_PATH            = ENV(CLANGDWARF_ARM_PREFIX)objcopy
+
+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto
+*_CLANGDWARF_ARM_ASLDLINK_FLAGS     = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)
+*_CLANGDWARF_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
+*_CLANGDWARF_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
+*_CLANGDWARF_ARM_PLATFORM_FLAGS     = -march=armv7-a
+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)
+*_CLANGDWARF_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)
+*_CLANGDWARF_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)
+*_CLANGDWARF_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET)
+*_CLANGDWARF_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)
+
+  DEBUG_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
+  DEBUG_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
+  NOOPT_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0
+  NOOPT_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS)
+RELEASE_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
+RELEASE_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
 
 ##################
-# CLANG38 AARCH64 definitions
+# CLANGDWARF AARCH64 definitions
 ##################
-DEFINE CLANG38_AARCH64_TARGET    = -target aarch64-linux-gnu
-DEFINE CLANG38_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG38_AARCH64_TARGET) -mcmodel=small DEF(CLANG38_WARNING_OVERRIDES)
-DEFINE CLANG38_AARCH64_DLINK_FLAGS  = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-
-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)
-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)
-*_CLANG38_AARCH64_APP_FLAGS      =
-*_CLANG38_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)
-*_CLANG38_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)
-*_CLANG38_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)
-
-*_CLANG38_AARCH64_CC_PATH        = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_ASM_PATH       = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_PP_PATH        = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_VFRPP_PATH     = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_ASLCC_PATH     = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_ASLPP_PATH     = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_DLINK_PATH     = ENV(CLANG38_BIN)clang
-*_CLANG38_AARCH64_ASLDLINK_PATH  = ENV(CLANG38_BIN)clang
-
-*_CLANG38_AARCH64_SLINK_PATH     = ENV(CLANG38_BIN)llvm-ar
-*_CLANG38_AARCH64_RC_PATH        = ENV(CLANG38_AARCH64_PREFIX)objcopy
-
-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto
-*_CLANG38_AARCH64_ASLDLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)
-*_CLANG38_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
-*_CLANG38_AARCH64_DLINK_FLAGS    = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-*_CLANG38_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-*_CLANG38_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-*_CLANG38_AARCH64_PLATFORM_FLAGS =
-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANG38_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)
-*_CLANG38_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)
-*_CLANG38_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARCH64_TARGET)
-*_CLANG38_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)
-
-  DEBUG_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
-  DEBUG_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64
-  NOOPT_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0
-  NOOPT_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS)
-RELEASE_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
-RELEASE_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64
+DEFINE CLANGDWARF_AARCH64_TARGET    = -target aarch64-linux-gnu
+DEFINE CLANGDWARF_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=small DEF(CLANGDWARF_WARNING_OVERRIDES)
+DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS  = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
+
+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)
+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)
+*_CLANGDWARF_AARCH64_APP_FLAGS      =
+*_CLANGDWARF_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)
+*_CLANGDWARF_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)
+*_CLANGDWARF_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)
+
+*_CLANGDWARF_AARCH64_CC_PATH        = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_ASM_PATH       = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_PP_PATH        = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_VFRPP_PATH     = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_ASLCC_PATH     = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_ASLPP_PATH     = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_DLINK_PATH     = ENV(CLANGDWARF_BIN)clang
+*_CLANGDWARF_AARCH64_ASLDLINK_PATH  = ENV(CLANGDWARF_BIN)clang
+
+*_CLANGDWARF_AARCH64_SLINK_PATH     = ENV(CLANGDWARF_BIN)llvm-ar
+*_CLANGDWARF_AARCH64_RC_PATH        = ENV(CLANGDWARF_AARCH64_PREFIX)objcopy
+
+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto
+*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)
+*_CLANGDWARF_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments
+*_CLANGDWARF_AARCH64_DLINK_FLAGS    = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
+*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
+*_CLANGDWARF_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
+*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =
+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)
+*_CLANGDWARF_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)
+*_CLANGDWARF_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)
+*_CLANGDWARF_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET)
+*_CLANGDWARF_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)
+
+  DEBUG_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1
+  DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64
+  NOOPT_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0
+  NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS)
+RELEASE_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3
+RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64
 
 ####################################################################################
 #
@@ -2763,106 +2752,6 @@ NOOPT_CLANGPDB_X64_DLINK_FLAGS      = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE
 NOOPT_CLANGPDB_X64_DLINK2_FLAGS     =
 NOOPT_CLANGPDB_X64_GENFW_FLAGS      = --keepexceptiontable
 
-####################################################################################
-#
-# CLANGDWARF - This configuration is used to compile under Windows/Linux/Mac to produce
-#  ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled
-#
-####################################################################################
-*_CLANGDWARF_*_*_FAMILY             = GCC
-*_CLANGDWARF_*_*_BUILDRULEFAMILY    = CLANGGCC
-*_CLANGDWARF_*_MAKE_PATH            = ENV(CLANG_HOST_BIN)make
-*_CLANGDWARF_*_*_DLL                = ENV(CLANGDWARF_DLL)
-*_CLANGDWARF_*_ASL_PATH             = DEF(UNIX_IASL_BIN)
-
-*_CLANGDWARF_*_APP_FLAGS            =
-*_CLANGDWARF_*_ASL_FLAGS            = DEF(IASL_FLAGS)
-*_CLANGDWARF_*_ASL_OUTFLAGS         = DEF(IASL_OUTFLAGS)
-
-DEFINE CLANGDWARF_IA32_PREFIX       = ENV(CLANG_BIN)
-DEFINE CLANGDWARF_X64_PREFIX        = ENV(CLANG_BIN)
-
-# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.
-# LLVM/CLANG doesn't support common page size. So, it can't share the same GccBase.lds script.
-DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40
-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON     = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds
-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS       = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
-DEFINE CLANGDWARF_X64_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
-
-###########################
-# CLANGDWARF IA32 definitions
-###########################
-*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar
-*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang
-*_CLANGDWARF_IA32_RC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)llvm-rc
-
-*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)
-*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld
-*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)
-*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
-*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =
-*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32
-*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)
-*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)
-*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)
-
-DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double
-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double
-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double
-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386
-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld
-
-##########################
-# CLANGDWARF X64 definitions
-##########################
-*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar
-*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang
-*_CLANGDWARF_X64_RC_PATH              = DEF(CLANGDWARF_X64_PREFIX)llvm-rc
-
-*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)
-*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=lld
-*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)
-*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
-*_CLANGDWARF_X64_OBJCOPY_FLAGS        =
-*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64
-*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)
-*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)
-*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)
-
-DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g
-DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)
-RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
-
-NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g
-NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
-
 #
 #
 # XCODE5 support
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 04/13] BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (2 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 05/13] BaseTools: Remove VS2008-VS2013 remnants Rebecca Cran
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

With recent changes, Visual Studio versions older than VS2015 are
unable to build EDK2 code.

To avoid confusion, remove VS2008, 2010, 2012 and 2013 toolchain
definitions from Conf/tools_def.template, leaving only versions that can
be used to successfully build firmware.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 BaseTools/Conf/tools_def.template | 1005 --------------------
 1 file changed, 1005 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 3abd22615533..4463ae9d8395 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -21,42 +21,6 @@
 IDENTIFIER = Default TOOL_CHAIN_CONF
 
 # common path macros
-DEFINE VS2008_BIN      = ENV(VS2008_PREFIX)Vc\bin
-DEFINE VS2008_DLL      = ENV(VS2008_PREFIX)Common7\IDE;DEF(VS2008_BIN)
-DEFINE VS2008_BINX64   = DEF(VS2008_BIN)\x86_amd64
-DEFINE VS2008_BIN64    = DEF(VS2008_BIN)\x86_ia64
-
-DEFINE VS2008x86_BIN    = ENV(VS2008_PREFIX)Vc\bin
-DEFINE VS2008x86_DLL    = ENV(VS2008_PREFIX)Common7\IDE;DEF(VS2008x86_BIN)
-DEFINE VS2008x86_BINX64 = DEF(VS2008x86_BIN)\x86_amd64
-DEFINE VS2008x86_BIN64  = DEF(VS2008x86_BIN)\x86_ia64
-
-DEFINE VS2010_BIN      = ENV(VS2010_PREFIX)Vc\bin
-DEFINE VS2010_DLL      = ENV(VS2010_PREFIX)Common7\IDE;DEF(VS2010_BIN)
-DEFINE VS2010_BINX64   = DEF(VS2010_BIN)\x86_amd64
-DEFINE VS2010_BIN64    = DEF(VS2010_BIN)\x86_ia64
-
-DEFINE VS2010x86_BIN    = ENV(VS2010_PREFIX)Vc\bin
-DEFINE VS2010x86_DLL    = ENV(VS2010_PREFIX)Common7\IDE;DEF(VS2010x86_BIN)
-DEFINE VS2010x86_BINX64 = DEF(VS2010x86_BIN)\x86_amd64
-DEFINE VS2010x86_BIN64  = DEF(VS2010x86_BIN)\x86_ia64
-
-DEFINE VS2012_BIN      = ENV(VS2012_PREFIX)Vc\bin
-DEFINE VS2012_DLL      = ENV(VS2012_PREFIX)Common7\IDE;DEF(VS2012_BIN)
-DEFINE VS2012_BINX64   = DEF(VS2012_BIN)\x86_amd64
-
-DEFINE VS2012x86_BIN    = ENV(VS2012_PREFIX)Vc\bin
-DEFINE VS2012x86_DLL    = ENV(VS2012_PREFIX)Common7\IDE;DEF(VS2012x86_BIN)
-DEFINE VS2012x86_BINX64 = DEF(VS2012x86_BIN)\x86_amd64
-
-DEFINE VS2013_BIN      = ENV(VS2013_PREFIX)Vc\bin
-DEFINE VS2013_DLL      = ENV(VS2013_PREFIX)Common7\IDE;DEF(VS2013_BIN)
-DEFINE VS2013_BINX64   = DEF(VS2013_BIN)\x86_amd64
-
-DEFINE VS2013x86_BIN    = ENV(VS2013_PREFIX)Vc\bin
-DEFINE VS2013x86_DLL    = ENV(VS2013_PREFIX)Common7\IDE;DEF(VS2013x86_BIN)
-DEFINE VS2013x86_BINX64 = DEF(VS2013x86_BIN)\x86_amd64
-
 DEFINE VS2015_BIN      = ENV(VS2015_PREFIX)Vc\bin
 DEFINE VS2015_DLL      = ENV(VS2015_PREFIX)Common7\IDE;DEF(VS2015_BIN)
 DEFINE VS2015_BINX64   = DEF(VS2015_BIN)\x86_amd64
@@ -112,11 +76,6 @@ DEFINE WINSDK10_BIN         = ENV(WINSDK10_PREFIX)DEF(VS_HOST)
 # are used by other toolchains.  An example is that ICC on Windows normally
 # uses Microsoft's nmake.exe.
 
-# Some MS_VS_BIN options: DEF(VS2008_BIN), DEF(VS2008x86_BIN)
-DEFINE MS_VS_BIN   = DEF(VS2008_BIN)
-# Some MS_VS_DLL options: DEF(VS2008_DLL), DEF(VS2008x86_DLL)
-DEFINE MS_VS_DLL   = DEF(VS2008_DLL)
-
 DEFINE WINDDK_BIN16     = ENV(WINDDK3790_PREFIX)bin16
 DEFINE WINDDK_BINX64    = ENV(WINDDK3790_PREFIX)win64\x86\amd64
 
@@ -188,42 +147,6 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #
 # Supported Tool Chains
 # =====================
-#   VS2008      -win32-  Requires:
-#                             Microsoft Visual Studio 2008 Team Suite Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2010      -win32-  Requires:
-#                             Microsoft Visual Studio 2010 Premium Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2012      -win32-  Requires:
-#                             Microsoft Visual Studio 2012 Professional Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2013      -win32-  Requires:
-#                             Microsoft Visual Studio 2013 Professional Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
 #   VS2015      -win32-  Requires:
 #                             Microsoft Visual Studio 2015 Professional Edition
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
@@ -288,34 +211,6 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #                             Required to compile nasm source:
 #                               nasm compiler from
 #                               NASM -- http://www.nasm.us/
-#   VS2008x86   -win64-  Requires:
-#                             Microsoft Visual Studio 2008 (x86)
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2010x86   -win64-  Requires:
-#                             Microsoft Visual Studio 2010 (x86) Premium Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2012x86   -win64-  Requires:
-#                             Microsoft Visual Studio 2012 (x86) Professional Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
-#   VS2013x86   -win64-  Requires:
-#                             Microsoft Visual Studio 2013 (x86) Professional Edition
-#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler (iasl.exe) from
-#                               https://acpica.org/downloads
 #   VS2015x86   -win64-  Requires:
 #                             Microsoft Visual Studio 2015 (x86) Update 2 or above
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
@@ -379,906 +274,6 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #
 ####################################################################################
 
-####################################################################################
-#
-# Microsoft Visual Studio 2008
-#
-#   VS2008  - Microsoft Visual Studio 2005 All Edition, including Standard, Professional, Express, TeamSuite
-#   ASL     - Intel ACPI Source Language Compiler
-####################################################################################
-#   VS2008           - Microsoft Visual Studio 2008 ALL Edition, including Standard, Professional, Express, TeamSuite
-*_VS2008_*_*_FAMILY               = MSFT
-
-*_VS2008_*_MAKE_PATH              = DEF(VS2008_BIN)\nmake.exe
-*_VS2008_*_MAKE_FLAGS             = /nologo
-*_VS2008_*_RC_PATH                = DEF(WINSDK_BIN)\rc.exe
-
-*_VS2008_*_SLINK_FLAGS            = /NOLOGO /LTCG
-*_VS2008_*_APP_FLAGS              = /nologo /E /TC
-*_VS2008_*_PP_FLAGS               = /nologo /E /TC /FIAutoGen.h
-*_VS2008_*_VFRPP_FLAGS            = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2008_*_DEPS_FLAGS            = DEF(MSFT_DEPS_FLAGS)
-*_VS2008_*_ASM16_PATH             = DEF(VS2008_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2008_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)
-*_VS2008_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2008_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2008_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)
-*_VS2008_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)
-*_VS2008_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2008_IA32_*_DLL               = DEF(VS2008_DLL)
-
-*_VS2008_IA32_CC_PATH             = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_VFRPP_PATH          = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_SLINK_PATH          = DEF(VS2008_BIN)\lib.exe
-*_VS2008_IA32_DLINK_PATH          = DEF(VS2008_BIN)\link.exe
-*_VS2008_IA32_APP_PATH            = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_PP_PATH             = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_ASM_PATH            = DEF(VS2008_BIN)\ml.exe
-*_VS2008_IA32_ASLCC_PATH          = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_ASLPP_PATH          = DEF(VS2008_BIN)\cl.exe
-*_VS2008_IA32_ASLDLINK_PATH       = DEF(VS2008_BIN)\link.exe
-
-  DEBUG_VS2008_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm
-RELEASE_VS2008_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2008_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
-
-  DEBUG_VS2008_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2008_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2008_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2008_IA32_NASM_FLAGS    = -Ox -f win32 -g
-RELEASE_VS2008_IA32_NASM_FLAGS    = -Ox -f win32
-NOOPT_VS2008_IA32_NASM_FLAGS      = -O0 -f win32 -g
-
-  DEBUG_VS2008_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2008_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2008_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2008_X64_*_DLL         = DEF(VS2008_DLL)
-
-*_VS2008_X64_CC_PATH       = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_PP_PATH       = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_APP_PATH      = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_VFRPP_PATH    = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_ASM_PATH      = DEF(VS2008_BINX64)\ml64.exe
-*_VS2008_X64_SLINK_PATH    = DEF(VS2008_BINX64)\lib.exe
-*_VS2008_X64_DLINK_PATH    = DEF(VS2008_BINX64)\link.exe
-*_VS2008_X64_ASLCC_PATH    = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_ASLPP_PATH    = DEF(VS2008_BINX64)\cl.exe
-*_VS2008_X64_ASLDLINK_PATH = DEF(VS2008_BINX64)\link.exe
-
-  DEBUG_VS2008_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2008_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2008_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2008_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2008_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2008_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2008_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2008_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2008_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2008_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2008_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2008_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2008_EBC_*_FAMILY            = INTEL
-*_VS2008_EBC_*_DLL               = DEF(VS2008_DLL)
-
-*_VS2008_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2008_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe
-*_VS2008_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2008_EBC_SLINK_PATH          = DEF(VS2008_BIN)\link.exe
-*_VS2008_EBC_DLINK_PATH          = DEF(VS2008_BIN)\link.exe
-
-*_VS2008_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2008_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2008_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2008_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2008_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#   VS2008x86       - Microsoft Visual Studio 2008 (x86) with Intel ASL
-#   ASL  - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-#   VS2008x86           - Microsoft Visual Studio 2008 (x86) ALL Edition with Intel ASL
-*_VS2008x86_*_*_FAMILY        = MSFT
-
-*_VS2008x86_*_MAKE_PATH       = DEF(VS2008x86_BIN)\nmake.exe
-*_VS2008x86_*_MAKE_FLAGS      = /nologo
-*_VS2008x86_*_RC_PATH         = DEF(WINSDK_BIN)\rc.exe
-
-*_VS2008x86_*_SLINK_FLAGS     = /NOLOGO /LTCG
-*_VS2008x86_*_APP_FLAGS       = /nologo /E /TC
-*_VS2008x86_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h
-*_VS2008x86_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2008x86_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2008x86_*_ASM16_PATH      = DEF(VS2008x86_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2008x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)
-*_VS2008x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2008x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2008x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)
-*_VS2008x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)
-*_VS2008x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2008x86_IA32_*_DLL        = DEF(VS2008x86_DLL)
-
-*_VS2008x86_IA32_CC_PATH      = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_VFRPP_PATH   = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_ASLCC_PATH   = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_ASLPP_PATH   = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_SLINK_PATH   = DEF(VS2008x86_BIN)\lib.exe
-*_VS2008x86_IA32_DLINK_PATH   = DEF(VS2008x86_BIN)\link.exe
-*_VS2008x86_IA32_ASLDLINK_PATH= DEF(VS2008x86_BIN)\link.exe
-*_VS2008x86_IA32_APP_PATH     = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_PP_PATH      = DEF(VS2008x86_BIN)\cl.exe
-*_VS2008x86_IA32_ASM_PATH     = DEF(VS2008x86_BIN)\ml.exe
-
-  DEBUG_VS2008x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
-RELEASE_VS2008x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2008x86_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2008x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2008x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2008x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
-RELEASE_VS2008x86_IA32_NASM_FLAGS  = -Ox -f win32
-NOOPT_VS2008x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
-
-  DEBUG_VS2008x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2008x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2008x86_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2008x86_X64_*_DLL         = DEF(VS2008x86_DLL)
-
-*_VS2008x86_X64_CC_PATH       = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_PP_PATH       = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_APP_PATH      = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_VFRPP_PATH    = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_ASLCC_PATH    = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_ASLPP_PATH    = DEF(VS2008x86_BINX64)\cl.exe
-*_VS2008x86_X64_ASM_PATH      = DEF(VS2008x86_BINX64)\ml64.exe
-*_VS2008x86_X64_SLINK_PATH    = DEF(VS2008x86_BINX64)\lib.exe
-*_VS2008x86_X64_DLINK_PATH    = DEF(VS2008x86_BINX64)\link.exe
-*_VS2008x86_X64_ASLDLINK_PATH = DEF(VS2008x86_BINX64)\link.exe
-
-  DEBUG_VS2008x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2008x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2008x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-  DEBUG_VS2008x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2008x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2008x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2008x86_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2008x86_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2008x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2008x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2008x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2008x86_EBC_*_FAMILY            = INTEL
-*_VS2008x86_EBC_*_DLL               = DEF(VS2008x86_DLL)
-
-*_VS2008x86_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2008x86_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2008x86_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2008x86_EBC_SLINK_PATH          = DEF(VS2008x86_BIN)\link.exe
-*_VS2008x86_EBC_DLINK_PATH          = DEF(VS2008x86_BIN)\link.exe
-
-*_VS2008x86_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2008x86_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2008x86_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2008x86_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2008x86_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-
-####################################################################################
-#
-# Microsoft Visual Studio 2010
-#
-#   VS2010  - Microsoft Visual Studio 2010 Premium Edition with Intel ASL
-#   ASL     - Intel ACPI Source Language Compiler
-####################################################################################
-#   VS2010           - Microsoft Visual Studio 2010 Premium Edition
-*_VS2010_*_*_FAMILY               = MSFT
-
-*_VS2010_*_MAKE_PATH              = DEF(VS2010_BIN)\nmake.exe
-*_VS2010_*_MAKE_FLAGS             = /nologo
-*_VS2010_*_RC_PATH                = DEF(WINSDK7_BIN)\rc.exe
-
-*_VS2010_*_SLINK_FLAGS            = /NOLOGO /LTCG
-*_VS2010_*_APP_FLAGS              = /nologo /E /TC
-*_VS2010_*_PP_FLAGS               = /nologo /E /TC /FIAutoGen.h
-*_VS2010_*_VFRPP_FLAGS            = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2010_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2010_*_ASM16_PATH             = DEF(VS2010_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2010_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)
-*_VS2010_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2010_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2010_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)
-*_VS2010_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)
-*_VS2010_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2010_IA32_*_DLL               = DEF(VS2010_DLL)
-
-*_VS2010_IA32_CC_PATH             = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_VFRPP_PATH          = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_SLINK_PATH          = DEF(VS2010_BIN)\lib.exe
-*_VS2010_IA32_DLINK_PATH          = DEF(VS2010_BIN)\link.exe
-*_VS2010_IA32_APP_PATH            = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_PP_PATH             = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_ASM_PATH            = DEF(VS2010_BIN)\ml.exe
-*_VS2010_IA32_ASLCC_PATH          = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_ASLPP_PATH          = DEF(VS2010_BIN)\cl.exe
-*_VS2010_IA32_ASLDLINK_PATH       = DEF(VS2010_BIN)\link.exe
-
-  DEBUG_VS2010_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
-RELEASE_VS2010_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2010_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od
-
-  DEBUG_VS2010_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2010_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2010_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2010_IA32_NASM_FLAGS    = -Ox -f win32 -g
-RELEASE_VS2010_IA32_NASM_FLAGS    = -Ox -f win32
-NOOPT_VS2010_IA32_NASM_FLAGS      = -O0 -f win32 -g
-
-  DEBUG_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2010_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2010_X64_*_DLL         = DEF(VS2010_DLL)
-
-*_VS2010_X64_CC_PATH       = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_PP_PATH       = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_APP_PATH      = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_VFRPP_PATH    = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_ASM_PATH      = DEF(VS2010_BINX64)\ml64.exe
-*_VS2010_X64_SLINK_PATH    = DEF(VS2010_BINX64)\lib.exe
-*_VS2010_X64_DLINK_PATH    = DEF(VS2010_BINX64)\link.exe
-*_VS2010_X64_ASLCC_PATH    = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_ASLPP_PATH    = DEF(VS2010_BINX64)\cl.exe
-*_VS2010_X64_ASLDLINK_PATH = DEF(VS2010_BINX64)\link.exe
-
-  DEBUG_VS2010_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2010_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2010_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2010_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2010_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2010_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2010_EBC_*_FAMILY            = INTEL
-*_VS2010_EBC_*_DLL               = DEF(VS2010_DLL)
-
-*_VS2010_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2010_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe
-*_VS2010_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2010_EBC_SLINK_PATH          = DEF(VS2010_BIN)\link.exe
-*_VS2010_EBC_DLINK_PATH          = DEF(VS2010_BIN)\link.exe
-
-*_VS2010_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2010_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2010_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2010_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2010_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#   VS2010x86       - Microsoft Visual Studio 2010 (x86) with Intel ASL
-#   ASL  - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-#   VS2010x86           - Microsoft Visual Studio 2010 (x86) ALL Edition with Intel ASL
-*_VS2010x86_*_*_FAMILY        = MSFT
-
-*_VS2010x86_*_MAKE_PATH       = DEF(VS2010x86_BIN)\nmake.exe
-*_VS2010x86_*_MAKE_FLAGS      = /nologo
-*_VS2010x86_*_RC_PATH         = DEF(WINSDK7x86_BIN)\rc.exe
-
-*_VS2010x86_*_SLINK_FLAGS     = /NOLOGO /LTCG
-*_VS2010x86_*_APP_FLAGS       = /nologo /E /TC
-*_VS2010x86_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h
-*_VS2010x86_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2010x86_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2010x86_*_ASM16_PATH      = DEF(VS2010x86_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2010x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)
-*_VS2010x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2010x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2010x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)
-*_VS2010x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)
-*_VS2010x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2010x86_IA32_*_DLL        = DEF(VS2010x86_DLL)
-
-*_VS2010x86_IA32_CC_PATH      = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_VFRPP_PATH   = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_ASLCC_PATH   = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_ASLPP_PATH   = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_SLINK_PATH   = DEF(VS2010x86_BIN)\lib.exe
-*_VS2010x86_IA32_DLINK_PATH   = DEF(VS2010x86_BIN)\link.exe
-*_VS2010x86_IA32_ASLDLINK_PATH= DEF(VS2010x86_BIN)\link.exe
-*_VS2010x86_IA32_APP_PATH     = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_PP_PATH      = DEF(VS2010x86_BIN)\cl.exe
-*_VS2010x86_IA32_ASM_PATH     = DEF(VS2010x86_BIN)\ml.exe
-
-  DEBUG_VS2010x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
-RELEASE_VS2010x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2010x86_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2010x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2010x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2010x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
-RELEASE_VS2010x86_IA32_NASM_FLAGS  = -Ox -f win32
-NOOPT_VS2010x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
-
-  DEBUG_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2010x86_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2010x86_X64_*_DLL         = DEF(VS2010x86_DLL)
-
-*_VS2010x86_X64_CC_PATH       = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_PP_PATH       = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_APP_PATH      = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_VFRPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_ASLCC_PATH    = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_ASLPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe
-*_VS2010x86_X64_ASM_PATH      = DEF(VS2010x86_BINX64)\ml64.exe
-*_VS2010x86_X64_SLINK_PATH    = DEF(VS2010x86_BINX64)\lib.exe
-*_VS2010x86_X64_DLINK_PATH    = DEF(VS2010x86_BINX64)\link.exe
-*_VS2010x86_X64_ASLDLINK_PATH = DEF(VS2010x86_BINX64)\link.exe
-
-  DEBUG_VS2010x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2010x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2010x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2010x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2010x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2010x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2010x86_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2010x86_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2010x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2010x86_EBC_*_FAMILY            = INTEL
-*_VS2010x86_EBC_*_DLL               = DEF(VS2010x86_DLL)
-
-*_VS2010x86_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2010x86_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2010x86_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2010x86_EBC_SLINK_PATH          = DEF(VS2010x86_BIN)\link.exe
-*_VS2010x86_EBC_DLINK_PATH          = DEF(VS2010x86_BIN)\link.exe
-
-*_VS2010x86_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2010x86_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2010x86_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2010x86_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2010x86_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#
-# Microsoft Visual Studio 2012
-#
-#   VS2012  - Microsoft Visual Studio 2012 Professional Edition with Intel ASL
-#   ASL     - Intel ACPI Source Language Compiler
-####################################################################################
-#   VS2012           - Microsoft Visual Studio 2012 Professional Edition
-*_VS2012_*_*_FAMILY               = MSFT
-
-*_VS2012_*_MAKE_PATH              = DEF(VS2012_BIN)\nmake.exe
-*_VS2012_*_MAKE_FLAGS             = /nologo
-*_VS2012_*_RC_PATH                = DEF(WINSDK71_BIN)\rc.exe
-
-*_VS2012_*_SLINK_FLAGS            = /NOLOGO /LTCG
-*_VS2012_*_APP_FLAGS              = /nologo /E /TC
-*_VS2012_*_PP_FLAGS               = /nologo /E /TC /FIAutoGen.h
-*_VS2012_*_VFRPP_FLAGS            = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2012_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2012_*_ASM16_PATH             = DEF(VS2012_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2012_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)
-*_VS2012_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2012_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2012_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)
-*_VS2012_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)
-*_VS2012_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2012_IA32_*_DLL               = DEF(VS2012_DLL)
-
-*_VS2012_IA32_CC_PATH             = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_VFRPP_PATH          = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_SLINK_PATH          = DEF(VS2012_BIN)\lib.exe
-*_VS2012_IA32_DLINK_PATH          = DEF(VS2012_BIN)\link.exe
-*_VS2012_IA32_APP_PATH            = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_PP_PATH             = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_ASM_PATH            = DEF(VS2012_BIN)\ml.exe
-*_VS2012_IA32_ASLCC_PATH          = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_ASLPP_PATH          = DEF(VS2012_BIN)\cl.exe
-*_VS2012_IA32_ASLDLINK_PATH       = DEF(VS2012_BIN)\link.exe
-
-  DEBUG_VS2012_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
-RELEASE_VS2012_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2012_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2012_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2012_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2012_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2012_IA32_NASM_FLAGS    = -Ox -f win32 -g
-RELEASE_VS2012_IA32_NASM_FLAGS    = -Ox -f win32
-NOOPT_VS2012_IA32_NASM_FLAGS      = -O0 -f win32 -g
-
-  DEBUG_VS2012_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2012_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2012_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2012_X64_*_DLL         = DEF(VS2012_DLL)
-
-*_VS2012_X64_CC_PATH       = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_PP_PATH       = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_APP_PATH      = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_VFRPP_PATH    = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_ASM_PATH      = DEF(VS2012_BINX64)\ml64.exe
-*_VS2012_X64_SLINK_PATH    = DEF(VS2012_BINX64)\lib.exe
-*_VS2012_X64_DLINK_PATH    = DEF(VS2012_BINX64)\link.exe
-*_VS2012_X64_ASLCC_PATH    = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_ASLPP_PATH    = DEF(VS2012_BINX64)\cl.exe
-*_VS2012_X64_ASLDLINK_PATH = DEF(VS2012_BINX64)\link.exe
-
-  DEBUG_VS2012_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2012_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2012_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2012_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2012_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2012_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2012_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2012_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2012_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2012_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2012_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2012_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2012_EBC_*_FAMILY            = INTEL
-*_VS2012_EBC_*_DLL               = DEF(VS2012_DLL)
-
-*_VS2012_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2012_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe
-*_VS2012_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2012_EBC_SLINK_PATH          = DEF(VS2012_BIN)\link.exe
-*_VS2012_EBC_DLINK_PATH          = DEF(VS2012_BIN)\link.exe
-
-*_VS2012_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2012_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2012_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2012_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2012_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#   VS2012x86       - Microsoft Visual Studio 2012 (x86) professional with Intel ASL
-#   ASL  - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-#   VS2012x86           - Microsoft Visual Studio 2012 (x86) professional Edition with Intel ASL
-*_VS2012x86_*_*_FAMILY        = MSFT
-
-*_VS2012x86_*_MAKE_PATH       = DEF(VS2012x86_BIN)\nmake.exe
-*_VS2012x86_*_MAKE_FLAGS      = /nologo
-*_VS2012x86_*_RC_PATH         = DEF(WINSDK71x86_BIN)\rc.exe
-
-*_VS2012x86_*_SLINK_FLAGS     = /NOLOGO /LTCG
-*_VS2012x86_*_APP_FLAGS       = /nologo /E /TC
-*_VS2012x86_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h
-*_VS2012x86_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2012x86_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2012x86_*_ASM16_PATH      = DEF(VS2012x86_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2012x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)
-*_VS2012x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2012x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2012x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)
-*_VS2012x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)
-*_VS2012x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2012x86_IA32_*_DLL        = DEF(VS2012x86_DLL)
-
-*_VS2012x86_IA32_CC_PATH      = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_VFRPP_PATH   = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_ASLCC_PATH   = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_ASLPP_PATH   = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_SLINK_PATH   = DEF(VS2012x86_BIN)\lib.exe
-*_VS2012x86_IA32_DLINK_PATH   = DEF(VS2012x86_BIN)\link.exe
-*_VS2012x86_IA32_ASLDLINK_PATH= DEF(VS2012x86_BIN)\link.exe
-*_VS2012x86_IA32_APP_PATH     = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_PP_PATH      = DEF(VS2012x86_BIN)\cl.exe
-*_VS2012x86_IA32_ASM_PATH     = DEF(VS2012x86_BIN)\ml.exe
-
-  DEBUG_VS2012x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7
-RELEASE_VS2012x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2012x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2012x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2012x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2012x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
-RELEASE_VS2012x86_IA32_NASM_FLAGS  = -Ox -f win32
-NOOPT_VS2012x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
-
-  DEBUG_VS2012x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2012x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2012x86_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2012x86_X64_*_DLL         = DEF(VS2012x86_DLL)
-
-*_VS2012x86_X64_CC_PATH       = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_PP_PATH       = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_APP_PATH      = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_VFRPP_PATH    = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_ASLCC_PATH    = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_ASLPP_PATH    = DEF(VS2012x86_BINX64)\cl.exe
-*_VS2012x86_X64_ASM_PATH      = DEF(VS2012x86_BINX64)\ml64.exe
-*_VS2012x86_X64_SLINK_PATH    = DEF(VS2012x86_BINX64)\lib.exe
-*_VS2012x86_X64_DLINK_PATH    = DEF(VS2012x86_BINX64)\link.exe
-*_VS2012x86_X64_ASLDLINK_PATH = DEF(VS2012x86_BINX64)\link.exe
-
-  DEBUG_VS2012x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7
-RELEASE_VS2012x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF
-NOOPT_VS2012x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2012x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2012x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2012x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2012x86_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2012x86_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2012x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2012x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2012x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2012x86_EBC_*_FAMILY            = INTEL
-*_VS2012x86_EBC_*_DLL               = DEF(VS2012x86_DLL)
-
-*_VS2012x86_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2012x86_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2012x86_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2012x86_EBC_SLINK_PATH          = DEF(VS2012x86_BIN)\link.exe
-*_VS2012x86_EBC_DLINK_PATH          = DEF(VS2012x86_BIN)\link.exe
-
-*_VS2012x86_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2012x86_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2012x86_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2012x86_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2012x86_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#
-# Microsoft Visual Studio 2013
-#
-#   VS2013  - Microsoft Visual Studio 2013 Professional Edition with Intel ASL
-#   ASL     - Intel ACPI Source Language Compiler
-####################################################################################
-#   VS2013           - Microsoft Visual Studio 2013 Professional Edition
-*_VS2013_*_*_FAMILY               = MSFT
-
-*_VS2013_*_MAKE_PATH              = DEF(VS2013_BIN)\nmake.exe
-*_VS2013_*_MAKE_FLAGS             = /nologo
-*_VS2013_*_RC_PATH                = DEF(WINSDK8_BIN)\rc.exe
-
-*_VS2013_*_SLINK_FLAGS            = /NOLOGO /LTCG
-*_VS2013_*_APP_FLAGS              = /nologo /E /TC
-*_VS2013_*_PP_FLAGS               = /nologo /E /TC /FIAutoGen.h
-*_VS2013_*_VFRPP_FLAGS            = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2013_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2013_*_ASM16_PATH             = DEF(VS2013_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2013_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)
-*_VS2013_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2013_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2013_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)
-*_VS2013_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)
-*_VS2013_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2013_IA32_*_DLL               = DEF(VS2013_DLL)
-
-*_VS2013_IA32_CC_PATH             = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_VFRPP_PATH          = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_SLINK_PATH          = DEF(VS2013_BIN)\lib.exe
-*_VS2013_IA32_DLINK_PATH          = DEF(VS2013_BIN)\link.exe
-*_VS2013_IA32_APP_PATH            = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_PP_PATH             = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_ASM_PATH            = DEF(VS2013_BIN)\ml.exe
-*_VS2013_IA32_ASLCC_PATH          = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_ASLPP_PATH          = DEF(VS2013_BIN)\cl.exe
-*_VS2013_IA32_ASLDLINK_PATH       = DEF(VS2013_BIN)\link.exe
-
-  DEBUG_VS2013_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2013_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2013_IA32_CC_FLAGS        = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2013_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2013_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2013_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2013_IA32_NASM_FLAGS    = -Ox -f win32 -g
-RELEASE_VS2013_IA32_NASM_FLAGS    = -Ox -f win32
-NOOPT_VS2013_IA32_NASM_FLAGS      = -O0 -f win32 -g
-
-  DEBUG_VS2013_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2013_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2013_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2013_X64_*_DLL         = DEF(VS2013_DLL)
-
-*_VS2013_X64_CC_PATH       = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_PP_PATH       = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_APP_PATH      = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_VFRPP_PATH    = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_ASM_PATH      = DEF(VS2013_BINX64)\ml64.exe
-*_VS2013_X64_SLINK_PATH    = DEF(VS2013_BINX64)\lib.exe
-*_VS2013_X64_DLINK_PATH    = DEF(VS2013_BINX64)\link.exe
-*_VS2013_X64_ASLCC_PATH    = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_ASLPP_PATH    = DEF(VS2013_BINX64)\cl.exe
-*_VS2013_X64_ASLDLINK_PATH = DEF(VS2013_BINX64)\link.exe
-
-  DEBUG_VS2013_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2013_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2013_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2013_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2013_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2013_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2013_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2013_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2013_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2013_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2013_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2013_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2013_EBC_*_FAMILY            = INTEL
-*_VS2013_EBC_*_DLL               = DEF(VS2013_DLL)
-
-*_VS2013_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2013_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe
-*_VS2013_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2013_EBC_SLINK_PATH          = DEF(VS2013_BIN)\link.exe
-*_VS2013_EBC_DLINK_PATH          = DEF(VS2013_BIN)\link.exe
-
-*_VS2013_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2013_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2013_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2013_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2013_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
-####################################################################################
-#   VS2013x86       - Microsoft Visual Studio 2013 (x86) professional with Intel ASL
-#   ASL  - Intel ACPI Source Language Compiler (iasl.exe)
-####################################################################################
-#   VS2013x86           - Microsoft Visual Studio 2013 (x86) professional Edition with Intel ASL
-*_VS2013x86_*_*_FAMILY        = MSFT
-
-*_VS2013x86_*_MAKE_PATH       = DEF(VS2013x86_BIN)\nmake.exe
-*_VS2013x86_*_MAKE_FLAGS      = /nologo
-*_VS2013x86_*_RC_PATH         = DEF(WINSDK8x86_BIN)\rc.exe
-
-*_VS2013x86_*_SLINK_FLAGS     = /NOLOGO /LTCG
-*_VS2013x86_*_APP_FLAGS       = /nologo /E /TC
-*_VS2013x86_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h
-*_VS2013x86_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2013x86_*_DEPS_FLAGS      = DEF(MSFT_DEPS_FLAGS)
-*_VS2013x86_*_ASM16_PATH      = DEF(VS2013x86_BIN)\ml.exe
-
-##################
-# ASL definitions
-##################
-*_VS2013x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)
-*_VS2013x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)
-*_VS2013x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)
-*_VS2013x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)
-*_VS2013x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)
-*_VS2013x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)
-
-##################
-# IA32 definitions
-##################
-*_VS2013x86_IA32_*_DLL        = DEF(VS2013x86_DLL)
-
-*_VS2013x86_IA32_CC_PATH      = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_VFRPP_PATH   = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_ASLCC_PATH   = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_ASLPP_PATH   = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_SLINK_PATH   = DEF(VS2013x86_BIN)\lib.exe
-*_VS2013x86_IA32_DLINK_PATH   = DEF(VS2013x86_BIN)\link.exe
-*_VS2013x86_IA32_ASLDLINK_PATH= DEF(VS2013x86_BIN)\link.exe
-*_VS2013x86_IA32_APP_PATH     = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_PP_PATH      = DEF(VS2013x86_BIN)\cl.exe
-*_VS2013x86_IA32_ASM_PATH     = DEF(VS2013x86_BIN)\ml.exe
-
-  DEBUG_VS2013x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Gw
-RELEASE_VS2013x86_IA32_CC_FLAGS    = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2013x86_IA32_CC_FLAGS      = /nologo /arch:IA32 /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Z7 /Od
-
-  DEBUG_VS2013x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-RELEASE_VS2013x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd
-NOOPT_VS2013x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi
-
-  DEBUG_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32 -g
-RELEASE_VS2013x86_IA32_NASM_FLAGS  = -Ox -f win32
-NOOPT_VS2013x86_IA32_NASM_FLAGS    = -O0 -f win32 -g
-
-  DEBUG_VS2013x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2013x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2013x86_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# X64 definitions
-##################
-*_VS2013x86_X64_*_DLL         = DEF(VS2013x86_DLL)
-
-*_VS2013x86_X64_CC_PATH       = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_PP_PATH       = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_APP_PATH      = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_VFRPP_PATH    = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_ASLCC_PATH    = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_ASLPP_PATH    = DEF(VS2013x86_BINX64)\cl.exe
-*_VS2013x86_X64_ASM_PATH      = DEF(VS2013x86_BINX64)\ml64.exe
-*_VS2013x86_X64_SLINK_PATH    = DEF(VS2013x86_BINX64)\lib.exe
-*_VS2013x86_X64_DLINK_PATH    = DEF(VS2013x86_BINX64)\link.exe
-*_VS2013x86_X64_ASLDLINK_PATH = DEF(VS2013x86_BINX64)\link.exe
-
-  DEBUG_VS2013x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Gw
-RELEASE_VS2013x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Gw
-NOOPT_VS2013x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Z7 /Od
-
-  DEBUG_VS2013x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi
-RELEASE_VS2013x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd
-NOOPT_VS2013x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi
-
-  DEBUG_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64 -g
-RELEASE_VS2013x86_X64_NASM_FLAGS   = -Ox -f win64
-NOOPT_VS2013x86_X64_NASM_FLAGS     = -O0 -f win64 -g
-
-  DEBUG_VS2013x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-RELEASE_VS2013x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
-NOOPT_VS2013x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
-
-##################
-# EBC definitions
-##################
-*_VS2013x86_EBC_*_FAMILY            = INTEL
-*_VS2013x86_EBC_*_DLL               = DEF(VS2013x86_DLL)
-
-*_VS2013x86_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2013x86_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2013x86_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2013x86_EBC_SLINK_PATH          = DEF(VS2013x86_BIN)\link.exe
-*_VS2013x86_EBC_DLINK_PATH          = DEF(VS2013x86_BIN)\link.exe
-
-*_VS2013x86_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2013x86_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2013x86_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2013x86_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2013x86_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
 ####################################################################################
 #
 # Microsoft Visual Studio 2015
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 05/13] BaseTools: Remove VS2008-VS2013 remnants
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (3 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 04/13] BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 06/13] MdePkg: " Rebecca Cran
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Remove remnants of Visual Studio 2008-2013 support from
Conf/tools_def.txt and various batch scripts.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 BaseTools/Conf/tools_def.template     | 12 ----
 BaseTools/Scripts/SetVisualStudio.bat | 22 +------
 BaseTools/Scripts/ShowEnvironment.bat | 44 --------------
 BaseTools/get_vsvars.bat              | 13 ----
 BaseTools/set_vsprefix_envs.bat       | 64 --------------------
 BaseTools/toolsetup.bat               | 24 +-------
 6 files changed, 2 insertions(+), 177 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 4463ae9d8395..e6a2472501db 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -53,18 +53,6 @@ DEFINE RC_PATH    = ENV(WINSDK_PATH_FOR_RC_EXE)\rc.exe
 DEFINE WINSDK_BIN           = ENV(WINSDK_PREFIX)
 DEFINE WINSDKx86_BIN        = ENV(WINSDKx86_PREFIX)
 
-# Microsoft Visual Studio 2010
-DEFINE WINSDK7_BIN          = ENV(WINSDK7_PREFIX)
-DEFINE WINSDK7x86_BIN       = ENV(WINSDK7x86_PREFIX)
-
-# Microsoft Visual Studio 2012 Update 1 (required for rc.exe that was not included in the initial release)
-DEFINE WINSDK71_BIN         = ENV(WINSDK71_PREFIX)
-DEFINE WINSDK71x86_BIN      = ENV(WINSDK71x86_PREFIX)
-
-# Microsoft Visual Studio 2013 Professional Edition
-DEFINE WINSDK8_BIN          = ENV(WINSDK8_PREFIX)x86\
-DEFINE WINSDK8x86_BIN       = ENV(WINSDK8x86_PREFIX)x64
-
 # Microsoft Visual Studio 2015 Professional Edition
 DEFINE WINSDK81_BIN         = ENV(WINSDK81_PREFIX)x86\
 DEFINE WINSDK81x86_BIN      = ENV(WINSDK81x86_PREFIX)x64
diff --git a/BaseTools/Scripts/SetVisualStudio.bat b/BaseTools/Scripts/SetVisualStudio.bat
index 60d493a4110d..fba9f846effb 100755
--- a/BaseTools/Scripts/SetVisualStudio.bat
+++ b/BaseTools/Scripts/SetVisualStudio.bat
@@ -2,7 +2,7 @@
 @REM Windows batch file to set up the Microsoft Visual Studio environment
 @REM
 @REM This script is used to set up one of the Microsoft Visual Studio
-@REM environments, VS2008x86, VS2010x86, VS2012x86 or VS2013x86 for
+@REM environments, VS2015 for
 @REM building the Nt32Pkg/Nt32Pkg.dsc emulation environment to run on
 @REM an X64 version of Windows.
 @REM The system environment variables in this script are set by the
@@ -23,26 +23,6 @@ echo.
    @set "COMMONTOOLSx64=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64"
    @goto SetVs
 )
-
-@if defined VS120COMNTOOLS (
-   @set "COMMONTOOLSx64=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"
-   @goto SetVs
-)
-
-@if defined VS110COMNTOOLS (
-   @set "COMMONTOOLSx64=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64"
-   @goto SetVs
-)
-
-@if defined VS100COMNTOOLS (
-   @set "COMMONTOOLSx64=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64"
-   @goto SetVs
-)
-
-@if defined VS90COMNTOOLS (
-   @set "COMMONTOOLSx64=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\x86_amd64"
-   @goto SetVs
-)
 @echo.
 @echo No version of Microsoft Visual Studio was found on this system
 @echo.
diff --git a/BaseTools/Scripts/ShowEnvironment.bat b/BaseTools/Scripts/ShowEnvironment.bat
index b91886b6a955..1301d5fcb11b 100755
--- a/BaseTools/Scripts/ShowEnvironment.bat
+++ b/BaseTools/Scripts/ShowEnvironment.bat
@@ -80,50 +80,6 @@ if defined SRC_CONF @goto SetEnv
 @goto End
 
 :CheckVsVer
-@set "TEST_VS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2008x86
-    @goto :EOF
-)
-@set "TEST_VS=C:\Program Files\Microsoft Visual Studio 9.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2008
-    @goto :EOF
-)
-
-@set "TEST_VS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2010x86
-    @goto :EOF
-)
-@set "TEST_VS=C:\Program Files\Microsoft Visual Studio 10.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2010
-    @goto :EOF
-)
-
-@set "TEST_VS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2012x86
-    @goto :EOF
-)
-@set "TEST_VS=C:\Program Files\Microsoft Visual Studio 11.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2012
-    @goto :EOF
-)
-
-@set "TEST_VS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2013x86
-    @goto :EOF
-)
-@set "TEST_VS=C:\Program Files\Microsoft Visual Studio 12.0\"
-@if "%VSINSTALLDIR%"=="%TEST_VS%" (
-    @echo     TOOL_CHAIN_TAG       = VS2013
-    @goto :EOF
-)
-
 @set "TEST_VS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\"
 @if "%VSINSTALLDIR%"=="%TEST_VS%" (
     @echo     TOOL_CHAIN_TAG       = VS2015x86
diff --git a/BaseTools/get_vsvars.bat b/BaseTools/get_vsvars.bat
index 3beb113be296..b67e147ee61a 100644
--- a/BaseTools/get_vsvars.bat
+++ b/BaseTools/get_vsvars.bat
@@ -13,8 +13,6 @@ if "%1"=="" goto main
 if /I "%1"=="VS2019" goto VS2019Vars
 if /I "%1"=="VS2017" goto VS2017Vars
 if /I "%1"=="VS2015" goto VS2015Vars
-if /I "%1"=="VS2013" goto VS2013Vars
-if /I "%1"=="VS2012" goto VS2012Vars
 
 :set_vsvars
 if defined VCINSTALLDIR goto :EOF
@@ -85,16 +83,5 @@ if defined VCINSTALLDIR goto :done
   :VS2015Vars
   if defined VS140COMNTOOLS (call :read_vsvars  "%VS140COMNTOOLS%") else (if /I "%1"=="VS2015" goto ToolNotInstall)
 
-  :VS2013Vars
-  if defined VS120COMNTOOLS ( call :read_vsvars  "%VS120COMNTOOLS%") else (if /I "%1"=="VS2013" goto ToolNotInstall)
-
-  :VS2012Vars
-  if defined VS110COMNTOOLS (call :read_vsvars  "%VS110COMNTOOLS%") else (if /I "%1"=="VS2012" goto ToolNotInstall)
-
-  if defined VS100COMNTOOLS  call :read_vsvars  "%VS100COMNTOOLS%"
-  if defined VS90COMNTOOLS   call :read_vsvars  "%VS90COMNTOOLS%"
-  if defined VS80COMNTOOLS   call :read_vsvars  "%VS80COMNTOOLS%"
-  if defined VS71COMNTOOLS   call :read_vsvars  "%VS71COMNTOOLS%"
-
 :done
 set GET_VSVARS_BAT_CHECK_DIR=
diff --git a/BaseTools/set_vsprefix_envs.bat b/BaseTools/set_vsprefix_envs.bat
index d4eb84f0648d..0b9a0c75b975 100644
--- a/BaseTools/set_vsprefix_envs.bat
+++ b/BaseTools/set_vsprefix_envs.bat
@@ -21,8 +21,6 @@ goto :EOF
 if /I "%1"=="VS2019" goto SetVS2019
 if /I "%1"=="VS2017" goto SetVS2017
 if /I "%1"=="VS2015" goto SetVS2015
-if /I "%1"=="VS2013" goto SetVS2013
-if /I "%1"=="VS2012" goto SetVS2012
 
 if defined VS71COMNTOOLS (
   if not defined VS2003_PREFIX (
@@ -30,68 +28,6 @@ if defined VS71COMNTOOLS (
   )
 )
 
-if defined VS80COMNTOOLS (
-  if not defined VS2005_PREFIX (
-    set "VS2005_PREFIX=%VS80COMNTOOLS:~0,-14%"
-  )
-)
-
-if defined VS90COMNTOOLS (
-  if not defined VS2008_PREFIX (
-    set "VS2008_PREFIX=%VS90COMNTOOLS:~0,-14%"
-  )
-  if not defined WINSDK_PREFIX (
-    set "WINSDK_PREFIX=c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\"
-  )
-  if not defined WINSDKx86_PREFIX (
-    set "WINSDKx86_PREFIX=c:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\bin\"
-  )
-)
-
-if defined VS100COMNTOOLS (
-  if not defined VS2010_PREFIX (
-    set "VS2010_PREFIX=%VS100COMNTOOLS:~0,-14%"
-  )
-  if not defined WINSDK7_PREFIX (
-    set "WINSDK7_PREFIX=c:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\"
-  )
-  if not defined WINSDK7x86_PREFIX (
-    set "WINSDK7x86_PREFIX=c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\"
-  )
-)
-
-:SetVS2012
-if defined VS110COMNTOOLS (
-  if not defined VS2012_PREFIX (
-    set "VS2012_PREFIX=%VS110COMNTOOLS:~0,-14%"
-  )
-  if not defined WINSDK71_PREFIX (
-    set "WINSDK71_PREFIX=c:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin\"
-  )
-  if not defined WINSDK71x86_PREFIX (
-    set "WINSDK71x86_PREFIX=c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\"
-  )
-) else (
-  if /I "%1"=="VS2012" goto ToolNotInstall
-)
-if /I "%1"=="VS2012" goto SetWinDDK
-
-:SetVS2013
-if defined VS120COMNTOOLS (
-  if not defined VS2013_PREFIX (
-    set "VS2013_PREFIX=%VS120COMNTOOLS:~0,-14%"
-  )
-  if not defined WINSDK8_PREFIX (
-    set "WINSDK8_PREFIX=c:\Program Files\Windows Kits\8.0\bin\"
-  )
-  if not defined WINSDK8x86_PREFIX (
-    set "WINSDK8x86_PREFIX=c:\Program Files (x86)\Windows Kits\8.0\bin\"
-  )
-) else (
-  if /I "%1"=="VS2013" goto ToolNotInstall
-)
-if /I "%1"=="VS2013" goto SetWinDDK
-
 :SetVS2015
 if defined VS140COMNTOOLS (
   if not defined VS2015_PREFIX (
diff --git a/BaseTools/toolsetup.bat b/BaseTools/toolsetup.bat
index 58fd26a4b585..25d13d559cd6 100755
--- a/BaseTools/toolsetup.bat
+++ b/BaseTools/toolsetup.bat
@@ -60,18 +60,6 @@ if /I "%1"=="/?" goto Usage
     set VSTool=VS2015
     goto loop
   )
-  if /I "%1"=="VS2013" (
-    shift
-    set VS2013=TRUE
-    set VSTool=VS2013
-    goto loop
-  )
-  if /I "%1"=="VS2012" (
-    shift
-    set VS2012=TRUE
-    set VSTool=VS2012
-    goto loop
-  )
   if "%1"=="" goto setup_workspace
   if exist %1 (
     if not defined BASE_TOOLS_PATH (
@@ -189,12 +177,6 @@ if defined VS2019 (
 ) else if defined VS2015 (
   call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2015
   call %EDK_TOOLS_PATH%\get_vsvars.bat VS2015
-) else if defined VS2013 (
-  call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2013
-  call %EDK_TOOLS_PATH%\get_vsvars.bat VS2013
-) else if defined VS2012 (
-  call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat VS2012
-  call %EDK_TOOLS_PATH%\get_vsvars.bat VS2012
 ) else (
   call %EDK_TOOLS_PATH%\set_vsprefix_envs.bat
   call %EDK_TOOLS_PATH%\get_vsvars.bat
@@ -472,7 +454,7 @@ goto end
 
 :Usage
   @echo.
-  echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012]"
+  echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [ Rebuild | ForceRebuild ] [Reconfig] [base_tools_path [edk_tools_path]] [VS2019] [VS2017] [VS2015]"
   @echo.
   @echo         base_tools_path   BaseTools project path, BASE_TOOLS_PATH will be set to this path.
   @echo         edk_tools_path    EDK_TOOLS_PATH will be set to this path.
@@ -481,8 +463,6 @@ goto end
   @echo         ForceRebuild      If sources are available, rebuild all tools regardless of
   @echo                           whether they have been updated or not.
   @echo         Reconfig          Reinstall target.txt, tools_def.txt and build_rule.txt.
-  @echo         VS2012            Set the env for VS2012 build.
-  @echo         VS2013            Set the env for VS2013 build.
   @echo         VS2015            Set the env for VS2015 build.
   @echo         VS2017            Set the env for VS2017 build.
   @echo         VS2019            Set the env for VS2019 build.
@@ -495,8 +475,6 @@ set RECONFIG=
 set VS2019=
 set VS2017=
 set VS2015=
-set VS2013=
-set VS2012=
 set VSTool=
 popd
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 06/13] MdePkg: Remove VS2008-VS2013 remnants
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (4 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 05/13] BaseTools: Remove VS2008-VS2013 remnants Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 07/13] edksetup.bat: " Rebecca Cran
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Since Visual Studio versions older than VS2015 are no longer supported,
remove mention of them from MdePkg.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 MdePkg/Include/Ia32/ProcessorBind.h | 8 ++------
 MdePkg/Include/X64/ProcessorBind.h  | 8 ++------
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/MdePkg/Include/Ia32/ProcessorBind.h b/MdePkg/Include/Ia32/ProcessorBind.h
index ee39d1cfe10b..62ca7f8607d3 100644
--- a/MdePkg/Include/Ia32/ProcessorBind.h
+++ b/MdePkg/Include/Ia32/ProcessorBind.h
@@ -88,19 +88,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 
   #if defined (_MSC_VER) && _MSC_VER >= 1800
 
-//
-// Disable these warnings for VS2013.
-//
-
 //
 // This warning is for potentially uninitialized local variable, and it may cause false
-// positive issues in VS2013 and VS2015 build
+// positive issues in VS2015 build
 //
     #pragma warning ( disable : 4701 )
 
 //
 // This warning is for potentially uninitialized local pointer variable, and it may cause
-// false positive issues in VS2013 and VS2015 build
+// false positive issues in VS2015 build
 //
     #pragma warning ( disable : 4703 )
 
diff --git a/MdePkg/Include/X64/ProcessorBind.h b/MdePkg/Include/X64/ProcessorBind.h
index f0a4d00142b9..cdbb4fd6d3d1 100644
--- a/MdePkg/Include/X64/ProcessorBind.h
+++ b/MdePkg/Include/X64/ProcessorBind.h
@@ -102,19 +102,15 @@
 
   #if defined (_MSC_VER) && _MSC_VER >= 1800
 
-//
-// Disable these warnings for VS2013.
-//
-
 //
 // This warning is for potentially uninitialized local variable, and it may cause false
-// positive issues in VS2013 and VS2015 build
+// positive issues in VS2015 build
 //
     #pragma warning ( disable : 4701 )
 
 //
 // This warning is for potentially uninitialized local pointer variable, and it may cause
-// false positive issues in VS2013 and VS2015 build
+// false positive issues in VS2015 build
 //
     #pragma warning ( disable : 4703 )
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 07/13] edksetup.bat: Remove VS2008-VS2013 remnants
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (5 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 06/13] MdePkg: " Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 08/13] BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs Rebecca Cran
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Since Visual Studio versions older than VS2015 are no longer supported,
remove mention of them from edksetup.bat.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 edksetup.bat | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/edksetup.bat b/edksetup.bat
index 7ad137bb3e9b..2fdf130e00e2 100755
--- a/edksetup.bat
+++ b/edksetup.bat
@@ -148,19 +148,15 @@ if /I "%1"=="ForceRebuild" shift
 if /I "%1"=="VS2019" shift
 if /I "%1"=="VS2017" shift
 if /I "%1"=="VS2015" shift
-if /I "%1"=="VS2013" shift
-if /I "%1"=="VS2012" shift
 if "%1"=="" goto end
 
 :Usage
   @echo.
-  @echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild] [VS2019] [VS2017] [VS2015] [VS2013] [VS2012]"
+  @echo  Usage: "%0 [-h | -help | --help | /h | /help | /?] [Reconfig] [Rebuild] [ForceRebuild] [VS2019] [VS2017] [VS2015]"
   @echo.
   @echo         Reconfig       Reinstall target.txt, tools_def.txt and build_rule.txt.
   @echo         Rebuild        Perform incremental rebuild of BaseTools binaries.
   @echo         ForceRebuild   Force a full rebuild of BaseTools binaries.
-  @echo         VS2012         Set the env for VS2012 build.
-  @echo         VS2013         Set the env for VS2013 build.
   @echo         VS2015         Set the env for VS2015 build.
   @echo         VS2017         Set the env for VS2017 build.
   @echo         VS2019         Set the env for VS2019 build.
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 08/13] BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (6 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 07/13] edksetup.bat: " Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 09/13] BaseTools: Remove EBC (EFI Byte Code) compiler definitions Rebecca Cran
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Remove the unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS definitions
from Conf/tools_def.template.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 BaseTools/Conf/tools_def.template | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index e6a2472501db..7cf1617b6f71 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -102,10 +102,6 @@ DEFINE MSFT_ASLPP_FLAGS        = /nologo /E /C /FIAutoGen.h
 DEFINE MSFT_ASLCC_FLAGS        = /nologo /c /FIAutoGen.h /TC /Dmain=ReferenceAcpiTable
 DEFINE MSFT_ASLDLINK_FLAGS     = /NODEFAULTLIB /ENTRY:ReferenceAcpiTable /SUBSYSTEM:CONSOLE
 
-DEFINE IPHONE_TOOLS            = /Developer/Platforms/iPhoneOS.platform/Developer
-
-DEFINE SOURCERY_CYGWIN_TOOLS = /cygdrive/c/Program Files/CodeSourcery/Sourcery G++ Lite/bin
-
 DEFINE DTCPP_BIN               = ENV(DTCPP_PREFIX)cpp
 DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 09/13] BaseTools: Remove EBC (EFI Byte Code) compiler definitions
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (7 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 08/13] BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 10/13] OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF Rebecca Cran
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

The edk2-stable202302 release was the last to support building
EFI Byte Code drivers. Since the Intel EFI Byte Code Compiler is no
longer available, a decision has been made to remove support for EBC
from edk2.

Remove the definitions for Intel's EBC compiler from
Conf/tools_def.template.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
---
 BaseTools/Conf/tools_def.template | 98 --------------------
 1 file changed, 98 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 7cf1617b6f71..831733ceeae0 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -67,10 +67,6 @@ DEFINE WINSDK10_BIN         = ENV(WINSDK10_PREFIX)DEF(VS_HOST)
 DEFINE WINDDK_BIN16     = ENV(WINDDK3790_PREFIX)bin16
 DEFINE WINDDK_BINX64    = ENV(WINDDK3790_PREFIX)win64\x86\amd64
 
-DEFINE EBC_BIN          = C:\Program Files\Intel\EBC\Bin
-DEFINE EBC_BINx86       = C:\Program Files (x86)\Intel\EBC\Bin
-
-
 DEFINE CYGWIN_BIN              = c:/cygwin/bin
 DEFINE CYGWIN_BINIA32          = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin/
 DEFINE CYGWIN_BINX64           = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/
@@ -135,16 +131,12 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #                             Microsoft Visual Studio 2015 Professional Edition
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830
 #                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler (iasl.exe) from
 #                               https://acpica.org/downloads
 #   VS2017      -win32-  Requires:
 #                             Microsoft Visual Studio 2017 version 15.2 (15.4 for ARM64) or later
 #                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler (iasl.exe) from
 #                               https://acpica.org/downloads
@@ -154,8 +146,6 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #   VS2019      -win32-  Requires:
 #                             Microsoft Visual Studio 2019 version 16.2 or later
 #                        Optional:
-#                             Required to build EBC drivers:
-#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler (iasl.exe) from
 #                               https://acpica.org/downloads
@@ -224,22 +214,6 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 ####################################################################################
 ####################################################################################
 #
-# Intel EFI Byte Code Compiler (Template)
-#
-####################################################################################
-# *_*_EBC_*_FAMILY                   = INTEL
-#
-# *_*_EBC_PP_PATH                    = C:\Program Files\Intel\EBC\Bin\iec.exe
-# *_*_EBC_CC_PATH                    = C:\Program Files\Intel\EBC\Bin\iec.exe
-# *_*_EBC_SLINK_PATH                 = C:\Program Files\Intel\EBC\Bin\link.exe
-#
-# *_*_EBC_SLINK_FLAGS                = /lib /NOLOGO /MACHINE:EBC
-# *_*_EBC_PP_FLAGS                   = /nologo /E /TC /FIAutoGen.h
-# *_*_EBC_CC_FLAGS                   = /nologo /FAcs /c /W3 /WX /FIAutoGen.h
-# *_*_EBC_DLINK_FLAGS                = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /MACHINE:EBC /OPT:REF /NODEFAULTLIB /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /ALIGN:32 /DRIVER
-#
-####################################################################################
-#
 # Intel ACPI Source Language Compiler (Template)
 #
 ####################################################################################
@@ -354,25 +328,6 @@ NOOPT_VS2015_X64_NASM_FLAGS     = -O0 -f win64 -g
 RELEASE_VS2015_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
 NOOPT_VS2015_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
 
-##################
-# EBC definitions
-##################
-*_VS2015_EBC_*_FAMILY            = INTEL
-*_VS2015_EBC_*_DLL               = DEF(VS2015_DLL)
-
-*_VS2015_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2015_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe
-*_VS2015_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe
-*_VS2015_EBC_SLINK_PATH          = DEF(VS2015_BIN)\link.exe
-*_VS2015_EBC_DLINK_PATH          = DEF(VS2015_BIN)\link.exe
-
-*_VS2015_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2015_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2015_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2015_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2015_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
 ####################################################################################
 #   VS2015x86       - Microsoft Visual Studio 2015 (x86) professional with Intel ASL
 #   ASL  - Intel ACPI Source Language Compiler (iasl.exe)
@@ -466,25 +421,6 @@ NOOPT_VS2015x86_X64_NASM_FLAGS     = -O0 -f win64 -g
 RELEASE_VS2015x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.rdata=.data
 NOOPT_VS2015x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG
 
-##################
-# EBC definitions
-##################
-*_VS2015x86_EBC_*_FAMILY            = INTEL
-*_VS2015x86_EBC_*_DLL               = DEF(VS2015x86_DLL)
-
-*_VS2015x86_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2015x86_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2015x86_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2015x86_EBC_SLINK_PATH          = DEF(VS2015x86_BIN)\link.exe
-*_VS2015x86_EBC_DLINK_PATH          = DEF(VS2015x86_BIN)\link.exe
-
-*_VS2015x86_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2015x86_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2015x86_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2015x86_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2015x86_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
-
 ####################################################################################
 #   VS2017       - Microsoft Visual Studio 2017 with Intel ASL
 #   ASL          - Intel ACPI Source Language Compiler (iasl.exe)
@@ -626,23 +562,6 @@ NOOPT_VS2017_AARCH64_ASM_FLAGS     = /nologo
 RELEASE_VS2017_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data
 NOOPT_VS2017_AARCH64_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
 
-##################
-# EBC definitions
-##################
-*_VS2017_EBC_*_FAMILY            = INTEL
-
-*_VS2017_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2017_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2017_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2017_EBC_SLINK_PATH          = DEF(VS2017_BIN_IA32)\link.exe
-*_VS2017_EBC_DLINK_PATH          = DEF(VS2017_BIN_IA32)\link.exe
-
-*_VS2017_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2017_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2017_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2017_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2017_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
 ####################################################################################
 #   VS2019       - Microsoft Visual Studio 2019 with Intel ASL
 #   ASL          - Intel ACPI Source Language Compiler (iasl.exe)
@@ -784,23 +703,6 @@ NOOPT_VS2019_AARCH64_ASM_FLAGS     = /nologo
 RELEASE_VS2019_AARCH64_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /MERGE:.rdata=.data
 NOOPT_VS2019_AARCH64_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:ARM64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /DRIVER /DEBUG
 
-##################
-# EBC definitions
-##################
-*_VS2019_EBC_*_FAMILY            = INTEL
-
-*_VS2019_EBC_PP_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2019_EBC_VFRPP_PATH          = DEF(EBC_BINx86)\iec.exe
-*_VS2019_EBC_CC_PATH             = DEF(EBC_BINx86)\iec.exe
-*_VS2019_EBC_SLINK_PATH          = DEF(VS2019_BIN_IA32)\link.exe
-*_VS2019_EBC_DLINK_PATH          = DEF(VS2019_BIN_IA32)\link.exe
-
-*_VS2019_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h
-*_VS2019_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)
-*_VS2019_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h
-*_VS2019_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC
-*_VS2019_EBC_DLINK_FLAGS         = "C:\Program Files (x86)\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER
-
 ####################################################################################
 # GCC Common
 ####################################################################################
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 10/13] OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (8 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 09/13] BaseTools: Remove EBC (EFI Byte Code) compiler definitions Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 11/13] Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC Rebecca Cran
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

The CLANGDWARF toolchain has the same problem as XCODE5 linking
CpuExceptionHandlerLib. So, use the
Xcode5SecPeiCpuExceptionHandlerLib.inf when building with the CLANGDWARF
toolchain.

Since the difference is that the non-Xcode5 version uses `mov` while the
Xcode5 version uses `lea`, they can be merged in future with the single
version using `lea`.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 OvmfPkg/OvmfPkgX64.dsc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc
index 00f7005fca40..c30f4f6db832 100644
--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@ [LibraryClasses.common.SEC]
   PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
   PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
   MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
-!if $(TOOL_CHAIN_TAG) == "XCODE5"
+!if $(TOOL_CHAIN_TAG) == "XCODE5" || $(TOOL_CHAIN_TAG) == "CLANGDWARF"
   CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/Xcode5SecPeiCpuExceptionHandlerLib.inf
 !else
   CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 11/13] Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (9 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 10/13] OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 12/13] BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template Rebecca Cran
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc               |   4 +-
 IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc                             |  12 +-
 CryptoPkg/Library/OpensslLib/OpensslLib.inf                         |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf                    |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                   |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFull.inf                     |   2 +-
 CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf                |   2 +-
 EmulatorPkg/Unix/Host/Host.inf                                      |   6 +-
 OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c           |   5 -
 .azurepipelines/Ubuntu-GCC5.yml                                     |   4 +-
 .azurepipelines/templates/platform-build-run-steps.yml              |   2 +-
 .azurepipelines/templates/pr-gate-build-job.yml                     |   2 +-
 .azurepipelines/templates/pr-gate-steps.yml                         |   2 +-
 ArmPlatformPkg/Scripts/Makefile                                     |   2 +-
 ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml               |   4 +-
 ArmVirtPkg/PlatformCI/ReadMe.md                                     |   2 +-
 BaseTools/Conf/tools_def.template                                   | 891 ++++++--------------
 BaseTools/Edk2ToolsBuild.py                                         |   2 +-
 BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py |   2 +-
 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py           |  62 +-
 BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml |   4 +-
 DynamicTablesPkg/Readme.md                                          |  10 +-
 EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml              |   4 +-
 EmulatorPkg/PlatformCI/ReadMe.md                                    |   2 +-
 EmulatorPkg/Readme.md                                               |   8 +-
 EmulatorPkg/build.sh                                                |  14 +-
 OvmfPkg/CloudHv/README                                              |   2 +-
 OvmfPkg/IntelTdx/README                                             |   4 +-
 OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml                  |   4 +-
 OvmfPkg/PlatformCI/ReadMe.md                                        |   2 +-
 OvmfPkg/README                                                      |   4 +-
 OvmfPkg/build.sh                                                    |  12 +-
 PrmPkg/Readme.md                                                    |   6 +-
 ReadMe.rst                                                          | 102 +--
 UnitTestFrameworkPkg/ReadMe.md                                      |   8 +-
 35 files changed, 409 insertions(+), 789 deletions(-)

diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
index 7f5dfa30ed60..6228cbf378ec 100644
--- a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
+++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
@@ -27,8 +27,8 @@ [BuildOptions]
   GCC:*_*_*_CC_FLAGS   = -D UNIT_TESTING_DEBUG=1
   XCODE:*_*_*_CC_FLAGS = -D UNIT_TESTING_DEBUG=1
 !endif
-  GCC:*_GCC5_*_CC_FLAGS = --coverage
-  GCC:*_GCC5_*_DLINK_FLAGS = --coverage
+  GCC:*_GCC_*_CC_FLAGS = --coverage
+  GCC:*_GCC_*_DLINK_FLAGS = --coverage
 [BuildOptions.common.EDKII.HOST_APPLICATION]
   #
   # MSFT
diff --git a/IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc b/IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc
index 31558121185d..2dea82228383 100644
--- a/IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc
+++ b/IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc
@@ -461,10 +461,8 @@ [Components.IA32]
 ###################################################################################################
 [BuildOptions]
 # Append build options for EDK and EDKII drivers (= is Append, == is Replace)
-  # Enable link-time optimization when building with GCC49
-  *_GCC49_IA32_CC_FLAGS = -flto
-  *_GCC49_IA32_DLINK_FLAGS = -flto
-  *_GCC5_IA32_CC_FLAGS = -fno-pic
-  *_GCC5_IA32_DLINK_FLAGS = -no-pie
-  *_GCC5_IA32_ASLCC_FLAGS = -fno-pic
-  *_GCC5_IA32_ASLDLINK_FLAGS = -no-pie
+  # Enable link-time optimization when building with GCC
+  *_GCC_IA32_CC_FLAGS = -fno-pic
+  *_GCC_IA32_DLINK_FLAGS = -no-pie
+  *_GCC_IA32_ASLCC_FLAGS = -fno-pic
+  *_GCC_IA32_ASLDLINK_FLAGS = -no-pie
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
index 003e17cb8e17..8ce713a4d76c 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
@@ -642,7 +642,7 @@ [BuildOptions]
   GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
-  GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
+  GCC:*_GCC_*_CC_FLAGS    = -Wno-unused-but-set-variable
 
   # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
   # 1295: Deprecated declaration <entity> - give arg types
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
index dded0b66806b..e15446e1846a 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
@@ -690,7 +690,7 @@ [BuildOptions]
   GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
-  GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
+  GCC:*_GCC_*_CC_FLAGS    = -Wno-unused-but-set-variable
 
   # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
   # 1295: Deprecated declaration <entity> - give arg types
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
index 523d766f6be0..e38eddf97395 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
@@ -592,7 +592,7 @@ [BuildOptions]
   GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
-  GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
+  GCC:*_GCC_*_CC_FLAGS    = -Wno-unused-but-set-variable
 
   # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
   # 1295: Deprecated declaration <entity> - give arg types
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
index 9baf0cbfb42c..b119a53c53a8 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
@@ -697,7 +697,7 @@ [BuildOptions]
   GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
-  GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
+  GCC:*_GCC_*_CC_FLAGS    = -Wno-unused-but-set-variable
 
   # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
   # 1295: Deprecated declaration <entity> - give arg types
diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
index beb8e6986a4a..c42273b9daed 100644
--- a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
+++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
@@ -745,7 +745,7 @@ [BuildOptions]
   GCC:*_CLANGDWARF_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
   GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-function-declaration -Wno-error=ignored-pragma-optimize
   # Revisit after switching to 3.0 branch
-  GCC:*_GCC5_*_CC_FLAGS    = -Wno-unused-but-set-variable
+  GCC:*_GCC_*_CC_FLAGS    = -Wno-unused-but-set-variable
 
   # suppress the following warnings in openssl so we don't break the build with warnings-as-errors:
   # 1295: Deprecated declaration <entity> - give arg types
diff --git a/EmulatorPkg/Unix/Host/Host.inf b/EmulatorPkg/Unix/Host/Host.inf
index f5ebbed68344..b9847be5b9f5 100644
--- a/EmulatorPkg/Unix/Host/Host.inf
+++ b/EmulatorPkg/Unix/Host/Host.inf
@@ -119,11 +119,9 @@ [BuildOptions]
    GCC:*_*_IA32_ASM_FLAGS == -m32 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
 
    GCC:*_*_X64_DLINK_FLAGS == -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib
-   GCC:*_GCC5_X64_DLINK_FLAGS == -flto -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib
+   GCC:*_GCC_X64_DLINK_FLAGS == -flto -o $(BIN_DIR)/Host -m64 -L/usr/X11R6/lib
    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
-   GCC:*_GCC48_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"
-   GCC:*_GCC49_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))"
-   GCC:*_GCC5_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -flto -DUSING_LTO -Os
+   GCC:*_GCC_X64_CC_FLAGS = "-DEFIAPI=__attribute__((ms_abi))" -flto -DUSING_LTO -Os
    GCC:*_*_X64_PP_FLAGS == -m64 -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h
    GCC:*_*_X64_ASM_FLAGS == -m64 -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
 
diff --git a/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c b/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c
index 248a03e8db0b..1af3162d226a 100644
--- a/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c
+++ b/OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c
@@ -340,11 +340,6 @@ QemuLoadKernelImage (
   CHAR8                      *CommandLine;
   UINTN                      InitrdSize;
 
-  //
-  // Redundant assignment to work around GCC48/GCC49 limitations.
-  //
-  CommandLine = NULL;
-
   //
   // Load the image. This should call back into the QEMU EFI loader file system.
   //
diff --git a/.azurepipelines/Ubuntu-GCC5.yml b/.azurepipelines/Ubuntu-GCC5.yml
index b9a3b851cf3c..c6ddcc7f9af6 100644
--- a/.azurepipelines/Ubuntu-GCC5.yml
+++ b/.azurepipelines/Ubuntu-GCC5.yml
@@ -1,5 +1,5 @@
 ## @file
-# Azure Pipeline build file for a build using ubuntu and GCC5
+# Azure Pipeline build file for a build using ubuntu and GCC
 #
 # Copyright (c) Microsoft Corporation.
 # Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
@@ -19,7 +19,7 @@ variables:
 jobs:
 - template: templates/pr-gate-build-job.yml
   parameters:
-    tool_chain_tag: 'GCC5'
+    tool_chain_tag: 'GCC'
     vm_image: 'ubuntu-22.04'
     container: ${{ variables.default_linux_image }}
     arch_list: "IA32,X64,ARM,AARCH64,RISCV64,LOONGARCH64"
diff --git a/.azurepipelines/templates/platform-build-run-steps.yml b/.azurepipelines/templates/platform-build-run-steps.yml
index 087f460d7fec..ce828e8c60bf 100644
--- a/.azurepipelines/templates/platform-build-run-steps.yml
+++ b/.azurepipelines/templates/platform-build-run-steps.yml
@@ -43,7 +43,7 @@ steps:
     echo "##vso[task.prependpath]${HOME}/.local/bin"
     echo "new PATH=${PATH}"
   displayName: Set PATH
-  condition: eq('${{ parameters.tool_chain_tag }}', 'GCC5')
+  condition: eq('${{ parameters.tool_chain_tag }}', 'GCC')
 
 - checkout: self
   clean: true
diff --git a/.azurepipelines/templates/pr-gate-build-job.yml b/.azurepipelines/templates/pr-gate-build-job.yml
index 3999bb166813..5142ca6636ba 100644
--- a/.azurepipelines/templates/pr-gate-build-job.yml
+++ b/.azurepipelines/templates/pr-gate-build-job.yml
@@ -24,7 +24,7 @@ jobs:
   #Use matrix to speed up the build process
   strategy:
     matrix:
-      ${{ if eq(parameters.tool_chain_tag, 'GCC5') }}:
+      ${{ if eq(parameters.tool_chain_tag, 'GCC') }}:
         TARGET_GCC_ONLY:
           Build.Pkgs: 'EmbeddedPkg'
           Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'
diff --git a/.azurepipelines/templates/pr-gate-steps.yml b/.azurepipelines/templates/pr-gate-steps.yml
index 78b2b2c8d934..2ca9e134be39 100644
--- a/.azurepipelines/templates/pr-gate-steps.yml
+++ b/.azurepipelines/templates/pr-gate-steps.yml
@@ -20,7 +20,7 @@ steps:
     echo "##vso[task.prependpath]${HOME}/.local/bin"
     echo "new PATH=${PATH}"
   displayName: Set PATH
-  condition: eq('${{ parameters.tool_chain_tag }}', 'GCC5')
+  condition: eq('${{ parameters.tool_chain_tag }}', 'GCC')
 
 - checkout: self
   clean: true
diff --git a/ArmPlatformPkg/Scripts/Makefile b/ArmPlatformPkg/Scripts/Makefile
index baa618456413..686b68614f03 100644
--- a/ArmPlatformPkg/Scripts/Makefile
+++ b/ArmPlatformPkg/Scripts/Makefile
@@ -5,7 +5,7 @@
 #
 #*/
 
-EDK2_TOOLCHAIN ?= GCC5
+EDK2_TOOLCHAIN ?= GCC
 EDK2_ARCH ?= ARM
 EDK2_BUILD ?= DEBUG
 
diff --git a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
index d1772a65fc3a..dfc5c119096f 100644
--- a/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
+++ b/ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
@@ -3,7 +3,7 @@
 #
 # Platform: ArmVirtQemu
 # OS: Ubuntu
-# Toolchain: GCC5
+# Toolchain: GCC
 #
 # Copyright (c) Microsoft Corporation.
 # SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -151,7 +151,7 @@ jobs:
     steps:
     - template: ../../../.azurepipelines/templates/platform-build-run-steps.yml
       parameters:
-        tool_chain_tag: GCC5
+        tool_chain_tag: GCC
         build_pkg: $(package)
         build_target: $(Build.Target)
         build_arch: $(Build.Arch)
diff --git a/ArmVirtPkg/PlatformCI/ReadMe.md b/ArmVirtPkg/PlatformCI/ReadMe.md
index ee8d8cd61e73..bf9f7f5cac7e 100644
--- a/ArmVirtPkg/PlatformCI/ReadMe.md
+++ b/ArmVirtPkg/PlatformCI/ReadMe.md
@@ -6,7 +6,7 @@ to use the same Pytools based build infrastructure locally.
 ## Supported Configuration Details
 
 This solution for building and running ArmVirtPkg has only been validated with Ubuntu
-18.04 and the GCC5 toolchain. Two different firmware builds are supported and are
+18.04 and the GCC toolchain. Two different firmware builds are supported and are
 described below.
 
 | Configuration name      | Architecture       | DSC File         |Additional Flags |
diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 831733ceeae0..3a60fe9b5965 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -71,14 +71,8 @@ DEFINE CYGWIN_BIN              = c:/cygwin/bin
 DEFINE CYGWIN_BINIA32          = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin/
 DEFINE CYGWIN_BINX64           = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/
 
-DEFINE GCC48_IA32_PREFIX       = ENV(GCC48_BIN)
-DEFINE GCC48_X64_PREFIX        = ENV(GCC48_BIN)
-
-DEFINE GCC49_IA32_PREFIX       = ENV(GCC49_BIN)
-DEFINE GCC49_X64_PREFIX        = ENV(GCC49_BIN)
-
-DEFINE GCC5_IA32_PREFIX        = ENV(GCC5_BIN)
-DEFINE GCC5_X64_PREFIX         = ENV(GCC5_BIN)
+DEFINE GCC_IA32_PREFIX        = ENV(GCC_BIN)
+DEFINE GCC_X64_PREFIX         = ENV(GCC_BIN)
 DEFINE GCC_HOST_PREFIX         = ENV(GCC_HOST_BIN)
 
 DEFINE UNIX_IASL_BIN           = ENV(IASL_PREFIX)iasl
@@ -152,20 +146,8 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc
 #                        Note:
 #                             Building of XIP firmware images for ARM/ARM64 is not currently supported (only applications).
 #                             /FILEALIGN:4096 and other changes are needed for ARM firmware builds.
-#   GCC48       -Linux,Windows-  Requires:
-#                             GCC 4.8 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler from
-#                               https://acpica.org/downloads
-#   GCC49       -Linux,Windows-  Requires:
-#                             GCC 4.9 targeting x86_64-linux-gnu, aarch64-linux-gnu, or arm-linux-gnueabi
-#                        Optional:
-#                             Required to build platforms or ACPI tables:
-#                               Intel(r) ACPI Compiler from
-#                               https://acpica.org/downloads
-#   GCC5        -Linux,Windows-  Requires:
-#                             GCC 5 with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu
+#   GCC         -Linux,Windows-  Requires:
+#                             GCC 6 or newer with LTO support, targeting x86_64-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabi, riscv64-linux-gnu or loongarch64-linux-gnu
 #                        Optional:
 #                             Required to build platforms or ACPI tables:
 #                               Intel(r) ACPI Compiler from
@@ -719,31 +701,18 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG     = --add-gnu-debuglink=$(DEBUG_DIR)/$(MODULE_N
 *_*_*_DTCPP_PATH                   = DEF(DTCPP_BIN)
 *_*_*_DTC_PATH                     = DEF(DTC_BIN)
 
-DEFINE GCC_ALL_CC_FLAGS            = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
-DEFINE GCC_ARM_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie
-DEFINE GCC_LOONGARCH64_CC_FLAGS    = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char -ffunction-sections -fdata-sections
-DEFINE GCC_ARM_CC_XIPFLAGS         = -mno-unaligned-access
-DEFINE GCC_AARCH64_CC_FLAGS        = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char  -ffunction-sections -fdata-sections -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18
-DEFINE GCC_AARCH64_CC_XIPFLAGS     = -mstrict-align -mgeneral-regs-only
-DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
+DEFINE GCC_ALL_CC_FLAGS            = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common -ffunction-sections -fdata-sections
+DEFINE GCC_LOONGARCH64_CC_FLAGS    = DEF(GCC_ALL_CC_FLAGS) -mabi=lp64d -fno-asynchronous-unwind-tables -fno-plt -Wno-address -fno-short-enums -fsigned-char
+##################DEFINE GCC_DLINK_FLAGS_COMMON      = -nostdlib --pie
 DEFINE GCC_DLINK2_FLAGS_COMMON     = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
-DEFINE GCC_IA32_X64_DLINK_COMMON   = DEF(GCC_DLINK_FLAGS_COMMON) --gc-sections
 DEFINE GCC_ARM_AARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
 DEFINE GCC_LOONGARCH64_DLINK_COMMON= -Wl,--emit-relocs -nostdlib -Wl,--gc-sections -u $(IMAGE_ENTRY_POINT) -Wl,-e,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC_ARM_DLINK_FLAGS         = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -Wl,--pic-veneer
-DEFINE GCC_AARCH64_DLINK_FLAGS     = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20
 DEFINE GCC_LOONGARCH64_DLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_COMMON) -z common-page-size=0x20
 DEFINE GCC_ARM_AARCH64_ASLDLINK_FLAGS = -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -z common-page-size=0x20
-DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
-DEFINE GCC_ARM_ASLDLINK_FLAGS      = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC_AARCH64_ASLDLINK_FLAGS  = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
 DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS = DEF(GCC_LOONGARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT)
-DEFINE GCC_IA32_X64_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC_ASM_FLAGS               = -c -x assembler -imacros AutoGen.h
 DEFINE GCC_PP_FLAGS                = -E -x assembler-with-cpp -include AutoGen.h
 DEFINE GCC_VFRPP_FLAGS             = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h
 DEFINE GCC_ASLPP_FLAGS             = -x c -E -include AutoGen.h
-DEFINE GCC_ASLCC_FLAGS             = -x c
 DEFINE GCC_WINDRES_FLAGS           = -J rc -O coff
 DEFINE GCC_DTCPP_FLAGS             = -E -x assembler-with-cpp -imacros AutoGen.h -nostdinc -undef
 DEFINE GCC_IA32_RC_FLAGS           = -I binary -O elf32-i386          -B i386        --rename-section .data=.hii
@@ -756,535 +725,207 @@ DEFINE GCC_LOONGARCH64_RC_FLAGS    = -I binary -O elf64-loongarch     -B loongar
 # GCC Build Flag for included header file list generation
 DEFINE GCC_DEPS_FLAGS              = -MMD -MF $@.deps
 
-DEFINE GCC48_ALL_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -ffunction-sections -fdata-sections -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings
-DEFINE GCC48_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x20
-DEFINE GCC48_IA32_CC_FLAGS           = DEF(GCC48_ALL_CC_FLAGS) -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer
-DEFINE GCC48_X64_CC_FLAGS            = DEF(GCC48_ALL_CC_FLAGS) -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address  -fno-omit-frame-pointer
-DEFINE GCC48_IA32_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC48_IA32_X64_DLINK_FLAGS    = DEF(GCC48_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE GCC48_IA32_DLINK2_FLAGS       = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON)
-DEFINE GCC48_X64_DLINK_FLAGS         = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
-DEFINE GCC48_X64_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON)
-DEFINE GCC48_ASM_FLAGS               = DEF(GCC_ASM_FLAGS)
-DEFINE GCC48_ARM_ASM_FLAGS           = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
-DEFINE GCC48_AARCH64_ASM_FLAGS       = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
-DEFINE GCC48_ARM_CC_FLAGS            = $(PLATFORM_FLAGS) DEF(GCC_ARM_CC_FLAGS) -fstack-protector -mword-relocations
-DEFINE GCC48_ARM_CC_XIPFLAGS         = DEF(GCC_ARM_CC_XIPFLAGS)
-DEFINE GCC48_AARCH64_CC_FLAGS        = $(PLATFORM_FLAGS) -mcmodel=large DEF(GCC_AARCH64_CC_FLAGS)
-DEFINE GCC48_AARCH64_CC_XIPFLAGS     = DEF(GCC_AARCH64_CC_XIPFLAGS)
-DEFINE GCC48_ARM_DLINK_FLAGS         = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--oformat=elf32-littlearm
-DEFINE GCC48_ARM_DLINK2_FLAGS        = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220
-DEFINE GCC48_AARCH64_DLINK_FLAGS     = DEF(GCC_AARCH64_DLINK_FLAGS)
-DEFINE GCC48_AARCH64_DLINK2_FLAGS    = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-DEFINE GCC48_ARM_ASLDLINK_FLAGS      = DEF(GCC_ARM_ASLDLINK_FLAGS) -Wl,--oformat=elf32-littlearm
-DEFINE GCC48_AARCH64_ASLDLINK_FLAGS  = DEF(GCC_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC48_ASLCC_FLAGS             = DEF(GCC_ASLCC_FLAGS)
-
-DEFINE GCC49_IA32_CC_FLAGS           = DEF(GCC48_IA32_CC_FLAGS) -fno-pic -fno-pie
-DEFINE GCC49_X64_CC_FLAGS            = DEF(GCC48_X64_CC_FLAGS)
-DEFINE GCC49_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
-DEFINE GCC49_IA32_X64_ASLDLINK_FLAGS = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC49_IA32_X64_DLINK_FLAGS    = DEF(GCC49_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
-DEFINE GCC49_IA32_DLINK2_FLAGS       = DEF(GCC48_IA32_DLINK2_FLAGS)
-DEFINE GCC49_X64_DLINK_FLAGS         = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
-DEFINE GCC49_X64_DLINK2_FLAGS        = DEF(GCC48_X64_DLINK2_FLAGS)
-DEFINE GCC49_ASM_FLAGS               = DEF(GCC48_ASM_FLAGS)
-DEFINE GCC49_ARM_ASM_FLAGS           = DEF(GCC48_ARM_ASM_FLAGS)
-DEFINE GCC49_AARCH64_ASM_FLAGS       = DEF(GCC48_AARCH64_ASM_FLAGS)
-DEFINE GCC49_ARM_CC_FLAGS            = DEF(GCC48_ARM_CC_FLAGS)
-DEFINE GCC49_ARM_CC_XIPFLAGS         = DEF(GCC48_ARM_CC_XIPFLAGS)
-DEFINE GCC49_AARCH64_CC_FLAGS        = $(PLATFORM_FLAGS) DEF(GCC48_ALL_CC_FLAGS) DEF(GCC_AARCH64_CC_FLAGS) -mcmodel=small
-DEFINE GCC49_AARCH64_CC_XIPFLAGS     = DEF(GCC48_AARCH64_CC_XIPFLAGS)
-DEFINE GCC49_ARM_DLINK_FLAGS         = DEF(GCC48_ARM_DLINK_FLAGS)
-DEFINE GCC49_ARM_DLINK2_FLAGS        = DEF(GCC48_ARM_DLINK2_FLAGS)
-DEFINE GCC49_AARCH64_DLINK_FLAGS     = DEF(GCC48_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000
-DEFINE GCC49_AARCH64_DLINK2_FLAGS    = DEF(GCC48_AARCH64_DLINK2_FLAGS)
-DEFINE GCC49_ARM_ASLDLINK_FLAGS      = DEF(GCC48_ARM_ASLDLINK_FLAGS)
-DEFINE GCC49_AARCH64_ASLDLINK_FLAGS  = DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC49_ASLCC_FLAGS             = DEF(GCC48_ASLCC_FLAGS)
-
-DEFINE GCC5_IA32_CC_FLAGS            = DEF(GCC49_IA32_CC_FLAGS)
-DEFINE GCC5_X64_CC_FLAGS             = DEF(GCC49_X64_CC_FLAGS)
-DEFINE GCC5_IA32_X64_DLINK_COMMON    = DEF(GCC49_IA32_X64_DLINK_COMMON)
-DEFINE GCC5_IA32_X64_ASLDLINK_FLAGS  = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS)
-DEFINE GCC5_IA32_X64_DLINK_FLAGS     = DEF(GCC49_IA32_X64_DLINK_FLAGS)
-DEFINE GCC5_IA32_DLINK2_FLAGS        = DEF(GCC49_IA32_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_X64_DLINK_FLAGS          = DEF(GCC49_X64_DLINK_FLAGS)
-DEFINE GCC5_X64_DLINK2_FLAGS         = DEF(GCC49_X64_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_ASM_FLAGS                = DEF(GCC49_ASM_FLAGS)
-DEFINE GCC5_ARM_ASM_FLAGS            = DEF(GCC49_ARM_ASM_FLAGS)
-DEFINE GCC5_AARCH64_ASM_FLAGS        = DEF(GCC49_AARCH64_ASM_FLAGS)
-DEFINE GCC5_ARM_CC_FLAGS             = DEF(GCC49_ARM_CC_FLAGS)
-DEFINE GCC5_ARM_CC_XIPFLAGS          = DEF(GCC49_ARM_CC_XIPFLAGS)
-DEFINE GCC5_AARCH64_CC_FLAGS         = DEF(GCC49_AARCH64_CC_FLAGS)
-DEFINE GCC5_AARCH64_CC_XIPFLAGS      = DEF(GCC49_AARCH64_CC_XIPFLAGS)
-DEFINE GCC5_ARM_DLINK_FLAGS          = DEF(GCC49_ARM_DLINK_FLAGS)
-DEFINE GCC5_ARM_DLINK2_FLAGS         = DEF(GCC49_ARM_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_AARCH64_DLINK_FLAGS      = DEF(GCC49_AARCH64_DLINK_FLAGS)
-DEFINE GCC5_AARCH64_DLINK2_FLAGS     = DEF(GCC49_AARCH64_DLINK2_FLAGS) -Wno-error
-DEFINE GCC5_ARM_ASLDLINK_FLAGS       = DEF(GCC49_ARM_ASLDLINK_FLAGS)
-DEFINE GCC5_AARCH64_ASLDLINK_FLAGS   = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
-DEFINE GCC5_ASLCC_FLAGS              = DEF(GCC49_ASLCC_FLAGS) -fno-lto
-
-DEFINE GCC5_RISCV_ALL_CC_FLAGS                    = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0
-DEFINE GCC5_RISCV_ALL_DLINK_COMMON                = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
-DEFINE GCC5_RISCV_ALL_DLINK_FLAGS                 = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
-DEFINE GCC5_RISCV_ALL_DLINK2_FLAGS                = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
-DEFINE GCC5_RISCV_ALL_ASM_FLAGS                   = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
-DEFINE GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE    = -Wno-tautological-compare -Wno-pointer-compare
-
-DEFINE GCC5_RISCV_OPENSBI_TYPES                   = -DOPENSBI_EXTERNAL_SBI_TYPES=OpensbiTypes.h
-
-DEFINE GCC5_RISCV64_ARCH                   = rv64gc
-DEFINE GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS = DEF(GCC5_RISCV_ALL_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
-DEFINE GCC5_RISCV64_CC_FLAGS               = DEF(GCC5_RISCV_ALL_CC_FLAGS) DEF(GCC5_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC5_RISCV_OPENSBI_TYPES) -march=DEF(GCC5_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax
-DEFINE GCC5_RISCV64_DLINK_FLAGS            = DEF(GCC5_RISCV_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax
-DEFINE GCC5_RISCV64_DLINK2_FLAGS           = DEF(GCC5_RISCV_ALL_DLINK2_FLAGS)
-DEFINE GCC5_RISCV64_ASM_FLAGS              = DEF(GCC5_RISCV_ALL_ASM_FLAGS) -march=DEF(GCC5_RISCV64_ARCH) -mcmodel=medany -mabi=lp64
-
-DEFINE GCC5_LOONGARCH64_CC_FLAGS           = DEF(GCC_LOONGARCH64_CC_FLAGS) -march=loongarch64 -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno-pointer-to-int-cast -no-pie -fno-stack-protector -mno-explicit-relocs
-DEFINE GCC5_LOONGARCH64_DLINK_FLAGS        = DEF(GCC_LOONGARCH64_DLINK_FLAGS)
-DEFINE GCC5_LOONGARCH64_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
-DEFINE GCC5_LOONGARCH64_ASLDLINK_FLAGS     = DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS) DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
-DEFINE GCC5_LOONGARCH64_ASM_FLAGS          = -x assembler-with-cpp -mabi=lp64d -march=loongarch64 -fno-builtin -c -Wall -mno-explicit-relocs
-DEFINE GCC5_LOONGARCH64_PP_FLAGS           = -mabi=lp64d -march=loongarch64 DEF(GCC_PP_FLAGS)
-
-####################################################################################
-#
-# GCC 4.8 - This configuration is used to compile under Linux to produce
-#           PE/COFF binaries using GCC 4.8.
-#
-####################################################################################
-*_GCC48_*_*_FAMILY               = GCC
-
-*_GCC48_*_MAKE_PATH                    = DEF(GCC_HOST_PREFIX)make
-*_GCC48_*_*_DLL                        = ENV(GCC48_DLL)
-*_GCC48_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
-
-*_GCC48_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)
-*_GCC48_*_ASLPP_FLAGS                  = DEF(GCC_ASLPP_FLAGS)
-*_GCC48_*_ASLCC_FLAGS                  = DEF(GCC_ASLCC_FLAGS)
-*_GCC48_*_VFRPP_FLAGS                  = DEF(GCC_VFRPP_FLAGS)
-*_GCC48_*_APP_FLAGS                    =
-*_GCC48_*_ASL_FLAGS                    = DEF(IASL_FLAGS)
-*_GCC48_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)
-*_GCC48_*_DEPS_FLAGS                   = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC48 IA32 definitions
-##################
-*_GCC48_IA32_OBJCOPY_PATH         = DEF(GCC48_IA32_PREFIX)objcopy
-*_GCC48_IA32_CC_PATH              = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_SLINK_PATH           = DEF(GCC48_IA32_PREFIX)ar
-*_GCC48_IA32_DLINK_PATH           = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLDLINK_PATH        = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASM_PATH             = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_PP_PATH              = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_VFRPP_PATH           = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLCC_PATH           = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_ASLPP_PATH           = DEF(GCC48_IA32_PREFIX)gcc
-*_GCC48_IA32_RC_PATH              = DEF(GCC48_IA32_PREFIX)objcopy
-
-*_GCC48_IA32_ASLCC_FLAGS          = DEF(GCC48_ASLCC_FLAGS) -m32
-*_GCC48_IA32_ASLDLINK_FLAGS       = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_GCC48_IA32_ASM_FLAGS            = DEF(GCC48_ASM_FLAGS) -m32 -march=i386
-*_GCC48_IA32_DLINK_FLAGS          = DEF(GCC48_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386
-*_GCC48_IA32_DLINK2_FLAGS         = DEF(GCC48_IA32_DLINK2_FLAGS)
-*_GCC48_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
-*_GCC48_IA32_OBJCOPY_FLAGS        =
-*_GCC48_IA32_NASM_FLAGS           = -f elf32
-
-  DEBUG_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS)
-RELEASE_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -Wno-unused-but-set-variable
-  NOOPT_GCC48_IA32_CC_FLAGS       = DEF(GCC48_IA32_CC_FLAGS) -O0
-
-##################
-# GCC48 X64 definitions
-##################
-*_GCC48_X64_OBJCOPY_PATH         = DEF(GCC48_X64_PREFIX)objcopy
-*_GCC48_X64_CC_PATH              = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_SLINK_PATH           = DEF(GCC48_X64_PREFIX)ar
-*_GCC48_X64_DLINK_PATH           = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLDLINK_PATH        = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASM_PATH             = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_PP_PATH              = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_VFRPP_PATH           = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLCC_PATH           = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_ASLPP_PATH           = DEF(GCC48_X64_PREFIX)gcc
-*_GCC48_X64_RC_PATH              = DEF(GCC48_X64_PREFIX)objcopy
-
-*_GCC48_X64_ASLCC_FLAGS          = DEF(GCC48_ASLCC_FLAGS) -m64
-*_GCC48_X64_ASLDLINK_FLAGS       = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC48_X64_ASM_FLAGS            = DEF(GCC48_ASM_FLAGS) -m64
-*_GCC48_X64_DLINK_FLAGS          = DEF(GCC48_X64_DLINK_FLAGS)
-*_GCC48_X64_DLINK2_FLAGS         = DEF(GCC48_X64_DLINK2_FLAGS)
-*_GCC48_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
-*_GCC48_X64_OBJCOPY_FLAGS        =
-*_GCC48_X64_NASM_FLAGS           = -f elf64
-
-  DEBUG_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS)
-RELEASE_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS) -Wno-unused-but-set-variable
-  NOOPT_GCC48_X64_CC_FLAGS       = DEF(GCC48_X64_CC_FLAGS) -O0
-
-##################
-# GCC48 ARM definitions
-##################
-*_GCC48_ARM_CC_PATH              = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_SLINK_PATH           = ENV(GCC48_ARM_PREFIX)ar
-*_GCC48_ARM_DLINK_PATH           = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLDLINK_PATH        = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASM_PATH             = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_PP_PATH              = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_VFRPP_PATH           = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLCC_PATH           = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_ASLPP_PATH           = ENV(GCC48_ARM_PREFIX)gcc
-*_GCC48_ARM_RC_PATH              = ENV(GCC48_ARM_PREFIX)objcopy
-
-*_GCC48_ARM_ASLCC_FLAGS          = DEF(GCC48_ASLCC_FLAGS)
-*_GCC48_ARM_ASLDLINK_FLAGS       = DEF(GCC48_ARM_ASLDLINK_FLAGS)
-*_GCC48_ARM_ASM_FLAGS            = DEF(GCC48_ARM_ASM_FLAGS)
-*_GCC48_ARM_DLINK_FLAGS          = DEF(GCC48_ARM_DLINK_FLAGS)
-*_GCC48_ARM_DLINK2_FLAGS         = DEF(GCC48_ARM_DLINK2_FLAGS)
-*_GCC48_ARM_DTCPP_FLAGS          = DEF(GCC_DTCPP_FLAGS)
-*_GCC48_ARM_PLATFORM_FLAGS       = -march=armv7-a
-*_GCC48_ARM_PP_FLAGS             = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC48_ARM_RC_FLAGS             = DEF(GCC_ARM_RC_FLAGS)
-*_GCC48_ARM_VFRPP_FLAGS          = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC48_ARM_CC_XIPFLAGS          = DEF(GCC48_ARM_CC_XIPFLAGS)
-
-  DEBUG_GCC48_ARM_CC_FLAGS       = DEF(GCC48_ARM_CC_FLAGS) -O0
-RELEASE_GCC48_ARM_CC_FLAGS       = DEF(GCC48_ARM_CC_FLAGS) -Wno-unused-but-set-variable
-  NOOPT_GCC48_ARM_CC_FLAGS       = DEF(GCC48_ARM_CC_FLAGS) -O0
-
-##################
-# GCC48 AARCH64 definitions
-##################
-*_GCC48_AARCH64_CC_PATH          = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_SLINK_PATH       = ENV(GCC48_AARCH64_PREFIX)ar
-*_GCC48_AARCH64_DLINK_PATH       = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLDLINK_PATH    = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASM_PATH         = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_PP_PATH          = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_VFRPP_PATH       = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLCC_PATH       = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_ASLPP_PATH       = ENV(GCC48_AARCH64_PREFIX)gcc
-*_GCC48_AARCH64_RC_PATH          = ENV(GCC48_AARCH64_PREFIX)objcopy
-
-*_GCC48_AARCH64_ASLCC_FLAGS      = DEF(GCC48_ASLCC_FLAGS)
-*_GCC48_AARCH64_ASLDLINK_FLAGS   = DEF(GCC48_AARCH64_ASLDLINK_FLAGS)
-*_GCC48_AARCH64_ASM_FLAGS        = DEF(GCC48_AARCH64_ASM_FLAGS)
-*_GCC48_AARCH64_DLINK_FLAGS      = DEF(GCC48_AARCH64_DLINK_FLAGS)
-*_GCC48_AARCH64_DLINK2_FLAGS     = DEF(GCC48_AARCH64_DLINK2_FLAGS)
-*_GCC48_AARCH64_DTCPP_FLAGS      = DEF(GCC_DTCPP_FLAGS)
-*_GCC48_AARCH64_PLATFORM_FLAGS   =
-*_GCC48_AARCH64_PP_FLAGS         = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC48_AARCH64_RC_FLAGS         = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCC48_AARCH64_VFRPP_FLAGS      = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC48_AARCH64_CC_XIPFLAGS      = DEF(GCC48_AARCH64_CC_XIPFLAGS)
-
-  DEBUG_GCC48_AARCH64_CC_FLAGS   = DEF(GCC48_AARCH64_CC_FLAGS) -O0
-RELEASE_GCC48_AARCH64_CC_FLAGS   = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable
-  NOOPT_GCC48_AARCH64_CC_FLAGS   = DEF(GCC48_AARCH64_CC_FLAGS) -O0
-
-####################################################################################
-#
-# GCC 4.9 - This configuration is used to compile under Linux to produce
-#           PE/COFF binaries using GCC 4.9.
-#
-####################################################################################
-*_GCC49_*_*_FAMILY               = GCC
-
-*_GCC49_*_MAKE_PATH                    = DEF(GCC_HOST_PREFIX)make
-*_GCC49_*_*_DLL                        = ENV(GCC49_DLL)
-*_GCC49_*_ASL_PATH                     = DEF(UNIX_IASL_BIN)
-
-*_GCC49_*_PP_FLAGS                     = DEF(GCC_PP_FLAGS)
-*_GCC49_*_ASLPP_FLAGS                  = DEF(GCC_ASLPP_FLAGS)
-*_GCC49_*_ASLCC_FLAGS                  = DEF(GCC_ASLCC_FLAGS)
-*_GCC49_*_VFRPP_FLAGS                  = DEF(GCC_VFRPP_FLAGS)
-*_GCC49_*_APP_FLAGS                    =
-*_GCC49_*_ASL_FLAGS                    = DEF(IASL_FLAGS)
-*_GCC49_*_ASL_OUTFLAGS                 = DEF(IASL_OUTFLAGS)
-*_GCC49_*_DEPS_FLAGS                   = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC49 IA32 definitions
-##################
-*_GCC49_IA32_OBJCOPY_PATH         = DEF(GCC49_IA32_PREFIX)objcopy
-*_GCC49_IA32_CC_PATH              = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_SLINK_PATH           = DEF(GCC49_IA32_PREFIX)ar
-*_GCC49_IA32_DLINK_PATH           = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLDLINK_PATH        = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASM_PATH             = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_PP_PATH              = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_VFRPP_PATH           = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLCC_PATH           = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_ASLPP_PATH           = DEF(GCC49_IA32_PREFIX)gcc
-*_GCC49_IA32_RC_PATH              = DEF(GCC49_IA32_PREFIX)objcopy
-
-*_GCC49_IA32_ASLCC_FLAGS          = DEF(GCC49_ASLCC_FLAGS) -m32
-*_GCC49_IA32_ASLDLINK_FLAGS       = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_GCC49_IA32_ASM_FLAGS            = DEF(GCC49_ASM_FLAGS) -m32 -march=i386
-*_GCC49_IA32_DLINK_FLAGS          = DEF(GCC49_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386
-*_GCC49_IA32_DLINK2_FLAGS         = DEF(GCC49_IA32_DLINK2_FLAGS)
-*_GCC49_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
-*_GCC49_IA32_OBJCOPY_FLAGS        =
-*_GCC49_IA32_NASM_FLAGS           = -f elf32
-
-  DEBUG_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS)
-RELEASE_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-  NOOPT_GCC49_IA32_CC_FLAGS       = DEF(GCC49_IA32_CC_FLAGS) -O0
-
-##################
-# GCC49 X64 definitions
-##################
-*_GCC49_X64_OBJCOPY_PATH         = DEF(GCC49_X64_PREFIX)objcopy
-*_GCC49_X64_CC_PATH              = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_SLINK_PATH           = DEF(GCC49_X64_PREFIX)ar
-*_GCC49_X64_DLINK_PATH           = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLDLINK_PATH        = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASM_PATH             = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_PP_PATH              = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_VFRPP_PATH           = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLCC_PATH           = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_ASLPP_PATH           = DEF(GCC49_X64_PREFIX)gcc
-*_GCC49_X64_RC_PATH              = DEF(GCC49_X64_PREFIX)objcopy
-
-*_GCC49_X64_ASLCC_FLAGS          = DEF(GCC49_ASLCC_FLAGS) -m64
-*_GCC49_X64_ASLDLINK_FLAGS       = DEF(GCC49_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC49_X64_ASM_FLAGS            = DEF(GCC49_ASM_FLAGS) -m64
-*_GCC49_X64_DLINK_FLAGS          = DEF(GCC49_X64_DLINK_FLAGS)
-*_GCC49_X64_DLINK2_FLAGS         = DEF(GCC49_X64_DLINK2_FLAGS)
-*_GCC49_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
-*_GCC49_X64_OBJCOPY_FLAGS        =
-*_GCC49_X64_NASM_FLAGS           = -f elf64
-
-  DEBUG_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS)
-RELEASE_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-  NOOPT_GCC49_X64_CC_FLAGS       = DEF(GCC49_X64_CC_FLAGS) -O0
-
-##################
-# GCC49 ARM definitions
-##################
-*_GCC49_ARM_CC_PATH              = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_SLINK_PATH           = ENV(GCC49_ARM_PREFIX)ar
-*_GCC49_ARM_DLINK_PATH           = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLDLINK_PATH        = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASM_PATH             = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_PP_PATH              = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_VFRPP_PATH           = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLCC_PATH           = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_ASLPP_PATH           = ENV(GCC49_ARM_PREFIX)gcc
-*_GCC49_ARM_RC_PATH              = ENV(GCC49_ARM_PREFIX)objcopy
-
-*_GCC49_ARM_ASLCC_FLAGS          = DEF(GCC49_ASLCC_FLAGS)
-*_GCC49_ARM_ASLDLINK_FLAGS       = DEF(GCC49_ARM_ASLDLINK_FLAGS)
-*_GCC49_ARM_ASM_FLAGS            = DEF(GCC49_ARM_ASM_FLAGS)
-*_GCC49_ARM_DLINK_FLAGS          = DEF(GCC49_ARM_DLINK_FLAGS)
-*_GCC49_ARM_DLINK2_FLAGS         = DEF(GCC49_ARM_DLINK2_FLAGS)
-*_GCC49_ARM_DTCPP_FLAGS          = DEF(GCC_DTCPP_FLAGS)
-*_GCC49_ARM_PLATFORM_FLAGS       = -march=armv7-a
-*_GCC49_ARM_PP_FLAGS             = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC49_ARM_RC_FLAGS             = DEF(GCC_ARM_RC_FLAGS)
-*_GCC49_ARM_VFRPP_FLAGS          = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC49_ARM_CC_XIPFLAGS          = DEF(GCC49_ARM_CC_XIPFLAGS)
-
-  DEBUG_GCC49_ARM_CC_FLAGS       = DEF(GCC49_ARM_CC_FLAGS) -O0
-RELEASE_GCC49_ARM_CC_FLAGS       = DEF(GCC49_ARM_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-  NOOPT_GCC49_ARM_CC_FLAGS       = DEF(GCC49_ARM_CC_FLAGS) -O0
-
-##################
-# GCC49 AARCH64 definitions
-##################
-*_GCC49_AARCH64_CC_PATH          = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_SLINK_PATH       = ENV(GCC49_AARCH64_PREFIX)ar
-*_GCC49_AARCH64_DLINK_PATH       = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLDLINK_PATH    = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASM_PATH         = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_PP_PATH          = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_VFRPP_PATH       = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLCC_PATH       = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_ASLPP_PATH       = ENV(GCC49_AARCH64_PREFIX)gcc
-*_GCC49_AARCH64_RC_PATH          = ENV(GCC49_AARCH64_PREFIX)objcopy
-
-*_GCC49_AARCH64_ASLCC_FLAGS      = DEF(GCC49_ASLCC_FLAGS)
-*_GCC49_AARCH64_ASLDLINK_FLAGS   = DEF(GCC49_AARCH64_ASLDLINK_FLAGS)
-*_GCC49_AARCH64_ASM_FLAGS        = DEF(GCC49_AARCH64_ASM_FLAGS)
-*_GCC49_AARCH64_DLINK2_FLAGS     = DEF(GCC49_AARCH64_DLINK2_FLAGS)
-*_GCC49_AARCH64_DTCPP_FLAGS      = DEF(GCC_DTCPP_FLAGS)
-*_GCC49_AARCH64_PLATFORM_FLAGS   =
-*_GCC49_AARCH64_PP_FLAGS         = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC49_AARCH64_RC_FLAGS         = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCC49_AARCH64_VFRPP_FLAGS      = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC49_AARCH64_CC_XIPFLAGS      = DEF(GCC49_AARCH64_CC_XIPFLAGS)
-
-  DEBUG_GCC49_AARCH64_CC_FLAGS     = DEF(GCC49_AARCH64_CC_FLAGS) -O0
-  DEBUG_GCC49_AARCH64_DLINK_FLAGS  = DEF(GCC49_AARCH64_DLINK_FLAGS)
-  DEBUG_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCC49_AARCH64_CC_FLAGS     = DEF(GCC49_AARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC49_AARCH64_DLINK_FLAGS  = DEF(GCC49_AARCH64_DLINK_FLAGS)
-RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-  NOOPT_GCC49_AARCH64_CC_FLAGS     = DEF(GCC49_AARCH64_CC_FLAGS) -O0
-  NOOPT_GCC49_AARCH64_DLINK_FLAGS  = DEF(GCC49_AARCH64_DLINK_FLAGS) -O0
-  NOOPT_GCC49_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
+DEFINE GCC_IA32_CC_FLAGS            = DEF(GCC_ALL_CC_FLAGS) -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -m32 -march=i586 -malign-double -fno-stack-protector -D EFI32 -fno-asynchronous-unwind-tables -Wno-address -fno-omit-frame-pointer -fno-pic -fno-pie
+DEFINE GCC_X64_CC_FLAGS             = DEF(GCC_ALL_CC_FLAGS) -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -m64 -fno-stack-protector "-DEFIAPI=__attribute__((ms_abi))" -maccumulate-outgoing-args -mno-red-zone -Wno-address -mcmodel=small -fpie -fno-asynchronous-unwind-tables -Wno-address  -fno-omit-frame-pointer
+DEFINE GCC_IA32_X64_DLINK_COMMON    = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
+DEFINE GCC_IA32_X64_ASLDLINK_FLAGS  = DEF(GCC_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
+DEFINE GCC_IA32_X64_DLINK_FLAGS     = DEF(GCC_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
+DEFINE GCC_IA32_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(GCC_DLINK2_FLAGS_COMMON) -Wno-error
+DEFINE GCC_X64_DLINK_FLAGS          = DEF(GCC_IA32_X64_DLINK_FLAGS) -Wl,-melf_x86_64,--oformat=elf64-x86-64,-pie
+DEFINE GCC_X64_DLINK2_FLAGS         = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(GCC_DLINK2_FLAGS_COMMON) -Wno-error
+DEFINE GCC_ASM_FLAGS                = -c -x assembler -imacros AutoGen.h
+DEFINE GCC_ARM_ASM_FLAGS            = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
+DEFINE GCC_AARCH64_ASM_FLAGS        = $(PLATFORM_FLAGS) DEF(GCC_ASM_FLAGS) -mlittle-endian
+DEFINE GCC_ARM_CC_FLAGS             = $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie -fstack-protector -mword-relocations
+DEFINE GCC_ARM_CC_XIPFLAGS          = -mno-unaligned-access
+DEFINE GCC_AARCH64_CC_FLAGS         = $(PLATFORM_FLAGS) -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char -Wno-address -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie -ffixed-x18 -mcmodel=small
+DEFINE GCC_AARCH64_CC_XIPFLAGS      = -mstrict-align -mgeneral-regs-only
+DEFINE GCC_ARM_DLINK_FLAGS          = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -Wl,--pic-veneer -Wl,--oformat=elf32-littlearm
+DEFINE GCC_ARM_DLINK2_FLAGS         = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 -Wno-error
+DEFINE GCC_AARCH64_DLINK_FLAGS      = DEF(GCC_ARM_AARCH64_DLINK_COMMON) -z common-page-size=0x20 -z common-page-size=0x1000
+DEFINE GCC_AARCH64_DLINK2_FLAGS     = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 -Wno-error
+DEFINE GCC_ARM_ASLDLINK_FLAGS       = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS) -Wl,--oformat=elf32-littlearm
+DEFINE GCC_AARCH64_ASLDLINK_FLAGS   = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
+DEFINE GCC_ASLCC_FLAGS              = -x c -fno-lto
+
+DEFINE GCC_RISCV_ALL_CC_FLAGS                    = -g -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections -fdata-sections -include AutoGen.h -fno-common -DSTRING_ARRAY_NAME=$(BASE_NAME)Strings -msmall-data-limit=0
+DEFINE GCC_RISCV_ALL_DLINK_COMMON                = -nostdlib -Wl,-n,-q,--gc-sections -z common-page-size=0x40
+DEFINE GCC_RISCV_ALL_DLINK_FLAGS                 = DEF(GCC_RISCV_ALL_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map
+DEFINE GCC_RISCV_ALL_DLINK2_FLAGS                = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds
+DEFINE GCC_RISCV_ALL_ASM_FLAGS                   = -c -x assembler -imacros $(DEST_DIR_DEBUG)/AutoGen.h
+DEFINE GCC_RISCV_ALL_CC_FLAGS_WARNING_DISABLE    = -Wno-tautological-compare -Wno-pointer-compare
+
+DEFINE GCC_RISCV_OPENSBI_TYPES                   = -DOPENSBI_EXTERNAL_SBI_TYPES=OpensbiTypes.h
+
+DEFINE GCC_RISCV64_ARCH                   = rv64gc
+DEFINE GCC_RISCV32_RISCV64_ASLDLINK_FLAGS = DEF(GCC_RISCV_ALL_DLINK_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
+DEFINE GCC_RISCV64_CC_FLAGS               = DEF(GCC_RISCV_ALL_CC_FLAGS) DEF(GCC_RISCV_ALL_CC_FLAGS_WARNING_DISABLE) DEF(GCC_RISCV_OPENSBI_TYPES) -march=DEF(GCC_RISCV64_ARCH) -fno-builtin -fno-builtin-memcpy -fno-stack-protector -Wno-address -fno-asynchronous-unwind-tables -Wno-unused-but-set-variable -fpack-struct=8 -mcmodel=medany -mabi=lp64 -mno-relax
+DEFINE GCC_RISCV64_DLINK_FLAGS            = DEF(GCC_RISCV_ALL_DLINK_FLAGS) -Wl,-melf64lriscv,--oformat=elf64-littleriscv,--no-relax
+DEFINE GCC_RISCV64_DLINK2_FLAGS           = DEF(GCC_RISCV_ALL_DLINK2_FLAGS)
+DEFINE GCC_RISCV64_ASM_FLAGS              = DEF(GCC_RISCV_ALL_ASM_FLAGS) -march=DEF(GCC_RISCV64_ARCH) -mcmodel=medany -mabi=lp64
+
+DEFINE GCC_LOONGARCH64_CC_FLAGS           = DEF(GCC_LOONGARCH64_CC_FLAGS) -march=loongarch64 -mno-memcpy -Werror -Wno-maybe-uninitialized -Wno-stringop-overflow -Wno-pointer-to-int-cast -no-pie -fno-stack-protector -mno-explicit-relocs
+DEFINE GCC_LOONGARCH64_DLINK_FLAGS        = DEF(GCC_LOONGARCH64_DLINK_FLAGS)
+DEFINE GCC_LOONGARCH64_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228
+DEFINE GCC_LOONGARCH64_ASLDLINK_FLAGS     = DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS) DEF(GCC_LOONGARCH64_DLINK2_FLAGS)
+DEFINE GCC_LOONGARCH64_ASM_FLAGS          = -x assembler-with-cpp -mabi=lp64d -march=loongarch64 -fno-builtin -c -Wall -mno-explicit-relocs
+DEFINE GCC_LOONGARCH64_PP_FLAGS           = -mabi=lp64d -march=loongarch64 DEF(GCC_PP_FLAGS)
 
 ####################################################################################
 #
-# GCC 5 - This configuration is used to compile under Linux to produce
-#         PE/COFF binaries using GCC 5
+# GCC - This configuration is used to compile under Linux to produce
+#       PE/COFF binaries using GCC 6 or newer
 #
 ####################################################################################
-*_GCC5_*_*_FAMILY                = GCC
-
-*_GCC5_*_MAKE_PATH               = DEF(GCC_HOST_PREFIX)make
-*_GCC5_*_*_DLL                   = ENV(GCC5_DLL)
-*_GCC5_*_ASL_PATH                = DEF(UNIX_IASL_BIN)
-
-*_GCC5_*_PP_FLAGS                = DEF(GCC_PP_FLAGS)
-*_GCC5_*_ASLPP_FLAGS             = DEF(GCC_ASLPP_FLAGS)
-*_GCC5_*_ASLCC_FLAGS             = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_*_VFRPP_FLAGS             = DEF(GCC_VFRPP_FLAGS)
-*_GCC5_*_APP_FLAGS               =
-*_GCC5_*_ASL_FLAGS               = DEF(IASL_FLAGS)
-*_GCC5_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)
-*_GCC5_*_DEPS_FLAGS                   = DEF(GCC_DEPS_FLAGS)
-
-##################
-# GCC5 IA32 definitions
-##################
-*_GCC5_IA32_OBJCOPY_PATH         = DEF(GCC5_IA32_PREFIX)objcopy
-*_GCC5_IA32_CC_PATH              = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_SLINK_PATH           = DEF(GCC5_IA32_PREFIX)gcc-ar
-*_GCC5_IA32_DLINK_PATH           = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLDLINK_PATH        = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASM_PATH             = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_PP_PATH              = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_VFRPP_PATH           = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLCC_PATH           = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_ASLPP_PATH           = DEF(GCC5_IA32_PREFIX)gcc
-*_GCC5_IA32_RC_PATH              = DEF(GCC5_IA32_PREFIX)objcopy
-
-*_GCC5_IA32_ASLCC_FLAGS          = DEF(GCC5_ASLCC_FLAGS) -m32
-*_GCC5_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie
-*_GCC5_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386
-*_GCC5_IA32_DLINK2_FLAGS         = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
-*_GCC5_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
-*_GCC5_IA32_OBJCOPY_FLAGS        =
-*_GCC5_IA32_NASM_FLAGS           = -f elf32
-
-  DEBUG_GCC5_IA32_CC_FLAGS       = DEF(GCC5_IA32_CC_FLAGS) -flto
-  DEBUG_GCC5_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
-RELEASE_GCC5_IA32_CC_FLAGS       = DEF(GCC5_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
-
-  NOOPT_GCC5_IA32_CC_FLAGS       = DEF(GCC5_IA32_CC_FLAGS) -O0
-  NOOPT_GCC5_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0
-
-##################
-# GCC5 X64 definitions
-##################
-*_GCC5_X64_OBJCOPY_PATH          = DEF(GCC5_X64_PREFIX)objcopy
-*_GCC5_X64_CC_PATH               = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_SLINK_PATH            = DEF(GCC5_X64_PREFIX)gcc-ar
-*_GCC5_X64_DLINK_PATH            = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLDLINK_PATH         = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASM_PATH              = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_PP_PATH               = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_VFRPP_PATH            = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLCC_PATH            = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_ASLPP_PATH            = DEF(GCC5_X64_PREFIX)gcc
-*_GCC5_X64_RC_PATH               = DEF(GCC5_X64_PREFIX)objcopy
-
-*_GCC5_X64_ASLCC_FLAGS           = DEF(GCC5_ASLCC_FLAGS) -m64
-*_GCC5_X64_ASLDLINK_FLAGS        = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_GCC5_X64_ASM_FLAGS             = DEF(GCC5_ASM_FLAGS) -m64
-*_GCC5_X64_DLINK2_FLAGS          = DEF(GCC5_X64_DLINK2_FLAGS)
-*_GCC5_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)
-*_GCC5_X64_OBJCOPY_FLAGS         =
-*_GCC5_X64_NASM_FLAGS            = -f elf64
-
-  DEBUG_GCC5_X64_CC_FLAGS        = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO
-  DEBUG_GCC5_X64_DLINK_FLAGS     = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
-RELEASE_GCC5_X64_CC_FLAGS        = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_X64_DLINK_FLAGS     = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os
-
-  NOOPT_GCC5_X64_CC_FLAGS        = DEF(GCC5_X64_CC_FLAGS) -O0
-  NOOPT_GCC5_X64_DLINK_FLAGS     = DEF(GCC5_X64_DLINK_FLAGS) -O0
-
-##################
-# GCC5 ARM definitions
-##################
-*_GCC5_ARM_CC_PATH               = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_SLINK_PATH            = ENV(GCC5_ARM_PREFIX)gcc-ar
-*_GCC5_ARM_DLINK_PATH            = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLDLINK_PATH         = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASM_PATH              = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_PP_PATH               = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_VFRPP_PATH            = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLCC_PATH            = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_ASLPP_PATH            = ENV(GCC5_ARM_PREFIX)gcc
-*_GCC5_ARM_RC_PATH               = ENV(GCC5_ARM_PREFIX)objcopy
-
-*_GCC5_ARM_ASLCC_FLAGS           = DEF(GCC5_ASLCC_FLAGS)
-*_GCC5_ARM_ASLDLINK_FLAGS        = DEF(GCC5_ARM_ASLDLINK_FLAGS)
-*_GCC5_ARM_ASM_FLAGS             = DEF(GCC5_ARM_ASM_FLAGS)
-*_GCC5_ARM_DLINK2_FLAGS          = DEF(GCC5_ARM_DLINK2_FLAGS)
-*_GCC5_ARM_DTCPP_FLAGS           = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_ARM_PLATFORM_FLAGS        = -march=armv7-a -mfloat-abi=soft
-*_GCC5_ARM_PP_FLAGS              = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC5_ARM_RC_FLAGS              = DEF(GCC_ARM_RC_FLAGS)
-*_GCC5_ARM_VFRPP_FLAGS           = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC5_ARM_CC_XIPFLAGS           = DEF(GCC5_ARM_CC_XIPFLAGS)
-
-  DEBUG_GCC5_ARM_CC_FLAGS        = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-  DEBUG_GCC5_ARM_DLINK_FLAGS     = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
-RELEASE_GCC5_ARM_CC_FLAGS        = DEF(GCC5_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_ARM_DLINK_FLAGS     = DEF(GCC5_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
-
-  NOOPT_GCC5_ARM_CC_FLAGS        = DEF(GCC5_ARM_CC_FLAGS) -O0
-  NOOPT_GCC5_ARM_DLINK_FLAGS     = DEF(GCC5_ARM_DLINK_FLAGS) -O0
-
-##################
-# GCC5 AARCH64 definitions
-##################
-*_GCC5_AARCH64_CC_PATH           = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_SLINK_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc-ar
-*_GCC5_AARCH64_DLINK_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLDLINK_PATH     = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASM_PATH          = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_PP_PATH           = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_VFRPP_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLCC_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_ASLPP_PATH        = ENV(GCC5_AARCH64_PREFIX)gcc
-*_GCC5_AARCH64_RC_PATH           = ENV(GCC5_AARCH64_PREFIX)objcopy
-
-*_GCC5_AARCH64_ASLCC_FLAGS       = DEF(GCC5_ASLCC_FLAGS)
-*_GCC5_AARCH64_ASLDLINK_FLAGS    = DEF(GCC5_AARCH64_ASLDLINK_FLAGS)
-*_GCC5_AARCH64_ASM_FLAGS         = DEF(GCC5_AARCH64_ASM_FLAGS)
-*_GCC5_AARCH64_DLINK2_FLAGS      = DEF(GCC5_AARCH64_DLINK2_FLAGS)
-*_GCC5_AARCH64_DTCPP_FLAGS       = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_AARCH64_PLATFORM_FLAGS    =
-*_GCC5_AARCH64_PP_FLAGS          = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
-*_GCC5_AARCH64_RC_FLAGS          = DEF(GCC_AARCH64_RC_FLAGS)
-*_GCC5_AARCH64_VFRPP_FLAGS       = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
-*_GCC5_AARCH64_CC_XIPFLAGS       = DEF(GCC5_AARCH64_CC_XIPFLAGS)
-
-  DEBUG_GCC5_AARCH64_CC_FLAGS    = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-  DEBUG_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
-  DEBUG_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-RELEASE_GCC5_AARCH64_CC_FLAGS    = DEF(GCC5_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
-RELEASE_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
-RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
-
-  NOOPT_GCC5_AARCH64_CC_FLAGS    = DEF(GCC5_AARCH64_CC_FLAGS) -O0
-  NOOPT_GCC5_AARCH64_DLINK_FLAGS = DEF(GCC5_AARCH64_DLINK_FLAGS) -O0
-  NOOPT_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
+*_GCC_*_*_FAMILY                = GCC
+
+*_GCC_*_MAKE_PATH               = DEF(GCC_HOST_PREFIX)make
+*_GCC_*_*_DLL                   = ENV(GCC_DLL)
+*_GCC_*_ASL_PATH                = DEF(UNIX_IASL_BIN)
+
+*_GCC_*_PP_FLAGS                = DEF(GCC_PP_FLAGS)
+*_GCC_*_ASLPP_FLAGS             = DEF(GCC_ASLPP_FLAGS)
+*_GCC_*_ASLCC_FLAGS             = DEF(GCC_ASLCC_FLAGS)
+*_GCC_*_VFRPP_FLAGS             = DEF(GCC_VFRPP_FLAGS)
+*_GCC_*_APP_FLAGS               =
+*_GCC_*_ASL_FLAGS               = DEF(IASL_FLAGS)
+*_GCC_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)
+*_GCC_*_DEPS_FLAGS                   = DEF(GCC_DEPS_FLAGS)
+
+##################
+# GCC IA32 definitions
+##################
+*_GCC_IA32_OBJCOPY_PATH         = DEF(GCC_IA32_PREFIX)objcopy
+*_GCC_IA32_CC_PATH              = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_SLINK_PATH           = DEF(GCC_IA32_PREFIX)gcc-ar
+*_GCC_IA32_DLINK_PATH           = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_ASLDLINK_PATH        = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_ASM_PATH             = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_PP_PATH              = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_VFRPP_PATH           = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_ASLCC_PATH           = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_ASLPP_PATH           = DEF(GCC_IA32_PREFIX)gcc
+*_GCC_IA32_RC_PATH              = DEF(GCC_IA32_PREFIX)objcopy
+
+*_GCC_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32
+*_GCC_IA32_ASLDLINK_FLAGS       = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -no-pie
+*_GCC_IA32_ASM_FLAGS            = DEF(GCC_ASM_FLAGS) -m32 -march=i386
+*_GCC_IA32_DLINK2_FLAGS         = DEF(GCC_IA32_DLINK2_FLAGS) -no-pie
+*_GCC_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
+*_GCC_IA32_OBJCOPY_FLAGS        =
+*_GCC_IA32_NASM_FLAGS           = -f elf32
+
+  DEBUG_GCC_IA32_CC_FLAGS       = DEF(GCC_IA32_CC_FLAGS) -flto
+  DEBUG_GCC_IA32_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
+
+RELEASE_GCC_IA32_CC_FLAGS       = DEF(GCC_IA32_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
+RELEASE_GCC_IA32_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
+
+  NOOPT_GCC_IA32_CC_FLAGS       = DEF(GCC_IA32_CC_FLAGS) -O0
+  NOOPT_GCC_IA32_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_FLAGS) -Wl,-m,elf_i386,--oformat=elf32-i386 -O0
+
+##################
+# GCC X64 definitions
+##################
+*_GCC_X64_OBJCOPY_PATH          = DEF(GCC_X64_PREFIX)objcopy
+*_GCC_X64_CC_PATH               = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_SLINK_PATH            = DEF(GCC_X64_PREFIX)gcc-ar
+*_GCC_X64_DLINK_PATH            = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_ASLDLINK_PATH         = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_ASM_PATH              = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_PP_PATH               = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_VFRPP_PATH            = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_ASLCC_PATH            = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_ASLPP_PATH            = DEF(GCC_X64_PREFIX)gcc
+*_GCC_X64_RC_PATH               = DEF(GCC_X64_PREFIX)objcopy
+
+*_GCC_X64_ASLCC_FLAGS           = DEF(GCC_ASLCC_FLAGS) -m64
+*_GCC_X64_ASLDLINK_FLAGS        = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
+*_GCC_X64_ASM_FLAGS             = DEF(GCC_ASM_FLAGS) -m64
+*_GCC_X64_DLINK2_FLAGS          = DEF(GCC_X64_DLINK2_FLAGS)
+*_GCC_X64_RC_FLAGS              = DEF(GCC_X64_RC_FLAGS)
+*_GCC_X64_OBJCOPY_FLAGS         =
+*_GCC_X64_NASM_FLAGS            = -f elf64
+
+  DEBUG_GCC_X64_CC_FLAGS        = DEF(GCC_X64_CC_FLAGS) -flto -DUSING_LTO
+  DEBUG_GCC_X64_DLINK_FLAGS     = DEF(GCC_X64_DLINK_FLAGS) -flto -Os
+
+RELEASE_GCC_X64_CC_FLAGS        = DEF(GCC_X64_CC_FLAGS) -flto -DUSING_LTO -Wno-unused-but-set-variable -Wno-unused-const-variable
+RELEASE_GCC_X64_DLINK_FLAGS     = DEF(GCC_X64_DLINK_FLAGS) -flto -Os
+
+  NOOPT_GCC_X64_CC_FLAGS        = DEF(GCC_X64_CC_FLAGS) -O0
+  NOOPT_GCC_X64_DLINK_FLAGS     = DEF(GCC_X64_DLINK_FLAGS) -O0
+
+##################
+# GCC ARM definitions
+##################
+*_GCC_ARM_CC_PATH               = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_SLINK_PATH            = ENV(GCC_ARM_PREFIX)gcc-ar
+*_GCC_ARM_DLINK_PATH            = ENV(GCC_ARM_PREFIX)gcc
+*_GCCARM_ASLDLINK_PATH         = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_ASM_PATH              = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_PP_PATH               = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_VFRPP_PATH            = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_ASLCC_PATH            = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_ASLPP_PATH            = ENV(GCC_ARM_PREFIX)gcc
+*_GCC_ARM_RC_PATH               = ENV(GCC_ARM_PREFIX)objcopy
+
+*_GCC_ARM_ASLCC_FLAGS           = DEF(GCC_ASLCC_FLAGS)
+*_GCC_ARM_ASLDLINK_FLAGS        = DEF(GCC_ARM_ASLDLINK_FLAGS)
+*_GCC_ARM_ASM_FLAGS             = DEF(GCC_ARM_ASM_FLAGS)
+*_GCC_ARM_DLINK2_FLAGS          = DEF(GCC_ARM_DLINK2_FLAGS)
+*_GCC_ARM_DTCPP_FLAGS           = DEF(GCC_DTCPP_FLAGS)
+*_GCC_ARM_PLATFORM_FLAGS        = -march=armv7-a -mfloat-abi=soft
+*_GCC_ARM_PP_FLAGS              = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
+*_GCC_ARM_RC_FLAGS              = DEF(GCC_ARM_RC_FLAGS)
+*_GCC_ARM_VFRPP_FLAGS           = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
+*_GCC_ARM_CC_XIPFLAGS           = DEF(GCC_ARM_CC_XIPFLAGS)
+
+  DEBUG_GCC_ARM_CC_FLAGS        = DEF(GCC_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
+  DEBUG_GCC_ARM_DLINK_FLAGS     = DEF(GCC_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
+
+RELEASE_GCC_ARM_CC_FLAGS        = DEF(GCC_ARM_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
+RELEASE_GCC_ARM_DLINK_FLAGS     = DEF(GCC_ARM_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm
+
+  NOOPT_GCC_ARM_CC_FLAGS        = DEF(GCC_ARM_CC_FLAGS) -O0
+  NOOPT_GCC_ARM_DLINK_FLAGS     = DEF(GCC_ARM_DLINK_FLAGS) -O0
+
+##################
+# GCC AARCH64 definitions
+##################
+*_GCC_AARCH64_CC_PATH           = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_SLINK_PATH        = ENV(GCC_AARCH64_PREFIX)gcc-ar
+*_GCC_AARCH64_DLINK_PATH        = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_ASLDLINK_PATH     = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_ASM_PATH          = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_PP_PATH           = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_VFRPP_PATH        = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_ASLCC_PATH        = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_ASLPP_PATH        = ENV(GCC_AARCH64_PREFIX)gcc
+*_GCC_AARCH64_RC_PATH           = ENV(GCC_AARCH64_PREFIX)objcopy
+
+*_GCC_AARCH64_ASLCC_FLAGS       = DEF(GCC_ASLCC_FLAGS)
+*_GCC_AARCH64_ASLDLINK_FLAGS    = DEF(GCC_AARCH64_ASLDLINK_FLAGS)
+*_GCC_AARCH64_ASM_FLAGS         = DEF(GCC_AARCH64_ASM_FLAGS)
+*_GCC_AARCH64_DLINK2_FLAGS      = DEF(GCC_AARCH64_DLINK2_FLAGS)
+*_GCC_AARCH64_DTCPP_FLAGS       = DEF(GCC_DTCPP_FLAGS)
+*_GCC_AARCH64_PLATFORM_FLAGS    =
+*_GCC_AARCH64_PP_FLAGS          = $(PLATFORM_FLAGS) DEF(GCC_PP_FLAGS)
+*_GCC_AARCH64_RC_FLAGS          = DEF(GCC_AARCH64_RC_FLAGS)
+*_GCC_AARCH64_VFRPP_FLAGS       = $(PLATFORM_FLAGS) DEF(GCC_VFRPP_FLAGS)
+*_GCC_AARCH64_CC_XIPFLAGS       = DEF(GCC_AARCH64_CC_XIPFLAGS)
+
+  DEBUG_GCC_AARCH64_CC_FLAGS    = DEF(GCC_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
+  DEBUG_GCC_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
+  DEBUG_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
+
+RELEASE_GCC_AARCH64_CC_FLAGS    = DEF(GCC_AARCH64_CC_FLAGS) -flto -Wno-unused-but-set-variable -Wno-unused-const-variable
+RELEASE_GCC_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -flto -Os -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64 -Wno-lto-type-mismatch
+RELEASE_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
+
+  NOOPT_GCC_AARCH64_CC_FLAGS    = DEF(GCC_AARCH64_CC_FLAGS) -O0
+  NOOPT_GCC_AARCH64_DLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -O0
+  NOOPT_GCC_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20 -O0
 
 ####################################################################################
 #
@@ -1294,58 +935,58 @@ RELEASE_GCC5_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20
 ####################################################################################
 
 ##################
-# GCC5 RISCV64 definitions
+# GCC RISCV64 definitions
 ##################
-*_GCC5_RISCV64_OBJCOPY_PATH         = ENV(GCC5_RISCV64_PREFIX)objcopy
-*_GCC5_RISCV64_CC_PATH              = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_SLINK_PATH           = ENV(GCC5_RISCV64_PREFIX)gcc-ar
-*_GCC5_RISCV64_DLINK_PATH           = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLDLINK_PATH        = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASM_PATH             = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_PP_PATH              = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_VFRPP_PATH           = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLCC_PATH           = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_ASLPP_PATH           = ENV(GCC5_RISCV64_PREFIX)gcc
-*_GCC5_RISCV64_RC_PATH              = ENV(GCC5_RISCV64_PREFIX)objcopy
+*_GCC_RISCV64_OBJCOPY_PATH         = ENV(GCC_RISCV64_PREFIX)objcopy
+*_GCC_RISCV64_CC_PATH              = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_SLINK_PATH           = ENV(GCC_RISCV64_PREFIX)gcc-ar
+*_GCC_RISCV64_DLINK_PATH           = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_ASLDLINK_PATH        = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_ASM_PATH             = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_PP_PATH              = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_VFRPP_PATH           = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_ASLCC_PATH           = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_ASLPP_PATH           = ENV(GCC_RISCV64_PREFIX)gcc
+*_GCC_RISCV64_RC_PATH              = ENV(GCC_RISCV64_PREFIX)objcopy
 
-*_GCC5_RISCV64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_RISCV64_ASLDLINK_FLAGS       = DEF(GCC5_RISCV32_RISCV64_ASLDLINK_FLAGS)
-*_GCC5_RISCV64_ASM_FLAGS            = DEF(GCC5_RISCV64_ASM_FLAGS)
-*_GCC5_RISCV64_CC_FLAGS             = DEF(GCC5_RISCV64_CC_FLAGS) -save-temps
-*_GCC5_RISCV64_DLINK_FLAGS          = DEF(GCC5_RISCV64_DLINK_FLAGS)
-*_GCC5_RISCV64_DLINK2_FLAGS         = DEF(GCC5_RISCV64_DLINK2_FLAGS)
-*_GCC5_RISCV64_RC_FLAGS             = DEF(GCC_RISCV64_RC_FLAGS)
-*_GCC5_RISCV64_OBJCOPY_FLAGS        =
-*_GCC5_RISCV64_DTCPP_FLAGS          = DEF(GCC_DTCPP_FLAGS)
-*_GCC5_RISCV64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(GCC5_RISCV_OPENSBI_TYPES)
+*_GCC_RISCV64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS)
+*_GCC_RISCV64_ASLDLINK_FLAGS       = DEF(GCC_RISCV32_RISCV64_ASLDLINK_FLAGS)
+*_GCC_RISCV64_ASM_FLAGS            = DEF(GCC_RISCV64_ASM_FLAGS)
+*_GCC_RISCV64_CC_FLAGS             = DEF(GCC_RISCV64_CC_FLAGS) -save-temps
+*_GCC_RISCV64_DLINK_FLAGS          = DEF(GCC_RISCV64_DLINK_FLAGS)
+*_GCC_RISCV64_DLINK2_FLAGS         = DEF(GCC_RISCV64_DLINK2_FLAGS)
+*_GCC_RISCV64_RC_FLAGS             = DEF(GCC_RISCV64_RC_FLAGS)
+*_GCC_RISCV64_OBJCOPY_FLAGS        =
+*_GCC_RISCV64_DTCPP_FLAGS          = DEF(GCC_DTCPP_FLAGS)
+*_GCC_RISCV64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(GCC_RISCV_OPENSBI_TYPES)
 
 ##################
-# GCC5 LOONGARCH64 definitions
+# GCC LOONGARCH64 definitions
 ##################
-*_GCC5_LOONGARCH64_OBJCOPY_PATH         = ENV(GCC5_LOONGARCH64_PREFIX)objcopy
-*_GCC5_LOONGARCH64_CC_PATH              = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_SLINK_PATH           = ENV(GCC5_LOONGARCH64_PREFIX)gcc-ar
-*_GCC5_LOONGARCH64_DLINK_PATH           = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLDLINK_PATH        = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASM_PATH             = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_PP_PATH              = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_VFRPP_PATH           = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLCC_PATH           = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_ASLPP_PATH           = ENV(GCC5_LOONGARCH64_PREFIX)gcc
-*_GCC5_LOONGARCH64_RC_PATH              = ENV(GCC5_LOONGARCH64_PREFIX)objcopy
+*_GCC_LOONGARCH64_OBJCOPY_PATH         = ENV(GCC_LOONGARCH64_PREFIX)objcopy
+*_GCC_LOONGARCH64_CC_PATH              = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_SLINK_PATH           = ENV(GCC_LOONGARCH64_PREFIX)gcc-ar
+*_GCC_LOONGARCH64_DLINK_PATH           = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_ASLDLINK_PATH        = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_ASM_PATH             = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_PP_PATH              = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_VFRPP_PATH           = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_ASLCC_PATH           = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_ASLPP_PATH           = ENV(GCC_LOONGARCH64_PREFIX)gcc
+*_GCC_LOONGARCH64_RC_PATH              = ENV(GCC_LOONGARCH64_PREFIX)objcopy
 
-*_GCC5_LOONGARCH64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS)
-*_GCC5_LOONGARCH64_ASLDLINK_FLAGS       = DEF(GCC5_LOONGARCH64_ASLDLINK_FLAGS)
-*_GCC5_LOONGARCH64_ASM_FLAGS            = DEF(GCC5_LOONGARCH64_ASM_FLAGS)
-*_GCC5_LOONGARCH64_DLINK_FLAGS          = DEF(GCC5_LOONGARCH64_DLINK_FLAGS)
-*_GCC5_LOONGARCH64_DLINK2_FLAGS         = DEF(GCC5_LOONGARCH64_DLINK2_FLAGS)
-*_GCC5_LOONGARCH64_RC_FLAGS             = DEF(GCC_LOONGARCH64_RC_FLAGS)
-*_GCC5_LOONGARCH64_OBJCOPY_FLAGS        =
-*_GCC5_LOONGARCH64_NASM_FLAGS           = -f elf32
-*_GCC5_LOONGARCH64_PP_FLAGS             = DEF(GCC5_LOONGARCH64_PP_FLAGS)
+*_GCC_LOONGARCH64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS)
+*_GCC_LOONGARCH64_ASLDLINK_FLAGS       = DEF(GCC_LOONGARCH64_ASLDLINK_FLAGS)
+*_GCC_LOONGARCH64_ASM_FLAGS            = DEF(GCC_LOONGARCH64_ASM_FLAGS)
+*_GCC_LOONGARCH64_DLINK_FLAGS          = DEF(GCC_LOONGARCH64_DLINK_FLAGS)
+*_GCC_LOONGARCH64_DLINK2_FLAGS         = DEF(GCC_LOONGARCH64_DLINK2_FLAGS)
+*_GCC_LOONGARCH64_RC_FLAGS             = DEF(GCC_LOONGARCH64_RC_FLAGS)
+*_GCC_LOONGARCH64_OBJCOPY_FLAGS        =
+*_GCC_LOONGARCH64_NASM_FLAGS           = -f elf32
+*_GCC_LOONGARCH64_PP_FLAGS             = DEF(GCC_LOONGARCH64_PP_FLAGS)
 
-DEBUG_GCC5_LOONGARCH64_CC_FLAGS         = DEF(GCC5_LOONGARCH64_CC_FLAGS)
-RELEASE_GCC5_LOONGARCH64_CC_FLAGS       = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable
+DEBUG_GCC_LOONGARCH64_CC_FLAGS         = DEF(GCC_LOONGARCH64_CC_FLAGS)
+RELEASE_GCC_LOONGARCH64_CC_FLAGS       = DEF(GCC_LOONGARCH64_CC_FLAGS) -Wno-unused-but-set-variable -Wno-unused-variable
 
 ####################################################################################
 #
@@ -1369,7 +1010,7 @@ DEFINE CLANGDWARF_IA32_TARGET          = -target i686-pc-linux-gnu
 DEFINE CLANGDWARF_X64_TARGET           = -target x86_64-pc-linux-gnu
 
 DEFINE CLANGDWARF_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access
-DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference
+DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference
 
 ###########################
 # CLANGDWARF IA32 definitions
@@ -1387,8 +1028,8 @@ DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_
 *_CLANGDWARF_IA32_RC_PATH              = objcopy
 
 *_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET)
-*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
-*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)
+*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386
+*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)
 *_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)
 *_CLANGDWARF_IA32_OBJCOPY_FLAGS        =
 *_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32
@@ -1397,16 +1038,16 @@ DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_
 *_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)
 
 DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
+DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC_IA32_DLINK2_FLAGS) -O3
 
 RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double
-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3
+RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(GCC_IA32_DLINK2_FLAGS) -O3
 
 NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double
-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386
-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
+NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386
+NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC_IA32_DLINK2_FLAGS) -O0
 
 ##########################
 # CLANGDWARF X64 definitions
@@ -1424,8 +1065,8 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
 *_CLANGDWARF_X64_RC_PATH              = objcopy
 
 *_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET)
-*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
-*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)
+*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(GCC_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64
+*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)
 *_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)
 *_CLANGDWARF_X64_OBJCOPY_FLAGS        =
 *_CLANGDWARF_X64_NASM_FLAGS           = -f elf64
@@ -1434,16 +1075,16 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0
 *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
 
 DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
-DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3
+DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC_X64_DLINK2_FLAGS) -O3
 
 RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)
-RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -fuse-ld=lld
-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
+RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -fuse-ld=lld
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
 
 NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g
-NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0
+NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC_X64_DLINK2_FLAGS) -O0
 
 ##################
 # CLANGDWARF ARM definitions
@@ -1560,7 +1201,7 @@ DEFINE CLANGPDB_IA32_TARGET          = -target i686-unknown-windows-gnu
 DEFINE CLANGPDB_X64_TARGET           = -target x86_64-unknown-windows-gnu
 
 DEFINE CLANGPDB_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-microsoft-enum-forward-reference
-DEFINE CLANGPDB_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARNING_OVERRIDES) -fno-stack-protector -funsigned-char -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-null-dereference -mno-implicit-float -mms-bitfields -mno-stack-arg-probe -nostdlib -nostdlibinc -fseh-exceptions
+DEFINE CLANGPDB_ALL_CC_FLAGS         = DEF(GCC_ALL_CC_FLAGS) DEF(CLANGPDB_WARNING_OVERRIDES) -fno-stack-protector -funsigned-char -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-null-dereference -mno-implicit-float -mms-bitfields -mno-stack-arg-probe -nostdlib -nostdlibinc -fseh-exceptions
 
 ###########################
 # CLANGPDB IA32 definitions
diff --git a/BaseTools/Edk2ToolsBuild.py b/BaseTools/Edk2ToolsBuild.py
index f862468ce275..9053a4bcaba7 100644
--- a/BaseTools/Edk2ToolsBuild.py
+++ b/BaseTools/Edk2ToolsBuild.py
@@ -1,7 +1,7 @@
 # @file Edk2ToolsBuild.py
 # Invocable class that builds the basetool c files.
 #
-# Supports VS2017, VS2019, and GCC5
+# Supports VS2017, VS2019, and GCC
 ##
 # Copyright (c) Microsoft Corporation
 #
diff --git a/BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py b/BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py
index 0e013c5f1a7f..07e44bb0bfee 100644
--- a/BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py
+++ b/BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py
@@ -116,7 +116,7 @@ class HostBasedUnitTestRunner(IUefiBuildPlugin):
                                         failure_count += 1
 
             if thebuilder.env.GetValue("CODE_COVERAGE") != "FALSE":
-                if thebuilder.env.GetValue("TOOL_CHAIN_TAG") == "GCC5":
+                if thebuilder.env.GetValue("TOOL_CHAIN_TAG") == "GCC":
                     self.gen_code_coverage_gcc(thebuilder)
                 elif thebuilder.env.GetValue("TOOL_CHAIN_TAG").startswith ("VS"):
                     self.gen_code_coverage_msvc(thebuilder)
diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
index dab7a879970f..5820b68ee590 100644
--- a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
+++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
@@ -1,5 +1,5 @@
 # @file LinuxGcc5ToolChain.py
-# Plugin to configures paths for GCC5 ARM/AARCH64 Toolchain
+# Plugin to configures paths for GCC ARM/AARCH64 Toolchain
 ##
 # This plugin works in conjuncture with the tools_def
 #
@@ -23,8 +23,8 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
         self.Logger = logging.getLogger("LinuxGcc5ToolChain")
 
         #
-        # GCC5 - The ARM and AARCH64 compilers need their paths set if available
-        if thebuilder.env.GetValue("TOOL_CHAIN_TAG") == "GCC5":
+        # GCC - The ARM and AARCH64 compilers need their paths set if available
+        if thebuilder.env.GetValue("TOOL_CHAIN_TAG") == "GCC":
 
             # Start with AARACH64 compiler
             ret = self._check_aarch64()
@@ -54,46 +54,46 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
 
     def _check_arm(self):
         # check to see if full path already configured
-        if shell_environment.GetEnvironment().get_shell_var("GCC5_ARM_PREFIX") is not None:
-            self.Logger.info("GCC5_ARM_PREFIX is already set.")
+        if shell_environment.GetEnvironment().get_shell_var("GCC_ARM_PREFIX") is not None:
+            self.Logger.info("GCC_ARM_PREFIX is already set.")
 
         else:
             # now check for install dir.  If set then set the Prefix
-            install_path = shell_environment.GetEnvironment().get_shell_var("GCC5_ARM_INSTALL")
+            install_path = shell_environment.GetEnvironment().get_shell_var("GCC_ARM_INSTALL")
             if install_path is None:
                 return 0
 
-            # make GCC5_ARM_PREFIX to align with tools_def.txt
+            # make GCC_ARM_PREFIX to align with tools_def.txt
             prefix = os.path.join(install_path, "bin", "arm-none-linux-gnueabihf-")
-            shell_environment.GetEnvironment().set_shell_var("GCC5_ARM_PREFIX", prefix)
+            shell_environment.GetEnvironment().set_shell_var("GCC_ARM_PREFIX", prefix)
 
         # now confirm it exists
-        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC5_ARM_PREFIX") + "gcc"):
-            self.Logger.error("Path for GCC5_ARM_PREFIX toolchain is invalid")
+        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC_ARM_PREFIX") + "gcc"):
+            self.Logger.error("Path for GCC_ARM_PREFIX toolchain is invalid")
             return -2
 
         return 0
 
     def _check_aarch64(self):
         # check to see if full path already configured
-        if shell_environment.GetEnvironment().get_shell_var("GCC5_AARCH64_PREFIX") is not None:
-            self.Logger.info("GCC5_AARCH64_PREFIX is already set.")
+        if shell_environment.GetEnvironment().get_shell_var("GCC_AARCH64_PREFIX") is not None:
+            self.Logger.info("GCC_AARCH64_PREFIX is already set.")
 
         else:
             # now check for install dir.  If set then set the Prefix
             install_path = shell_environment.GetEnvironment(
-            ).get_shell_var("GCC5_AARCH64_INSTALL")
+            ).get_shell_var("GCC_AARCH64_INSTALL")
             if install_path is None:
                 return 0
 
-            # make GCC5_AARCH64_PREFIX to align with tools_def.txt
+            # make GCC_AARCH64_PREFIX to align with tools_def.txt
             prefix = os.path.join(install_path, "bin", "aarch64-none-linux-gnu-")
-            shell_environment.GetEnvironment().set_shell_var("GCC5_AARCH64_PREFIX", prefix)
+            shell_environment.GetEnvironment().set_shell_var("GCC_AARCH64_PREFIX", prefix)
 
         # now confirm it exists
-        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC5_AARCH64_PREFIX") + "gcc"):
+        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC_AARCH64_PREFIX") + "gcc"):
             self.Logger.error(
-                "Path for GCC5_AARCH64_PREFIX toolchain is invalid")
+                "Path for GCC_AARCH64_PREFIX toolchain is invalid")
             return -2
 
         return 0
@@ -101,23 +101,23 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
     def _check_riscv64(self):
         # now check for install dir.  If set then set the Prefix
         install_path = shell_environment.GetEnvironment(
-        ).get_shell_var("GCC5_RISCV64_INSTALL")
+        ).get_shell_var("GCC_RISCV64_INSTALL")
         if install_path is None:
             return 0
 
         # check to see if full path already configured
-        if shell_environment.GetEnvironment().get_shell_var("GCC5_RISCV64_PREFIX") is not None:
-            self.Logger.info("GCC5_RISCV64_PREFIX is already set.")
+        if shell_environment.GetEnvironment().get_shell_var("GCC_RISCV64_PREFIX") is not None:
+            self.Logger.info("GCC_RISCV64_PREFIX is already set.")
 
         else:
-            # make GCC5_RISCV64_PREFIX to align with tools_def.txt
+            # make GCC_RISCV64_PREFIX to align with tools_def.txt
             prefix = os.path.join(install_path, "bin", "riscv64-unknown-elf-")
-            shell_environment.GetEnvironment().set_shell_var("GCC5_RISCV64_PREFIX", prefix)
+            shell_environment.GetEnvironment().set_shell_var("GCC_RISCV64_PREFIX", prefix)
 
         # now confirm it exists
-        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC5_RISCV64_PREFIX") + "gcc"):
+        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC_RISCV64_PREFIX") + "gcc"):
             self.Logger.error(
-                "Path for GCC5_RISCV64_PREFIX toolchain is invalid")
+                "Path for GCC_RISCV64_PREFIX toolchain is invalid")
             return -2
 
         # Check if LD_LIBRARY_PATH is set for the libraries of RISC-V GCC toolchain
@@ -131,24 +131,24 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
 
     def _check_loongarch64(self):
         # check to see if full path already configured
-        if shell_environment.GetEnvironment().get_shell_var("GCC5_LOONGARCH64_PREFIX") is not None:
-            self.Logger.info("GCC5_LOONGARCH64_PREFIX is already set.")
+        if shell_environment.GetEnvironment().get_shell_var("GCC_LOONGARCH64_PREFIX") is not None:
+            self.Logger.info("GCC_LOONGARCH64_PREFIX is already set.")
 
         else:
             # now check for install dir.  If set then set the Prefix
             install_path = shell_environment.GetEnvironment(
-            ).get_shell_var("GCC5_LOONGARCH64_INSTALL")
+            ).get_shell_var("GCC_LOONGARCH64_INSTALL")
             if install_path is None:
                 return 0
 
-            # make GCC5_LOONGARCH64_PREFIX to align with tools_def.txt
+            # make GCC_LOONGARCH64_PREFIX to align with tools_def.txt
             prefix = os.path.join(install_path, "bin", "loongarch64-unknown-linux-gnu-")
-            shell_environment.GetEnvironment().set_shell_var("GCC5_LOONGARCH64_PREFIX", prefix)
+            shell_environment.GetEnvironment().set_shell_var("GCC_LOONGARCH64_PREFIX", prefix)
 
         # now confirm it exists
-        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC5_LOONGARCH64_PREFIX") + "gcc"):
+        if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC_LOONGARCH64_PREFIX") + "gcc"):
             self.Logger.error(
-                "Path for GCC5_LOONGARCH64_PREFIX toolchain is invalid")
+                "Path for GCC_LOONGARCH64_PREFIX toolchain is invalid")
             return -2
 
         return 0
diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml
index 39c378a926a9..e40ddf6fe07a 100644
--- a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml
+++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml
@@ -1,12 +1,12 @@
 ## @file
 # Build Plugin used to set the path
-# for the GCC5 ARM/AARCH64 downloaded compilers
+# for the GCC ARM/AARCH64 downloaded compilers
 #
 # Copyright (c) Microsoft Corporation.
 # SPDX-License-Identifier: BSD-2-Clause-Patent
 ##
 {
   "scope": "global-nix",
-  "name": "Linux GCC5 Tool Chain Support",
+  "name": "Linux GCC Tool Chain Support",
   "module": "LinuxGcc5ToolChain"
 }
diff --git a/DynamicTablesPkg/Readme.md b/DynamicTablesPkg/Readme.md
index 6b0a6c7a4001..0dc4d6beacdd 100644
--- a/DynamicTablesPkg/Readme.md
+++ b/DynamicTablesPkg/Readme.md
@@ -194,12 +194,12 @@ parameter to the edk2 build system.
 Example:
 
 >build -a AARCH64 -p Platform\ARM\JunoPkg\ArmJuno.dsc
-   -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK**
+   -t GCC **-D DYNAMIC_TABLES_FRAMEWORK**
 
 or
 
 >build -a AARCH64 -p Platform\ARM\VExpressPkg\ArmVExpress-FVP-AArch64.dsc
-   -t GCC5 **-D DYNAMIC_TABLES_FRAMEWORK**
+   -t GCC **-D DYNAMIC_TABLES_FRAMEWORK**
 
 # Prerequisites
 
@@ -248,7 +248,7 @@ The instructions to setup the CI environment are in *'edk2\\.pytool\\Readme.md'*
     ```
         stuart_setup -c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
 
-        e.g. stuart_setup -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5
+        e.g. stuart_setup -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC
     ```
 
 5. Initialize & Update Dependencies - only as needed when ext_deps change
@@ -256,7 +256,7 @@ The instructions to setup the CI environment are in *'edk2\\.pytool\\Readme.md'*
     ```
         stuart_update -c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
 
-        e.g. stuart_update -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5
+        e.g. stuart_update -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC
     ```
 
 6. Compile the basetools if necessary - only when basetools C source files change
@@ -270,7 +270,7 @@ The instructions to setup the CI environment are in *'edk2\\.pytool\\Readme.md'*
     ```
         stuart_build-c .pytool/CISettings.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
 
-        e.g. stuart_ci_build -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC5 -p DynamicTablesPkg -a AARCH64 --verbose
+        e.g. stuart_ci_build -c .pytool/CISettings.py TOOL_CHAIN_TAG=GCC -p DynamicTablesPkg -a AARCH64 --verbose
     ```
 
     - use `stuart_build -c .pytool/CISettings.py -h` option to see help on additional options.
diff --git a/EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
index 8af4c9c778cb..2b5c3ac4dccd 100644
--- a/EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
+++ b/EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
@@ -3,7 +3,7 @@
 #
 # Platform: EmulatorPkg
 # OS: Ubuntu
-# Toolchain: GCC5
+# Toolchain: GCC
 #
 # Copyright (c) Microsoft Corporation.
 # Copyright (c) 2020, Intel Corporation. All rights reserved.
@@ -84,7 +84,7 @@ jobs:
     steps:
     - template: ../../../.azurepipelines/templates/platform-build-run-steps.yml
       parameters:
-        tool_chain_tag: GCC5
+        tool_chain_tag: GCC
         build_pkg: $(package)
         build_target: $(Build.Target)
         build_arch: $(Build.Arch)
diff --git a/EmulatorPkg/PlatformCI/ReadMe.md b/EmulatorPkg/PlatformCI/ReadMe.md
index f123bb2a4892..53d032e37ea9 100644
--- a/EmulatorPkg/PlatformCI/ReadMe.md
+++ b/EmulatorPkg/PlatformCI/ReadMe.md
@@ -6,7 +6,7 @@ to use the same Pytools based build infrastructure locally.
 ## Supported Configuration Details
 
 This solution for building and running EmulatorPkg has only been validated with Windows 10
-with VS2019 and Ubuntu 18.04 with GCC5 toolchain. Four different firmware builds are
+with VS2019 and Ubuntu 18.04 with GCC toolchain. Four different firmware builds are
 supported and are described below.
 
 | Configuration name      | Architectures      | DSC File         |Additional Flags |
diff --git a/EmulatorPkg/Readme.md b/EmulatorPkg/Readme.md
index 0c2eea6a9a02..00e8c7a28499 100644
--- a/EmulatorPkg/Readme.md
+++ b/EmulatorPkg/Readme.md
@@ -29,11 +29,11 @@ https://github.com/tianocore/tianocore.github.io/wiki/EmulatorPkg
 
   * 32bit emulator in Linux:
 
-    `build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a IA32`
+    `build -p EmulatorPkg\EmulatorPkg.dsc -t GCC -a IA32`
 
   * 64bit emulator in Linux:
 
-    `build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a X64`
+    `build -p EmulatorPkg\EmulatorPkg.dsc -t GCC -a X64`
 
 **You can start/run the emulator using the following command:**
   * 32bit emulator in Windows:
@@ -46,11 +46,11 @@ https://github.com/tianocore/tianocore.github.io/wiki/EmulatorPkg
 
   * 32bit emulator in Linux:
 
-    `cd Build/EmulatorIA32/DEBUG_GCC5/IA32/ && ./Host`
+    `cd Build/EmulatorIA32/DEBUG_GCC/IA32/ && ./Host`
 
   * 64bit emulator in Linux:
 
-    `cd Build/EmulatorX64/DEBUG_GCC5/X64/ && ./Host`
+    `cd Build/EmulatorX64/DEBUG_GCC/X64/ && ./Host`
 
 **On posix-like environment with the bash shell you can use EmulatorPkg/build.sh to simplify building and running
 emulator.**
diff --git a/EmulatorPkg/build.sh b/EmulatorPkg/build.sh
index 76c22dfaf8d4..719b3c681841 100755
--- a/EmulatorPkg/build.sh
+++ b/EmulatorPkg/build.sh
@@ -42,7 +42,7 @@ PLATFORMFILE=
 LAST_ARG=
 RUN_EMULATOR=no
 CLEAN_TYPE=none
-TARGET_TOOLS=GCC48
+TARGET_TOOLS=GCC
 NETWORK_SUPPORT=
 BUILD_NEW_SHELL=
 BUILD_FAT=
@@ -87,18 +87,12 @@ case `uname` in
 
     gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
     case $gcc_version in
-      [1-3].*|4.[0-7].*)
-        echo EmulatorPkg requires GCC4.8 or later
+      [1-4].*)
+        echo EmulatorPkg requires GCC 5 or later
         exit 1
         ;;
-      4.8.*)
-        TARGET_TOOLS=GCC48
-        ;;
-      4.9.*|6.[0-2].*)
-        TARGET_TOOLS=GCC49
-        ;;
       *)
-        TARGET_TOOLS=GCC5
+        TARGET_TOOLS=GCC
         ;;
     esac
     ;;
diff --git a/OvmfPkg/CloudHv/README b/OvmfPkg/CloudHv/README
index 63e28860e058..10c48219b0dd 100644
--- a/OvmfPkg/CloudHv/README
+++ b/OvmfPkg/CloudHv/README
@@ -46,7 +46,7 @@ follows:
 ./cloud-hypervisor \
     --cpus boot=1 \
     --memory size=1G \
-    --kernel Build/CloudHvX64/DEBUG_GCC5/FV/CLOUDHV.fd \
+    --kernel Build/CloudHvX64/DEBUG_GCC/FV/CLOUDHV.fd \
     --disk path=/path/to/disk.raw
 
 Releases
diff --git a/OvmfPkg/IntelTdx/README b/OvmfPkg/IntelTdx/README
index 7307ede78faf..4d4e30aad204 100644
--- a/OvmfPkg/IntelTdx/README
+++ b/OvmfPkg/IntelTdx/README
@@ -55,13 +55,13 @@ Build
 - Build the TDVF (Config-A) target:
 `cd /path/to/edk2`
 `source edksetup.sh`
-`build.sh -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t GCC5`
+`build.sh -p OvmfPkg/OvmfPkgX64.dsc -a X64 -t GCC`
 
 - Build the TDVF (Config-B) target:
 `cd /path/to/edk2`
 `set PACKAGES_PATH=/path/to/edk2/OvmfPkg`
 `source edksetup.sh`
-`build.sh -p OvmfPkg/IntelTdx/IntelTdxX64.dsc -a X64 -t GCC5`
+`build.sh -p OvmfPkg/IntelTdx/IntelTdxX64.dsc -a X64 -t GCC`
 
 Usage
 -----
diff --git a/OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml b/OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
index ad43f9fad2fd..1d21a31d4bda 100644
--- a/OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
+++ b/OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
@@ -3,7 +3,7 @@
 #
 # Platform: OVMF
 # OS: Ubuntu
-# Toolchain: GCC5
+# Toolchain: GCC
 #
 # Copyright (c) Microsoft Corporation.
 # SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -194,7 +194,7 @@ jobs:
     steps:
     - template: ../../../.azurepipelines/templates/platform-build-run-steps.yml
       parameters:
-        tool_chain_tag: GCC5
+        tool_chain_tag: GCC
         build_pkg: $(package)
         build_target: $(Build.Target)
         build_arch: $(Build.Arch)
diff --git a/OvmfPkg/PlatformCI/ReadMe.md b/OvmfPkg/PlatformCI/ReadMe.md
index 10fa32ac489f..9d21165a8295 100644
--- a/OvmfPkg/PlatformCI/ReadMe.md
+++ b/OvmfPkg/PlatformCI/ReadMe.md
@@ -6,7 +6,7 @@ to use the same Pytools based build infrastructure locally.
 ## Supported Configuration Details
 
 This solution for building and running OvmfPkg has only been validated with Windows 10
-with VS2019 and Ubuntu 18.04 with GCC5 toolchain. Four different firmware builds are
+with VS2019 and Ubuntu 18.04 with GCC toolchain. Four different firmware builds are
 supported and are described below.
 
 | Configuration name      | Architectures      | DSC File            |Additional Flags |
diff --git a/OvmfPkg/README b/OvmfPkg/README
index 0a408abf019d..9ba22361fef5 100644
--- a/OvmfPkg/README
+++ b/OvmfPkg/README
@@ -117,8 +117,8 @@ $ OvmfPkg/build.sh -a X64 qemu
 And to run a 64-bit UEFI bootable ISO image:
 $ OvmfPkg/build.sh -a X64 qemu -cdrom /path/to/disk-image.iso
 
-To build a 32-bit OVMF without debug messages using GCC 4.8:
-$ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC48
+To build a 32-bit OVMF without debug messages using GCC:
+$ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC
 
 === SMM support ===
 
diff --git a/OvmfPkg/build.sh b/OvmfPkg/build.sh
index b0334fb76e74..cfae5f7b5316 100755
--- a/OvmfPkg/build.sh
+++ b/OvmfPkg/build.sh
@@ -77,18 +77,12 @@ case `uname` in
   Linux*)
     gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
     case $gcc_version in
-      [1-3].*|4.[0-7].*)
-        echo OvmfPkg requires GCC4.8 or later
+      [1-4].*)
+        echo OvmfPkg requires GCC 5 or later
         exit 1
         ;;
-      4.8.*)
-        TARGET_TOOLS=GCC48
-        ;;
-      4.9.*|6.[0-2].*)
-        TARGET_TOOLS=GCC49
-        ;;
       *)
-        TARGET_TOOLS=GCC5
+        TARGET_TOOLS=GCC
         ;;
     esac
 esac
diff --git a/PrmPkg/Readme.md b/PrmPkg/Readme.md
index 3191c039fd64..b89d276f4bf0 100644
--- a/PrmPkg/Readme.md
+++ b/PrmPkg/Readme.md
@@ -69,10 +69,10 @@ The PrmPkg can be built targetting the IA32/X64 and AArch64 architectures.
 > later in this document and dump the PRMT table in the OS to check if your PRM module is represented as expected.
 
  - AArch64
-    ``build -p PrmPkg/PrmPkg.dsc -a AARCH64 -t GCC5``
+    ``build -p PrmPkg/PrmPkg.dsc -a AARCH64 -t GCC``
 
-   > ***Note***: Only builds with the GCC5 toolchain have been tested.
-   > ***Note***: For builds with the GCC5 toolchain, the PrmModuleExportDescriptor and any other handler entry points symbols, to be listed in the PRMT, must be explicitly preserved by enumerating these in the AARCH64 linker flags. The --require-defined linker flag must be used for each symbol to be preserved.
+   > ***Note***: Only builds with the GCC toolchain have been tested.
+   > ***Note***: For builds with the GCC toolchain, the PrmModuleExportDescriptor and any other handler entry points symbols, to be listed in the PRMT, must be explicitly preserved by enumerating these in the AARCH64 linker flags. The --require-defined linker flag must be used for each symbol to be preserved.
 
 ### PRM Platform GUID
 
diff --git a/ReadMe.rst b/ReadMe.rst
index 497d96355908..0195f23a5b3c 100644
--- a/ReadMe.rst
+++ b/ReadMe.rst
@@ -12,7 +12,7 @@ Core CI Build Status
  Host Type & Toolchain        Build Status      Test Status     Code Coverage
 ============================= ================= =============== ===================
 Windows_VS2019_               |WindowsCiBuild|  |WindowsCiTest| |WindowsCiCoverage|
-Ubuntu_GCC5_                  |UbuntuCiBuild|   |UbuntuCiTest|  |UbuntuCiCoverage|
+Ubuntu_GCC_                  |UbuntuCiBuild|   |UbuntuCiTest|  |UbuntuCiCoverage|
 ============================= ================= =============== ===================
 
 `More CI Build information <.pytool/Readme.md>`__
@@ -36,27 +36,27 @@ OvmfPkg_Win_VS2019_           | IA32            |op32d|       |op32r|       |op3
 |                             | IA32 X64 FULL   |op3264fd|    |op3264fr|    |op3264fn|
 ============================= ================= ============= ============= ==============
 
-Ubuntu 18.04 GCC5
+Ubuntu 18.04 GCC
 `````````````````
 
-============================= ================= ============= ============= ==============
+============================ ================= ============= ============= ==============
  Toolchain                    CONFIG            DEBUG         RELEASE       NOOPT
-============================= ================= ============= ============= ==============
-ArmVirtPkg_Ubuntu_GCC5_       | AARCH64         |avAArch64du| |avAArch64ru| |avAArch64nu|
-|                             | ARM             |avArmdu|     |avArmru|     |avArmnu|
-EmulatorPkg_Ubuntu_GCC5_      | IA32            |em32du|      |em32ru|      |em32nu|
-|                             | X64             |em64du|      |em64ru|      |em64nu|
-|                             | IA32 FULL       |em32fdu|     |em32fru|     |em32fnu|
-|                             | X64 FULL        |em64fdu|     |em64fru|     |em64fnu|
-OvmfPkg_Ubuntu_GCC5_          | IA32            |op32du|      |op32ru|      |op32nu|
-|                             | X64             |op64du|      |op64ru|      |op64nu|
-|                             | IA32 X64        |op3264du|    |op3264ru|    |op3264nu|
-|                             | IA32 X64 FULL   |op3264fdu|   |op3264fru|   |op3264fru|
+============================ ================= ============= ============= ==============
+ArmVirtPkg_Ubuntu_GCC_       | AARCH64         |avAArch64du| |avAArch64ru| |avAArch64nu|
+|                            | ARM             |avArmdu|     |avArmru|     |avArmnu|
+EmulatorPkg_Ubuntu_GCC_      | IA32            |em32du|      |em32ru|      |em32nu|
+|                            | X64             |em64du|      |em64ru|      |em64nu|
+|                            | IA32 FULL       |em32fdu|     |em32fru|     |em32fnu|
+|                            | X64 FULL        |em64fdu|     |em64fru|     |em64fnu|
+OvmfPkg_Ubuntu_GCC_          | IA32            |op32du|      |op32ru|      |op32nu|
+|                            | X64             |op64du|      |op64ru|      |op64nu|
+|                            | IA32 X64        |op3264du|    |op3264ru|    |op3264nu|
+|                            | IA32 X64 FULL   |op3264fdu|   |op3264fru|   |op3264fru|
 ============================= ================= ============= ============= ==============
 
-|TCBZ_2668|_ - EmulatorPkg Ubuntu GCC5 Segfaults during execution.
+|TCBZ_2668|_ - EmulatorPkg Ubuntu GCC Segfaults during execution.
 
-|TCBZ_2639|_ - EmulatorPkg Ubuntu GCC5 Segfaults during execution.
+|TCBZ_2639|_ - EmulatorPkg Ubuntu GCC Segfaults during execution.
 
 `More ArmVirtPkg CI Build Information <ArmVirtPkg/PlatformCI/ReadMe.md>`__
 
@@ -291,21 +291,21 @@ use.
 .. |WindowsCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/32.svg
 .. |WindowsCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
 
-.. _Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master
-.. |UbuntuCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Ubuntu%20GCC5%20CI?branchName=master
+.. _Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=31&branchName=master
+.. |UbuntuCiBuild| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Ubuntu%20GCC%20CI?branchName=master
 .. |UbuntuCiTest| image:: https://img.shields.io/azure-devops/tests/tianocore/edk2-ci/31.svg
 .. |UbuntuCiCoverage| image:: https://img.shields.io/badge/coverage-coming_soon-blue
 
 .. ArmVirtPkg
 
-.. _ArmVirtPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=46&branchName=master
-.. |avAArch64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_DEBUG
-.. |avAArch64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_RELEASE
-.. |avAArch64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_NOOPT
+.. _ArmVirtPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=46&branchName=master
+.. |avAArch64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_DEBUG
+.. |avAArch64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_RELEASE
+.. |avAArch64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_AARCH64_NOOPT
 
-.. |avArmdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_DEBUG
-.. |avArmru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_RELEASE
-.. |avArmnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_NOOPT
+.. |avArmdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_DEBUG
+.. |avArmru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_RELEASE
+.. |avArmnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_ArmVirtPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20QEMU_ARM_NOOPT
 
 .. EmulatorPkg
 
@@ -316,35 +316,35 @@ use.
 .. _TCBZ_2639: https://bugzilla.tianocore.org/show_bug.cgi?id=2639
 
 .. _EmulatorPkg_Win_VS2019:  https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=44&branchName=master
-.. _EmulatorPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=43&branchName=master
+.. _EmulatorPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=43&branchName=master
 
 .. |em32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
-.. |em32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
+.. |em32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_DEBUG
 .. |em32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
-.. |em32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
+.. |em32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_RELEASE
 .. |em32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
-.. |em32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
+.. |em32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_NOOPT
 
 .. |em32fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
-.. |em32fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
+.. |em32fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_DEBUG
 .. |em32fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
-.. |em32fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
+.. |em32fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_RELEASE
 .. |em32fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
-.. |em32fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
+.. |em32fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_IA32_FULL_NOOPT
 
 .. |em64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
-.. |em64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
+.. |em64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_DEBUG
 .. |em64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
-.. |em64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
+.. |em64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_RELEASE
 .. |em64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
-.. |em64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
+.. |em64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_NOOPT
 
 .. |em64fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
-.. |em64fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
+.. |em64fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_DEBUG
 .. |em64fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
-.. |em64fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
+.. |em64fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_RELEASE
 .. |em64fn| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
-.. |em64fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
+.. |em64fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_EmulatorPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20EmulatorPkg_X64_FULL_NOOPT
 
 .. OvmfPkg
 
@@ -352,33 +352,33 @@ use.
 .. _TCBZ_2661: https://bugzilla.tianocore.org/show_bug.cgi?id=2661
 
 .. _OvmfPkg_Win_VS2019:  https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=50&branchName=master
-.. _OvmfPkg_Ubuntu_GCC5: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=48&branchName=master
+.. _OvmfPkg_Ubuntu_GCC: https://dev.azure.com/tianocore/edk2-ci/_build/latest?definitionId=48&branchName=master
 
 .. |op32d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
-.. |op32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
+.. |op32du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_DEBUG
 .. |op32r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
-.. |op32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
+.. |op32ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_RELEASE
 .. |op32n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
-.. |op32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
+.. |op32nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32_NOOPT
 
 .. |op64d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
-.. |op64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
+.. |op64du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_DEBUG
 .. |op64r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
-.. |op64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
+.. |op64ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_RELEASE
 .. |op64n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
-.. |op64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
+.. |op64nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_X64_NOOPT
 
 
 .. |op3264d| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_DEBUG
-.. |op3264du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_DEBUG
+.. |op3264du| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_DEBUG
 .. |op3264r| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_RELEASE
-.. |op3264ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_RELEASE
+.. |op3264ru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_RELEASE
 .. |op3264n| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_NOOPT
-.. |op3264nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_NOOPT
+.. |op3264nu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_NOOPT
 
 .. |op3264fd| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_DEBUG
-.. |op3264fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_DEBUG
+.. |op3264fdu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_DEBUG
 .. |op3264fr| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Windows_VS2019_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_RELEASE
-.. |op3264fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_RELEASE
+.. |op3264fru| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_RELEASE
 .. |op3264fn| replace:: |TCBZ_2661|_
-.. |op3264fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC5_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_NOOPT
+.. |op3264fnu| image:: https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/PlatformCI_OvmfPkg_Ubuntu_GCC_CI?branchName=master&jobName=Platform_CI&configuration=Platform_CI%20OVMF_IA32X64_FULL_NOOPT
diff --git a/UnitTestFrameworkPkg/ReadMe.md b/UnitTestFrameworkPkg/ReadMe.md
index 3fa4e1910f71..3597a027ca88 100644
--- a/UnitTestFrameworkPkg/ReadMe.md
+++ b/UnitTestFrameworkPkg/ReadMe.md
@@ -461,15 +461,15 @@ After that, the following commands will set up the build and run the host-based
 
 ```bash
 # Setup repo for building
-# stuart_setup -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC5, VS2019, etc.>
+# stuart_setup -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC, VS2019, etc.>
 stuart_setup -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=VS2019
 
 # Update all binary dependencies
-# stuart_update -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC5, VS2019, etc.>
+# stuart_update -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC, VS2019, etc.>
 stuart_update -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=VS2019
 
 # Build and run the tests
-# stuart_ci_build -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC5, VS2019, etc.> -t NOOPT [-p <Package Name>]
+# stuart_ci_build -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=<GCC, VS2019, etc.> -t NOOPT [-p <Package Name>]
 stuart_ci_build -c ./.pytool/CISettings.py TOOL_CHAIN_TAG=VS2019 -t NOOPT -p MdePkg
 ```
 
@@ -614,7 +614,7 @@ lcov linux tool, and parsed using the lcov_cobertura python tool to parse it to
   ```bash
   sudo apt-get install -y lcov
   python -m pip install --upgrade -r ./pip-requirements.txt
-  stuart_ci_build -c .pytool/CISettings.py  -t NOOPT TOOL_CHAIN_TAG=GCC5 -p MdeModulePkg
+  stuart_ci_build -c .pytool/CISettings.py  -t NOOPT TOOL_CHAIN_TAG=GCC -p MdeModulePkg
   Open Build/coverage.xml
   ```
   - How to see code coverage data on IDE Visual Studio Code
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 12/13] BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (10 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 11/13] Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:31 ` [PATCH v2 13/13] Bump tools_def.txt VERSION to 3.0 Rebecca Cran
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 BaseTools/Conf/tools_def.template | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 3a60fe9b5965..fc1cda24bedf 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -67,10 +67,6 @@ DEFINE WINSDK10_BIN         = ENV(WINSDK10_PREFIX)DEF(VS_HOST)
 DEFINE WINDDK_BIN16     = ENV(WINDDK3790_PREFIX)bin16
 DEFINE WINDDK_BINX64    = ENV(WINDDK3790_PREFIX)win64\x86\amd64
 
-DEFINE CYGWIN_BIN              = c:/cygwin/bin
-DEFINE CYGWIN_BINIA32          = c:/cygwin/opt/tiano/i386-tiano-pe/i386-tiano-pe/bin/
-DEFINE CYGWIN_BINX64           = c:/cygwin/opt/tiano/x86_64-pc-mingw64/x86_64-pc-mingw64/bin/
-
 DEFINE GCC_IA32_PREFIX        = ENV(GCC_BIN)
 DEFINE GCC_X64_PREFIX         = ENV(GCC_BIN)
 DEFINE GCC_HOST_PREFIX         = ENV(GCC_HOST_BIN)
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* [PATCH v2 13/13] Bump tools_def.txt VERSION to 3.0
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (11 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 12/13] BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template Rebecca Cran
@ 2023-03-28 17:31 ` Rebecca Cran
  2023-03-28 17:57 ` [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Ard Biesheuvel
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 17:31 UTC (permalink / raw)
  To: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney
  Cc: Rebecca Cran

Bump tools_def.txt VERSION to 3.0 for the deletion of VS2008-VS2013,
CLANG35, CLANG38, GCC48, GCC49 and the renaming of GCC5 to GCC.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 BaseTools/Conf/tools_def.template | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index fc1cda24bedf..468d28a731ea 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -13,10 +13,11 @@
 # Increase this version tag any time you want user to get warning about updating this
 # file in the Conf dir.  By default it does not do update existing conf dirs.
 #
+# 3.00 - Updated toolchains
 # 2.00 - Initial version with changes for CI
 #      - Change RC path to use plugin
 #
-#!VERSION=2.00
+#!VERSION=3.00
 
 IDENTIFIER = Default TOOL_CHAIN_CONF
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 68+ messages in thread

* Re: [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (12 preceding siblings ...)
  2023-03-28 17:31 ` [PATCH v2 13/13] Bump tools_def.txt VERSION to 3.0 Rebecca Cran
@ 2023-03-28 17:57 ` Ard Biesheuvel
  2023-03-28 18:01   ` Rebecca Cran
  2023-03-29  1:19 ` 回复: " gaoliming
  2023-03-29 12:20 ` Ard Biesheuvel
  15 siblings, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-28 17:57 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

Hi Rebecca,

Thanks for respining this.


On Tue, 28 Mar 2023 at 19:31, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> Update the toolchain definitions:
>
> - Delete the CLANG35 and CLANG38 toolchains, and replace CLANG38 with
>   CLANGDWARF, updating it to support ARM and AARCH64 in addition to X64
> and IA32.
>

As I have indicated before, I am strongly in favor of these changes.
However, using LLD with X86 and GNU ld with ARM is not what I would
like to see here: not only is it a bad idea for a single toolchain
definition to deviate in this manner between architectures, I also
think that having the ability to use LLD for ARM would be nice in
itself, as it removes the need for cross toolchains entirely, lowering
the bar for contributors to ensure that their changes do not regress
other architectures. And there are some differences related to BTI
that could be interesting as well.


> - Remove GCC48 and GCC49.
>
> - Remove VS2008, VS2010, VS2012 and VS2013.
>
> - Remove EBC compiler definitions. Full removal of EBC support from the
>   various packages etc. will be done in a follow-up patch series.
>
> - Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS definitions.
>
> - Remove unused CYGWIN_ definitions.
>
> - Rename GCC5 to GCC.
>
> Personal GitHub PR: https://github.com/tianocore/edk2/pull/4158
> GitHub branch: https://github.com/bcran/edk2/tree/clangdwarf
>
> Note: CI will fail due to changes that are needed in the edk2-basetools
> and containers repositories.
>
> Changes from v1 to v2:
>
> - Added a commit to delete GCC48 and GCC49, rename GCC5 to GCC and
>   update the flags for other toolchains to work with the new GCC
>   definitions.
>
> - Bumped VERSION from 2.00 to 3.00 to inform users that they should
>   updated their Conf/tools_def.txt.
>
> Rebecca Cran (13):
>   OvmfPkg: Replace static struct initialization with ZeroMem call
>   CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler
>     flags
>   BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
>   BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions
>   BaseTools: Remove VS2008-VS2013 remnants
>   MdePkg: Remove VS2008-VS2013 remnants
>   edksetup.bat: Remove VS2008-VS2013 remnants
>   BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs
>   BaseTools: Remove EBC (EFI Byte Code) compiler definitions
>   OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF
>   Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC
>   BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template
>   Bump tools_def.txt VERSION to 3.0
>
>  UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc               |    4 +-
>  IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc                             |   12 +-
>  OvmfPkg/OvmfPkgX64.dsc                                              |    2 +-
>  CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf                     |    3 +-
>  CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf                      |    3 +-
>  CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf                  |    3 +-
>  CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf                      |    3 +-
>  CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf                      |    3 +-
>  CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf         |    3 +-
>  CryptoPkg/Library/OpensslLib/OpensslLib.inf                         |    5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf                    |    5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                   |    5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibFull.inf                     |    5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf                |    5 +-
>  EmulatorPkg/Unix/Host/Host.inf                                      |    6 +-
>  MdePkg/Include/Ia32/ProcessorBind.h                                 |    8 +-
>  MdePkg/Include/X64/ProcessorBind.h                                  |    8 +-
>  OvmfPkg/Library/PlatformInitLib/MemDetect.c                         |    4 +-
>  OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c           |    5 -
>  .azurepipelines/Ubuntu-GCC5.yml                                     |    4 +-
>  .azurepipelines/templates/platform-build-run-steps.yml              |    2 +-
>  .azurepipelines/templates/pr-gate-build-job.yml                     |    2 +-
>  .azurepipelines/templates/pr-gate-steps.yml                         |    2 +-
>  ArmPlatformPkg/Scripts/Makefile                                     |    2 +-
>  ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml               |    4 +-
>  ArmVirtPkg/PlatformCI/ReadMe.md                                     |    2 +-
>  BaseTools/Conf/tools_def.template                                   | 2528 ++++----------------
>  BaseTools/Edk2ToolsBuild.py                                         |    2 +-
>  BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py |    2 +-
>  BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py           |   62 +-
>  BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml |    4 +-
>  BaseTools/Scripts/SetVisualStudio.bat                               |   22 +-
>  BaseTools/Scripts/ShowEnvironment.bat                               |   44 -
>  BaseTools/get_vsvars.bat                                            |   13 -
>  BaseTools/set_vsprefix_envs.bat                                     |   64 -
>  BaseTools/toolsetup.bat                                             |   24 +-
>  DynamicTablesPkg/Readme.md                                          |   10 +-
>  EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml              |    4 +-
>  EmulatorPkg/PlatformCI/ReadMe.md                                    |    2 +-
>  EmulatorPkg/Readme.md                                               |    8 +-
>  EmulatorPkg/build.sh                                                |   14 +-
>  OvmfPkg/CloudHv/README                                              |    2 +-
>  OvmfPkg/IntelTdx/README                                             |    4 +-
>  OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml                  |    4 +-
>  OvmfPkg/PlatformCI/ReadMe.md                                        |    2 +-
>  OvmfPkg/README                                                      |    4 +-
>  OvmfPkg/build.sh                                                    |   12 +-
>  PrmPkg/Readme.md                                                    |    6 +-
>  ReadMe.rst                                                          |  102 +-
>  UnitTestFrameworkPkg/ReadMe.md                                      |    8 +-
>  edksetup.bat                                                        |    6 +-
>  51 files changed, 592 insertions(+), 2471 deletions(-)
>
> --
> 2.34.1
>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 17:57 ` [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Ard Biesheuvel
@ 2023-03-28 18:01   ` Rebecca Cran
  2023-03-28 18:12     ` [edk2-devel] " Ard Biesheuvel
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-03-28 18:01 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On 3/28/23 11:57 AM, Ard Biesheuvel wrote:

>
> As I have indicated before, I am strongly in favor of these changes.
> However, using LLD with X86 and GNU ld with ARM is not what I would
> like to see here: not only is it a bad idea for a single toolchain
> definition to deviate in this manner between architectures, I also
> think that having the ability to use LLD for ARM would be nice in
> itself, as it removes the need for cross toolchains entirely, lowering
> the bar for contributors to ensure that their changes do not regress
> other architectures. And there are some differences related to BTI
> that could be interesting as well.

I agree, it's not ideal. My knowledge of linker issues is relatively 
limited at the moment, which is why I decided not to use LLD when I saw 
it was failing.

I can spend some time learning about it and send out a v3 with LLD 
enabled for ARM.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 18:01   ` Rebecca Cran
@ 2023-03-28 18:12     ` Ard Biesheuvel
  2023-03-29 10:21       ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-28 18:12 UTC (permalink / raw)
  To: devel, rebecca
  Cc: Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Tue, 28 Mar 2023 at 20:01, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> On 3/28/23 11:57 AM, Ard Biesheuvel wrote:
>
> >
> > As I have indicated before, I am strongly in favor of these changes.
> > However, using LLD with X86 and GNU ld with ARM is not what I would
> > like to see here: not only is it a bad idea for a single toolchain
> > definition to deviate in this manner between architectures, I also
> > think that having the ability to use LLD for ARM would be nice in
> > itself, as it removes the need for cross toolchains entirely, lowering
> > the bar for contributors to ensure that their changes do not regress
> > other architectures. And there are some differences related to BTI
> > that could be interesting as well.
>
> I agree, it's not ideal. My knowledge of linker issues is relatively
> limited at the moment, which is why I decided not to use LLD when I saw
> it was failing.
>
> I can spend some time learning about it and send out a v3 with LLD
> enabled for ARM.
>

Happy to help

What kind of errors are you seeing after adding -Wl,--no-pie,--no-relax ?

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call
  2023-03-28 17:30 ` [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call Rebecca Cran
@ 2023-03-28 22:40   ` Yao, Jiewen
  2023-03-28 22:45     ` Michael D Kinney
  0 siblings, 1 reply; 68+ messages in thread
From: Yao, Jiewen @ 2023-03-28 22:40 UTC (permalink / raw)
  To: Rebecca Cran, devel@edk2.groups.io, Oliver Smith-Denny,
	Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J, Ard Biesheuvel,
	Justen, Jordan L, Gerd Hoffmann, Feng, Bob C, Gao, Liming,
	Andrew Fish, Leif Lindholm, Kinney, Michael D

Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>

> -----Original Message-----
> From: Rebecca Cran <rebecca@bsdio.com>
> Sent: Wednesday, March 29, 2023 1:31 AM
> To: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>;
> Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1
> <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>;
> Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann
> <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif
> Lindholm <quic_llindhol@quicinc.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Subject: [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with
> ZeroMem call
> 
> Replace the static struct initialization with a call to ZeroMem to avoid
> generating a call to memset in certain build configurations.
> 
> Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
> ---
>  OvmfPkg/Library/PlatformInitLib/MemDetect.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> index 38cece9173e8..0bcdfb83721f 100644
> --- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> +++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> @@ -608,10 +608,12 @@ PlatformAddressWidthFromCpuid (
>  {
>    UINT32   RegEax, RegEbx, RegEcx, RegEdx, Max;
>    UINT8    PhysBits;
> -  CHAR8    Signature[13] = { 0 };
> +  CHAR8    Signature[13];
>    BOOLEAN  Valid         = FALSE;
>    BOOLEAN  Page1GSupport = FALSE;
> 
> +  ZeroMem (Signature, sizeof (Signature));
> +
>    AsmCpuid (0x80000000, &RegEax, &RegEbx, &RegEcx, &RegEdx);
>    *(UINT32 *)(Signature + 0) = RegEbx;
>    *(UINT32 *)(Signature + 4) = RegEdx;
> --
> 2.34.1


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call
  2023-03-28 22:40   ` Yao, Jiewen
@ 2023-03-28 22:45     ` Michael D Kinney
  0 siblings, 0 replies; 68+ messages in thread
From: Michael D Kinney @ 2023-03-28 22:45 UTC (permalink / raw)
  To: Yao, Jiewen, Rebecca Cran, devel@edk2.groups.io,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann, Feng, Bob C,
	Gao, Liming, Andrew Fish, Leif Lindholm
  Cc: Kinney, Michael D

Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>


> -----Original Message-----
> From: Yao, Jiewen <jiewen.yao@intel.com>
> Sent: Tuesday, March 28, 2023 3:40 PM
> To: Rebecca Cran <rebecca@bsdio.com>; devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Ard Biesheuvel
> <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng, Bob C
> <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif Lindholm
> <quic_llindhol@quicinc.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: RE: [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call
> 
> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
> 
> > -----Original Message-----
> > From: Rebecca Cran <rebecca@bsdio.com>
> > Sent: Wednesday, March 29, 2023 1:31 AM
> > To: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>;
> > Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1
> > <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> > <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>;
> > Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann
> > <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming
> > <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif
> > Lindholm <quic_llindhol@quicinc.com>; Kinney, Michael D
> > <michael.d.kinney@intel.com>
> > Cc: Rebecca Cran <rebecca@bsdio.com>
> > Subject: [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with
> > ZeroMem call
> >
> > Replace the static struct initialization with a call to ZeroMem to avoid
> > generating a call to memset in certain build configurations.
> >
> > Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
> > Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
> > Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
> > ---
> >  OvmfPkg/Library/PlatformInitLib/MemDetect.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> > b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> > index 38cece9173e8..0bcdfb83721f 100644
> > --- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> > +++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c
> > @@ -608,10 +608,12 @@ PlatformAddressWidthFromCpuid (
> >  {
> >    UINT32   RegEax, RegEbx, RegEcx, RegEdx, Max;
> >    UINT8    PhysBits;
> > -  CHAR8    Signature[13] = { 0 };
> > +  CHAR8    Signature[13];
> >    BOOLEAN  Valid         = FALSE;
> >    BOOLEAN  Page1GSupport = FALSE;
> >
> > +  ZeroMem (Signature, sizeof (Signature));
> > +
> >    AsmCpuid (0x80000000, &RegEax, &RegEbx, &RegEcx, &RegEdx);
> >    *(UINT32 *)(Signature + 0) = RegEbx;
> >    *(UINT32 *)(Signature + 4) = RegEdx;
> > --
> > 2.34.1


^ permalink raw reply	[flat|nested] 68+ messages in thread

* 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (13 preceding siblings ...)
  2023-03-28 17:57 ` [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Ard Biesheuvel
@ 2023-03-29  1:19 ` gaoliming
  2023-03-29  7:39   ` Ard Biesheuvel
  2023-04-02 15:41   ` 回复: " Rebecca Cran
  2023-03-29 12:20 ` Ard Biesheuvel
  15 siblings, 2 replies; 68+ messages in thread
From: gaoliming @ 2023-03-29  1:19 UTC (permalink / raw)
  To: devel, rebecca, 'Oliver Smith-Denny',
	'Guomin Jiang', 'Xiaoyu Lu',
	'Jian J Wang', 'Jiewen Yao',
	'Ard Biesheuvel', 'Jordan Justen',
	'Gerd Hoffmann', 'Bob Feng',
	'Andrew Fish', 'Leif Lindholm',
	'Michael D Kinney'

Rebecca:


> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Rebecca Cran
> 发送时间: 2023年3月29日 1:31
> 收件人: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>;
> Guomin Jiang <guomin.jiang@intel.com>; Xiaoyu Lu <xiaoyu1.lu@intel.com>;
> Jian J Wang <jian.j.wang@intel.com>; Jiewen Yao <jiewen.yao@intel.com>;
> Ard Biesheuvel <ardb+tianocore@kernel.org>; Jordan Justen
> <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Bob Feng
> <bob.c.feng@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Andrew
> Fish <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>;
> Michael D Kinney <michael.d.kinney@intel.com>
> 抄送: Rebecca Cran <rebecca@bsdio.com>
> 主题: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg:
> Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
> CLANGDWARF, delete VS 2008-2013, EBC
> 
> Update the toolchain definitions:
> 
> - Delete the CLANG35 and CLANG38 toolchains, and replace CLANG38 with
>   CLANGDWARF, updating it to support ARM and AARCH64 in addition to X64
> and IA32.
> 
> - Remove GCC48 and GCC49.

GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.

They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is. 

Thanks
Liming
> 
> - Remove VS2008, VS2010, VS2012 and VS2013.
> 
> - Remove EBC compiler definitions. Full removal of EBC support from the
>   various packages etc. will be done in a follow-up patch series.
> 
> - Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS
> definitions.
> 
> - Remove unused CYGWIN_ definitions.
> 
> - Rename GCC5 to GCC.
> 
> Personal GitHub PR: https://github.com/tianocore/edk2/pull/4158
> GitHub branch: https://github.com/bcran/edk2/tree/clangdwarf
> 
> Note: CI will fail due to changes that are needed in the edk2-basetools
> and containers repositories.
> 
> Changes from v1 to v2:
> 
> - Added a commit to delete GCC48 and GCC49, rename GCC5 to GCC and
>   update the flags for other toolchains to work with the new GCC
>   definitions.
> 
> - Bumped VERSION from 2.00 to 3.00 to inform users that they should
>   updated their Conf/tools_def.txt.
> 
> Rebecca Cran (13):
>   OvmfPkg: Replace static struct initialization with ZeroMem call
>   CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38
> compiler
>     flags
>   BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and
> CLANG38
>   BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions
>   BaseTools: Remove VS2008-VS2013 remnants
>   MdePkg: Remove VS2008-VS2013 remnants
>   edksetup.bat: Remove VS2008-VS2013 remnants
>   BaseTools: Remove unused IPHONE_TOOLS and
> SOURCERY_CYGWIN_TOOLS defs
>   BaseTools: Remove EBC (EFI Byte Code) compiler definitions
>   OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for
> CLANGDWARF
>   Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC
>   BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template
>   Bump tools_def.txt VERSION to 3.0
> 
>  UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
> |    4 +-
>  IntelFsp2Pkg/Tools/Tests/QemuFspPkg.dsc
> |   12 +-
>  OvmfPkg/OvmfPkgX64.dsc
> |    2 +-
>  CryptoPkg/Library/BaseCryptLib/BaseCryptLib.inf
> |    3 +-
>  CryptoPkg/Library/BaseCryptLib/PeiCryptLib.inf                      |
> 3 +-
>  CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
> |    3 +-
>  CryptoPkg/Library/BaseCryptLib/SecCryptLib.inf
> |    3 +-
>  CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf
> |    3 +-
>  CryptoPkg/Library/BaseCryptLib/UnitTestHostBaseCryptLib.inf         |
> 3 +-
>  CryptoPkg/Library/OpensslLib/OpensslLib.inf
> |    5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf                    |
> 5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf                   |
> 5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibFull.inf                     |
> 5 +-
>  CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf                |
> 5 +-
>  EmulatorPkg/Unix/Host/Host.inf
> |    6 +-
>  MdePkg/Include/Ia32/ProcessorBind.h
> |    8 +-
>  MdePkg/Include/X64/ProcessorBind.h
> |    8 +-
>  OvmfPkg/Library/PlatformInitLib/MemDetect.c
> |    4 +-
>  OvmfPkg/Library/X86QemuLoadImageLib/X86QemuLoadImageLib.c
> |    5 -
>  .azurepipelines/Ubuntu-GCC5.yml
> |    4 +-
>  .azurepipelines/templates/platform-build-run-steps.yml              |
> 2 +-
>  .azurepipelines/templates/pr-gate-build-job.yml                     |
> 2 +-
>  .azurepipelines/templates/pr-gate-steps.yml
> |    2 +-
>  ArmPlatformPkg/Scripts/Makefile
> |    2 +-
>  ArmVirtPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
> |    4 +-
>  ArmVirtPkg/PlatformCI/ReadMe.md
> |    2 +-
>  BaseTools/Conf/tools_def.template
> | 2528 ++++----------------
>  BaseTools/Edk2ToolsBuild.py
> |    2 +-
>  BaseTools/Plugin/HostBasedUnitTestRunner/HostBasedUnitTestRunner.py |
> 2 +-
>  BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py           |
> 62 +-
>  BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain_plug_in.yaml |
> 4 +-
>  BaseTools/Scripts/SetVisualStudio.bat
> |   22 +-
>  BaseTools/Scripts/ShowEnvironment.bat
> |   44 -
>  BaseTools/get_vsvars.bat
> |   13 -
>  BaseTools/set_vsprefix_envs.bat
> |   64 -
>  BaseTools/toolsetup.bat
> |   24 +-
>  DynamicTablesPkg/Readme.md
> |   10 +-
>  EmulatorPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
> |    4 +-
>  EmulatorPkg/PlatformCI/ReadMe.md
> |    2 +-
>  EmulatorPkg/Readme.md
> |    8 +-
>  EmulatorPkg/build.sh
> |   14 +-
>  OvmfPkg/CloudHv/README
> |    2 +-
>  OvmfPkg/IntelTdx/README
> |    4 +-
>  OvmfPkg/PlatformCI/.azurepipelines/Ubuntu-GCC5.yml
> |    4 +-
>  OvmfPkg/PlatformCI/ReadMe.md
> |    2 +-
>  OvmfPkg/README
> |    4 +-
>  OvmfPkg/build.sh
> |   12 +-
>  PrmPkg/Readme.md
> |    6 +-
>  ReadMe.rst
> |  102 +-
>  UnitTestFrameworkPkg/ReadMe.md
> |    8 +-
>  edksetup.bat
> |    6 +-
>  51 files changed, 592 insertions(+), 2471 deletions(-)
> 
> --
> 2.34.1
> 
> 
> 
> 
> 




^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
  2023-03-28 17:31 ` [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Rebecca Cran
@ 2023-03-29  3:46   ` Guo, Gua
       [not found]   ` <1750C725F99FA0C2.29160@groups.io>
  1 sibling, 0 replies; 68+ messages in thread
From: Guo, Gua @ 2023-03-29  3:46 UTC (permalink / raw)
  To: devel@edk2.groups.io, rebecca@bsdio.com, Oliver Smith-Denny,
	Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J, Yao, Jiewen,
	Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann, Feng, Bob C,
	Gao, Liming, Andrew Fish, Leif Lindholm, Kinney, Michael D


[-- Attachment #1.1: Type: text/plain, Size: 39229 bytes --]

@rebecca@bsdio.com<mailto:rebecca@bsdio.com>



On this part, whether is better to change it from "objcopy" to "llvm-objcopy"



Windows path: C:\Program Files (x86)\llvm-objcopy.exe

Linux path: /usr/bin/llvm-objcopy

[cid:image001.png@01D96232.F9B3D760]





Thanks,

Gua

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
Sent: Wednesday, March 29, 2023 1:31 AM
To: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Subject: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38



Update the CLANGDWARF toolchain definition with the settings from CLANG38, and delete the CLANG35 and CLANG38 toolchains.



The CLANG35 and CLANG38 toolchains were added for compatibility with ARM's proprietary clang-based toolchain. Things have since moved on, and with the latest clang version being 16.0.0, versions 3.5 and 3.9 are obsolete and can be removed.



Signed-off-by: Rebecca Cran <rebecca@bsdio.com<mailto:rebecca@bsdio.com>>

---

BaseTools/Conf/tools_def.template | 453 ++++++++------------

1 file changed, 171 insertions(+), 282 deletions(-)



diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template

index 2f0b804acef3..3abd22615533 100755

--- a/BaseTools/Conf/tools_def.template

+++ b/BaseTools/Conf/tools_def.template

@@ -273,32 +273,21 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc

#                             Required to build platforms or ACPI tables:

#                               Intel(r) ACPI Compiler from

#                               https://acpica.org/downloads

-#

-#   CLANG35     -Linux,Windows-  Requires:

-#                             Clang v3.5 or later, and GNU binutils targeting aarch64-linux-gnu or arm-linux-gnueabi

-#                        Optional:

-#                             Required to build platforms or ACPI tables:

-#                               Intel(r) ACPI Compiler from

-#                               https://acpica.org/downloads

-#   CLANG38  -Linux-  Requires:

-#                             Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi

-#                             Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi

+#   CLANGDWARF  -Linux-  Requires:

+#                             Clang 9 or above, and GNU binutils targeting x86_64-linux-gnu, aaarch64-linux-gnu or arm-linux-gnuaebi

#                        Optional:

#                             Required to build platforms or ACPI tables:

#                               Intel(r) ACPI Compiler from

#                               https://acpica.org/downloads

+#                             Required to compile nasm source:

+#                               nasm compiler from

+#                               NASM -- https://nasm.us

#   CLANGPDB -Linux, Windows, Mac-  Requires:

#                             Clang 9 or above from http://releases.llvm.org/

#                        Optional:

#                             Required to compile nasm source:

#                               nasm compiler from

#                               NASM -- http://www.nasm.us/

-#   CLANGDWARF -Linux, Windows, Mac-  Requires:

-#                             Clang 9 or above from http://releases.llvm.org/

-#                        Optional:

-#                             Required to compile nasm source:

-#                               nasm compiler from

-#                               NASM -- http://www.nasm.us/

#   VS2008x86   -win64-  Requires:

#                             Microsoft Visual Studio 2008 (x86)

#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830

@@ -2483,187 +2472,187 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS       = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-un

#  PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled  #  ####################################################################################

-*_CLANG38_*_*_FAMILY                = GCC

-*_CLANG38_*_MAKE_PATH               = make

-*_CLANG38_*_*_DLL                   = ENV(CLANG38_DLL)

-*_CLANG38_*_ASL_PATH                = DEF(UNIX_IASL_BIN)

+*_CLANGDWARF_*_*_FAMILY                = GCC

+*_CLANGDWARF_*_MAKE_PATH               = make

+*_CLANGDWARF_*_*_DLL                   = ENV(CLANGDWARF_DLL)

+*_CLANGDWARF_*_ASL_PATH                = DEF(UNIX_IASL_BIN)

-*_CLANG38_*_APP_FLAGS               =

-*_CLANG38_*_ASL_FLAGS               = DEF(IASL_FLAGS)

-*_CLANG38_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)

-*_CLANG38_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)

-DEFINE CLANG38_IA32_PREFIX          = ENV(CLANG38_BIN)

-DEFINE CLANG38_X64_PREFIX           = ENV(CLANG38_BIN)

+*_CLANGDWARF_*_APP_FLAGS               =

+*_CLANGDWARF_*_ASL_FLAGS               = DEF(IASL_FLAGS)

+*_CLANGDWARF_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)

+DEFINE CLANGDWARF_IA32_PREFIX          = ENV(CLANGDWARF_BIN)

+DEFINE CLANGDWARF_X64_PREFIX           = ENV(CLANGDWARF_BIN)

-DEFINE CLANG38_IA32_TARGET          = -target i686-pc-linux-gnu

-DEFINE CLANG38_X64_TARGET           = -target x86_64-pc-linux-gnu

+DEFINE CLANGDWARF_IA32_TARGET          = -target i686-pc-linux-gnu

+DEFINE CLANGDWARF_X64_TARGET           = -target x86_64-pc-linux-gnu

-DEFINE CLANG38_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

-DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference

+DEFINE CLANGDWARF_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

+DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference

 ###########################

-# CLANG38 IA32 definitions

+# CLANGDWARF IA32 definitions

###########################

-*_CLANG38_IA32_OBJCOPY_PATH         = objcopy

-*_CLANG38_IA32_CC_PATH              = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_SLINK_PATH           = DEF(CLANG38_IA32_PREFIX)llvm-ar

-*_CLANG38_IA32_DLINK_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLDLINK_PATH        = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASM_PATH             = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_PP_PATH              = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_VFRPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLCC_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_RC_PATH              = objcopy

-

-*_CLANG38_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386

-*_CLANG38_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

-*_CLANG38_IA32_OBJCOPY_FLAGS        =

-*_CLANG38_IA32_NASM_FLAGS           = -f elf32

-*_CLANG38_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-

-DEBUG_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-DEBUG_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANG38_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-RELEASE_CLANG38_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-NOOPT_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0

+*_CLANGDWARF_IA32_OBJCOPY_PATH         = objcopy

+*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar

+*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_RC_PATH              = objcopy

+

+*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386

+*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

+*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =

+*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32

+*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+

+DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double

+DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double

+RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double

+NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0

 ##########################

-# CLANG38 X64 definitions

+# CLANGDWARF X64 definitions

##########################

-*_CLANG38_X64_OBJCOPY_PATH         = objcopy

-*_CLANG38_X64_CC_PATH              = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_SLINK_PATH           = DEF(CLANG38_X64_PREFIX)llvm-ar

-*_CLANG38_X64_DLINK_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLDLINK_PATH        = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASM_PATH             = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_PP_PATH              = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_VFRPP_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLCC_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLPP_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_RC_PATH              = objcopy

-

-*_CLANG38_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64

-*_CLANG38_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

-*_CLANG38_X64_OBJCOPY_FLAGS        =

-*_CLANG38_X64_NASM_FLAGS           = -f elf64

-*_CLANG38_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

-

-DEBUG_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-DEBUG_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)

-RELEASE_CLANG38_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-RELEASE_CLANG38_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-NOOPT_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0

+*_CLANGDWARF_X64_OBJCOPY_PATH         = objcopy

+*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar

+*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_RC_PATH              = objcopy

+

+*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64

+*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

+*_CLANGDWARF_X64_OBJCOPY_FLAGS        =

+*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64

+*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+

+DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g

+DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)

+RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -fuse-ld=lld

+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

+

+NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g

+NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0

 ##################

-# CLANG38 ARM definitions

+# CLANGDWARF ARM definitions

##################

-DEFINE CLANG38_ARM_TARGET        = -target arm-linux-gnueabi

-DEFINE CLANG38_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt

-DEFINE CLANG38_ARM_DLINK_FLAGS   = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

-

-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)

-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_ARM_APP_FLAGS          =

-*_CLANG38_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)

-*_CLANG38_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)

-*_CLANG38_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_ARM_CC_PATH            = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASM_PATH           = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_PP_PATH            = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_VFRPP_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLCC_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLPP_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_DLINK_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLDLINK_PATH      = ENV(CLANG38_BIN)clang

-

-*_CLANG38_ARM_SLINK_PATH         = ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_ARM_RC_PATH            = ENV(CLANG38_ARM_PREFIX)objcopy

-

-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_ARM_ASLDLINK_FLAGS     = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

-*_CLANG38_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

-*_CLANG38_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220

-*_CLANG38_ARM_PLATFORM_FLAGS     = -march=armv7-a

-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)

-*_CLANG38_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_TARGET)

-*_CLANG38_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

-  DEBUG_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

-  NOOPT_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

-  NOOPT_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS)

-RELEASE_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

-RELEASE_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

+DEFINE CLANGDWARF_ARM_TARGET        = -target arm-linux-gnueabi

+DEFINE CLANGDWARF_ARM_CC_FLAGS      = $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt

+DEFINE CLANGDWARF_ARM_DLINK_FLAGS   = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

+

+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_ARM_APP_FLAGS          =

+*_CLANGDWARF_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)

+*_CLANGDWARF_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_ARM_CC_PATH            = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASM_PATH           = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_PP_PATH            = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_VFRPP_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLCC_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLPP_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_DLINK_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLDLINK_PATH      = ENV(CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_ARM_SLINK_PATH         = ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_ARM_RC_PATH            = ENV(CLANGDWARF_ARM_PREFIX)objcopy

+

+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_ARM_ASLDLINK_FLAGS     = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

+*_CLANGDWARF_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220

+*_CLANGDWARF_ARM_PLATFORM_FLAGS     = -march=armv7-a

+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)

+*_CLANGDWARF_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET)

+*_CLANGDWARF_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

+  DEBUG_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

+  NOOPT_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

+  NOOPT_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS)

+RELEASE_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

+RELEASE_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS)

+-flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm

+-Wl,-plugin-opt=-pass-through=-llto-arm

 ##################

-# CLANG38 AARCH64 definitions

+# CLANGDWARF AARCH64 definitions

##################

-DEFINE CLANG38_AARCH64_TARGET    = -target aarch64-linux-gnu

-DEFINE CLANG38_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG38_AARCH64_TARGET) -mcmodel=small DEF(CLANG38_WARNING_OVERRIDES) -DEFINE CLANG38_AARCH64_DLINK_FLAGS  = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

-

-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)

-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_AARCH64_APP_FLAGS      =

-*_CLANG38_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)

-*_CLANG38_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)

-*_CLANG38_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_AARCH64_CC_PATH        = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASM_PATH       = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_PP_PATH        = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_VFRPP_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLCC_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLPP_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_DLINK_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLDLINK_PATH  = ENV(CLANG38_BIN)clang

-

-*_CLANG38_AARCH64_SLINK_PATH     = ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_AARCH64_RC_PATH        = ENV(CLANG38_AARCH64_PREFIX)objcopy

-

-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_AARCH64_ASLDLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

-*_CLANG38_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

-*_CLANG38_AARCH64_DLINK_FLAGS    = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

-*_CLANG38_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20

-*_CLANG38_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228

-*_CLANG38_AARCH64_PLATFORM_FLAGS =

-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)

-*_CLANG38_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARCH64_TARGET)

-*_CLANG38_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

-  DEBUG_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

-  NOOPT_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0

-  NOOPT_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS)

-RELEASE_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

-RELEASE_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

+DEFINE CLANGDWARF_AARCH64_TARGET    = -target aarch64-linux-gnu

+DEFINE CLANGDWARF_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)

+DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=small

+DEF(CLANGDWARF_WARNING_OVERRIDES) DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS

+= DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z

+common-page-size=0x1000

+

+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_AARCH64_APP_FLAGS      =

+*_CLANGDWARF_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)

+*_CLANGDWARF_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_AARCH64_CC_PATH        = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASM_PATH       = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_PP_PATH        = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_VFRPP_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLCC_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLPP_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_DLINK_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLDLINK_PATH  = ENV(CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_AARCH64_SLINK_PATH     = ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_AARCH64_RC_PATH        = ENV(CLANGDWARF_AARCH64_PREFIX)objcopy

+

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

+*_CLANGDWARF_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_AARCH64_DLINK_FLAGS    = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

+*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20

+*_CLANGDWARF_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228

+*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =

+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)

+*_CLANGDWARF_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET)

+*_CLANGDWARF_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

+  DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

+  NOOPT_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0

+  NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS)

+RELEASE_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

+RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS =

+DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3

+-L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64

+-Wl,-plugin-opt=-pass-through=-llto-aarch64

 ####################################################################################

#

@@ -2763,106 +2752,6 @@ NOOPT_CLANGPDB_X64_DLINK_FLAGS      = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE

NOOPT_CLANGPDB_X64_DLINK2_FLAGS     =

NOOPT_CLANGPDB_X64_GENFW_FLAGS      = --keepexceptiontable

-####################################################################################

-#

-# CLANGDWARF - This configuration is used to compile under Windows/Linux/Mac to produce -#  ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled -# -####################################################################################

-*_CLANGDWARF_*_*_FAMILY             = GCC

-*_CLANGDWARF_*_*_BUILDRULEFAMILY    = CLANGGCC

-*_CLANGDWARF_*_MAKE_PATH            = ENV(CLANG_HOST_BIN)make

-*_CLANGDWARF_*_*_DLL                = ENV(CLANGDWARF_DLL)

-*_CLANGDWARF_*_ASL_PATH             = DEF(UNIX_IASL_BIN)

-

-*_CLANGDWARF_*_APP_FLAGS            =

-*_CLANGDWARF_*_ASL_FLAGS            = DEF(IASL_FLAGS)

-*_CLANGDWARF_*_ASL_OUTFLAGS         = DEF(IASL_OUTFLAGS)

-

-DEFINE CLANGDWARF_IA32_PREFIX       = ENV(CLANG_BIN)

-DEFINE CLANGDWARF_X64_PREFIX        = ENV(CLANG_BIN)

-

-# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.

-# LLVM/CLANG doesn't support common page size. So, it can't share the same GccBase.lds script.

-DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40

-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON     = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds

-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable

-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive

-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS       = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)

-DEFINE CLANGDWARF_X64_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)

-

-###########################

-# CLANGDWARF IA32 definitions

-###########################

-*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar

-*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_RC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)llvm-rc

-

-*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld

-*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

-*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =

-*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32

-*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-

-DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld

-

-##########################

-# CLANGDWARF X64 definitions

-##########################

-*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar

-*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_RC_PATH              = DEF(CLANGDWARF_X64_PREFIX)llvm-rc

-

-*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=lld

-*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

-*_CLANGDWARF_X64_OBJCOPY_FLAGS        =

-*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64

-*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

-

-DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)

-RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld

-

#

#

# XCODE5 support

--

2.34.1













[-- Attachment #1.2: Type: text/html, Size: 80204 bytes --]

[-- Attachment #2: image001.png --]
[-- Type: image/png, Size: 53798 bytes --]

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29  1:19 ` 回复: " gaoliming
@ 2023-03-29  7:39   ` Ard Biesheuvel
  2023-03-29 10:20     ` Rebecca Cran
  2023-03-29 11:28     ` Leif Lindholm
  2023-04-02 15:41   ` 回复: " Rebecca Cran
  1 sibling, 2 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-29  7:39 UTC (permalink / raw)
  To: devel, gaoliming
  Cc: rebecca, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Andrew Fish, Leif Lindholm, Michael D Kinney

On Wed, 29 Mar 2023 at 03:20, gaoliming via groups.io
<gaoliming=byosoft.com.cn@groups.io> wrote:
>
> Rebecca:
>
>
> > -----邮件原件-----
> > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Rebecca Cran
> > 发送时间: 2023年3月29日 1:31
> > 收件人: devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>;
> > Guomin Jiang <guomin.jiang@intel.com>; Xiaoyu Lu <xiaoyu1.lu@intel.com>;
> > Jian J Wang <jian.j.wang@intel.com>; Jiewen Yao <jiewen.yao@intel.com>;
> > Ard Biesheuvel <ardb+tianocore@kernel.org>; Jordan Justen
> > <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Bob Feng
> > <bob.c.feng@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Andrew
> > Fish <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>;
> > Michael D Kinney <michael.d.kinney@intel.com>
> > 抄送: Rebecca Cran <rebecca@bsdio.com>
> > 主题: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg:
> > Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
> > CLANGDWARF, delete VS 2008-2013, EBC
> >
> > Update the toolchain definitions:
> >
> > - Delete the CLANG35 and CLANG38 toolchains, and replace CLANG38 with
> >   CLANGDWARF, updating it to support ARM and AARCH64 in addition to X64
> > and IA32.
> >
> > - Remove GCC48 and GCC49.
>
> GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
>
> They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
>

Could we perhaps do

GCC49 -> GCC
GCC5  -> GCCLTO

?

As with CLANG35/38, the GCCx names have become rather obsolete, so I'd
prefer to have a set of more generic names, and a sliding window of
supported versions that can be documented in tools_def.template (and
updated at times)

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
       [not found]   ` <1750C725F99FA0C2.29160@groups.io>
@ 2023-03-29  9:24     ` Guo, Gua
  0 siblings, 0 replies; 68+ messages in thread
From: Guo, Gua @ 2023-03-29  9:24 UTC (permalink / raw)
  To: devel@edk2.groups.io, Guo, Gua, rebecca@bsdio.com,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Gao, Liming, Andrew Fish, Leif Lindholm,
	Kinney, Michael D


[-- Attachment #1.1: Type: text/plain, Size: 40828 bytes --]

And I also try to pick the patch to my local.
Look like the patch encounter the failure.

Have any verify step on your side, maybe we can align it.

edksetup Rebuild.bat
py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t CLANGDWARF


Thanks,
Gua Guo
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Guo, Gua
Sent: Wednesday, March 29, 2023 11:47 AM
To: devel@edk2.groups.io; rebecca@bsdio.com; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Andrew Fish <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38


@rebecca@bsdio.com<mailto:rebecca@bsdio.com>



On this part, whether is better to change it from "objcopy" to "llvm-objcopy"



Windows path: C:\Program Files (x86)\llvm-objcopy.exe

Linux path: /usr/bin/llvm-objcopy

[cid:image001.png@01D96263.52CA3C10]





Thanks,

Gua

-----Original Message-----
From: devel@edk2.groups.io<mailto:devel@edk2.groups.io> <devel@edk2.groups.io<mailto:devel@edk2.groups.io>> On Behalf Of Rebecca Cran
Sent: Wednesday, March 29, 2023 1:31 AM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Oliver Smith-Denny <osd@smith-denny.com<mailto:osd@smith-denny.com>>; Jiang, Guomin <guomin.jiang@intel.com<mailto:guomin.jiang@intel.com>>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com<mailto:xiaoyu1.lu@intel.com>>; Wang, Jian J <jian.j.wang@intel.com<mailto:jian.j.wang@intel.com>>; Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Ard Biesheuvel <ardb+tianocore@kernel.org<mailto:ardb+tianocore@kernel.org>>; Justen, Jordan L <jordan.l.justen@intel.com<mailto:jordan.l.justen@intel.com>>; Gerd Hoffmann <kraxel@redhat.com<mailto:kraxel@redhat.com>>; Feng, Bob C <bob.c.feng@intel.com<mailto:bob.c.feng@intel.com>>; Gao, Liming <gaoliming@byosoft.com.cn<mailto:gaoliming@byosoft.com.cn>>; Andrew Fish <afish@apple.com<mailto:afish@apple.com>>; Leif Lindholm <quic_llindhol@quicinc.com<mailto:quic_llindhol@quicinc.com>>; Kinney, Michael D <michael.d.kinney@intel.com<mailto:michael.d.kinney@intel.com>>
Cc: Rebecca Cran <rebecca@bsdio.com<mailto:rebecca@bsdio.com>>
Subject: [edk2-devel] [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38



Update the CLANGDWARF toolchain definition with the settings from CLANG38, and delete the CLANG35 and CLANG38 toolchains.



The CLANG35 and CLANG38 toolchains were added for compatibility with ARM's proprietary clang-based toolchain. Things have since moved on, and with the latest clang version being 16.0.0, versions 3.5 and 3.9 are obsolete and can be removed.



Signed-off-by: Rebecca Cran <rebecca@bsdio.com<mailto:rebecca@bsdio.com>>

---

BaseTools/Conf/tools_def.template | 453 ++++++++------------

1 file changed, 171 insertions(+), 282 deletions(-)



diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template

index 2f0b804acef3..3abd22615533 100755

--- a/BaseTools/Conf/tools_def.template

+++ b/BaseTools/Conf/tools_def.template

@@ -273,32 +273,21 @@ DEFINE DTC_BIN                 = ENV(DTC_PREFIX)dtc

#                             Required to build platforms or ACPI tables:

#                               Intel(r) ACPI Compiler from

#                               https://acpica.org/downloads

-#

-#   CLANG35     -Linux,Windows-  Requires:

-#                             Clang v3.5 or later, and GNU binutils targeting aarch64-linux-gnu or arm-linux-gnueabi

-#                        Optional:

-#                             Required to build platforms or ACPI tables:

-#                               Intel(r) ACPI Compiler from

-#                               https://acpica.org/downloads

-#   CLANG38  -Linux-  Requires:

-#                             Clang v3.8, LLVMgold plugin and GNU binutils 2.26 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi

-#                             Clang v3.9 or later, LLVMgold plugin and GNU binutils 2.28 targeting x86_64-linux-gnu, aarch64-linux-gnu or arm-linux-gnueabi

+#   CLANGDWARF  -Linux-  Requires:

+#                             Clang 9 or above, and GNU binutils targeting x86_64-linux-gnu, aaarch64-linux-gnu or arm-linux-gnuaebi

#                        Optional:

#                             Required to build platforms or ACPI tables:

#                               Intel(r) ACPI Compiler from

#                               https://acpica.org/downloads

+#                             Required to compile nasm source:

+#                               nasm compiler from

+#                               NASM -- https://nasm.us

#   CLANGPDB -Linux, Windows, Mac-  Requires:

#                             Clang 9 or above from http://releases.llvm.org/

#                        Optional:

#                             Required to compile nasm source:

#                               nasm compiler from

#                               NASM -- http://www.nasm.us/

-#   CLANGDWARF -Linux, Windows, Mac-  Requires:

-#                             Clang 9 or above from http://releases.llvm.org/

-#                        Optional:

-#                             Required to compile nasm source:

-#                               nasm compiler from

-#                               NASM -- http://www.nasm.us/

#   VS2008x86   -win64-  Requires:

#                             Microsoft Visual Studio 2008 (x86)

#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830

@@ -2483,187 +2472,187 @@ RELEASE_GCC5_LOONGARCH64_CC_FLAGS       = DEF(GCC5_LOONGARCH64_CC_FLAGS) -Wno-un

#  PE/COFF binaries using LLVM/Clang with Link Time Optimization enabled  #  ####################################################################################

-*_CLANG38_*_*_FAMILY                = GCC

-*_CLANG38_*_MAKE_PATH               = make

-*_CLANG38_*_*_DLL                   = ENV(CLANG38_DLL)

-*_CLANG38_*_ASL_PATH                = DEF(UNIX_IASL_BIN)

+*_CLANGDWARF_*_*_FAMILY                = GCC

+*_CLANGDWARF_*_MAKE_PATH               = make

+*_CLANGDWARF_*_*_DLL                   = ENV(CLANGDWARF_DLL)

+*_CLANGDWARF_*_ASL_PATH                = DEF(UNIX_IASL_BIN)



-*_CLANG38_*_APP_FLAGS               =

-*_CLANG38_*_ASL_FLAGS               = DEF(IASL_FLAGS)

-*_CLANG38_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)

-*_CLANG38_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)

-DEFINE CLANG38_IA32_PREFIX          = ENV(CLANG38_BIN)

-DEFINE CLANG38_X64_PREFIX           = ENV(CLANG38_BIN)

+*_CLANGDWARF_*_APP_FLAGS               =

+*_CLANGDWARF_*_ASL_FLAGS               = DEF(IASL_FLAGS)

+*_CLANGDWARF_*_ASL_OUTFLAGS            = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_*_DEPS_FLAGS              = DEF(GCC_DEPS_FLAGS)

+DEFINE CLANGDWARF_IA32_PREFIX          = ENV(CLANGDWARF_BIN)

+DEFINE CLANGDWARF_X64_PREFIX           = ENV(CLANGDWARF_BIN)



-DEFINE CLANG38_IA32_TARGET          = -target i686-pc-linux-gnu

-DEFINE CLANG38_X64_TARGET           = -target x86_64-pc-linux-gnu

+DEFINE CLANGDWARF_IA32_TARGET          = -target i686-pc-linux-gnu

+DEFINE CLANGDWARF_X64_TARGET           = -target x86_64-pc-linux-gnu



-DEFINE CLANG38_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

-DEFINE CLANG38_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference

+DEFINE CLANGDWARF_WARNING_OVERRIDES    = -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unused-const-variable -Wno-varargs -Wno-unknown-warning-option -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-unaligned-access

+DEFINE CLANGDWARF_ALL_CC_FLAGS         = DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector -mms-bitfields -Wno-address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -msoft-float -mno-implicit-float  -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -funsigned-char -fno-ms-extensions -Wno-null-dereference



 ###########################

-# CLANG38 IA32 definitions

+# CLANGDWARF IA32 definitions

###########################

-*_CLANG38_IA32_OBJCOPY_PATH         = objcopy

-*_CLANG38_IA32_CC_PATH              = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_SLINK_PATH           = DEF(CLANG38_IA32_PREFIX)llvm-ar

-*_CLANG38_IA32_DLINK_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLDLINK_PATH        = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASM_PATH             = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_PP_PATH              = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_VFRPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLCC_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_ASLPP_PATH           = DEF(CLANG38_IA32_PREFIX)clang

-*_CLANG38_IA32_RC_PATH              = objcopy

-

-*_CLANG38_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386

-*_CLANG38_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

-*_CLANG38_IA32_OBJCOPY_FLAGS        =

-*_CLANG38_IA32_NASM_FLAGS           = -f elf32

-*_CLANG38_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANG38_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-

-DEBUG_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-DEBUG_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANG38_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-RELEASE_CLANG38_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANG38_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386

-NOOPT_CLANG38_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0

+*_CLANGDWARF_IA32_OBJCOPY_PATH         = objcopy

+*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar

+*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

+*_CLANGDWARF_IA32_RC_PATH              = objcopy

+

+*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386

+*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

+*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =

+*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32

+*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_IA32_TARGET)

+

+DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double

+DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANGDWARF_IA32_TARGET) -malign-double

+RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(GCC5_IA32_DLINK2_FLAGS) -O3

+

+NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANGDWARF_IA32_TARGET) -g -malign-double

+NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat=elf32-i386

+NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(GCC5_IA32_DLINK2_FLAGS) -O0



 ##########################

-# CLANG38 X64 definitions

+# CLANGDWARF X64 definitions

##########################

-*_CLANG38_X64_OBJCOPY_PATH         = objcopy

-*_CLANG38_X64_CC_PATH              = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_SLINK_PATH           = DEF(CLANG38_X64_PREFIX)llvm-ar

-*_CLANG38_X64_DLINK_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLDLINK_PATH        = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASM_PATH             = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_PP_PATH              = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_VFRPP_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLCC_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_ASLPP_PATH           = DEF(CLANG38_X64_PREFIX)clang

-*_CLANG38_X64_RC_PATH              = objcopy

-

-*_CLANG38_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64

-*_CLANG38_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

-*_CLANG38_X64_OBJCOPY_FLAGS        =

-*_CLANG38_X64_NASM_FLAGS           = -f elf64

-*_CLANG38_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANG38_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

-

-DEBUG_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-DEBUG_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-RELEASE_CLANG38_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)

-RELEASE_CLANG38_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-RELEASE_CLANG38_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

-

-NOOPT_CLANG38_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANG38_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

-NOOPT_CLANG38_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0

+*_CLANGDWARF_X64_OBJCOPY_PATH         = objcopy

+*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar

+*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

+*_CLANGDWARF_X64_RC_PATH              = objcopy

+

+*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(GCC5_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64

+*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

+*_CLANGDWARF_X64_OBJCOPY_FLAGS        =

+*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64

+*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)

+

+DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g

+DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O3

+

+RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)

+RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small -fuse-ld=lld

+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

+

+NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g

+NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(GCC5_X64_DLINK2_FLAGS) -O0



 ##################

-# CLANG38 ARM definitions

+# CLANGDWARF ARM definitions

##################

-DEFINE CLANG38_ARM_TARGET        = -target arm-linux-gnueabi

-DEFINE CLANG38_ARM_CC_FLAGS      = DEF(GCC_ARM_CC_FLAGS) DEF(CLANG38_ARM_TARGET) DEF(CLANG38_WARNING_OVERRIDES) -mno-movt

-DEFINE CLANG38_ARM_DLINK_FLAGS   = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

-

-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)

-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_ARM_APP_FLAGS          =

-*_CLANG38_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)

-*_CLANG38_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)

-*_CLANG38_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_ARM_CC_PATH            = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASM_PATH           = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_PP_PATH            = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_VFRPP_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLCC_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLPP_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_DLINK_PATH         = ENV(CLANG38_BIN)clang

-*_CLANG38_ARM_ASLDLINK_PATH      = ENV(CLANG38_BIN)clang

-

-*_CLANG38_ARM_SLINK_PATH         = ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_ARM_RC_PATH            = ENV(CLANG38_ARM_PREFIX)objcopy

-

-*_CLANG38_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_ARM_ASLDLINK_FLAGS     = DEF(CLANG38_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

-*_CLANG38_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

-*_CLANG38_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220

-*_CLANG38_ARM_PLATFORM_FLAGS     = -march=armv7-a

-*_CLANG38_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)

-*_CLANG38_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_ARM_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_ARM_TARGET)

-*_CLANG38_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

-  DEBUG_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

-  NOOPT_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

-  NOOPT_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS)

-RELEASE_CLANG38_ARM_CC_FLAGS     = DEF(CLANG38_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

-RELEASE_CLANG38_ARM_DLINK_FLAGS  = DEF(CLANG38_ARM_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

+DEFINE CLANGDWARF_ARM_TARGET        = -target arm-linux-gnueabi

+DEFINE CLANGDWARF_ARM_CC_FLAGS      = $(PLATFORM_FLAGS) DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -fomit-frame-pointer -Wno-address -mthumb -fno-pic -fno-pie DEF(CLANGDWARF_ARM_TARGET) DEF(CLANGDWARF_WARNING_OVERRIDES) -mno-movt

+DEFINE CLANGDWARF_ARM_DLINK_FLAGS   = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_DLINK_FLAGS)

+

+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_ARM_APP_FLAGS          =

+*_CLANGDWARF_ARM_ASL_FLAGS          = DEF(IASL_FLAGS)

+*_CLANGDWARF_ARM_ASL_OUTFLAGS       = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_ARM_DTCPP_FLAGS        = DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_ARM_CC_PATH            = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASM_PATH           = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_PP_PATH            = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_VFRPP_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLCC_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLPP_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_DLINK_PATH         = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_ARM_ASLDLINK_PATH      = ENV(CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_ARM_SLINK_PATH         = ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_ARM_RC_PATH            = ENV(CLANGDWARF_ARM_PREFIX)objcopy

+

+*_CLANGDWARF_ARM_ASLCC_FLAGS        = DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_ARM_ASLDLINK_FLAGS     = DEF(CLANGDWARF_ARM_TARGET) DEF(GCC_ARM_ASLDLINK_FLAGS)

+*_CLANGDWARF_ARM_ASM_FLAGS          = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_ARM_DLINK2_FLAGS       = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x220

+*_CLANGDWARF_ARM_PLATFORM_FLAGS     = -march=armv7-a

+*_CLANGDWARF_ARM_PP_FLAGS           = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_RC_FLAGS           = DEF(GCC_ARM_RC_FLAGS)

+*_CLANGDWARF_ARM_VFRPP_FLAGS        = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_ARM_ASLPP_FLAGS        = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_ARM_TARGET)

+*_CLANGDWARF_ARM_CC_XIPFLAGS        = DEF(GCC_ARM_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

+  DEBUG_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm -Wl,-plugin-opt=-pass-through=-llto-arm

+  NOOPT_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -O0

+  NOOPT_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS)

+RELEASE_CLANGDWARF_ARM_CC_FLAGS     = DEF(CLANGDWARF_ARM_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

+RELEASE_CLANGDWARF_ARM_DLINK_FLAGS  = DEF(CLANGDWARF_ARM_DLINK_FLAGS)

+-flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-arm

+-Wl,-plugin-opt=-pass-through=-llto-arm



 ##################

-# CLANG38 AARCH64 definitions

+# CLANGDWARF AARCH64 definitions

##################

-DEFINE CLANG38_AARCH64_TARGET    = -target aarch64-linux-gnu

-DEFINE CLANG38_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS) DEF(CLANG38_AARCH64_TARGET) -mcmodel=small DEF(CLANG38_WARNING_OVERRIDES) -DEFINE CLANG38_AARCH64_DLINK_FLAGS  = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

-

-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)

-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)

-*_CLANG38_AARCH64_APP_FLAGS      =

-*_CLANG38_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)

-*_CLANG38_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)

-*_CLANG38_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)

-

-*_CLANG38_AARCH64_CC_PATH        = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASM_PATH       = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_PP_PATH        = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_VFRPP_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLCC_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLPP_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_DLINK_PATH     = ENV(CLANG38_BIN)clang

-*_CLANG38_AARCH64_ASLDLINK_PATH  = ENV(CLANG38_BIN)clang

-

-*_CLANG38_AARCH64_SLINK_PATH     = ENV(CLANG38_BIN)llvm-ar

-*_CLANG38_AARCH64_RC_PATH        = ENV(CLANG38_AARCH64_PREFIX)objcopy

-

-*_CLANG38_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto

-*_CLANG38_AARCH64_ASLDLINK_FLAGS = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

-*_CLANG38_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

-*_CLANG38_AARCH64_DLINK_FLAGS    = DEF(CLANG38_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

-*_CLANG38_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20

-*_CLANG38_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228

-*_CLANG38_AARCH64_PLATFORM_FLAGS =

-*_CLANG38_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)

-*_CLANG38_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_AARCH64_TARGET) $(PLATFORM_FLAGS)

-*_CLANG38_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_AARCH64_TARGET)

-*_CLANG38_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)

-

-  DEBUG_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

-  DEBUG_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

-  NOOPT_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0

-  NOOPT_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS)

-RELEASE_CLANG38_AARCH64_CC_FLAGS    = DEF(CLANG38_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

-RELEASE_CLANG38_AARCH64_DLINK_FLAGS = DEF(CLANG38_AARCH64_DLINK_FLAGS) -flto -Wl,-O3 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

+DEFINE CLANGDWARF_AARCH64_TARGET    = -target aarch64-linux-gnu

+DEFINE CLANGDWARF_AARCH64_CC_FLAGS  = DEF(GCC_AARCH64_CC_FLAGS)

+DEF(CLANGDWARF_AARCH64_TARGET) -mcmodel=small

+DEF(CLANGDWARF_WARNING_OVERRIDES) DEFINE CLANGDWARF_AARCH64_DLINK_FLAGS

+= DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z

+common-page-size=0x1000

+

+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS)

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS)

+*_CLANGDWARF_AARCH64_APP_FLAGS      =

+*_CLANGDWARF_AARCH64_ASL_FLAGS      = DEF(IASL_FLAGS)

+*_CLANGDWARF_AARCH64_ASL_OUTFLAGS   = DEF(IASL_OUTFLAGS)

+*_CLANGDWARF_AARCH64_DTCPP_FLAGS    = DEF(GCC_DTCPP_FLAGS)

+

+*_CLANGDWARF_AARCH64_CC_PATH        = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASM_PATH       = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_PP_PATH        = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_VFRPP_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLCC_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLPP_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_DLINK_PATH     = ENV(CLANGDWARF_BIN)clang

+*_CLANGDWARF_AARCH64_ASLDLINK_PATH  = ENV(CLANGDWARF_BIN)clang

+

+*_CLANGDWARF_AARCH64_SLINK_PATH     = ENV(CLANGDWARF_BIN)llvm-ar

+*_CLANGDWARF_AARCH64_RC_PATH        = ENV(CLANGDWARF_AARCH64_PREFIX)objcopy

+

+*_CLANGDWARF_AARCH64_ASLCC_FLAGS    = DEF(GCC_ASLCC_FLAGS) -fno-lto

+*_CLANGDWARF_AARCH64_ASLDLINK_FLAGS = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_ASLDLINK_FLAGS)

+*_CLANGDWARF_AARCH64_ASM_FLAGS      = DEF(GCC_ASM_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS) -Qunused-arguments

+*_CLANGDWARF_AARCH64_DLINK_FLAGS    = DEF(CLANGDWARF_AARCH64_TARGET) DEF(GCC_AARCH64_DLINK_FLAGS) -z common-page-size=0x1000

+*_CLANGDWARF_AARCH64_DLINK_XIPFLAGS = -z common-page-size=0x20

+*_CLANGDWARF_AARCH64_DLINK2_FLAGS   = DEF(GCC_DLINK2_FLAGS_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0x228

+*_CLANGDWARF_AARCH64_PLATFORM_FLAGS =

+*_CLANGDWARF_AARCH64_PP_FLAGS       = DEF(GCC_PP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_AARCH64_RC_FLAGS       = DEF(GCC_AARCH64_RC_FLAGS)

+*_CLANGDWARF_AARCH64_VFRPP_FLAGS    = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET) $(PLATFORM_FLAGS)

+*_CLANGDWARF_AARCH64_ASLPP_FLAGS    = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_AARCH64_TARGET)

+*_CLANGDWARF_AARCH64_CC_XIPFLAGS    = DEF(GCC_AARCH64_CC_XIPFLAGS)

+

+  DEBUG_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O1

+  DEBUG_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O1 -L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64 -Wl,-plugin-opt=-pass-through=-llto-aarch64

+  NOOPT_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -O0

+  NOOPT_CLANGDWARF_AARCH64_DLINK_FLAGS = DEF(CLANGDWARF_AARCH64_DLINK_FLAGS)

+RELEASE_CLANGDWARF_AARCH64_CC_FLAGS    = DEF(CLANGDWARF_AARCH64_CC_FLAGS) $(PLATFORM_FLAGS) -flto -O3

+RELEASE_CLANGDWARF_AARCH64_DLINK_FLAGS =

+DEF(CLANGDWARF_AARCH64_DLINK_FLAGS) -flto -Wl,-O3

+-L$(WORKSPACE)/ArmPkg/Library/GccLto -llto-aarch64

+-Wl,-plugin-opt=-pass-through=-llto-aarch64



 ####################################################################################

#

@@ -2763,106 +2752,6 @@ NOOPT_CLANGPDB_X64_DLINK_FLAGS      = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE

NOOPT_CLANGPDB_X64_DLINK2_FLAGS     =

NOOPT_CLANGPDB_X64_GENFW_FLAGS      = --keepexceptiontable



-####################################################################################

-#

-# CLANGDWARF - This configuration is used to compile under Windows/Linux/Mac to produce -#  ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled -# -####################################################################################

-*_CLANGDWARF_*_*_FAMILY             = GCC

-*_CLANGDWARF_*_*_BUILDRULEFAMILY    = CLANGGCC

-*_CLANGDWARF_*_MAKE_PATH            = ENV(CLANG_HOST_BIN)make

-*_CLANGDWARF_*_*_DLL                = ENV(CLANGDWARF_DLL)

-*_CLANGDWARF_*_ASL_PATH             = DEF(UNIX_IASL_BIN)

-

-*_CLANGDWARF_*_APP_FLAGS            =

-*_CLANGDWARF_*_ASL_FLAGS            = DEF(IASL_FLAGS)

-*_CLANGDWARF_*_ASL_OUTFLAGS         = DEF(IASL_OUTFLAGS)

-

-DEFINE CLANGDWARF_IA32_PREFIX       = ENV(CLANG_BIN)

-DEFINE CLANGDWARF_X64_PREFIX        = ENV(CLANG_BIN)

-

-# LLVM/CLANG doesn't support -n link option. So, it can't share the same IA32_X64_DLINK_COMMON flag.

-# LLVM/CLANG doesn't support common page size. So, it can't share the same GccBase.lds script.

-DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON   = -nostdlib -Wl,-q,--gc-sections -z max-page-size=0x40

-DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON     = -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds

-DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--defsym=PECOFF_HEADER_SIZE=0 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON) -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable

-DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_COMMON) -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT) -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive

-DEFINE CLANGDWARF_IA32_DLINK2_FLAGS       = -Wl,--defsym=PECOFF_HEADER_SIZE=0x220 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)

-DEFINE CLANGDWARF_X64_DLINK2_FLAGS        = -Wl,--defsym=PECOFF_HEADER_SIZE=0x228 DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)

-

-###########################

-# CLANGDWARF IA32 definitions

-###########################

-*_CLANGDWARF_IA32_CC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_SLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)llvm-ar

-*_CLANGDWARF_IA32_DLINK_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLDLINK_PATH        = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASM_PATH             = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_PP_PATH              = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_VFRPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLCC_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_ASLPP_PATH           = DEF(CLANGDWARF_IA32_PREFIX)clang

-*_CLANGDWARF_IA32_RC_PATH              = DEF(CLANGDWARF_IA32_PREFIX)llvm-rc

-

-*_CLANGDWARF_IA32_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m32 -fno-lto DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_i386 -fuse-ld=lld

-*_CLANGDWARF_IA32_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m32 -march=i386 DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_RC_FLAGS             = DEF(GCC_IA32_RC_FLAGS)

-*_CLANGDWARF_IA32_OBJCOPY_FLAGS        =

-*_CLANGDWARF_IA32_NASM_FLAGS           = -f elf32

-*_CLANGDWARF_IA32_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-*_CLANGDWARF_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_IA32_TARGET)

-

-DEBUG_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-DEBUG_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-RELEASE_CLANGDWARF_IA32_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586 DEF(CLANG38_IA32_TARGET) -malign-double

-RELEASE_CLANGDWARF_IA32_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS   = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-NOOPT_CLANGDWARF_IA32_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m32 -O0 -march=i586 DEF(CLANG38_IA32_TARGET) -g -malign-double

-NOOPT_CLANGDWARF_IA32_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_i386 -Wl,--oformat,elf32-i386

-NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -fuse-ld=lld

-

-##########################

-# CLANGDWARF X64 definitions

-##########################

-*_CLANGDWARF_X64_CC_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_SLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)llvm-ar

-*_CLANGDWARF_X64_DLINK_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLDLINK_PATH        = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASM_PATH             = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_PP_PATH              = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_VFRPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLCC_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_ASLPP_PATH           = DEF(CLANGDWARF_X64_PREFIX)clang

-*_CLANGDWARF_X64_RC_PATH              = DEF(CLANGDWARF_X64_PREFIX)llvm-rc

-

-*_CLANGDWARF_X64_ASLCC_FLAGS          = DEF(GCC_ASLCC_FLAGS) -m64 -fno-lto DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLDLINK_FLAGS       = DEF(CLANGDWARF_IA32_X64_ASLDLINK_FLAGS) -Wl,-m,elf_x86_64 -fuse-ld=lld

-*_CLANGDWARF_X64_ASM_FLAGS            = DEF(GCC5_ASM_FLAGS) -m64 DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_RC_FLAGS             = DEF(GCC_X64_RC_FLAGS)

-*_CLANGDWARF_X64_OBJCOPY_FLAGS        =

-*_CLANGDWARF_X64_NASM_FLAGS           = -f elf64

-*_CLANGDWARF_X64_PP_FLAGS             = DEF(GCC_PP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANG38_X64_TARGET)

-*_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANG38_X64_TARGET)

-

-DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET) -g

-DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANG38_X64_TARGET)

-RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld

-

-NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANG38_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANG38_X64_TARGET) -g

-NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs

-NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld

-

#

#

# XCODE5 support

--

2.34.1














[-- Attachment #1.2: Type: text/html, Size: 83666 bytes --]

[-- Attachment #2: image001.png --]
[-- Type: image/png, Size: 53798 bytes --]

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29  7:39   ` Ard Biesheuvel
@ 2023-03-29 10:20     ` Rebecca Cran
  2023-03-29 11:28     ` Leif Lindholm
  1 sibling, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-03-29 10:20 UTC (permalink / raw)
  To: Ard Biesheuvel, devel, gaoliming
  Cc: Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Andrew Fish, Leif Lindholm, Michael D Kinney

On 3/29/23 1:39 AM, Ard Biesheuvel wrote:
> Could we perhaps do
>
> GCC49 -> GCC
> GCC5  -> GCCLTO
>
> ?
>
> As with CLANG35/38, the GCCx names have become rather obsolete, so I'd
> prefer to have a set of more generic names, and a sliding window of
> supported versions that can be documented in tools_def.template (and
> updated at times)

We need a minimum of GCC 6 to run CI because 
UnitTestFrameworkPkg/Library/GoogleTestLib uses nullptr that GCC 5 
doesn't support, so the GCC5 name is wrong anyway.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 18:12     ` [edk2-devel] " Ard Biesheuvel
@ 2023-03-29 10:21       ` Rebecca Cran
  2023-03-29 10:30         ` Ard Biesheuvel
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-03-29 10:21 UTC (permalink / raw)
  To: Ard Biesheuvel, devel
  Cc: Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On 3/28/23 12:12 PM, Ard Biesheuvel wrote:
> What kind of errors are you seeing after adding -Wl,--no-pie,--no-relax ?

I realized I didn't really try it after I thought you had said it was 
causing corruption.

After adding those flags I was able to verify (via "strace 
--trace=process -f") that lld is indeed getting invoked, and that the 
resulting binaries run fine using qemu-system-arm and qemu-system-aarch64.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29 10:21       ` Rebecca Cran
@ 2023-03-29 10:30         ` Ard Biesheuvel
  0 siblings, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-29 10:30 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Wed, 29 Mar 2023 at 12:22, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> On 3/28/23 12:12 PM, Ard Biesheuvel wrote:
> > What kind of errors are you seeing after adding -Wl,--no-pie,--no-relax ?
>
> I realized I didn't really try it after I thought you had said it was
> causing corruption.
>
> After adding those flags I was able to verify (via "strace
> --trace=process -f") that lld is indeed getting invoked, and that the
> resulting binaries run fine using qemu-system-arm and qemu-system-aarch64.
>

Excellent, so let's go with that.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29  7:39   ` Ard Biesheuvel
  2023-03-29 10:20     ` Rebecca Cran
@ 2023-03-29 11:28     ` Leif Lindholm
  2023-03-29 11:53       ` Ard Biesheuvel
  1 sibling, 1 reply; 68+ messages in thread
From: Leif Lindholm @ 2023-03-29 11:28 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: devel, gaoliming, rebecca, Oliver Smith-Denny, Guomin Jiang,
	Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Michael D Kinney

On Wed, Mar 29, 2023 at 09:39:56 +0200, Ard Biesheuvel wrote:
> > > - Remove GCC48 and GCC49.
> >
> > GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
> >
> > They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
> >
> 
> Could we perhaps do
> 
> GCC49 -> GCC
> GCC5  -> GCCLTO

Might I suggest the inverse?

GCC49 -> GCCNOLTO
GCC5  -> GCC

I feel disabling LTO should be seen as the nonstandard approach.

Regardless, we (including me) *should* have changed those names as
soon as we realised we didn't need a GCC51, and the misleading naming
still frequently causes confusion. So I don't think keeping the
current names should be considered an option.

> ?
> 
> As with CLANG35/38, the GCCx names have become rather obsolete, so I'd
> prefer to have a set of more generic names, and a sliding window of
> supported versions that can be documented in tools_def.template (and
> updated at times)

Agreed. And *if* we find a need in the future to add a new archived
range, we can add that then.

/
    Leif

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29 11:28     ` Leif Lindholm
@ 2023-03-29 11:53       ` Ard Biesheuvel
  0 siblings, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-29 11:53 UTC (permalink / raw)
  To: devel, quic_llindhol
  Cc: gaoliming, rebecca, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Michael D Kinney

On Wed, 29 Mar 2023 at 13:28, Leif Lindholm <quic_llindhol@quicinc.com> wrote:
>
> On Wed, Mar 29, 2023 at 09:39:56 +0200, Ard Biesheuvel wrote:
> > > > - Remove GCC48 and GCC49.
> > >
> > > GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
> > >
> > > They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
> > >
> >
> > Could we perhaps do
> >
> > GCC49 -> GCC
> > GCC5  -> GCCLTO
>
> Might I suggest the inverse?
>
> GCC49 -> GCCNOLTO
> GCC5  -> GCC
>
> I feel disabling LTO should be seen as the nonstandard approach.
>

That works for me as well.

> Regardless, we (including me) *should* have changed those names as
> soon as we realised we didn't need a GCC51, and the misleading naming
> still frequently causes confusion. So I don't think keeping the
> current names should be considered an option.
>

Agreed.

> > ?
> >
> > As with CLANG35/38, the GCCx names have become rather obsolete, so I'd
> > prefer to have a set of more generic names, and a sliding window of
> > supported versions that can be documented in tools_def.template (and
> > updated at times)
>
> Agreed. And *if* we find a need in the future to add a new archived
> range, we can add that then.
>

Of course. But with the stable tags, I doubt whether this will be necessary.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
                   ` (14 preceding siblings ...)
  2023-03-29  1:19 ` 回复: " gaoliming
@ 2023-03-29 12:20 ` Ard Biesheuvel
  15 siblings, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-03-29 12:20 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Gerd Hoffmann,
	Bob Feng, Liming Gao, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Tue, 28 Mar 2023 at 19:31, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> Update the toolchain definitions:
>
> - Delete the CLANG35 and CLANG38 toolchains, and replace CLANG38 with
>   CLANGDWARF, updating it to support ARM and AARCH64 in addition to X64
> and IA32.
>
> - Remove GCC48 and GCC49.
>
> - Remove VS2008, VS2010, VS2012 and VS2013.
>
> - Remove EBC compiler definitions. Full removal of EBC support from the
>   various packages etc. will be done in a follow-up patch series.
>
> - Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS definitions.
>
> - Remove unused CYGWIN_ definitions.
>
> - Rename GCC5 to GCC.
>
> Personal GitHub PR: https://github.com/tianocore/edk2/pull/4158
> GitHub branch: https://github.com/bcran/edk2/tree/clangdwarf
>
> Note: CI will fail due to changes that are needed in the edk2-basetools
> and containers repositories.
>
> Changes from v1 to v2:
>
> - Added a commit to delete GCC48 and GCC49, rename GCC5 to GCC and
>   update the flags for other toolchains to work with the new GCC
>   definitions.
>
> - Bumped VERSION from 2.00 to 3.00 to inform users that they should
>   updated their Conf/tools_def.txt.
>
> Rebecca Cran (13):
>   OvmfPkg: Replace static struct initialization with ZeroMem call
>   CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler
>     flags
>   BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38
>   BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions
>   BaseTools: Remove VS2008-VS2013 remnants
>   MdePkg: Remove VS2008-VS2013 remnants
>   edksetup.bat: Remove VS2008-VS2013 remnants
>   BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs
>   BaseTools: Remove EBC (EFI Byte Code) compiler definitions
>   OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF
>   Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC
>   BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template
>   Bump tools_def.txt VERSION to 3.0
>

I've cherry-picked the two OvmfPkg/ patches from this series, so no
need to resend those.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-03-29  1:19 ` 回复: " gaoliming
  2023-03-29  7:39   ` Ard Biesheuvel
@ 2023-04-02 15:41   ` Rebecca Cran
  2023-04-02 16:36     ` Ard Biesheuvel
  2023-04-02 18:38     ` Pedro Falcato
  1 sibling, 2 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-04-02 15:41 UTC (permalink / raw)
  To: gaoliming, devel, 'Oliver Smith-Denny',
	'Guomin Jiang', 'Xiaoyu Lu',
	'Jian J Wang', 'Jiewen Yao',
	'Ard Biesheuvel', 'Jordan Justen',
	'Gerd Hoffmann', 'Bob Feng',
	'Andrew Fish', 'Leif Lindholm',
	'Michael D Kinney'

On 3/28/23 7:19 PM, gaoliming wrote:

> GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
>
> They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.

Is anything still _using_ GCC49 though? Since I strongly suspect nobody 
is using gcc 4.9, I'll rename it to GCCNOLTO.

When I try and build OVMF with it, I get the following error:


/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
/home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c: 
In function ‘InternalSetPageState’:
/home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:166:37: 
error: ‘Cmd’ may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
   166 |     Info->Entry[i].CurrentPage      = 0;
       |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:32:10: 
note: ‘Cmd’ was declared here
    32 |   UINTN  Cmd;
       |          ^~~
rm -f 
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
"ar" cr 
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib 
@/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/object_files.lst
cc1: all warnings being treated as errors
make: *** [GNUmakefile:304: 
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib/OUTPUT/X64/SnpPageStateChangeInternal.obj] 
Error 1


build.py...
  : error 7000: Failed to execute command
     make tbuild 
[/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib]


build.py...
  : error F002: Failed to build module
  /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf [X64, GCC49, RELEASE]

- Failed -
Build end time: 09:38:34, Apr.02 2023
Build total time: 00:00:14


-- 

Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 15:41   ` 回复: " Rebecca Cran
@ 2023-04-02 16:36     ` Ard Biesheuvel
  2023-04-02 16:42       ` Michael D Kinney
  2023-04-02 18:38     ` Pedro Falcato
  1 sibling, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-02 16:36 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: gaoliming, devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Sun, 2 Apr 2023 at 17:41, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> On 3/28/23 7:19 PM, gaoliming wrote:
>
> > GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
> >
> > They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
>
> Is anything still _using_ GCC49 though? Since I strongly suspect nobody
> is using gcc 4.9, I'll rename it to GCCNOLTO.
>
> When I try and build OVMF with it, I get the following error:
>
>
> /UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:
> In function ‘InternalSetPageState’:
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:166:37:
> error: ‘Cmd’ may be used uninitialized in this function
> [-Werror=maybe-uninitialized]
>    166 |     Info->Entry[i].CurrentPage      = 0;
>        |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:32:10:
> note: ‘Cmd’ was declared here
>     32 |   UINTN  Cmd;
>        |          ^~~
> rm -f
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> "ar" cr
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> @/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/object_files.lst
> cc1: all warnings being treated as errors
> make: *** [GNUmakefile:304:
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib/OUTPUT/X64/SnpPageStateChangeInternal.obj]
> Error 1
>
>
> build.py...
>   : error 7000: Failed to execute command
>      make tbuild
> [/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib]
>
>
> build.py...
>   : error F002: Failed to build module
>   /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf [X64, GCC49, RELEASE]
>
> - Failed -
> Build end time: 09:38:34, Apr.02 2023
> Build total time: 00:00:14
>

That warning seems reasonable to me: Cmd may be uninitialized, and
only under LTO do we get sufficient optimization and inlining for the
code generator to be able to infer that the 'default' case is
unreachable.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 16:36     ` Ard Biesheuvel
@ 2023-04-02 16:42       ` Michael D Kinney
  0 siblings, 0 replies; 68+ messages in thread
From: Michael D Kinney @ 2023-04-02 16:42 UTC (permalink / raw)
  To: devel@edk2.groups.io, ardb@kernel.org, Rebecca Cran
  Cc: Gao, Liming, Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1,
	Wang, Jian J, Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L,
	Gerd Hoffmann, Feng, Bob C, Andrew Fish, Leif Lindholm,
	Kinney, Michael D

NOOPT builds can be very valuable to find these types of issues.

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard Biesheuvel
> Sent: Sunday, April 2, 2023 9:37 AM
> To: Rebecca Cran <rebecca@bsdio.com>
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; devel@edk2.groups.io; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd
> Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Leif Lindholm
> <quic_llindhol@quicinc.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> On Sun, 2 Apr 2023 at 17:41, Rebecca Cran <rebecca@bsdio.com> wrote:
> >
> > On 3/28/23 7:19 PM, gaoliming wrote:
> >
> > > GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
> > >
> > > They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
> >
> > Is anything still _using_ GCC49 though? Since I strongly suspect nobody
> > is using gcc 4.9, I'll rename it to GCCNOLTO.
> >
> > When I try and build OVMF with it, I get the following error:
> >
> >
> > /UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> > /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:
> > In function ‘InternalSetPageState’:
> > /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:166:37:
> > error: ‘Cmd’ may be used uninitialized in this function
> > [-Werror=maybe-uninitialized]
> >    166 |     Info->Entry[i].CurrentPage      = 0;
> >        |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
> > /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:32:10:
> > note: ‘Cmd’ was declared here
> >     32 |   UINTN  Cmd;
> >        |          ^~~
> > rm -f
> > /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> > "ar" cr
> > /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> >
> @/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/object_files.ls
> t
> > cc1: all warnings being treated as errors
> > make: *** [GNUmakefile:304:
> >
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib/OUTPUT/
> X64/SnpPageStateChangeInternal.obj]
> > Error 1
> >
> >
> > build.py...
> >   : error 7000: Failed to execute command
> >      make tbuild
> > [/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib]
> >
> >
> > build.py...
> >   : error F002: Failed to build module
> >   /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib.inf [X64, GCC49, RELEASE]
> >
> > - Failed -
> > Build end time: 09:38:34, Apr.02 2023
> > Build total time: 00:00:14
> >
> 
> That warning seems reasonable to me: Cmd may be uninitialized, and
> only under LTO do we get sufficient optimization and inlining for the
> code generator to be able to infer that the 'default' case is
> unreachable.
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 15:41   ` 回复: " Rebecca Cran
  2023-04-02 16:36     ` Ard Biesheuvel
@ 2023-04-02 18:38     ` Pedro Falcato
  2023-04-02 21:50       ` Rebecca Cran
  1 sibling, 1 reply; 68+ messages in thread
From: Pedro Falcato @ 2023-04-02 18:38 UTC (permalink / raw)
  To: devel, rebecca
  Cc: gaoliming, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Sun, Apr 2, 2023 at 4:41 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>
> On 3/28/23 7:19 PM, gaoliming wrote:
>
> > GCC49 is one GCC tool chain without LTO enable option. GCC5 is another GCC tool chain with LTO enable option.
> >
> > They have the different usage. I suggest to keep GCC49 and GCC5 both, and also keep their name as is.
>
> Is anything still _using_ GCC49 though? Since I strongly suspect nobody
> is using gcc 4.9, I'll rename it to GCCNOLTO.

As expressed off-list on UEFI talkbox, I like GCCNOLTO, but I would
rather keep GCC5 as GCC5, for the next future iteration of "lets bump
a new toolchain because we need feature X".

>
> When I try and build OVMF with it, I get the following error:
>
>
> /UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:
> In function ‘InternalSetPageState’:
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:166:37:
> error: ‘Cmd’ may be used uninitialized in this function
> [-Werror=maybe-uninitialized]
>    166 |     Info->Entry[i].CurrentPage      = 0;
>        |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
> /home/bcran/src/uefi/edk2/OvmfPkg/Library/BaseMemEncryptSevLib/X64/SnpPageStateChangeInternal.c:32:10:
> note: ‘Cmd’ was declared here
>     32 |   UINTN  Cmd;
>        |          ^~~
> rm -f
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> "ar" cr
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/DxeIpIoLib.lib
> @/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib/OUTPUT/object_files.lst
> cc1: all warnings being treated as errors
> make: *** [GNUmakefile:304:
> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_GCC49/X64/OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLib/OUTPUT/X64/SnpPageStateChangeInternal.obj]
> Error 1

This is unsurprising, plenty of NOLTO build breakage. Since no one
seems to use this, could we think about axing this or?

Just seems silly to have an extra toolchain (with extra cognitive
overhead for anyone looking at tools_def) for s/-flto//g

-- 
Pedro

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 18:38     ` Pedro Falcato
@ 2023-04-02 21:50       ` Rebecca Cran
  2023-04-03 11:30         ` Gerd Hoffmann
  2023-04-04  1:31         ` 回复: " gaoliming
  0 siblings, 2 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-04-02 21:50 UTC (permalink / raw)
  To: Pedro Falcato, devel
  Cc: gaoliming, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On 4/2/23 12:38 PM, Pedro Falcato wrote:
> As expressed off-list on UEFI talkbox, I like GCCNOLTO, but I would
> rather keep GCC5 as GCC5, for the next future iteration of "lets bump
> a new toolchain because we need feature X".

Given we've gone from GCC 5 through 12 with no new toolchains, I'd 
prefer to just have GCC.

> This is unsurprising, plenty of NOLTO build breakage. Since no one
> seems to use this, could we think about axing this or?
>
> Just seems silly to have an extra toolchain (with extra cognitive
> overhead for anyone looking at tools_def) for s/-flto//g

Since Liming wants to keep it, let's make all the other changes 
(deleting VS 2008-2013, CLANG35, CLANG38 etc.) and keep GCCNOLTO and GCC 
for now. If nobody fixes the problems with GCCNOLTO, maybe we can 
revisit dropping it in a few months?


-- 

Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 21:50       ` Rebecca Cran
@ 2023-04-03 11:30         ` Gerd Hoffmann
  2023-04-03 11:33           ` Rebecca Cran
  2023-04-04  1:31         ` 回复: " gaoliming
  1 sibling, 1 reply; 68+ messages in thread
From: Gerd Hoffmann @ 2023-04-03 11:30 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Pedro Falcato, devel, gaoliming, Oliver Smith-Denny, Guomin Jiang,
	Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Bob Feng, Andrew Fish, Leif Lindholm, Michael D Kinney

On Sun, Apr 02, 2023 at 03:50:33PM -0600, Rebecca Cran wrote:
> On 4/2/23 12:38 PM, Pedro Falcato wrote:
> > As expressed off-list on UEFI talkbox, I like GCCNOLTO, but I would
> > rather keep GCC5 as GCC5, for the next future iteration of "lets bump
> > a new toolchain because we need feature X".
> 
> Given we've gone from GCC 5 through 12 with no new toolchains, I'd prefer to
> just have GCC.
> 
> > This is unsurprising, plenty of NOLTO build breakage. Since no one
> > seems to use this, could we think about axing this or?
> > 
> > Just seems silly to have an extra toolchain (with extra cognitive
> > overhead for anyone looking at tools_def) for s/-flto//g
> 
> Since Liming wants to keep it, let's make all the other changes (deleting VS
> 2008-2013, CLANG35, CLANG38 etc.) and keep GCCNOLTO and GCC for now. If
> nobody fixes the problems with GCCNOLTO, maybe we can revisit dropping it in
> a few months?

I'm wondering what the point in keeping a known-broken toolchain though.
It is apparently unused when nobody noticed the breakage ...

take care,
  Gerd


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 11:30         ` Gerd Hoffmann
@ 2023-04-03 11:33           ` Rebecca Cran
  2023-04-03 11:39             ` Gerd Hoffmann
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-03 11:33 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Pedro Falcato, devel, gaoliming, Oliver Smith-Denny, Guomin Jiang,
	Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Bob Feng, Andrew Fish, Leif Lindholm, Michael D Kinney

On 4/3/23 5:30 AM, Gerd Hoffmann wrote:
> I'm wondering what the point in keeping a known-broken toolchain though.
> It is apparently unused when nobody noticed the breakage ...

I agree. At this point I want to reach a consensus and get this patch 
series committed, even if that means leaving a known broken toolchain 
around.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 11:33           ` Rebecca Cran
@ 2023-04-03 11:39             ` Gerd Hoffmann
  2023-04-03 11:55               ` Ard Biesheuvel
  0 siblings, 1 reply; 68+ messages in thread
From: Gerd Hoffmann @ 2023-04-03 11:39 UTC (permalink / raw)
  To: devel, rebecca
  Cc: Pedro Falcato, gaoliming, Oliver Smith-Denny, Guomin Jiang,
	Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Bob Feng, Andrew Fish, Leif Lindholm, Michael D Kinney

On Mon, Apr 03, 2023 at 05:33:10AM -0600, Rebecca Cran wrote:
> On 4/3/23 5:30 AM, Gerd Hoffmann wrote:
> > I'm wondering what the point in keeping a known-broken toolchain though.
> > It is apparently unused when nobody noticed the breakage ...
> 
> I agree. At this point I want to reach a consensus and get this patch series
> committed, even if that means leaving a known broken toolchain around.

Sure.  That question was meant more for gaoliming who expressed interest
in keeping it.  gaoliming?

I'd prefer to keep GCC only.  In case we decide to keep both LTO and
non-LTO variants the GCC + GCCNOLTE naming scheme looks fine to me.

take care,
  Gerd


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 11:39             ` Gerd Hoffmann
@ 2023-04-03 11:55               ` Ard Biesheuvel
  2023-04-03 12:15                 ` Leif Lindholm
  0 siblings, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-03 11:55 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: devel, rebecca, Pedro Falcato, gaoliming, Oliver Smith-Denny,
	Guomin Jiang, Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel,
	Jordan Justen, Bob Feng, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Mon, 3 Apr 2023 at 13:39, Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> On Mon, Apr 03, 2023 at 05:33:10AM -0600, Rebecca Cran wrote:
> > On 4/3/23 5:30 AM, Gerd Hoffmann wrote:
> > > I'm wondering what the point in keeping a known-broken toolchain though.
> > > It is apparently unused when nobody noticed the breakage ...
> >
> > I agree. At this point I want to reach a consensus and get this patch series
> > committed, even if that means leaving a known broken toolchain around.
>
> Sure.  That question was meant more for gaoliming who expressed interest
> in keeping it.  gaoliming?
>
> I'd prefer to keep GCC only.  In case we decide to keep both LTO and
> non-LTO variants the GCC + GCCNOLTE naming scheme looks fine to me.
>

I agree that we should either support a toolchain (and have CI
coverage for it) or not, in which case we should just remove it.

However, the issues being reported are specific to SEV-SNP and TDX,
which implies that they are specific to OVMF. And actually, the
reported issue at

OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]

seems to be a valid concern.

So the point I am making is that OVMF gets a lot of attention in the
open source project, but in the wider ecosystem, there are many
platforms relying on this code base that don't incorporate the Coco
components at all, so whether OVMF currently builds with GCC49 is not
100% relevant.

So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
coverage for it in CI, as we occasionally get useful diagnostics out
of it. But I am not going to fight any battles over it - I rarely use
it myself, and so I will not miss it when it's gone.

Liming, are you aware of any users relying on non-LTO GCC codegen for
any reason?

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 11:55               ` Ard Biesheuvel
@ 2023-04-03 12:15                 ` Leif Lindholm
  2023-04-03 12:26                   ` Rebecca Cran
  2023-04-03 13:04                   ` Ard Biesheuvel
  0 siblings, 2 replies; 68+ messages in thread
From: Leif Lindholm @ 2023-04-03 12:15 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Gerd Hoffmann, devel, rebecca, Pedro Falcato, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On Mon, Apr 03, 2023 at 13:55:19 +0200, Ard Biesheuvel wrote:
> I agree that we should either support a toolchain (and have CI
> coverage for it) or not, in which case we should just remove it.
> 
> However, the issues being reported are specific to SEV-SNP and TDX,
> which implies that they are specific to OVMF. And actually, the
> reported issue at
> 
> OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
> error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]
> 
> seems to be a valid concern.
> 
> So the point I am making is that OVMF gets a lot of attention in the
> open source project, but in the wider ecosystem, there are many
> platforms relying on this code base that don't incorporate the Coco
> components at all, so whether OVMF currently builds with GCC49 is not
> 100% relevant.
> 
> So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
> coverage for it in CI, as we occasionally get useful diagnostics out
> of it. But I am not going to fight any battles over it - I rarely use
> it myself, and so I will not miss it when it's gone.

I agree with all aspects of this statement. I would *prefer* to keep
it as a canary - with CI.

/
    Leif

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 12:15                 ` Leif Lindholm
@ 2023-04-03 12:26                   ` Rebecca Cran
  2023-04-03 13:44                     ` Pedro Falcato
  2023-04-03 14:08                     ` Gerd Hoffmann
  2023-04-03 13:04                   ` Ard Biesheuvel
  1 sibling, 2 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-04-03 12:26 UTC (permalink / raw)
  To: Leif Lindholm, Ard Biesheuvel
  Cc: Gerd Hoffmann, devel, Pedro Falcato, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On 4/3/23 6:15 AM, Leif Lindholm wrote:
> On Mon, Apr 03, 2023 at 13:55:19 +0200, Ard Biesheuvel wrote:
>> I agree that we should either support a toolchain (and have CI
>> coverage for it) or not, in which case we should just remove it.
>>
>> However, the issues being reported are specific to SEV-SNP and TDX,
>> which implies that they are specific to OVMF. And actually, the
>> reported issue at
>>
>> OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
>> error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]
>>
>> seems to be a valid concern.
>>
>> So the point I am making is that OVMF gets a lot of attention in the
>> open source project, but in the wider ecosystem, there are many
>> platforms relying on this code base that don't incorporate the Coco
>> components at all, so whether OVMF currently builds with GCC49 is not
>> 100% relevant.
>>
>> So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
>> coverage for it in CI, as we occasionally get useful diagnostics out
>> of it. But I am not going to fight any battles over it - I rarely use
>> it myself, and so I will not miss it when it's gone.
> I agree with all aspects of this statement. I would *prefer* to keep
> it as a canary - with CI.

Given it's catching issues, I'd like to keep it too.

In terms of CI coverage, I'd like to have both gcc 6 and gcc 12 running 
GCC and GCCNOLTO builds: we've already broken gcc 5 compatibility by 
introducing GoogleTest (which uses nullptr), so by doing builds with gcc 
6 we'll be able to know when we break it and update 
tools_def.txt.template with a note that we'll subsequently require gcc 7.

Similarly, we should also add CLANGPDB and CLANGDWARF builds.


I suspect we'll rapidly run into scaling issues though, since GitHub 
Actions has a limit of 20 concurrent jobs on the free plan 
(https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration), 
and in order to keep CI times reasonable we'll probably want many more 
tasks to be running in parallel. There's a beta 'larger runners' feature 
(https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners), 
but I'm wondering if we might want to scale using something like Azure 
or EC2 (https://github.com/machulav/ec2-github-runner) instead, if the 
costs aren't going to be prohibitive?


-- 

Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 12:15                 ` Leif Lindholm
  2023-04-03 12:26                   ` Rebecca Cran
@ 2023-04-03 13:04                   ` Ard Biesheuvel
  2023-04-03 13:27                     ` Michael D Kinney
  1 sibling, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-03 13:04 UTC (permalink / raw)
  To: devel, quic_llindhol
  Cc: Gerd Hoffmann, rebecca, Pedro Falcato, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On Mon, 3 Apr 2023 at 14:15, Leif Lindholm <quic_llindhol@quicinc.com> wrote:
>
> On Mon, Apr 03, 2023 at 13:55:19 +0200, Ard Biesheuvel wrote:
> > I agree that we should either support a toolchain (and have CI
> > coverage for it) or not, in which case we should just remove it.
> >
> > However, the issues being reported are specific to SEV-SNP and TDX,
> > which implies that they are specific to OVMF. And actually, the
> > reported issue at
> >
> > OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
> > error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]
> >
> > seems to be a valid concern.
> >
> > So the point I am making is that OVMF gets a lot of attention in the
> > open source project, but in the wider ecosystem, there are many
> > platforms relying on this code base that don't incorporate the Coco
> > components at all, so whether OVMF currently builds with GCC49 is not
> > 100% relevant.
> >
> > So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
> > coverage for it in CI, as we occasionally get useful diagnostics out
> > of it. But I am not going to fight any battles over it - I rarely use
> > it myself, and so I will not miss it when it's gone.
>
> I agree with all aspects of this statement. I would *prefer* to keep
> it as a canary - with CI.
>

Cheers.

And interestingly, GCC49 appears to spot an issue introduced with commit

commit a7fcab7aa3de338c02e61fd891610b1ec926e6c8
Author: Hua Ma <hua.ma@intel.com>
Date:   Mon Oct 11 11:43:12 2021 +0800

    MdeModulePkg/Core/Dxe: Acquire a lock when iterating gHandleList

where we may end up dereferencing a bogus 'Prot' pointer:

MdeModulePkg/Core/Dxe/Hand/Handle.c:1198:24:
error: ‘Prot’ may be used uninitialized [-Werror=maybe-uninitialized]
 1198 |       *Interface = Prot->Interface;
      |                    ~~~~^~~~~~~~~~~
MdeModulePkg/Core/Dxe/Hand/Handle.c:994:24:
note: ‘Prot’ was declared here
  994 |   PROTOCOL_INTERFACE  *Prot;

So I am going to change my mind, and state that I do care about GCC
non-LTO builds, as we have been introducing bugs into our code that we
could have spotted if anyone had bothered to test with this toolchain
config.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 13:04                   ` Ard Biesheuvel
@ 2023-04-03 13:27                     ` Michael D Kinney
  2023-04-03 13:43                       ` Ard Biesheuvel
  0 siblings, 1 reply; 68+ messages in thread
From: Michael D Kinney @ 2023-04-03 13:27 UTC (permalink / raw)
  To: devel@edk2.groups.io, ardb@kernel.org, quic_llindhol@quicinc.com
  Cc: Gerd Hoffmann, rebecca@bsdio.com, Pedro Falcato, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Feng, Bob C,
	Andrew Fish, Kinney, Michael D

Are the same issue(s) found with GCC5 with -b NOOPT?

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard Biesheuvel
> Sent: Monday, April 3, 2023 6:05 AM
> To: devel@edk2.groups.io; quic_llindhol@quicinc.com
> Cc: Gerd Hoffmann <kraxel@redhat.com>; rebecca@bsdio.com; Pedro Falcato <pedro.falcato@gmail.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1
> <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel
> <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish
> <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> On Mon, 3 Apr 2023 at 14:15, Leif Lindholm <quic_llindhol@quicinc.com> wrote:
> >
> > On Mon, Apr 03, 2023 at 13:55:19 +0200, Ard Biesheuvel wrote:
> > > I agree that we should either support a toolchain (and have CI
> > > coverage for it) or not, in which case we should just remove it.
> > >
> > > However, the issues being reported are specific to SEV-SNP and TDX,
> > > which implies that they are specific to OVMF. And actually, the
> > > reported issue at
> > >
> > > OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
> > > error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]
> > >
> > > seems to be a valid concern.
> > >
> > > So the point I am making is that OVMF gets a lot of attention in the
> > > open source project, but in the wider ecosystem, there are many
> > > platforms relying on this code base that don't incorporate the Coco
> > > components at all, so whether OVMF currently builds with GCC49 is not
> > > 100% relevant.
> > >
> > > So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
> > > coverage for it in CI, as we occasionally get useful diagnostics out
> > > of it. But I am not going to fight any battles over it - I rarely use
> > > it myself, and so I will not miss it when it's gone.
> >
> > I agree with all aspects of this statement. I would *prefer* to keep
> > it as a canary - with CI.
> >
> 
> Cheers.
> 
> And interestingly, GCC49 appears to spot an issue introduced with commit
> 
> commit a7fcab7aa3de338c02e61fd891610b1ec926e6c8
> Author: Hua Ma <hua.ma@intel.com>
> Date:   Mon Oct 11 11:43:12 2021 +0800
> 
>     MdeModulePkg/Core/Dxe: Acquire a lock when iterating gHandleList
> 
> where we may end up dereferencing a bogus 'Prot' pointer:
> 
> MdeModulePkg/Core/Dxe/Hand/Handle.c:1198:24:
> error: ‘Prot’ may be used uninitialized [-Werror=maybe-uninitialized]
>  1198 |       *Interface = Prot->Interface;
>       |                    ~~~~^~~~~~~~~~~
> MdeModulePkg/Core/Dxe/Hand/Handle.c:994:24:
> note: ‘Prot’ was declared here
>   994 |   PROTOCOL_INTERFACE  *Prot;
> 
> So I am going to change my mind, and state that I do care about GCC
> non-LTO builds, as we have been introducing bugs into our code that we
> could have spotted if anyone had bothered to test with this toolchain
> config.
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 13:27                     ` Michael D Kinney
@ 2023-04-03 13:43                       ` Ard Biesheuvel
  0 siblings, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-03 13:43 UTC (permalink / raw)
  To: Kinney, Michael D
  Cc: devel@edk2.groups.io, quic_llindhol@quicinc.com, Gerd Hoffmann,
	rebecca@bsdio.com, Pedro Falcato, Gao, Liming, Oliver Smith-Denny,
	Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J, Yao, Jiewen,
	Ard Biesheuvel, Justen, Jordan L, Feng, Bob C, Andrew Fish

On Mon, 3 Apr 2023 at 15:27, Kinney, Michael D
<michael.d.kinney@intel.com> wrote:
>
> Are the same issue(s) found with GCC5 with -b NOOPT?
>

None of these are found with NOOPT. Without the optimizer, GCC doesn't
perform the analysis that is needed to figure out which variables are
live (and valid) at which time, so it is not able to emit these
diagnostics either.

Note that the LTO compiler is not necessarily wrong here: it can
generally see through all the function calls in a function, and so
perhaps the state that the non-LTO compiler warns about is not
actually reachable in the particular combination of components and
libraries.

However, relying on the LTO optimizer for this is fragile, and I'd
much prefer having robust code that has additional checks for such
states. By the same token, the LTO compiler will get rid of those if
they are redundant and not needed for the program's correctness.



>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ard Biesheuvel
> > Sent: Monday, April 3, 2023 6:05 AM
> > To: devel@edk2.groups.io; quic_llindhol@quicinc.com
> > Cc: Gerd Hoffmann <kraxel@redhat.com>; rebecca@bsdio.com; Pedro Falcato <pedro.falcato@gmail.com>; Gao, Liming
> > <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1
> > <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel
> > <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish
> > <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> > Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> > rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> >
> > On Mon, 3 Apr 2023 at 14:15, Leif Lindholm <quic_llindhol@quicinc.com> wrote:
> > >
> > > On Mon, Apr 03, 2023 at 13:55:19 +0200, Ard Biesheuvel wrote:
> > > > I agree that we should either support a toolchain (and have CI
> > > > coverage for it) or not, in which case we should just remove it.
> > > >
> > > > However, the issues being reported are specific to SEV-SNP and TDX,
> > > > which implies that they are specific to OVMF. And actually, the
> > > > reported issue at
> > > >
> > > > OvmfPkg/Library/CcExitLib/CcExitVcHandler.c:1358:10:
> > > > error: ‘XCr0’ may be used uninitialized [-Werror=maybe-uninitialized]
> > > >
> > > > seems to be a valid concern.
> > > >
> > > > So the point I am making is that OVMF gets a lot of attention in the
> > > > open source project, but in the wider ecosystem, there are many
> > > > platforms relying on this code base that don't incorporate the Coco
> > > > components at all, so whether OVMF currently builds with GCC49 is not
> > > > 100% relevant.
> > > >
> > > > So I am leaning towards retaining GCC49 as GCCNOLTO, and getting some
> > > > coverage for it in CI, as we occasionally get useful diagnostics out
> > > > of it. But I am not going to fight any battles over it - I rarely use
> > > > it myself, and so I will not miss it when it's gone.
> > >
> > > I agree with all aspects of this statement. I would *prefer* to keep
> > > it as a canary - with CI.
> > >
> >
> > Cheers.
> >
> > And interestingly, GCC49 appears to spot an issue introduced with commit
> >
> > commit a7fcab7aa3de338c02e61fd891610b1ec926e6c8
> > Author: Hua Ma <hua.ma@intel.com>
> > Date:   Mon Oct 11 11:43:12 2021 +0800
> >
> >     MdeModulePkg/Core/Dxe: Acquire a lock when iterating gHandleList
> >
> > where we may end up dereferencing a bogus 'Prot' pointer:
> >
> > MdeModulePkg/Core/Dxe/Hand/Handle.c:1198:24:
> > error: ‘Prot’ may be used uninitialized [-Werror=maybe-uninitialized]
> >  1198 |       *Interface = Prot->Interface;
> >       |                    ~~~~^~~~~~~~~~~
> > MdeModulePkg/Core/Dxe/Hand/Handle.c:994:24:
> > note: ‘Prot’ was declared here
> >   994 |   PROTOCOL_INTERFACE  *Prot;
> >
> > So I am going to change my mind, and state that I do care about GCC
> > non-LTO builds, as we have been introducing bugs into our code that we
> > could have spotted if anyone had bothered to test with this toolchain
> > config.
> >
> >
> > 
> >
>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 12:26                   ` Rebecca Cran
@ 2023-04-03 13:44                     ` Pedro Falcato
  2023-04-03 13:54                       ` Rebecca Cran
  2023-04-03 14:08                     ` Gerd Hoffmann
  1 sibling, 1 reply; 68+ messages in thread
From: Pedro Falcato @ 2023-04-03 13:44 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Leif Lindholm, Ard Biesheuvel, Gerd Hoffmann, devel, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On Mon, Apr 3, 2023 at 1:27 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>
> In terms of CI coverage, I'd like to have both gcc 6 and gcc 12 running
> GCC and GCCNOLTO builds: we've already broken gcc 5 compatibility by
> introducing GoogleTest (which uses nullptr), so by doing builds with gcc
> 6 we'll be able to know when we break it and update
> tools_def.txt.template with a note that we'll subsequently require gcc 7.

FYI, GCC 5 supports nullptr and the whole of C++11. I think the
problem is that the .inf doesn't force C++11 through -std={gnu,
c}++11, which makes gcc 5 use its default C++ standard.
Which, IIRC, was C++98 until gcc 6 or 7 (and 98 does not have nullptr).

-- 
Pedro

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 13:44                     ` Pedro Falcato
@ 2023-04-03 13:54                       ` Rebecca Cran
  0 siblings, 0 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-04-03 13:54 UTC (permalink / raw)
  To: Pedro Falcato
  Cc: Leif Lindholm, Ard Biesheuvel, Gerd Hoffmann, devel, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On 4/3/23 7:44 AM, Pedro Falcato wrote:
> On Mon, Apr 3, 2023 at 1:27 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>> In terms of CI coverage, I'd like to have both gcc 6 and gcc 12 running
>> GCC and GCCNOLTO builds: we've already broken gcc 5 compatibility by
>> introducing GoogleTest (which uses nullptr), so by doing builds with gcc
>> 6 we'll be able to know when we break it and update
>> tools_def.txt.template with a note that we'll subsequently require gcc 7.
> FYI, GCC 5 supports nullptr and the whole of C++11. I think the
> problem is that the .inf doesn't force C++11 through -std={gnu,
> c}++11, which makes gcc 5 use its default C++ standard.
> Which, IIRC, was C++98 until gcc 6 or 7 (and 98 does not have nullptr).

Ah, thanks! We _do_ need to start specifying which C and C++ standards 
we're building against, since relying on defaults gets us into problems 
like this.


-- 

Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 12:26                   ` Rebecca Cran
  2023-04-03 13:44                     ` Pedro Falcato
@ 2023-04-03 14:08                     ` Gerd Hoffmann
  2023-04-03 14:27                       ` Rebecca Cran
  1 sibling, 1 reply; 68+ messages in thread
From: Gerd Hoffmann @ 2023-04-03 14:08 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Leif Lindholm, Ard Biesheuvel, devel, Pedro Falcato, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

> Given it's catching issues, I'd like to keep it too.
> 
> In terms of CI coverage, I'd like to have both gcc 6 and gcc 12 running GCC
> and GCCNOLTO builds: we've already broken gcc 5 compatibility by introducing
> GoogleTest (which uses nullptr), so by doing builds with gcc 6 we'll be able
> to know when we break it and update tools_def.txt.template with a note that
> we'll subsequently require gcc 7.

So you want gcc-6 specifically or just an older version instead of
latest?  I could try add a RHEL-8 container (which ships gcc-8).

> Similarly, we should also add CLANGPDB and CLANGDWARF builds.

Fedora ships clang + llvm (version 15.0.7 right now), so adding that
to the CI container should be easy.

> I suspect we'll rapidly run into scaling issues though, since GitHub Actions
> has a limit of 20 concurrent jobs on the free plan (https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration),
> and in order to keep CI times reasonable we'll probably want many more tasks
> to be running in parallel.

Well, I've wondered whenever it makes sense to do _less_ stuff in
parallel, to get down the constant overhead (clone repos etc).
Especially with a limit on parallel jobs that could be faster
in the end ...

take care,
  Gerd


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 14:08                     ` Gerd Hoffmann
@ 2023-04-03 14:27                       ` Rebecca Cran
  2023-04-03 19:42                         ` Michael D Kinney
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-03 14:27 UTC (permalink / raw)
  To: Gerd Hoffmann
  Cc: Leif Lindholm, Ard Biesheuvel, devel, Pedro Falcato, gaoliming,
	Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu, Jian J Wang,
	Jiewen Yao, Ard Biesheuvel, Jordan Justen, Bob Feng, Andrew Fish,
	Michael D Kinney

On 4/3/23 8:08 AM, Gerd Hoffmann wrote:
> So you want gcc-6 specifically or just an older version instead of
> latest?  I could try add a RHEL-8 container (which ships gcc-8).

I'd want the oldest version that we support, so we know when we add 
incompatible code.

 From Pedro's reply, it sounds like that'll be gcc 5 once we add 
-std=c++11 to tools_def.txt.template.


> Well, I've wondered whenever it makes sense to do _less_ stuff in
> parallel, to get down the constant overhead (clone repos etc).
> Especially with a limit on parallel jobs that could be faster
> in the end ...

Maybe a combination? For example one task that I think could do with 
being split up to run in parallel is the following:

stuart_ci_build -c .pytool/CISettings.py -p CryptoPkg -t 
DEBUG,RELEASE,NO-TARGET,NOOPT -a IA32,X64 TOOL_CHAIN_TAG=VS2019

(from 
https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=85605&view=logs&j=c0929384-5a08-5c0f-b36d-6f51b6b81732&t=f12d60be-1b97-57a4-b1ea-5aae2f026d4f)


It shows two tasks taking 13 minutes each.


-- 

Rebecca Cran



^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 14:27                       ` Rebecca Cran
@ 2023-04-03 19:42                         ` Michael D Kinney
  2023-04-03 19:54                           ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: Michael D Kinney @ 2023-04-03 19:42 UTC (permalink / raw)
  To: devel@edk2.groups.io, rebecca@bsdio.com, Gerd Hoffmann
  Cc: Leif Lindholm, Ard Biesheuvel, Pedro Falcato, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Feng, Bob C,
	Andrew Fish, Kinney, Michael D

Rebecca,

I have a test PR running that splits up CodeQL analysis 
and builds to attempt to balance the execution times.

https://github.com/tianocore/edk2/pull/4233

GitHub Actions CodeQL:
* Max job time ~21 minutes
* Total Action Time ~31 minutes
Azure Pipelines Builds:
* Max job time ~32 minutes
* Total job time ~36 minutes

This is a reduction of about 6 minutes from other PRs
in recent history, so may be worth checkin in.

There is also a dependency on the total number of agents.
If we have more jobs than agents, them they get queued
up and will not run until another job completes.

Mike


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
> Sent: Monday, April 3, 2023 7:28 AM
> To: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Pedro Falcato
> <pedro.falcato@gmail.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng,
> Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> On 4/3/23 8:08 AM, Gerd Hoffmann wrote:
> > So you want gcc-6 specifically or just an older version instead of
> > latest?  I could try add a RHEL-8 container (which ships gcc-8).
> 
> I'd want the oldest version that we support, so we know when we add
> incompatible code.
> 
>  From Pedro's reply, it sounds like that'll be gcc 5 once we add
> -std=c++11 to tools_def.txt.template.
> 
> 
> > Well, I've wondered whenever it makes sense to do _less_ stuff in
> > parallel, to get down the constant overhead (clone repos etc).
> > Especially with a limit on parallel jobs that could be faster
> > in the end ...
> 
> Maybe a combination? For example one task that I think could do with
> being split up to run in parallel is the following:
> 
> stuart_ci_build -c .pytool/CISettings.py -p CryptoPkg -t
> DEBUG,RELEASE,NO-TARGET,NOOPT -a IA32,X64 TOOL_CHAIN_TAG=VS2019
> 
> (from
> https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=85605&view=logs&j=c0929384-5a08-5c0f-b36d-
> 6f51b6b81732&t=f12d60be-1b97-57a4-b1ea-5aae2f026d4f)
> 
> 
> It shows two tasks taking 13 minutes each.
> 
> 
> --
> 
> Rebecca Cran
> 
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 19:42                         ` Michael D Kinney
@ 2023-04-03 19:54                           ` Rebecca Cran
  2023-04-03 20:23                             ` Michael D Kinney
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-03 19:54 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io, Gerd Hoffmann
  Cc: Leif Lindholm, Ard Biesheuvel, Pedro Falcato, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Feng, Bob C,
	Andrew Fish

I wonder if it might be possible to get the total time to be under 10 
minutes by adding more agents?


-- 

Rebecca Cran


On 4/3/23 1:42 PM, Kinney, Michael D wrote:
> Rebecca,
>
> I have a test PR running that splits up CodeQL analysis
> and builds to attempt to balance the execution times.
>
> https://github.com/tianocore/edk2/pull/4233
>
> GitHub Actions CodeQL:
> * Max job time ~21 minutes
> * Total Action Time ~31 minutes
> Azure Pipelines Builds:
> * Max job time ~32 minutes
> * Total job time ~36 minutes
>
> This is a reduction of about 6 minutes from other PRs
> in recent history, so may be worth checkin in.
>
> There is also a dependency on the total number of agents.
> If we have more jobs than agents, them they get queued
> up and will not run until another job completes.
>
> Mike
>
>
>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
>> Sent: Monday, April 3, 2023 7:28 AM
>> To: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Pedro Falcato
>> <pedro.falcato@gmail.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
>> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
>> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng,
>> Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>
>> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
>> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
>>
>> On 4/3/23 8:08 AM, Gerd Hoffmann wrote:
>>> So you want gcc-6 specifically or just an older version instead of
>>> latest?  I could try add a RHEL-8 container (which ships gcc-8).
>> I'd want the oldest version that we support, so we know when we add
>> incompatible code.
>>
>>   From Pedro's reply, it sounds like that'll be gcc 5 once we add
>> -std=c++11 to tools_def.txt.template.
>>
>>
>>> Well, I've wondered whenever it makes sense to do _less_ stuff in
>>> parallel, to get down the constant overhead (clone repos etc).
>>> Especially with a limit on parallel jobs that could be faster
>>> in the end ...
>> Maybe a combination? For example one task that I think could do with
>> being split up to run in parallel is the following:
>>
>> stuart_ci_build -c .pytool/CISettings.py -p CryptoPkg -t
>> DEBUG,RELEASE,NO-TARGET,NOOPT -a IA32,X64 TOOL_CHAIN_TAG=VS2019
>>
>> (from
>> https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=85605&view=logs&j=c0929384-5a08-5c0f-b36d-
>> 6f51b6b81732&t=f12d60be-1b97-57a4-b1ea-5aae2f026d4f)
>>
>>
>> It shows two tasks taking 13 minutes each.
>>
>>
>> --
>>
>> Rebecca Cran
>>
>>
>>
>>
>> 
>>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-03 19:54                           ` Rebecca Cran
@ 2023-04-03 20:23                             ` Michael D Kinney
  0 siblings, 0 replies; 68+ messages in thread
From: Michael D Kinney @ 2023-04-03 20:23 UTC (permalink / raw)
  To: devel@edk2.groups.io, rebecca@bsdio.com, Gerd Hoffmann
  Cc: Leif Lindholm, Ard Biesheuvel, Pedro Falcato, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Feng, Bob C,
	Andrew Fish, Kinney, Michael D

Some of the longer execution jobs can be easily broken up into smaller pieces.

20 min may be a more realistic goal no matter how many agents are available.

But would still require a lot of effort to implement caches and rebalance and tune.

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
> Sent: Monday, April 3, 2023 12:55 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io; Gerd Hoffmann <kraxel@redhat.com>
> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb@kernel.org>; Pedro Falcato <pedro.falcato@gmail.com>;
> Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>;
> Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard
> Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng, Bob C <bob.c.feng@intel.com>;
> Andrew Fish <afish@apple.com>
> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> I wonder if it might be possible to get the total time to be under 10
> minutes by adding more agents?
> 
> 
> --
> 
> Rebecca Cran
> 
> 
> On 4/3/23 1:42 PM, Kinney, Michael D wrote:
> > Rebecca,
> >
> > I have a test PR running that splits up CodeQL analysis
> > and builds to attempt to balance the execution times.
> >
> > https://github.com/tianocore/edk2/pull/4233
> >
> > GitHub Actions CodeQL:
> > * Max job time ~21 minutes
> > * Total Action Time ~31 minutes
> > Azure Pipelines Builds:
> > * Max job time ~32 minutes
> > * Total job time ~36 minutes
> >
> > This is a reduction of about 6 minutes from other PRs
> > in recent history, so may be worth checkin in.
> >
> > There is also a dependency on the total number of agents.
> > If we have more jobs than agents, them they get queued
> > up and will not run until another job completes.
> >
> > Mike
> >
> >
> >> -----Original Message-----
> >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
> >> Sent: Monday, April 3, 2023 7:28 AM
> >> To: Gerd Hoffmann <kraxel@redhat.com>
> >> Cc: Leif Lindholm <quic_llindhol@quicinc.com>; Ard Biesheuvel <ardb@kernel.org>; devel@edk2.groups.io; Pedro Falcato
> >> <pedro.falcato@gmail.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang,
> Guomin
> >> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> >> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Feng,
> >> Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> >> Subject: Re: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49,
> >> rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> >>
> >> On 4/3/23 8:08 AM, Gerd Hoffmann wrote:
> >>> So you want gcc-6 specifically or just an older version instead of
> >>> latest?  I could try add a RHEL-8 container (which ships gcc-8).
> >> I'd want the oldest version that we support, so we know when we add
> >> incompatible code.
> >>
> >>   From Pedro's reply, it sounds like that'll be gcc 5 once we add
> >> -std=c++11 to tools_def.txt.template.
> >>
> >>
> >>> Well, I've wondered whenever it makes sense to do _less_ stuff in
> >>> parallel, to get down the constant overhead (clone repos etc).
> >>> Especially with a limit on parallel jobs that could be faster
> >>> in the end ...
> >> Maybe a combination? For example one task that I think could do with
> >> being split up to run in parallel is the following:
> >>
> >> stuart_ci_build -c .pytool/CISettings.py -p CryptoPkg -t
> >> DEBUG,RELEASE,NO-TARGET,NOOPT -a IA32,X64 TOOL_CHAIN_TAG=VS2019
> >>
> >> (from
> >> https://dev.azure.com/tianocore/edk2-ci/_build/results?buildId=85605&view=logs&j=c0929384-5a08-5c0f-b36d-
> >> 6f51b6b81732&t=f12d60be-1b97-57a4-b1ea-5aae2f026d4f)
> >>
> >>
> >> It shows two tasks taking 13 minutes each.
> >>
> >>
> >> --
> >>
> >> Rebecca Cran
> >>
> >>
> >>
> >>
> >>
> >>
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 68+ messages in thread

* 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-02 21:50       ` Rebecca Cran
  2023-04-03 11:30         ` Gerd Hoffmann
@ 2023-04-04  1:31         ` gaoliming
  2023-04-04 15:49           ` Rebecca Cran
  1 sibling, 1 reply; 68+ messages in thread
From: gaoliming @ 2023-04-04  1:31 UTC (permalink / raw)
  To: 'Rebecca Cran', 'Pedro Falcato', devel
  Cc: 'Oliver Smith-Denny', 'Guomin Jiang',
	'Xiaoyu Lu', 'Jian J Wang', 'Jiewen Yao',
	'Ard Biesheuvel', 'Jordan Justen',
	'Gerd Hoffmann', 'Bob Feng',
	'Andrew Fish', 'Leif Lindholm',
	'Michael D Kinney'

Rebecca:
  There are more discussion on GCC49 tool chain. So, I think it is the safe way to keep GCC49 and GCC5 now. We can make the changes for other tool chains first. 

Thanks
Liming
> -----邮件原件-----
> 发件人: Rebecca Cran <rebecca@bsdio.com>
> 发送时间: 2023年4月3日 5:51
> 收件人: Pedro Falcato <pedro.falcato@gmail.com>; devel@edk2.groups.io
> 抄送: gaoliming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny
> <osd@smith-denny.com>; Guomin Jiang <guomin.jiang@intel.com>; Xiaoyu
> Lu <xiaoyu1.lu@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Jiewen Yao
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>;
> Jordan Justen <jordan.l.justen@intel.com>; Gerd Hoffmann
> <kraxel@redhat.com>; Bob Feng <bob.c.feng@intel.com>; Andrew Fish
> <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Michael D
> Kinney <michael.d.kinney@intel.com>
> 主题: Re: 回复: [edk2-devel] [PATCH v2 00/13]
> BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
> CLANGDWARF, delete VS 2008-2013, EBC
> 
> On 4/2/23 12:38 PM, Pedro Falcato wrote:
> > As expressed off-list on UEFI talkbox, I like GCCNOLTO, but I would
> > rather keep GCC5 as GCC5, for the next future iteration of "lets bump
> > a new toolchain because we need feature X".
> 
> Given we've gone from GCC 5 through 12 with no new toolchains, I'd
> prefer to just have GCC.
> 
> > This is unsurprising, plenty of NOLTO build breakage. Since no one
> > seems to use this, could we think about axing this or?
> >
> > Just seems silly to have an extra toolchain (with extra cognitive
> > overhead for anyone looking at tools_def) for s/-flto//g
> 
> Since Liming wants to keep it, let's make all the other changes
> (deleting VS 2008-2013, CLANG35, CLANG38 etc.) and keep GCCNOLTO and
> GCC
> for now. If nobody fixes the problems with GCCNOLTO, maybe we can
> revisit dropping it in a few months?
> 
> 
> --
> 
> Rebecca Cran




^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04  1:31         ` 回复: " gaoliming
@ 2023-04-04 15:49           ` Rebecca Cran
  2023-04-04 15:57             ` Pedro Falcato
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-04 15:49 UTC (permalink / raw)
  To: gaoliming, 'Pedro Falcato', devel
  Cc: 'Oliver Smith-Denny', 'Guomin Jiang',
	'Xiaoyu Lu', 'Jian J Wang', 'Jiewen Yao',
	'Ard Biesheuvel', 'Jordan Justen',
	'Gerd Hoffmann', 'Bob Feng',
	'Andrew Fish', 'Leif Lindholm',
	'Michael D Kinney'

Okay. I'll rework the patch series to only delete GCC48 and keep GCC49 
and GCC5.


-- 

Rebecca Cran


On 4/3/23 7:31 PM, gaoliming wrote:
> Rebecca:
>    There are more discussion on GCC49 tool chain. So, I think it is the safe way to keep GCC49 and GCC5 now. We can make the changes for other tool chains first.
>
> Thanks
> Liming
>> -----邮件原件-----
>> 发件人: Rebecca Cran <rebecca@bsdio.com>
>> 发送时间: 2023年4月3日 5:51
>> 收件人: Pedro Falcato <pedro.falcato@gmail.com>; devel@edk2.groups.io
>> 抄送: gaoliming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny
>> <osd@smith-denny.com>; Guomin Jiang <guomin.jiang@intel.com>; Xiaoyu
>> Lu <xiaoyu1.lu@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Jiewen Yao
>> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>;
>> Jordan Justen <jordan.l.justen@intel.com>; Gerd Hoffmann
>> <kraxel@redhat.com>; Bob Feng <bob.c.feng@intel.com>; Andrew Fish
>> <afish@apple.com>; Leif Lindholm <quic_llindhol@quicinc.com>; Michael D
>> Kinney <michael.d.kinney@intel.com>
>> 主题: Re: 回复: [edk2-devel] [PATCH v2 00/13]
>> BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
>> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
>> CLANGDWARF, delete VS 2008-2013, EBC
>>
>> On 4/2/23 12:38 PM, Pedro Falcato wrote:
>>> As expressed off-list on UEFI talkbox, I like GCCNOLTO, but I would
>>> rather keep GCC5 as GCC5, for the next future iteration of "lets bump
>>> a new toolchain because we need feature X".
>> Given we've gone from GCC 5 through 12 with no new toolchains, I'd
>> prefer to just have GCC.
>>
>>> This is unsurprising, plenty of NOLTO build breakage. Since no one
>>> seems to use this, could we think about axing this or?
>>>
>>> Just seems silly to have an extra toolchain (with extra cognitive
>>> overhead for anyone looking at tools_def) for s/-flto//g
>> Since Liming wants to keep it, let's make all the other changes
>> (deleting VS 2008-2013, CLANG35, CLANG38 etc.) and keep GCCNOLTO and
>> GCC
>> for now. If nobody fixes the problems with GCCNOLTO, maybe we can
>> revisit dropping it in a few months?
>>
>>
>> --
>>
>> Rebecca Cran
>
>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 15:49           ` Rebecca Cran
@ 2023-04-04 15:57             ` Pedro Falcato
  2023-04-04 16:32               ` Leif Lindholm
  0 siblings, 1 reply; 68+ messages in thread
From: Pedro Falcato @ 2023-04-04 15:57 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: gaoliming, devel, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Leif Lindholm,
	Michael D Kinney

On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>
> Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
> and GCC5.

Please rename them? There's no point in keeping their current names
anyway. I guarantee you that most people are not really able to guess
GCC49 to be the "non-LTO" flavor.

And IMO Ard has already proved the value in non-LTO builds anyway, so
yeah. GCC and GCCNOLTO please.

-- 
Pedro

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 15:57             ` Pedro Falcato
@ 2023-04-04 16:32               ` Leif Lindholm
  2023-04-04 17:00                 ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: Leif Lindholm @ 2023-04-04 16:32 UTC (permalink / raw)
  To: devel, pedro.falcato
  Cc: Rebecca Cran, gaoliming, Oliver Smith-Denny, Guomin Jiang,
	Xiaoyu Lu, Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Michael D Kinney

On Tue, Apr 04, 2023 at 16:57:18 +0100, Pedro Falcato wrote:
> On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
> >
> > Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
> > and GCC5.
> 
> Please rename them? There's no point in keeping their current names
> anyway. I guarantee you that most people are not really able to guess
> GCC49 to be the "non-LTO" flavor.
> 
> And IMO Ard has already proved the value in non-LTO builds anyway, so
> yeah. GCC and GCCNOLTO please.

Agreed. I don't think there are any outstanding items that need
resolving.

I'd be very happy to stop hearing "you need GCC 5 in order to build
edk2" misunderstandings.

/
    Leif

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 16:32               ` Leif Lindholm
@ 2023-04-04 17:00                 ` Rebecca Cran
  2023-04-04 17:45                   ` Michael D Kinney
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-04 17:00 UTC (permalink / raw)
  To: Leif Lindholm, devel, pedro.falcato
  Cc: gaoliming, Oliver Smith-Denny, Guomin Jiang, Xiaoyu Lu,
	Jian J Wang, Jiewen Yao, Ard Biesheuvel, Jordan Justen,
	Gerd Hoffmann, Bob Feng, Andrew Fish, Michael D Kinney


On 4/4/23 10:32 AM, Leif Lindholm wrote:
> On Tue, Apr 04, 2023 at 16:57:18 +0100, Pedro Falcato wrote:
>> On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>>> Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
>>> and GCC5.
>> Please rename them? There's no point in keeping their current names
>> anyway. I guarantee you that most people are not really able to guess
>> GCC49 to be the "non-LTO" flavor.
>>
>> And IMO Ard has already proved the value in non-LTO builds anyway, so
>> yeah. GCC and GCCNOLTO please.
> Agreed. I don't think there are any outstanding items that need
> resolving.
>
> I'd be very happy to stop hearing "you need GCC 5 in order to build
> edk2" misunderstandings.

Thanks! As a new co-maintainer I was trying to be diplomatic, but I 
really don't see any reason to keep the existing names.

I'll send out a v3 patch series with all the fixes I and others have 
identified.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 17:00                 ` Rebecca Cran
@ 2023-04-04 17:45                   ` Michael D Kinney
  2023-04-04 17:48                     ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: Michael D Kinney @ 2023-04-04 17:45 UTC (permalink / raw)
  To: devel@edk2.groups.io, rebecca@bsdio.com, Leif Lindholm,
	pedro.falcato@gmail.com
  Cc: Gao, Liming, Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1,
	Wang, Jian J, Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L,
	Gerd Hoffmann, Feng, Bob C, Andrew Fish, Kinney, Michael D

Changing the toolchain tag name from GCC5 to GCC will break 
EDK II CI and likely 100's of downstream developer/CI scripts.

Can we keep GCC5 and add GCC that is identical to GCC5?

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
> Sent: Tuesday, April 4, 2023 10:01 AM
> To: Leif Lindholm <quic_llindhol@quicinc.com>; devel@edk2.groups.io; pedro.falcato@gmail.com
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd
> Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> 
> On 4/4/23 10:32 AM, Leif Lindholm wrote:
> > On Tue, Apr 04, 2023 at 16:57:18 +0100, Pedro Falcato wrote:
> >> On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
> >>> Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
> >>> and GCC5.
> >> Please rename them? There's no point in keeping their current names
> >> anyway. I guarantee you that most people are not really able to guess
> >> GCC49 to be the "non-LTO" flavor.
> >>
> >> And IMO Ard has already proved the value in non-LTO builds anyway, so
> >> yeah. GCC and GCCNOLTO please.
> > Agreed. I don't think there are any outstanding items that need
> > resolving.
> >
> > I'd be very happy to stop hearing "you need GCC 5 in order to build
> > edk2" misunderstandings.
> 
> Thanks! As a new co-maintainer I was trying to be diplomatic, but I
> really don't see any reason to keep the existing names.
> 
> I'll send out a v3 patch series with all the fixes I and others have
> identified.
> 
> 
> --
> Rebecca Cran
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 17:45                   ` Michael D Kinney
@ 2023-04-04 17:48                     ` Rebecca Cran
  2023-04-04 17:52                       ` Michael D Kinney
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-04 17:48 UTC (permalink / raw)
  To: Kinney, Michael D, devel@edk2.groups.io, Leif Lindholm,
	pedro.falcato@gmail.com
  Cc: Gao, Liming, Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1,
	Wang, Jian J, Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L,
	Gerd Hoffmann, Feng, Bob C, Andrew Fish

I've already added changes to the patch series to fix EDK2 CI to use the 
new name. Fortunately there aren't many places that need updated.

Downstream scripts should be trivial to change: just do a find/replace 
for GCC5.


-- 
Rebecca Cran


On 4/4/23 11:45 AM, Kinney, Michael D wrote:
> Changing the toolchain tag name from GCC5 to GCC will break
> EDK II CI and likely 100's of downstream developer/CI scripts.
>
> Can we keep GCC5 and add GCC that is identical to GCC5?
>
> Mike
>
>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
>> Sent: Tuesday, April 4, 2023 10:01 AM
>> To: Leif Lindholm <quic_llindhol@quicinc.com>; devel@edk2.groups.io; pedro.falcato@gmail.com
>> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
>> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
>> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd
>> Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D
>> <michael.d.kinney@intel.com>
>> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
>> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
>>
>>
>> On 4/4/23 10:32 AM, Leif Lindholm wrote:
>>> On Tue, Apr 04, 2023 at 16:57:18 +0100, Pedro Falcato wrote:
>>>> On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
>>>>> Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
>>>>> and GCC5.
>>>> Please rename them? There's no point in keeping their current names
>>>> anyway. I guarantee you that most people are not really able to guess
>>>> GCC49 to be the "non-LTO" flavor.
>>>>
>>>> And IMO Ard has already proved the value in non-LTO builds anyway, so
>>>> yeah. GCC and GCCNOLTO please.
>>> Agreed. I don't think there are any outstanding items that need
>>> resolving.
>>>
>>> I'd be very happy to stop hearing "you need GCC 5 in order to build
>>> edk2" misunderstandings.
>> Thanks! As a new co-maintainer I was trying to be diplomatic, but I
>> really don't see any reason to keep the existing names.
>>
>> I'll send out a v3 patch series with all the fixes I and others have
>> identified.
>>
>>
>> --
>> Rebecca Cran
>>
>>
>>
>> 
>>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 17:48                     ` Rebecca Cran
@ 2023-04-04 17:52                       ` Michael D Kinney
  2023-04-04 17:57                         ` Pedro Falcato
  0 siblings, 1 reply; 68+ messages in thread
From: Michael D Kinney @ 2023-04-04 17:52 UTC (permalink / raw)
  To: Rebecca Cran, devel@edk2.groups.io, Leif Lindholm,
	pedro.falcato@gmail.com
  Cc: Gao, Liming, Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1,
	Wang, Jian J, Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L,
	Gerd Hoffmann, Feng, Bob C, Andrew Fish, Kinney, Michael D

I see value in adding a new name.

I see no value in a non-backwards compatible change to delete/rename a fully supported one.

Mike

> -----Original Message-----
> From: Rebecca Cran <rebecca@bsdio.com>
> Sent: Tuesday, April 4, 2023 10:49 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io; Leif Lindholm <quic_llindhol@quicinc.com>;
> pedro.falcato@gmail.com
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd
> Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>
> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> I've already added changes to the patch series to fix EDK2 CI to use the
> new name. Fortunately there aren't many places that need updated.
> 
> Downstream scripts should be trivial to change: just do a find/replace
> for GCC5.
> 
> 
> --
> Rebecca Cran
> 
> 
> On 4/4/23 11:45 AM, Kinney, Michael D wrote:
> > Changing the toolchain tag name from GCC5 to GCC will break
> > EDK II CI and likely 100's of downstream developer/CI scripts.
> >
> > Can we keep GCC5 and add GCC that is identical to GCC5?
> >
> > Mike
> >
> >> -----Original Message-----
> >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
> >> Sent: Tuesday, April 4, 2023 10:01 AM
> >> To: Leif Lindholm <quic_llindhol@quicinc.com>; devel@edk2.groups.io; pedro.falcato@gmail.com
> >> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> >> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Yao, Jiewen
> >> <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd
> >> Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>; Kinney, Michael D
> >> <michael.d.kinney@intel.com>
> >> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> >> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> >>
> >>
> >> On 4/4/23 10:32 AM, Leif Lindholm wrote:
> >>> On Tue, Apr 04, 2023 at 16:57:18 +0100, Pedro Falcato wrote:
> >>>> On Tue, Apr 4, 2023 at 4:49 PM Rebecca Cran <rebecca@bsdio.com> wrote:
> >>>>> Okay. I'll rework the patch series to only delete GCC48 and keep GCC49
> >>>>> and GCC5.
> >>>> Please rename them? There's no point in keeping their current names
> >>>> anyway. I guarantee you that most people are not really able to guess
> >>>> GCC49 to be the "non-LTO" flavor.
> >>>>
> >>>> And IMO Ard has already proved the value in non-LTO builds anyway, so
> >>>> yeah. GCC and GCCNOLTO please.
> >>> Agreed. I don't think there are any outstanding items that need
> >>> resolving.
> >>>
> >>> I'd be very happy to stop hearing "you need GCC 5 in order to build
> >>> edk2" misunderstandings.
> >> Thanks! As a new co-maintainer I was trying to be diplomatic, but I
> >> really don't see any reason to keep the existing names.
> >>
> >> I'll send out a v3 patch series with all the fixes I and others have
> >> identified.
> >>
> >>
> >> --
> >> Rebecca Cran
> >>
> >>
> >>
> >> 
> >>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 17:52                       ` Michael D Kinney
@ 2023-04-04 17:57                         ` Pedro Falcato
  2023-04-04 18:03                           ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: Pedro Falcato @ 2023-04-04 17:57 UTC (permalink / raw)
  To: Kinney, Michael D
  Cc: Rebecca Cran, devel@edk2.groups.io, Leif Lindholm, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Andrew Fish

On Tue, Apr 4, 2023 at 6:52 PM Kinney, Michael D
<michael.d.kinney@intel.com> wrote:
>
> I see value in adding a new name.
>
> I see no value in a non-backwards compatible change to delete/rename a fully supported one.

As Leif said, you reduce all sorts of possible confusion.

VS2013 builds only for Visual Studio 2013 tools, VS2017 does the same
for 2017, GCC5 meanwhile builds on anything from (probably GCC 4.x,
since LTO, 2011) to GCC 13 (to be released soon, 2023).

Surely downstreams can adapt to *this one cosmetic change* that
changes no behavior.

-- 
Pedro

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 17:57                         ` Pedro Falcato
@ 2023-04-04 18:03                           ` Rebecca Cran
  2023-04-04 18:26                             ` Ard Biesheuvel
  2023-04-04 18:29                             ` Michael D Kinney
  0 siblings, 2 replies; 68+ messages in thread
From: Rebecca Cran @ 2023-04-04 18:03 UTC (permalink / raw)
  To: Pedro Falcato, Kinney, Michael D
  Cc: devel@edk2.groups.io, Leif Lindholm, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Andrew Fish


On 4/4/23 11:57 AM, Pedro Falcato wrote:
> On Tue, Apr 4, 2023 at 6:52 PM Kinney, Michael D
> <michael.d.kinney@intel.com> wrote:
>> I see value in adding a new name.
>>
>> I see no value in a non-backwards compatible change to delete/rename a fully supported one.
> As Leif said, you reduce all sorts of possible confusion.
>
> VS2013 builds only for Visual Studio 2013 tools, VS2017 does the same
> for 2017, GCC5 meanwhile builds on anything from (probably GCC 4.x,
> since LTO, 2011) to GCC 13 (to be released soon, 2023).
>
> Surely downstreams can adapt to *this one cosmetic change* that
> changes no behavior.

Nope, GCC5 currently only builds on GCC _6_ and newer, since we don't 
specify -std=c++11. Which makes this discussion even more ridiculous IMO.


-- 
Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 18:03                           ` Rebecca Cran
@ 2023-04-04 18:26                             ` Ard Biesheuvel
  2023-04-04 18:29                             ` Michael D Kinney
  1 sibling, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-04 18:26 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Pedro Falcato, Kinney, Michael D, devel@edk2.groups.io,
	Leif Lindholm, Gao, Liming, Oliver Smith-Denny, Jiang, Guomin,
	Lu, Xiaoyu1, Wang, Jian J, Yao, Jiewen, Ard Biesheuvel,
	Justen, Jordan L, Gerd Hoffmann, Feng, Bob C, Andrew Fish

On Tue, 4 Apr 2023 at 20:03, Rebecca Cran <rebecca@bsdio.com> wrote:
>
>
> On 4/4/23 11:57 AM, Pedro Falcato wrote:
> > On Tue, Apr 4, 2023 at 6:52 PM Kinney, Michael D
> > <michael.d.kinney@intel.com> wrote:
> >> I see value in adding a new name.
> >>
> >> I see no value in a non-backwards compatible change to delete/rename a fully supported one.
> > As Leif said, you reduce all sorts of possible confusion.
> >
> > VS2013 builds only for Visual Studio 2013 tools, VS2017 does the same
> > for 2017, GCC5 meanwhile builds on anything from (probably GCC 4.x,
> > since LTO, 2011) to GCC 13 (to be released soon, 2023).
> >
> > Surely downstreams can adapt to *this one cosmetic change* that
> > changes no behavior.
>
> Nope, GCC5 currently only builds on GCC _6_ and newer, since we don't
> specify -std=c++11. Which makes this discussion even more ridiculous IMO.
>
>

I agree with Mike here. 'GCC' does not exist today, so dropping GCC5
at the same time makes this a flag day change, which is never great.
Imagine having to bisect through that, and having to figure out at
each step whether to use GCC5 or GCC.

It's much better to have GCC5 and GCC co-exist for a little while,
even if the former only exists as an alias that is documented as being
obsolete and scheduled for removal.

-- 
Ard.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 18:03                           ` Rebecca Cran
  2023-04-04 18:26                             ` Ard Biesheuvel
@ 2023-04-04 18:29                             ` Michael D Kinney
  2023-04-04 18:36                               ` Rebecca Cran
  2023-04-06  9:19                               ` Marcin Juszkiewicz
  1 sibling, 2 replies; 68+ messages in thread
From: Michael D Kinney @ 2023-04-04 18:29 UTC (permalink / raw)
  To: Rebecca Cran, Pedro Falcato
  Cc: devel@edk2.groups.io, Leif Lindholm, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Andrew Fish, Kinney, Michael D

Add GCC and leave GCC5 for now and give time for all downstream 
consumers to accommodate the name change.

At a later date, remove GCC5.

We have seen significant downstream issues on name changes in the 
past.  Splitting into 2 different patch series allows downstream
to merge in the change that adds the new name.  Give time to update
all dependencies to use the new name, and then at a later date
remove the old name.

This is a common practice to announce deprecation and support 
new and old for a period of time.

Mike

> -----Original Message-----
> From: Rebecca Cran <rebecca@bsdio.com>
> Sent: Tuesday, April 4, 2023 11:04 AM
> To: Pedro Falcato <pedro.falcato@gmail.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: devel@edk2.groups.io; Leif Lindholm <quic_llindhol@quicinc.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-
> Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L
> <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish
> <afish@apple.com>
> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
> 
> 
> On 4/4/23 11:57 AM, Pedro Falcato wrote:
> > On Tue, Apr 4, 2023 at 6:52 PM Kinney, Michael D
> > <michael.d.kinney@intel.com> wrote:
> >> I see value in adding a new name.
> >>
> >> I see no value in a non-backwards compatible change to delete/rename a fully supported one.
> > As Leif said, you reduce all sorts of possible confusion.
> >
> > VS2013 builds only for Visual Studio 2013 tools, VS2017 does the same
> > for 2017, GCC5 meanwhile builds on anything from (probably GCC 4.x,
> > since LTO, 2011) to GCC 13 (to be released soon, 2023).
> >
> > Surely downstreams can adapt to *this one cosmetic change* that
> > changes no behavior.
> 
> Nope, GCC5 currently only builds on GCC _6_ and newer, since we don't
> specify -std=c++11. Which makes this discussion even more ridiculous IMO.
> 
> 
> --
> Rebecca Cran


^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 18:29                             ` Michael D Kinney
@ 2023-04-04 18:36                               ` Rebecca Cran
  2023-04-05 10:21                                 ` Ard Biesheuvel
  2023-04-06  9:19                               ` Marcin Juszkiewicz
  1 sibling, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-04 18:36 UTC (permalink / raw)
  To: Kinney, Michael D, Pedro Falcato
  Cc: devel@edk2.groups.io, Leif Lindholm, Gao, Liming,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Andrew Fish

Thanks, deprecating it for a while makes a lot of sense. We can consider 
removing it in 6-12 months maybe?


-- 

Rebecca Cran


On 4/4/2023 12:29 PM, Kinney, Michael D wrote:
> Add GCC and leave GCC5 for now and give time for all downstream
> consumers to accommodate the name change.
>
> At a later date, remove GCC5.
>
> We have seen significant downstream issues on name changes in the
> past.  Splitting into 2 different patch series allows downstream
> to merge in the change that adds the new name.  Give time to update
> all dependencies to use the new name, and then at a later date
> remove the old name.
>
> This is a common practice to announce deprecation and support
> new and old for a period of time.
>
> Mike
>
>> -----Original Message-----
>> From: Rebecca Cran <rebecca@bsdio.com>
>> Sent: Tuesday, April 4, 2023 11:04 AM
>> To: Pedro Falcato <pedro.falcato@gmail.com>; Kinney, Michael D <michael.d.kinney@intel.com>
>> Cc: devel@edk2.groups.io; Leif Lindholm <quic_llindhol@quicinc.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Oliver Smith-
>> Denny <osd@smith-denny.com>; Jiang, Guomin <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J
>> <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L
>> <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng, Bob C <bob.c.feng@intel.com>; Andrew Fish
>> <afish@apple.com>
>> Subject: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
>> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
>>
>>
>> On 4/4/23 11:57 AM, Pedro Falcato wrote:
>>> On Tue, Apr 4, 2023 at 6:52 PM Kinney, Michael D
>>> <michael.d.kinney@intel.com> wrote:
>>>> I see value in adding a new name.
>>>>
>>>> I see no value in a non-backwards compatible change to delete/rename a fully supported one.
>>> As Leif said, you reduce all sorts of possible confusion.
>>>
>>> VS2013 builds only for Visual Studio 2013 tools, VS2017 does the same
>>> for 2017, GCC5 meanwhile builds on anything from (probably GCC 4.x,
>>> since LTO, 2011) to GCC 13 (to be released soon, 2023).
>>>
>>> Surely downstreams can adapt to *this one cosmetic change* that
>>> changes no behavior.
>> Nope, GCC5 currently only builds on GCC _6_ and newer, since we don't
>> specify -std=c++11. Which makes this discussion even more ridiculous IMO.
>>
>>
>> --
>> Rebecca Cran

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 18:36                               ` Rebecca Cran
@ 2023-04-05 10:21                                 ` Ard Biesheuvel
  2023-04-06  0:57                                   ` 回复: " gaoliming
  0 siblings, 1 reply; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-05 10:21 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: Kinney, Michael D, Pedro Falcato, devel@edk2.groups.io,
	Leif Lindholm, Gao, Liming, Oliver Smith-Denny, Jiang, Guomin,
	Lu, Xiaoyu1, Wang, Jian J, Yao, Jiewen, Ard Biesheuvel,
	Justen, Jordan L, Gerd Hoffmann, Feng, Bob C, Andrew Fish

On Tue, 4 Apr 2023 at 20:36, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> Thanks, deprecating it for a while makes a lot of sense. We can consider
> removing it in 6-12 months maybe?
>

I would at least wait for a stable release to appear that supports
both GCC5 and GCC/GCCNOLTO, and then perhaps queue the removal (and
document it) for the subsequent one?

^ permalink raw reply	[flat|nested] 68+ messages in thread

* 回复: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-05 10:21                                 ` Ard Biesheuvel
@ 2023-04-06  0:57                                   ` gaoliming
  2023-04-06  2:49                                     ` Rebecca Cran
  0 siblings, 1 reply; 68+ messages in thread
From: gaoliming @ 2023-04-06  0:57 UTC (permalink / raw)
  To: devel, ardb, 'Rebecca Cran'
  Cc: 'Kinney, Michael D', 'Pedro Falcato',
	'Leif Lindholm', 'Oliver Smith-Denny',
	'Jiang, Guomin', 'Lu, Xiaoyu1',
	'Wang, Jian J', 'Yao, Jiewen',
	'Ard Biesheuvel', 'Justen, Jordan L',
	'Gerd Hoffmann', 'Feng, Bob C',
	'Andrew Fish'

Rebecca:
 If you plan to change GCC49 tool chain to GCCNOLTO name, I would suggest to take the same rule that adds GCCNOLTO tool chain first. 

 We still have downstream AARCH64 platforms to use GCC49 tool chain now. 

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
> Biesheuvel
> 发送时间: 2023年4月5日 18:22
> 收件人: Rebecca Cran <rebecca@bsdio.com>
> 抄送: Kinney, Michael D <michael.d.kinney@intel.com>; Pedro Falcato
> <pedro.falcato@gmail.com>; devel@edk2.groups.io; Leif Lindholm
> <quic_llindhol@quicinc.com>; Gao, Liming <gaoliming@byosoft.com.cn>;
> Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard
> Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L
> <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng,
> Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>
> 主题: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13]
> BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
> CLANGDWARF, delete VS 2008-2013, EBC
> 
> On Tue, 4 Apr 2023 at 20:36, Rebecca Cran <rebecca@bsdio.com> wrote:
> >
> > Thanks, deprecating it for a while makes a lot of sense. We can consider
> > removing it in 6-12 months maybe?
> >
> 
> I would at least wait for a stable release to appear that supports
> both GCC5 and GCC/GCCNOLTO, and then perhaps queue the removal (and
> document it) for the subsequent one?
> 
> 
> 
> 




^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-06  0:57                                   ` 回复: " gaoliming
@ 2023-04-06  2:49                                     ` Rebecca Cran
  2023-04-06  7:32                                       ` Ard Biesheuvel
  0 siblings, 1 reply; 68+ messages in thread
From: Rebecca Cran @ 2023-04-06  2:49 UTC (permalink / raw)
  To: gaoliming, devel, ardb
  Cc: 'Kinney, Michael D', 'Pedro Falcato',
	'Leif Lindholm', 'Oliver Smith-Denny',
	'Jiang, Guomin', 'Lu, Xiaoyu1',
	'Wang, Jian J', 'Yao, Jiewen',
	'Ard Biesheuvel', 'Justen, Jordan L',
	'Gerd Hoffmann', 'Feng, Bob C',
	'Andrew Fish'

Okay, I'll do that.

Do I need to do the same with the CLANG35 and CLANG38 toolchains, 
marking them deprecated before removing them?


-- 

Rebecca Cran


On 4/5/23 6:57 PM, gaoliming wrote:
> Rebecca:
>   If you plan to change GCC49 tool chain to GCCNOLTO name, I would suggest to take the same rule that adds GCCNOLTO tool chain first.
>
>   We still have downstream AARCH64 platforms to use GCC49 tool chain now.
>
> Thanks
> Liming
>> -----邮件原件-----
>> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
>> Biesheuvel
>> 发送时间: 2023年4月5日 18:22
>> 收件人: Rebecca Cran <rebecca@bsdio.com>
>> 抄送: Kinney, Michael D <michael.d.kinney@intel.com>; Pedro Falcato
>> <pedro.falcato@gmail.com>; devel@edk2.groups.io; Leif Lindholm
>> <quic_llindhol@quicinc.com>; Gao, Liming <gaoliming@byosoft.com.cn>;
>> Oliver Smith-Denny <osd@smith-denny.com>; Jiang, Guomin
>> <guomin.jiang@intel.com>; Lu, Xiaoyu1 <xiaoyu1.lu@intel.com>; Wang, Jian J
>> <jian.j.wang@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ard
>> Biesheuvel <ardb+tianocore@kernel.org>; Justen, Jordan L
>> <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Feng,
>> Bob C <bob.c.feng@intel.com>; Andrew Fish <afish@apple.com>
>> 主题: Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13]
>> BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete
>> CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update
>> CLANGDWARF, delete VS 2008-2013, EBC
>>
>> On Tue, 4 Apr 2023 at 20:36, Rebecca Cran <rebecca@bsdio.com> wrote:
>>> Thanks, deprecating it for a while makes a lot of sense. We can consider
>>> removing it in 6-12 months maybe?
>>>
>> I would at least wait for a stable release to appear that supports
>> both GCC5 and GCC/GCCNOLTO, and then perhaps queue the removal (and
>> document it) for the subsequent one?
>>
>>
>> 
>>
>
>

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-06  2:49                                     ` Rebecca Cran
@ 2023-04-06  7:32                                       ` Ard Biesheuvel
  0 siblings, 0 replies; 68+ messages in thread
From: Ard Biesheuvel @ 2023-04-06  7:32 UTC (permalink / raw)
  To: Rebecca Cran
  Cc: gaoliming, devel, Kinney, Michael D, Pedro Falcato, Leif Lindholm,
	Oliver Smith-Denny, Jiang, Guomin, Lu, Xiaoyu1, Wang, Jian J,
	Yao, Jiewen, Ard Biesheuvel, Justen, Jordan L, Gerd Hoffmann,
	Feng, Bob C, Andrew Fish

On Thu, 6 Apr 2023 at 04:49, Rebecca Cran <rebecca@bsdio.com> wrote:
>
> Okay, I'll do that.
>
> Do I need to do the same with the CLANG35 and CLANG38 toolchains,
> marking them deprecated before removing them?
>

>From the ARM side (as the person having introduced them in the past),
I have no problems with just dropping/replacing them.

^ permalink raw reply	[flat|nested] 68+ messages in thread

* Re: 回复: 回复: [edk2-devel] [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC
  2023-04-04 18:29                             ` Michael D Kinney
  2023-04-04 18:36                               ` Rebecca Cran
@ 2023-04-06  9:19                               ` Marcin Juszkiewicz
  1 sibling, 0 replies; 68+ messages in thread
From: Marcin Juszkiewicz @ 2023-04-06  9:19 UTC (permalink / raw)
  To: devel

W dniu 4.04.2023 o 20:29, Michael D Kinney pisze:
> Add GCC and leave GCC5 for now and give time for all downstream
> consumers to accommodate the name change.
> 
> At a later date, remove GCC5.

In meantime you may also have message "GCC5 is deprecated, please switch 
to GCC" + few seconds delay.

We handled deprecation in one project that way. For EDK2 I would add 
such message at start and at the end of build process.

^ permalink raw reply	[flat|nested] 68+ messages in thread

end of thread, other threads:[~2023-04-06  9:19 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-28 17:30 [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Rebecca Cran
2023-03-28 17:30 ` [PATCH v2 01/13] OvmfPkg: Replace static struct initialization with ZeroMem call Rebecca Cran
2023-03-28 22:40   ` Yao, Jiewen
2023-03-28 22:45     ` Michael D Kinney
2023-03-28 17:31 ` [PATCH v2 02/13] CryptoPkg: Add CLANGDWARF and remove CLANG35 and CLANG38 compiler flags Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 03/13] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38 Rebecca Cran
2023-03-29  3:46   ` [edk2-devel] " Guo, Gua
     [not found]   ` <1750C725F99FA0C2.29160@groups.io>
2023-03-29  9:24     ` Guo, Gua
2023-03-28 17:31 ` [PATCH v2 04/13] BaseTools: Remove VS2008, 2010, 2012 and 2013 toolchain definitions Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 05/13] BaseTools: Remove VS2008-VS2013 remnants Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 06/13] MdePkg: " Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 07/13] edksetup.bat: " Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 08/13] BaseTools: Remove unused IPHONE_TOOLS and SOURCERY_CYGWIN_TOOLS defs Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 09/13] BaseTools: Remove EBC (EFI Byte Code) compiler definitions Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 10/13] OvmfPkg: Use Xcode5 version of CpuExceptionHandlerLib for CLANGDWARF Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 11/13] Delete GCC48 and GCC49 toolchains and rename GCC5 to GCC Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 12/13] BaseTools: Remove unused CYGWIN_ defines from tools_def.txt.template Rebecca Cran
2023-03-28 17:31 ` [PATCH v2 13/13] Bump tools_def.txt VERSION to 3.0 Rebecca Cran
2023-03-28 17:57 ` [PATCH v2 00/13] BaseTools,CryptoPkg,MdePkg,OvmfPkg: Delete CLANG35,CLANG38,GCC48,GCC49, rename GCC5 to GCC, update CLANGDWARF, delete VS 2008-2013, EBC Ard Biesheuvel
2023-03-28 18:01   ` Rebecca Cran
2023-03-28 18:12     ` [edk2-devel] " Ard Biesheuvel
2023-03-29 10:21       ` Rebecca Cran
2023-03-29 10:30         ` Ard Biesheuvel
2023-03-29  1:19 ` 回复: " gaoliming
2023-03-29  7:39   ` Ard Biesheuvel
2023-03-29 10:20     ` Rebecca Cran
2023-03-29 11:28     ` Leif Lindholm
2023-03-29 11:53       ` Ard Biesheuvel
2023-04-02 15:41   ` 回复: " Rebecca Cran
2023-04-02 16:36     ` Ard Biesheuvel
2023-04-02 16:42       ` Michael D Kinney
2023-04-02 18:38     ` Pedro Falcato
2023-04-02 21:50       ` Rebecca Cran
2023-04-03 11:30         ` Gerd Hoffmann
2023-04-03 11:33           ` Rebecca Cran
2023-04-03 11:39             ` Gerd Hoffmann
2023-04-03 11:55               ` Ard Biesheuvel
2023-04-03 12:15                 ` Leif Lindholm
2023-04-03 12:26                   ` Rebecca Cran
2023-04-03 13:44                     ` Pedro Falcato
2023-04-03 13:54                       ` Rebecca Cran
2023-04-03 14:08                     ` Gerd Hoffmann
2023-04-03 14:27                       ` Rebecca Cran
2023-04-03 19:42                         ` Michael D Kinney
2023-04-03 19:54                           ` Rebecca Cran
2023-04-03 20:23                             ` Michael D Kinney
2023-04-03 13:04                   ` Ard Biesheuvel
2023-04-03 13:27                     ` Michael D Kinney
2023-04-03 13:43                       ` Ard Biesheuvel
2023-04-04  1:31         ` 回复: " gaoliming
2023-04-04 15:49           ` Rebecca Cran
2023-04-04 15:57             ` Pedro Falcato
2023-04-04 16:32               ` Leif Lindholm
2023-04-04 17:00                 ` Rebecca Cran
2023-04-04 17:45                   ` Michael D Kinney
2023-04-04 17:48                     ` Rebecca Cran
2023-04-04 17:52                       ` Michael D Kinney
2023-04-04 17:57                         ` Pedro Falcato
2023-04-04 18:03                           ` Rebecca Cran
2023-04-04 18:26                             ` Ard Biesheuvel
2023-04-04 18:29                             ` Michael D Kinney
2023-04-04 18:36                               ` Rebecca Cran
2023-04-05 10:21                                 ` Ard Biesheuvel
2023-04-06  0:57                                   ` 回复: " gaoliming
2023-04-06  2:49                                     ` Rebecca Cran
2023-04-06  7:32                                       ` Ard Biesheuvel
2023-04-06  9:19                               ` Marcin Juszkiewicz
2023-03-29 12:20 ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox