[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