Fix bug in quirk_rust_enum

Tom de Vries pointed out that some Rust tests were failing after the
variant part rewrite.  He sent an executable, which helped track down
this bug.

quirk_rust_enum was passing 1 to alloc_rust_variant in one case.
However, a comment earlier says:

      /* We don't need a range entry for the discriminant, but we do
	 need one for every other field, as there is no default
	 variant.  */

In this case, we must pass -1 for this parameter.  That is what this
patch implements.

gdb/ChangeLog
2020-06-30  Tom Tromey  <tromey@adacore.com>

	* dwarf2/read.c (quirk_rust_enum): Correctly call
	alloc_rust_variant for default-less enum.
This commit is contained in:
Tom Tromey
2020-06-30 07:57:35 -06:00
parent 5ac588997c
commit a1520ad8fc
2 changed files with 6 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2020-06-30 Tom Tromey <tromey@adacore.com>
* dwarf2/read.c (quirk_rust_enum): Correctly call
alloc_rust_variant for default-less enum.
2020-06-30 Tom Tromey <tromey@adacore.com> 2020-06-30 Tom Tromey <tromey@adacore.com>
PR build/26183: PR build/26183:

View File

@ -9691,7 +9691,7 @@ quirk_rust_enum (struct type *type, struct objfile *objfile)
} }
/* Indicate that this is a variant type. */ /* Indicate that this is a variant type. */
alloc_rust_variant (&objfile->objfile_obstack, type, 0, 1, alloc_rust_variant (&objfile->objfile_obstack, type, 0, -1,
gdb::array_view<discriminant_range> (ranges, gdb::array_view<discriminant_range> (ranges,
n_fields - 1)); n_fields - 1));
} }