Avoid crash in ada-lang.c:to_fixed_array_type
authorTom Tromey <tromey@adacore.com>
Wed, 4 Nov 2020 15:49:16 +0000 (08:49 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 4 Nov 2020 15:49:16 +0000 (08:49 -0700)
When debugging Ada programs compiled by certain versions of GNAT with
-fgnat-encodings=minimal, gdb can crash.  These crashes occur when
running the gdb test suite, once some of the later patches in this
series have been applied.

This patch works around the bug by throwing an exception in the
failing case.  I did not implement a full fix because GNAT has been
changed to emit better DWARF, and so in the near future this will stop
being a problem.  (Currently, users don't generally use
-fgnat-encodings=minimal, and the GNAT default will only be changed in
a fully-patched compiler.)

gdb/ChangeLog
2020-11-04  Tom Tromey  <tromey@adacore.com>

* ada-lang.c (to_fixed_array_type): Error if
decode_constrained_packed_array_type returns NULL.

gdb/ChangeLog
gdb/ada-lang.c

index 188bb1e8539bd0b2ce7a5feac5a48f9bb1e86f7b..9b905ee091bf0b4bc4119b2fa138ba2e8742e947 100644 (file)
@@ -1,3 +1,8 @@
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+       * ada-lang.c (to_fixed_array_type): Error if
+       decode_constrained_packed_array_type returns NULL.
+
 2020-11-04  Tom Tromey  <tromey@adacore.com>
 
        * dwarf2/leb.h (read_3_bytes): Use bfd_get_24.
index a1f5d93fee31f475083036dcdf711a1161f9b556..941b35f60815344f189b4b91603c23e24191b302 100644 (file)
@@ -8350,7 +8350,11 @@ to_fixed_array_type (struct type *type0, struct value *dval,
 
   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
   if (constrained_packed_array_p)
-    type0 = decode_constrained_packed_array_type (type0);
+    {
+      type0 = decode_constrained_packed_array_type (type0);
+      if (type0 == nullptr)
+       error (_("could not decode constrained packed array type"));
+    }
 
   index_type_desc = ada_find_parallel_type (type0, xa_suffix);