[llvm] r188297 - Output DW_AT_stmt_list dwarf debug info as DW_FORM_sec_offset instead of DW_FORM_data4 as it is a section offset (fixes the coff/dwarf debug info statement locations)

Eric Christopher echristo at gmail.com
Tue Sep 3 09:14:59 PDT 2013


I changed the default version on linux to say 4 in r189823. This
doesn't hook up well with how the backend is generating code, but they
should at least agree.

-eric

On Tue, Sep 3, 2013 at 1:49 AM, Eric Christopher <echristo at gmail.com> wrote:
>>
>> Do you happen to have a proposal on what the best way is to either make
>> sure DWARF3 debug info consumers can keep on parsing the LLVM debug info,
>> or to properly encode in the debug info header that DWARF4 is produced,
>> not DWARF3?
>>
>
> Pretty much exactly what I replied to with Carlo when he committed it.
> Some support for conditionalizing dwarf versions was added a while
> back, but it wasn't complete and the person that added it doesn't seem
> to be working on that aspect any more. It's not the top of my list,
> but I can easily specify that we're emitting dwarf 4 for now :)
>
> -eric
>
>> Thanks,
>>
>> Kristof
>>
>>> -----Original Message-----
>>> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
>>> bounces at cs.uiuc.edu] On Behalf Of Eric Christopher
>>> Sent: 13 August 2013 19:00
>>> To: Carlo Kok
>>> Cc: llvm-commits at cs.uiuc.edu
>>> Subject: Re: [llvm] r188297 - Output DW_AT_stmt_list dwarf debug info
>>> as DW_FORM_sec_offset instead of DW_FORM_data4 as it is a section
>>> offset (fixes the coff/dwarf debug info statement locations)
>>>
>>> As a note this may break the darwin gdb bot because of the newer form.
>>> We can conditionalize it on the "support old gdb"/"we should have a
>>> way to specify dwarf level" support.
>>>
>>> -eric
>>>
>>> On Tue, Aug 13, 2013 at 10:46 AM, Carlo Kok <ck at remobjects.com> wrote:
>>> > Author: carlokok
>>> > Date: Tue Aug 13 12:46:57 2013
>>> > New Revision: 188297
>>> >
>>> > URL: http://llvm.org/viewvc/llvm-project?rev=188297&view=rev
>>> > Log:
>>> > Output DW_AT_stmt_list dwarf debug info as DW_FORM_sec_offset instead
>>> of DW_FORM_data4 as it is a section offset (fixes the coff/dwarf debug
>>> info statement locations)
>>> >
>>> > Added:
>>> >     llvm/trunk/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
>>> > Modified:
>>> >     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>>> >
>>> > Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>>> > URL: http://llvm.org/viewvc/llvm-
>>> project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=188297&r1=
>>> 188296&r2=188297&view=diff
>>> >
>>> =======================================================================
>>> =======
>>> > --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
>>> > +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Tue Aug 13
>>> 12:46:57 2013
>>> > @@ -740,7 +740,7 @@ CompileUnit *DwarfDebug::constructCompil
>>> >    // is not okay to use line_table_start here.
>>> >    if (!useSplitDwarf()) {
>>> >      if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
>>> > -      NewCU->addLabel(Die, dwarf::DW_AT_stmt_list,
>>> dwarf::DW_FORM_data4,
>>> > +      NewCU->addLabel(Die, dwarf::DW_AT_stmt_list,
>>> dwarf::DW_FORM_sec_offset,
>>> >                        UseTheFirstCU ?
>>> >                        Asm->GetTempSymbol("section_line") :
>>> LineTableStartSym);
>>> >      else if (UseTheFirstCU)
>>> >
>>> > Added: llvm/trunk/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
>>> > URL: http://llvm.org/viewvc/llvm-
>>> project/llvm/trunk/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll?rev
>>> =188297&view=auto
>>> >
>>> =======================================================================
>>> =======
>>> > --- llvm/trunk/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
>>> (added)
>>> > +++ llvm/trunk/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll Tue
>>> Aug 13 12:46:57 2013
>>> > @@ -0,0 +1,40 @@
>>> > +; RUN: llc -mtriple=i686-w64-mingw32 -o %t -filetype=obj %s
>>> > +; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s
>>> > +
>>> > +; CHECK:        DW_AT_stmt_list [DW_FORM_sec_offset]
>>> > +;
>>> > +; generated from:
>>> > +; clang -g -S -emit-llvm test.c -o test.ll
>>> > +; int main()
>>> > +; {
>>> > +;      return 0;
>>> > +; }
>>> > +
>>> > +; ModuleID = 'test.c'
>>> > +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-
>>> i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-
>>> a0:0:64-f80:32:32-n8:16:32-S32"
>>> > +target triple = "i686-pc-win32"
>>> > +
>>> > +; Function Attrs: nounwind
>>> > +define i32 @main() #0 {
>>> > +entry:
>>> > +  %retval = alloca i32, align 4
>>> > +  store i32 0, i32* %retval
>>> > +  ret i32 0, !dbg !10
>>> > +}
>>> > +
>>> > +attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-
>>> pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-
>>> fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-
>>> size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
>>> > +
>>> > +!llvm.dbg.cu = !{!0}
>>> > +!llvm.module.flags = !{!9}
>>> > +
>>> > +!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang
>>> version 3.4 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2,
>>> metadata !3, metadata !2, metadata !2, metadata !""} ; [
>>> DW_TAG_compile_unit ] [C:\Projects/test.c] [DW_LANG_C99]
>>> > +!1 = metadata !{metadata !"test.c", metadata !"C:\5CProjects"}
>>> > +!2 = metadata !{i32 0}
>>> > +!3 = metadata !{metadata !4}
>>> > +!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata
>>> !"main", metadata !"main", metadata !"", i32 1, metadata !6, i1 false,
>>> i1 true, i32 0, i32 0, null, i32 0, i1 false, i32 ()* @main, null,
>>> null, metadata !2, i32 2} ; [ DW_TAG_subprogram ] [line 1] [def] [scope
>>> 2] [main]
>>> > +!5 = metadata !{i32 786473, metadata !1}          ; [
>>> DW_TAG_file_type ] [C:\Projects/test.c]
>>> > +!6 = metadata !{i32 786453, i32 0, i32 0, metadata !"", i32 0, i64
>>> 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, i32 0} ; [
>>> DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
>>> > +!7 = metadata !{metadata !8}
>>> > +!8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64
>>> 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0,
>>> size 32, align 32, offset 0, enc DW_ATE_signed]
>>> > +!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 3}
>>> > +!10 = metadata !{i32 3, i32 0, metadata !4, null}
>>> >
>>> >
>>> > _______________________________________________
>>> > llvm-commits mailing list
>>> > llvm-commits at cs.uiuc.edu
>>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>
>>



More information about the llvm-commits mailing list