[PATCH] elf: Check PDE load address with non-empty text section

H.J. Lu hjl.tools@gmail.com
Sun Dec 22 08:15:47 GMT 2024


On Sun, Dec 22, 2024 at 4:12 PM Sam James <sam@gentoo.org> wrote:
>
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > On Sun, Dec 22, 2024, 2:19 PM Sam James <sam@gentoo.org> wrote:
> >
> >  "H.J. Lu" <hjl.tools@gmail.com> writes:
> >
> >  > On Mon, Dec 2, 2024 at 9:15 AM H.J. Lu <hjl.tools@gmail.com> wrote:
> >  >>
> >  >> On Sat, Nov 30, 2024 at 12:18 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> >  >> >
> >  >> > On Sat, Nov 30, 2024, 12:52 AM Florian Weimer <fweimer@redhat.com> wrote:
> >  >> >>
> >  >> >> * H. J. Lu:
> >  >> >>
> >  >> >> > +ifneq (,$(load-address-ldflag))
> >  >> >> > +tests += \
> >  >> >> > +  tst-pie-address \
> >  >> >> > +  # tests
> >  >> >> > +tests-pie += \
> >  >> >> > +  tst-pie-address \
> >  >> >> > +  # tests-pie
> >  >> >> > +LDFLAGS-tst-pie-address += $(load-address-ldflag)=$(pde-load-address)
> >  >> >> > +ifeq (yes,$(enable-static-pie))
> >  >> >> > +tests += \
> >  >> >> > +  tst-pie-address-static \
> >  >> >> > +  # tests
> >  >> >> > +tests-static += \
> >  >> >> > +  tst-pie-address-static \
> >  >> >> > +  # tests-static
> >  >> >> > +LDFLAGS-tst-pie-address-static += \
> >  >> >> > +  $(load-address-ldflag)=$(pde-load-address)
> >  >> >> > +endif
> >  >> >> > +endif
> >  >> >>
> >  >> >> These tests fail on aarch64 and s390x for us:
> >  >> >>
> >  >> >> =====FAIL: elf/tst-pie-address.out=====
> >  >> >> =====FAIL: elf/tst-pie-address.test-result=====
> >  >> >> FAIL: elf/tst-pie-address
> >  >> >> original exit status 139
> >  >> >> =====FAIL: elf/tst-pie-address-static.out=====
> >  >> >> =====FAIL: elf/tst-pie-address-static.test-result=====
> >  >> >> FAIL: elf/tst-pie-address-static
> >  >> >> original exit status 132
> >  >> >
> >  >> >
> >  >> > Do they fail without -Ttext-segment=? My change doesn't
> >  >> > touch dynamic PIE.  If it fails, it may be due to glibc or ld bugs.
> >  >> >
> >  >> >>
> >  >> >> The configure checks report this
> >  >> >>
> >  >> >> checking whether -fPIE is default... no
> >  >> >> checking PDE load address... 0x0000000001000000
> >  >>
> >  >> Somehow aarch64 got
> >  >>
> >  >> pde-load-address =
> >  >>
> >  >> in config.make.  I will take a look.
> >  >>
> >  >
> >  > Does this patch it for you?
> >  >
> >  > Check PDE load address with non-empty text section:
> >  >
> >  > .globl _start
> >  > _start:
> >  > .globl __start
> >  > .byte 0
> >
> >  LGTM, but I didn't check it on arm64. I can if you need.
> >
> > Yes, please.
>
> On trunk, I see:
>
> checking whether -fPIC is default... yes
> checking whether -fPIE is default... yes
> checking PDE load address...
> checking for linker that supports -Ttext-segment=... yes
> checking if we can build programs as PIE... yes
> checking if we can build static PIE programs... yes
>
> With your patch, I see:
>
> checking whether -fPIC is default... yes
> checking whether -fPIE is default... yes
> checking PDE load address... 0x0000000000400000
> checking for linker that supports -Ttext-segment=0x0000000000400000... yes
> checking if we can build programs as PIE... yes
> checking if we can build static PIE programs... yes
>
> But I couldn't reproduce the original failure (I assume because default
> PIE and some hacks to try repro it didn't work either). No new test
> failures.
>

Yes, the configure log looks good. I am checking it in.

Thanks.

-- 
H.J.


More information about the Libc-alpha mailing list