+2011-07-01  Jean-Charles Delay  <delay@adacore.com>
+
+       * ada-typeprint.c (ada_print_type): Fix both PAD type and
+       pointer to constrained packed array type output.
+       * ada-valprint.c (ada_val_print_1): Fix pointer to constrained
+       packed array output.
+
 2011-07-01  Jean-Charles Delay  <delay@adacore.com>
 
        * ada-typeprint.c (print_array_type): removed if condition on show
 
     fprintf_filtered (stream, "%.*s: ",
                      ada_name_prefix_len (varstring), varstring);
 
-  if (type_name != NULL && show <= 0)
+  if (type_name != NULL && show <= 0 && !ada_is_aligner_type (type))
     {
       fprintf_filtered (stream, "%.*s",
                        ada_name_prefix_len (type_name), type_name);
 
   if (ada_is_aligner_type (type))
     ada_print_type (ada_aligned_type (type), "", stream, show, level);
-  else if (ada_is_constrained_packed_array_type (type))
-    {
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
-        {
-          fprintf_filtered (stream, "access ");
-          print_array_type (TYPE_TARGET_TYPE (type), stream, show, level);
-        }
-      else
-        {
-          print_array_type (type, stream, show, level);
-        }
-    }
+  else if (ada_is_constrained_packed_array_type (type)
+          && TYPE_CODE (type) != TYPE_CODE_PTR)
+    print_array_type (type, stream, show, level);
   else
     switch (TYPE_CODE (type))
       {
 
   type = ada_check_typedef (type);
 
   if (ada_is_array_descriptor_type (type)
-      || ada_is_constrained_packed_array_type (type))
+      || (ada_is_constrained_packed_array_type (type)
+         && TYPE_CODE (type) != TYPE_CODE_PTR))
     {
       int retn;
       struct value *mark = value_mark ();
 
          "ptype &var"
 
 gdb_test "print &var" \
-         "= \\(access array \\(4 \\.\\. 8\\) of boolean <packed: 1-bit elements>\\) \\(4 => true, false, true, false, true\\)" \
+         "= \\(access pa.packed_array\\) 0x.*" \
          "print &var"
 
 # Print the value of U_Var, an unconstrainted packed array.