[PATCH 3/9] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38


Rebecca Cran
 

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

The existing CLANGDWARF toolchain definition used ld.lld, but this
causes the following linker errors when building OvmfPkgX64.dsc:

ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol;
recompile with -fPIC
defined in edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii
ExceptionHandlerAsm.obj:(.text+0x5) in archive /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib
ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
defined in edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii
ExceptionHandlerAsm.obj:(.text+0x14) in archive edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib
To avoid this, use the default ld (which is normally GNU ld) instead.

Signed-off-by: Rebecca Cran <rebecca@...>
---
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 471eb67c0c83..a790366063ea 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
@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG
# PE/COFF binaries using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3
+
+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 = DEF(GCC_ARM_CC_FLAGS) 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

####################################################################################
#
@@ -2845,106 +2834,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


Guo, Gua
 

Try to verify the patch on my local. Could you help to check whether it happen on your side ?

Please make sure windows build is not broken before code submitting.

 

Before the commit:

 

  • Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t GCC5 PASS
    • sudo apt install clang-10 llvm-10
    • source edksetup.sh
    • make -C BaseTools
    • python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

After the commit:

 

 

  • Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t GCC5 PASS
    • sudo apt install clang-10 llvm-10
    • source edksetup.sh
    • make -C BaseTools
    • python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

 

 

Thanks,

Gua

-----Original Message-----

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran

Sent: Wednesday, March 22, 2023 9:31 AM

To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>

Cc: Rebecca Cran <rebecca@...>

Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this causes the following linker errors when building OvmfPkgX64.dsc:

 

ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC

>>> defined in

>>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

>>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

>>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

>>> referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

>>>               ExceptionHandlerAsm.obj:(.text+0x5) in archive

>>> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC

>>> puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU

>>> TPUT/SecPeiCpuExceptionHandlerLib.lib

 

ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC

>>> defined in

>>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

>>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

>>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

>>> referenced by edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

>>>               ExceptionHandlerAsm.obj:(.text+0x14) in archive

>>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

>>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

>>> onHandlerLib.lib

 

To avoid this, use the default ld (which is normally GNU ld) instead.

 

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

---

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 471eb67c0c83..a790366063ea 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

@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

+

+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      = DEF(GCC_ARM_CC_FLAGS) 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

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

#

@@ -2845,106 +2834,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

 

 

 

 

 


Ard Biesheuvel
 

On Wed, 22 Mar 2023 at 02:30, Rebecca Cran <rebecca@...> wrote:

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

The existing CLANGDWARF toolchain definition used ld.lld, but this
causes the following linker errors when building OvmfPkgX64.dsc:

ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol;
recompile with -fPIC
defined in edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii
ExceptionHandlerAsm.obj:(.text+0x5) in archive /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib
ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC
defined in edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii
ExceptionHandlerAsm.obj:(.text+0x14) in archive edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExceptionHandlerLib.lib
To avoid this, use the default ld (which is normally GNU ld) instead.
The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.

I can work around this issue locally by doing

--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@
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

Can you please check whether this works for you as well?





Signed-off-by: Rebecca Cran <rebecca@...>
---
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 471eb67c0c83..a790366063ea 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
@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG
# PE/COFF binaries using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS) -O3
+
+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 = DEF(GCC_ARM_CC_FLAGS) 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

####################################################################################
#
@@ -2845,106 +2834,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


Rebecca Cran
 

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:

The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.

I can work around this issue locally by doing

--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@
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

Can you please check whether this works for you as well?
Thanks, that works here too!

Do we still need to keep CLANG35 and CLANG38 toolchains for compatibility with the ARM toolchain? Or have things moved on so they _can_ be removed?


--
Rebecca Cran


Ard Biesheuvel
 

On Wed, 22 Mar 2023 at 13:28, Rebecca Cran <rebecca@...> wrote:

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:

The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.

I can work around this issue locally by doing

--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@
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

Can you please check whether this works for you as well?
Thanks, that works here too!

Do we still need to keep CLANG35 and CLANG38 toolchains for
compatibility with the ARM toolchain? Or have things moved on so they
_can_ be removed?
No, please go ahead and merge all of those - the 35/38 naming is so
out of date it is likely to confuse people, so we should rename those
in any case.

I haven't tried building EDK2 for ARM with LLD myself - let me know if
you run into any issues there.


Gerd Hoffmann
 

On Wed, Mar 22, 2023 at 01:32:01PM +0100, Ard Biesheuvel wrote:
On Wed, 22 Mar 2023 at 13:28, Rebecca Cran <rebecca@...> wrote:

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:

The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.

I can work around this issue locally by doing

--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@
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

Can you please check whether this works for you as well?
Thanks, that works here too!

