[edk2-devel] [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds

Gerd Hoffmann posted 11 patches 4 months, 1 week ago
[edk2-devel] [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by Gerd Hoffmann 4 months, 1 week ago
Tell clang to not use external (via got) references for data access.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
---
 BaseTools/Conf/tools_def.template | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
index 503a6687c1f0..92421e3d0118 100755
--- a/BaseTools/Conf/tools_def.template
+++ b/BaseTools/Conf/tools_def.template
@@ -1921,15 +1921,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
 *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
 *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
 
-DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
+DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
 DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
 DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
 
-RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)
+RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
 RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
 RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
 
-NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g
+NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
 NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
 NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
 
-- 
2.40.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105255): https://edk2.groups.io/g/devel/message/105255
Mute This Topic: https://groups.io/mt/99109300/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by Leif Lindholm 1 month, 1 week ago
Since I didn't find any previous record of the fact, I'm replying here 
to say that this change breaks the build with clang11 as packaged in 
Debian "bullseye" (old stable).

If anyone could reply with which version of clang this flag was added 
in, that would be ideal.

Since no one else reported it, I don't see a need to change anything.

/
     Leif

On 2023-05-24 15:05, Gerd Hoffmann wrote:
> Tell clang to not use external (via got) references for data access.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>   BaseTools/Conf/tools_def.template | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
> index 503a6687c1f0..92421e3d0118 100755
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -1921,15 +1921,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
>   *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
>   *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
>   
> -DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
> +DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
>   DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
>   DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
>   
> -RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> +RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
>   RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
>   RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
>   
> -NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g
> +NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
>   NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
>   NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
>   



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107977): https://edk2.groups.io/g/devel/message/107977
Mute This Topic: https://groups.io/mt/99109300/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3901457/1787277/102458076/xyzzy [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by Ard Biesheuvel 1 month, 1 week ago
On Wed, 23 Aug 2023 at 13:09, Leif Lindholm <quic_llindhol@quicinc.com> wrote:
>
> Since I didn't find any previous record of the fact, I'm replying here
> to say that this change breaks the build with clang11 as packaged in
> Debian "bullseye" (old stable).
>
> If anyone could reply with which version of clang this flag was added
> in, that would be ideal.
>

Added here

https://reviews.llvm.org/D92633

Present in branches

main, release/12.x, release/13.x, release/14.x, release/15.x,
release/16.x, release/17.x


> Since no one else reported it, I don't see a need to change anything.
>

OK.

> On 2023-05-24 15:05, Gerd Hoffmann wrote:
> > Tell clang to not use external (via got) references for data access.
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> > ---
> >   BaseTools/Conf/tools_def.template | 6 +++---
> >   1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template
> > index 503a6687c1f0..92421e3d0118 100755
> > --- a/BaseTools/Conf/tools_def.template
> > +++ b/BaseTools/Conf/tools_def.template
> > @@ -1921,15 +1921,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS     = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
> >   *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
> >   *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS) DEF(CLANGDWARF_X64_TARGET)
> >
> > -DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
> > +DEBUG_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
> >   DEBUG_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
> >   DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> >
> > -RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> > +RELEASE_CLANGDWARF_X64_CC_FLAGS       = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> >   RELEASE_CLANGDWARF_X64_DLINK_FLAGS    = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
> >   RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> >
> > -NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0 DEF(CLANGDWARF_X64_TARGET) -g
> > +NOOPT_CLANGDWARF_X64_CC_FLAGS         = DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
> >   NOOPT_CLANGDWARF_X64_DLINK_FLAGS      = DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64 -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small -Wl,--apply-dynamic-relocs
> >   NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     = DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
> >
>
>
>
> 
>
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107979): https://edk2.groups.io/g/devel/message/107979
Mute This Topic: https://groups.io/mt/99109300/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
[edk2-devel] 回复: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by gaoliming via groups.io 4 months ago
Gerd and Ard:
  I want to confirm whether this option should also be added into CLANGPDB_X64_CC_FLAGS.

