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

2022-12-19 Thread Marvin Häuser
Revised version of last year’s https://edk2.groups.io/g/devel/message/79670
Initially caught by last year‘s https://edk2.groups.io/g/devel/message/79318
But now caught *yet again*, independently, via bugs during development.

Cc stewards so this issue finally gets some attention. Might need validation of 
already shipped code, who knows.

Best regards,
Marvin

> On 16. Dec 2022, at 20:54, Pedro Falcato  wrote:
> 
> 
> PS: it's worth noting that at this moment in time, due to this, the CLANG 
> toolchains are very broken as they break the UEFI spec and are silently 
> incompatible with modules compiled in both GCC and MSVC.
> 
> Fixing this should be top priority.
> 
> Pedro


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97586): https://edk2.groups.io/g/devel/message/97586
Mute This Topic: https://groups.io/mt/95717275/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-




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

2022-12-16 Thread Michael D Kinney
Thank you for highlighting the issue.  Makes a lot of sense with same flag used 
for GCC IA32.

Mike

From: Marvin Häuser 
Sent: Friday, December 16, 2022 12:08 PM
To: Pedro Falcato 
Cc: devel@edk2.groups.io; Feng, Bob C ; Gao, Liming 
; Chen, Christine ; Kinney, 
Michael D ; Leif Lindholm 
; Andrew Fish 
Subject: Re: [edk2-devel] [PATCH 1/1] BaseTools: Fix IA32 UINT64 alignment for 
CLANG toolchains

Revised version of last year’s https://edk2.groups.io/g/devel/message/79670
Initially caught by last year‘s https://edk2.groups.io/g/devel/message/79318
But now caught *yet again*, independently, via bugs during development.

Cc stewards so this issue finally gets some attention. Might need validation of 
already shipped code, who knows.

Best regards,
Marvin


On 16. Dec 2022, at 20:54, Pedro Falcato 
mailto:pedro.falc...@gmail.com>> wrote:

PS: it's worth noting that at this moment in time, due to this, the CLANG 
toolchains are very broken as they break the UEFI spec and are silently 
incompatible with modules compiled in both GCC and MSVC.

Fixing this should be top priority.

Pedro


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97516): https://edk2.groups.io/g/devel/message/97516
Mute This Topic: https://groups.io/mt/95717275/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-




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

2022-12-16 Thread Michael D Kinney
Reviewed-by: Michael D Kinney 

Mike

> -Original Message-
> From: devel@edk2.groups.io  On Behalf Of Pedro Falcato
> Sent: Friday, December 16, 2022 11:50 AM
> To: devel@edk2.groups.io
> Cc: Pedro Falcato ; Marvin Häuser 
> ; Feng, Bob C ; Gao,
> Liming ; Chen, Christine 
> Subject: [edk2-devel] [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 
> Cc: Marvin Häuser 
> Cc: Bob Feng 
> Cc: Liming Gao 
> Cc: Yuwei Chen 
> ---
>  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
>

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

2022-12-16 Thread Pedro Falcato
PS: it's worth noting that at this moment in time, due to this, the CLANG
toolchains are very broken as they break the UEFI spec and are silently
incompatible with modules compiled in both GCC and MSVC.

Fixing this should be top priority.

Pedro


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#97513): https://edk2.groups.io/g/devel/message/97513
Mute This Topic: https://groups.io/mt/95717275/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-