[llvm-dev] DWARF gotchas moving from 3.7.1 to 3.9.0
David Jones via llvm-dev
llvm-dev at lists.llvm.org
Thu Nov 17 18:45:57 PST 2016
I recently upgraded a codebase to use LLVM 3.9.0, up from 3.7.1.
All seems to work well, except that I am unable to generate debug
information.
However, if I run objdump -g on the generated object file, it reports that
the compile unit has no children:
Contents of the .debug_abbrev section:
Number TAG (0x0)
1 DW_TAG_compile_unit [no children]
DW_AT_producer DW_FORM_strp
DW_AT_language DW_FORM_data2
DW_AT_name DW_FORM_strp
DW_AT_stmt_list DW_FORM_sec_offset
DW_AT value: 0 DW_FORM value: 0
The IR generated for 3.9.0 passes the IR verifier without complaint
(including the debug into verifier). I can run llc manually on my IR
without complaint. However, I am not able to ascertain whether llc runs the
debug info verifier by default.
One of the changes I had to make to get my code to compile was to remove
the function argument (of Function* type) from the call to
DIBuilder::createFunction(). This appears to be my problem, as my functions
do not appear to have debug info:
>From my 3.7.1 code:
define void @func(%artype*) #4 !dbg !5 {
!5 = distinct !DISubprogram(n...)
>From 3.9.0:
define void @func(%artype*) #4 {
What must I do to attach the DISubprogram metadata node to my Function,
assuming this is the problem?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161117/2e573bed/attachment.html>
More information about the llvm-dev
mailing list