Thanks
Liming
> -----邮件原件-----
> 发件人: Gerd Hoffmann <kraxel@redhat.com>
> 发送时间: 2023年5月24日 22:06
> 收件人: devel@edk2.groups.io
> 抄送: Daniel Schaefer <git@danielschaefer.me>; Marvin Häuser
> <mhaeuser@posteo.de>; Rebecca Cran <rebecca@bsdio.com>; Oliver Steffen
> <osteffen@redhat.com>; Liming Gao <gaoliming@byosoft.com.cn>; Pawel
> Polawski <ppolawsk@redhat.com>; Chao Li <lichao@loongson.cn>; Ard
> Biesheuvel <ardb+tianocore@kernel.org>; Bob Feng <bob.c.feng@intel.com>;
> Sunil V L <sunilvl@ventanamicro.com>; Michael D Kinney
> <michael.d.kinney@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>;
> Dongyan Qian <qiandongyan@loongson.cn>; Yuwei Chen
> <yuwei.chen@intel.com>; Baoqi Zhang <zhangbaoqi@loongson.cn>; Zhiguang
> Liu <zhiguang.liu@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Ard
> Biesheuvel <ardb@kernel.org>
> 主题: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang
> pie builds
> 
> Tell clang to not use external (via got) references for data access.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  BaseTools/Conf/tools_def.template | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/BaseTools/Conf/tools_def.template
> b/BaseTools/Conf/tools_def.template
> index 503a6687c1f0..92421e3d0118 100755
> --- a/BaseTools/Conf/tools_def.template
> +++ b/BaseTools/Conf/tools_def.template
> @@ -1921,15 +1921,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS
> = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
>  *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS)
> DEF(CLANGDWARF_X64_TARGET)
>  *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS)
> DEF(CLANGDWARF_X64_TARGET)
> 
> -DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> -flto DEF(CLANGDWARF_X64_TARGET) -g
> +DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
>  DEBUG_CLANGDWARF_X64_DLINK_FLAGS      =
> DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> -Wl,--apply-dynamic-relocs
>  DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     =
> DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> 
> -RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> -flto DEF(CLANGDWARF_X64_TARGET)
> +RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
>  RELEASE_CLANGDWARF_X64_DLINK_FLAGS    =
> DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> -Wl,--apply-dynamic-relocs
>  RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   =
> DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> 
> -NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0
> DEF(CLANGDWARF_X64_TARGET) -g
> +NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
>  NOOPT_CLANGDWARF_X64_DLINK_FLAGS      =
> DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64
> -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> -Wl,--apply-dynamic-relocs
>  NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     =
> DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
> 
> --
> 2.40.1






-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105537): https://edk2.groups.io/g/devel/message/105537
Mute This Topic: https://groups.io/mt/99259531/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] 回复: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by Ard Biesheuvel 4 months ago
On Thu, 1 Jun 2023 at 10:01, gaoliming via groups.io
<gaoliming=byosoft.com.cn@groups.io> wrote:
>
> Gerd and Ard:
>   I want to confirm whether this option should also be added into CLANGPDB_X64_CC_FLAGS.
>

As far as I know, PE based toolchains assume that external accesses
are local unless the variable declaration is decorated with
__dllimport.

Also, the reason we need this is not that the codegen is incorrect,
but that it complicates ELF to PE/COFF conversion.

So I don't think this is needed for CLANGPDB



