svn commit: r339876 - head/libexec/rtld-elf

Konstantin Belousov kostikbel at gmail.com
Tue Oct 30 18:04:04 UTC 2018


On Tue, Oct 30, 2018 at 03:32:40PM +0000, Alexander Richardson wrote:
> On Tue, 30 Oct 2018 at 10:17, Michael Tuexen
> <Michael.Tuexen at macmic.franken.de> wrote:
> >
> > > On 29. Oct 2018, at 22:08, Alex Richardson <arichardson at FreeBSD.org> wrote:
> > >
> > > Author: arichardson
> > > Date: Mon Oct 29 21:08:02 2018
> > > New Revision: 339876
> > > URL: https://svnweb.freebsd.org/changeset/base/339876
> > >
> > > Log:
> > >  rtld: set obj->textsize correctly
> > >
> > >  With lld-generated binaries the first PT_LOAD will usually be a read-only
> > >  segment unless you pass --no-rosegment. For those binaries the textsize is
> > >  determined by the next PT_LOAD. To allow both LLD and bfd 2.17 binaries to
> > >  be parsed correctly use the end of the last PT_LOAD that is marked as
> > >  executable instead.
> > >
> > >  I noticed that the value was wrong while adding some debug prints for some rtld
> > >  changes for CHERI binaries. `obj->textsize` only seems to be used by PPC so the
> > >  effect is untested. However, the value before was definitely wrong and the new
> > >  result matches the phdrs.
> > I build kernel and world with a revision later than this on a PPC. Buildword
> > ends up with a world where almost all binaries are segfaulting.... Especially gdb
> > (but svn, ls or so all segfault).
> >
> > Best regards
> > Michael
> 
> This is rather surprising since if anything the range of the icache
> flush should increase rather than decrease after this change.
> 
> I can only see this causing a behaviour change if we actually need to
> flush more than just the executable segments.
> Is it possible that some binary/library contains a non-executable
> segment as the first PT_LOAD?
> Or is there some linker script that adds custom PHDRS?
> 
Could it be that there is a hole between start of the object mapping and
the last PT_LOADable segment eligible for execution ?



More information about the svn-src-head mailing list