[edk2-devel] 回复: [PATCH 1/1] BaseTools: Fix IA32 UINT64 alignment for CLANG toolchains

gaoliming via groups.io gaoliming=byosoft.com.cn at groups.io
Wed Dec 21 01:25:26 UTC 2022


This change is good to me. Reviewed-by: Liming Gao <gaoliming at byosoft.com.cn>

> -----邮件原件-----
> 发件人: Pedro Falcato <pedro.falcato at gmail.com>
> 发送时间: 2022年12月17日 3:50
> 收件人: devel at edk2.groups.io
> 抄送: Pedro Falcato <pedro.falcato at gmail.com>; Marvin Häuser
> <mhaeuser at posteo.de>; Bob Feng <bob.c.feng at intel.com>; Liming Gao
> <gaoliming at byosoft.com.cn>; Yuwei Chen <yuwei.chen at intel.com>
> 主题: [PATCH 1/1] BaseTools: Fix IA32 UINT64 alignment for CLANG
> toolchains
> 
> Currently, UINT64 is not 8-byte aligned for CLANG* toolchains on IA32,
> which causes ABI differences between IA32 and X64 in such simple examples
> as:
> 
> struct S {UINT32 A; UINT64 B;};
> 
> Pass -malign-double to align it to 8 bytes, as is done for GCC already.
> 
> Signed-off-by: Pedro Falcato <pedro.falcato at gmail.com>
> Cc: Marvin Häuser <mhaeuser at posteo.de>
> Cc: Bob Feng <bob.c.feng at intel.com>
> Cc: Liming Gao <gaoliming at byosoft.com.cn>
> Cc: Yuwei Chen <yuwei.chen at intel.com>
> ---
>  BaseTools/Conf/tools_def.template | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template
> b/BaseTools/Conf/tools_def.template
> index c4e4c7ded0af..2c66a11ae31f 100755
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -2618,15 +2618,15 @@ DEFINE CLANG38_ALL_CC_FLAGS         =
> DEF(GCC48_ALL_CC_FLAGS) DEF(CLANG38_WARNIN
>  *_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
> +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)
> +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
> +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
> 
> @@ -2806,15 +2806,15 @@ DEFINE CLANGPDB_ALL_CC_FLAGS         =
> DEF(GCC48_ALL_CC_FLAGS) DEF(CLANGPDB_WARN
>  *_CLANGPDB_IA32_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS)
> DEF(CLANGPDB_IA32_TARGET)
>  *_CLANGPDB_IA32_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS)
> DEF(CLANGPDB_IA32_TARGET)
> 
> -DEBUG_CLANGPDB_IA32_CC_FLAGS         =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586
> DEF(CLANGPDB_IA32_TARGET) -gcodeview
> +DEBUG_CLANGPDB_IA32_CC_FLAGS         =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586
> DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double
>  DEBUG_CLANGPDB_IA32_DLINK_FLAGS      = /NOLOGO
> /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32
> /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL
> /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
> /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh
> /lldmap
>  DEBUG_CLANGPDB_IA32_DLINK2_FLAGS     =
> 
> -RELEASE_CLANGPDB_IA32_CC_FLAGS       =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586
> DEF(CLANGPDB_IA32_TARGET)
> +RELEASE_CLANGPDB_IA32_CC_FLAGS       =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -Oz -flto -march=i586
> DEF(CLANGPDB_IA32_TARGET) -malign-double
>  RELEASE_CLANGPDB_IA32_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB
> /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /ALIGN:32
> /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL
> /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
> /SAFESEH:NO /BASE:0 /MERGE:.rdata=.data
> /MLLVM:-exception-model=wineh /lldmap
>  RELEASE_CLANGPDB_IA32_DLINK2_FLAGS   =
> 
> -NOOPT_CLANGPDB_IA32_CC_FLAGS         =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -O0 -march=i586
> DEF(CLANGPDB_IA32_TARGET) -gcodeview
> +NOOPT_CLANGPDB_IA32_CC_FLAGS         =
> DEF(CLANGPDB_ALL_CC_FLAGS) -m32 -O0 -march=i586
> DEF(CLANGPDB_IA32_TARGET) -gcodeview -malign-double
>  NOOPT_CLANGPDB_IA32_DLINK_FLAGS      = /NOLOGO
> /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /ALIGN:32
> /FILEALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /DLL
> /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER
> /SAFESEH:NO /BASE:0 /DEBUG:GHASH /MLLVM:-exception-model=wineh
> /lldmap
>  NOOPT_CLANGPDB_IA32_DLINK2_FLAGS     =
> 
> @@ -2907,15 +2907,15 @@ DEFINE CLANGDWARF_X64_DLINK2_FLAGS
> = -Wl,--defsym=PECOFF_HEADER_SIZE=0x22
>  *_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
> +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)
> +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
> +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
> 
> --
> 2.39.0





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97644): https://edk2.groups.io/g/devel/message/97644
Mute This Topic: https://groups.io/mt/95798641/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list