Vasudev.Negi at microchip.com
2009-Jun-08 10:25 UTC
[LLVMdev] debug information for functions
Suppose I have fun.h as: static void fun() { int a =10; } Now I have two files foo.c and goo.c as foo.c : #include "fun.h" void foo() { fun(); } goo.c: #include "fun.h" void goo() { fun(); } I get .bc files for foo.c and foo.bc through clang. Now I run llvm-ld with -disable-opt for foo.bc and goo.bc. In the resulting .bc files, one of the two functions fun, is renamed to fun<number>. There are two llvm.dbg.subprogram descriptors created for the two fun functions. Both have name foo . So there is no way to know which descriptor represents which function. I am trying to get this information in assembly printer. Proposed solution : llvm.dbg.subprogram.type should have a reference to function is represents. This is in the same way as llvm.dbg.global_variable.type has a reference to global variable it represents. Thanks Vasudev -------------- next part -------------- A non-text attachment was scrubbed... Name: winmail.dat Type: application/ms-tnef Size: 5980 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090608/ac253293/attachment.bin>
Alireza.Moshtaghi at microchip.com
2009-Jun-08 17:02 UTC
[LLVMdev] debug information for functions
I would assume this is similar to the problem of dealing with structure tags, and I guess your proposal is along lines of the same solution right? A. ________________________________ From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Vasudev.Negi at microchip.com Sent: Monday, June 08, 2009 3:25 AM To: llvmdev at cs.uiuc.edu Subject: debug information for functions Suppose I have fun.h as: static void fun() { int a =10; } Now I have two files foo.c and goo.c as foo.c : #include "fun.h" void foo() { fun(); } goo.c: #include "fun.h" void goo() { fun(); } I get .bc files for foo.c and foo.bc through clang. Now I run llvm-ld with -disable-opt for foo.bc and goo.bc. In the resulting .bc files, one of the two functions fun, is renamed to fun<number>. There are two llvm.dbg.subprogram descriptors created for the two fun functions. Both have name foo . So there is no way to know which descriptor represents which function. I am trying to get this information in assembly printer. Proposed solution : llvm.dbg.subprogram.type should have a reference to function is represents. This is in the same way as llvm.dbg.global_variable.type has a reference to global variable it represents. Thanks Vasudev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090608/4a413879/attachment.html>
On Mon, Jun 8, 2009 at 3:25 AM, <Vasudev.Negi at microchip.com> wrote:> > I get .bc files for foo.c and foo.bc through clang. Now I run llvm-ld > with -disable-opt for foo.bc and goo.bc. In the resulting .bc files, one > of the two functions fun, is renamed to fun<number>. There are two > llvm.dbg.subprogram descriptors created for the two fun functions. Both > have name foo . So there is no way to know which descriptor represents > which function. I am trying to get this information in assembly printer.What is the use of this info ? The descriptor includes enough location info (thru func.start) and the display name for static functions. - Devang
Vasudev.Negi at microchip.com
2009-Jun-09 06:23 UTC
[LLVMdev] debug information for functions
-----Original Message----- From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Devang Patel Sent: Monday, June 08, 2009 11:03 PM To: LLVM Developers Mailing List Subject: Re: [LLVMdev] debug information for functions On Mon, Jun 8, 2009 at 3:25 AM, <Vasudev.Negi at microchip.com> wrote:> > I get .bc files for foo.c and foo.bc through clang. Now I run llvm-ld > with -disable-opt for foo.bc and goo.bc. In the resulting .bc files,one> of the two functions fun, is renamed to fun<number>. There are two > llvm.dbg.subprogram descriptors created for the two fun functions.Both> have name foo . So there is no way to know which descriptor represents > which function. I am trying to get this information in assemblyprinter. What is the use of this info ? The descriptor includes enough location info (thru func.start) and the display name for static functions. - Devang We are not using Dwarf writer. We are emitting debug info in coff format. I need the file in which function is defined to emit .file directive. MachineFunction has DefaultDebugLoc but it gets set only in the case of -O0. I can get the DebugLoc from machine instruction but that will be an ugly way to do it.