Do we still need to keep CLANG35 and CLANG38 toolchains for
compatibility with the ARM toolchain? Or have things moved on so they
_can_ be removed?
No, please go ahead and merge all of those - the 35/38 naming is so
out of date it is likely to confuse people, so we should rename those
in any case.
Same goes for all the GCC4x toolchains I guess ...

take care,
Gerd


Ard Biesheuvel
 

On Wed, 22 Mar 2023 at 14:03, Gerd Hoffmann <kraxel@...> wrote:

On Wed, Mar 22, 2023 at 01:32:01PM +0100, Ard Biesheuvel wrote:
On Wed, 22 Mar 2023 at 13:28, Rebecca Cran <rebecca@...> wrote:

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:

The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.

I can work around this issue locally by doing

--- a/OvmfPkg/OvmfPkgX64.dsc
+++ b/OvmfPkg/OvmfPkgX64.dsc
@@ -297,7 +297,7 @@
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

Can you please check whether this works for you as well?
Thanks, that works here too!

Do we still need to keep CLANG35 and CLANG38 toolchains for
compatibility with the ARM toolchain? Or have things moved on so they
_can_ be removed?
No, please go ahead and merge all of those - the 35/38 naming is so
out of date it is likely to confuse people, so we should rename those
in any case.
Same goes for all the GCC4x toolchains I guess ...
Indeed - we should just drop those, and rename GCC5 to GCC


Rebecca Cran
 

I'm not seeing this failure. Could you tell me what the following commands print, please:


where clang

where lld


Mine are:


C:\Users\bcran\Documents\src\uefi\edk2>where clang
C:\Program Files\LLVM\bin\clang.exe
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\Llvm\bin\clang.exe

C:\Users\bcran\Documents\src\uefi\edk2>where lld
C:\Program Files\LLVM\bin\lld.exe
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\Llvm\bin\lld.exe


Also, could you provide more of the output?

On 3/21/23 10:57 PM, Guo, Gua wrote:

Try to verify the patch on my local. Could you help to check whether it happen on your side ?

Please make sure windows build is not broken before code submitting.

Before the commit:

* Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
VS2019 PASS
o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe
o Install VS2019
o edksetup.bat Rebuild
o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019

* Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
GCC5 PASS
o sudo apt install clang-10 llvm-10
o source edksetup.sh
o make -C BaseTools
o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

After the commit:

* Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
VS2019 FAIL
o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe
o Install VS2019
o edksetup.bat Rebuild
o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019
o

* Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
GCC5 PASS
o sudo apt install clang-10 llvm-10
o source edksetup.sh
o make -C BaseTools
o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

Thanks,

Gua

-----Original Message-----

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran

Sent: Wednesday, March 22, 2023 9:31 AM

To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>

Cc: Rebecca Cran <rebecca@...>

Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this causes the following linker errors when building OvmfPkgX64.dsc:

ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC

defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x5) in archive
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC
puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU
TPUT/SecPeiCpuExceptionHandlerLib.lib
ld.lld: error: relocation R_X86_64_64 cannot be used against local symbol; recompile with -fPIC

defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x14) in archive
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib
To avoid this, use the default ld (which is normally GNU ld) instead.

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

---

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 471eb67c0c83..a790366063ea 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

@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS = DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64 -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

+

+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      = DEF(GCC_ARM_CC_FLAGS) 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

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

#

@@ -2845,106 +2834,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


Guo, Gua
 

Mine are:

 

-----Original Message-----
From: Rebecca Cran <rebecca@...>
Sent: Wednesday, March 22, 2023 9:11 PM
To: Guo, Gua <gua.guo@...>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>
Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38

 

I'm not seeing this failure. Could you tell me what the following commands print, please:

 

 

where clang

 

where lld

 

 

Mine are:

 

 

C:\Users\bcran\Documents\src\uefi\edk2>where clang

C:\Program Files\LLVM\bin\clang.exe

C:\Program Files (x86)\Microsoft Visual

Studio\2019\Professional\VC\Tools\Llvm\bin\clang.exe

 

C:\Users\bcran\Documents\src\uefi\edk2>where lld

C:\Program Files\LLVM\bin\lld.exe

C:\Program Files (x86)\Microsoft Visual

Studio\2019\Professional\VC\Tools\Llvm\bin\lld.exe

 

 

Also, could you provide more of the output?

 

 

On 3/21/23 10:57 PM, Guo, Gua wrote:

> Try to verify the patch on my local. Could you help to check whether

> it happen on your side ?

> Please make sure windows build is not broken before code submitting.

> Before the commit:

>   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

>     VS2019 PASS

>       o Install

>         https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe

>       o Install VS2019

>       o edksetup.bat Rebuild

>       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019

>   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

>     GCC5 PASS

>       o sudo apt install clang-10 llvm-10

>       o source edksetup.sh

>       o make -C BaseTools

>       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

> After the commit:

>   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

>     VS2019 FAIL

>       o Install

>         https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe

>       o Install VS2019

