[llvm-dev] lld-link with MSVC6 object files

Rui Ueyama via llvm-dev
2019-10-01T07:58:16Z

Out of curiosity, why do you want to use lld-link with a compiler that was
released 20 years ago?

On Tue, Oct 1, 2019 at 7:02 AM Zachary Turner via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> I would expect it to be able to link the object file, even if it ignored
> debug info.  It's a bit strange that it complains about bad file magic.
>
> It might be tricky to get debug information working and produce a valid
> PDB file since that is pretty old and the format has changed both with how
> it was stored in the object file itself as well as the format of the PDB
> file.
>
> My guess is that the "magic" it's complaining about is not
the magic of
> the object file itself but rather the first 4 bytes of the .debug$S (or was
> it the .debug$T?) section.  Perhaps a simple fix in this case is that
> instead of erroring out if we encounter an "older" magic, we just
link as
> if debug info was not present to begin with.
>
> This will at least make it work.  If you want to actually consume the
> debug info though, you're in for a fun ride :)
>
> On Mon, Sep 30, 2019 at 2:19 PM Paul Moran via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> It sounds like perhaps it might mostly work with some tweaks - given
its
>> complaining about bad file magic. I'll see if I can get lld-link to
build
>> locally and hack out the magic checks to see if it works.
>>
>> On Mon, Sep 30, 2019 at 10:14 PM David Blaikie <dblaikie at
gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, Sep 30, 2019 at 2:07 PM Paul Moran <bankybooks at
gmail.com> wrote:
>>>
>>>> MSVC 6 is 1998 not 1989 :)
>>>>
>>>
>>> Ah, I just glanced briefly at the Wikipedia article (
>>> https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B ) &
misread the
>>> "C 6.0" and didn't notice it was distinct from
"Visual C++ 6.0" - thanks
>>> for the catch!
>>>
>>>
>>>>
>>>> The latest MSVC linker can link these object files. Is this
just
>>>> because it has support for C13 types and some other code path
for whatever
>>>> MSVC6 uses? After some digging around it appears to be this
format:
>>>>
>>>>
>>>>
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#coff-file-header-object-and-image
>>>>
>>>>
>>>> Which is COFF object file format? Does lld link support this
format?
>>>>
>>>
>>> COFF is still the windows object file format, and the Windows
support in
>>> lld is COFF support, yeah. I guess there might be some format
variations
>>> that haven't been implemented in lld, though. It's mostly
an "on demand"
>>> sort of approach.
>>>
>>>
>>>>
>>>>
>>>> On Mon, Sep 30, 2019 at 7:39 PM Alexandre Ganea <
>>>> alexandre.ganea at ubisoft.com> wrote:
>>>>
>>>>> The CodeView library in LLVM only supports Codeview C13
types, that
>>>>> is, MSVC 7.0 / Visual Studio 2002 or after.
>>>>>
>>>>>
>>>>>
>>>>> *De :* llvm-dev <llvm-dev-bounces at lists.llvm.org>
*De la part de*
>>>>> David Blaikie via llvm-dev
>>>>> *Envoyé :* September 30, 2019 2:38 PM
>>>>> *À :* Paul Moran <bankybooks at gmail.com>; Rui
Ueyama <ruiu at google.com>
>>>>> *Cc :* llvm-dev at lists.llvm.org
>>>>> *Objet :* Re: [llvm-dev] lld-link with MSVC6 object files
>>>>>
>>>>>
>>>>>
>>>>> MSVC 6 as in the Visual Studio released in 1989? Yes, I
imagine that's
>>>>> a bit outside the intended support window.
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Sep 30, 2019 at 11:18 AM Paul Moran via llvm-dev
<
>>>>> llvm-dev at lists.llvm.org> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>
>>>>>
>>>>> I have a question about lld-link. What obj file formats
should it
>>>>> support? When I try to use an obj from msvc 6.0 it
complains that the file
>>>>> magic is not valid.
>>>>>
>>>>>
>>>>>
>>>>> However when running  llvm-objdump it reports:
>>>>>
>>>>>
>>>>>
>>>>> test1.obj:      file format COFF-i386
>>>>>
>>>>> Disassembly of section .text:
>>>>> 0000000000000000 _main:
>>>>>        0:       68 00 00 00 00  pushl   $0
>>>>>        5:       e8 00 00 00 00  calll   0 <_main+0xa>
>>>>>        a:       83 c4 04        addl    $4, %esp
>>>>>        d:       33 c0   xorl    %eax, %eax
>>>>>
>>>>>       f:       c3      retl
>>>>>
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Paul
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> LLVM Developers mailing list
>>>>> llvm-dev at lists.llvm.org
>>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>>
>>>>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://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/20191001/fb6c6bee/attachment.html>