<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - [Windows] Incorrect step-over behavior in 64-bit LLDB"
href="https://bugs.llvm.org/show_bug.cgi?id=32343">32343</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>[Windows] Incorrect step-over behavior in 64-bit LLDB
</td>
</tr>
<tr>
<th>Product</th>
<td>lldb
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>All Bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>lldb-dev@lists.llvm.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>vadimcn@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=18129" name="attach_18129" title="lldb log">attachment 18129</a> <a href="attachment.cgi?id=18129&action=edit" title="lldb log">[details]</a></span>
lldb log
Repro:
- Install 64-bit LLVM for Windows from <a href="http://llvm.org/builds">http://llvm.org/builds</a> (r295586 as of
this report).
- Compile the following simple program.
- Try line-stepping through it.
Result:
See the debug session below. I don't think this is a correct behavior.
Notes:
- 32-bit LLDB of the same release appears to work correctly (when debugging a
32-bit binary).
- Same problem observed if the program is compiled with mingw-w64 gcc (version
6.1.0 (x86_64-win32-seh, Built by MinGW-W64 project))
Debug session:
C:\temp>type hello.cpp
int main() {
char a[1024] = {0};
int b[1024] = {0};
}
C:\temp>clang++ -g -O0 hello.cpp -o hello --target=x86_64-pc-windows-gnu
C:\temp>lldb hello.exe
(lldb) target create "hello.exe"
Current executable set to 'hello.exe' (x86_64).
(lldb) break set -f hello.cpp -l 2
Breakpoint 1: where = hello.exe`main + 27 at hello.cpp:2, address =
0x00000000004015cb
(lldb) run
Process 4016 launching
(lldb) Process 4016 launched: 'C:\temp\hello.exe' (x86_64)
Process 4016 stopped
* thread #1, stop reason = breakpoint 1.1
frame #0: 0x00000000004015cb hello.exe`main at hello.cpp:2
1 int main() {
-> 2 char a[1024] = {0};
3 int b[1024] = {0};
4 }
(lldb) log enable -f lldb.log lldb step
(lldb) next
Process 4016 stopped
* thread #1, stop reason = step over
frame #0: 0x00000000004015e2 hello.exe`main at hello.cpp:2
1 int main() {
-> 2 char a[1024] = {0};
3 int b[1024] = {0};
4 }
(lldb) next
Process 4016 stopped
* thread #1, stop reason = step over
frame #0: 0x0000000000402b90 hello.exe`memset
hello.exe`memset:
-> 0x402b90 <+0>: jmpq *0x57f6(%rip) ; .idata$5
0x402b96 <+6>: nop
0x402b97 <+7>: nop
hello.exe`memcpy:
0x402b98 <+0>: jmpq *0x57e6(%rip) ; .idata$5
(lldb) log disable all
(lldb) image dump line-table hello.cpp
Line table for C:\temp\hello.cpp in `hello.exe
0x00000000004015b0: C:\temp\hello.cpp:1
0x00000000004015c6: C:\temp\hello.cpp:1
0x00000000004015cb: C:\temp\hello.cpp:2
0x00000000004015e7: C:\temp\hello.cpp:3
0x0000000000401600: C:\temp\hello.cpp:4
0x000000000040160e: C:\temp\hello.cpp:4
(lldb)</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>