[llvm] r174479 - Attempt to recover gdb bot after r174445.

David Blaikie dblaikie at gmail.com
Fri Feb 8 15:21:36 PST 2013


On Fri, Feb 8, 2013 at 3:14 PM, Manman Ren <mren at apple.com> wrote:
>
> On Feb 8, 2013, at 11:41 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
>> On Tue, Feb 5, 2013 at 4:59 PM, Manman Ren <mren at apple.com> wrote:
>>> Author: mren
>>> Date: Tue Feb  5 18:59:41 2013
>>> New Revision: 174479
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=174479&view=rev
>>> Log:
>>> Attempt to recover gdb bot after r174445.
>>>
>>> Failure: undefined symbol 'Lline_table_start0'.
>>> Root-cause: we use a symbol subtraction to calculate at_stmt_list, but
>>> the line table entries are not dumped in the assembly.
>>> Fix: use zero instead of a symbol subtraction for Compile Unit 0.
>>
>> This seems to not have completely fixed problems of this kind. I
>> discovered more breakage in DragonEgg. Any attempt to build with debug
>> info in DragonEgg is currently broken due to the original change, even
>> after this fix.
>>
>> You can reproduce this without dragonegg:
>>
>> $ echo "int main() { }" | clang -x c++ -g -S - -o hello.s && clang hello.s
>
> This simple example worked for me with source up to r174431.

It works for me when I revert r174479 + r174445, fails for me with ToT.

> With r174479, we are not using line_table_start0 in at_stmt_list, so it should be okay if we don't emit the line table entries in MCAsmStreamer.

It's not clear to me - have you tried? So far as I can see, with ToT,
that repro fails to link with the aforementioned linker error. Are you
not seeing that behavior?

> I noticed that using -disable-dot-loc will dump the line table entries.

Right - because we emit the line table if we don't emit .loc
directives. If we do emit .loc directives then we skip the line table
because we figure the linker can figure it out based on the .loc
directives.

- David

>
> Thanks,
> Manman
>
>> /tmp/hello-5jpGIX.o:(.debug_info+0x1e): undefined reference to
>> `.Lline_table_start0'
>>
>> Essentially: the assembly code emitted by clang -g is currently
>> unusable due to this undefined reference
>>
>> Eric pointed out that MCAsmStreamer.cpp:1420 - where we don't emit the
>> line table if we expect the .loc directives to be sufficient for the
>> assembler to create the line table itself. Since we don't emit the
>> line table we don't emit the extra special line_table_start symbol
>> that's being used in the debug info. (this is paraphrased from Eric's
>> comments based on my rather shallow understanding of the issues)
>>
>> - David
>>
>>>
>>> Modified:
>>>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>>>    llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll
>>>    llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll
>>>    llvm/trunk/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll
>>>    llvm/trunk/test/CodeGen/X86/dbg-value-location.ll
>>>    llvm/trunk/test/DebugInfo/X86/stringpool.ll
>>>
>>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
>>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Tue Feb  5 18:59:41 2013
>>> @@ -674,6 +674,8 @@ CompileUnit *DwarfDebug::constructCompil
>>>   if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
>>>     NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4,
>>>                     LineTableStartSym);
>>> +  else if (NewCU->getUniqueID() == 0)
>>> +    NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0);
>>>   else
>>>     NewCU->addDelta(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4,
>>>                     LineTableStartSym, Asm->GetTempSymbol("section_line"));
>>>
>>> Modified: llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll (original)
>>> +++ llvm/trunk/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll Tue Feb  5 18:59:41 2013
>>> @@ -17,7 +17,7 @@ target triple = "thumbv7-apple-darwin10"
>>> ; DW_OP_constu
>>> ; offset
>>>
>>> -;CHECK: .long Lset7
>>> +;CHECK: .long Lset6
>>> ;CHECK-NEXT:        @ DW_AT_type
>>> ;CHECK-NEXT:        @ DW_AT_decl_file
>>> ;CHECK-NEXT:        @ DW_AT_decl_line
>>>
>>> Modified: llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll (original)
>>> +++ llvm/trunk/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll Tue Feb  5 18:59:41 2013
>>> @@ -8,7 +8,7 @@
>>> ; DW_OP_constu
>>> ; offset
>>>
>>> -;CHECK: .long Lset34
>>> +;CHECK: .long Lset33
>>> ;CHECK-NEXT:        @ DW_AT_type
>>> ;CHECK-NEXT:        @ DW_AT_decl_file
>>> ;CHECK-NEXT:        @ DW_AT_decl_line
>>>
>>> Modified: llvm/trunk/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll (original)
>>> +++ llvm/trunk/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll Tue Feb  5 18:59:41 2013
>>> @@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8
>>> target triple = "x86_64-apple-darwin10.0.0"
>>>
>>> ; Check debug info for variable z_s
>>> -;CHECK: .long Lset14
>>> +;CHECK: .long Lset13
>>> ;CHECK-NEXT:  ## DW_AT_decl_file
>>> ;CHECK-NEXT:  ## DW_AT_decl_line
>>> ;CHECK-NEXT:  ## DW_AT_type
>>>
>>> Modified: llvm/trunk/test/CodeGen/X86/dbg-value-location.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dbg-value-location.ll?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/X86/dbg-value-location.ll (original)
>>> +++ llvm/trunk/test/CodeGen/X86/dbg-value-location.ll Tue Feb  5 18:59:41 2013
>>> @@ -4,7 +4,7 @@ target datalayout = "e-p:64:64:64-i1:8:8
>>> target triple = "x86_64-apple-darwin10.0.0"
>>> ;Radar 8950491
>>>
>>> -;CHECK: .long Lset6
>>> +;CHECK: .long Lset5
>>> ;CHECK-NEXT:        ## DW_AT_decl_file
>>> ;CHECK-NEXT:        ## DW_AT_decl_line
>>> ;CHECK-NEXT:        ## DW_AT_type
>>>
>>> Modified: llvm/trunk/test/DebugInfo/X86/stringpool.ll
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/stringpool.ll?rev=174479&r1=174478&r2=174479&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/test/DebugInfo/X86/stringpool.ll (original)
>>> +++ llvm/trunk/test/DebugInfo/X86/stringpool.ll Tue Feb  5 18:59:41 2013
>>> @@ -23,8 +23,8 @@
>>> ; LINUX-NEXT: .quad   yyyy
>>>
>>> ; Verify that we refer to 'yyyy' without a relocation.
>>> -; DARWIN: Lset6 = Linfo_string3-Linfo_string          ## DW_AT_name
>>> -; DARWIN-NEXT:        .long   Lset6
>>> +; DARWIN: Lset5 = Linfo_string3-Linfo_string          ## DW_AT_name
>>> +; DARWIN-NEXT:        .long   Lset5
>>> ; DARWIN-NEXT:        .long   39                      ## DW_AT_type
>>> ; DARWIN-NEXT:        .byte   1                       ## DW_AT_external
>>> ; DARWIN-NEXT:        .byte   1                       ## DW_AT_decl_file
>>>
>>>
>>> _______________________________________________
>>> 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