[llvm-dev] Dwarf - 5 features in clang and llvm

Vedant Kumar via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 11 10:10:08 PDT 2019


Thanks for investigating. Could you file a report on bugs.llvm.org so that we can track this issue?

vedant (sent from my iPhone)

> On Sep 11, 2019, at 6:06 AM, Sourabh Singh Tomar <sourav0311 at gmail.com> wrote:
> 
> Hi Djordje,
> 
> > The 'func()' gets inlined, so according to the DWARF standard the call-site debug info should not be created for calls to inlined functions  
> 
> Thanks for sharing this, Now the real problem is getting values of this optimized parameter "ptr" since func is inlined, variable ptr has location in debug_loc section {assuming DWARF-4}.
> but for CLANG compiled binaries, gdb is reporting  optimized out.
> 
> Reading symbols from test1_clang_O2...
> (gdb) b func(int*)
> Breakpoint 1 at 0x2010f4: func(int*). (2 locations)
> (gdb) r
> Starting program: /doc/test1_clang_O2
> 
> Breakpoint 1, func (ptr=<optimized out>) at test1.cpp:4
> 4               std::cout << *ptr;
> (gdb) print *ptr
> value has been optimized out
> 
> For GCC-9.2 compiled binaries, I'm able to print this optimized out the value of optimized out "ptr" variable. 
> Please note that GCC-9.2 is also emitting an extra DW_OP_GNU_implicit_poitner along with DW_OP_GNU_entry_value, DW_OP_stack_value. DW_OP_GNU_implicit_pointer is not emitted by CLANG.
> 
> >> The new work is also implemented on the MIR level.  
> Thanks for clarifying this.
> 
> Thanks!
> Sourabh.
> 
>> On Wed, Sep 11, 2019 at 5:16 PM Djordje Todorovic <djordje.todorovic at rt-rk.com> wrote:
>> Hi Sourabh,
>> 
>> > #include <iostream>
>> > int func(int* ptr){
>> >         std::cout << *ptr;
>> >         return *ptr + 5;
>> > }
>> > int main(int argc, char** argv){
>> >         int a = 4;
>> >         int* ptr_a = &a;
>> >         int b = func(ptr_a);
>> >         return 0;
>> > }
>> 
>> The 'func()' gets inlined, so according to the DWARF standard the call-site debug info should not be created for calls to inlined functions.
>> 
>> >@Djorde DW_TAG_call_site are supported using late MIR approach, are the new Call Site related development will be supported via MIR. or their will be a frontend level debug metadata support will be added.
>> 
>> The new work is also implemented on the MIR level.
>> 
>> Best,
>> Djordje
>> 
>> On 11.9.19. 13:07, Sourabh Singh Tomar wrote:
>> > Hello Djordje, Vedant,
>> > 
>> > Thanks a lot for sharing information. 
>> > 
>> > I have a doubt, please consider the following simple test case-
>> > #include <iostream>
>> > int func(int* ptr){
>> >         std::cout << *ptr;
>> >         return *ptr + 5;
>> > }
>> > int main(int argc, char** argv){
>> >         int a = 4;
>> >         int* ptr_a = &a;
>> >         int b = func(ptr_a);
>> >         return 0;
>> > } 
>> > commandline used --
>> > bash$ clang++ -Xclang -femit-debug-entry-values -O2 -ggdb test.cpp
>> > 
>> > For this case-- these Tags are not emitted
>> > DW_TAG_call_site, DW_TAG_call_site_paramter ..
>> > only DW_AT_GNU_all_call_sites attribute is present.
>> > 
>> > + @Djorde DW_TAG_call_site are supported using late MIR approach, are the new Call Site related development will be supported via MIR. or their will be a frontend level debug metadata support will be added.
>> > 
>> > Thanks!
>> > Sourabh.
>> > 
>> > 
>> > 
>> > On Wed, Sep 11, 2019 at 12:02 PM Djordje Todorovic <djordje.todorovic at rt-rk.com <mailto:djordje.todorovic at rt-rk.com>> wrote:
>> > 
>> >     Great to see this! :)
>> > 
>> >     Best,
>> >     Djordje
>> > 
>> >     On 10.9.19. 21:16, Vedant Kumar wrote:
>> >     >
>> >     >
>> >     >> On Sep 10, 2019, at 6:15 AM, Djordje Todorovic via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> <mailto:llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>>> wrote:
>> >     >>
>> >     >> Hi Sourabh,
>> >     >>
>> >     >> Support for call-site related DWARF 5 tag/attributes is implemented very late, in the LLVM middle-end.
>> >     >> Please note that there is also the IR-level flag (DIFlagAllCallsDescribed) that lowers to
>> >     >> the DW_AT_call_all_calls.
>> >     >>
>> >     >> There is also support for call-site-parameter (DW_TAG_call_site_parameter) and the debug entry values
>> >     >> (DW_OP_entry_value) related DWARF 5 symbols, but it is restricted by the CC1 option ‘-femit-debug-entry-values’,
>> >     >> since the LLDB is still missing support for that.
>> >     >
>> >     > Not for too long ;)
>> >     >
>> >     > See https://reviews.llvm.org/D67410 & https://reviews.llvm.org/D67376
>> >     >
>> >     > best,
>> >     > vedant
>> >     >
>> >     >>
>> >     >> Best regards,
>> >     >> Djordje
>> >     >>
>> >     >> On 10.9.19. 13:58, Sourabh Singh Tomar via llvm-dev wrote:
>> >     >>> Hello All,
>> >     >>>
>> >     >>> I was working on some dwarf-5 features and debugging optimized code support in clang and llvm. 
>> >     >>>
>> >     >>> Noticed that, DW_TAG_call_site is supported in llvm middle-end. but clang is not emitting these. 
>> >     >>>
>> >     >>> I was hoping, if someone could provide current status of these features and current status of dwarf-5 features in clang and llvm. 
>> >     >>> That will be immensely helpful.
>> >     >>>
>> >     >>> Thanks!
>> >     >>> Sourabh.
>> >     >>>
>> >     >>> _______________________________________________
>> >     >>> LLVM Developers mailing list
>> >     >>> llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org> <mailto:llvm-dev at lists.llvm.org <mailto: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 <mailto:llvm-dev at lists.llvm.org> <mailto:llvm-dev at lists.llvm.org <mailto: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/20190911/c76be0eb/attachment-0001.html>


More information about the llvm-dev mailing list