[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
> happen.
> 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:
>> https://github.com/ziglang/zig/commit/1ba6e1641a4c5ea1d0d665fe500c9c
>> 66d69443a4
>> 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." [1] 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."
>>> [2] 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." [3]
>>> 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. [4]
>>> 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
>>> [1] https://lld.llvm.org
>>> [2] http://lists.llvm.org/pipermail/llvm-dev/2018-January/120216.html
>>> [3] https://bugs.llvm.org/show_bug.cgi?id=32175
>>> [4] https://bugs.llvm.org/buglist.cgi?bug_status=
>>> UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_
>>> status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&
>>> bug_status=CLOSED&component=MachO&list_id=139976&product=
>>> lld&query_format=advanced&resolution=---&resolution=
>>> LATER&resolution=REMIND
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180606/6e7a8a98/attachment.html>

More information about the llvm-dev mailing list