[LLVMdev] [lld] [mach-o]: RFC: representing LC_REEXPORT_DYLIB
Shankar Easwaran
shankare at codeaurora.org
Tue Jul 1 09:25:24 PDT 2014
Hi Tim,
Are you refererring to the dependencies of the dynamic library that
needs to be traversed, to resolve shared library atoms ?
You could build a Dynamic library node and have the symbol returned when
the shared library is called for a symbol, that needs to be resolved
using the below API.
const SharedLibraryAtom *exports(StringRef name, bool dataSymbolOnly)
Will this work ?
I think symbol resolution is more involved in MachO(from previous
conversations) with the current lld model, that symbols are resolved
from archive and dynamic libraries after all the object files are
processed too.
Will this simplify things ?
Thanks
Shankar Easwaran
On 7/1/2014 9:35 AM, Tim Northover wrote:
> Hi all,
>
> I've been thinking about how best to represent MachO's
> LC_REEXPORT_DYLIB (used even by libSystem.dylib to provide its various
> sub-components[*]).
>
> It looks like this functionality would naturally fall into the
> InputGraph, in analogy with Groups and Archives. Unfortunately, it's
> rather more dynamic than the existing cases: we don't know the needed
> files before parsing the top-level one, and need to open multiple
> files. Essentially, we'd need to create new MachOFileNodes based on
> the contents of the parent.
>
> It seems there are two obvious ways to do this:
>
> 1. Create them while we still have the MachONormalizedFile around; I
> think this would mean extending the InputGraph::parse interface to
> allow new InputNodes to be passed back.
> 2. Add an atom type to represent the dependency and create the actual
> nodes when we get back to MachOFileNode::parse.
>
> I'm still very new to lld, so which of these fits in better with our
> goals? Or has someone else already thought about it and have a cunning
> plan? I'm happy to implement anyone's idea if it's the neatest way to
> go.
>
> Cheers.
>
> Tim.
>
> [*] It's the last barrier to "lld -flavor darwin -arch x86_64
> -macosx_version_min 10.9 hello_world.o /usr/lib/libSystem.dylib
> -ohello_world" working, I think! Using
> /usr/lib/system/libsystem_c.dylib already does.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation
More information about the llvm-dev
mailing list