[LLVMdev] Debug information under windows

Nathan Jeffords blunted2night at gmail.com
Tue Nov 20 09:01:18 PST 2012


For reference, I have attached a patch I created some time ago to solve
this issue. My implementation differs in that I created a new type to
represent the section offset instead of special casing DIEDelta. When it
was originally committed it broke one of the build bots so it was
uncommitted. I didn't have the resources to investigate the issue so I have
been maintaining the patch on my own build.


On Mon, Nov 19, 2012 at 1:57 AM, Daniel Kłobuszewski <
daniel.klobuszewski at ibs.org.pl> wrote:

> W dniu 2012-10-26 16:55, Daniel Kłobuszewski pisze:
>
>  Hello,
>>
>> Recently I found binaries produced with LLVM impossible to debug under
>> Windows. This was probably related to the following bug:
>> http://llvm.org/bugs/show_bug.**cgi?id=13636<http://llvm.org/bugs/show_bug.cgi?id=13636>
>>
>> Asm generated from .ll files revealed that some offsets to debug
>> information were incorrect: they were absolute instead of relative to
>> their sections.
>>
>> Following patch seemed to have repaired the problem, so I'm just leaving
>> it here. Hopefully this will help someone.
>>
>> Regards,
>> Daniel
>>
>>
>> diff -r 547972237a05 -r 6ed9378f04a3 lib/MC/MCAsmInfoCOFF.cpp
>> --- a/lib/MC/MCAsmInfoCOFF.cpp    Wed Oct 10 20:39:45 2012 +0200
>> +++ b/lib/MC/MCAsmInfoCOFF.cpp    Thu Oct 18 12:41:27 2012 +0200
>> @@ -38,6 +38,10 @@
>>     HasMicrosoftFastStdCallManglin**g = true;
>>
>>     SupportsDataRegions = false;
>> +
>> +  DwarfUsesLabelOffsetForRanges = false;
>> +  DwarfRequiresRelocationForSect**ionOffset = false;
>> +  DwarfUsesRelocationsForStringP**ool = false;
>>   }
>>
>>   void MCAsmInfoMicrosoft::anchor() { }
>>
>>
> Hello again,
>
> "fix" from my previous message was helpful only for one compilation unit,
> but was working incorrectly in case when more CUs were linked together.
>
> Since the bug I've linked seems to still be unresolved, I'm sending my
> solution to it. Basically all that needed to be done was to emit .secrel32
> instructions in few places instead of sections offsets in label difference
> form.
>
> Here is how I've been building executable for tests (under MinGW console):
>
> llc test.bc -filetype=asm -march=x86 -x86-asm-syntax=att
> -mtriple=i686-pc-mingw32 -disable-fp-elim
> llc test_main.bc -filetype=asm -march=x86 -x86-asm-syntax=att
> -mtriple=i686-pc-mingw32 -disable-fp-elim
> gcc -g -c test.s -o test.o
> gcc -g -c test_main.s -o test_main.o
> gcc -g test_main.o test.o -o test
>
> Someone more familiar with LLVM code than me should probably review my
> proposed patch. My source revision was 3.1 LLVM release.
>
> Regards,
> Daniel
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121120/64ae4900/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: windebug.patch
Type: application/octet-stream
Size: 7321 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20121120/64ae4900/attachment.obj>


More information about the llvm-dev mailing list