>       o edksetup.bat Rebuild

>       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019

>      o

>   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

>     GCC5 PASS

>       o sudo apt install clang-10 llvm-10

>       o source edksetup.sh

>       o make -C BaseTools

>       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

> Thanks,

> Gua

> -----Original Message-----

> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca

> Cran

> Sent: Wednesday, March 22, 2023 9:31 AM

> To: devel@edk2.groups.io; Kinney, Michael D

> <michael.d.kinney@...>; Gao, Liming <gaoliming@...>;

> Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C

> <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew

> Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard

> Biesheuvel <ardb+tianocore@...>; Justen, Jordan L

> <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>

> Cc: Rebecca Cran <rebecca@...>

> Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this

> causes the following linker errors when building OvmfPkgX64.dsc:

> ld.lld: error: relocation R_X86_64_64 cannot be used against local

> symbol; recompile with -fPIC

> >>> defined in

> >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

> >>> referenced by

> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

> >>> ExceptionHandlerAsm.obj:(.text+0x5) in archive

> >>> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC

> >>> puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU

> >>> TPUT/SecPeiCpuExceptionHandlerLib.lib

> ld.lld: error: relocation R_X86_64_64 cannot be used against local

> symbol; recompile with -fPIC

> >>> defined in

> >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

> >>> referenced by

> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

> >>> ExceptionHandlerAsm.obj:(.text+0x14) in archive

> >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >>> onHandlerLib.lib

> To avoid this, use the default ld (which is normally GNU ld) instead.

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

> ---

> 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 471eb67c0c83..a790366063ea 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

> @@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS =

> DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries

> using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64

> -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

> +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

> +

> +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      = DEF(GCC_ARM_CC_FLAGS)

> 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

>  ####################################################################################

> #

> @@ -2845,106 +2834,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

>


Rebecca Cran
 

Also "where clang" please.

And could you provide more of the build output please? Perhaps on https://pastebin.com/ ?


Thanks.

Rebecca Cran

On 3/22/23 4:07 PM, Guo, Gua wrote:

Mine are:

-----Original Message-----
From: Rebecca Cran <rebecca@...>
Sent: Wednesday, March 22, 2023 9:11 PM
To: Guo, Gua <gua.guo@...>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>
Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38

I'm not seeing this failure. Could you tell me what the following commands print, please:

where clang

where lld

Mine are:

C:\Users\bcran\Documents\src\uefi\edk2>where clang

C:\Program Files\LLVM\bin\clang.exe

C:\Program Files (x86)\Microsoft Visual

Studio\2019\Professional\VC\Tools\Llvm\bin\clang.exe

C:\Users\bcran\Documents\src\uefi\edk2>where lld

C:\Program Files\LLVM\bin\lld.exe

C:\Program Files (x86)\Microsoft Visual

Studio\2019\Professional\VC\Tools\Llvm\bin\lld.exe

Also, could you provide more of the output?

On 3/21/23 10:57 PM, Guo, Gua wrote:

Try to verify the patch on my local. Could you help to check whether
it happen on your side ?
Please make sure windows build is not broken before code submitting.
Before the commit:
   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     VS2019 PASS
       o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

       o Install VS2019
       o edksetup.bat Rebuild
       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019
   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     GCC5 PASS
      o sudo apt install clang-10 llvm-10
       o source edksetup.sh
       o make -C BaseTools
       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5
After the commit:
   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     VS2019 FAIL
       o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

       o Install VS2019
       o edksetup.bat Rebuild
       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019
      o
   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     GCC5 PASS
       o sudo apt install clang-10 llvm-10
       o source edksetup.sh
       o make -C BaseTools
       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5
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 22, 2023 9:31 AM
To: devel@edk2.groups.io <mailto:devel@edk2.groups.io>; Kinney,
Michael D

<michael.d.kinney@... <mailto:michael.d.kinney@...>>;
Gao, Liming <gaoliming@... <mailto:gaoliming@...>>;

Liu, Zhiguang <zhiguang.liu@...
<mailto:zhiguang.liu@...>>; Feng, Bob C

<bob.c.feng@... <mailto:bob.c.feng@...>>; Chen,
Christine <yuwei.chen@... <mailto:yuwei.chen@...>>; Andrew

Fish <afish@... <mailto:afish@...>>; Leif Lindholm
<quic_llindhol@... <mailto:quic_llindhol@...>>; Ard

Biesheuvel <ardb+tianocore@...
<mailto:ardb+tianocore@...>>; Justen, Jordan L

<jordan.l.justen@... <mailto:jordan.l.justen@...>>; Gerd
Hoffmann <kraxel@... <mailto:kraxel@...>>

