unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
@ 2022-12-02  3:59 linzhuorong via Libc-alpha
  2022-12-05 14:54 ` Szabolcs Nagy via Libc-alpha
  0 siblings, 1 reply; 6+ messages in thread
From: linzhuorong via Libc-alpha @ 2022-12-02  3:59 UTC (permalink / raw)
  To: libc-alpha
  Cc: nixiaoming, xiaojiangfeng, douzhaolei, wangbing6, wangfangpeng1,
	young.liuyang, linzhuorong

elf_machine_dynamic compile error when compiling glibc with --enable-static-pie option turned on, static executables do not have symbol _DYNAMIC

Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make elf_machine_{load_address,dynamic} robust [BZ #28203]")

Signed-off-by linzhuorong <linzhuorong@huawei.com>
---
 sysdeps/aarch64/dl-machine.h | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
index ae8b14425a..49b1d1ea0e 100644
--- a/sysdeps/aarch64/dl-machine.h
+++ b/sysdeps/aarch64/dl-machine.h
@@ -53,8 +53,9 @@ elf_machine_load_address (void)
 static inline ElfW(Addr) __attribute__ ((unused))
 elf_machine_dynamic (void)
 {
-  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
-  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
+  /* Declaring this hidden ensures that a PC-relative reference is uesed.  */
+  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
+  return _GLOBAL_OFFSET_TABLE_[0];
 }
 
 /* Set up the loaded object described by L so its unrelocated PLT
-- 
2.12.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
  2022-12-02  3:59 [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835] linzhuorong via Libc-alpha
@ 2022-12-05 14:54 ` Szabolcs Nagy via Libc-alpha
  2022-12-07  8:34   ` 答复: " linzhuorong via Libc-alpha
  0 siblings, 1 reply; 6+ messages in thread
From: Szabolcs Nagy via Libc-alpha @ 2022-12-05 14:54 UTC (permalink / raw)
  To: linzhuorong
  Cc: libc-alpha, nixiaoming, xiaojiangfeng, douzhaolei, wangbing6,
	wangfangpeng1, young.liuyang

The 12/02/2022 11:59, linzhuorong via Libc-alpha wrote:
> elf_machine_dynamic compile error when compiling glibc with --enable-static-pie option turned on, static executables do not have symbol _DYNAMIC

glibc no longer has --enable-static-pie, instead it has
--disable-default-pie .

static pie should have _DYNAMIC symbol since it has dynamic
relocations (relative relocs), what is the binutils version?

maybe glibc should disable default pie if old binutils is
detected.

> 
> Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make elf_machine_{load_address,dynamic} robust [BZ #28203]")
> 
> Signed-off-by linzhuorong <linzhuorong@huawei.com>
> ---
>  sysdeps/aarch64/dl-machine.h | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
> index ae8b14425a..49b1d1ea0e 100644
> --- a/sysdeps/aarch64/dl-machine.h
> +++ b/sysdeps/aarch64/dl-machine.h
> @@ -53,8 +53,9 @@ elf_machine_load_address (void)
>  static inline ElfW(Addr) __attribute__ ((unused))
>  elf_machine_dynamic (void)
>  {
> -  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> -  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
> +  /* Declaring this hidden ensures that a PC-relative reference is uesed.  */
> +  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] attribute_hidden;
> +  return _GLOBAL_OFFSET_TABLE_[0];
>  }
>  
>  /* Set up the loaded object described by L so its unrelocated PLT
> -- 
> 2.12.3
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
  2022-12-05 14:54 ` Szabolcs Nagy via Libc-alpha
@ 2022-12-07  8:34   ` linzhuorong via Libc-alpha
  2022-12-07  9:14     ` Szabolcs Nagy via Libc-alpha
  0 siblings, 1 reply; 6+ messages in thread
