[LLVMdev] Questions about attaching DWARF source code debugging information to generated LLVM-IR.
Christian Schafmeister
chris.schaf at verizon.net
Tue Apr 23 15:26:48 PDT 2013
Dan,
Thanks for taking time out to look at this.
I cut-and-pasted the IR into a text file and ran the following version of llc on it using "llc -filetype=obj dwarf1_paste.ll" and it didn't report any errors.
I'll take a closer look at the CompileUnit DWARF entry in the IR.
But in the mean-time, which version of llc are you using?
I'm using:
LLVM (http://llvm.org/):
LLVM version 3.3svn
Optimized build with assertions.
Built Apr 21 2013 (20:22:16).
Default target: x86_64-apple-darwin12.3.0
Host CPU: corei7-avx
Registered Targets:
arm - ARM
cpp - C++ backend
hexagon - Hexagon
mblaze - MBlaze
mips - Mips
mips64 - Mips64 [experimental]
mips64el - Mips64el [experimental]
mipsel - Mipsel
msp430 - MSP430 [experimental]
nvptx - NVIDIA PTX 32-bit
nvptx64 - NVIDIA PTX 64-bit
ppc32 - PowerPC 32
ppc64 - PowerPC 64
sparc - Sparc
sparcv9 - Sparc V9
thumb - Thumb
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
xcore - XCore
Best,
.Chris.
On Apr 23, 2013, at 5:18 PM, "Malea, Daniel" <daniel.malea at intel.com> wrote:
> Hmm, are you using a version of LLVM with asserts enabled (I.e. A debug
> build)?
>
> I cut-and-paste your IR into a text file and ran (a debug version of) llc
> on it, which caused the following assertion failure that seems related to
> some DWARF mishap:
>
>
> llc: ../lib/CodeGen/AsmPrinter/DwarfDebug.cpp:1400: void
> llvm::DwarfDebug::beginFunction(const llvm::MachineFunction*): Assertion
> `TheCU && "Unable to find compile unit!"' failed.
> 0 llc 0x00000000011d3ad6
> 1 llc 0x00000000011d3d5d
> 2 llc 0x00000000011d37ac
> 3 libpthread.so.0 0x00007fa2aa6a7cb0
> 4 libc.so.6 0x00007fa2a9afd425 gsignal + 53
> 5 libc.so.6 0x00007fa2a9b00b8b abort + 379
> 6 libc.so.6 0x00007fa2a9af60ee
> 7 libc.so.6 0x00007fa2a9af6192
> 8 llc 0x00000000009b0799
> 9 llc 0x000000000099a197
> 10 llc 0x000000000077b14d
> 11 llc 0x0000000000cd7b81
> 12 llc 0x00000000010d2aa0
> 13 llc 0x00000000010d2c9b
> 14 llc 0x00000000010d3013
> 15 llc 0x00000000010d3628
> 16 llc 0x00000000010d383b
> 17 llc 0x000000000042781c
> 18 llc 0x00000000004267cd
> 19 libc.so.6 0x00007fa2a9ae876d __libc_start_main + 237
> 20 llc 0x0000000000426129
> Stack dump:
> 0. Program arguments: ./llvm/build-cmake/bin/llc christian.ll -o christian
> 1. Running pass 'Function Pass Manager' on module 'christian.ll'.
> 2. Running pass 'X86 Assembly / Object Emitter' on function '@repl'
> Aborted (core dumped)
>
>
> It looks like something is wrong with one of your function definition.
> Glancing at the IR though, I can't tell what though..
>
> (PS. I attached a debugger and got a partial dump of the MachineFunction
> that causes the assertion in beginFunction. See attached.
>
>
>
> Good luck,
> Dan
>
> On 2013-04-23 4:55 PM, "Christian Schafmeister" <chris.schaf at verizon.net>
> wrote:
>
>>
>> I didn't make it clear that I load my Common Lisp application into "lldb"
>> and then load a compiled bundle into my application using dlopen (I'm on
>> OS X and I'm generating a kind of shared library called a "bundle"). Once
>> everything is loaded, the functions from the bundle are accessible to my
>> Common Lisp environment but I don't seem to be able to access the bundle
>> metadata properly from lldb.
>>
>> Best,
>>
>> .Chris.
>>
>> On Apr 23, 2013, at 4:30 PM, Christian Schafmeister <meister at temple.edu>
>> wrote:
>>
>>>
>>> Hey folks,
>>>
>>> I'm wrestling with adding DWARF source code file/line information to my
>>> generated LLVM-IR from my Common Lisp compiler.
>>>
>>> I think I'm doing everything properly using the llvm::DIBuilder class -
>>> but when I load my Common Lisp application and load a compiled bundle
>>> into it I don't seem to be able to access the metadata properly.
>>>
>>> I can list source lines using "l -f dwarf0.lsp -l 1" but I can't set
>>> break-points or do much else.
>>>
>>> I've prepared a test case and put it in my public folder on dropbox:
>>> https://dl.dropboxusercontent.com/u/6229900/dwarf1.txt
>>>
>>> It's a flat text file containing six sections which you can jump to by
>>> searching for "SECTION" (all caps).
>>> I've added a few lines at each SECTION entry with thoughts about what
>>> might be wrong or what is going on.
>>>
>>> If one of you debugging gurus could take a few minutes to take a look
>>> at it and give me some pointers I'd really, really appreciate it!
>>>
>>> Best,
>>>
>>> .Chris.
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> <machine_assert.txt>
More information about the llvm-dev
mailing list