[LLVMdev] LLD improvement plan

Sean Silva chisophugis at gmail.com
Thu May 28 17:46:02 PDT 2015


On Mon, May 4, 2015 at 7:45 AM, James Y Knight <jyknight at google.com> wrote:

> And now we're against the Atom model?
>
>
> I'm quite new to the llvm community, and basically unfamiliar with LLD, so
> maybe I'm simply uninformed. If so, I will now proceed to demonstrate that
> to an entire list of people. :)
>
> I've read the doc on http://lld.llvm.org/design.html, but the list of
> features it says that you get with LLD/Atoms and don't get with the "old
> generation" of linkers that use "sections"...are all things that ELF
> linkers already do using sections, and do not require anything finer
> grained than sections. Sections in ELF objects can actually be as
> fine-grained as you want them to be -- just as an "Atom". Doc also says,
> "An atom is an indivisible chunk of code or data." -- which is also what a
> section is for ELF.
>
> AFAICT, atoms in LLD are simply a restricted form of ELF sections:
> restricted to having a single symbol associated with them. It doesn't
> appear that they're actually enabling any new features that no other linker
> can do.
>
> I'm not very familiar with Mach-O, but it sounds like, contrary to ELF,
> Mach-O files cannot be generated with one section per global object, but
> that Mach-O sections (at least as used by OSX) *are* expected to be
> subdivided/rearranged/etc, and are not atomic. Given that set of properties
> for the input file format, of course it makes sense that you'd want to
> subdivide Mach-O "sections" within the linker into smaller atomic pieces to
> work on them.
>
> But for ELF, the compiler can/will output separate sections for each
> function/global variable, and the contents of a section should never be
> mangled. It can also emit multiple symbols into a single section. That an
> ELF section *may* contain multiple functions/globals which need to stay
> together is not a problem with the file format -- it's an advantage -- an
> additional flexibility of representation.
>
> I gather the current model in LLD doesn't support an atomic unit with
> multiple symbols cleanly. And that that's the main issue that would be good
> to fix here.
>
> But, rather than talking about "eliminating the atom model" -- which seems
> to be contentious -- maybe it would be more peaceful to just say that the
> desired change is to "allow atoms to have multiple global symbols
> associated, and have more metadata"? It appears to me that it amounts to
> essentially the same thing, but may not be as contentious if described that
> way.
>
> If that change was made, you'd just need to know that LLD has slightly
> unique terminology; "ELF section" == "LLD Atom". (but "Mach-O section"
> turns into multiple "LLD Atom"s).
>
> Am I wrong?
>

I think this is bang-on. I ended up reading this after having essentially
reiterated it in different words.

-- Sean Silva


>
> James
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150528/08266d7c/attachment.html>


More information about the llvm-dev mailing list