From: linzhuorong via Libc-alpha @ 2022-12-07  8:34 UTC (permalink / raw)
  To: Szabolcs Nagy
  Cc: libc-alpha@sourceware.org, Nixiaoming, xiaojiangfeng, douzhaolei,
	Wangbing(wangbing,RTOS/Poincare Lab), wangfangpeng (A),
	Liuyang (Young,C)

disable-default-pie compile out different results

The problem is why --enable-static-pie works in 7.3.0, but compiles error in 10.3.0?

Error log:
/home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/obj/build-glibc/libc.a(dl-reloc-static-pie.o): in function elf_machine_rel': /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
/home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'


-----邮件原件-----
发件人: Szabolcs Nagy <szabolcs.nagy@arm.com> 
发送时间: 2022年12月5日 22:55
收件人: linzhuorong <linzhuorong@huawei.com>
抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; Liuyang (Young,C) <young.liuyang@huawei.com>
主题: Re: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]

The 12/02/2022 11:59, linzhuorong via Libc-alpha wrote:
> elf_machine_dynamic compile error when compiling glibc with 
> --enable-static-pie option turned on, static executables do not have 
> symbol _DYNAMIC

glibc no longer has --enable-static-pie, instead it has --disable-default-pie .

static pie should have _DYNAMIC symbol since it has dynamic relocations (relative relocs), what is the binutils version?

maybe glibc should disable default pie if old binutils is detected.