Cc: Rebecca Cran <rebecca@... <mailto:rebecca@...>>
Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this
causes the following linker errors when building OvmfPkgX64.dsc:
ld.lld: error: relocation R_X86_64_64 cannot be used against local
symbol; recompile with -fPIC
defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x5) in archive
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC
puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU
TPUT/SecPeiCpuExceptionHandlerLib.lib
ld.lld: error: relocation R_X86_64_64 cannot be used against local
symbol; recompile with -fPIC
defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x14) in archive
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce
ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti
onHandlerLib.lib
To avoid this, use the default ld (which is normally GNU ld) instead.
Signed-off-by: Rebecca Cran <rebecca@...
<mailto:rebecca@...>>

---
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 471eb67c0c83..a790366063ea 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 <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 <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 <https://acpica.org/downloads>
+# Required to compile nasm source:
+# nasm compiler from
+# NASM -- https://nasm.us <https://nasm.us>
#   CLANGPDB -Linux, Windows, Mac- Requires:
#                             Clang 9 or above from
http://releases.llvm.org/ <http://releases.llvm.org/>
#                        Optional:
# Required to compile nasm source:
# nasm compiler from
# NASM -- http://www.nasm.us/ <http://www.nasm.us/>
-#   CLANGDWARF -Linux, Windows, Mac- Requires:
-# Clang 9 or above from
http://releases.llvm.org/ <http://releases.llvm.org/>
-#                        Optional:
-# Required to compile nasm source:
-# nasm compiler from
-#         NASM -- http://www.nasm.us/ <http://www.nasm.us/>
#   VS2008x86   -win64-  Requires:
# Microsoft Visual Studio 2008 (x86)
# Microsoft Windows Server 2003 Driver
Development Kit (Microsoft WINDDK) version 3790.1830
@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS =
DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries
using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64
-Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3
+
+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      = DEF(GCC_ARM_CC_FLAGS)
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
 ####################################################################################

#
@@ -2845,106 +2834,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


Guo, Gua
 

For "where clang"

 

For full build log based on

 

About Fail full log and Pass full log

> git clone https://github.com/bcran/edk2.git --recursive

> git checkout clangdwarf

> edksetup Rebuild

> py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019 > BuildLogDWARF_FAIL.log <- Attachment

> git -dfx

> rm -rf Build

> edksetup Rebuild

> py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019 > BuildLogDWARF_PASS.log <- Attachment

 

Thanks,

Gua

-----Original Message-----
From: Rebecca Cran <rebecca@...>
Sent: Thursday, March 23, 2023 6:24 AM
To: Guo, Gua <gua.guo@...>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>
Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38

 

Also "where clang" please.

 

And could you provide more of the build output please? Perhaps on https://pastebin.com/ ?

 

 

Thanks.

 

Rebecca Cran

 

 

On 3/22/23 4:07 PM, Guo, Gua wrote:

> Mine are:

> -----Original Message-----

> From: Rebecca Cran <rebecca@...>

> Sent: Wednesday, March 22, 2023 9:11 PM

> To: Guo, Gua <gua.guo@...>; devel@edk2.groups.io; Kinney,

> Michael D <michael.d.kinney@...>; Gao, Liming

> <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>;

> Feng, Bob C <bob.c.feng@...>; Chen, Christine

> <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm

> <quic_llindhol@...>; Ard Biesheuvel

> <ardb+tianocore@...>; Justen, Jordan L

> <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>

> Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF

> toolchain and remove CLANG35 and CLANG38

> I'm not seeing this failure. Could you tell me what the following

> commands print, please:

> where clang

> where lld

> Mine are:

> C:\Users\bcran\Documents\src\uefi\edk2>where clang

> C:\Program Files\LLVM\bin\clang.exe

> C:\Program Files (x86)\Microsoft Visual

> Studio\2019\Professional\VC\Tools\Llvm\bin\clang.exe

> C:\Users\bcran\Documents\src\uefi\edk2>where lld

> C:\Program Files\LLVM\bin\lld.exe

> C:\Program Files (x86)\Microsoft Visual

> Studio\2019\Professional\VC\Tools\Llvm\bin\lld.exe

> Also, could you provide more of the output?

> On 3/21/23 10:57 PM, Guo, Gua wrote:

> >

> > Try to verify the patch on my local. Could you help to check whether

> > it happen on your side ?

> >

> > Please make sure windows build is not broken before code submitting.

> >

> > Before the commit:

> >

> >   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

> >     VS2019 PASS

> >       o Install

> >

> https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe

> <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

> >       o Install VS2019

> >       o edksetup.bat Rebuild

> >       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019

> >

> >   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

> >     GCC5 PASS

> >       o sudo apt install clang-10 llvm-10

> >       o source edksetup.sh

> >       o make -C BaseTools

> >       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

> >

> > After the commit:

> >

> >   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

> >     VS2019 FAIL

> >       o Install

> >

> https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe

> <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

> >       o Install VS2019

> >       o edksetup.bat Rebuild

> >       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019

> >      o

> >

> >   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t

> >     GCC5 PASS