> > -----邮件原件-----
> > 发件人: Gerd Hoffmann <kraxel@redhat.com>
> > 发送时间: 2023年5月24日 22:06
> > 收件人: devel@edk2.groups.io
> > 抄送: Daniel Schaefer <git@danielschaefer.me>; Marvin Häuser
> > <mhaeuser@posteo.de>; Rebecca Cran <rebecca@bsdio.com>; Oliver Steffen
> > <osteffen@redhat.com>; Liming Gao <gaoliming@byosoft.com.cn>; Pawel
> > Polawski <ppolawsk@redhat.com>; Chao Li <lichao@loongson.cn>; Ard
> > Biesheuvel <ardb+tianocore@kernel.org>; Bob Feng <bob.c.feng@intel.com>;
> > Sunil V L <sunilvl@ventanamicro.com>; Michael D Kinney
> > <michael.d.kinney@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>;
> > Dongyan Qian <qiandongyan@loongson.cn>; Yuwei Chen
> > <yuwei.chen@intel.com>; Baoqi Zhang <zhangbaoqi@loongson.cn>; Zhiguang
> > Liu <zhiguang.liu@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Ard
> > Biesheuvel <ardb@kernel.org>
> > 主题: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang
> > pie builds
> >
> > Tell clang to not use external (via got) references for data access.
> >
> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> > ---
> >  BaseTools/Conf/tools_def.template | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/BaseTools/Conf/tools_def.template
> > b/BaseTools/Conf/tools_def.template
> > index 503a6687c1f0..92421e3d0118 100755
> > --- a/BaseTools/Conf/tools_def.template
> > +++ b/BaseTools/Conf/tools_def.template
> > @@ -1921,15 +1921,15 @@ NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS
> > = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
> >  *_CLANGDWARF_X64_ASLPP_FLAGS          = DEF(GCC_ASLPP_FLAGS)
> > DEF(CLANGDWARF_X64_TARGET)
> >  *_CLANGDWARF_X64_VFRPP_FLAGS          = DEF(GCC_VFRPP_FLAGS)
> > DEF(CLANGDWARF_X64_TARGET)
> >
> > -DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > -flto DEF(CLANGDWARF_X64_TARGET) -g
> > +DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET) -g
> >  DEBUG_CLANGDWARF_X64_DLINK_FLAGS      =
> > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > -Wl,--apply-dynamic-relocs
> >  DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     =
> > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> >
> > -RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -Oz
> > -flto DEF(CLANGDWARF_X64_TARGET)
> > +RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> >  RELEASE_CLANGDWARF_X64_DLINK_FLAGS    =
> > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3 -Wl,-melf_x86_64
> > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > -Wl,--apply-dynamic-relocs
> >  RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   =
> > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> >
> > -NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie -O0
> > DEF(CLANGDWARF_X64_TARGET) -g
> > +NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
> >  NOOPT_CLANGDWARF_X64_DLINK_FLAGS      =
> > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64
> > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > -Wl,--apply-dynamic-relocs
> >  NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     =
> > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
> >
> > --
> > 2.40.1
>
>
>
>
>
>
> 
>
>



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105542): https://edk2.groups.io/g/devel/message/105542
Mute This Topic: https://groups.io/mt/99259531/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
回复: [edk2-devel] 回复: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to clang pie builds
Posted by gaoliming via groups.io 4 months ago
Ard:
  Thanks for your clarification.  Acked-by: Liming Gao <gaoliming@byosoft.com.cn>

  I create PR https://github.com/tianocore/edk2/pull/4462 to merge this patch set. 

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Ard
> Biesheuvel
> 发送时间: 2023年6月1日 16:38
> 收件人: devel@edk2.groups.io; gaoliming@byosoft.com.cn
> 抄送: Gerd Hoffmann <kraxel@redhat.com>; Daniel Schaefer
> <git@danielschaefer.me>; Marvin Häuser <mhaeuser@posteo.de>; Rebecca
> Cran <rebecca@bsdio.com>; Oliver Steffen <osteffen@redhat.com>; Pawel
> Polawski <ppolawsk@redhat.com>; Chao Li <lichao@loongson.cn>; Ard
> Biesheuvel <ardb+tianocore@kernel.org>; Bob Feng <bob.c.feng@intel.com>;
> Sunil V L <sunilvl@ventanamicro.com>; Michael D Kinney
> <michael.d.kinney@intel.com>; Leif Lindholm <quic_llindhol@quicinc.com>;
> Dongyan Qian <qiandongyan@loongson.cn>; Yuwei Chen
> <yuwei.chen@intel.com>; Baoqi Zhang <zhangbaoqi@loongson.cn>; Zhiguang
> Liu <zhiguang.liu@intel.com>
> 主题: Re: [edk2-devel] 回复: [PATCH v6 02/11] BaseTools: add
> -fdirect-access-external-data to clang pie builds
> 
> On Thu, 1 Jun 2023 at 10:01, gaoliming via groups.io
> <gaoliming=byosoft.com.cn@groups.io> wrote:
> >
> > Gerd and Ard:
> >   I want to confirm whether this option should also be added into
> CLANGPDB_X64_CC_FLAGS.
> >
> 
> As far as I know, PE based toolchains assume that external accesses
> are local unless the variable declaration is decorated with
> __dllimport.
> 
> Also, the reason we need this is not that the codegen is incorrect,
> but that it complicates ELF to PE/COFF conversion.
> 
> So I don't think this is needed for CLANGPDB
> 
> 
> 
> > > -----邮件原件-----
> > > 发件人: Gerd Hoffmann <kraxel@redhat.com>
> > > 发送时间: 2023年5月24日 22:06
> > > 收件人: devel@edk2.groups.io
> > > 抄送: Daniel Schaefer <git@danielschaefer.me>; Marvin Häuser
> > > <mhaeuser@posteo.de>; Rebecca Cran <rebecca@bsdio.com>; Oliver
> Steffen
> > > <osteffen@redhat.com>; Liming Gao <gaoliming@byosoft.com.cn>; Pawel
> > > Polawski <ppolawsk@redhat.com>; Chao Li <lichao@loongson.cn>; Ard
> > > Biesheuvel <ardb+tianocore@kernel.org>; Bob Feng
> <bob.c.feng@intel.com>;
> > > Sunil V L <sunilvl@ventanamicro.com>; Michael D Kinney
> > > <michael.d.kinney@intel.com>; Leif Lindholm
> <quic_llindhol@quicinc.com>;
> > > Dongyan Qian <qiandongyan@loongson.cn>; Yuwei Chen
> > > <yuwei.chen@intel.com>; Baoqi Zhang <zhangbaoqi@loongson.cn>;
> Zhiguang
> > > Liu <zhiguang.liu@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Ard
> > > Biesheuvel <ardb@kernel.org>
> > > 主题: [PATCH v6 02/11] BaseTools: add -fdirect-access-external-data to
> clang
> > > pie builds
> > >
> > > Tell clang to not use external (via got) references for data access.
> > >
> > > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> > > Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
> > > ---
> > >  BaseTools/Conf/tools_def.template | 6 +++---
> > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/BaseTools/Conf/tools_def.template
> > > b/BaseTools/Conf/tools_def.template
> > > index 503a6687c1f0..92421e3d0118 100755
> > > --- a/BaseTools/Conf/tools_def.template
> > > +++ b/BaseTools/Conf/tools_def.template
> > > @@ -1921,15 +1921,15 @@
> NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS
> > > = DEF(CLANGDWARF_IA32_DLINK2_FLAGS) -O0 -
> > >  *_CLANGDWARF_X64_ASLPP_FLAGS          =
> DEF(GCC_ASLPP_FLAGS)
> > > DEF(CLANGDWARF_X64_TARGET)
> > >  *_CLANGDWARF_X64_VFRPP_FLAGS          =
> DEF(GCC_VFRPP_FLAGS)
> > > DEF(CLANGDWARF_X64_TARGET)
> > >
> > > -DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -Oz
> > > -flto DEF(CLANGDWARF_X64_TARGET) -g
> > > +DEBUG_CLANGDWARF_X64_CC_FLAGS         =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > > -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> -g
> > >  DEBUG_CLANGDWARF_X64_DLINK_FLAGS      =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3
> -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > >  DEBUG_CLANGDWARF_X64_DLINK2_FLAGS     =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> > >
> > > -RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -Oz
> > > -flto DEF(CLANGDWARF_X64_TARGET)
> > > +RELEASE_CLANGDWARF_X64_CC_FLAGS       =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > > -fdirect-access-external-data -Oz -flto DEF(CLANGDWARF_X64_TARGET)
> > >  RELEASE_CLANGDWARF_X64_DLINK_FLAGS    =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -flto -Wl,-O3
> -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > >  RELEASE_CLANGDWARF_X64_DLINK2_FLAGS   =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O3 -fuse-ld=lld
> > >
> > > -NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> -O0
> > > DEF(CLANGDWARF_X64_TARGET) -g
> > > +NOOPT_CLANGDWARF_X64_CC_FLAGS         =
> > > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64
> > > "-DEFIAPI=__attribute__((ms_abi))" -mno-red-zone -mcmodel=small -fpie
> > > -fdirect-access-external-data -O0 DEF(CLANGDWARF_X64_TARGET) -g
> > >  NOOPT_CLANGDWARF_X64_DLINK_FLAGS      =
> > > DEF(CLANGDWARF_IA32_X64_DLINK_FLAGS) -Wl,-O0 -Wl,-melf_x86_64
> > > -Wl,--oformat,elf64-x86-64 -Wl,-pie -mcmodel=small
> > > -Wl,--apply-dynamic-relocs
> > >  NOOPT_CLANGDWARF_X64_DLINK2_FLAGS     =
> > > DEF(CLANGDWARF_X64_DLINK2_FLAGS) -O0 -fuse-ld=lld
> > >
> > > --
> > > 2.40.1
> >
> >
> >
> >
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 






-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105543): https://edk2.groups.io/g/devel/message/105543
Mute This Topic: https://groups.io/mt/99260000/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-