[PATCH] D89152: [lld][WebAssembly] Add support for -Bsymbolic
Sam Clegg via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 12 17:15:14 PDT 2020
sbc100 added inline comments.
================
Comment at: lld/wasm/Driver.cpp:496
+ if (config->bsymbolic && (!config->pie && !config->shared)) {
+ warn("-Bsymbolic is only meaningful when combined with -shared, or -pie");
+ }
----------------
MaskRay wrote:
> MaskRay wrote:
> > sbc100 wrote:
> > > sbc100 wrote:
> > > > MaskRay wrote:
> > > > > In ELF, -Bsymbolic is redundant for executables (-no-pie or -pie).
> > > > >
> > > > Interesting, so you are saying the `-Bsymbolic` is basically the default for executable?
> > > >
> > > > Wouldn't that mean that, for example, LD_PRELOAD would not work for symbols in the main executable? My understanding is that `-Bsymbolic` would prevent `LD_PRELOAD` from overriding symbols because they would be bound locally. Although I guess I am wrong?
> > > Indeed you are right, it looks like LD_PRELOAD as no effect on the main executable itself. TIL!
> > -Bsymbolic is basically the default for executable.
> > The symbol resolution order: exe, preloaded, needed
> >
> > In preloaded, the LD_PRELOADed library is listed in a breadth-first search order.
> > needed is similar.
> >
> >
> I was wrong about the symbol resolution order.
>
> In musl, LD_PRELOAD libraries are prepended to the DT_NEEDED list. The resolution order is a breadth-first search order starting from the executable, i.e. the order may be:
> `exe, preload0, preload1, needed0, needed1, needd0_of_preload0, needed1_of_preload0, needd0_of_needed0, ...`
Thanks for the update. The only thing that this change does now is to bind symbols in the executable (and `-Bsymbolic` libraries) to local definition (if they exist).
We have no concept of LD_PRELOAD yet in the WebAssembly (or emscripten) world.
Any objections to landing this change?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89152/new/
https://reviews.llvm.org/D89152
More information about the llvm-commits
mailing list