[PATCH 1/1] BaseTools: Turn on Link Time Optimization (LTO) for XCOODE


Andrew Fish
 

BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1202

Turn on LTO for XCODE.

We need to pass -object_path_lto <file> to the linker to keep source
level debugging working.

OVMF X64 before:
SECFV [14%Full] 212992 total, 30224 used, 182768 free
PEIFV [29%Full] 917504 total, 273256 used, 644248 free
DXEFV [40%Full] 12582912 total, 5096904 used, 7486008 free
FVMAIN_COMPACT [37%Full] 3440640 total, 1290240 used, 2150400 free

After:
SECFV [10%Full] 212992 total, 23064 used, 189928 free
PEIFV [20%Full] 917504 total, 192328 used, 725176 free
DXEFV [33%Full] 12582912 total, 4193632 used, 8389280 free
FVMAIN_COMPACT [33%Full] 3440640 total, 1165352 used, 2275288 free

Signed-off-by: Andrew Fish <afish@...>
Cc: Liming Gao <liming.gao@...>
Cc: Zhiguang Liu <zhiguang.liu@...>
---
BaseTools/Conf/tools_def.template | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.t=
emplate
index 923517b5c296..efe8e47af851 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -2927,9 +2927,9 @@ RELEASE_XCODE5_*_MTOC_FLAGS =3D -align 0x20
####################=0D
# IA-32 definitions=0D
####################=0D
- DEBUG_XCODE5_IA32_DLINK_FLAGS =3D -arch i386 -u _$(IMAGE_ENTRY_POIN=
T) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_s=
trip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BA=
SE_NAME).map=0D
+ DEBUG_XCODE5_IA32_DLINK_FLAGS =3D -arch i386 -u _$(IMAGE_ENTRY_POIN=
T) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_s=
trip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BA=
SE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto=0D
NOOPT_XCODE5_IA32_DLINK_FLAGS =3D -arch i386 -u _$(IMAGE_ENTRY_POIN=
T) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_s=
trip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BA=
SE_NAME).map=0D
-RELEASE_XCODE5_IA32_DLINK_FLAGS =3D -arch i386 -u _$(IMAGE_ENTRY_POIN=
T) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_s=
trip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BA=
SE_NAME).map=0D
+RELEASE_XCODE5_IA32_DLINK_FLAGS =3D -arch i386 -u _$(IMAGE_ENTRY_POIN=
T) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_s=
trip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BA=
SE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto=0D
=0D
*_XCODE5_IA32_SLINK_FLAGS =3D -static -o=0D
DEBUG_XCODE5_IA32_ASM_FLAGS =3D -arch i386 -g=0D
@@ -2938,16 +2938,16 @@ RELEASE_XCODE5_IA32_ASM_FLAGS =3D -arch i386
*_XCODE5_IA32_NASM_FLAGS =3D -f macho32=0D
=0D
=0D
- DEBUG_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -Os -Wall -Werro=
r -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fsh=
ort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields =
-msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-i=
nitializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap=
-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_=
FLAGS)=0D
-RELEASE_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -Os -Wall -Werro=
r -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fsh=
ort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields =
-msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-i=
nitializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-u=
nused-const-variable -ftrap-function=3Dundefined_behavior_has_been_optimize=
d_away_by_clang $(PLATFORM_FLAGS)=0D
+ DEBUG_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -Os -flto -Wall -Werro=
r -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fsh=
ort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields =
-msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-i=
nitializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap=
-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_=
FLAGS)=0D
+RELEASE_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -Os -flto -Wall -Werro=
r -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fsh=
ort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields =
-msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-i=
nitializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-u=
nused-const-variable -ftrap-function=3Dundefined_behavior_has_been_optimize=
d_away_by_clang $(PLATFORM_FLAGS)=0D
NOOPT_XCODE5_IA32_CC_FLAGS =3D -arch i386 -c -g -O0 -Wall -Werro=
r -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fsh=
ort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields =
-msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-i=
nitializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap=
-function=3Dundefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_=
FLAGS)=0D
=0D
##################=0D
# X64 definitions=0D
##################=0D
- DEBUG_XCODE5_X64_DLINK_FLAGS =3D -arch x86_64 -u _$(IMAGE_ENTRY_POI=
NT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_=
strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map=0D
+ DEBUG_XCODE5_X64_DLINK_FLAGS =3D -arch x86_64 -u _$(IMAGE_ENTRY_POI=
NT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_=
strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_=
lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto=0D
NOOPT_XCODE5_X64_DLINK_FLAGS =3D -arch x86_64 -u _$(IMAGE_ENTRY_POI=
NT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_=
strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map=0D
-RELEASE_XCODE5_X64_DLINK_FLAGS =3D -arch x86_64 -u _$(IMAGE_ENTRY_POI=
NT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_=
strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map=0D
+RELEASE_XCODE5_X64_DLINK_FLAGS =3D -arch x86_64 -u _$(IMAGE_ENTRY_POI=
NT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_=
strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_=
lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto=0D
=0D
*_XCODE5_X64_SLINK_FLAGS =3D -static -o=0D
DEBUG_XCODE5_X64_ASM_FLAGS =3D -arch x86_64 -g=0D
@@ -2957,9 +2957,9 @@ RELEASE_XCODE5_X64_ASM_FLAGS =3D -arch x86_64
*_XCODE5_*_PP_FLAGS =3D -E -x assembler-with-cpp -include AutoGen.=
h=0D
*_XCODE5_*_VFRPP_FLAGS =3D -x c -E -P -DVFRCOMPILE -include $(MODULE_=
NAME)StrDefs.h=0D
=0D
- DEBUG_XCODE5_X64_CC_FLAGS =3D -target x86_64-pc-win32-macho -c -g -gdw=
arf -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno=
-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implici=
t-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missi=
ng-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-vara=
rgs -ftrap-function=3Dundefined_behavior_has_been_optimized_away_by_clang -=
D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)=0D
+ DEBUG_XCODE5_X64_CC_FLAGS =3D -target x86_64-pc-win32-macho -c -g -gdw=
arf -Os -flto -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno=
-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implici=
t-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missi=
ng-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-vara=
rgs -ftrap-function=3Dundefined_behavior_has_been_optimized_away_by_clang -=
D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)=0D
NOOPT_XCODE5_X64_CC_FLAGS =3D -target x86_64-pc-win32-macho -c -g -gdw=
arf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno=
-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implici=
t-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missi=
ng-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-vara=
rgs -ftrap-function=3Dundefined_behavior_has_been_optimized_away_by_clang -=
D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)=0D
-RELEASE_XCODE5_X64_CC_FLAGS =3D -target x86_64-pc-win32-macho -c -Os =
-Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-exte=
nsions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implicit-float =
-mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field=
-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno=
-unused-const-variable -ftrap-function=3Dundefined_behavior_has_been_optimi=
zed_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)=0D
+RELEASE_XCODE5_X64_CC_FLAGS =3D -target x86_64-pc-win32-macho -c =
-Os -flto -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno=
-ms-extensions -fno-stack-protector -fno-builtin -fshort-wchar -mno-implici=
t-float -mms-bitfields -Wno-unused-parameter -Wno-missing-braces -Wno-missi=
ng-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-vara=
rgs -Wno-unused-const-variable -ftrap-function=3Dundefined_behavior_has_bee=
n_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)=0D
=0D
##########################################################################=
##########=0D
#=0D
--=20
2.24.1 (Apple Git-126)

Join devel@edk2.groups.io to automatically receive all group messages.