mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Szabolcs Nagy <nsz@port70.net>
To: musl@lists.openwall.com
Subject: Re: pthread_key_create bug?
Date: Wed, 9 Jan 2019 12:45:37 +0100	[thread overview]
Message-ID: <20190109114536.GI21289@port70.net> (raw)
In-Reply-To: <20190109002953.GA23599@brightrain.aerifal.cx>

* Rich Felker <dalias@libc.org> [2019-01-08 19:29:53 -0500]:
> On Tue, Jan 08, 2019 at 11:10:06PM +0100, Markus Wichmann wrote:
> > On Mon, Jan 07, 2019 at 07:00:18PM -0500, Rich Felker wrote:
> > > I think you're right, though we don't generally use weak references in
> > > musl on the basis (perhaps somewhat dubious) that they're an
> > > additional toolchain feature that might cause problems reusing the
> > > code in non-ELF contexts (this may affect midipix; I'm not sure).
> > > That's why weak aliases to dummy functions are used for this purpose
> > > everywhere else.
> > > 
> > 
> > I don't quite get you. Weak aliases are just weak references with a
> > non-zero default value. Any toolchain being able to handle weak aliases
> > should be able to handle weak references, right?
> 
> No, not necessarily, and no they're not equivalent to weak definitions
> with a zero value. A weak definition with a zero value would provide a
> definition for other translation units to see/use, preventing one
> with a non-weak reference from pulling in the real definition. Weak
> references are a property of the reference. Weak definitions are a
> property of the definition. They are not in any way equivalent.
> 
> In any case, the policy is that we don't use weak references (*). If
> there were a strong reason to want them, we could review the reasons
> and see if they are still relevant.
> 
> (*) This is only partly true. There are weak references to some
> special ELF symbols defined by the linker, because providing a weak
> definition would override the linker-provided value. For these, there
> will never be definitions provided by source files, so the weak
> reference is mostly equivalent to a weak definition by your above
> logic. Furthermore, we know they'll always be defined for
> position-independent linking (_DYNAMIC has to exist for shared
> libraries and PIE) so there is no concern about the issue below
> (PC-relative references to an undefined weakly-referenced symbol).

note that weak references are not even well supported on elf targets:
weak references can be undefined and then the symbol address is 0 at
runtime, which should be possible to check with if (weakref == 0)..,
but this does not work reliably, see e.g.
https://groups.google.com/forum/#!topic/generic-abi/eZv8VQskSD0
so the specified weak reference semantics is broken in important use
cases: tls, copy reloc, plt address.


      reply	other threads:[~2019-01-09 11:45 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-06 14:35 Nathaniel Pierce
2019-01-06 14:50 ` A. Wilcox
2019-01-06 16:28   ` Szabolcs Nagy
2019-01-07  2:11   ` Rich Felker
2019-01-07 12:24     ` A. Wilcox
2019-01-07 14:12       ` Rich Felker
2019-01-07 17:13     ` Markus Wichmann
2019-01-08  0:00       ` Rich Felker
2019-01-08  8:43         ` u-uy74
2019-01-08 19:34           ` Markus Wichmann
2019-01-08 22:40             ` writeonce
2019-01-08 22:10         ` Markus Wichmann
2019-01-08 23:07           ` A. Wilcox
2019-01-09  0:29           ` Rich Felker
2019-01-09 11:45             ` Szabolcs Nagy [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190109114536.GI21289@port70.net \
    --to=nsz@port70.net \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).