[llvm-dev] Contributing LLD for Mach-O

Fangrui Song via llvm-dev
Sat, 29 Feb 2020 06:40:01 -0000

On 2020-02-28, James Y Knight via llvm-dev wrote:
>Nice!
>
>Your plan sounds great, and it'll be awesome to finally have a good
MachO
>LLD available.
>
>On Fri, Feb 28, 2020 at 4:32 PM Shoaib Meenai via llvm-dev <
>llvm-dev at lists.llvm.org> wrote:
>
>> Hi all,
>>
>> We’re planning to contribute a new implementation of LLD for Mach-O,
using
>> the same design as the COFF and ELF ports. This design has proven to
work
>> very well for those ports, and we’re keen to explore it for Mach-O as
well.
>> Our work is based on an initial prototype created by Peter
Collingbourne
>> and Rui Ueyama.
>>
>> Our initial commit is up for review at https://reviews.llvm.org/D75382.
>> We’ve intentionally stripped down this initial commit as much as
possible
>> to ease reviewing; we’ve kept it to the absolute minimum needed to
produce
>> and test a working macOS x86-64 executable for that prints “Hello
World”
>> via a syscall. We have several short-term follow-ups planned to add
>> important functionality, such as linking against archives, universal
>> binaries, dylibs, and tbd files, performing subsection splitting
>> (atomization), and producing dylibs. The follow-ups should give a good
>> sense of the overall design while still keeping each piece easily
>> reviewable and testable individually. Our end goal is to create a
>> full-featured Mach-O linker, and we’ll be working toward that goal over
the
>> next several months (and years, in all likelihood). We’d appreciate
>> feedback and reviews.

The existing Mach-O port https://reviews.llvm.org/D38290#882910
had been unmaintained when the ld64.lld alias was added.

If Jez and the team are committed to maintain the new Mach-O port and we
think the existing port is a dead end, we may assign the flavor `darwin` to
it (`lld -flavor darwin`) and rename the existing flavor to `darwin-old` or
`darwin-legacy`.