Fix crash with "finish" in Rust
PR rust/30090 points out that a certain "finish" in a Rust program will cause gdb to crash. This happens due to some confusion about field indices in rust_language::print_enum. The fix is to use value_primitive_field so that the correct type can be passed; other spots in rust-lang.c already do this. Note that the enclosed test case comes with an xfail. This is needed because for this function, rustc doesn't follow the platform ABI. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30090
This commit is contained in:
parent
810fbe39b2
commit
debd0556e5
3 changed files with 70 additions and 1 deletions
|
@ -470,7 +470,7 @@ rust_language::print_enum (struct value *val, struct ui_file *stream,
|
|||
}
|
||||
|
||||
int variant_fieldno = rust_enum_variant (type);
|
||||
val = value_field (val, variant_fieldno);
|
||||
val = val->primitive_field (0, variant_fieldno, type);
|
||||
struct type *variant_type = type->field (variant_fieldno).type ();
|
||||
|
||||
int nfields = variant_type->num_fields ();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue