<div dir="ltr">Most command line options in GNU, macOS and MSVC are not just different in terms of notion but different in terms of semantics. For example, MSVC link.exe doesn't have --start-group and --end-group options because their symbol resolution semantics are different than Unix. link.exe on the other hand doesn't have --init or --fini options because that's ELF-only concept. Linker scripts exist only in GNU. You cannot hide these differences even if you create a unified driver, which makes a unified driver less attractive to me.<div><br></div><div>Also, I think if we try to create a unified interface, I guess it would end up with this situation -- <a href="https://xkcd.com/927/">https://xkcd.com/927/</a>. We have three standards -- GNU, Darwin and MSVC. I don't know if we want another one.<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 1, 2017 at 12:16 PM, N via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I am aware of these flags, but this is not my point. I am talking about Darwin and Link lld drivers<br>
not being on par with the GNU driver. While using clang for linking helps, as it provides some flags<br>
to the linker, as soon as you want to do something clang does not automatically do, you still have<br>
the issue of different flags for different drivers/targets.<br>
<div class="HOEnZb"><div class="h5"><br>
> On 1 Nov 2017, at 20:08, Jonathan Roelofs <<a href="mailto:jonathan@codesourcery.com">jonathan@codesourcery.com</a>> wrote:<br>
><br>
><br>
><br>
> On 11/1/17 10:29 AM, N via llvm-dev wrote:<br>
>> Thank you for your answers.<br>
>> Indeed, Clang is universal, but only until one needs to pass some commands to the linker which are not<br>
>> automatically passed by the driver. Then we are back to the same problem.<br>
><br>
> Clang and GCC both support the `-Wl,` and `-Xlinker` flags...<br>
><br>
><br>
> Jon<br>
><br>
>> In my opinion, it would be great if lld had a unified, GNU-like interface. Of course, if nobody else is interested,<br>
>> it's probably not even worth it drafting an RFC. :(<br>
>>> On 27 Oct 2017, at 01:09, James Y Knight <<a href="mailto:jyknight@google.com">jyknight@google.com</a>> wrote:<br>
>>><br>
>>> I mean, there is such a universal driver -- it's called "clang".<br>
>>><br>
>>><br>
>>> On Oct 26, 2017 5:31 PM, "Rui Ueyama via llvm-dev" <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
>>> Martell recently added "ld64.lld" as a name for the Darwin driver.<br>
>>><br>
>>> 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.<br>
>>><br>
>>> On Thu, Oct 26, 2017 at 2:20 PM, N <<a href="mailto:scandium@me.com">scandium@me.com</a>> wrote:<br>
>>>> I think using ld.lld or lld-link is preferred way over "lld -flavor gnu" or "lld -flavor link".<br>
>>><br>
>>> -flavor seems to be still actively used in Clang… By the the way, there seems to be no special<br>
>>> command name for Darwin targets, so ld.lld (incorrectly) invokes the ELF linker there<br>
>>> (see <a href="https://bugs.llvm.org/show_bug.cgi?id=34792#c1" rel="noreferrer" target="_blank">https://bugs.llvm.org/show_<wbr>bug.cgi?id=34792#c1</a>)<br>
>>><br>
>>> Regardless, I would be interested in hearing the answer to the rest of the questions.<br>
>>><br>
>>>> On 26 Oct 2017, at 23:10, Rui Ueyama <<a href="mailto:ruiu@google.com">ruiu@google.com</a>> wrote:<br>
>>>><br>
>>>> 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".<br>
>>>><br>
>>>> On Thu, Oct 26, 2017 at 2:06 PM, N via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
>>>> Hi all,<br>
>>>><br>
>>>> According to lld/docs/Driver.rst, Flavor command line option determines the style of lld command-line interface when invoked.<br>
>>>><br>
>>>> However, it looks like this option also determines the set of supported targets we are linking for. For example, lld -flavor gnu<br>
>>>> cannot link mach-o binaries, and could not link PE binaries either (well, not until rL312926).<br>
>>>><br>
>>>> Is this really intended by the design of lld? It looks the flavours are merely legacy compatibility shims, but then why is there no<br>
>>>> universal lld driver that is able to link binary for any platform using a unified CLI?<br>
>>>> ______________________________<wbr>_________________<br>
>>>> LLVM Developers mailing list<br>
>>>> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
>>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
>>>><br>
>>><br>
>>><br>
>>><br>
>>> ______________________________<wbr>_________________<br>
>>> LLVM Developers mailing list<br>
>>> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
>>><br>
>>><br>
>> ______________________________<wbr>_________________<br>
>> LLVM Developers mailing list<br>
>> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
><br>
> --<br>
> Jon Roelofs<br>
> <a href="mailto:jonathan@codesourcery.com">jonathan@codesourcery.com</a><br>
> CodeSourcery / Mentor Embedded / Siemens<br>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div>