[LLVMdev] Can we establish layering for the LLD libraries? Current state is a bit of a mess...

Greg Fitzgerald garious at gmail.com
Tue Jan 20 22:41:22 PST 2015


> Does that break just the *link time* dependencies?

Yes


> maybe it would help for you to describe the DAG you're envisioning?

Something like: http://yuml.me/edit/324beed8

* lldReaderWriter is gone.  Reader.cpp and Writter.cpp moved down to
lldCore and the others went up to lldDriver.
* ELF targets depend on lldELF and not the other way around.
* All the ELF targets are referenced directly by the Driver.
Alternatively, we could add an lldELFTargets library to
ReaderWriter/ELF (overkill?).


Nick wrote:
> Can we finesse this by having the WinLinkDriver register a “parse” function pointer with
> PECOFFLinkingContext.  Then have FileCOFF just call the registered parse function in
> the PECOFFLinkingContext?

Sounds good to me.

-Greg

On Tue, Jan 20, 2015 at 4:19 PM, Chandler Carruth <chandlerc at google.com> wrote:
>
> On Tue, Jan 20, 2015 at 4:02 PM, Greg Fitzgerald <garious at gmail.com> wrote:
>>
>> Hi Chandler,
>>
>> > Let's start with the purely link-level dependencies encoded in the CMake
>> > build
>>
>> I've been playing around a bit with this.  Looks like we can solve
>> most of the issues by dissolving lldReaderWriter.
>> Reader.cpp/Writer.cpp go into lldCore and the rest go into lldDriver.
>> I don't know if that makes conceptual sense, but it's what breaks the
>> cyclic dependencies.
>
>
> Does that break just the *link time* dependencies?
>
> If you form a DAG of cross-library header inclusion and a DAG of the link
> time dependencies, they should be compatible, and that's the layering we
> should use.
>
> I don't know much about LLD -- maybe it would help for you to describe the
> DAG you're envisioning?




More information about the llvm-dev mailing list