[llvm-dev] Filename's in DIBuileder
Umesh Kalappa via llvm-dev
llvm-dev at lists.llvm.org
Tue Sep 1 09:19:34 PDT 2020
Hi All ,
We have a scenario in our debugger to handle the file index in the
debug_ine info like
$llvm-dwarfdump -debug-line test.o
file_names[ 1]:
name: "test.cpp"
dir_index: 0
mod_time: 0x00000000
length: 0x00000000
file_names[ 2]:
name: "test.cpp"
dir_index: 1
mod_time: 0x00000000
length: 0x00000000
Address Line Column File ISA Discriminator Flags
------------------ ------ ------ ------ --- ------------- -------------
0x0000000000000000 12 0 1 0 0 is_stmt
0x0000000000000008 13 1 1 0 0 is_stmt
prologue_end
0x0000000000000010 16 0 1 0 0 is_stmt
0x0000000000000018 17 1 1 0 0 is_stmt
prologue_end
0x0000000000000020 20 0 1 0 0 is_stmt
0x0000000000000028 21 9 1 0 0 is_stmt
prologue_end
0x000000000000002f 22 9 1 0 0 is_stmt
0x0000000000000032 22 10 1 0 0
0x0000000000000035 22 7 1 0 0
0x000000000000003c 23 1 1 0 0 is_stmt
0x0000000000000040 25 0 1 0 0 is_stmt
0x0000000000000044 25 13 1 0 0 is_stmt
prologue_end
0x0000000000000080 0 0 2 0 0 is_stmt
0x000000000000008b 0 0 2 0 0 is_stmt
end_sequence
the debug info is emitted by the DIBuilder like
!3 = !DIFile(filename: "/folk/tmp/test/test.cpp", directory:
"/folk/tmp/test")
!45 = distinct !DISubprogram(linkageName: "_GLOBAL__sub_I_test.cpp", scope:
!3, file: !3, type: !46, flags: DIFlagArtificial, spFlags:
DISPFlagLocalToUnit | DISPFlagDefinition, unit: !2, retainedNodes: !4)
!8 = !DIFile(filename: "test.cpp", directory: "/folk/tmp/test")
!16 = !DISubprogram(name: "proc", linkageName: "_ZN4test4procEv", scope:
!9, file: !8, line: 8, type: !12, scopeLine: 8, flags: DIFlagPublic |
DIFlagPrototyped, spFlags: 0)
Latest clang trunk used like
$clang -std=c++14 -g -eimit-llvm -S /folk/tmp/test/test.cpp
and the respective files like test.cc ,test.ll and test.s are attached in
the mail for the reference.
the scenario is that why the file-name 's are different is both cases
,where "ZN4test4procEv" is the user defined function and
"_GLOBAL__sub_I_test.cpp"
is generated for the static initialisation ,which leads to the two file
index like 1 and 2 for two files in the filename table ,that confuse our
debugger .
So we like to hear from experts here ,before we investigate the DIBuilder
to fix the same.
Thank you
~Umesh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200901/edf811ef/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cpp
Type: application/octet-stream
Size: 229 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200901/edf811ef/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.ll
Type: application/octet-stream
Size: 8771 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200901/edf811ef/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.s
Type: application/octet-stream
Size: 24887 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200901/edf811ef/attachment-0002.obj>
More information about the llvm-dev
mailing list