Umesh Kalappa via llvm-dev
2019-May-17 16:20 UTC
[llvm-dev] Debug Info is not generated for extern variables .
Hi All, for the below case : $cat test.c extern void sharedLibTestLibRtn (int arg); extern int testExt; int main (void) { testExt++; sharedLibTestLibRtn (5); return 0; } we don't see the debug-info for "testExt" i.e no DW_AT_type entry for extern symbol ,where gcc has the same . we are fixing the same in clang as compatibility with gcc . before we start our analysis on DIBuilder in clang ,any inputs here will be appreciated . Thank you ~Umesh
David Blaikie via llvm-dev
2019-May-17 17:13 UTC
[llvm-dev] Debug Info is not generated for extern variables .
Any idea why this is important compared to function declarations that I don't think any compiler emits (declarations of called but not defined non-member functions)? I imagine in the function case, it's assumed that the function is defined elsewhere and the debug info for that definition will be available. Why not the same with variables? (admittedly, when we employ the "debug info is in another file" assumption, that should be done under -fno-standalone-debug - but I'm not sure how far we should take that assumption. Should we have debug info for declarations of functions?) There's currently at least some code that supports emitting function declarations (for member functions) but not for variables (static member variables are 'members' rather than 'variables') On Fri, May 17, 2019 at 9:21 AM Umesh Kalappa via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hi All, > > for the below case : > $cat test.c > extern void sharedLibTestLibRtn (int arg); > extern int testExt; > int main (void) > { > testExt++; > sharedLibTestLibRtn (5); > > return 0; > } > we don't see the debug-info for "testExt" i.e no DW_AT_type entry for > extern symbol ,where gcc has the same . > > we are fixing the same in clang as compatibility with gcc . > > before we start our analysis on DIBuilder in clang ,any inputs here > will be appreciated . > > Thank you > ~Umesh > _______________________________________________ > LLVM Developers mailing list > 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/20190517/cf4db30a/attachment.html>
via llvm-dev
2019-May-17 17:50 UTC
[llvm-dev] Debug Info is not generated for extern variables .
I think emitting "testExt" as an external declaration (what gcc does) doesn't do much for the debugger; being a declaration, it has no location, and so you can't do things like examine its value, unless you find the symbol in the defining CU first. I don't see a real "compatibility with gcc" argument here. Is there some behavior of some consumer that is affected by this? --paulr From: David Blaikie [mailto:dblaikie at gmail.com] Sent: Friday, May 17, 2019 1:14 PM To: Umesh Kalappa; Robinson, Paul; Adrian Prantl; Jonas Devlieghere Cc: LLVM Developers Mailing List; cfe-dev at cs.uiuc.edu Developers Subject: Re: [llvm-dev] Debug Info is not generated for extern variables . Any idea why this is important compared to function declarations that I don't think any compiler emits (declarations of called but not defined non-member functions)? I imagine in the function case, it's assumed that the function is defined elsewhere and the debug info for that definition will be available. Why not the same with variables? (admittedly, when we employ the "debug info is in another file" assumption, that should be done under -fno-standalone-debug - but I'm not sure how far we should take that assumption. Should we have debug info for declarations of functions?) There's currently at least some code that supports emitting function declarations (for member functions) but not for variables (static member variables are 'members' rather than 'variables') On Fri, May 17, 2019 at 9:21 AM Umesh Kalappa via llvm-dev <llvm-dev at lists.llvm.org<mailto:llvm-dev at lists.llvm.org>> wrote: Hi All, for the below case : $cat test.c extern void sharedLibTestLibRtn (int arg); extern int testExt; int main (void) { testExt++; sharedLibTestLibRtn (5); return 0; } we don't see the debug-info for "testExt" i.e no DW_AT_type entry for extern symbol ,where gcc has the same . we are fixing the same in clang as compatibility with gcc . before we start our analysis on DIBuilder in clang ,any inputs here will be appreciated . Thank you ~Umesh _______________________________________________ LLVM Developers mailing list 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/20190517/428199b6/attachment.html>