[llvm-dev] Mach-O support in lld: what are the known issues?
Andrew Kelley via llvm-dev
llvm-dev at lists.llvm.org
Wed Jun 6 11:12:39 PDT 2018
For my purposes, all I need is a linker that is sufficient to turn
LLVM-generated MACH-O .o files into executables.
On Wed, Jun 6, 2018 at 2:10 PM, Jean-Daniel <mailing at xenonium.com> wrote:
> Le 5 juin 2018 à 23:44, James Y Knight via llvm-dev <
> llvm-dev at lists.llvm.org> a écrit :
> I'd be interested in the existence of a high-quality, open-source,
> portable linker for apple platforms, but not enough to help make that
> If I _was_ gonna work on something related to that, I'd probably be
> inclined to instead add any required features to allow an ELF linker to
> target a notional darwin-elf target, and to have clang emit darwin-elf
> object files, and then write a binary converter to convert the emitted ELF
> binary to a Mach-O binary, so that it can actually run on a platform that
> exists rather than the platform I'd prefer to exist. But that's probably
> just me being crazy, and I'm not going to work on it. :)
> The list of feature exclusive to the Apple platform and Mac-O in the
> linker is astonishingly long. I started listing the missing features in lld
> at some points, but stop midway.
> I’m not even sure it is possible to write Darwin-elf that supports all
> Mach-O features. If someone really need a portable linker, porting ld64 to
> other platform is probably the easier way
> On Tue, Jun 5, 2018 at 11:19 AM Andrew Kelley via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>> Are you planning on working on LLD?
>> Over here in the Zig frontend, we've been relying on LLD Mach-O support
>> but at some point we'll have to either maintain LLD or write a Mach-O
>> linker in zig. So far we've been making it work with this hacky patch:
>> If nobody else cares about the LLD Mach-O code, then we'll be better off
>> doing the work in zig but if others are interested then it may be more
>> beneficial for the community to work together on the LLD codebase.
>> On Mon, Jun 4, 2018 at 7:06 PM, Brian Gesiak via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>> Hello all,
>>> I'm trying to better understand the state of Mach-O support in lld.
>>> The lld docs state that "the linker supports ELF (Unix), PE/COFF
>>> (Windows), Mach-O (macOS) and WebAssembly in descending order of
>>> completeness."  True to that statement, I found an email on this list
>>> from Jan 2018 stating that "MachO support in lld is not really ready
>>> for real world usage. It was able to bootstrap itself a couple of years
>>> ago, but, it has not really been maintained or further developed since."
>>>  And on LLVM Bugzilla, a comment on one bug states "indeed the macOS
>>> version seems to be experimental, and not to support LTO at all for the
>>> moment." 
>>> I'm curious if anyone has more information on what else Mach-O support
>>> in lld is missing. From the above links, I'm aware of a lack of support for
>>> LTO. I also encountered the same Clang driver bugs as mentioned on that
>>> Bugzilla report. Besides that, I can see a few memory leaks and incorrect
>>> links have been reported on Bugzilla as well. 
>>> Is there anything else that lld developers might be aware of? What work
>>> needs to be done before ld64.lld is considered complete?
>>> Thanks in advance for any information you can send my way! :)
>>> - Brian Gesiak
>>>  https://lld.llvm.org
>>>  http://lists.llvm.org/pipermail/llvm-dev/2018-January/120216.html
>>>  https://bugs.llvm.org/show_bug.cgi?id=32175
>>>  https://bugs.llvm.org/buglist.cgi?bug_status=
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev