blob: 0165fae7ce234fa649b6ea86cb08d17efa214f3b [file] [log] [blame]
William A. Kennington IIIac69b482021-06-02 12:28:27 -07001We want to pass ${DEBUG_PREFIX_MAP} to gcc commands and also pass in
2 --debug-prefix-map to nasm (we carry a patch to nasm for this). The
3tools definitions file is built by ovmf-native so we need to pass this in
4at target build time when we know the right values so we use the environment.
5
6By using determininistc file paths during the ovmf build, it removes the
7opportunitity for gcc/ld to change the output binaries due to path lengths
8overflowing section sizes and causing small changes in the binary output.
9Previously we relied on the stripped output being the same which isn't always
10the case if the size of the debug symbols varies.
11
12Upstream-Status: Pending [gcc parts may be upstreamable, nasm patch isn't upstream yet]
13Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
14
15
16Index: git/BaseTools/Conf/tools_def.template
17===================================================================
18--- git.orig/BaseTools/Conf/tools_def.template
19+++ git/BaseTools/Conf/tools_def.template
20@@ -1918,7 +1918,7 @@ NOOPT_*_*_OBJCOPY_ADDDEBUGFLAG = --a
21 *_*_*_DTCPP_PATH = DEF(DTCPP_BIN)
22 *_*_*_DTC_PATH = DEF(DTC_BIN)
23
24-DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common
25+DEFINE GCC_ALL_CC_FLAGS = -g -Os -fshort-wchar -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h -fno-common ENV(GCC_PREFIX_MAP)
26 DEFINE GCC_IA32_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -m32 -malign-double -freorder-blocks -freorder-blocks-and-partition -O2 -mno-stack-arg-probe
27 DEFINE GCC_X64_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mno-red-zone -Wno-address -mno-stack-arg-probe
28 DEFINE GCC_ARM_CC_FLAGS = DEF(GCC_ALL_CC_FLAGS) -mlittle-endian -mabi=aapcs -fno-short-enums -funsigned-char -ffunction-sections -fdata-sections -fomit-frame-pointer -Wno-address -mthumb -mfloat-abi=soft -fno-pic -fno-pie
29@@ -1936,8 +1936,8 @@ DEFINE GCC_IA32_X64_ASLDLINK_FLAGS = -fu
30 DEFINE GCC_ARM_ASLDLINK_FLAGS = DEF(GCC_ARM_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
31 DEFINE GCC_AARCH64_ASLDLINK_FLAGS = DEF(GCC_AARCH64_DLINK_FLAGS) -Wl,--entry,ReferenceAcpiTable -u $(IMAGE_ENTRY_POINT) DEF(GCC_ARM_AARCH64_ASLDLINK_FLAGS)
32 DEFINE GCC_IA32_X64_DLINK_FLAGS = DEF(GCC_IA32_X64_DLINK_COMMON) --entry _$(IMAGE_ENTRY_POINT) --file-alignment 0x20 --section-alignment 0x20 -Map $(DEST_DIR_DEBUG)/$(BASE_NAME).map
33-DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h
34-DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h
35+DEFINE GCC_ASM_FLAGS = -c -x assembler -imacros AutoGen.h ENV(GCC_PREFIX_MAP)
36+DEFINE GCC_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h ENV(GCC_PREFIX_MAP)
37 DEFINE GCC_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE --include $(MODULE_NAME)StrDefs.h
38 DEFINE GCC_ASLPP_FLAGS = -x c -E -include AutoGen.h
39 DEFINE GCC_ASLCC_FLAGS = -x c
40@@ -2082,7 +2082,7 @@ DEFINE GCC_PP_FLAGS
41 *_GCC48_IA32_DLINK2_FLAGS = DEF(GCC48_IA32_DLINK2_FLAGS)
42 *_GCC48_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
43 *_GCC48_IA32_OBJCOPY_FLAGS =
44-*_GCC48_IA32_NASM_FLAGS = -f elf32
45+*_GCC48_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
46
47 DEBUG_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os
48 RELEASE_GCC48_IA32_CC_FLAGS = DEF(GCC48_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable
49@@ -2110,7 +2110,7 @@ RELEASE_GCC48_IA32_CC_FLAGS = DEF(
50 *_GCC48_X64_DLINK2_FLAGS = DEF(GCC48_X64_DLINK2_FLAGS)
51 *_GCC48_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
52 *_GCC48_X64_OBJCOPY_FLAGS =
53-*_GCC48_X64_NASM_FLAGS = -f elf64
54+*_GCC48_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
55
56 DEBUG_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os
57 RELEASE_GCC48_X64_CC_FLAGS = DEF(GCC48_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable
58@@ -2222,7 +2222,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(G
59 *_GCC49_IA32_DLINK2_FLAGS = DEF(GCC49_IA32_DLINK2_FLAGS)
60 *_GCC49_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
61 *_GCC49_IA32_OBJCOPY_FLAGS =
62-*_GCC49_IA32_NASM_FLAGS = -f elf32
63+*_GCC49_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
64
65 DEBUG_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os
66 RELEASE_GCC49_IA32_CC_FLAGS = DEF(GCC49_IA32_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
67@@ -2250,7 +2250,7 @@ RELEASE_GCC49_IA32_CC_FLAGS = DEF(
68 *_GCC49_X64_DLINK2_FLAGS = DEF(GCC49_X64_DLINK2_FLAGS)
69 *_GCC49_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
70 *_GCC49_X64_OBJCOPY_FLAGS =
71-*_GCC49_X64_NASM_FLAGS = -f elf64
72+*_GCC49_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
73
74 DEBUG_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os
75 RELEASE_GCC49_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -Os -Wno-unused-but-set-variable -Wno-unused-const-variable
76@@ -2368,7 +2368,7 @@ RELEASE_GCC49_AARCH64_DLINK_XIPFLAGS = -
77 *_GCC5_IA32_DLINK2_FLAGS = DEF(GCC5_IA32_DLINK2_FLAGS) -no-pie
78 *_GCC5_IA32_RC_FLAGS = DEF(GCC_IA32_RC_FLAGS)
79 *_GCC5_IA32_OBJCOPY_FLAGS =
80-*_GCC5_IA32_NASM_FLAGS = -f elf32
81+*_GCC5_IA32_NASM_FLAGS = -f elf32 ENV(NASM_PREFIX_MAP)
82
83 DEBUG_GCC5_IA32_CC_FLAGS = DEF(GCC5_IA32_CC_FLAGS) -flto -Os
84 DEBUG_GCC5_IA32_DLINK_FLAGS = DEF(GCC5_IA32_X64_DLINK_FLAGS) -flto -Os -Wl,-m,elf_i386,--oformat=elf32-i386
85@@ -2400,7 +2400,7 @@ RELEASE_GCC5_IA32_DLINK_FLAGS = DEF(G
86 *_GCC5_X64_DLINK2_FLAGS = DEF(GCC5_X64_DLINK2_FLAGS)
87 *_GCC5_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
88 *_GCC5_X64_OBJCOPY_FLAGS =
89-*_GCC5_X64_NASM_FLAGS = -f elf64
90+*_GCC5_X64_NASM_FLAGS = -f elf64 ENV(NASM_PREFIX_MAP)
91
92 DEBUG_GCC5_X64_CC_FLAGS = DEF(GCC5_X64_CC_FLAGS) -flto -DUSING_LTO -Os
93 DEBUG_GCC5_X64_DLINK_FLAGS = DEF(GCC5_X64_DLINK_FLAGS) -flto -Os