Call gdb_exit before gdb_skip_xml_test on gdb.base/catch-syscall.exp
[deliverable/binutils-gdb.git] / gdb / ada-valprint.c
index 34539de3cab4e24b55d390b10cde3f43f178067f..ba12a7842e05668cbdafd858662abd7ba5137aa5 100644 (file)
@@ -129,13 +129,11 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr,
   unsigned int things_printed = 0;
   unsigned len;
   struct type *elttype, *index_type;
-  unsigned eltlen;
   unsigned long bitsize = TYPE_FIELD_BITSIZE (type, 0);
   struct value *mark = value_mark ();
   LONGEST low = 0;
 
   elttype = TYPE_TARGET_TYPE (type);
-  eltlen = TYPE_LENGTH (check_typedef (elttype));
   index_type = TYPE_INDEX_TYPE (type);
 
   {
@@ -184,9 +182,12 @@ val_print_packed_array_elements (struct type *type, const gdb_byte *valaddr,
                                               (i * bitsize) / HOST_CHAR_BIT,
                                               (i * bitsize) % HOST_CHAR_BIT,
                                               bitsize, elttype);
+         if (TYPE_LENGTH (check_typedef (value_type (v0)))
+             != TYPE_LENGTH (check_typedef (value_type (v1))))
+           break;
          if (!value_contents_eq (v0, value_embedded_offset (v0),
                                  v1, value_embedded_offset (v1),
-                                 eltlen))
+                                 TYPE_LENGTH (check_typedef (value_type (v0)))))
            break;
        }
 
@@ -1095,6 +1096,8 @@ ada_val_print_1 (struct type *type, const gdb_byte *valaddr,
 
   offset_aligned = offset + ada_aligned_value_addr (type, valaddr) - valaddr;
   type = printable_val_type (type, valaddr + offset_aligned);
+  type = resolve_dynamic_type (type, valaddr + offset_aligned,
+                              address + offset_aligned);
 
   switch (TYPE_CODE (type))
     {
This page took 0.029869 seconds and 4 git commands to generate.