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


Philippe Mathieu-Daudé <philmd@...>
 

On 5/25/20 4:38 AM, Andrew Fish via groups.io wrote:
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1202

Turn on LTO for XCODE.
Typo "XCOODE" in subject. If you want to keep it, I wont object :)


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


Bob Feng
 

Andrew,

Would you please update the BZ status to IN_PROGRESS? And paste the patch review link to the comments?

Reviewed-by: Bob Feng <bob.c.feng@...>

Thanks,
Bob

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Andrew Fish via groups.io
Sent: Monday, May 25, 2020 10:38 AM
To: devel@edk2.groups.io
Cc: Andrew Fish <afish@...>; Gao, Liming <liming.gao@...>; Liu, Zhiguang <zhiguang.liu@...>
Subject: [edk2-devel] [PATCH 1/1] BaseTools: Turn on Link Time Optimization (LTO) for XCOODE

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

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.template
index 923517b5c296..efe8e47af851 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -2927,9 +2927,9 @@ RELEASE_XCODE5_*_MTOC_FLAGS = -align 0x20
#################### # IA-32 definitions ####################- DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+ DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto NOOPT_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map-RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto *_XCODE5_IA32_SLINK_FLAGS = -static -o DEBUG_XCODE5_IA32_ASM_FLAGS = -arch i386 -g@@ -2938,16 +2938,16 @@ RELEASE_XCODE5_IA32_ASM_FLAGS = -arch i386
*_XCODE5_IA32_NASM_FLAGS = -f macho32 - DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)-RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)+ DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -flto -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)+RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -flto -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) NOOPT_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -O0 -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) ################## # X64 definitions ##################- DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+ DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -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 NOOPT_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map-RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -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 *_XCODE5_X64_SLINK_FLAGS = -static -o DEBUG_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g@@ -2957,9 +2957,9 @@ RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64
*_XCODE5_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h *_XCODE5_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(MODULE_NAME)StrDefs.h - DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)+ DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -flto -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)-RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)+RELEASE_XCODE5_X64_CC_FLAGS = -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-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=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) #################################################################################### #--
2.24.1 (Apple Git-126)


-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#60202): https://edk2.groups.io/g/devel/message/60202
Mute This Topic: https://groups.io/mt/74449794/1768742
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [bob.c.feng@...] -=-=-=-=-=-=


Liming Gao
 

Reviewed-by: Liming Gao <liming.gao@...>

I suggest to include the message in this commit message on how to disable LTO for source level debug.

[BuildOptions]
XCODE:*_*_*_CC_FLAGS = -O0 -fno-lto

Thanks
Liming

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Andrew Fish via groups.io
Sent: 2020年5月25日 10:38
To: devel@edk2.groups.io
Cc: Andrew Fish <afish@...>; Gao, Liming <liming.gao@...>; Liu, Zhiguang <zhiguang.liu@...>
Subject: [edk2-devel] [PATCH 1/1] BaseTools: Turn on Link Time Optimization (LTO) for XCOODE

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

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.template
index 923517b5c296..efe8e47af851 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -2927,9 +2927,9 @@ RELEASE_XCODE5_*_MTOC_FLAGS = -align 0x20
#################### # IA-32 definitions ####################- DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+ DEBUG_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto NOOPT_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map-RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+RELEASE_XCODE5_IA32_DLINK_FLAGS = -arch i386 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -read_only_relocs suppress -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map -object_path_lto $(DEST_DIR_DEBUG)/$(BASE_NAME).lto *_XCODE5_IA32_SLINK_FLAGS = -static -o DEBUG_XCODE5_IA32_ASM_FLAGS = -arch i386 -g@@ -2938,16 +2938,16 @@ RELEASE_XCODE5_IA32_ASM_FLAGS = -arch i386
*_XCODE5_IA32_NASM_FLAGS = -f macho32 - DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)-RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)+ DEBUG_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -Os -flto -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS)+RELEASE_XCODE5_IA32_CC_FLAGS = -arch i386 -c -Os -flto -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -Wno-unused-const-variable -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) NOOPT_XCODE5_IA32_CC_FLAGS = -arch i386 -c -g -O0 -Wall -Werror -include AutoGen.h -funsigned-char -fno-stack-protector -fno-builtin -fshort-wchar -fasm-blocks -mdynamic-no-pic -mno-implicit-float -mms-bitfields -msoft-float -Wno-unused-parameter -Wno-missing-braces -Wno-missing-field-initializers -Wno-tautological-compare -Wno-sign-compare -Wno-varargs -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang $(PLATFORM_FLAGS) ################## # X64 definitions ##################- DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+ DEBUG_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -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 NOOPT_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map-RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -e _$(IMAGE_ENTRY_POINT) -preload -segalign 0x20 -pie -all_load -dead_strip -seg1addr 0x240 -map $(DEST_DIR_DEBUG)/$(BASE_NAME).map+RELEASE_XCODE5_X64_DLINK_FLAGS = -arch x86_64 -u _$(IMAGE_ENTRY_POINT) -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 *_XCODE5_X64_SLINK_FLAGS = -static -o DEBUG_XCODE5_X64_ASM_FLAGS = -arch x86_64 -g@@ -2957,9 +2957,9 @@ RELEASE_XCODE5_X64_ASM_FLAGS = -arch x86_64
*_XCODE5_*_PP_FLAGS = -E -x assembler-with-cpp -include AutoGen.h *_XCODE5_*_VFRPP_FLAGS = -x c -E -P -DVFRCOMPILE -include $(MODULE_NAME)StrDefs.h - DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)+ DEBUG_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -Os -flto -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) NOOPT_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -g -gdwarf -O0 -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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 -ftrap-function=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)-RELEASE_XCODE5_X64_CC_FLAGS = -target x86_64-pc-win32-macho -c -Os -Wall -Werror -Wextra -include AutoGen.h -funsigned-char -fno-ms-extensions -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=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS)+RELEASE_XCODE5_X64_CC_FLAGS = -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-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=undefined_behavior_has_been_optimized_away_by_clang -D NO_MSABI_VA_FUNCS $(PLATFORM_FLAGS) #################################################################################### #--
2.24.1 (Apple Git-126)


-=-=-=-=-=-=
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#60202): https://edk2.groups.io/g/devel/message/60202
Mute This Topic: https://groups.io/mt/74449794/1759384
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [liming.gao@...] -=-=-=-=-=-=