Hi all, According to lld/docs/Driver.rst, Flavor command line option determines the style of lld command-line interface when invoked. However, it looks like this option also determines the set of supported targets we are linking for. For example, lld -flavor gnu cannot link mach-o binaries, and could not link PE binaries either (well, not until rL312926). Is this really intended by the design of lld? It looks the flavours are merely legacy compatibility shims, but then why is there no universal lld driver that is able to link binary for any platform using a unified CLI?
The -flavor option exists mostly for historical reasons. I think using ld.lld or lld-link is preferred way over "lld -flavor gnu" or "lld -flavor link". On Thu, Oct 26, 2017 at 2:06 PM, N via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Hi all, > > According to lld/docs/Driver.rst, Flavor command line option determines > the style of lld command-line interface when invoked. > > However, it looks like this option also determines the set of supported > targets we are linking for. For example, lld -flavor gnu > cannot link mach-o binaries, and could not link PE binaries either (well, > not until rL312926). > > Is this really intended by the design of lld? It looks the flavours are > merely legacy compatibility shims, but then why is there no > universal lld driver that is able to link binary for any platform using a > unified CLI? > _______________________________________________ > 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/20171026/09e75257/attachment.html>
> I think using ld.lld or lld-link is preferred way over "lld -flavor gnu" or "lld -flavor link".-flavor seems to be still actively used in Clang… By the the way, there seems to be no special command name for Darwin targets, so ld.lld (incorrectly) invokes the ELF linker there (see https://bugs.llvm.org/show_bug.cgi?id=34792#c1) Regardless, I would be interested in hearing the answer to the rest of the questions.> On 26 Oct 2017, at 23:10, Rui Ueyama <ruiu at google.com> wrote: > > The -flavor option exists mostly for historical reasons. I think using ld.lld or lld-link is preferred way over "lld -flavor gnu" or "lld -flavor link". > > On Thu, Oct 26, 2017 at 2:06 PM, N via llvm-dev <llvm-dev at lists.llvm.org> wrote: > Hi all, > > According to lld/docs/Driver.rst, Flavor command line option determines the style of lld command-line interface when invoked. > > However, it looks like this option also determines the set of supported targets we are linking for. For example, lld -flavor gnu > cannot link mach-o binaries, and could not link PE binaries either (well, not until rL312926). > > Is this really intended by the design of lld? It looks the flavours are merely legacy compatibility shims, but then why is there no > universal lld driver that is able to link binary for any platform using a unified CLI? > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >
Martell recently added "ld64.lld" as a name for the Darwin driver. As to why there's no driver that provides a unified command line arguments, I can't speak for other people. But no one seems to have been interested in it enough to actually invent and implement a set of unified command line arguments. On Thu, Oct 26, 2017 at 2:20 PM, N <scandium at me.com> wrote:> > I think using ld.lld or lld-link is preferred way over "lld -flavor gnu" > or "lld -flavor link". > > -flavor seems to be still actively used in Clang… By the the way, there > seems to be no special > command name for Darwin targets, so ld.lld (incorrectly) invokes the ELF > linker there > (see https://bugs.llvm.org/show_bug.cgi?id=34792#c1) > > Regardless, I would be interested in hearing the answer to the rest of the > questions. > > > On 26 Oct 2017, at 23:10, Rui Ueyama <ruiu at google.com> wrote: > > > > The -flavor option exists mostly for historical reasons. I think using > ld.lld or lld-link is preferred way over "lld -flavor gnu" or "lld -flavor > link". > > > > On Thu, Oct 26, 2017 at 2:06 PM, N via llvm-dev <llvm-dev at lists.llvm.org> > wrote: > > Hi all, > > > > According to lld/docs/Driver.rst, Flavor command line option determines > the style of lld command-line interface when invoked. > > > > However, it looks like this option also determines the set of supported > targets we are linking for. For example, lld -flavor gnu > > cannot link mach-o binaries, and could not link PE binaries either > (well, not until rL312926). > > > > Is this really intended by the design of lld? It looks the flavours are > merely legacy compatibility shims, but then why is there no > > universal lld driver that is able to link binary for any platform using > a unified CLI? > > _______________________________________________ > > 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/20171026/69a519cf/attachment.html>
Michael Spencer via llvm-dev
2017-Nov-01 22:47 UTC
[llvm-dev] [lld] Flavour option purpose
On Thu, Oct 26, 2017 at 2:06 PM, N via llvm-dev <llvm-dev at lists.llvm.org> wrote:> Hi all, > > According to lld/docs/Driver.rst, Flavor command line option determines > the style of lld command-line interface when invoked. > > However, it looks like this option also determines the set of supported > targets we are linking for. For example, lld -flavor gnu > cannot link mach-o binaries, and could not link PE binaries either (well, > not until rL312926). > > Is this really intended by the design of lld? It looks the flavours are > merely legacy compatibility shims, but then why is there no > universal lld driver that is able to link binary for any platform using a > unified CLI? > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >The original design of lld had a single driver for all 3 formats that compatibility drivers would target. It was eventually determined that this didn't work in practice as the formats are each so different, so this was dropped and was not carried over to the new COFF and ELF lld designs. - Michael Spencer -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171101/e605728c/attachment.html>