> >       o sudo apt install clang-10 llvm-10

> >       o source edksetup.sh

> >       o make -C BaseTools

> >       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5

> >

> > 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 22, 2023 9:31 AM

> >

> > To: devel@edk2.groups.io <mailto:devel@edk2.groups.io>; Kinney,

> Michael D

> > <michael.d.kinney@... <mailto:michael.d.kinney@...>>;

> Gao, Liming <gaoliming@... <mailto:gaoliming@...>>;

> > Liu, Zhiguang <zhiguang.liu@...

> <mailto:zhiguang.liu@...>>; Feng, Bob C

> > <bob.c.feng@... <mailto:bob.c.feng@...>>; Chen,

> Christine <yuwei.chen@... <mailto:yuwei.chen@...>>; Andrew

> > Fish <afish@... <mailto:afish@...>>; Leif Lindholm

> <quic_llindhol@... <mailto:quic_llindhol@...>>; Ard

> > Biesheuvel <ardb+tianocore@...

> <mailto:ardb+tianocore@...>>; Justen, Jordan L

> > <jordan.l.justen@... <mailto:jordan.l.justen@...>>; Gerd

> Hoffmann <kraxel@... <mailto:kraxel@...>>

> >

> > Cc: Rebecca Cran <rebecca@... <mailto:rebecca@...>>

> >

> > Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this

> > causes the following linker errors when building OvmfPkgX64.dsc:

> >

> > ld.lld: error: relocation R_X86_64_64 cannot be used against local

> > symbol; recompile with -fPIC

> >

> > >>> defined in

> >

> > >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >

> > >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >

> > >>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

> >

> > >>> referenced by

> >

> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

> >

> > >>> ExceptionHandlerAsm.obj:(.text+0x5) in archive

> >

> > >>> /home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC

> >

> > >>> puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU

> >

> > >>> TPUT/SecPeiCpuExceptionHandlerLib.lib

> >

> > ld.lld: error: relocation R_X86_64_64 cannot be used against local

> > symbol; recompile with -fPIC

> >

> > >>> defined in

> >

> > >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >

> > >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >

> > >>> onHandlerLib.lib(ExceptionHandlerAsm.obj)

> >

> > >>> referenced by

> >

> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

> >

> > >>> ExceptionHandlerAsm.obj:(.text+0x14) in archive

> >

> > >>> edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

> >

> > >>> ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

> >

> > >>> onHandlerLib.lib

> >

> > To avoid this, use the default ld (which is normally GNU ld) instead.

> >

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

> <mailto:rebecca@...>>

> >

> > ---

> >

> > 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 471eb67c0c83..a790366063ea 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 <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 <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 <https://acpica.org/downloads>

> >

> > +# Required to compile nasm source:

> >

> > +# nasm compiler from

> >

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

> >

> > #   CLANGPDB -Linux, Windows, Mac- Requires:

> >

> > #                             Clang 9 or above from

> > http://releases.llvm.org/ <http://releases.llvm.org/>

> >

> > #                        Optional:

> >

> > # Required to compile nasm source:

> >

> > # nasm compiler from

> >

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

> >

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

> >

> > -# Clang 9 or above from

> > http://releases.llvm.org/ <http://releases.llvm.org/>

> >

> > -#                        Optional:

> >

> > -# Required to compile nasm source:

> >

> > -# nasm compiler from

> >

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

> >

> > #   VS2008x86   -win64-  Requires:

> >

> > # Microsoft Visual Studio 2008 (x86)

> >

> > # Microsoft Windows Server 2003 Driver

> > Development Kit (Microsoft WINDDK) version 3790.1830

> >

> > @@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS =

> > DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries

> > using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64

> > -Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small

> >

> > +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(GCC5_X64_DLINK2_FLAGS) -O3

> >

> > +

> >

> > +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      = DEF(GCC_ARM_CC_FLAGS)

> > 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

> >

> >

>  ####################################################################################

> >

> > #

> >

> > @@ -2845,106 +2834,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

> >

> >

> >


Rebecca Cran
 

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:


The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.
Just to confirm, I'll keep lld for X64 and IA32, but I won't add -fuse-ld=lld for ARM or AARCH64 since none of the toolchain definitions currently do so.


The problem with trying to use lld for aarch64 is the following error:


GenFw: ERROR 3000: Invalid
  WriteSections64(): /home/bcran/uefi/edk2/Build/ArmVirtQemu-AARCH64/RELEASE_CLANGDWARF/AARCH64/ArmVirtPkg/MemoryInitPei/MemoryInitPeim/DEBUG/MemoryInit.dll due to its size (> 1 MB), this module requires 4 KB section alignment.


--

Rebecca Cran


Ard Biesheuvel
 

On Thu, 23 Mar 2023 at 02:30, Rebecca Cran <rebecca@...> wrote:

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:


