svn commit: r361303 - in head: lib/libc/gen libexec/rtld-elf sys/sys

Mark Johnston markj at freebsd.org
Thu May 21 15:12:56 UTC 2020


On Thu, May 21, 2020 at 04:41:52PM +0300, Konstantin Belousov wrote:
> On Thu, May 21, 2020 at 03:02:07PM +0200, Antoine Brodin wrote:
> > On Thu, May 21, 2020 at 12:08 AM Konstantin Belousov <kib at freebsd.org> wrote:
> > >
> > > Author: kib
> > > Date: Wed May 20 22:08:26 2020
> > > New Revision: 361303
> > > URL: https://svnweb.freebsd.org/changeset/base/361303
> > >
> > > Log:
> > >   Change the samantic of struct link_map l_addr member.
> > >
> > >   It previously returned the object map base address, while all other
> > >   ELF operating systems return load offset, i.e. the difference between
> > >   map base and the link base.
> > >
> > >   Explain the meaning of the field in the man page.
> > >
> > >   Stop filling the mips-only l_offs member, which is apparently unused.
> > >
> > >   PR:   246561
> > >   Requested by: Damjan Jovanovic <damjan.jov at gmail.com>
> > >   Reviewed by:  emaste, jhb, cem (previous version)
> > >   Sponsored by: The FreeBSD Foundation
> > >   MFC after:    1 week
> > >   Differential revision:        https://reviews.freebsd.org/D24918
> > >
> > > Modified:
> > >   head/lib/libc/gen/dlinfo.3
> > >   head/libexec/rtld-elf/rtld.c
> > >   head/sys/sys/link_elf.h
> > 
> > Hi,
> > 
> > After this commit,  some ports fail to build with signal 11.
> > For instance lang/perl5.30 fails to build with default options (DTRACE on)
> > Disabling the DTRACE option makes it able to build again.
> > 
> I see, thank you for reporting.
> 
> So drti.c:dtrace_dof_init() does read l_addr, and the dtrace code assumes
> that l_addr is the base, not relocbase.
> 
> Mark, was dofhp_addr initialization changed comparing to Solaris ?

It appears it has been the same since DTrace was imported.  illumos
still has similar code.

Note that drti.o is linked into any executable and shlib that defines
static probes, so the ABI change affects more than just dtrace(1).
Would it be possible to define a new value for RTLD_DI_LINKMAP, and
preserve the old behaviour for the old value?


More information about the svn-src-head mailing list