-
-
Notifications
You must be signed in to change notification settings - Fork 14.6k
Closed
Labels
A-debuginfoArea: Debugging information in compiled programs (DWARF, PDB, etc.)Area: Debugging information in compiled programs (DWARF, PDB, etc.)C-bugCategory: This is a bug.Category: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.P-lowLow priorityLow priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Compiling this program produces bad debug info in the location list entry for argument "a" of function "foo". GDB crashes on it, which is GDB's problem (https://sourceware.org/bugzilla/show_bug.cgi?id=25353), but Rust should also not generate bad debug info.
const ARRAY_SIZE: usize = 1024;
struct Foo {
x: [u64; ARRAY_SIZE],
}
fn foo(a: Foo, i: usize) -> u64 {
a.x[i]
}
fn main() {
println!("Hello, world!");
println!("{}", foo(Foo{x: [0; ARRAY_SIZE]}, 42));
}bash$ cargo build
bash$ readelf -w target/debug/location-lists
-->
<2><cb0>: Abbrev Number: 3 (DW_TAG_subprogram)
...
<cc3> DW_AT_name : (indirect string, offset: 0x7cb): foo
...
<3><ccd>: Abbrev Number: 4 (DW_TAG_formal_parameter)
<cce> DW_AT_location : 0x0 (location list)
<cd2> DW_AT_name : (indirect string, offset: 0x85bf2): a
<cd6> DW_AT_decl_file : 1
<cd7> DW_AT_decl_line : 7
<cd8> DW_AT_type : <0xd24>
...
Contents of the .debug_loc section:
Offset Begin End Expression
00000000 0000000000004469 000000000000447f (DW_OP_breg5 (rdi): 0)
00000014 000000000000447f 0000000000004490 (DW_OP_breg7 (rsp): 8; DW_OP_deref)
00000029 0000000000004490 0000000000004499 (DW_OP_reg2 (rcx))
0000003c 0000000000004499 00000000000044b0 (DW_OP_breg7 (rsp): 8; DW_OP_deref)
00000051 00000000000044b0 00000000000044b2 (DW_OP_reg4 (rsi))
00000064 <End of list>
Note the entries saying "a" lives in rcx and rsi (that is the value of "a" lives in the register, not its address).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
A-debuginfoArea: Debugging information in compiled programs (DWARF, PDB, etc.)Area: Debugging information in compiled programs (DWARF, PDB, etc.)C-bugCategory: This is a bug.Category: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.P-lowLow priorityLow priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.