> 
> Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make 
> elf_machine_{load_address,dynamic} robust [BZ #28203]")
> 
> Signed-off-by linzhuorong <linzhuorong@huawei.com>
> ---
>  sysdeps/aarch64/dl-machine.h | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/sysdeps/aarch64/dl-machine.h 
> b/sysdeps/aarch64/dl-machine.h index ae8b14425a..49b1d1ea0e 100644
> --- a/sysdeps/aarch64/dl-machine.h
> +++ b/sysdeps/aarch64/dl-machine.h
> @@ -53,8 +53,9 @@ elf_machine_load_address (void)  static inline 
> ElfW(Addr) __attribute__ ((unused))  elf_machine_dynamic (void)  {
> -  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> -  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
> +  /* Declaring this hidden ensures that a PC-relative reference is 
> + uesed.  */  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] 
> + attribute_hidden;  return _GLOBAL_OFFSET_TABLE_[0];
>  }
>  
>  /* Set up the loaded object described by L so its unrelocated PLT
> --
> 2.12.3
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
  2022-12-07  8:34   ` 答复: " linzhuorong via Libc-alpha
@ 2022-12-07  9:14     ` Szabolcs Nagy via Libc-alpha
  2022-12-07 12:52       ` 答复: " linzhuorong via Libc-alpha
  0 siblings, 1 reply; 6+ messages in thread
From: Szabolcs Nagy via Libc-alpha @ 2022-12-07  9:14 UTC (permalink / raw)
  To: linzhuorong
  Cc: libc-alpha@sourceware.org, Nixiaoming, xiaojiangfeng, douzhaolei,
	Wangbing(wangbing,RTOS/Poincare Lab), wangfangpeng (A),
	Liuyang (Young,C)

The 12/07/2022 08:34, linzhuorong wrote:
> disable-default-pie compile out different results
> 
> The problem is why --enable-static-pie works in 7.3.0, but compiles error in 10.3.0?

-static-pie support was added in gcc 8 so this likely works with
gcc 7 because the configure option is just ignored then (and the
static linked executables are not PIE)

there can be linker issues causing gcc 10 to fail so the binutils
version matters too, not just the gcc version. (on aarch64 you
need at least version 2.30)

the compiler target seems to be arm-linux-gnueabi which is not aarch64,
so an aarch64 patch won't fix the issue.


> 
> Error log:
> /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/obj/build-glibc/libc.a(dl-reloc-static-pie.o): in function elf_machine_rel': /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> 
> 
> -----邮件原件-----
> 发件人: Szabolcs Nagy <szabolcs.nagy@arm.com> 
> 发送时间: 2022年12月5日 22:55
> 收件人: linzhuorong <linzhuorong@huawei.com>
> 抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; Liuyang (Young,C) <young.liuyang@huawei.com>
> 主题: Re: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
> 
> The 12/02/2022 11:59, linzhuorong via Libc-alpha wrote:
> > elf_machine_dynamic compile error when compiling glibc with 
> > --enable-static-pie option turned on, static executables do not have 
> > symbol _DYNAMIC
> 
> glibc no longer has --enable-static-pie, instead it has --disable-default-pie .
> 
> static pie should have _DYNAMIC symbol since it has dynamic relocations (relative relocs), what is the binutils version?
> 
> maybe glibc should disable default pie if old binutils is detected.
> 
> > 
> > Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make 
> > elf_machine_{load_address,dynamic} robust [BZ #28203]")
> > 
> > Signed-off-by linzhuorong <linzhuorong@huawei.com>
> > ---
> >  sysdeps/aarch64/dl-machine.h | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/sysdeps/aarch64/dl-machine.h 
> > b/sysdeps/aarch64/dl-machine.h index ae8b14425a..49b1d1ea0e 100644
> > --- a/sysdeps/aarch64/dl-machine.h
> > +++ b/sysdeps/aarch64/dl-machine.h
> > @@ -53,8 +53,9 @@ elf_machine_load_address (void)  static inline 
> > ElfW(Addr) __attribute__ ((unused))  elf_machine_dynamic (void)  {
> > -  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> > -  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
> > +  /* Declaring this hidden ensures that a PC-relative reference is 
> > + uesed.  */  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] 
> > + attribute_hidden;  return _GLOBAL_OFFSET_TABLE_[0];
> >  }
> >  
> >  /* Set up the loaded object described by L so its unrelocated PLT
> > --
> > 2.12.3
> > 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* 答复: 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
  2022-12-07  9:14     ` Szabolcs Nagy via Libc-alpha
@ 2022-12-07 12:52       ` linzhuorong via Libc-alpha
  2022-12-08  9:26         ` Szabolcs Nagy via Libc-alpha
  0 siblings, 1 reply; 6+ messages in thread
From: linzhuorong via Libc-alpha @ 2022-12-07 12:52 UTC (permalink / raw)
  To: Szabolcs Nagy
  Cc: libc-alpha@sourceware.org, xiaojiangfeng, Nixiaoming, zhongjubin,
	Wangbing(wangbing,RTOS/Poincare Lab), zhenghuadong (A),
	liqingqing (C)

The version of binutils is 2.38
Use gcc 7.3.0 just for testing, if there is no --static-pie, it may give ignore, I found only i386, arm, aarch64, loongarch use _DYNAMIC way to get, other are use GOT,
what if I only fix arm? 

-----邮件原件-----
发件人: Szabolcs Nagy <szabolcs.nagy@arm.com> 
发送时间: 2022年12月7日 17:14
收件人: linzhuorong <linzhuorong@huawei.com>
抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; Liuyang (Young,C) <young.liuyang@huawei.com>
主题: Re: 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]

The 12/07/2022 08:34, linzhuorong wrote:
> disable-default-pie compile out different results
> 
> The problem is why --enable-static-pie works in 7.3.0, but compiles error in 10.3.0?

-static-pie support was added in gcc 8 so this likely works with gcc 7 because the configure option is just ignored then (and the static linked executables are not PIE)

there can be linker issues causing gcc 10 to fail so the binutils version matters too, not just the gcc version. (on aarch64 you need at least version 2.30)

the compiler target seems to be arm-linux-gnueabi which is not aarch64, so an aarch64 patch won't fix the issue.


> 
> Error log:
> /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/obj/build-glibc/libc.a(dl-reloc-static-pie.o): in function elf_machine_rel': /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> 
> 
> -----邮件原件-----
> 发件人: Szabolcs Nagy <szabolcs.nagy@arm.com>
> 发送时间: 2022年12月5日 22:55
> 收件人: linzhuorong <linzhuorong@huawei.com>
> 抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; 
> xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei 
> <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) 
> <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; 
> Liuyang (Young,C) <young.liuyang@huawei.com>
> 主题: Re: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ 
> #29835]
> 
> The 12/02/2022 11:59, linzhuorong via Libc-alpha wrote:
> > elf_machine_dynamic compile error when compiling glibc with 
> > --enable-static-pie option turned on, static executables do not have 
> > symbol _DYNAMIC
> 
> glibc no longer has --enable-static-pie, instead it has --disable-default-pie .
> 
> static pie should have _DYNAMIC symbol since it has dynamic relocations (relative relocs), what is the binutils version?
> 
> maybe glibc should disable default pie if old binutils is detected.
> 
> > 
> > Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make 
> > elf_machine_{load_address,dynamic} robust [BZ #28203]")
> > 
> > Signed-off-by linzhuorong <linzhuorong@huawei.com>
> > ---
> >  sysdeps/aarch64/dl-machine.h | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/sysdeps/aarch64/dl-machine.h 
> > b/sysdeps/aarch64/dl-machine.h index ae8b14425a..49b1d1ea0e 100644
> > --- a/sysdeps/aarch64/dl-machine.h
> > +++ b/sysdeps/aarch64/dl-machine.h
> > @@ -53,8 +53,9 @@ elf_machine_load_address (void)  static inline
> > ElfW(Addr) __attribute__ ((unused))  elf_machine_dynamic (void)  {
> > -  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> > -  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
> > +  /* Declaring this hidden ensures that a PC-relative reference is 
> > + uesed.  */  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] 
> > + attribute_hidden;  return _GLOBAL_OFFSET_TABLE_[0];
> >  }
> >  
> >  /* Set up the loaded object described by L so its unrelocated PLT
> > --
> > 2.12.3
> > 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: 答复: 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
  2022-12-07 12:52       ` 答复: " linzhuorong via Libc-alpha
@ 2022-12-08  9:26         ` Szabolcs Nagy via Libc-alpha
  0 siblings, 0 replies; 6+ messages in thread
From: Szabolcs Nagy via Libc-alpha @ 2022-12-08  9:26 UTC (permalink / raw)
  To: linzhuorong
  Cc: libc-alpha@sourceware.org, xiaojiangfeng, Nixiaoming, zhongjubin,
	Wangbing(wangbing,RTOS/Poincare Lab), zhenghuadong (A),
	liqingqing (C)

The 12/07/2022 12:52, linzhuorong wrote:
> The version of binutils is 2.38
> Use gcc 7.3.0 just for testing, if there is no --static-pie, it may give ignore, I found only i386, arm, aarch64, loongarch use _DYNAMIC way to get, other are use GOT,
> what if I only fix arm? 

what is the issue you want to fix?

so far we haven't seen any.

you just misconfigure the glibc build.

> 
> -----邮件原件-----
> 发件人: Szabolcs Nagy <szabolcs.nagy@arm.com> 
> 发送时间: 2022年12月7日 17:14
> 收件人: linzhuorong <linzhuorong@huawei.com>
> 抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; Liuyang (Young,C) <young.liuyang@huawei.com>
> 主题: Re: 答复: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835]
> 
> The 12/07/2022 08:34, linzhuorong wrote:
> > disable-default-pie compile out different results
> > 
> > The problem is why --enable-static-pie works in 7.3.0, but compiles error in 10.3.0?
> 
> -static-pie support was added in gcc 8 so this likely works with gcc 7 because the configure option is just ignored then (and the static linked executables are not PIE)
> 
> there can be linker issues causing gcc 10 to fail so the binutils version matters too, not just the gcc version. (on aarch64 you need at least version 2.30)
> 
> the compiler target seems to be arm-linux-gnueabi which is not aarch64, so an aarch64 patch won't fix the issue.
> 
> 
> > 
> > Error log:
> > /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/obj/build-glibc/libc.a(dl-reloc-static-pie.o): in function elf_machine_rel': /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> > /home/XXXX/workspace/compiler/gcc/build/arm-linux-glibc/arm_linux_glibc_build_dir/arm-linux-glibc/lib/gcc/arm-linux-gnueabi/10.3.0/../../../../arm-linux-gnueabi/bin/ld: /home/XXXX/workspace/compiler/gcc/open_source/arm-linux-glibc-build_src/glibc-2.34/elf/../sysdeps/arm/dl-machine.h:440: undefined reference to _DYNAMIC'
> > 
> > 
> > -----邮件原件-----
> > 发件人: Szabolcs Nagy <szabolcs.nagy@arm.com>
> > 发送时间: 2022年12月5日 22:55
> > 收件人: linzhuorong <linzhuorong@huawei.com>
> > 抄送: libc-alpha@sourceware.org; Nixiaoming <nixiaoming@huawei.com>; 
> > xiaojiangfeng <xiaojiangfeng@huawei.com>; douzhaolei 
> > <douzhaolei@huawei.com>; Wangbing(wangbing,RTOS/Poincare Lab) 
> > <wangbing6@huawei.com>; wangfangpeng (A) <wangfangpeng1@huawei.com>; 
> > Liuyang (Young,C) <young.liuyang@huawei.com>
> > 主题: Re: [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ 
> > #29835]
> > 
> > The 12/02/2022 11:59, linzhuorong via Libc-alpha wrote:
> > > elf_machine_dynamic compile error when compiling glibc with 
> > > --enable-static-pie option turned on, static executables do not have 
> > > symbol _DYNAMIC
> > 
> > glibc no longer has --enable-static-pie, instead it has --disable-default-pie .
> > 
> > static pie should have _DYNAMIC symbol since it has dynamic relocations (relative relocs), what is the binutils version?
> > 
> > maybe glibc should disable default pie if old binutils is detected.
> > 
> > > 
> > > Fixes: bca0f5cbc9257c13322b99e55235c4f21ba0bd82("aarch64: Make 
> > > elf_machine_{load_address,dynamic} robust [BZ #28203]")
> > > 
> > > Signed-off-by linzhuorong <linzhuorong@huawei.com>
> > > ---
> > >  sysdeps/aarch64/dl-machine.h | 5 +++--
> > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/sysdeps/aarch64/dl-machine.h 
> > > b/sysdeps/aarch64/dl-machine.h index ae8b14425a..49b1d1ea0e 100644
> > > --- a/sysdeps/aarch64/dl-machine.h
> > > +++ b/sysdeps/aarch64/dl-machine.h
> > > @@ -53,8 +53,9 @@ elf_machine_load_address (void)  static inline
> > > ElfW(Addr) __attribute__ ((unused))  elf_machine_dynamic (void)  {
> > > -  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> > > -  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
> > > +  /* Declaring this hidden ensures that a PC-relative reference is 
> > > + uesed.  */  extern const ElfW(Addr) _GLOBAL_OFFSET_TABLE_[] 
> > > + attribute_hidden;  return _GLOBAL_OFFSET_TABLE_[0];
> > >  }
> > >  
> > >  /* Set up the loaded object described by L so its unrelocated PLT
> > > --
> > > 2.12.3
> > > 

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-12-08  9:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-02  3:59 [PATCH] aarch64: fix elf_machine_dynamic compile error [BZ #29835] linzhuorong via Libc-alpha
2022-12-05 14:54 ` Szabolcs Nagy via Libc-alpha
2022-12-07  8:34   ` 答复: " linzhuorong via Libc-alpha
2022-12-07  9:14     ` Szabolcs Nagy via Libc-alpha
2022-12-07 12:52       ` 答复: " linzhuorong via Libc-alpha
2022-12-08  9:26         ` Szabolcs Nagy via Libc-alpha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).