Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 25 May 2019 11:18:16 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Subject: Re: musl can't handle gold's STB_LOCAL TLS symbols

* Rich Felker <dalias@...c.org> [2019-05-23 21:12:04 -0400]:
> On Thu, May 23, 2019 at 05:47:13PM -0700, Ryan Prichard wrote:
> > The test program works with ld.bfd, because ld.bfd converts the DTPMOD
> > relocation to 0 and omits the DTPOFF relocation. There was a somewhat
> > similar issue with gold+musl involving a DTPMOD relocation to a
> > local section symbol, https://sourceware.org/bugzilla/show_bug.cgi?id=17699.
> > That issue prompted a thread on the generic-abi group,
> > https://groups.google.com/d/topic/generic-abi/dJ4_Y78aQ2M/discussion.
> > 
> > I'm wondering if this problem is a bug in musl or gold. I also wonder if
> 
> I would consider this a bug in gold. There is no reason to leave local
> symbols unresolved until runtime; resolving them is ld's whole job.
> 
> > DTPOFF can reference a TLS section, even though the value of a TLS section
> > symbol isn't suitable for DTPOFF unless it's first adjusted by the
> > segment's p_vaddr.
> 
> I don't see a good reason for it to reference a section either. It
> should just have a 0 symbol reference, and store the ld-determined
> offset to the object in the addend. Any kind of symbolic reference
> here is just going to be a waste of time doing a lookup at runtime.

the sysv elf spec allows leaving STB_LOCAL symbols
in the dynamic symbol table if they were hidden [1].
it does not say if symbolic dynamic relocs may refer
to them, though.

i think it should not be too hard to adjust
do_relocs to handle this, not sure about do_dlsym.
current dlsym does not seem to check OK_BIND
so a local sym may preempt a global one.

i think allowing plt relocs for local syms can have
unexpected effects, so i don't think that would work
reliably (on systems that support lazy binding, ifuncs
ldaudit and various other plt related hacks).

[1] http://www.sco.com/developers/gabi/latest/ch4.symtab.html#visibility

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.