[llvm-dev] RFC: LLVM - lld - Add visual studio compatible diagnostics output to lld

Chris Jackson via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 2 02:26:44 PST 2018


Hello,

thanks for the responses.

Rui, I think you're correct that frequently that will be the error and I
will probably initially work on formatting that message to MSVC style.

Igor, I intend to work on an initial patch that is broadly in line with the
clang functionality I referenced, to demonstrate the functionality as Rui
suggested,

Best Regards,


Chris

On Tue, Feb 27, 2018 at 3:45 AM, Igor Kudrin <ikudrin at accesssoftek.com>
wrote:

> Hi,
>
>
> We would like to see that change, too, especially for lld/ELF.
>
>
> Chris, do you have a patch or just looking for help?
>
>
> Best Regards,
> Igor Kudrin
> C++ Developer, Access Softek, Inc.
> ------------------------------
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org> on behalf of Rui
> Ueyama via llvm-dev <llvm-dev at lists.llvm.org>
> *Sent:* Friday, February 23, 2018 6:37 AM
> *To:* Chris Jackson
> *Cc:* llvm-dev
> *Subject:* Re: [llvm-dev] RFC: LLVM - lld - Add visual studio compatible
> diagnostics output to lld
>
> Hi,
>
> I understand that making lld's error message compatible with MSVC makes it
> easy to use in IDEs. But at the same time I personally prefer the current
> style of lld's error message because it's easier to read particularly when
> filenames or symbol names are long (which is a norm in modern projects).
>
> I'd start with experimenting your idea with a small change. I guess that
> the error message you want to format in the MSVC style is almost always
> "missing symbol" error. You could change only that message locally so that
> lld prints it out in the MSVC style. If that works for you, then I guess
> you can demonstrate that to convince broader audiences, and we can discuss
> how we will adopt that change. What do you think?
>
> On Mon, Feb 19, 2018 at 7:21 AM, Chris Jackson via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> RFC: lld- Add visual studio compatible diagnostics output to lld
>>
>> Hello all,
>>
>> We have a proposal to extend the diagnostics output capabilities of lld.
>>
>> ## Problem
>>
>> MS Visual Studio expects the diagnostic output of build tools to conform
>> to a specific format, described here: [1] and [2] . Currently lld cannot
>> emit warnings and errors in this format. lld prefixes diagnostic output
>> with args[0], which can be a full path to the lld executable. If a
>> diagnostic message of this format is clicked within visual studio, the
>> program
>> attempts to open the linker executable for edit, as this is interpreted
>> as a source code file. Normally this causes visual studio
>> to become  unresponsive until the file open operation times out. This
>> output in its current format is displayed in visual studio as:
>>
>> ------ Build started: Project: lldDiagnostics, Configuration: Debug ------
>> X:\bin\lld.exe : error : undefined symbol: foo
>> >>> referenced by diagMain.cpp:5 (X:\lldDiagnostics\lldDiagnost
>> ics\diagMain.cpp:5)
>> >>>               Debug\diagMain.o:(main)
>> Done building project "lldDiagnostics.vcxproj" -- FAILED.
>> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
>> ==========
>>
>>
>> ## Proposed Solution
>>
>> We propose the addition of an option to output diagnostics that fully
>> conform to [1]. There is currently an option in clang that enables VS
>> compatible output, '-fdiagnostics-format=msvc' [3] [4]. This will enable
>> visual studio to parse the full diagnostic. This will
>> result in clickable links so that the IDE can display the source from
>> which the error or warning originates, as well as adding errors and
>> warnings to the error list.
>>
>> A visual studio conformant diagnostics output would look something like:
>>
>> X:\lldDiagnostics\lldDiagnostics\diagMain.cpp(5) : error : undefined
>> symbol ‘foo’ referenced in function ‘main’ in file ‘Debug\diagMain.o’
>>
>> VS would be display this as:
>>
>> ------ Build started: Project: Project1, Configuration: Debug Win32 ------
>> Link : error : L0039: reference to undefined symbol `foo' in file
>> "X:\lldDiagnostics\lldDiagnostics\diagMain\diagMain.o"
>> X:\lldDiagnostics\lldDiagnostics\diagMain.cpp : error : L0039: reference
>> to undefined symbol `foo' in file
>> "X:\lldDiagnostics\lldDiagnostics\diagMain\diagMainSource.o"
>> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped
>> ==========
>>
>> Thanks.
>>
>>
>> Best Regards,
>>
>>
>> Chris
>>
>>
>> [1] https://docs.microsoft.com/en-us/cpp/ide/formatting-the-outp
>> ut-of-a-custom-build-step-or-build-event
>> [2] https://blogs.msdn.microsoft.com/msbuild/2006/11/02/msbuild-
>> visual-studio-aware-error-messages-and-message-formats/
>> [3] https://clang.llvm.org/docs/UsersManual.html#cmdoption-fdiag
>> nostics-format
>> [4] http://lists.llvm.org/pipermail/cfe-dev/2011-May/015115.html
>>
>>
>>
>> _______________________________________________
>> 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/20180302/9964a3d6/attachment-0001.html>


More information about the llvm-dev mailing list