The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.
Just to confirm, I'll keep lld for X64 and IA32, but I won't add
-fuse-ld=lld for ARM or AARCH64 since none of the toolchain definitions
currently do so.


The problem with trying to use lld for aarch64 is the following error:


GenFw: ERROR 3000: Invalid
WriteSections64():
/home/bcran/uefi/edk2/Build/ArmVirtQemu-AARCH64/RELEASE_CLANGDWARF/AARCH64/ArmVirtPkg/MemoryInitPei/MemoryInitPeim/DEBUG/MemoryInit.dll
due to its size (> 1 MB), this module requires 4 KB section alignment.
That seems to be a false positive error in GenFw.

It looks like LLD turns

ADRP
ADD

into

NOP
ADR

if the target is within -/+ 1 MiB but it doesn't update the
relocations, so GenFw goes off into the weeds. I.e..

304: d503201f nop
304: R_AARCH64_ADR_PREL_PG_HI21 .data
308: 100015c1 adr x1, 5c0 <gArmMpCoreInfoPpiGuid>
308: R_AARCH64_ADD_ABS_LO12_NC .data

This is just another indication that using --emit-relocs is a bad
idea, and we should really be building PIE executables and converting
those based on the dynamic relocation instead.

Adding -Wl,--no-relax to the DLINK flags should help with this,
although I notice that there are other LLD related issues, in the ID
map code I added to ArmVirtQemu a while ago, so ArmVirtQemu.dsc still
does not build.


Ard Biesheuvel
 

On Thu, 23 Mar 2023 at 10:04, Ard Biesheuvel <ardb@...> wrote:

On Thu, 23 Mar 2023 at 02:30, Rebecca Cran <rebecca@...> wrote:

On 3/22/23 5:49 AM, Ard Biesheuvel wrote:


The reason I added CLANG3x support for ARM in the past is to ensure
compatibility with the ARM proprietary, Clang based toolchain. At the
time, we went with GNU ld, but I would actually prefer if we could
make this work with LLD as well.
Just to confirm, I'll keep lld for X64 and IA32, but I won't add
-fuse-ld=lld for ARM or AARCH64 since none of the toolchain definitions
currently do so.


The problem with trying to use lld for aarch64 is the following error:


GenFw: ERROR 3000: Invalid
WriteSections64():
/home/bcran/uefi/edk2/Build/ArmVirtQemu-AARCH64/RELEASE_CLANGDWARF/AARCH64/ArmVirtPkg/MemoryInitPei/MemoryInitPeim/DEBUG/MemoryInit.dll
due to its size (> 1 MB), this module requires 4 KB section alignment.
That seems to be a false positive error in GenFw.

It looks like LLD turns

ADRP
ADD

into

NOP
ADR

if the target is within -/+ 1 MiB but it doesn't update the
relocations, so GenFw goes off into the weeds. I.e..

304: d503201f nop
304: R_AARCH64_ADR_PREL_PG_HI21 .data
308: 100015c1 adr x1, 5c0 <gArmMpCoreInfoPpiGuid>
308: R_AARCH64_ADD_ABS_LO12_NC .data

This is just another indication that using --emit-relocs is a bad
idea, and we should really be building PIE executables and converting
those based on the dynamic relocation instead.

Adding -Wl,--no-relax to the DLINK flags should help with this,
although I notice that there are other LLD related issues, in the ID
map code I added to ArmVirtQemu a while ago, so ArmVirtQemu.dsc still
does not build.
So I played around with this a bit more, also on ARM, and it seems to
me that simply disabling PIE linking is the best approach here - the
PE/COFF conversion essentially turns it into a relocatable binary
already, and so PIE linking does not actually add anything useful
here, and on ARM, the resulting ELF binary triggers an assert in GenFw

So adding

-fuse-ld=lld -Wl,--no-relax,--no-pie

to both CLANG38_AARCH64_DLINK_FLAGS and CLANG38_ARM_DLINK_FLAGS works
for me locally, i.e., builds complete without errors and can boot
successfully.

We will also be able to drop the GccLto plugin pass through libraries,
which is rather nice as well.


Rebecca Cran
 

I'm not able to reproduce the failure you're seeing.

The error message, "clang: error: unable to execute command: program not executable" looks like it would be a temporary failure. Could you try again?

Also, you said to install LLVM 11.0.0, but you apparently have 12.0.1 installed?


--
Rebecca Cran

On 3/22/23 4:46 PM, Guo, Gua wrote:

For "where clang"

For full build log based on

About Fail full log and Pass full log

git clone https://github.com/bcran/edk2.git --recursive
git checkout clangdwarf
edksetup Rebuild
py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019 >
BuildLogDWARF_FAIL.log <- Attachment

git -dfx
rm -rf Build
edksetup Rebuild
py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019 >
BuildLogDWARF_PASS.log <- Attachment

Thanks,

Gua

