mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-15 05:41:49 +08:00
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:
@ -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 ();
|
||||
|
Reference in New Issue
Block a user