[LLVMdev] -gcolumn-info and PR 14106

David Blaikie dblaikie at gmail.com
Thu Jun 26 15:28:51 PDT 2014


On Thu, Jun 26, 2014 at 12:49 PM, Diego Novillo <dnovillo at google.com> wrote:
> On Thu, Jun 26, 2014 at 3:39 PM, Robinson, Paul
> <Paul_Robinson at playstation.sony.com> wrote:
>> The main motivation for turning it off is that no known consumer (debugger)
>> took advantage of it.
>>
>> Turning it on does more than slightly increase the object file size, it can
>> cause the same source line to be listed multiple times in the .debug_line
>> table (with different column numbers).  This can be confusing to debuggers
>> that ignore column info, or possibly to the users who expect “set breakpoint
>> on line 12” to set one breakpoint and it actually sets 4. “How come nothing
>> happens when I hit Continue?”
>
> Yes. David is testing the gdb testsuite to see whether that's a real
> problem. If that's a problem, it should show there (since GCC does not
> emit column info in dwarf, AFAIR).

FWIW, a basic run seems to show a handful (so not a pervasive issue)
of new failures:

FAIL: gdb.base/skip.exp: step after disabling 3 (3)
FAIL: gdb.reverse/step-precsave.exp: reverse step out of called fn
FAIL: gdb.reverse/step-precsave.exp: reverse next over call
FAIL: gdb.reverse/step-precsave.exp: reverse step test 1
FAIL: gdb.reverse/step-precsave.exp: reverse next test 1
FAIL: gdb.reverse/step-precsave.exp: reverse next test 2
FAIL: gdb.reverse/step-reverse.exp: reverse step out of called fn
FAIL: gdb.reverse/step-reverse.exp: reverse next over call
FAIL: gdb.reverse/step-reverse.exp: reverse step test 1
FAIL: gdb.reverse/step-reverse.exp: reverse next test 1
FAIL: gdb.reverse/step-reverse.exp: reverse next test 2

I haven't looked at why they're failing (if you'd like to reproduce
them & look into it, I can give you some pointers), though FWIW the
reverse debugging scenarios are usually a bit incompatible with clang
due to where clang likes to put the trailing breakpoint in a function
(return statement versus close brace).

>
> In any case, that would be a debugger issue. Not compiler.
>
>
>> For –Rpass and related uses, it might be useful to distinguish between
>> _tracking_ column numbers and _emitting_ column numbers. IIUC –Rpass wants
>> column info tracked during compilation so it can show the things it wants to
>> show with maximum relevance. Whether those column numbers actually make it
>> into the .debug_line section is a different story.
>
> That's already done. -Rpass now enables a special loc tracking mode
> that causes no dwarf generation. The issue is the combination of
> -Rpass -g.
>
> With -Rpass alone, turning on column info is fine (since no debug
> output will be generated). However, -Rpass -g would be penalized since
> no column info would be shown in that case.
>
>
> Diego.




More information about the llvm-dev mailing list