-----Original Message-----
From: Rebecca Cran <rebecca@...>
Sent: Thursday, March 23, 2023 6:24 AM
To: Guo, Gua <gua.guo@...>; devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@...>; Gao, Liming <gaoliming@...>; Liu, Zhiguang <zhiguang.liu@...>; Feng, Bob C <bob.c.feng@...>; Chen, Christine <yuwei.chen@...>; Andrew Fish <afish@...>; Leif Lindholm <quic_llindhol@...>; Ard Biesheuvel <ardb+tianocore@...>; Justen, Jordan L <jordan.l.justen@...>; Gerd Hoffmann <kraxel@...>
Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF toolchain and remove CLANG35 and CLANG38

Also "where clang" please.

And could you provide more of the build output please? Perhaps on https://pastebin.com/ <https://pastebin.com/> ?

Thanks.

Rebecca Cran

On 3/22/23 4:07 PM, Guo, Gua wrote:

Mine are:
-----Original Message-----
From: Rebecca Cran <rebecca@... <mailto:rebecca@...>>
Sent: Wednesday, March 22, 2023 9:11 PM
To: Guo, Gua <gua.guo@... <mailto:gua.guo@...>>;
devel@edk2.groups.io <mailto:devel@edk2.groups.io>; Kinney,

Michael D <michael.d.kinney@...
<mailto:michael.d.kinney@...>>; Gao, Liming

<gaoliming@... <mailto:gaoliming@...>>; Liu,
Zhiguang <zhiguang.liu@... <mailto:zhiguang.liu@...>>;

Feng, Bob C <bob.c.feng@... <mailto:bob.c.feng@...>>;
Chen, Christine

<yuwei.chen@... <mailto:yuwei.chen@...>>; Andrew Fish
<afish@... <mailto:afish@...>>; Leif Lindholm

<quic_llindhol@... <mailto:quic_llindhol@...>>; Ard
Biesheuvel

<ardb+tianocore@... <mailto:ardb+tianocore@...>>;
Justen, Jordan L

<jordan.l.justen@... <mailto:jordan.l.justen@...>>; Gerd
Hoffmann <kraxel@... <mailto:kraxel@...>>

Subject: Re: [edk2-devel] [PATCH 3/9] BaseTools: Update CLANGDWARF
toolchain and remove CLANG35 and CLANG38
I'm not seeing this failure. Could you tell me what the following
commands print, please:
where clang
where lld
Mine are:
C:\Users\bcran\Documents\src\uefi\edk2>where clang
C:\Program Files\LLVM\bin\clang.exe
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Professional\VC\Tools\Llvm\bin\clang.exe
C:\Users\bcran\Documents\src\uefi\edk2>where lld
C:\Program Files\LLVM\bin\lld.exe
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Professional\VC\Tools\Llvm\bin\lld.exe
Also, could you provide more of the output?
On 3/21/23 10:57 PM, Guo, Gua wrote:
Try to verify the patch on my local. Could you help to check whether
it happen on your side ?
Please make sure windows build is not broken before code submitting.
Before the commit:
   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     VS2019 PASS
       o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

<https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>>

       o Install VS2019
       o edksetup.bat Rebuild
       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019
   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     GCC5 PASS
      o sudo apt install clang-10 llvm-10
       o source edksetup.sh
       o make -C BaseTools
       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5
After the commit:
   * Windows 10: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     VS2019 FAIL
       o Install
https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>

<https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe <https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe>>

       o Install VS2019
       o edksetup.bat Rebuild
       o py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t VS2019
      o
   * Ubuntu 20.04: py -3 UefiPayloadPkg\UniversalPayloadBuild.py -t
     GCC5 PASS
       o sudo apt install clang-10 llvm-10
       o source edksetup.sh
       o make -C BaseTools
       o python3 UefiPayloadPkg/UniversalPayloadBuild.py -t GCC5
Thanks,
Gua
-----Original Message-----
From: devel@edk2.groups.io <mailto:devel@edk2.groups.io>
<mailto:devel@edk2.groups.io <mailto:devel@edk2.groups.io>>

<devel@edk2.groups.io <mailto:devel@edk2.groups.io
<mailto:devel@edk2.groups.io%20%3cmailto:devel@edk2.groups.io>>> On Behalf Of Rebecca

Cran
Sent: Wednesday, March 22, 2023 9:31 AM
To: devel@edk2.groups.io <mailto:devel@edk2.groups.io>
<mailto:devel@edk2.groups.io <mailto:devel@edk2.groups.io>>; Kinney,

Michael D
<michael.d.kinney@... <mailto:michael.d.kinney@...
<mailto:michael.d.kinney@...%20%3cmailto:michael.d.kinney@...>>>;

Gao, Liming <gaoliming@...
<mailto:gaoliming@... <mailto:gaoliming@...%20%3cmailto:gaoliming@...>>>;

