-
Notifications
You must be signed in to change notification settings - Fork 12.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[debuginfo]the value of DW_OP_deref_size generated by clang is incorrect #121629
Comments
@llvm/issue-subscribers-debuginfo Author: None (IOVOVHS)
lldb and gdb parse the parameter p_1 of function func_10 incorrectly.
(gdb) s
func10 (p_0=p_0@<!-- -->entry=5, p_1=<error reading variable: That operation is not available on integers of more than 8 bytes.>)
at /home/hzw/Downloads/debugger-test/gen_progs/1735837458_IuQuWMTj/src_2/prog3.cpp:35
35 Container_0* var319 = new Container_0(1.0, 2.0)
(lldb) b func10
Breakpoint 1: where = test_case_3`func10(short, double) + 6 at prog3.cpp:10:27, address = 0x0000000000001146
(lldb) r
Process 50488 launched: '/home/hzw/Downloads/test_cases/1735837458_IuQuWMTj/test_case_3/test_case_3' (x86_64)
Process 50488 stopped
* thread #<!-- -->1, name = 'test_case_3', stop reason = breakpoint 1.1
frame #<!-- -->0: 0x0000555555555146 test_case_3`func10(p_0=5, p_1=<unavailable>) at prog3.cpp:10:27
7 short int var317 = p_0;
8 int var318 = 10;
9
-> 10 Container_0* var319 = new Container_0(1.0, 2.0);
11
12 if (p_1 > 0) {
13 double var320 = var319->member_1 + var318;
(lldb) fr v
(short) p_0 = 5
(double) p_1 = <Invalid address size for DW_OP_deref_size: 16
>
(short) var317 = 5
(int) var318 = 10
(Container_0 *) var319 = <variable not available>
When this program is compiled on arm64-apple-darwin, lldb can correctly parse the value of p_1. But it behaves incorrectly on Ubuntu. |
@llvm/issue-subscribers-clang-codegen Author: None (IOVOVHS)
lldb and gdb parse the parameter p_1 of function func_10 incorrectly.
(gdb) s
func10 (p_0=p_0@<!-- -->entry=5, p_1=<error reading variable: That operation is not available on integers of more than 8 bytes.>)
at /home/hzw/Downloads/debugger-test/gen_progs/1735837458_IuQuWMTj/src_2/prog3.cpp:35
35 Container_0* var319 = new Container_0(1.0, 2.0)
(lldb) b func10
Breakpoint 1: where = test_case_3`func10(short, double) + 6 at prog3.cpp:10:27, address = 0x0000000000001146
(lldb) r
Process 50488 launched: '/home/hzw/Downloads/test_cases/1735837458_IuQuWMTj/test_case_3/test_case_3' (x86_64)
Process 50488 stopped
* thread #<!-- -->1, name = 'test_case_3', stop reason = breakpoint 1.1
frame #<!-- -->0: 0x0000555555555146 test_case_3`func10(p_0=5, p_1=<unavailable>) at prog3.cpp:10:27
7 short int var317 = p_0;
8 int var318 = 10;
9
-> 10 Container_0* var319 = new Container_0(1.0, 2.0);
11
12 if (p_1 > 0) {
13 double var320 = var319->member_1 + var318;
(lldb) fr v
(short) p_0 = 5
(double) p_1 = <Invalid address size for DW_OP_deref_size: 16
>
(short) var317 = 5
(int) var318 = 10
(Container_0 *) var319 = <variable not available>
When this program is compiled on arm64-apple-darwin, lldb can correctly parse the value of p_1. But it behaves incorrectly on Ubuntu. |
Likely a duplicate of issue 64093, which is slowly moving towards something being fixed. Haven't verified this though. |
lldb and gdb parse the parameter p_1 of function func_10 incorrectly.
When this program is compiled on arm64-apple-darwin, lldb can correctly parse the value of p_1. But it behaves incorrectly on Ubuntu.
test_case.zip
The text was updated successfully, but these errors were encountered: