[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