Liu, Zhiguang <zhiguang.liu@...
<mailto:zhiguang.liu@... <mailto:zhiguang.liu@...>>>;
Feng, Bob C

<bob.c.feng@... <mailto:bob.c.feng@...
<mailto:bob.c.feng@...%20%3cmailto:bob.c.feng@...>>>; Chen,

Christine <yuwei.chen@... <mailto:yuwei.chen@...
<mailto:yuwei.chen@...%20%3cmailto:yuwei.chen@...>>>; Andrew

Fish <afish@... <mailto:afish@...
<mailto:afish@...%20%3cmailto:afish@...>>>; Leif Lindholm

<quic_llindhol@... <mailto:quic_llindhol@...
<mailto:quic_llindhol@...%20%3cmailto:quic_llindhol@...>>>; Ard

Biesheuvel <ardb+tianocore@...
<mailto:ardb+tianocore@...
<mailto:ardb+tianocore@...>>>; Justen, Jordan L

<jordan.l.justen@... <mailto:jordan.l.justen@...
<mailto:jordan.l.justen@...%20%3cmailto:jordan.l.justen@...>>>; Gerd

Hoffmann <kraxel@... <mailto:kraxel@...
<mailto:kraxel@...%20%3cmailto:kraxel@...>>>

Cc: Rebecca Cran <rebecca@... <mailto:rebecca@...
<mailto:rebecca@...%20%3cmailto:rebecca@...>>>

Subject: [edk2-devel] [PATCH 3/9] 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 existing CLANGDWARF toolchain definition used ld.lld, but this
causes the following linker errors when building OvmfPkgX64.dsc:
ld.lld: error: relocation R_X86_64_64 cannot be used against local
symbol; recompile with -fPIC
defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x5) in archive
/home/bcran/src/uefi/edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiC

puPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OU

TPUT/SecPeiCpuExceptionHandlerLib.lib
ld.lld: error: relocation R_X86_64_64 cannot be used against local
symbol; recompile with -fPIC
defined in
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

onHandlerLib.lib(ExceptionHandlerAsm.obj)
referenced by
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/X64/ExceptionHandlerAsm.iii

ExceptionHandlerAsm.obj:(.text+0x14) in archive
edk2/Build/OvmfX64/RELEASE_CLANGDWARF/X64/UefiCpuPkg/Library/CpuExce

ptionHandlerLib/SecPeiCpuExceptionHandlerLib/OUTPUT/SecPeiCpuExcepti

onHandlerLib.lib
To avoid this, use the default ld (which is normally GNU ld) instead.
Signed-off-by: Rebecca Cran <rebecca@...
<mailto:rebecca@... <mailto:rebecca@...>>>
---
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 471eb67c0c83..a790366063ea 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 <https://acpica.org/downloads>
<https://acpica.org/downloads <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 <https://acpica.org/downloads>
<https://acpica.org/downloads <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 <https://acpica.org/downloads>
<https://acpica.org/downloads <https://acpica.org/downloads>>

+# Required to compile nasm source:
+# nasm compiler from
+# NASM -- https://nasm.us <https://nasm.us> <https://nasm.us
<https://nasm.us>>

#   CLANGPDB -Linux, Windows, Mac- Requires:
# Clang 9 or above from
http://releases.llvm.org/ <http://releases.llvm.org/>
<http://releases.llvm.org/ <http://releases.llvm.org/>>

# Optional:
# Required to compile nasm source:
# nasm compiler from
# NASM -- http://www.nasm.us/ <http://www.nasm.us/>
<http://www.nasm.us/ <http://www.nasm.us/>>

-#   CLANGDWARF -Linux, Windows, Mac- Requires:
-# Clang 9 or above from
http://releases.llvm.org/ <http://releases.llvm.org/>
<http://releases.llvm.org/ <http://releases.llvm.org/>>

-# Optional:
-# Required to compile nasm source:
-# nasm compiler from
-#         NASM -- http://www.nasm.us/ <http://www.nasm.us/>
<http://www.nasm.us/ <http://www.nasm.us/>>

#   VS2008x86   -win64- Requires:
# Microsoft Visual Studio 2008 (x86)
# Microsoft Windows Server 2003 Driver
Development Kit (Microsoft WINDDK) version 3790.1830
@@ -2565,187 +2554,187 @@ RELEASE_CLANG35_AARCH64_CC_FLAGS =
DEF(CLANG35_AARCH64_CC_FLAGS) $(PLATFORM_FLAG  #  PE/COFF binaries
using LLVM/Clang 3.8 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,-Oz -Wl,-melf_x86_64
-Wl,--oformat=elf64-x86-64 -Wl,-pie -mcmodel=small
+RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   =
DEF(GCC5_X64_DLINK2_FLAGS) -O3

+
+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      = DEF(GCC_ARM_CC_FLAGS)
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
 ####################################################################################

#
@@ -2845,106 +2834,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