]> Git Repo - binutils.git/blob - gdb/ada-lang.c
3b7c10f8e6cd61cdaaf8829dfd280e02a9a97e9f
[binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2021 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "gdb_regex.h"
24 #include "frame.h"
25 #include "symtab.h"
26 #include "gdbtypes.h"
27 #include "gdbcmd.h"
28 #include "expression.h"
29 #include "parser-defs.h"
30 #include "language.h"
31 #include "varobj.h"
32 #include "inferior.h"
33 #include "symfile.h"
34 #include "objfiles.h"
35 #include "breakpoint.h"
36 #include "gdbcore.h"
37 #include "hashtab.h"
38 #include "gdb_obstack.h"
39 #include "ada-lang.h"
40 #include "completer.h"
41 #include "ui-out.h"
42 #include "block.h"
43 #include "infcall.h"
44 #include "annotate.h"
45 #include "valprint.h"
46 #include "source.h"
47 #include "observable.h"
48 #include "stack.h"
49 #include "typeprint.h"
50 #include "namespace.h"
51 #include "cli/cli-style.h"
52 #include "cli/cli-decode.h"
53
54 #include "value.h"
55 #include "mi/mi-common.h"
56 #include "arch-utils.h"
57 #include "cli/cli-utils.h"
58 #include "gdbsupport/function-view.h"
59 #include "gdbsupport/byte-vector.h"
60 #include <algorithm>
61 #include "ada-exp.h"
62
63 /* Define whether or not the C operator '/' truncates towards zero for
64    differently signed operands (truncation direction is undefined in C).
65    Copied from valarith.c.  */
66
67 #ifndef TRUNCATION_TOWARDS_ZERO
68 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
69 #endif
70
71 static struct type *desc_base_type (struct type *);
72
73 static struct type *desc_bounds_type (struct type *);
74
75 static struct value *desc_bounds (struct value *);
76
77 static int fat_pntr_bounds_bitpos (struct type *);
78
79 static int fat_pntr_bounds_bitsize (struct type *);
80
81 static struct type *desc_data_target_type (struct type *);
82
83 static struct value *desc_data (struct value *);
84
85 static int fat_pntr_data_bitpos (struct type *);
86
87 static int fat_pntr_data_bitsize (struct type *);
88
89 static struct value *desc_one_bound (struct value *, int, int);
90
91 static int desc_bound_bitpos (struct type *, int, int);
92
93 static int desc_bound_bitsize (struct type *, int, int);
94
95 static struct type *desc_index_type (struct type *, int);
96
97 static int desc_arity (struct type *);
98
99 static int ada_args_match (struct symbol *, struct value **, int);
100
101 static struct value *make_array_descriptor (struct type *, struct value *);
102
103 static void ada_add_block_symbols (std::vector<struct block_symbol> &,
104                                    const struct block *,
105                                    const lookup_name_info &lookup_name,
106                                    domain_enum, struct objfile *);
107
108 static void ada_add_all_symbols (std::vector<struct block_symbol> &,
109                                  const struct block *,
110                                  const lookup_name_info &lookup_name,
111                                  domain_enum, int, int *);
112
113 static int is_nonfunction (const std::vector<struct block_symbol> &);
114
115 static void add_defn_to_vec (std::vector<struct block_symbol> &,
116                              struct symbol *,
117                              const struct block *);
118
119 static int possible_user_operator_p (enum exp_opcode, struct value **);
120
121 static const char *ada_decoded_op_name (enum exp_opcode);
122
123 static int numeric_type_p (struct type *);
124
125 static int integer_type_p (struct type *);
126
127 static int scalar_type_p (struct type *);
128
129 static int discrete_type_p (struct type *);
130
131 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
132                                                 int, int);
133
134 static struct type *ada_find_parallel_type_with_name (struct type *,
135                                                       const char *);
136
137 static int is_dynamic_field (struct type *, int);
138
139 static struct type *to_fixed_variant_branch_type (struct type *,
140                                                   const gdb_byte *,
141                                                   CORE_ADDR, struct value *);
142
143 static struct type *to_fixed_array_type (struct type *, struct value *, int);
144
145 static struct type *to_fixed_range_type (struct type *, struct value *);
146
147 static struct type *to_static_fixed_type (struct type *);
148 static struct type *static_unwrap_type (struct type *type);
149
150 static struct value *unwrap_value (struct value *);
151
152 static struct type *constrained_packed_array_type (struct type *, long *);
153
154 static struct type *decode_constrained_packed_array_type (struct type *);
155
156 static long decode_packed_array_bitsize (struct type *);
157
158 static struct value *decode_constrained_packed_array (struct value *);
159
160 static int ada_is_unconstrained_packed_array_type (struct type *);
161
162 static struct value *value_subscript_packed (struct value *, int,
163                                              struct value **);
164
165 static struct value *coerce_unspec_val_to_type (struct value *,
166                                                 struct type *);
167
168 static int lesseq_defined_than (struct symbol *, struct symbol *);
169
170 static int equiv_types (struct type *, struct type *);
171
172 static int is_name_suffix (const char *);
173
174 static int advance_wild_match (const char **, const char *, char);
175
176 static bool wild_match (const char *name, const char *patn);
177
178 static struct value *ada_coerce_ref (struct value *);
179
180 static LONGEST pos_atr (struct value *);
181
182 static struct value *val_atr (struct type *, LONGEST);
183
184 static struct symbol *standard_lookup (const char *, const struct block *,
185                                        domain_enum);
186
187 static struct value *ada_search_struct_field (const char *, struct value *, int,
188                                               struct type *);
189
190 static int find_struct_field (const char *, struct type *, int,
191                               struct type **, int *, int *, int *, int *);
192
193 static int ada_resolve_function (std::vector<struct block_symbol> &,
194                                  struct value **, int, const char *,
195                                  struct type *, bool);
196
197 static int ada_is_direct_array_type (struct type *);
198
199 static struct value *ada_index_struct_field (int, struct value *, int,
200                                              struct type *);
201
202 static void add_component_interval (LONGEST, LONGEST, std::vector<LONGEST> &);
203
204
205 static struct type *ada_find_any_type (const char *name);
206
207 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
208   (const lookup_name_info &lookup_name);
209
210 \f
211
212 /* The result of a symbol lookup to be stored in our symbol cache.  */
213
214 struct cache_entry
215 {
216   /* The name used to perform the lookup.  */
217   const char *name;
218   /* The namespace used during the lookup.  */
219   domain_enum domain;
220   /* The symbol returned by the lookup, or NULL if no matching symbol
221      was found.  */
222   struct symbol *sym;
223   /* The block where the symbol was found, or NULL if no matching
224      symbol was found.  */
225   const struct block *block;
226   /* A pointer to the next entry with the same hash.  */
227   struct cache_entry *next;
228 };
229
230 /* The Ada symbol cache, used to store the result of Ada-mode symbol
231    lookups in the course of executing the user's commands.
232
233    The cache is implemented using a simple, fixed-sized hash.
234    The size is fixed on the grounds that there are not likely to be
235    all that many symbols looked up during any given session, regardless
236    of the size of the symbol table.  If we decide to go to a resizable
237    table, let's just use the stuff from libiberty instead.  */
238
239 #define HASH_SIZE 1009
240
241 struct ada_symbol_cache
242 {
243   /* An obstack used to store the entries in our cache.  */
244   struct auto_obstack cache_space;
245
246   /* The root of the hash table used to implement our symbol cache.  */
247   struct cache_entry *root[HASH_SIZE] {};
248 };
249
250 /* Maximum-sized dynamic type.  */
251 static unsigned int varsize_limit;
252
253 static const char ada_completer_word_break_characters[] =
254 #ifdef VMS
255   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
256 #else
257   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
258 #endif
259
260 /* The name of the symbol to use to get the name of the main subprogram.  */
261 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
262   = "__gnat_ada_main_program_name";
263
264 /* Limit on the number of warnings to raise per expression evaluation.  */
265 static int warning_limit = 2;
266
267 /* Number of warning messages issued; reset to 0 by cleanups after
268    expression evaluation.  */
269 static int warnings_issued = 0;
270
271 static const char * const known_runtime_file_name_patterns[] = {
272   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
273 };
274
275 static const char * const known_auxiliary_function_name_patterns[] = {
276   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
277 };
278
279 /* Maintenance-related settings for this module.  */
280
281 static struct cmd_list_element *maint_set_ada_cmdlist;
282 static struct cmd_list_element *maint_show_ada_cmdlist;
283
284 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
285
286 static bool ada_ignore_descriptive_types_p = false;
287
288                         /* Inferior-specific data.  */
289
290 /* Per-inferior data for this module.  */
291
292 struct ada_inferior_data
293 {
294   /* The ada__tags__type_specific_data type, which is used when decoding
295      tagged types.  With older versions of GNAT, this type was directly
296      accessible through a component ("tsd") in the object tag.  But this
297      is no longer the case, so we cache it for each inferior.  */
298   struct type *tsd_type = nullptr;
299
300   /* The exception_support_info data.  This data is used to determine
301      how to implement support for Ada exception catchpoints in a given
302      inferior.  */
303   const struct exception_support_info *exception_info = nullptr;
304 };
305
306 /* Our key to this module's inferior data.  */
307 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
308
309 /* Return our inferior data for the given inferior (INF).
310
311    This function always returns a valid pointer to an allocated
312    ada_inferior_data structure.  If INF's inferior data has not
313    been previously set, this functions creates a new one with all
314    fields set to zero, sets INF's inferior to it, and then returns
315    a pointer to that newly allocated ada_inferior_data.  */
316
317 static struct ada_inferior_data *
318 get_ada_inferior_data (struct inferior *inf)
319 {
320   struct ada_inferior_data *data;
321
322   data = ada_inferior_data.get (inf);
323   if (data == NULL)
324     data = ada_inferior_data.emplace (inf);
325
326   return data;
327 }
328
329 /* Perform all necessary cleanups regarding our module's inferior data
330    that is required after the inferior INF just exited.  */
331
332 static void
333 ada_inferior_exit (struct inferior *inf)
334 {
335   ada_inferior_data.clear (inf);
336 }
337
338
339                         /* program-space-specific data.  */
340
341 /* This module's per-program-space data.  */
342 struct ada_pspace_data
343 {
344   /* The Ada symbol cache.  */
345   std::unique_ptr<ada_symbol_cache> sym_cache;
346 };
347
348 /* Key to our per-program-space data.  */
349 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
350
351 /* Return this module's data for the given program space (PSPACE).
352    If not is found, add a zero'ed one now.
353
354    This function always returns a valid object.  */
355
356 static struct ada_pspace_data *
357 get_ada_pspace_data (struct program_space *pspace)
358 {
359   struct ada_pspace_data *data;
360
361   data = ada_pspace_data_handle.get (pspace);
362   if (data == NULL)
363     data = ada_pspace_data_handle.emplace (pspace);
364
365   return data;
366 }
367
368                         /* Utilities */
369
370 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
371    all typedef layers have been peeled.  Otherwise, return TYPE.
372
373    Normally, we really expect a typedef type to only have 1 typedef layer.
374    In other words, we really expect the target type of a typedef type to be
375    a non-typedef type.  This is particularly true for Ada units, because
376    the language does not have a typedef vs not-typedef distinction.
377    In that respect, the Ada compiler has been trying to eliminate as many
378    typedef definitions in the debugging information, since they generally
379    do not bring any extra information (we still use typedef under certain
380    circumstances related mostly to the GNAT encoding).
381
382    Unfortunately, we have seen situations where the debugging information
383    generated by the compiler leads to such multiple typedef layers.  For
384    instance, consider the following example with stabs:
385
386      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
387      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
388
389    This is an error in the debugging information which causes type
390    pck__float_array___XUP to be defined twice, and the second time,
391    it is defined as a typedef of a typedef.
392
393    This is on the fringe of legality as far as debugging information is
394    concerned, and certainly unexpected.  But it is easy to handle these
395    situations correctly, so we can afford to be lenient in this case.  */
396
397 static struct type *
398 ada_typedef_target_type (struct type *type)
399 {
400   while (type->code () == TYPE_CODE_TYPEDEF)
401     type = TYPE_TARGET_TYPE (type);
402   return type;
403 }
404
405 /* Given DECODED_NAME a string holding a symbol name in its
406    decoded form (ie using the Ada dotted notation), returns
407    its unqualified name.  */
408
409 static const char *
410 ada_unqualified_name (const char *decoded_name)
411 {
412   const char *result;
413   
414   /* If the decoded name starts with '<', it means that the encoded
415      name does not follow standard naming conventions, and thus that
416      it is not your typical Ada symbol name.  Trying to unqualify it
417      is therefore pointless and possibly erroneous.  */
418   if (decoded_name[0] == '<')
419     return decoded_name;
420
421   result = strrchr (decoded_name, '.');
422   if (result != NULL)
423     result++;                   /* Skip the dot...  */
424   else
425     result = decoded_name;
426
427   return result;
428 }
429
430 /* Return a string starting with '<', followed by STR, and '>'.  */
431
432 static std::string
433 add_angle_brackets (const char *str)
434 {
435   return string_printf ("<%s>", str);
436 }
437
438 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
439    suffix of FIELD_NAME beginning "___".  */
440
441 static int
442 field_name_match (const char *field_name, const char *target)
443 {
444   int len = strlen (target);
445
446   return
447     (strncmp (field_name, target, len) == 0
448      && (field_name[len] == '\0'
449          || (startswith (field_name + len, "___")
450              && strcmp (field_name + strlen (field_name) - 6,
451                         "___XVN") != 0)));
452 }
453
454
455 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
456    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
457    and return its index.  This function also handles fields whose name
458    have ___ suffixes because the compiler sometimes alters their name
459    by adding such a suffix to represent fields with certain constraints.
460    If the field could not be found, return a negative number if
461    MAYBE_MISSING is set.  Otherwise raise an error.  */
462
463 int
464 ada_get_field_index (const struct type *type, const char *field_name,
465                      int maybe_missing)
466 {
467   int fieldno;
468   struct type *struct_type = check_typedef ((struct type *) type);
469
470   for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
471     if (field_name_match (struct_type->field (fieldno).name (), field_name))
472       return fieldno;
473
474   if (!maybe_missing)
475     error (_("Unable to find field %s in struct %s.  Aborting"),
476            field_name, struct_type->name ());
477
478   return -1;
479 }
480
481 /* The length of the prefix of NAME prior to any "___" suffix.  */
482
483 int
484 ada_name_prefix_len (const char *name)
485 {
486   if (name == NULL)
487     return 0;
488   else
489     {
490       const char *p = strstr (name, "___");
491
492       if (p == NULL)
493         return strlen (name);
494       else
495         return p - name;
496     }
497 }
498
499 /* Return non-zero if SUFFIX is a suffix of STR.
500    Return zero if STR is null.  */
501
502 static int
503 is_suffix (const char *str, const char *suffix)
504 {
505   int len1, len2;
506
507   if (str == NULL)
508     return 0;
509   len1 = strlen (str);
510   len2 = strlen (suffix);
511   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
512 }
513
514 /* The contents of value VAL, treated as a value of type TYPE.  The
515    result is an lval in memory if VAL is.  */
516
517 static struct value *
518 coerce_unspec_val_to_type (struct value *val, struct type *type)
519 {
520   type = ada_check_typedef (type);
521   if (value_type (val) == type)
522     return val;
523   else
524     {
525       struct value *result;
526
527       /* Make sure that the object size is not unreasonable before
528          trying to allocate some memory for it.  */
529       ada_ensure_varsize_limit (type);
530
531       if (value_optimized_out (val))
532         result = allocate_optimized_out_value (type);
533       else if (value_lazy (val)
534                /* Be careful not to make a lazy not_lval value.  */
535                || (VALUE_LVAL (val) != not_lval
536                    && TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val))))
537         result = allocate_value_lazy (type);
538       else
539         {
540           result = allocate_value (type);
541           value_contents_copy (result, 0, val, 0, TYPE_LENGTH (type));
542         }
543       set_value_component_location (result, val);
544       set_value_bitsize (result, value_bitsize (val));
545       set_value_bitpos (result, value_bitpos (val));
546       if (VALUE_LVAL (result) == lval_memory)
547         set_value_address (result, value_address (val));
548       return result;
549     }
550 }
551
552 static const gdb_byte *
553 cond_offset_host (const gdb_byte *valaddr, long offset)
554 {
555   if (valaddr == NULL)
556     return NULL;
557   else
558     return valaddr + offset;
559 }
560
561 static CORE_ADDR
562 cond_offset_target (CORE_ADDR address, long offset)
563 {
564   if (address == 0)
565     return 0;
566   else
567     return address + offset;
568 }
569
570 /* Issue a warning (as for the definition of warning in utils.c, but
571    with exactly one argument rather than ...), unless the limit on the
572    number of warnings has passed during the evaluation of the current
573    expression.  */
574
575 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
576    provided by "complaint".  */
577 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
578
579 static void
580 lim_warning (const char *format, ...)
581 {
582   va_list args;
583
584   va_start (args, format);
585   warnings_issued += 1;
586   if (warnings_issued <= warning_limit)
587     vwarning (format, args);
588
589   va_end (args);
590 }
591
592 /* Issue an error if the size of an object of type T is unreasonable,
593    i.e. if it would be a bad idea to allocate a value of this type in
594    GDB.  */
595
596 void
597 ada_ensure_varsize_limit (const struct type *type)
598 {
599   if (TYPE_LENGTH (type) > varsize_limit)
600     error (_("object size is larger than varsize-limit"));
601 }
602
603 /* Maximum value of a SIZE-byte signed integer type.  */
604 static LONGEST
605 max_of_size (int size)
606 {
607   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
608
609   return top_bit | (top_bit - 1);
610 }
611
612 /* Minimum value of a SIZE-byte signed integer type.  */
613 static LONGEST
614 min_of_size (int size)
615 {
616   return -max_of_size (size) - 1;
617 }
618
619 /* Maximum value of a SIZE-byte unsigned integer type.  */
620 static ULONGEST
621 umax_of_size (int size)
622 {
623   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
624
625   return top_bit | (top_bit - 1);
626 }
627
628 /* Maximum value of integral type T, as a signed quantity.  */
629 static LONGEST
630 max_of_type (struct type *t)
631 {
632   if (t->is_unsigned ())
633     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
634   else
635     return max_of_size (TYPE_LENGTH (t));
636 }
637
638 /* Minimum value of integral type T, as a signed quantity.  */
639 static LONGEST
640 min_of_type (struct type *t)
641 {
642   if (t->is_unsigned ())
643     return 0;
644   else
645     return min_of_size (TYPE_LENGTH (t));
646 }
647
648 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
649 LONGEST
650 ada_discrete_type_high_bound (struct type *type)
651 {
652   type = resolve_dynamic_type (type, {}, 0);
653   switch (type->code ())
654     {
655     case TYPE_CODE_RANGE:
656       {
657         const dynamic_prop &high = type->bounds ()->high;
658
659         if (high.kind () == PROP_CONST)
660           return high.const_val ();
661         else
662           {
663             gdb_assert (high.kind () == PROP_UNDEFINED);
664
665             /* This happens when trying to evaluate a type's dynamic bound
666                without a live target.  There is nothing relevant for us to
667                return here, so return 0.  */
668             return 0;
669           }
670       }
671     case TYPE_CODE_ENUM:
672       return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
673     case TYPE_CODE_BOOL:
674       return 1;
675     case TYPE_CODE_CHAR:
676     case TYPE_CODE_INT:
677       return max_of_type (type);
678     default:
679       error (_("Unexpected type in ada_discrete_type_high_bound."));
680     }
681 }
682
683 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
684 LONGEST
685 ada_discrete_type_low_bound (struct type *type)
686 {
687   type = resolve_dynamic_type (type, {}, 0);
688   switch (type->code ())
689     {
690     case TYPE_CODE_RANGE:
691       {
692         const dynamic_prop &low = type->bounds ()->low;
693
694         if (low.kind () == PROP_CONST)
695           return low.const_val ();
696         else
697           {
698             gdb_assert (low.kind () == PROP_UNDEFINED);
699
700             /* This happens when trying to evaluate a type's dynamic bound
701                without a live target.  There is nothing relevant for us to
702                return here, so return 0.  */
703             return 0;
704           }
705       }
706     case TYPE_CODE_ENUM:
707       return TYPE_FIELD_ENUMVAL (type, 0);
708     case TYPE_CODE_BOOL:
709       return 0;
710     case TYPE_CODE_CHAR:
711     case TYPE_CODE_INT:
712       return min_of_type (type);
713     default:
714       error (_("Unexpected type in ada_discrete_type_low_bound."));
715     }
716 }
717
718 /* The identity on non-range types.  For range types, the underlying
719    non-range scalar type.  */
720
721 static struct type *
722 get_base_type (struct type *type)
723 {
724   while (type != NULL && type->code () == TYPE_CODE_RANGE)
725     {
726       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
727         return type;
728       type = TYPE_TARGET_TYPE (type);
729     }
730   return type;
731 }
732
733 /* Return a decoded version of the given VALUE.  This means returning
734    a value whose type is obtained by applying all the GNAT-specific
735    encodings, making the resulting type a static but standard description
736    of the initial type.  */
737
738 struct value *
739 ada_get_decoded_value (struct value *value)
740 {
741   struct type *type = ada_check_typedef (value_type (value));
742
743   if (ada_is_array_descriptor_type (type)
744       || (ada_is_constrained_packed_array_type (type)
745           && type->code () != TYPE_CODE_PTR))
746     {
747       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
748         value = ada_coerce_to_simple_array_ptr (value);
749       else
750         value = ada_coerce_to_simple_array (value);
751     }
752   else
753     value = ada_to_fixed_value (value);
754
755   return value;
756 }
757
758 /* Same as ada_get_decoded_value, but with the given TYPE.
759    Because there is no associated actual value for this type,
760    the resulting type might be a best-effort approximation in
761    the case of dynamic types.  */
762
763 struct type *
764 ada_get_decoded_type (struct type *type)
765 {
766   type = to_static_fixed_type (type);
767   if (ada_is_constrained_packed_array_type (type))
768     type = ada_coerce_to_simple_array_type (type);
769   return type;
770 }
771
772 \f
773
774                                 /* Language Selection */
775
776 /* If the main program is in Ada, return language_ada, otherwise return LANG
777    (the main program is in Ada iif the adainit symbol is found).  */
778
779 static enum language
780 ada_update_initial_language (enum language lang)
781 {
782   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
783     return language_ada;
784
785   return lang;
786 }
787
788 /* If the main procedure is written in Ada, then return its name.
789    The result is good until the next call.  Return NULL if the main
790    procedure doesn't appear to be in Ada.  */
791
792 char *
793 ada_main_name (void)
794 {
795   struct bound_minimal_symbol msym;
796   static gdb::unique_xmalloc_ptr<char> main_program_name;
797
798   /* For Ada, the name of the main procedure is stored in a specific
799      string constant, generated by the binder.  Look for that symbol,
800      extract its address, and then read that string.  If we didn't find
801      that string, then most probably the main procedure is not written
802      in Ada.  */
803   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
804
805   if (msym.minsym != NULL)
806     {
807       CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
808       if (main_program_name_addr == 0)
809         error (_("Invalid address for Ada main program name."));
810
811       main_program_name = target_read_string (main_program_name_addr, 1024);
812       return main_program_name.get ();
813     }
814
815   /* The main procedure doesn't seem to be in Ada.  */
816   return NULL;
817 }
818 \f
819                                 /* Symbols */
820
821 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
822    of NULLs.  */
823
824 const struct ada_opname_map ada_opname_table[] = {
825   {"Oadd", "\"+\"", BINOP_ADD},
826   {"Osubtract", "\"-\"", BINOP_SUB},
827   {"Omultiply", "\"*\"", BINOP_MUL},
828   {"Odivide", "\"/\"", BINOP_DIV},
829   {"Omod", "\"mod\"", BINOP_MOD},
830   {"Orem", "\"rem\"", BINOP_REM},
831   {"Oexpon", "\"**\"", BINOP_EXP},
832   {"Olt", "\"<\"", BINOP_LESS},
833   {"Ole", "\"<=\"", BINOP_LEQ},
834   {"Ogt", "\">\"", BINOP_GTR},
835   {"Oge", "\">=\"", BINOP_GEQ},
836   {"Oeq", "\"=\"", BINOP_EQUAL},
837   {"One", "\"/=\"", BINOP_NOTEQUAL},
838   {"Oand", "\"and\"", BINOP_BITWISE_AND},
839   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
840   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
841   {"Oconcat", "\"&\"", BINOP_CONCAT},
842   {"Oabs", "\"abs\"", UNOP_ABS},
843   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
844   {"Oadd", "\"+\"", UNOP_PLUS},
845   {"Osubtract", "\"-\"", UNOP_NEG},
846   {NULL, NULL}
847 };
848
849 /* If STR is a decoded version of a compiler-provided suffix (like the
850    "[cold]" in "symbol[cold]"), return true.  Otherwise, return
851    false.  */
852
853 static bool
854 is_compiler_suffix (const char *str)
855 {
856   gdb_assert (*str == '[');
857   ++str;
858   while (*str != '\0' && isalpha (*str))
859     ++str;
860   /* We accept a missing "]" in order to support completion.  */
861   return *str == '\0' || (str[0] == ']' && str[1] == '\0');
862 }
863
864 /* The "encoded" form of DECODED, according to GNAT conventions.  If
865    THROW_ERRORS, throw an error if invalid operator name is found.
866    Otherwise, return the empty string in that case.  */
867
868 static std::string
869 ada_encode_1 (const char *decoded, bool throw_errors)
870 {
871   if (decoded == NULL)
872     return {};
873
874   std::string encoding_buffer;
875   for (const char *p = decoded; *p != '\0'; p += 1)
876     {
877       if (*p == '.')
878         encoding_buffer.append ("__");
879       else if (*p == '[' && is_compiler_suffix (p))
880         {
881           encoding_buffer = encoding_buffer + "." + (p + 1);
882           if (encoding_buffer.back () == ']')
883             encoding_buffer.pop_back ();
884           break;
885         }
886       else if (*p == '"')
887         {
888           const struct ada_opname_map *mapping;
889
890           for (mapping = ada_opname_table;
891                mapping->encoded != NULL
892                && !startswith (p, mapping->decoded); mapping += 1)
893             ;
894           if (mapping->encoded == NULL)
895             {
896               if (throw_errors)
897                 error (_("invalid Ada operator name: %s"), p);
898               else
899                 return {};
900             }
901           encoding_buffer.append (mapping->encoded);
902           break;
903         }
904       else
905         encoding_buffer.push_back (*p);
906     }
907
908   return encoding_buffer;
909 }
910
911 /* The "encoded" form of DECODED, according to GNAT conventions.  */
912
913 std::string
914 ada_encode (const char *decoded)
915 {
916   return ada_encode_1 (decoded, true);
917 }
918
919 /* Return NAME folded to lower case, or, if surrounded by single
920    quotes, unfolded, but with the quotes stripped away.  Result good
921    to next call.  */
922
923 static const char *
924 ada_fold_name (gdb::string_view name)
925 {
926   static std::string fold_storage;
927
928   if (!name.empty () && name[0] == '\'')
929     fold_storage = gdb::to_string (name.substr (1, name.size () - 2));
930   else
931     {
932       fold_storage = gdb::to_string (name);
933       for (int i = 0; i < name.size (); i += 1)
934         fold_storage[i] = tolower (fold_storage[i]);
935     }
936
937   return fold_storage.c_str ();
938 }
939
940 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
941
942 static int
943 is_lower_alphanum (const char c)
944 {
945   return (isdigit (c) || (isalpha (c) && islower (c)));
946 }
947
948 /* ENCODED is the linkage name of a symbol and LEN contains its length.
949    This function saves in LEN the length of that same symbol name but
950    without either of these suffixes:
951      . .{DIGIT}+
952      . ${DIGIT}+
953      . ___{DIGIT}+
954      . __{DIGIT}+.
955
956    These are suffixes introduced by the compiler for entities such as
957    nested subprogram for instance, in order to avoid name clashes.
958    They do not serve any purpose for the debugger.  */
959
960 static void
961 ada_remove_trailing_digits (const char *encoded, int *len)
962 {
963   if (*len > 1 && isdigit (encoded[*len - 1]))
964     {
965       int i = *len - 2;
966
967       while (i > 0 && isdigit (encoded[i]))
968         i--;
969       if (i >= 0 && encoded[i] == '.')
970         *len = i;
971       else if (i >= 0 && encoded[i] == '$')
972         *len = i;
973       else if (i >= 2 && startswith (encoded + i - 2, "___"))
974         *len = i - 2;
975       else if (i >= 1 && startswith (encoded + i - 1, "__"))
976         *len = i - 1;
977     }
978 }
979
980 /* Remove the suffix introduced by the compiler for protected object
981    subprograms.  */
982
983 static void
984 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
985 {
986   /* Remove trailing N.  */
987
988   /* Protected entry subprograms are broken into two
989      separate subprograms: The first one is unprotected, and has
990      a 'N' suffix; the second is the protected version, and has
991      the 'P' suffix.  The second calls the first one after handling
992      the protection.  Since the P subprograms are internally generated,
993      we leave these names undecoded, giving the user a clue that this
994      entity is internal.  */
995
996   if (*len > 1
997       && encoded[*len - 1] == 'N'
998       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
999     *len = *len - 1;
1000 }
1001
1002 /* If ENCODED ends with a compiler-provided suffix (like ".cold"),
1003    then update *LEN to remove the suffix and return the offset of the
1004    character just past the ".".  Otherwise, return -1.  */
1005
1006 static int
1007 remove_compiler_suffix (const char *encoded, int *len)
1008 {
1009   int offset = *len - 1;
1010   while (offset > 0 && isalpha (encoded[offset]))
1011     --offset;
1012   if (offset > 0 && encoded[offset] == '.')
1013     {
1014       *len = offset;
1015       return offset + 1;
1016     }
1017   return -1;
1018 }
1019
1020 /* See ada-lang.h.  */
1021
1022 std::string
1023 ada_decode (const char *encoded, bool wrap)
1024 {
1025   int i, j;
1026   int len0;
1027   const char *p;
1028   int at_start_name;
1029   std::string decoded;
1030   int suffix = -1;
1031
1032   /* With function descriptors on PPC64, the value of a symbol named
1033      ".FN", if it exists, is the entry point of the function "FN".  */
1034   if (encoded[0] == '.')
1035     encoded += 1;
1036
1037   /* The name of the Ada main procedure starts with "_ada_".
1038      This prefix is not part of the decoded name, so skip this part
1039      if we see this prefix.  */
1040   if (startswith (encoded, "_ada_"))
1041     encoded += 5;
1042
1043   /* If the name starts with '_', then it is not a properly encoded
1044      name, so do not attempt to decode it.  Similarly, if the name
1045      starts with '<', the name should not be decoded.  */
1046   if (encoded[0] == '_' || encoded[0] == '<')
1047     goto Suppress;
1048
1049   len0 = strlen (encoded);
1050
1051   suffix = remove_compiler_suffix (encoded, &len0);
1052
1053   ada_remove_trailing_digits (encoded, &len0);
1054   ada_remove_po_subprogram_suffix (encoded, &len0);
1055
1056   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1057      the suffix is located before the current "end" of ENCODED.  We want
1058      to avoid re-matching parts of ENCODED that have previously been
1059      marked as discarded (by decrementing LEN0).  */
1060   p = strstr (encoded, "___");
1061   if (p != NULL && p - encoded < len0 - 3)
1062     {
1063       if (p[3] == 'X')
1064         len0 = p - encoded;
1065       else
1066         goto Suppress;
1067     }
1068
1069   /* Remove any trailing TKB suffix.  It tells us that this symbol
1070      is for the body of a task, but that information does not actually
1071      appear in the decoded name.  */
1072
1073   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1074     len0 -= 3;
1075
1076   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1077      from the TKB suffix because it is used for non-anonymous task
1078      bodies.  */
1079
1080   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1081     len0 -= 2;
1082
1083   /* Remove trailing "B" suffixes.  */
1084   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1085
1086   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1087     len0 -= 1;
1088
1089   /* Make decoded big enough for possible expansion by operator name.  */
1090
1091   decoded.resize (2 * len0 + 1, 'X');
1092
1093   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1094
1095   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1096     {
1097       i = len0 - 2;
1098       while ((i >= 0 && isdigit (encoded[i]))
1099              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1100         i -= 1;
1101       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1102         len0 = i - 1;
1103       else if (encoded[i] == '$')
1104         len0 = i;
1105     }
1106
1107   /* The first few characters that are not alphabetic are not part
1108      of any encoding we use, so we can copy them over verbatim.  */
1109
1110   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1111     decoded[j] = encoded[i];
1112
1113   at_start_name = 1;
1114   while (i < len0)
1115     {
1116       /* Is this a symbol function?  */
1117       if (at_start_name && encoded[i] == 'O')
1118         {
1119           int k;
1120
1121           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1122             {
1123               int op_len = strlen (ada_opname_table[k].encoded);
1124               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1125                             op_len - 1) == 0)
1126                   && !isalnum (encoded[i + op_len]))
1127                 {
1128                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1129                   at_start_name = 0;
1130                   i += op_len;
1131                   j += strlen (ada_opname_table[k].decoded);
1132                   break;
1133                 }
1134             }
1135           if (ada_opname_table[k].encoded != NULL)
1136             continue;
1137         }
1138       at_start_name = 0;
1139
1140       /* Replace "TK__" with "__", which will eventually be translated
1141          into "." (just below).  */
1142
1143       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1144         i += 2;
1145
1146       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1147          be translated into "." (just below).  These are internal names
1148          generated for anonymous blocks inside which our symbol is nested.  */
1149
1150       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1151           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1152           && isdigit (encoded [i+4]))
1153         {
1154           int k = i + 5;
1155           
1156           while (k < len0 && isdigit (encoded[k]))
1157             k++;  /* Skip any extra digit.  */
1158
1159           /* Double-check that the "__B_{DIGITS}+" sequence we found
1160              is indeed followed by "__".  */
1161           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1162             i = k;
1163         }
1164
1165       /* Remove _E{DIGITS}+[sb] */
1166
1167       /* Just as for protected object subprograms, there are 2 categories
1168          of subprograms created by the compiler for each entry.  The first
1169          one implements the actual entry code, and has a suffix following
1170          the convention above; the second one implements the barrier and
1171          uses the same convention as above, except that the 'E' is replaced
1172          by a 'B'.
1173
1174          Just as above, we do not decode the name of barrier functions
1175          to give the user a clue that the code he is debugging has been
1176          internally generated.  */
1177
1178       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1179           && isdigit (encoded[i+2]))
1180         {
1181           int k = i + 3;
1182
1183           while (k < len0 && isdigit (encoded[k]))
1184             k++;
1185
1186           if (k < len0
1187               && (encoded[k] == 'b' || encoded[k] == 's'))
1188             {
1189               k++;
1190               /* Just as an extra precaution, make sure that if this
1191                  suffix is followed by anything else, it is a '_'.
1192                  Otherwise, we matched this sequence by accident.  */
1193               if (k == len0
1194                   || (k < len0 && encoded[k] == '_'))
1195                 i = k;
1196             }
1197         }
1198
1199       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1200          the GNAT front-end in protected object subprograms.  */
1201
1202       if (i < len0 + 3
1203           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1204         {
1205           /* Backtrack a bit up until we reach either the begining of
1206              the encoded name, or "__".  Make sure that we only find
1207              digits or lowercase characters.  */
1208           const char *ptr = encoded + i - 1;
1209
1210           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1211             ptr--;
1212           if (ptr < encoded
1213               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1214             i++;
1215         }
1216
1217       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1218         {
1219           /* This is a X[bn]* sequence not separated from the previous
1220              part of the name with a non-alpha-numeric character (in other
1221              words, immediately following an alpha-numeric character), then
1222              verify that it is placed at the end of the encoded name.  If
1223              not, then the encoding is not valid and we should abort the
1224              decoding.  Otherwise, just skip it, it is used in body-nested
1225              package names.  */
1226           do
1227             i += 1;
1228           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1229           if (i < len0)
1230             goto Suppress;
1231         }
1232       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1233         {
1234          /* Replace '__' by '.'.  */
1235           decoded[j] = '.';
1236           at_start_name = 1;
1237           i += 2;
1238           j += 1;
1239         }
1240       else
1241         {
1242           /* It's a character part of the decoded name, so just copy it
1243              over.  */
1244           decoded[j] = encoded[i];
1245           i += 1;
1246           j += 1;
1247         }
1248     }
1249   decoded.resize (j);
1250
1251   /* Decoded names should never contain any uppercase character.
1252      Double-check this, and abort the decoding if we find one.  */
1253
1254   for (i = 0; i < decoded.length(); ++i)
1255     if (isupper (decoded[i]) || decoded[i] == ' ')
1256       goto Suppress;
1257
1258   /* If the compiler added a suffix, append it now.  */
1259   if (suffix >= 0)
1260     decoded = decoded + "[" + &encoded[suffix] + "]";
1261
1262   return decoded;
1263
1264 Suppress:
1265   if (!wrap)
1266     return {};
1267
1268   if (encoded[0] == '<')
1269     decoded = encoded;
1270   else
1271     decoded = '<' + std::string(encoded) + '>';
1272   return decoded;
1273 }
1274
1275 /* Table for keeping permanent unique copies of decoded names.  Once
1276    allocated, names in this table are never released.  While this is a
1277    storage leak, it should not be significant unless there are massive
1278    changes in the set of decoded names in successive versions of a 
1279    symbol table loaded during a single session.  */
1280 static struct htab *decoded_names_store;
1281
1282 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1283    in the language-specific part of GSYMBOL, if it has not been
1284    previously computed.  Tries to save the decoded name in the same
1285    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1286    in any case, the decoded symbol has a lifetime at least that of
1287    GSYMBOL).
1288    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1289    const, but nevertheless modified to a semantically equivalent form
1290    when a decoded name is cached in it.  */
1291
1292 const char *
1293 ada_decode_symbol (const struct general_symbol_info *arg)
1294 {
1295   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1296   const char **resultp =
1297     &gsymbol->language_specific.demangled_name;
1298
1299   if (!gsymbol->ada_mangled)
1300     {
1301       std::string decoded = ada_decode (gsymbol->linkage_name ());
1302       struct obstack *obstack = gsymbol->language_specific.obstack;
1303
1304       gsymbol->ada_mangled = 1;
1305
1306       if (obstack != NULL)
1307         *resultp = obstack_strdup (obstack, decoded.c_str ());
1308       else
1309         {
1310           /* Sometimes, we can't find a corresponding objfile, in
1311              which case, we put the result on the heap.  Since we only
1312              decode when needed, we hope this usually does not cause a
1313              significant memory leak (FIXME).  */
1314
1315           char **slot = (char **) htab_find_slot (decoded_names_store,
1316                                                   decoded.c_str (), INSERT);
1317
1318           if (*slot == NULL)
1319             *slot = xstrdup (decoded.c_str ());
1320           *resultp = *slot;
1321         }
1322     }
1323
1324   return *resultp;
1325 }
1326
1327 \f
1328
1329                                 /* Arrays */
1330
1331 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1332    generated by the GNAT compiler to describe the index type used
1333    for each dimension of an array, check whether it follows the latest
1334    known encoding.  If not, fix it up to conform to the latest encoding.
1335    Otherwise, do nothing.  This function also does nothing if
1336    INDEX_DESC_TYPE is NULL.
1337
1338    The GNAT encoding used to describe the array index type evolved a bit.
1339    Initially, the information would be provided through the name of each
1340    field of the structure type only, while the type of these fields was
1341    described as unspecified and irrelevant.  The debugger was then expected
1342    to perform a global type lookup using the name of that field in order
1343    to get access to the full index type description.  Because these global
1344    lookups can be very expensive, the encoding was later enhanced to make
1345    the global lookup unnecessary by defining the field type as being
1346    the full index type description.
1347
1348    The purpose of this routine is to allow us to support older versions
1349    of the compiler by detecting the use of the older encoding, and by
1350    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1351    we essentially replace each field's meaningless type by the associated
1352    index subtype).  */
1353
1354 void
1355 ada_fixup_array_indexes_type (struct type *index_desc_type)
1356 {
1357   int i;
1358
1359   if (index_desc_type == NULL)
1360     return;
1361   gdb_assert (index_desc_type->num_fields () > 0);
1362
1363   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1364      to check one field only, no need to check them all).  If not, return
1365      now.
1366
1367      If our INDEX_DESC_TYPE was generated using the older encoding,
1368      the field type should be a meaningless integer type whose name
1369      is not equal to the field name.  */
1370   if (index_desc_type->field (0).type ()->name () != NULL
1371       && strcmp (index_desc_type->field (0).type ()->name (),
1372                  index_desc_type->field (0).name ()) == 0)
1373     return;
1374
1375   /* Fixup each field of INDEX_DESC_TYPE.  */
1376   for (i = 0; i < index_desc_type->num_fields (); i++)
1377    {
1378      const char *name = index_desc_type->field (i).name ();
1379      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1380
1381      if (raw_type)
1382        index_desc_type->field (i).set_type (raw_type);
1383    }
1384 }
1385
1386 /* The desc_* routines return primitive portions of array descriptors
1387    (fat pointers).  */
1388
1389 /* The descriptor or array type, if any, indicated by TYPE; removes
1390    level of indirection, if needed.  */
1391
1392 static struct type *
1393 desc_base_type (struct type *type)
1394 {
1395   if (type == NULL)
1396     return NULL;
1397   type = ada_check_typedef (type);
1398   if (type->code () == TYPE_CODE_TYPEDEF)
1399     type = ada_typedef_target_type (type);
1400
1401   if (type != NULL
1402       && (type->code () == TYPE_CODE_PTR
1403           || type->code () == TYPE_CODE_REF))
1404     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1405   else
1406     return type;
1407 }
1408
1409 /* True iff TYPE indicates a "thin" array pointer type.  */
1410
1411 static int
1412 is_thin_pntr (struct type *type)
1413 {
1414   return
1415     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1416     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1417 }
1418
1419 /* The descriptor type for thin pointer type TYPE.  */
1420
1421 static struct type *
1422 thin_descriptor_type (struct type *type)
1423 {
1424   struct type *base_type = desc_base_type (type);
1425
1426   if (base_type == NULL)
1427     return NULL;
1428   if (is_suffix (ada_type_name (base_type), "___XVE"))
1429     return base_type;
1430   else
1431     {
1432       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1433
1434       if (alt_type == NULL)
1435         return base_type;
1436       else
1437         return alt_type;
1438     }
1439 }
1440
1441 /* A pointer to the array data for thin-pointer value VAL.  */
1442
1443 static struct value *
1444 thin_data_pntr (struct value *val)
1445 {
1446   struct type *type = ada_check_typedef (value_type (val));
1447   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1448
1449   data_type = lookup_pointer_type (data_type);
1450
1451   if (type->code () == TYPE_CODE_PTR)
1452     return value_cast (data_type, value_copy (val));
1453   else
1454     return value_from_longest (data_type, value_address (val));
1455 }
1456
1457 /* True iff TYPE indicates a "thick" array pointer type.  */
1458
1459 static int
1460 is_thick_pntr (struct type *type)
1461 {
1462   type = desc_base_type (type);
1463   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1464           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1465 }
1466
1467 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1468    pointer to one, the type of its bounds data; otherwise, NULL.  */
1469
1470 static struct type *
1471 desc_bounds_type (struct type *type)
1472 {
1473   struct type *r;
1474
1475   type = desc_base_type (type);
1476
1477   if (type == NULL)
1478     return NULL;
1479   else if (is_thin_pntr (type))
1480     {
1481       type = thin_descriptor_type (type);
1482       if (type == NULL)
1483         return NULL;
1484       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1485       if (r != NULL)
1486         return ada_check_typedef (r);
1487     }
1488   else if (type->code () == TYPE_CODE_STRUCT)
1489     {
1490       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1491       if (r != NULL)
1492         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1493     }
1494   return NULL;
1495 }
1496
1497 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1498    one, a pointer to its bounds data.   Otherwise NULL.  */
1499
1500 static struct value *
1501 desc_bounds (struct value *arr)
1502 {
1503   struct type *type = ada_check_typedef (value_type (arr));
1504
1505   if (is_thin_pntr (type))
1506     {
1507       struct type *bounds_type =
1508         desc_bounds_type (thin_descriptor_type (type));
1509       LONGEST addr;
1510
1511       if (bounds_type == NULL)
1512         error (_("Bad GNAT array descriptor"));
1513
1514       /* NOTE: The following calculation is not really kosher, but
1515          since desc_type is an XVE-encoded type (and shouldn't be),
1516          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1517       if (type->code () == TYPE_CODE_PTR)
1518         addr = value_as_long (arr);
1519       else
1520         addr = value_address (arr);
1521
1522       return
1523         value_from_longest (lookup_pointer_type (bounds_type),
1524                             addr - TYPE_LENGTH (bounds_type));
1525     }
1526
1527   else if (is_thick_pntr (type))
1528     {
1529       struct value *p_bounds = value_struct_elt (&arr, {}, "P_BOUNDS", NULL,
1530                                                _("Bad GNAT array descriptor"));
1531       struct type *p_bounds_type = value_type (p_bounds);
1532
1533       if (p_bounds_type
1534           && p_bounds_type->code () == TYPE_CODE_PTR)
1535         {
1536           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1537
1538           if (target_type->is_stub ())
1539             p_bounds = value_cast (lookup_pointer_type
1540                                    (ada_check_typedef (target_type)),
1541                                    p_bounds);
1542         }
1543       else
1544         error (_("Bad GNAT array descriptor"));
1545
1546       return p_bounds;
1547     }
1548   else
1549     return NULL;
1550 }
1551
1552 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1553    position of the field containing the address of the bounds data.  */
1554
1555 static int
1556 fat_pntr_bounds_bitpos (struct type *type)
1557 {
1558   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1559 }
1560
1561 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1562    size of the field containing the address of the bounds data.  */
1563
1564 static int
1565 fat_pntr_bounds_bitsize (struct type *type)
1566 {
1567   type = desc_base_type (type);
1568
1569   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1570     return TYPE_FIELD_BITSIZE (type, 1);
1571   else
1572     return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
1573 }
1574
1575 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1576    pointer to one, the type of its array data (a array-with-no-bounds type);
1577    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1578    data.  */
1579
1580 static struct type *
1581 desc_data_target_type (struct type *type)
1582 {
1583   type = desc_base_type (type);
1584
1585   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1586   if (is_thin_pntr (type))
1587     return desc_base_type (thin_descriptor_type (type)->field (1).type ());
1588   else if (is_thick_pntr (type))
1589     {
1590       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1591
1592       if (data_type
1593           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1594         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1595     }
1596
1597   return NULL;
1598 }
1599
1600 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1601    its array data.  */
1602
1603 static struct value *
1604 desc_data (struct value *arr)
1605 {
1606   struct type *type = value_type (arr);
1607
1608   if (is_thin_pntr (type))
1609     return thin_data_pntr (arr);
1610   else if (is_thick_pntr (type))
1611     return value_struct_elt (&arr, {}, "P_ARRAY", NULL,
1612                              _("Bad GNAT array descriptor"));
1613   else
1614     return NULL;
1615 }
1616
1617
1618 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1619    position of the field containing the address of the data.  */
1620
1621 static int
1622 fat_pntr_data_bitpos (struct type *type)
1623 {
1624   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1625 }
1626
1627 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1628    size of the field containing the address of the data.  */
1629
1630 static int
1631 fat_pntr_data_bitsize (struct type *type)
1632 {
1633   type = desc_base_type (type);
1634
1635   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1636     return TYPE_FIELD_BITSIZE (type, 0);
1637   else
1638     return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
1639 }
1640
1641 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1642    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1643    bound, if WHICH is 1.  The first bound is I=1.  */
1644
1645 static struct value *
1646 desc_one_bound (struct value *bounds, int i, int which)
1647 {
1648   char bound_name[20];
1649   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1650              which ? 'U' : 'L', i - 1);
1651   return value_struct_elt (&bounds, {}, bound_name, NULL,
1652                            _("Bad GNAT array descriptor bounds"));
1653 }
1654
1655 /* If BOUNDS is an array-bounds structure type, return the bit position
1656    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1657    bound, if WHICH is 1.  The first bound is I=1.  */
1658
1659 static int
1660 desc_bound_bitpos (struct type *type, int i, int which)
1661 {
1662   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1663 }
1664
1665 /* If BOUNDS is an array-bounds structure type, return the bit field size
1666    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1667    bound, if WHICH is 1.  The first bound is I=1.  */
1668
1669 static int
1670 desc_bound_bitsize (struct type *type, int i, int which)
1671 {
1672   type = desc_base_type (type);
1673
1674   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1675     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1676   else
1677     return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
1678 }
1679
1680 /* If TYPE is the type of an array-bounds structure, the type of its
1681    Ith bound (numbering from 1).  Otherwise, NULL.  */
1682
1683 static struct type *
1684 desc_index_type (struct type *type, int i)
1685 {
1686   type = desc_base_type (type);
1687
1688   if (type->code () == TYPE_CODE_STRUCT)
1689     {
1690       char bound_name[20];
1691       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1692       return lookup_struct_elt_type (type, bound_name, 1);
1693     }
1694   else
1695     return NULL;
1696 }
1697
1698 /* The number of index positions in the array-bounds type TYPE.
1699    Return 0 if TYPE is NULL.  */
1700
1701 static int
1702 desc_arity (struct type *type)
1703 {
1704   type = desc_base_type (type);
1705
1706   if (type != NULL)
1707     return type->num_fields () / 2;
1708   return 0;
1709 }
1710
1711 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1712    an array descriptor type (representing an unconstrained array
1713    type).  */
1714
1715 static int
1716 ada_is_direct_array_type (struct type *type)
1717 {
1718   if (type == NULL)
1719     return 0;
1720   type = ada_check_typedef (type);
1721   return (type->code () == TYPE_CODE_ARRAY
1722           || ada_is_array_descriptor_type (type));
1723 }
1724
1725 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1726  * to one.  */
1727
1728 static int
1729 ada_is_array_type (struct type *type)
1730 {
1731   while (type != NULL
1732          && (type->code () == TYPE_CODE_PTR
1733              || type->code () == TYPE_CODE_REF))
1734     type = TYPE_TARGET_TYPE (type);
1735   return ada_is_direct_array_type (type);
1736 }
1737
1738 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1739
1740 int
1741 ada_is_simple_array_type (struct type *type)
1742 {
1743   if (type == NULL)
1744     return 0;
1745   type = ada_check_typedef (type);
1746   return (type->code () == TYPE_CODE_ARRAY
1747           || (type->code () == TYPE_CODE_PTR
1748               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1749                   == TYPE_CODE_ARRAY)));
1750 }
1751
1752 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1753
1754 int
1755 ada_is_array_descriptor_type (struct type *type)
1756 {
1757   struct type *data_type = desc_data_target_type (type);
1758
1759   if (type == NULL)
1760     return 0;
1761   type = ada_check_typedef (type);
1762   return (data_type != NULL
1763           && data_type->code () == TYPE_CODE_ARRAY
1764           && desc_arity (desc_bounds_type (type)) > 0);
1765 }
1766
1767 /* Non-zero iff type is a partially mal-formed GNAT array
1768    descriptor.  FIXME: This is to compensate for some problems with
1769    debugging output from GNAT.  Re-examine periodically to see if it
1770    is still needed.  */
1771
1772 int
1773 ada_is_bogus_array_descriptor (struct type *type)
1774 {
1775   return
1776     type != NULL
1777     && type->code () == TYPE_CODE_STRUCT
1778     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1779         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1780     && !ada_is_array_descriptor_type (type);
1781 }
1782
1783
1784 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1785    (fat pointer) returns the type of the array data described---specifically,
1786    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1787    in from the descriptor; otherwise, they are left unspecified.  If
1788    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1789    returns NULL.  The result is simply the type of ARR if ARR is not
1790    a descriptor.  */
1791
1792 static struct type *
1793 ada_type_of_array (struct value *arr, int bounds)
1794 {
1795   if (ada_is_constrained_packed_array_type (value_type (arr)))
1796     return decode_constrained_packed_array_type (value_type (arr));
1797
1798   if (!ada_is_array_descriptor_type (value_type (arr)))
1799     return value_type (arr);
1800
1801   if (!bounds)
1802     {
1803       struct type *array_type =
1804         ada_check_typedef (desc_data_target_type (value_type (arr)));
1805
1806       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1807         TYPE_FIELD_BITSIZE (array_type, 0) =
1808           decode_packed_array_bitsize (value_type (arr));
1809       
1810       return array_type;
1811     }
1812   else
1813     {
1814       struct type *elt_type;
1815       int arity;
1816       struct value *descriptor;
1817
1818       elt_type = ada_array_element_type (value_type (arr), -1);
1819       arity = ada_array_arity (value_type (arr));
1820
1821       if (elt_type == NULL || arity == 0)
1822         return ada_check_typedef (value_type (arr));
1823
1824       descriptor = desc_bounds (arr);
1825       if (value_as_long (descriptor) == 0)
1826         return NULL;
1827       while (arity > 0)
1828         {
1829           struct type *range_type = alloc_type_copy (value_type (arr));
1830           struct type *array_type = alloc_type_copy (value_type (arr));
1831           struct value *low = desc_one_bound (descriptor, arity, 0);
1832           struct value *high = desc_one_bound (descriptor, arity, 1);
1833
1834           arity -= 1;
1835           create_static_range_type (range_type, value_type (low),
1836                                     longest_to_int (value_as_long (low)),
1837                                     longest_to_int (value_as_long (high)));
1838           elt_type = create_array_type (array_type, elt_type, range_type);
1839
1840           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1841             {
1842               /* We need to store the element packed bitsize, as well as
1843                  recompute the array size, because it was previously
1844                  computed based on the unpacked element size.  */
1845               LONGEST lo = value_as_long (low);
1846               LONGEST hi = value_as_long (high);
1847
1848               TYPE_FIELD_BITSIZE (elt_type, 0) =
1849                 decode_packed_array_bitsize (value_type (arr));
1850               /* If the array has no element, then the size is already
1851                  zero, and does not need to be recomputed.  */
1852               if (lo < hi)
1853                 {
1854                   int array_bitsize =
1855                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1856
1857                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1858                 }
1859             }
1860         }
1861
1862       return lookup_pointer_type (elt_type);
1863     }
1864 }
1865
1866 /* If ARR does not represent an array, returns ARR unchanged.
1867    Otherwise, returns either a standard GDB array with bounds set
1868    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1869    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1870
1871 struct value *
1872 ada_coerce_to_simple_array_ptr (struct value *arr)
1873 {
1874   if (ada_is_array_descriptor_type (value_type (arr)))
1875     {
1876       struct type *arrType = ada_type_of_array (arr, 1);
1877
1878       if (arrType == NULL)
1879         return NULL;
1880       return value_cast (arrType, value_copy (desc_data (arr)));
1881     }
1882   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1883     return decode_constrained_packed_array (arr);
1884   else
1885     return arr;
1886 }
1887
1888 /* If ARR does not represent an array, returns ARR unchanged.
1889    Otherwise, returns a standard GDB array describing ARR (which may
1890    be ARR itself if it already is in the proper form).  */
1891
1892 struct value *
1893 ada_coerce_to_simple_array (struct value *arr)
1894 {
1895   if (ada_is_array_descriptor_type (value_type (arr)))
1896     {
1897       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1898
1899       if (arrVal == NULL)
1900         error (_("Bounds unavailable for null array pointer."));
1901       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1902       return value_ind (arrVal);
1903     }
1904   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1905     return decode_constrained_packed_array (arr);
1906   else
1907     return arr;
1908 }
1909
1910 /* If TYPE represents a GNAT array type, return it translated to an
1911    ordinary GDB array type (possibly with BITSIZE fields indicating
1912    packing).  For other types, is the identity.  */
1913
1914 struct type *
1915 ada_coerce_to_simple_array_type (struct type *type)
1916 {
1917   if (ada_is_constrained_packed_array_type (type))
1918     return decode_constrained_packed_array_type (type);
1919
1920   if (ada_is_array_descriptor_type (type))
1921     return ada_check_typedef (desc_data_target_type (type));
1922
1923   return type;
1924 }
1925
1926 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
1927
1928 static int
1929 ada_is_gnat_encoded_packed_array_type  (struct type *type)
1930 {
1931   if (type == NULL)
1932     return 0;
1933   type = desc_base_type (type);
1934   type = ada_check_typedef (type);
1935   return
1936     ada_type_name (type) != NULL
1937     && strstr (ada_type_name (type), "___XP") != NULL;
1938 }
1939
1940 /* Non-zero iff TYPE represents a standard GNAT constrained
1941    packed-array type.  */
1942
1943 int
1944 ada_is_constrained_packed_array_type (struct type *type)
1945 {
1946   return ada_is_gnat_encoded_packed_array_type (type)
1947     && !ada_is_array_descriptor_type (type);
1948 }
1949
1950 /* Non-zero iff TYPE represents an array descriptor for a
1951    unconstrained packed-array type.  */
1952
1953 static int
1954 ada_is_unconstrained_packed_array_type (struct type *type)
1955 {
1956   if (!ada_is_array_descriptor_type (type))
1957     return 0;
1958
1959   if (ada_is_gnat_encoded_packed_array_type (type))
1960     return 1;
1961
1962   /* If we saw GNAT encodings, then the above code is sufficient.
1963      However, with minimal encodings, we will just have a thick
1964      pointer instead.  */
1965   if (is_thick_pntr (type))
1966     {
1967       type = desc_base_type (type);
1968       /* The structure's first field is a pointer to an array, so this
1969          fetches the array type.  */
1970       type = TYPE_TARGET_TYPE (type->field (0).type ());
1971       /* Now we can see if the array elements are packed.  */
1972       return TYPE_FIELD_BITSIZE (type, 0) > 0;
1973     }
1974
1975   return 0;
1976 }
1977
1978 /* Return true if TYPE is a (Gnat-encoded) constrained packed array
1979    type, or if it is an ordinary (non-Gnat-encoded) packed array.  */
1980
1981 static bool
1982 ada_is_any_packed_array_type (struct type *type)
1983 {
1984   return (ada_is_constrained_packed_array_type (type)
1985           || (type->code () == TYPE_CODE_ARRAY
1986               && TYPE_FIELD_BITSIZE (type, 0) % 8 != 0));
1987 }
1988
1989 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
1990    return the size of its elements in bits.  */
1991
1992 static long
1993 decode_packed_array_bitsize (struct type *type)
1994 {
1995   const char *raw_name;
1996   const char *tail;
1997   long bits;
1998
1999   /* Access to arrays implemented as fat pointers are encoded as a typedef
2000      of the fat pointer type.  We need the name of the fat pointer type
2001      to do the decoding, so strip the typedef layer.  */
2002   if (type->code () == TYPE_CODE_TYPEDEF)
2003     type = ada_typedef_target_type (type);
2004
2005   raw_name = ada_type_name (ada_check_typedef (type));
2006   if (!raw_name)
2007     raw_name = ada_type_name (desc_base_type (type));
2008
2009   if (!raw_name)
2010     return 0;
2011
2012   tail = strstr (raw_name, "___XP");
2013   if (tail == nullptr)
2014     {
2015       gdb_assert (is_thick_pntr (type));
2016       /* The structure's first field is a pointer to an array, so this
2017          fetches the array type.  */
2018       type = TYPE_TARGET_TYPE (type->field (0).type ());
2019       /* Now we can see if the array elements are packed.  */
2020       return TYPE_FIELD_BITSIZE (type, 0);
2021     }
2022
2023   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2024     {
2025       lim_warning
2026         (_("could not understand bit size information on packed array"));
2027       return 0;
2028     }
2029
2030   return bits;
2031 }
2032
2033 /* Given that TYPE is a standard GDB array type with all bounds filled
2034    in, and that the element size of its ultimate scalar constituents
2035    (that is, either its elements, or, if it is an array of arrays, its
2036    elements' elements, etc.) is *ELT_BITS, return an identical type,
2037    but with the bit sizes of its elements (and those of any
2038    constituent arrays) recorded in the BITSIZE components of its
2039    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2040    in bits.
2041
2042    Note that, for arrays whose index type has an XA encoding where
2043    a bound references a record discriminant, getting that discriminant,
2044    and therefore the actual value of that bound, is not possible
2045    because none of the given parameters gives us access to the record.
2046    This function assumes that it is OK in the context where it is being
2047    used to return an array whose bounds are still dynamic and where
2048    the length is arbitrary.  */
2049
2050 static struct type *
2051 constrained_packed_array_type (struct type *type, long *elt_bits)
2052 {
2053   struct type *new_elt_type;
2054   struct type *new_type;
2055   struct type *index_type_desc;
2056   struct type *index_type;
2057   LONGEST low_bound, high_bound;
2058
2059   type = ada_check_typedef (type);
2060   if (type->code () != TYPE_CODE_ARRAY)
2061     return type;
2062
2063   index_type_desc = ada_find_parallel_type (type, "___XA");
2064   if (index_type_desc)
2065     index_type = to_fixed_range_type (index_type_desc->field (0).type (),
2066                                       NULL);
2067   else
2068     index_type = type->index_type ();
2069
2070   new_type = alloc_type_copy (type);
2071   new_elt_type =
2072     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2073                                    elt_bits);
2074   create_array_type (new_type, new_elt_type, index_type);
2075   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2076   new_type->set_name (ada_type_name (type));
2077
2078   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2079        && is_dynamic_type (check_typedef (index_type)))
2080       || !get_discrete_bounds (index_type, &low_bound, &high_bound))
2081     low_bound = high_bound = 0;
2082   if (high_bound < low_bound)
2083     *elt_bits = TYPE_LENGTH (new_type) = 0;
2084   else
2085     {
2086       *elt_bits *= (high_bound - low_bound + 1);
2087       TYPE_LENGTH (new_type) =
2088         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2089     }
2090
2091   new_type->set_is_fixed_instance (true);
2092   return new_type;
2093 }
2094
2095 /* The array type encoded by TYPE, where
2096    ada_is_constrained_packed_array_type (TYPE).  */
2097
2098 static struct type *
2099 decode_constrained_packed_array_type (struct type *type)
2100 {
2101   const char *raw_name = ada_type_name (ada_check_typedef (type));
2102   char *name;
2103   const char *tail;
2104   struct type *shadow_type;
2105   long bits;
2106
2107   if (!raw_name)
2108     raw_name = ada_type_name (desc_base_type (type));
2109
2110   if (!raw_name)
2111     return NULL;
2112
2113   name = (char *) alloca (strlen (raw_name) + 1);
2114   tail = strstr (raw_name, "___XP");
2115   type = desc_base_type (type);
2116
2117   memcpy (name, raw_name, tail - raw_name);
2118   name[tail - raw_name] = '\000';
2119
2120   shadow_type = ada_find_parallel_type_with_name (type, name);
2121
2122   if (shadow_type == NULL)
2123     {
2124       lim_warning (_("could not find bounds information on packed array"));
2125       return NULL;
2126     }
2127   shadow_type = check_typedef (shadow_type);
2128
2129   if (shadow_type->code () != TYPE_CODE_ARRAY)
2130     {
2131       lim_warning (_("could not understand bounds "
2132                      "information on packed array"));
2133       return NULL;
2134     }
2135
2136   bits = decode_packed_array_bitsize (type);
2137   return constrained_packed_array_type (shadow_type, &bits);
2138 }
2139
2140 /* Helper function for decode_constrained_packed_array.  Set the field
2141    bitsize on a series of packed arrays.  Returns the number of
2142    elements in TYPE.  */
2143
2144 static LONGEST
2145 recursively_update_array_bitsize (struct type *type)
2146 {
2147   gdb_assert (type->code () == TYPE_CODE_ARRAY);
2148
2149   LONGEST low, high;
2150   if (!get_discrete_bounds (type->index_type (), &low, &high)
2151       || low > high)
2152     return 0;
2153   LONGEST our_len = high - low + 1;
2154
2155   struct type *elt_type = TYPE_TARGET_TYPE (type);
2156   if (elt_type->code () == TYPE_CODE_ARRAY)
2157     {
2158       LONGEST elt_len = recursively_update_array_bitsize (elt_type);
2159       LONGEST elt_bitsize = elt_len * TYPE_FIELD_BITSIZE (elt_type, 0);
2160       TYPE_FIELD_BITSIZE (type, 0) = elt_bitsize;
2161
2162       TYPE_LENGTH (type) = ((our_len * elt_bitsize + HOST_CHAR_BIT - 1)
2163                             / HOST_CHAR_BIT);
2164     }
2165
2166   return our_len;
2167 }
2168
2169 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2170    array, returns a simple array that denotes that array.  Its type is a
2171    standard GDB array type except that the BITSIZEs of the array
2172    target types are set to the number of bits in each element, and the
2173    type length is set appropriately.  */
2174
2175 static struct value *
2176 decode_constrained_packed_array (struct value *arr)
2177 {
2178   struct type *type;
2179
2180   /* If our value is a pointer, then dereference it. Likewise if
2181      the value is a reference.  Make sure that this operation does not
2182      cause the target type to be fixed, as this would indirectly cause
2183      this array to be decoded.  The rest of the routine assumes that
2184      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2185      and "value_ind" routines to perform the dereferencing, as opposed
2186      to using "ada_coerce_ref" or "ada_value_ind".  */
2187   arr = coerce_ref (arr);
2188   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2189     arr = value_ind (arr);
2190
2191   type = decode_constrained_packed_array_type (value_type (arr));
2192   if (type == NULL)
2193     {
2194       error (_("can't unpack array"));
2195       return NULL;
2196     }
2197
2198   /* Decoding the packed array type could not correctly set the field
2199      bitsizes for any dimension except the innermost, because the
2200      bounds may be variable and were not passed to that function.  So,
2201      we further resolve the array bounds here and then update the
2202      sizes.  */
2203   const gdb_byte *valaddr = value_contents_for_printing (arr);
2204   CORE_ADDR address = value_address (arr);
2205   gdb::array_view<const gdb_byte> view
2206     = gdb::make_array_view (valaddr, TYPE_LENGTH (type));
2207   type = resolve_dynamic_type (type, view, address);
2208   recursively_update_array_bitsize (type);
2209
2210   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2211       && ada_is_modular_type (value_type (arr)))
2212     {
2213        /* This is a (right-justified) modular type representing a packed
2214           array with no wrapper.  In order to interpret the value through
2215           the (left-justified) packed array type we just built, we must
2216           first left-justify it.  */
2217       int bit_size, bit_pos;
2218       ULONGEST mod;
2219
2220       mod = ada_modulus (value_type (arr)) - 1;
2221       bit_size = 0;
2222       while (mod > 0)
2223         {
2224           bit_size += 1;
2225           mod >>= 1;
2226         }
2227       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2228       arr = ada_value_primitive_packed_val (arr, NULL,
2229                                             bit_pos / HOST_CHAR_BIT,
2230                                             bit_pos % HOST_CHAR_BIT,
2231                                             bit_size,
2232                                             type);
2233     }
2234
2235   return coerce_unspec_val_to_type (arr, type);
2236 }
2237
2238
2239 /* The value of the element of packed array ARR at the ARITY indices
2240    given in IND.   ARR must be a simple array.  */
2241
2242 static struct value *
2243 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2244 {
2245   int i;
2246   int bits, elt_off, bit_off;
2247   long elt_total_bit_offset;
2248   struct type *elt_type;
2249   struct value *v;
2250
2251   bits = 0;
2252   elt_total_bit_offset = 0;
2253   elt_type = ada_check_typedef (value_type (arr));
2254   for (i = 0; i < arity; i += 1)
2255     {
2256       if (elt_type->code () != TYPE_CODE_ARRAY
2257           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2258         error
2259           (_("attempt to do packed indexing of "
2260              "something other than a packed array"));
2261       else
2262         {
2263           struct type *range_type = elt_type->index_type ();
2264           LONGEST lowerbound, upperbound;
2265           LONGEST idx;
2266
2267           if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
2268             {
2269               lim_warning (_("don't know bounds of array"));
2270               lowerbound = upperbound = 0;
2271             }
2272
2273           idx = pos_atr (ind[i]);
2274           if (idx < lowerbound || idx > upperbound)
2275             lim_warning (_("packed array index %ld out of bounds"),
2276                          (long) idx);
2277           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2278           elt_total_bit_offset += (idx - lowerbound) * bits;
2279           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2280         }
2281     }
2282   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2283   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2284
2285   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2286                                       bits, elt_type);
2287   return v;
2288 }
2289
2290 /* Non-zero iff TYPE includes negative integer values.  */
2291
2292 static int
2293 has_negatives (struct type *type)
2294 {
2295   switch (type->code ())
2296     {
2297     default:
2298       return 0;
2299     case TYPE_CODE_INT:
2300       return !type->is_unsigned ();
2301     case TYPE_CODE_RANGE:
2302       return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
2303     }
2304 }
2305
2306 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2307    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2308    the unpacked buffer.
2309
2310    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2311    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2312
2313    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2314    zero otherwise.
2315
2316    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2317
2318    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2319
2320 static void
2321 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2322                           gdb_byte *unpacked, int unpacked_len,
2323                           int is_big_endian, int is_signed_type,
2324                           int is_scalar)
2325 {
2326   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2327   int src_idx;                  /* Index into the source area */
2328   int src_bytes_left;           /* Number of source bytes left to process.  */
2329   int srcBitsLeft;              /* Number of source bits left to move */
2330   int unusedLS;                 /* Number of bits in next significant
2331                                    byte of source that are unused */
2332
2333   int unpacked_idx;             /* Index into the unpacked buffer */
2334   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2335
2336   unsigned long accum;          /* Staging area for bits being transferred */
2337   int accumSize;                /* Number of meaningful bits in accum */
2338   unsigned char sign;
2339
2340   /* Transmit bytes from least to most significant; delta is the direction
2341      the indices move.  */
2342   int delta = is_big_endian ? -1 : 1;
2343
2344   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2345      bits from SRC.  .*/
2346   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2347     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2348            bit_size, unpacked_len);
2349
2350   srcBitsLeft = bit_size;
2351   src_bytes_left = src_len;
2352   unpacked_bytes_left = unpacked_len;
2353   sign = 0;
2354
2355   if (is_big_endian)
2356     {
2357       src_idx = src_len - 1;
2358       if (is_signed_type
2359           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2360         sign = ~0;
2361
2362       unusedLS =
2363         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2364         % HOST_CHAR_BIT;
2365
2366       if (is_scalar)
2367         {
2368           accumSize = 0;
2369           unpacked_idx = unpacked_len - 1;
2370         }
2371       else
2372         {
2373           /* Non-scalar values must be aligned at a byte boundary...  */
2374           accumSize =
2375             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2376           /* ... And are placed at the beginning (most-significant) bytes
2377              of the target.  */
2378           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2379           unpacked_bytes_left = unpacked_idx + 1;
2380         }
2381     }
2382   else
2383     {
2384       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2385
2386       src_idx = unpacked_idx = 0;
2387       unusedLS = bit_offset;
2388       accumSize = 0;
2389
2390       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2391         sign = ~0;
2392     }
2393
2394   accum = 0;
2395   while (src_bytes_left > 0)
2396     {
2397       /* Mask for removing bits of the next source byte that are not
2398          part of the value.  */
2399       unsigned int unusedMSMask =
2400         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2401         1;
2402       /* Sign-extend bits for this byte.  */
2403       unsigned int signMask = sign & ~unusedMSMask;
2404
2405       accum |=
2406         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2407       accumSize += HOST_CHAR_BIT - unusedLS;
2408       if (accumSize >= HOST_CHAR_BIT)
2409         {
2410           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2411           accumSize -= HOST_CHAR_BIT;
2412           accum >>= HOST_CHAR_BIT;
2413           unpacked_bytes_left -= 1;
2414           unpacked_idx += delta;
2415         }
2416       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2417       unusedLS = 0;
2418       src_bytes_left -= 1;
2419       src_idx += delta;
2420     }
2421   while (unpacked_bytes_left > 0)
2422     {
2423       accum |= sign << accumSize;
2424       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2425       accumSize -= HOST_CHAR_BIT;
2426       if (accumSize < 0)
2427         accumSize = 0;
2428       accum >>= HOST_CHAR_BIT;
2429       unpacked_bytes_left -= 1;
2430       unpacked_idx += delta;
2431     }
2432 }
2433
2434 /* Create a new value of type TYPE from the contents of OBJ starting
2435    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2436    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2437    assigning through the result will set the field fetched from.
2438    VALADDR is ignored unless OBJ is NULL, in which case,
2439    VALADDR+OFFSET must address the start of storage containing the 
2440    packed value.  The value returned  in this case is never an lval.
2441    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2442
2443 struct value *
2444 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2445                                 long offset, int bit_offset, int bit_size,
2446                                 struct type *type)
2447 {
2448   struct value *v;
2449   const gdb_byte *src;                /* First byte containing data to unpack */
2450   gdb_byte *unpacked;
2451   const int is_scalar = is_scalar_type (type);
2452   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2453   gdb::byte_vector staging;
2454
2455   type = ada_check_typedef (type);
2456
2457   if (obj == NULL)
2458     src = valaddr + offset;
2459   else
2460     src = value_contents (obj) + offset;
2461
2462   if (is_dynamic_type (type))
2463     {
2464       /* The length of TYPE might by dynamic, so we need to resolve
2465          TYPE in order to know its actual size, which we then use
2466          to create the contents buffer of the value we return.
2467          The difficulty is that the data containing our object is
2468          packed, and therefore maybe not at a byte boundary.  So, what
2469          we do, is unpack the data into a byte-aligned buffer, and then
2470          use that buffer as our object's value for resolving the type.  */
2471       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2472       staging.resize (staging_len);
2473
2474       ada_unpack_from_contents (src, bit_offset, bit_size,
2475                                 staging.data (), staging.size (),
2476                                 is_big_endian, has_negatives (type),
2477                                 is_scalar);
2478       type = resolve_dynamic_type (type, staging, 0);
2479       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2480         {
2481           /* This happens when the length of the object is dynamic,
2482              and is actually smaller than the space reserved for it.
2483              For instance, in an array of variant records, the bit_size
2484              we're given is the array stride, which is constant and
2485              normally equal to the maximum size of its element.
2486              But, in reality, each element only actually spans a portion
2487              of that stride.  */
2488           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2489         }
2490     }
2491
2492   if (obj == NULL)
2493     {
2494       v = allocate_value (type);
2495       src = valaddr + offset;
2496     }
2497   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2498     {
2499       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2500       gdb_byte *buf;
2501
2502       v = value_at (type, value_address (obj) + offset);
2503       buf = (gdb_byte *) alloca (src_len);
2504       read_memory (value_address (v), buf, src_len);
2505       src = buf;
2506     }
2507   else
2508     {
2509       v = allocate_value (type);
2510       src = value_contents (obj) + offset;
2511     }
2512
2513   if (obj != NULL)
2514     {
2515       long new_offset = offset;
2516
2517       set_value_component_location (v, obj);
2518       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2519       set_value_bitsize (v, bit_size);
2520       if (value_bitpos (v) >= HOST_CHAR_BIT)
2521         {
2522           ++new_offset;
2523           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2524         }
2525       set_value_offset (v, new_offset);
2526
2527       /* Also set the parent value.  This is needed when trying to
2528          assign a new value (in inferior memory).  */
2529       set_value_parent (v, obj);
2530     }
2531   else
2532     set_value_bitsize (v, bit_size);
2533   unpacked = value_contents_writeable (v);
2534
2535   if (bit_size == 0)
2536     {
2537       memset (unpacked, 0, TYPE_LENGTH (type));
2538       return v;
2539     }
2540
2541   if (staging.size () == TYPE_LENGTH (type))
2542     {
2543       /* Small short-cut: If we've unpacked the data into a buffer
2544          of the same size as TYPE's length, then we can reuse that,
2545          instead of doing the unpacking again.  */
2546       memcpy (unpacked, staging.data (), staging.size ());
2547     }
2548   else
2549     ada_unpack_from_contents (src, bit_offset, bit_size,
2550                               unpacked, TYPE_LENGTH (type),
2551                               is_big_endian, has_negatives (type), is_scalar);
2552
2553   return v;
2554 }
2555
2556 /* Store the contents of FROMVAL into the location of TOVAL.
2557    Return a new value with the location of TOVAL and contents of
2558    FROMVAL.   Handles assignment into packed fields that have
2559    floating-point or non-scalar types.  */
2560
2561 static struct value *
2562 ada_value_assign (struct value *toval, struct value *fromval)
2563 {
2564   struct type *type = value_type (toval);
2565   int bits = value_bitsize (toval);
2566
2567   toval = ada_coerce_ref (toval);
2568   fromval = ada_coerce_ref (fromval);
2569
2570   if (ada_is_direct_array_type (value_type (toval)))
2571     toval = ada_coerce_to_simple_array (toval);
2572   if (ada_is_direct_array_type (value_type (fromval)))
2573     fromval = ada_coerce_to_simple_array (fromval);
2574
2575   if (!deprecated_value_modifiable (toval))
2576     error (_("Left operand of assignment is not a modifiable lvalue."));
2577
2578   if (VALUE_LVAL (toval) == lval_memory
2579       && bits > 0
2580       && (type->code () == TYPE_CODE_FLT
2581           || type->code () == TYPE_CODE_STRUCT))
2582     {
2583       int len = (value_bitpos (toval)
2584                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2585       int from_size;
2586       gdb_byte *buffer = (gdb_byte *) alloca (len);
2587       struct value *val;
2588       CORE_ADDR to_addr = value_address (toval);
2589
2590       if (type->code () == TYPE_CODE_FLT)
2591         fromval = value_cast (type, fromval);
2592
2593       read_memory (to_addr, buffer, len);
2594       from_size = value_bitsize (fromval);
2595       if (from_size == 0)
2596         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2597
2598       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2599       ULONGEST from_offset = 0;
2600       if (is_big_endian && is_scalar_type (value_type (fromval)))
2601         from_offset = from_size - bits;
2602       copy_bitwise (buffer, value_bitpos (toval),
2603                     value_contents (fromval), from_offset,
2604                     bits, is_big_endian);
2605       write_memory_with_notification (to_addr, buffer, len);
2606
2607       val = value_copy (toval);
2608       memcpy (value_contents_raw (val), value_contents (fromval),
2609               TYPE_LENGTH (type));
2610       deprecated_set_value_type (val, type);
2611
2612       return val;
2613     }
2614
2615   return value_assign (toval, fromval);
2616 }
2617
2618
2619 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2620    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2621    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2622    COMPONENT, and not the inferior's memory.  The current contents
2623    of COMPONENT are ignored.
2624
2625    Although not part of the initial design, this function also works
2626    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2627    had a null address, and COMPONENT had an address which is equal to
2628    its offset inside CONTAINER.  */
2629
2630 static void
2631 value_assign_to_component (struct value *container, struct value *component,
2632                            struct value *val)
2633 {
2634   LONGEST offset_in_container =
2635     (LONGEST)  (value_address (component) - value_address (container));
2636   int bit_offset_in_container =
2637     value_bitpos (component) - value_bitpos (container);
2638   int bits;
2639
2640   val = value_cast (value_type (component), val);
2641
2642   if (value_bitsize (component) == 0)
2643     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2644   else
2645     bits = value_bitsize (component);
2646
2647   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2648     {
2649       int src_offset;
2650
2651       if (is_scalar_type (check_typedef (value_type (component))))
2652         src_offset
2653           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2654       else
2655         src_offset = 0;
2656       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2657                     value_bitpos (container) + bit_offset_in_container,
2658                     value_contents (val), src_offset, bits, 1);
2659     }
2660   else
2661     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2662                   value_bitpos (container) + bit_offset_in_container,
2663                   value_contents (val), 0, bits, 0);
2664 }
2665
2666 /* Determine if TYPE is an access to an unconstrained array.  */
2667
2668 bool
2669 ada_is_access_to_unconstrained_array (struct type *type)
2670 {
2671   return (type->code () == TYPE_CODE_TYPEDEF
2672           && is_thick_pntr (ada_typedef_target_type (type)));
2673 }
2674
2675 /* The value of the element of array ARR at the ARITY indices given in IND.
2676    ARR may be either a simple array, GNAT array descriptor, or pointer
2677    thereto.  */
2678
2679 struct value *
2680 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2681 {
2682   int k;
2683   struct value *elt;
2684   struct type *elt_type;
2685
2686   elt = ada_coerce_to_simple_array (arr);
2687
2688   elt_type = ada_check_typedef (value_type (elt));
2689   if (elt_type->code () == TYPE_CODE_ARRAY
2690       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2691     return value_subscript_packed (elt, arity, ind);
2692
2693   for (k = 0; k < arity; k += 1)
2694     {
2695       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2696
2697       if (elt_type->code () != TYPE_CODE_ARRAY)
2698         error (_("too many subscripts (%d expected)"), k);
2699
2700       elt = value_subscript (elt, pos_atr (ind[k]));
2701
2702       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2703           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2704         {
2705           /* The element is a typedef to an unconstrained array,
2706              except that the value_subscript call stripped the
2707              typedef layer.  The typedef layer is GNAT's way to
2708              specify that the element is, at the source level, an
2709              access to the unconstrained array, rather than the
2710              unconstrained array.  So, we need to restore that
2711              typedef layer, which we can do by forcing the element's
2712              type back to its original type. Otherwise, the returned
2713              value is going to be printed as the array, rather
2714              than as an access.  Another symptom of the same issue
2715              would be that an expression trying to dereference the
2716              element would also be improperly rejected.  */
2717           deprecated_set_value_type (elt, saved_elt_type);
2718         }
2719
2720       elt_type = ada_check_typedef (value_type (elt));
2721     }
2722
2723   return elt;
2724 }
2725
2726 /* Assuming ARR is a pointer to a GDB array, the value of the element
2727    of *ARR at the ARITY indices given in IND.
2728    Does not read the entire array into memory.
2729
2730    Note: Unlike what one would expect, this function is used instead of
2731    ada_value_subscript for basically all non-packed array types.  The reason
2732    for this is that a side effect of doing our own pointer arithmetics instead
2733    of relying on value_subscript is that there is no implicit typedef peeling.
2734    This is important for arrays of array accesses, where it allows us to
2735    preserve the fact that the array's element is an array access, where the
2736    access part os encoded in a typedef layer.  */
2737
2738 static struct value *
2739 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2740 {
2741   int k;
2742   struct value *array_ind = ada_value_ind (arr);
2743   struct type *type
2744     = check_typedef (value_enclosing_type (array_ind));
2745
2746   if (type->code () == TYPE_CODE_ARRAY
2747       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2748     return value_subscript_packed (array_ind, arity, ind);
2749
2750   for (k = 0; k < arity; k += 1)
2751     {
2752       LONGEST lwb, upb;
2753
2754       if (type->code () != TYPE_CODE_ARRAY)
2755         error (_("too many subscripts (%d expected)"), k);
2756       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2757                         value_copy (arr));
2758       get_discrete_bounds (type->index_type (), &lwb, &upb);
2759       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2760       type = TYPE_TARGET_TYPE (type);
2761     }
2762
2763   return value_ind (arr);
2764 }
2765
2766 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2767    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2768    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2769    this array is LOW, as per Ada rules.  */
2770 static struct value *
2771 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2772                           int low, int high)
2773 {
2774   struct type *type0 = ada_check_typedef (type);
2775   struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2776   struct type *index_type
2777     = create_static_range_type (NULL, base_index_type, low, high);
2778   struct type *slice_type = create_array_type_with_stride
2779                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2780                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2781                                TYPE_FIELD_BITSIZE (type0, 0));
2782   int base_low =  ada_discrete_type_low_bound (type0->index_type ());
2783   gdb::optional<LONGEST> base_low_pos, low_pos;
2784   CORE_ADDR base;
2785
2786   low_pos = discrete_position (base_index_type, low);
2787   base_low_pos = discrete_position (base_index_type, base_low);
2788
2789   if (!low_pos.has_value () || !base_low_pos.has_value ())
2790     {
2791       warning (_("unable to get positions in slice, use bounds instead"));
2792       low_pos = low;
2793       base_low_pos = base_low;
2794     }
2795
2796   ULONGEST stride = TYPE_FIELD_BITSIZE (slice_type, 0) / 8;
2797   if (stride == 0)
2798     stride = TYPE_LENGTH (TYPE_TARGET_TYPE (type0));
2799
2800   base = value_as_address (array_ptr) + (*low_pos - *base_low_pos) * stride;
2801   return value_at_lazy (slice_type, base);
2802 }
2803
2804
2805 static struct value *
2806 ada_value_slice (struct value *array, int low, int high)
2807 {
2808   struct type *type = ada_check_typedef (value_type (array));
2809   struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
2810   struct type *index_type
2811     = create_static_range_type (NULL, type->index_type (), low, high);
2812   struct type *slice_type = create_array_type_with_stride
2813                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2814                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2815                                TYPE_FIELD_BITSIZE (type, 0));
2816   gdb::optional<LONGEST> low_pos, high_pos;
2817
2818
2819   low_pos = discrete_position (base_index_type, low);
2820   high_pos = discrete_position (base_index_type, high);
2821
2822   if (!low_pos.has_value () || !high_pos.has_value ())
2823     {
2824       warning (_("unable to get positions in slice, use bounds instead"));
2825       low_pos = low;
2826       high_pos = high;
2827     }
2828
2829   return value_cast (slice_type,
2830                      value_slice (array, low, *high_pos - *low_pos + 1));
2831 }
2832
2833 /* If type is a record type in the form of a standard GNAT array
2834    descriptor, returns the number of dimensions for type.  If arr is a
2835    simple array, returns the number of "array of"s that prefix its
2836    type designation.  Otherwise, returns 0.  */
2837
2838 int
2839 ada_array_arity (struct type *type)
2840 {
2841   int arity;
2842
2843   if (type == NULL)
2844     return 0;
2845
2846   type = desc_base_type (type);
2847
2848   arity = 0;
2849   if (type->code () == TYPE_CODE_STRUCT)
2850     return desc_arity (desc_bounds_type (type));
2851   else
2852     while (type->code () == TYPE_CODE_ARRAY)
2853       {
2854         arity += 1;
2855         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2856       }
2857
2858   return arity;
2859 }
2860
2861 /* If TYPE is a record type in the form of a standard GNAT array
2862    descriptor or a simple array type, returns the element type for
2863    TYPE after indexing by NINDICES indices, or by all indices if
2864    NINDICES is -1.  Otherwise, returns NULL.  */
2865
2866 struct type *
2867 ada_array_element_type (struct type *type, int nindices)
2868 {
2869   type = desc_base_type (type);
2870
2871   if (type->code () == TYPE_CODE_STRUCT)
2872     {
2873       int k;
2874       struct type *p_array_type;
2875
2876       p_array_type = desc_data_target_type (type);
2877
2878       k = ada_array_arity (type);
2879       if (k == 0)
2880         return NULL;
2881
2882       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2883       if (nindices >= 0 && k > nindices)
2884         k = nindices;
2885       while (k > 0 && p_array_type != NULL)
2886         {
2887           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2888           k -= 1;
2889         }
2890       return p_array_type;
2891     }
2892   else if (type->code () == TYPE_CODE_ARRAY)
2893     {
2894       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2895         {
2896           type = TYPE_TARGET_TYPE (type);
2897           nindices -= 1;
2898         }
2899       return type;
2900     }
2901
2902   return NULL;
2903 }
2904
2905 /* See ada-lang.h.  */
2906
2907 struct type *
2908 ada_index_type (struct type *type, int n, const char *name)
2909 {
2910   struct type *result_type;
2911
2912   type = desc_base_type (type);
2913
2914   if (n < 0 || n > ada_array_arity (type))
2915     error (_("invalid dimension number to '%s"), name);
2916
2917   if (ada_is_simple_array_type (type))
2918     {
2919       int i;
2920
2921       for (i = 1; i < n; i += 1)
2922         {
2923           type = ada_check_typedef (type);
2924           type = TYPE_TARGET_TYPE (type);
2925         }
2926       result_type = TYPE_TARGET_TYPE (ada_check_typedef (type)->index_type ());
2927       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2928          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2929          perhaps stabsread.c would make more sense.  */
2930       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2931         result_type = NULL;
2932     }
2933   else
2934     {
2935       result_type = desc_index_type (desc_bounds_type (type), n);
2936       if (result_type == NULL)
2937         error (_("attempt to take bound of something that is not an array"));
2938     }
2939
2940   return result_type;
2941 }
2942
2943 /* Given that arr is an array type, returns the lower bound of the
2944    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2945    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2946    array-descriptor type.  It works for other arrays with bounds supplied
2947    by run-time quantities other than discriminants.  */
2948
2949 static LONGEST
2950 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2951 {
2952   struct type *type, *index_type_desc, *index_type;
2953   int i;
2954
2955   gdb_assert (which == 0 || which == 1);
2956
2957   if (ada_is_constrained_packed_array_type (arr_type))
2958     arr_type = decode_constrained_packed_array_type (arr_type);
2959
2960   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2961     return (LONGEST) - which;
2962
2963   if (arr_type->code () == TYPE_CODE_PTR)
2964     type = TYPE_TARGET_TYPE (arr_type);
2965   else
2966     type = arr_type;
2967
2968   if (type->is_fixed_instance ())
2969     {
2970       /* The array has already been fixed, so we do not need to
2971          check the parallel ___XA type again.  That encoding has
2972          already been applied, so ignore it now.  */
2973       index_type_desc = NULL;
2974     }
2975   else
2976     {
2977       index_type_desc = ada_find_parallel_type (type, "___XA");
2978       ada_fixup_array_indexes_type (index_type_desc);
2979     }
2980
2981   if (index_type_desc != NULL)
2982     index_type = to_fixed_range_type (index_type_desc->field (n - 1).type (),
2983                                       NULL);
2984   else
2985     {
2986       struct type *elt_type = check_typedef (type);
2987
2988       for (i = 1; i < n; i++)
2989         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2990
2991       index_type = elt_type->index_type ();
2992     }
2993
2994   return
2995     (LONGEST) (which == 0
2996                ? ada_discrete_type_low_bound (index_type)
2997                : ada_discrete_type_high_bound (index_type));
2998 }
2999
3000 /* Given that arr is an array value, returns the lower bound of the
3001    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3002    WHICH is 1.  This routine will also work for arrays with bounds
3003    supplied by run-time quantities other than discriminants.  */
3004
3005 static LONGEST
3006 ada_array_bound (struct value *arr, int n, int which)
3007 {
3008   struct type *arr_type;
3009
3010   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3011     arr = value_ind (arr);
3012   arr_type = value_enclosing_type (arr);
3013
3014   if (ada_is_constrained_packed_array_type (arr_type))
3015     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3016   else if (ada_is_simple_array_type (arr_type))
3017     return ada_array_bound_from_type (arr_type, n, which);
3018   else
3019     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3020 }
3021
3022 /* Given that arr is an array value, returns the length of the
3023    nth index.  This routine will also work for arrays with bounds
3024    supplied by run-time quantities other than discriminants.
3025    Does not work for arrays indexed by enumeration types with representation
3026    clauses at the moment.  */
3027
3028 static LONGEST
3029 ada_array_length (struct value *arr, int n)
3030 {
3031   struct type *arr_type, *index_type;
3032   int low, high;
3033
3034   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3035     arr = value_ind (arr);
3036   arr_type = value_enclosing_type (arr);
3037
3038   if (ada_is_constrained_packed_array_type (arr_type))
3039     return ada_array_length (decode_constrained_packed_array (arr), n);
3040
3041   if (ada_is_simple_array_type (arr_type))
3042     {
3043       low = ada_array_bound_from_type (arr_type, n, 0);
3044       high = ada_array_bound_from_type (arr_type, n, 1);
3045     }
3046   else
3047     {
3048       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3049       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3050     }
3051
3052   arr_type = check_typedef (arr_type);
3053   index_type = ada_index_type (arr_type, n, "length");
3054   if (index_type != NULL)
3055     {
3056       struct type *base_type;
3057       if (index_type->code () == TYPE_CODE_RANGE)
3058         base_type = TYPE_TARGET_TYPE (index_type);
3059       else
3060         base_type = index_type;
3061
3062       low = pos_atr (value_from_longest (base_type, low));
3063       high = pos_atr (value_from_longest (base_type, high));
3064     }
3065   return high - low + 1;
3066 }
3067
3068 /* An array whose type is that of ARR_TYPE (an array type), with
3069    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3070    less than LOW, then LOW-1 is used.  */
3071
3072 static struct value *
3073 empty_array (struct type *arr_type, int low, int high)
3074 {
3075   struct type *arr_type0 = ada_check_typedef (arr_type);
3076   struct type *index_type
3077     = create_static_range_type
3078         (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
3079          high < low ? low - 1 : high);
3080   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3081
3082   return allocate_value (create_array_type (NULL, elt_type, index_type));
3083 }
3084 \f
3085
3086                                 /* Name resolution */
3087
3088 /* The "decoded" name for the user-definable Ada operator corresponding
3089    to OP.  */
3090
3091 static const char *
3092 ada_decoded_op_name (enum exp_opcode op)
3093 {
3094   int i;
3095
3096   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3097     {
3098       if (ada_opname_table[i].op == op)
3099         return ada_opname_table[i].decoded;
3100     }
3101   error (_("Could not find operator name for opcode"));
3102 }
3103
3104 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3105    in a listing of choices during disambiguation (see sort_choices, below).
3106    The idea is that overloadings of a subprogram name from the
3107    same package should sort in their source order.  We settle for ordering
3108    such symbols by their trailing number (__N  or $N).  */
3109
3110 static int
3111 encoded_ordered_before (const char *N0, const char *N1)
3112 {
3113   if (N1 == NULL)
3114     return 0;
3115   else if (N0 == NULL)
3116     return 1;
3117   else
3118     {
3119       int k0, k1;
3120
3121       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3122         ;
3123       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3124         ;
3125       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3126           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3127         {
3128           int n0, n1;
3129
3130           n0 = k0;
3131           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3132             n0 -= 1;
3133           n1 = k1;
3134           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3135             n1 -= 1;
3136           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3137             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3138         }
3139       return (strcmp (N0, N1) < 0);
3140     }
3141 }
3142
3143 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3144    encoded names.  */
3145
3146 static void
3147 sort_choices (struct block_symbol syms[], int nsyms)
3148 {
3149   int i;
3150
3151   for (i = 1; i < nsyms; i += 1)
3152     {
3153       struct block_symbol sym = syms[i];
3154       int j;
3155
3156       for (j = i - 1; j >= 0; j -= 1)
3157         {
3158           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3159                                       sym.symbol->linkage_name ()))
3160             break;
3161           syms[j + 1] = syms[j];
3162         }
3163       syms[j + 1] = sym;
3164     }
3165 }
3166
3167 /* Whether GDB should display formals and return types for functions in the
3168    overloads selection menu.  */
3169 static bool print_signatures = true;
3170
3171 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3172    all but functions, the signature is just the name of the symbol.  For
3173    functions, this is the name of the function, the list of types for formals
3174    and the return type (if any).  */
3175
3176 static void
3177 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3178                             const struct type_print_options *flags)
3179 {
3180   struct type *type = SYMBOL_TYPE (sym);
3181
3182   fprintf_filtered (stream, "%s", sym->print_name ());
3183   if (!print_signatures
3184       || type == NULL
3185       || type->code () != TYPE_CODE_FUNC)
3186     return;
3187
3188   if (type->num_fields () > 0)
3189     {
3190       int i;
3191
3192       fprintf_filtered (stream, " (");
3193       for (i = 0; i < type->num_fields (); ++i)
3194         {
3195           if (i > 0)
3196             fprintf_filtered (stream, "; ");
3197           ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
3198                           flags);
3199         }
3200       fprintf_filtered (stream, ")");
3201     }
3202   if (TYPE_TARGET_TYPE (type) != NULL
3203       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3204     {
3205       fprintf_filtered (stream, " return ");
3206       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3207     }
3208 }
3209
3210 /* Read and validate a set of numeric choices from the user in the
3211    range 0 .. N_CHOICES-1.  Place the results in increasing
3212    order in CHOICES[0 .. N-1], and return N.
3213
3214    The user types choices as a sequence of numbers on one line
3215    separated by blanks, encoding them as follows:
3216
3217      + A choice of 0 means to cancel the selection, throwing an error.
3218      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3219      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3220
3221    The user is not allowed to choose more than MAX_RESULTS values.
3222
3223    ANNOTATION_SUFFIX, if present, is used to annotate the input
3224    prompts (for use with the -f switch).  */
3225
3226 static int
3227 get_selections (int *choices, int n_choices, int max_results,
3228                 int is_all_choice, const char *annotation_suffix)
3229 {
3230   const char *args;
3231   const char *prompt;
3232   int n_chosen;
3233   int first_choice = is_all_choice ? 2 : 1;
3234
3235   prompt = getenv ("PS2");
3236   if (prompt == NULL)
3237     prompt = "> ";
3238
3239   args = command_line_input (prompt, annotation_suffix);
3240
3241   if (args == NULL)
3242     error_no_arg (_("one or more choice numbers"));
3243
3244   n_chosen = 0;
3245
3246   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3247      order, as given in args.  Choices are validated.  */
3248   while (1)
3249     {
3250       char *args2;
3251       int choice, j;
3252
3253       args = skip_spaces (args);
3254       if (*args == '\0' && n_chosen == 0)
3255         error_no_arg (_("one or more choice numbers"));
3256       else if (*args == '\0')
3257         break;
3258
3259       choice = strtol (args, &args2, 10);
3260       if (args == args2 || choice < 0
3261           || choice > n_choices + first_choice - 1)
3262         error (_("Argument must be choice number"));
3263       args = args2;
3264
3265       if (choice == 0)
3266         error (_("cancelled"));
3267
3268       if (choice < first_choice)
3269         {
3270           n_chosen = n_choices;
3271           for (j = 0; j < n_choices; j += 1)
3272             choices[j] = j;
3273           break;
3274         }
3275       choice -= first_choice;
3276
3277       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3278         {
3279         }
3280
3281       if (j < 0 || choice != choices[j])
3282         {
3283           int k;
3284
3285           for (k = n_chosen - 1; k > j; k -= 1)
3286             choices[k + 1] = choices[k];
3287           choices[j + 1] = choice;
3288           n_chosen += 1;
3289         }
3290     }
3291
3292   if (n_chosen > max_results)
3293     error (_("Select no more than %d of the above"), max_results);
3294
3295   return n_chosen;
3296 }
3297
3298 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3299    by asking the user (if necessary), returning the number selected,
3300    and setting the first elements of SYMS items.  Error if no symbols
3301    selected.  */
3302
3303 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3304    to be re-integrated one of these days.  */
3305
3306 static int
3307 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3308 {
3309   int i;
3310   int *chosen = XALLOCAVEC (int , nsyms);
3311   int n_chosen;
3312   int first_choice = (max_results == 1) ? 1 : 2;
3313   const char *select_mode = multiple_symbols_select_mode ();
3314
3315   if (max_results < 1)
3316     error (_("Request to select 0 symbols!"));
3317   if (nsyms <= 1)
3318     return nsyms;
3319
3320   if (select_mode == multiple_symbols_cancel)
3321     error (_("\
3322 canceled because the command is ambiguous\n\
3323 See set/show multiple-symbol."));
3324
3325   /* If select_mode is "all", then return all possible symbols.
3326      Only do that if more than one symbol can be selected, of course.
3327      Otherwise, display the menu as usual.  */
3328   if (select_mode == multiple_symbols_all && max_results > 1)
3329     return nsyms;
3330
3331   printf_filtered (_("[0] cancel\n"));
3332   if (max_results > 1)
3333     printf_filtered (_("[1] all\n"));
3334
3335   sort_choices (syms, nsyms);
3336
3337   for (i = 0; i < nsyms; i += 1)
3338     {
3339       if (syms[i].symbol == NULL)
3340         continue;
3341
3342       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3343         {
3344           struct symtab_and_line sal =
3345             find_function_start_sal (syms[i].symbol, 1);
3346
3347           printf_filtered ("[%d] ", i + first_choice);
3348           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3349                                       &type_print_raw_options);
3350           if (sal.symtab == NULL)
3351             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3352                              metadata_style.style ().ptr (), nullptr, sal.line);
3353           else
3354             printf_filtered
3355               (_(" at %ps:%d\n"),
3356                styled_string (file_name_style.style (),
3357                               symtab_to_filename_for_display (sal.symtab)),
3358                sal.line);
3359           continue;
3360         }
3361       else
3362         {
3363           int is_enumeral =
3364             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3365              && SYMBOL_TYPE (syms[i].symbol) != NULL
3366              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3367           struct symtab *symtab = NULL;
3368
3369           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3370             symtab = symbol_symtab (syms[i].symbol);
3371
3372           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3373             {
3374               printf_filtered ("[%d] ", i + first_choice);
3375               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3376                                           &type_print_raw_options);
3377               printf_filtered (_(" at %s:%d\n"),
3378                                symtab_to_filename_for_display (symtab),
3379                                SYMBOL_LINE (syms[i].symbol));
3380             }
3381           else if (is_enumeral
3382                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3383             {
3384               printf_filtered (("[%d] "), i + first_choice);
3385               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3386                               gdb_stdout, -1, 0, &type_print_raw_options);
3387               printf_filtered (_("'(%s) (enumeral)\n"),
3388                                syms[i].symbol->print_name ());
3389             }
3390           else
3391             {
3392               printf_filtered ("[%d] ", i + first_choice);
3393               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3394                                           &type_print_raw_options);
3395
3396               if (symtab != NULL)
3397                 printf_filtered (is_enumeral
3398                                  ? _(" in %s (enumeral)\n")
3399                                  : _(" at %s:?\n"),
3400                                  symtab_to_filename_for_display (symtab));
3401               else
3402                 printf_filtered (is_enumeral
3403                                  ? _(" (enumeral)\n")
3404                                  : _(" at ?\n"));
3405             }
3406         }
3407     }
3408
3409   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3410                              "overload-choice");
3411
3412   for (i = 0; i < n_chosen; i += 1)
3413     syms[i] = syms[chosen[i]];
3414
3415   return n_chosen;
3416 }
3417
3418 /* See ada-lang.h.  */
3419
3420 block_symbol
3421 ada_find_operator_symbol (enum exp_opcode op, bool parse_completion,
3422                           int nargs, value *argvec[])
3423 {
3424   if (possible_user_operator_p (op, argvec))
3425     {
3426       std::vector<struct block_symbol> candidates
3427         = ada_lookup_symbol_list (ada_decoded_op_name (op),
3428                                   NULL, VAR_DOMAIN);
3429
3430       int i = ada_resolve_function (candidates, argvec,
3431                                     nargs, ada_decoded_op_name (op), NULL,
3432                                     parse_completion);
3433       if (i >= 0)
3434         return candidates[i];
3435     }
3436   return {};
3437 }
3438
3439 /* See ada-lang.h.  */
3440
3441 block_symbol
3442 ada_resolve_funcall (struct symbol *sym, const struct block *block,
3443                      struct type *context_type,
3444                      bool parse_completion,
3445                      int nargs, value *argvec[],
3446                      innermost_block_tracker *tracker)
3447 {
3448   std::vector<struct block_symbol> candidates
3449     = ada_lookup_symbol_list (sym->linkage_name (), block, VAR_DOMAIN);
3450
3451   int i;
3452   if (candidates.size () == 1)
3453     i = 0;
3454   else
3455     {
3456       i = ada_resolve_function
3457         (candidates,
3458          argvec, nargs,
3459          sym->linkage_name (),
3460          context_type, parse_completion);
3461       if (i < 0)
3462         error (_("Could not find a match for %s"), sym->print_name ());
3463     }
3464
3465   tracker->update (candidates[i]);
3466   return candidates[i];
3467 }
3468
3469 /* Resolve a mention of a name where the context type is an
3470    enumeration type.  */
3471
3472 static int
3473 ada_resolve_enum (std::vector<struct block_symbol> &syms,
3474                   const char *name, struct type *context_type,
3475                   bool parse_completion)
3476 {
3477   gdb_assert (context_type->code () == TYPE_CODE_ENUM);
3478   context_type = ada_check_typedef (context_type);
3479
3480   for (int i = 0; i < syms.size (); ++i)
3481     {
3482       /* We already know the name matches, so we're just looking for
3483          an element of the correct enum type.  */
3484       if (ada_check_typedef (SYMBOL_TYPE (syms[i].symbol)) == context_type)
3485         return i;
3486     }
3487
3488   error (_("No name '%s' in enumeration type '%s'"), name,
3489          ada_type_name (context_type));
3490 }
3491
3492 /* See ada-lang.h.  */
3493
3494 block_symbol
3495 ada_resolve_variable (struct symbol *sym, const struct block *block,
3496                       struct type *context_type,
3497                       bool parse_completion,
3498                       int deprocedure_p,
3499                       innermost_block_tracker *tracker)
3500 {
3501   std::vector<struct block_symbol> candidates
3502     = ada_lookup_symbol_list (sym->linkage_name (), block, VAR_DOMAIN);
3503
3504   if (std::any_of (candidates.begin (),
3505                    candidates.end (),
3506                    [] (block_symbol &bsym)
3507                    {
3508                      switch (SYMBOL_CLASS (bsym.symbol))
3509                        {
3510                        case LOC_REGISTER:
3511                        case LOC_ARG:
3512                        case LOC_REF_ARG:
3513                        case LOC_REGPARM_ADDR:
3514                        case LOC_LOCAL:
3515                        case LOC_COMPUTED:
3516                          return true;
3517                        default:
3518                          return false;
3519                        }
3520                    }))
3521     {
3522       /* Types tend to get re-introduced locally, so if there
3523          are any local symbols that are not types, first filter
3524          out all types.  */
3525       candidates.erase
3526         (std::remove_if
3527          (candidates.begin (),
3528           candidates.end (),
3529           [] (block_symbol &bsym)
3530           {
3531             return SYMBOL_CLASS (bsym.symbol) == LOC_TYPEDEF;
3532           }),
3533          candidates.end ());
3534     }
3535
3536   /* Filter out artificial symbols.  */
3537   candidates.erase
3538     (std::remove_if
3539      (candidates.begin (),
3540       candidates.end (),
3541       [] (block_symbol &bsym)
3542       {
3543        return bsym.symbol->artificial;
3544       }),
3545      candidates.end ());
3546
3547   int i;
3548   if (candidates.empty ())
3549     error (_("No definition found for %s"), sym->print_name ());
3550   else if (candidates.size () == 1)
3551     i = 0;
3552   else if (context_type != nullptr
3553            && context_type->code () == TYPE_CODE_ENUM)
3554     i = ada_resolve_enum (candidates, sym->linkage_name (), context_type,
3555                           parse_completion);
3556   else if (deprocedure_p && !is_nonfunction (candidates))
3557     {
3558       i = ada_resolve_function
3559         (candidates, NULL, 0,
3560          sym->linkage_name (),
3561          context_type, parse_completion);
3562       if (i < 0)
3563         error (_("Could not find a match for %s"), sym->print_name ());
3564     }
3565   else
3566     {
3567       printf_filtered (_("Multiple matches for %s\n"), sym->print_name ());
3568       user_select_syms (candidates.data (), candidates.size (), 1);
3569       i = 0;
3570     }
3571
3572   tracker->update (candidates[i]);
3573   return candidates[i];
3574 }
3575
3576 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  */
3577 /* The term "match" here is rather loose.  The match is heuristic and
3578    liberal.  */
3579
3580 static int
3581 ada_type_match (struct type *ftype, struct type *atype)
3582 {
3583   ftype = ada_check_typedef (ftype);
3584   atype = ada_check_typedef (atype);
3585
3586   if (ftype->code () == TYPE_CODE_REF)
3587     ftype = TYPE_TARGET_TYPE (ftype);
3588   if (atype->code () == TYPE_CODE_REF)
3589     atype = TYPE_TARGET_TYPE (atype);
3590
3591   switch (ftype->code ())
3592     {
3593     default:
3594       return ftype->code () == atype->code ();
3595     case TYPE_CODE_PTR:
3596       if (atype->code () != TYPE_CODE_PTR)
3597         return 0;
3598       atype = TYPE_TARGET_TYPE (atype);
3599       /* This can only happen if the actual argument is 'null'.  */
3600       if (atype->code () == TYPE_CODE_INT && TYPE_LENGTH (atype) == 0)
3601         return 1;
3602       return ada_type_match (TYPE_TARGET_TYPE (ftype), atype);
3603     case TYPE_CODE_INT:
3604     case TYPE_CODE_ENUM:
3605     case TYPE_CODE_RANGE:
3606       switch (atype->code ())
3607         {
3608         case TYPE_CODE_INT:
3609         case TYPE_CODE_ENUM:
3610         case TYPE_CODE_RANGE:
3611           return 1;
3612         default:
3613           return 0;
3614         }
3615
3616     case TYPE_CODE_ARRAY:
3617       return (atype->code () == TYPE_CODE_ARRAY
3618               || ada_is_array_descriptor_type (atype));
3619
3620     case TYPE_CODE_STRUCT:
3621       if (ada_is_array_descriptor_type (ftype))
3622         return (atype->code () == TYPE_CODE_ARRAY
3623                 || ada_is_array_descriptor_type (atype));
3624       else
3625         return (atype->code () == TYPE_CODE_STRUCT
3626                 && !ada_is_array_descriptor_type (atype));
3627
3628     case TYPE_CODE_UNION:
3629     case TYPE_CODE_FLT:
3630       return (atype->code () == ftype->code ());
3631     }
3632 }
3633
3634 /* Return non-zero if the formals of FUNC "sufficiently match" the
3635    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3636    may also be an enumeral, in which case it is treated as a 0-
3637    argument function.  */
3638
3639 static int
3640 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3641 {
3642   int i;
3643   struct type *func_type = SYMBOL_TYPE (func);
3644
3645   if (SYMBOL_CLASS (func) == LOC_CONST
3646       && func_type->code () == TYPE_CODE_ENUM)
3647     return (n_actuals == 0);
3648   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3649     return 0;
3650
3651   if (func_type->num_fields () != n_actuals)
3652     return 0;
3653
3654   for (i = 0; i < n_actuals; i += 1)
3655     {
3656       if (actuals[i] == NULL)
3657         return 0;
3658       else
3659         {
3660           struct type *ftype = ada_check_typedef (func_type->field (i).type ());
3661           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3662
3663           if (!ada_type_match (ftype, atype))
3664             return 0;
3665         }
3666     }
3667   return 1;
3668 }
3669
3670 /* False iff function type FUNC_TYPE definitely does not produce a value
3671    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3672    FUNC_TYPE is not a valid function type with a non-null return type
3673    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3674
3675 static int
3676 return_match (struct type *func_type, struct type *context_type)
3677 {
3678   struct type *return_type;
3679
3680   if (func_type == NULL)
3681     return 1;
3682
3683   if (func_type->code () == TYPE_CODE_FUNC)
3684     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3685   else
3686     return_type = get_base_type (func_type);
3687   if (return_type == NULL)
3688     return 1;
3689
3690   context_type = get_base_type (context_type);
3691
3692   if (return_type->code () == TYPE_CODE_ENUM)
3693     return context_type == NULL || return_type == context_type;
3694   else if (context_type == NULL)
3695     return return_type->code () != TYPE_CODE_VOID;
3696   else
3697     return return_type->code () == context_type->code ();
3698 }
3699
3700
3701 /* Returns the index in SYMS that contains the symbol for the
3702    function (if any) that matches the types of the NARGS arguments in
3703    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3704    that returns that type, then eliminate matches that don't.  If
3705    CONTEXT_TYPE is void and there is at least one match that does not
3706    return void, eliminate all matches that do.
3707
3708    Asks the user if there is more than one match remaining.  Returns -1
3709    if there is no such symbol or none is selected.  NAME is used
3710    solely for messages.  May re-arrange and modify SYMS in
3711    the process; the index returned is for the modified vector.  */
3712
3713 static int
3714 ada_resolve_function (std::vector<struct block_symbol> &syms,
3715                       struct value **args, int nargs,
3716                       const char *name, struct type *context_type,
3717                       bool parse_completion)
3718 {
3719   int fallback;
3720   int k;
3721   int m;                        /* Number of hits */
3722
3723   m = 0;
3724   /* In the first pass of the loop, we only accept functions matching
3725      context_type.  If none are found, we add a second pass of the loop
3726      where every function is accepted.  */
3727   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3728     {
3729       for (k = 0; k < syms.size (); k += 1)
3730         {
3731           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3732
3733           if (ada_args_match (syms[k].symbol, args, nargs)
3734               && (fallback || return_match (type, context_type)))
3735             {
3736               syms[m] = syms[k];
3737               m += 1;
3738             }
3739         }
3740     }
3741
3742   /* If we got multiple matches, ask the user which one to use.  Don't do this
3743      interactive thing during completion, though, as the purpose of the
3744      completion is providing a list of all possible matches.  Prompting the
3745      user to filter it down would be completely unexpected in this case.  */
3746   if (m == 0)
3747     return -1;
3748   else if (m > 1 && !parse_completion)
3749     {
3750       printf_filtered (_("Multiple matches for %s\n"), name);
3751       user_select_syms (syms.data (), m, 1);
3752       return 0;
3753     }
3754   return 0;
3755 }
3756
3757 /* Type-class predicates */
3758
3759 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3760    or FLOAT).  */
3761
3762 static int
3763 numeric_type_p (struct type *type)
3764 {
3765   if (type == NULL)
3766     return 0;
3767   else
3768     {
3769       switch (type->code ())
3770         {
3771         case TYPE_CODE_INT:
3772         case TYPE_CODE_FLT:
3773         case TYPE_CODE_FIXED_POINT:
3774           return 1;
3775         case TYPE_CODE_RANGE:
3776           return (type == TYPE_TARGET_TYPE (type)
3777                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
3778         default:
3779           return 0;
3780         }
3781     }
3782 }
3783
3784 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
3785
3786 static int
3787 integer_type_p (struct type *type)
3788 {
3789   if (type == NULL)
3790     return 0;
3791   else
3792     {
3793       switch (type->code ())
3794         {
3795         case TYPE_CODE_INT:
3796           return 1;
3797         case TYPE_CODE_RANGE:
3798           return (type == TYPE_TARGET_TYPE (type)
3799                   || integer_type_p (TYPE_TARGET_TYPE (type)));
3800         default:
3801           return 0;
3802         }
3803     }
3804 }
3805
3806 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
3807
3808 static int
3809 scalar_type_p (struct type *type)
3810 {
3811   if (type == NULL)
3812     return 0;
3813   else
3814     {
3815       switch (type->code ())
3816         {
3817         case TYPE_CODE_INT:
3818         case TYPE_CODE_RANGE:
3819         case TYPE_CODE_ENUM:
3820         case TYPE_CODE_FLT:
3821         case TYPE_CODE_FIXED_POINT:
3822           return 1;
3823         default:
3824           return 0;
3825         }
3826     }
3827 }
3828
3829 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
3830
3831 static int
3832 discrete_type_p (struct type *type)
3833 {
3834   if (type == NULL)
3835     return 0;
3836   else
3837     {
3838       switch (type->code ())
3839         {
3840         case TYPE_CODE_INT:
3841         case TYPE_CODE_RANGE:
3842         case TYPE_CODE_ENUM:
3843         case TYPE_CODE_BOOL:
3844           return 1;
3845         default:
3846           return 0;
3847         }
3848     }
3849 }
3850
3851 /* Returns non-zero if OP with operands in the vector ARGS could be
3852    a user-defined function.  Errs on the side of pre-defined operators
3853    (i.e., result 0).  */
3854
3855 static int
3856 possible_user_operator_p (enum exp_opcode op, struct value *args[])
3857 {
3858   struct type *type0 =
3859     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
3860   struct type *type1 =
3861     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
3862
3863   if (type0 == NULL)
3864     return 0;
3865
3866   switch (op)
3867     {
3868     default:
3869       return 0;
3870
3871     case BINOP_ADD:
3872     case BINOP_SUB:
3873     case BINOP_MUL:
3874     case BINOP_DIV:
3875       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
3876
3877     case BINOP_REM:
3878     case BINOP_MOD:
3879     case BINOP_BITWISE_AND:
3880     case BINOP_BITWISE_IOR:
3881     case BINOP_BITWISE_XOR:
3882       return (!(integer_type_p (type0) && integer_type_p (type1)));
3883
3884     case BINOP_EQUAL:
3885     case BINOP_NOTEQUAL:
3886     case BINOP_LESS:
3887     case BINOP_GTR:
3888     case BINOP_LEQ:
3889     case BINOP_GEQ:
3890       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
3891
3892     case BINOP_CONCAT:
3893       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
3894
3895     case BINOP_EXP:
3896       return (!(numeric_type_p (type0) && integer_type_p (type1)));
3897
3898     case UNOP_NEG:
3899     case UNOP_PLUS:
3900     case UNOP_LOGICAL_NOT:
3901     case UNOP_ABS:
3902       return (!numeric_type_p (type0));
3903
3904     }
3905 }
3906 \f
3907                                 /* Renaming */
3908
3909 /* NOTES: 
3910
3911    1. In the following, we assume that a renaming type's name may
3912       have an ___XD suffix.  It would be nice if this went away at some
3913       point.
3914    2. We handle both the (old) purely type-based representation of 
3915       renamings and the (new) variable-based encoding.  At some point,
3916       it is devoutly to be hoped that the former goes away 
3917       (FIXME: hilfinger-2007-07-09).
3918    3. Subprogram renamings are not implemented, although the XRS
3919       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
3920
3921 /* If SYM encodes a renaming, 
3922
3923        <renaming> renames <renamed entity>,
3924
3925    sets *LEN to the length of the renamed entity's name,
3926    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
3927    the string describing the subcomponent selected from the renamed
3928    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
3929    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
3930    are undefined).  Otherwise, returns a value indicating the category
3931    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
3932    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
3933    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
3934    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
3935    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
3936    may be NULL, in which case they are not assigned.
3937
3938    [Currently, however, GCC does not generate subprogram renamings.]  */
3939
3940 enum ada_renaming_category
3941 ada_parse_renaming (struct symbol *sym,
3942                     const char **renamed_entity, int *len, 
3943                     const char **renaming_expr)
3944 {
3945   enum ada_renaming_category kind;
3946   const char *info;
3947   const char *suffix;
3948
3949   if (sym == NULL)
3950     return ADA_NOT_RENAMING;
3951   switch (SYMBOL_CLASS (sym)) 
3952     {
3953     default:
3954       return ADA_NOT_RENAMING;
3955     case LOC_LOCAL:
3956     case LOC_STATIC:
3957     case LOC_COMPUTED:
3958     case LOC_OPTIMIZED_OUT:
3959       info = strstr (sym->linkage_name (), "___XR");
3960       if (info == NULL)
3961         return ADA_NOT_RENAMING;
3962       switch (info[5])
3963         {
3964         case '_':
3965           kind = ADA_OBJECT_RENAMING;
3966           info += 6;
3967           break;
3968         case 'E':
3969           kind = ADA_EXCEPTION_RENAMING;
3970           info += 7;
3971           break;
3972         case 'P':
3973           kind = ADA_PACKAGE_RENAMING;
3974           info += 7;
3975           break;
3976         case 'S':
3977           kind = ADA_SUBPROGRAM_RENAMING;
3978           info += 7;
3979           break;
3980         default:
3981           return ADA_NOT_RENAMING;
3982         }
3983     }
3984
3985   if (renamed_entity != NULL)
3986     *renamed_entity = info;
3987   suffix = strstr (info, "___XE");
3988   if (suffix == NULL || suffix == info)
3989     return ADA_NOT_RENAMING;
3990   if (len != NULL)
3991     *len = strlen (info) - strlen (suffix);
3992   suffix += 5;
3993   if (renaming_expr != NULL)
3994     *renaming_expr = suffix;
3995   return kind;
3996 }
3997
3998 /* Compute the value of the given RENAMING_SYM, which is expected to
3999    be a symbol encoding a renaming expression.  BLOCK is the block
4000    used to evaluate the renaming.  */
4001
4002 static struct value *
4003 ada_read_renaming_var_value (struct symbol *renaming_sym,
4004                              const struct block *block)
4005 {
4006   const char *sym_name;
4007
4008   sym_name = renaming_sym->linkage_name ();
4009   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4010   return evaluate_expression (expr.get ());
4011 }
4012 \f
4013
4014                                 /* Evaluation: Function Calls */
4015
4016 /* Return an lvalue containing the value VAL.  This is the identity on
4017    lvalues, and otherwise has the side-effect of allocating memory
4018    in the inferior where a copy of the value contents is copied.  */
4019
4020 static struct value *
4021 ensure_lval (struct value *val)
4022 {
4023   if (VALUE_LVAL (val) == not_lval
4024       || VALUE_LVAL (val) == lval_internalvar)
4025     {
4026       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4027       const CORE_ADDR addr =
4028         value_as_long (value_allocate_space_in_inferior (len));
4029
4030       VALUE_LVAL (val) = lval_memory;
4031       set_value_address (val, addr);
4032       write_memory (addr, value_contents (val), len);
4033     }
4034
4035   return val;
4036 }
4037
4038 /* Given ARG, a value of type (pointer or reference to a)*
4039    structure/union, extract the component named NAME from the ultimate
4040    target structure/union and return it as a value with its
4041    appropriate type.
4042
4043    The routine searches for NAME among all members of the structure itself
4044    and (recursively) among all members of any wrapper members
4045    (e.g., '_parent').
4046
4047    If NO_ERR, then simply return NULL in case of error, rather than
4048    calling error.  */
4049
4050 static struct value *
4051 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4052 {
4053   struct type *t, *t1;
4054   struct value *v;
4055   int check_tag;
4056
4057   v = NULL;
4058   t1 = t = ada_check_typedef (value_type (arg));
4059   if (t->code () == TYPE_CODE_REF)
4060     {
4061       t1 = TYPE_TARGET_TYPE (t);
4062       if (t1 == NULL)
4063         goto BadValue;
4064       t1 = ada_check_typedef (t1);
4065       if (t1->code () == TYPE_CODE_PTR)
4066         {
4067           arg = coerce_ref (arg);
4068           t = t1;
4069         }
4070     }
4071
4072   while (t->code () == TYPE_CODE_PTR)
4073     {
4074       t1 = TYPE_TARGET_TYPE (t);
4075       if (t1 == NULL)
4076         goto BadValue;
4077       t1 = ada_check_typedef (t1);
4078       if (t1->code () == TYPE_CODE_PTR)
4079         {
4080           arg = value_ind (arg);
4081           t = t1;
4082         }
4083       else
4084         break;
4085     }
4086
4087   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4088     goto BadValue;
4089
4090   if (t1 == t)
4091     v = ada_search_struct_field (name, arg, 0, t);
4092   else
4093     {
4094       int bit_offset, bit_size, byte_offset;
4095       struct type *field_type;
4096       CORE_ADDR address;
4097
4098       if (t->code () == TYPE_CODE_PTR)
4099         address = value_address (ada_value_ind (arg));
4100       else
4101         address = value_address (ada_coerce_ref (arg));
4102
4103       /* Check to see if this is a tagged type.  We also need to handle
4104          the case where the type is a reference to a tagged type, but
4105          we have to be careful to exclude pointers to tagged types.
4106          The latter should be shown as usual (as a pointer), whereas
4107          a reference should mostly be transparent to the user.  */
4108
4109       if (ada_is_tagged_type (t1, 0)
4110           || (t1->code () == TYPE_CODE_REF
4111               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4112         {
4113           /* We first try to find the searched field in the current type.
4114              If not found then let's look in the fixed type.  */
4115
4116           if (!find_struct_field (name, t1, 0,
4117                                   &field_type, &byte_offset, &bit_offset,
4118                                   &bit_size, NULL))
4119             check_tag = 1;
4120           else
4121             check_tag = 0;
4122         }
4123       else
4124         check_tag = 0;
4125
4126       /* Convert to fixed type in all cases, so that we have proper
4127          offsets to each field in unconstrained record types.  */
4128       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4129                               address, NULL, check_tag);
4130
4131       /* Resolve the dynamic type as well.  */
4132       arg = value_from_contents_and_address (t1, nullptr, address);
4133       t1 = value_type (arg);
4134
4135       if (find_struct_field (name, t1, 0,
4136                              &field_type, &byte_offset, &bit_offset,
4137                              &bit_size, NULL))
4138         {
4139           if (bit_size != 0)
4140             {
4141               if (t->code () == TYPE_CODE_REF)
4142                 arg = ada_coerce_ref (arg);
4143               else
4144                 arg = ada_value_ind (arg);
4145               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4146                                                   bit_offset, bit_size,
4147                                                   field_type);
4148             }
4149           else
4150             v = value_at_lazy (field_type, address + byte_offset);
4151         }
4152     }
4153
4154   if (v != NULL || no_err)
4155     return v;
4156   else
4157     error (_("There is no member named %s."), name);
4158
4159  BadValue:
4160   if (no_err)
4161     return NULL;
4162   else
4163     error (_("Attempt to extract a component of "
4164              "a value that is not a record."));
4165 }
4166
4167 /* Return the value ACTUAL, converted to be an appropriate value for a
4168    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4169    allocating any necessary descriptors (fat pointers), or copies of
4170    values not residing in memory, updating it as needed.  */
4171
4172 struct value *
4173 ada_convert_actual (struct value *actual, struct type *formal_type0)
4174 {
4175   struct type *actual_type = ada_check_typedef (value_type (actual));
4176   struct type *formal_type = ada_check_typedef (formal_type0);
4177   struct type *formal_target =
4178     formal_type->code () == TYPE_CODE_PTR
4179     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4180   struct type *actual_target =
4181     actual_type->code () == TYPE_CODE_PTR
4182     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4183
4184   if (ada_is_array_descriptor_type (formal_target)
4185       && actual_target->code () == TYPE_CODE_ARRAY)
4186     return make_array_descriptor (formal_type, actual);
4187   else if (formal_type->code () == TYPE_CODE_PTR
4188            || formal_type->code () == TYPE_CODE_REF)
4189     {
4190       struct value *result;
4191
4192       if (formal_target->code () == TYPE_CODE_ARRAY
4193           && ada_is_array_descriptor_type (actual_target))
4194         result = desc_data (actual);
4195       else if (formal_type->code () != TYPE_CODE_PTR)
4196         {
4197           if (VALUE_LVAL (actual) != lval_memory)
4198             {
4199               struct value *val;
4200
4201               actual_type = ada_check_typedef (value_type (actual));
4202               val = allocate_value (actual_type);
4203               memcpy ((char *) value_contents_raw (val),
4204                       (char *) value_contents (actual),
4205                       TYPE_LENGTH (actual_type));
4206               actual = ensure_lval (val);
4207             }
4208           result = value_addr (actual);
4209         }
4210       else
4211         return actual;
4212       return value_cast_pointers (formal_type, result, 0);
4213     }
4214   else if (actual_type->code () == TYPE_CODE_PTR)
4215     return ada_value_ind (actual);
4216   else if (ada_is_aligner_type (formal_type))
4217     {
4218       /* We need to turn this parameter into an aligner type
4219          as well.  */
4220       struct value *aligner = allocate_value (formal_type);
4221       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4222
4223       value_assign_to_component (aligner, component, actual);
4224       return aligner;
4225     }
4226
4227   return actual;
4228 }
4229
4230 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4231    type TYPE.  This is usually an inefficient no-op except on some targets
4232    (such as AVR) where the representation of a pointer and an address
4233    differs.  */
4234
4235 static CORE_ADDR
4236 value_pointer (struct value *value, struct type *type)
4237 {
4238   unsigned len = TYPE_LENGTH (type);
4239   gdb_byte *buf = (gdb_byte *) alloca (len);
4240   CORE_ADDR addr;
4241
4242   addr = value_address (value);
4243   gdbarch_address_to_pointer (type->arch (), type, buf, addr);
4244   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4245   return addr;
4246 }
4247
4248
4249 /* Push a descriptor of type TYPE for array value ARR on the stack at
4250    *SP, updating *SP to reflect the new descriptor.  Return either
4251    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4252    to-descriptor type rather than a descriptor type), a struct value *
4253    representing a pointer to this descriptor.  */
4254
4255 static struct value *
4256 make_array_descriptor (struct type *type, struct value *arr)
4257 {
4258   struct type *bounds_type = desc_bounds_type (type);
4259   struct type *desc_type = desc_base_type (type);
4260   struct value *descriptor = allocate_value (desc_type);
4261   struct value *bounds = allocate_value (bounds_type);
4262   int i;
4263
4264   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4265        i > 0; i -= 1)
4266     {
4267       modify_field (value_type (bounds), value_contents_writeable (bounds),
4268                     ada_array_bound (arr, i, 0),
4269                     desc_bound_bitpos (bounds_type, i, 0),
4270                     desc_bound_bitsize (bounds_type, i, 0));
4271       modify_field (value_type (bounds), value_contents_writeable (bounds),
4272                     ada_array_bound (arr, i, 1),
4273                     desc_bound_bitpos (bounds_type, i, 1),
4274                     desc_bound_bitsize (bounds_type, i, 1));
4275     }
4276
4277   bounds = ensure_lval (bounds);
4278
4279   modify_field (value_type (descriptor),
4280                 value_contents_writeable (descriptor),
4281                 value_pointer (ensure_lval (arr),
4282                                desc_type->field (0).type ()),
4283                 fat_pntr_data_bitpos (desc_type),
4284                 fat_pntr_data_bitsize (desc_type));
4285
4286   modify_field (value_type (descriptor),
4287                 value_contents_writeable (descriptor),
4288                 value_pointer (bounds,
4289                                desc_type->field (1).type ()),
4290                 fat_pntr_bounds_bitpos (desc_type),
4291                 fat_pntr_bounds_bitsize (desc_type));
4292
4293   descriptor = ensure_lval (descriptor);
4294
4295   if (type->code () == TYPE_CODE_PTR)
4296     return value_addr (descriptor);
4297   else
4298     return descriptor;
4299 }
4300 \f
4301                                 /* Symbol Cache Module */
4302
4303 /* Performance measurements made as of 2010-01-15 indicate that
4304    this cache does bring some noticeable improvements.  Depending
4305    on the type of entity being printed, the cache can make it as much
4306    as an order of magnitude faster than without it.
4307
4308    The descriptive type DWARF extension has significantly reduced
4309    the need for this cache, at least when DWARF is being used.  However,
4310    even in this case, some expensive name-based symbol searches are still
4311    sometimes necessary - to find an XVZ variable, mostly.  */
4312
4313 /* Return the symbol cache associated to the given program space PSPACE.
4314    If not allocated for this PSPACE yet, allocate and initialize one.  */
4315
4316 static struct ada_symbol_cache *
4317 ada_get_symbol_cache (struct program_space *pspace)
4318 {
4319   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4320
4321   if (pspace_data->sym_cache == nullptr)
4322     pspace_data->sym_cache.reset (new ada_symbol_cache);
4323
4324   return pspace_data->sym_cache.get ();
4325 }
4326
4327 /* Clear all entries from the symbol cache.  */
4328
4329 static void
4330 ada_clear_symbol_cache ()
4331 {
4332   struct ada_pspace_data *pspace_data
4333     = get_ada_pspace_data (current_program_space);
4334
4335   if (pspace_data->sym_cache != nullptr)
4336     pspace_data->sym_cache.reset ();
4337 }
4338
4339 /* Search our cache for an entry matching NAME and DOMAIN.
4340    Return it if found, or NULL otherwise.  */
4341
4342 static struct cache_entry **
4343 find_entry (const char *name, domain_enum domain)
4344 {
4345   struct ada_symbol_cache *sym_cache
4346     = ada_get_symbol_cache (current_program_space);
4347   int h = msymbol_hash (name) % HASH_SIZE;
4348   struct cache_entry **e;
4349
4350   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4351     {
4352       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4353         return e;
4354     }
4355   return NULL;
4356 }
4357
4358 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4359    Return 1 if found, 0 otherwise.
4360
4361    If an entry was found and SYM is not NULL, set *SYM to the entry's
4362    SYM.  Same principle for BLOCK if not NULL.  */
4363
4364 static int
4365 lookup_cached_symbol (const char *name, domain_enum domain,
4366                       struct symbol **sym, const struct block **block)
4367 {
4368   struct cache_entry **e = find_entry (name, domain);
4369
4370   if (e == NULL)
4371     return 0;
4372   if (sym != NULL)
4373     *sym = (*e)->sym;
4374   if (block != NULL)
4375     *block = (*e)->block;
4376   return 1;
4377 }
4378
4379 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4380    in domain DOMAIN, save this result in our symbol cache.  */
4381
4382 static void
4383 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4384               const struct block *block)
4385 {
4386   struct ada_symbol_cache *sym_cache
4387     = ada_get_symbol_cache (current_program_space);
4388   int h;
4389   struct cache_entry *e;
4390
4391   /* Symbols for builtin types don't have a block.
4392      For now don't cache such symbols.  */
4393   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4394     return;
4395
4396   /* If the symbol is a local symbol, then do not cache it, as a search
4397      for that symbol depends on the context.  To determine whether
4398      the symbol is local or not, we check the block where we found it
4399      against the global and static blocks of its associated symtab.  */
4400   if (sym
4401       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4402                             GLOBAL_BLOCK) != block
4403       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4404                             STATIC_BLOCK) != block)
4405     return;
4406
4407   h = msymbol_hash (name) % HASH_SIZE;
4408   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4409   e->next = sym_cache->root[h];
4410   sym_cache->root[h] = e;
4411   e->name = obstack_strdup (&sym_cache->cache_space, name);
4412   e->sym = sym;
4413   e->domain = domain;
4414   e->block = block;
4415 }
4416 \f
4417                                 /* Symbol Lookup */
4418
4419 /* Return the symbol name match type that should be used used when
4420    searching for all symbols matching LOOKUP_NAME.
4421
4422    LOOKUP_NAME is expected to be a symbol name after transformation
4423    for Ada lookups.  */
4424
4425 static symbol_name_match_type
4426 name_match_type_from_name (const char *lookup_name)
4427 {
4428   return (strstr (lookup_name, "__") == NULL
4429           ? symbol_name_match_type::WILD
4430           : symbol_name_match_type::FULL);
4431 }
4432
4433 /* Return the result of a standard (literal, C-like) lookup of NAME in
4434    given DOMAIN, visible from lexical block BLOCK.  */
4435
4436 static struct symbol *
4437 standard_lookup (const char *name, const struct block *block,
4438                  domain_enum domain)
4439 {
4440   /* Initialize it just to avoid a GCC false warning.  */
4441   struct block_symbol sym = {};
4442
4443   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4444     return sym.symbol;
4445   ada_lookup_encoded_symbol (name, block, domain, &sym);
4446   cache_symbol (name, domain, sym.symbol, sym.block);
4447   return sym.symbol;
4448 }
4449
4450
4451 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4452    in the symbol fields of SYMS.  We treat enumerals as functions, 
4453    since they contend in overloading in the same way.  */
4454 static int
4455 is_nonfunction (const std::vector<struct block_symbol> &syms)
4456 {
4457   for (const block_symbol &sym : syms)
4458     if (SYMBOL_TYPE (sym.symbol)->code () != TYPE_CODE_FUNC
4459         && (SYMBOL_TYPE (sym.symbol)->code () != TYPE_CODE_ENUM
4460             || SYMBOL_CLASS (sym.symbol) != LOC_CONST))
4461       return 1;
4462
4463   return 0;
4464 }
4465
4466 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4467    struct types.  Otherwise, they may not.  */
4468
4469 static int
4470 equiv_types (struct type *type0, struct type *type1)
4471 {
4472   if (type0 == type1)
4473     return 1;
4474   if (type0 == NULL || type1 == NULL
4475       || type0->code () != type1->code ())
4476     return 0;
4477   if ((type0->code () == TYPE_CODE_STRUCT
4478        || type0->code () == TYPE_CODE_ENUM)
4479       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4480       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4481     return 1;
4482
4483   return 0;
4484 }
4485
4486 /* True iff SYM0 represents the same entity as SYM1, or one that is
4487    no more defined than that of SYM1.  */
4488
4489 static int
4490 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4491 {
4492   if (sym0 == sym1)
4493     return 1;
4494   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4495       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4496     return 0;
4497
4498   switch (SYMBOL_CLASS (sym0))
4499     {
4500     case LOC_UNDEF:
4501       return 1;
4502     case LOC_TYPEDEF:
4503       {
4504         struct type *type0 = SYMBOL_TYPE (sym0);
4505         struct type *type1 = SYMBOL_TYPE (sym1);
4506         const char *name0 = sym0->linkage_name ();
4507         const char *name1 = sym1->linkage_name ();
4508         int len0 = strlen (name0);
4509
4510         return
4511           type0->code () == type1->code ()
4512           && (equiv_types (type0, type1)
4513               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4514                   && startswith (name1 + len0, "___XV")));
4515       }
4516     case LOC_CONST:
4517       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4518         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4519
4520     case LOC_STATIC:
4521       {
4522         const char *name0 = sym0->linkage_name ();
4523         const char *name1 = sym1->linkage_name ();
4524         return (strcmp (name0, name1) == 0
4525                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4526       }
4527
4528     default:
4529       return 0;
4530     }
4531 }
4532
4533 /* Append (SYM,BLOCK) to the end of the array of struct block_symbol
4534    records in RESULT.  Do nothing if SYM is a duplicate.  */
4535
4536 static void
4537 add_defn_to_vec (std::vector<struct block_symbol> &result,
4538                  struct symbol *sym,
4539                  const struct block *block)
4540 {
4541   /* Do not try to complete stub types, as the debugger is probably
4542      already scanning all symbols matching a certain name at the
4543      time when this function is called.  Trying to replace the stub
4544      type by its associated full type will cause us to restart a scan
4545      which may lead to an infinite recursion.  Instead, the client
4546      collecting the matching symbols will end up collecting several
4547      matches, with at least one of them complete.  It can then filter
4548      out the stub ones if needed.  */
4549
4550   for (int i = result.size () - 1; i >= 0; i -= 1)
4551     {
4552       if (lesseq_defined_than (sym, result[i].symbol))
4553         return;
4554       else if (lesseq_defined_than (result[i].symbol, sym))
4555         {
4556           result[i].symbol = sym;
4557           result[i].block = block;
4558           return;
4559         }
4560     }
4561
4562   struct block_symbol info;
4563   info.symbol = sym;
4564   info.block = block;
4565   result.push_back (info);
4566 }
4567
4568 /* Return a bound minimal symbol matching NAME according to Ada
4569    decoding rules.  Returns an invalid symbol if there is no such
4570    minimal symbol.  Names prefixed with "standard__" are handled
4571    specially: "standard__" is first stripped off, and only static and
4572    global symbols are searched.  */
4573
4574 struct bound_minimal_symbol
4575 ada_lookup_simple_minsym (const char *name)
4576 {
4577   struct bound_minimal_symbol result;
4578
4579   memset (&result, 0, sizeof (result));
4580
4581   symbol_name_match_type match_type = name_match_type_from_name (name);
4582   lookup_name_info lookup_name (name, match_type);
4583
4584   symbol_name_matcher_ftype *match_name
4585     = ada_get_symbol_name_matcher (lookup_name);
4586
4587   for (objfile *objfile : current_program_space->objfiles ())
4588     {
4589       for (minimal_symbol *msymbol : objfile->msymbols ())
4590         {
4591           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4592               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4593             {
4594               result.minsym = msymbol;
4595               result.objfile = objfile;
4596               break;
4597             }
4598         }
4599     }
4600
4601   return result;
4602 }
4603
4604 /* True if TYPE is definitely an artificial type supplied to a symbol
4605    for which no debugging information was given in the symbol file.  */
4606
4607 static int
4608 is_nondebugging_type (struct type *type)
4609 {
4610   const char *name = ada_type_name (type);
4611
4612   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4613 }
4614
4615 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4616    that are deemed "identical" for practical purposes.
4617
4618    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4619    types and that their number of enumerals is identical (in other
4620    words, type1->num_fields () == type2->num_fields ()).  */
4621
4622 static int
4623 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4624 {
4625   int i;
4626
4627   /* The heuristic we use here is fairly conservative.  We consider
4628      that 2 enumerate types are identical if they have the same
4629      number of enumerals and that all enumerals have the same
4630      underlying value and name.  */
4631
4632   /* All enums in the type should have an identical underlying value.  */
4633   for (i = 0; i < type1->num_fields (); i++)
4634     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4635       return 0;
4636
4637   /* All enumerals should also have the same name (modulo any numerical
4638      suffix).  */
4639   for (i = 0; i < type1->num_fields (); i++)
4640     {
4641       const char *name_1 = type1->field (i).name ();
4642       const char *name_2 = type2->field (i).name ();
4643       int len_1 = strlen (name_1);
4644       int len_2 = strlen (name_2);
4645
4646       ada_remove_trailing_digits (type1->field (i).name (), &len_1);
4647       ada_remove_trailing_digits (type2->field (i).name (), &len_2);
4648       if (len_1 != len_2
4649           || strncmp (type1->field (i).name (),
4650                       type2->field (i).name (),
4651                       len_1) != 0)
4652         return 0;
4653     }
4654
4655   return 1;
4656 }
4657
4658 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4659    that are deemed "identical" for practical purposes.  Sometimes,
4660    enumerals are not strictly identical, but their types are so similar
4661    that they can be considered identical.
4662
4663    For instance, consider the following code:
4664
4665       type Color is (Black, Red, Green, Blue, White);
4666       type RGB_Color is new Color range Red .. Blue;
4667
4668    Type RGB_Color is a subrange of an implicit type which is a copy
4669    of type Color. If we call that implicit type RGB_ColorB ("B" is
4670    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4671    As a result, when an expression references any of the enumeral
4672    by name (Eg. "print green"), the expression is technically
4673    ambiguous and the user should be asked to disambiguate. But
4674    doing so would only hinder the user, since it wouldn't matter
4675    what choice he makes, the outcome would always be the same.
4676    So, for practical purposes, we consider them as the same.  */
4677
4678 static int
4679 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
4680 {
4681   int i;
4682
4683   /* Before performing a thorough comparison check of each type,
4684      we perform a series of inexpensive checks.  We expect that these
4685      checks will quickly fail in the vast majority of cases, and thus
4686      help prevent the unnecessary use of a more expensive comparison.
4687      Said comparison also expects us to make some of these checks
4688      (see ada_identical_enum_types_p).  */
4689
4690   /* Quick check: All symbols should have an enum type.  */
4691   for (i = 0; i < syms.size (); i++)
4692     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
4693       return 0;
4694
4695   /* Quick check: They should all have the same value.  */
4696   for (i = 1; i < syms.size (); i++)
4697     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4698       return 0;
4699
4700   /* Quick check: They should all have the same number of enumerals.  */
4701   for (i = 1; i < syms.size (); i++)
4702     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
4703         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
4704       return 0;
4705
4706   /* All the sanity checks passed, so we might have a set of
4707      identical enumeration types.  Perform a more complete
4708      comparison of the type of each symbol.  */
4709   for (i = 1; i < syms.size (); i++)
4710     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
4711                                      SYMBOL_TYPE (syms[0].symbol)))
4712       return 0;
4713
4714   return 1;
4715 }
4716
4717 /* Remove any non-debugging symbols in SYMS that definitely
4718    duplicate other symbols in the list (The only case I know of where
4719    this happens is when object files containing stabs-in-ecoff are
4720    linked with files containing ordinary ecoff debugging symbols (or no
4721    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.  */
4722
4723 static void
4724 remove_extra_symbols (std::vector<struct block_symbol> *syms)
4725 {
4726   int i, j;
4727
4728   /* We should never be called with less than 2 symbols, as there
4729      cannot be any extra symbol in that case.  But it's easy to
4730      handle, since we have nothing to do in that case.  */
4731   if (syms->size () < 2)
4732     return;
4733
4734   i = 0;
4735   while (i < syms->size ())
4736     {
4737       int remove_p = 0;
4738
4739       /* If two symbols have the same name and one of them is a stub type,
4740          the get rid of the stub.  */
4741
4742       if (SYMBOL_TYPE ((*syms)[i].symbol)->is_stub ()
4743           && (*syms)[i].symbol->linkage_name () != NULL)
4744         {
4745           for (j = 0; j < syms->size (); j++)
4746             {
4747               if (j != i
4748                   && !SYMBOL_TYPE ((*syms)[j].symbol)->is_stub ()
4749                   && (*syms)[j].symbol->linkage_name () != NULL
4750                   && strcmp ((*syms)[i].symbol->linkage_name (),
4751                              (*syms)[j].symbol->linkage_name ()) == 0)
4752                 remove_p = 1;
4753             }
4754         }
4755
4756       /* Two symbols with the same name, same class and same address
4757          should be identical.  */
4758
4759       else if ((*syms)[i].symbol->linkage_name () != NULL
4760           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
4761           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
4762         {
4763           for (j = 0; j < syms->size (); j += 1)
4764             {
4765               if (i != j
4766                   && (*syms)[j].symbol->linkage_name () != NULL
4767                   && strcmp ((*syms)[i].symbol->linkage_name (),
4768                              (*syms)[j].symbol->linkage_name ()) == 0
4769                   && SYMBOL_CLASS ((*syms)[i].symbol)
4770                        == SYMBOL_CLASS ((*syms)[j].symbol)
4771                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
4772                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
4773                 remove_p = 1;
4774             }
4775         }
4776       
4777       if (remove_p)
4778         syms->erase (syms->begin () + i);
4779       else
4780         i += 1;
4781     }
4782
4783   /* If all the remaining symbols are identical enumerals, then
4784      just keep the first one and discard the rest.
4785
4786      Unlike what we did previously, we do not discard any entry
4787      unless they are ALL identical.  This is because the symbol
4788      comparison is not a strict comparison, but rather a practical
4789      comparison.  If all symbols are considered identical, then
4790      we can just go ahead and use the first one and discard the rest.
4791      But if we cannot reduce the list to a single element, we have
4792      to ask the user to disambiguate anyways.  And if we have to
4793      present a multiple-choice menu, it's less confusing if the list
4794      isn't missing some choices that were identical and yet distinct.  */
4795   if (symbols_are_identical_enums (*syms))
4796     syms->resize (1);
4797 }
4798
4799 /* Given a type that corresponds to a renaming entity, use the type name
4800    to extract the scope (package name or function name, fully qualified,
4801    and following the GNAT encoding convention) where this renaming has been
4802    defined.  */
4803
4804 static std::string
4805 xget_renaming_scope (struct type *renaming_type)
4806 {
4807   /* The renaming types adhere to the following convention:
4808      <scope>__<rename>___<XR extension>.
4809      So, to extract the scope, we search for the "___XR" extension,
4810      and then backtrack until we find the first "__".  */
4811
4812   const char *name = renaming_type->name ();
4813   const char *suffix = strstr (name, "___XR");
4814   const char *last;
4815
4816   /* Now, backtrack a bit until we find the first "__".  Start looking
4817      at suffix - 3, as the <rename> part is at least one character long.  */
4818
4819   for (last = suffix - 3; last > name; last--)
4820     if (last[0] == '_' && last[1] == '_')
4821       break;
4822
4823   /* Make a copy of scope and return it.  */
4824   return std::string (name, last);
4825 }
4826
4827 /* Return nonzero if NAME corresponds to a package name.  */
4828
4829 static int
4830 is_package_name (const char *name)
4831 {
4832   /* Here, We take advantage of the fact that no symbols are generated
4833      for packages, while symbols are generated for each function.
4834      So the condition for NAME represent a package becomes equivalent
4835      to NAME not existing in our list of symbols.  There is only one
4836      small complication with library-level functions (see below).  */
4837
4838   /* If it is a function that has not been defined at library level,
4839      then we should be able to look it up in the symbols.  */
4840   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
4841     return 0;
4842
4843   /* Library-level function names start with "_ada_".  See if function
4844      "_ada_" followed by NAME can be found.  */
4845
4846   /* Do a quick check that NAME does not contain "__", since library-level
4847      functions names cannot contain "__" in them.  */
4848   if (strstr (name, "__") != NULL)
4849     return 0;
4850
4851   std::string fun_name = string_printf ("_ada_%s", name);
4852
4853   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
4854 }
4855
4856 /* Return nonzero if SYM corresponds to a renaming entity that is
4857    not visible from FUNCTION_NAME.  */
4858
4859 static int
4860 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
4861 {
4862   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
4863     return 0;
4864
4865   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
4866
4867   /* If the rename has been defined in a package, then it is visible.  */
4868   if (is_package_name (scope.c_str ()))
4869     return 0;
4870
4871   /* Check that the rename is in the current function scope by checking
4872      that its name starts with SCOPE.  */
4873
4874   /* If the function name starts with "_ada_", it means that it is
4875      a library-level function.  Strip this prefix before doing the
4876      comparison, as the encoding for the renaming does not contain
4877      this prefix.  */
4878   if (startswith (function_name, "_ada_"))
4879     function_name += 5;
4880
4881   return !startswith (function_name, scope.c_str ());
4882 }
4883
4884 /* Remove entries from SYMS that corresponds to a renaming entity that
4885    is not visible from the function associated with CURRENT_BLOCK or
4886    that is superfluous due to the presence of more specific renaming
4887    information.  Places surviving symbols in the initial entries of
4888    SYMS.
4889
4890    Rationale:
4891    First, in cases where an object renaming is implemented as a
4892    reference variable, GNAT may produce both the actual reference
4893    variable and the renaming encoding.  In this case, we discard the
4894    latter.
4895
4896    Second, GNAT emits a type following a specified encoding for each renaming
4897    entity.  Unfortunately, STABS currently does not support the definition
4898    of types that are local to a given lexical block, so all renamings types
4899    are emitted at library level.  As a consequence, if an application
4900    contains two renaming entities using the same name, and a user tries to
4901    print the value of one of these entities, the result of the ada symbol
4902    lookup will also contain the wrong renaming type.
4903
4904    This function partially covers for this limitation by attempting to
4905    remove from the SYMS list renaming symbols that should be visible
4906    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
4907    method with the current information available.  The implementation
4908    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
4909    
4910       - When the user tries to print a rename in a function while there
4911         is another rename entity defined in a package:  Normally, the
4912         rename in the function has precedence over the rename in the
4913         package, so the latter should be removed from the list.  This is
4914         currently not the case.
4915         
4916       - This function will incorrectly remove valid renames if
4917         the CURRENT_BLOCK corresponds to a function which symbol name
4918         has been changed by an "Export" pragma.  As a consequence,
4919         the user will be unable to print such rename entities.  */
4920
4921 static void
4922 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
4923                              const struct block *current_block)
4924 {
4925   struct symbol *current_function;
4926   const char *current_function_name;
4927   int i;
4928   int is_new_style_renaming;
4929
4930   /* If there is both a renaming foo___XR... encoded as a variable and
4931      a simple variable foo in the same block, discard the latter.
4932      First, zero out such symbols, then compress.  */
4933   is_new_style_renaming = 0;
4934   for (i = 0; i < syms->size (); i += 1)
4935     {
4936       struct symbol *sym = (*syms)[i].symbol;
4937       const struct block *block = (*syms)[i].block;
4938       const char *name;
4939       const char *suffix;
4940
4941       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
4942         continue;
4943       name = sym->linkage_name ();
4944       suffix = strstr (name, "___XR");
4945
4946       if (suffix != NULL)
4947         {
4948           int name_len = suffix - name;
4949           int j;
4950
4951           is_new_style_renaming = 1;
4952           for (j = 0; j < syms->size (); j += 1)
4953             if (i != j && (*syms)[j].symbol != NULL
4954                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
4955                             name_len) == 0
4956                 && block == (*syms)[j].block)
4957               (*syms)[j].symbol = NULL;
4958         }
4959     }
4960   if (is_new_style_renaming)
4961     {
4962       int j, k;
4963
4964       for (j = k = 0; j < syms->size (); j += 1)
4965         if ((*syms)[j].symbol != NULL)
4966             {
4967               (*syms)[k] = (*syms)[j];
4968               k += 1;
4969             }
4970       syms->resize (k);
4971       return;
4972     }
4973
4974   /* Extract the function name associated to CURRENT_BLOCK.
4975      Abort if unable to do so.  */
4976
4977   if (current_block == NULL)
4978     return;
4979
4980   current_function = block_linkage_function (current_block);
4981   if (current_function == NULL)
4982     return;
4983
4984   current_function_name = current_function->linkage_name ();
4985   if (current_function_name == NULL)
4986     return;
4987
4988   /* Check each of the symbols, and remove it from the list if it is
4989      a type corresponding to a renaming that is out of the scope of
4990      the current block.  */
4991
4992   i = 0;
4993   while (i < syms->size ())
4994     {
4995       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
4996           == ADA_OBJECT_RENAMING
4997           && old_renaming_is_invisible ((*syms)[i].symbol,
4998                                         current_function_name))
4999         syms->erase (syms->begin () + i);
5000       else
5001         i += 1;
5002     }
5003 }
5004
5005 /* Add to RESULT all symbols from BLOCK (and its super-blocks)
5006    whose name and domain match LOOKUP_NAME and DOMAIN respectively.
5007
5008    Note: This function assumes that RESULT is empty.  */
5009
5010 static void
5011 ada_add_local_symbols (std::vector<struct block_symbol> &result,
5012                        const lookup_name_info &lookup_name,
5013                        const struct block *block, domain_enum domain)
5014 {
5015   while (block != NULL)
5016     {
5017       ada_add_block_symbols (result, block, lookup_name, domain, NULL);
5018
5019       /* If we found a non-function match, assume that's the one.  We
5020          only check this when finding a function boundary, so that we
5021          can accumulate all results from intervening blocks first.  */
5022       if (BLOCK_FUNCTION (block) != nullptr && is_nonfunction (result))
5023         return;
5024
5025       block = BLOCK_SUPERBLOCK (block);
5026     }
5027 }
5028
5029 /* An object of this type is used as the callback argument when
5030    calling the map_matching_symbols method.  */
5031
5032 struct match_data
5033 {
5034   explicit match_data (std::vector<struct block_symbol> *rp)
5035     : resultp (rp)
5036   {
5037   }
5038   DISABLE_COPY_AND_ASSIGN (match_data);
5039
5040   bool operator() (struct block_symbol *bsym);
5041
5042   struct objfile *objfile = nullptr;
5043   std::vector<struct block_symbol> *resultp;
5044   struct symbol *arg_sym = nullptr;
5045   bool found_sym = false;
5046 };
5047
5048 /* A callback for add_nonlocal_symbols that adds symbol, found in
5049    BSYM, to a list of symbols.  */
5050
5051 bool
5052 match_data::operator() (struct block_symbol *bsym)
5053 {
5054   const struct block *block = bsym->block;
5055   struct symbol *sym = bsym->symbol;
5056
5057   if (sym == NULL)
5058     {
5059       if (!found_sym && arg_sym != NULL)
5060         add_defn_to_vec (*resultp,
5061                          fixup_symbol_section (arg_sym, objfile),
5062                          block);
5063       found_sym = false;
5064       arg_sym = NULL;
5065     }
5066   else 
5067     {
5068       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5069         return true;
5070       else if (SYMBOL_IS_ARGUMENT (sym))
5071         arg_sym = sym;
5072       else
5073         {
5074           found_sym = true;
5075           add_defn_to_vec (*resultp,
5076                            fixup_symbol_section (sym, objfile),
5077                            block);
5078         }
5079     }
5080   return true;
5081 }
5082
5083 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5084    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5085    symbols to RESULT.  Return whether we found such symbols.  */
5086
5087 static int
5088 ada_add_block_renamings (std::vector<struct block_symbol> &result,
5089                          const struct block *block,
5090                          const lookup_name_info &lookup_name,
5091                          domain_enum domain)
5092 {
5093   struct using_direct *renaming;
5094   int defns_mark = result.size ();
5095
5096   symbol_name_matcher_ftype *name_match
5097     = ada_get_symbol_name_matcher (lookup_name);
5098
5099   for (renaming = block_using (block);
5100        renaming != NULL;
5101        renaming = renaming->next)
5102     {
5103       const char *r_name;
5104
5105       /* Avoid infinite recursions: skip this renaming if we are actually
5106          already traversing it.
5107
5108          Currently, symbol lookup in Ada don't use the namespace machinery from
5109          C++/Fortran support: skip namespace imports that use them.  */
5110       if (renaming->searched
5111           || (renaming->import_src != NULL
5112               && renaming->import_src[0] != '\0')
5113           || (renaming->import_dest != NULL
5114               && renaming->import_dest[0] != '\0'))
5115         continue;
5116       renaming->searched = 1;
5117
5118       /* TODO: here, we perform another name-based symbol lookup, which can
5119          pull its own multiple overloads.  In theory, we should be able to do
5120          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5121          not a simple name.  But in order to do this, we would need to enhance
5122          the DWARF reader to associate a symbol to this renaming, instead of a
5123          name.  So, for now, we do something simpler: re-use the C++/Fortran
5124          namespace machinery.  */
5125       r_name = (renaming->alias != NULL
5126                 ? renaming->alias
5127                 : renaming->declaration);
5128       if (name_match (r_name, lookup_name, NULL))
5129         {
5130           lookup_name_info decl_lookup_name (renaming->declaration,
5131                                              lookup_name.match_type ());
5132           ada_add_all_symbols (result, block, decl_lookup_name, domain,
5133                                1, NULL);
5134         }
5135       renaming->searched = 0;
5136     }
5137   return result.size () != defns_mark;
5138 }
5139
5140 /* Implements compare_names, but only applying the comparision using
5141    the given CASING.  */
5142
5143 static int
5144 compare_names_with_case (const char *string1, const char *string2,
5145                          enum case_sensitivity casing)
5146 {
5147   while (*string1 != '\0' && *string2 != '\0')
5148     {
5149       char c1, c2;
5150
5151       if (isspace (*string1) || isspace (*string2))
5152         return strcmp_iw_ordered (string1, string2);
5153
5154       if (casing == case_sensitive_off)
5155         {
5156           c1 = tolower (*string1);
5157           c2 = tolower (*string2);
5158         }
5159       else
5160         {
5161           c1 = *string1;
5162           c2 = *string2;
5163         }
5164       if (c1 != c2)
5165         break;
5166
5167       string1 += 1;
5168       string2 += 1;
5169     }
5170
5171   switch (*string1)
5172     {
5173     case '(':
5174       return strcmp_iw_ordered (string1, string2);
5175     case '_':
5176       if (*string2 == '\0')
5177         {
5178           if (is_name_suffix (string1))
5179             return 0;
5180           else
5181             return 1;
5182         }
5183       /* FALLTHROUGH */
5184     default:
5185       if (*string2 == '(')
5186         return strcmp_iw_ordered (string1, string2);
5187       else
5188         {
5189           if (casing == case_sensitive_off)
5190             return tolower (*string1) - tolower (*string2);
5191           else
5192             return *string1 - *string2;
5193         }
5194     }
5195 }
5196
5197 /* Compare STRING1 to STRING2, with results as for strcmp.
5198    Compatible with strcmp_iw_ordered in that...
5199
5200        strcmp_iw_ordered (STRING1, STRING2) <= 0
5201
5202    ... implies...
5203
5204        compare_names (STRING1, STRING2) <= 0
5205
5206    (they may differ as to what symbols compare equal).  */
5207
5208 static int
5209 compare_names (const char *string1, const char *string2)
5210 {
5211   int result;
5212
5213   /* Similar to what strcmp_iw_ordered does, we need to perform
5214      a case-insensitive comparison first, and only resort to
5215      a second, case-sensitive, comparison if the first one was
5216      not sufficient to differentiate the two strings.  */
5217
5218   result = compare_names_with_case (string1, string2, case_sensitive_off);
5219   if (result == 0)
5220     result = compare_names_with_case (string1, string2, case_sensitive_on);
5221
5222   return result;
5223 }
5224
5225 /* Convenience function to get at the Ada encoded lookup name for
5226    LOOKUP_NAME, as a C string.  */
5227
5228 static const char *
5229 ada_lookup_name (const lookup_name_info &lookup_name)
5230 {
5231   return lookup_name.ada ().lookup_name ().c_str ();
5232 }
5233
5234 /* A helper for add_nonlocal_symbols.  Call expand_matching_symbols
5235    for OBJFILE, then walk the objfile's symtabs and update the
5236    results.  */
5237
5238 static void
5239 map_matching_symbols (struct objfile *objfile,
5240                       const lookup_name_info &lookup_name,
5241                       bool is_wild_match,
5242                       domain_enum domain,
5243                       int global,
5244                       match_data &data)
5245 {
5246   data.objfile = objfile;
5247   objfile->expand_matching_symbols (lookup_name, domain, global,
5248                                     is_wild_match ? nullptr : compare_names);
5249
5250   const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
5251   for (compunit_symtab *symtab : objfile->compunits ())
5252     {
5253       const struct block *block
5254         = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (symtab), block_kind);
5255       if (!iterate_over_symbols_terminated (block, lookup_name,
5256                                             domain, data))
5257         break;
5258     }
5259 }
5260
5261 /* Add to RESULT all non-local symbols whose name and domain match
5262    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5263    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5264    symbols otherwise.  */
5265
5266 static void
5267 add_nonlocal_symbols (std::vector<struct block_symbol> &result,
5268                       const lookup_name_info &lookup_name,
5269                       domain_enum domain, int global)
5270 {
5271   struct match_data data (&result);
5272
5273   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5274
5275   for (objfile *objfile : current_program_space->objfiles ())
5276     {
5277       map_matching_symbols (objfile, lookup_name, is_wild_match, domain,
5278                             global, data);
5279
5280       for (compunit_symtab *cu : objfile->compunits ())
5281         {
5282           const struct block *global_block
5283             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5284
5285           if (ada_add_block_renamings (result, global_block, lookup_name,
5286                                        domain))
5287             data.found_sym = true;
5288         }
5289     }
5290
5291   if (result.empty () && global && !is_wild_match)
5292     {
5293       const char *name = ada_lookup_name (lookup_name);
5294       std::string bracket_name = std::string ("<_ada_") + name + '>';
5295       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5296
5297       for (objfile *objfile : current_program_space->objfiles ())
5298         map_matching_symbols (objfile, name1, false, domain, global, data);
5299     }
5300 }
5301
5302 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5303    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5304    returning the number of matches.  Add these to RESULT.
5305
5306    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5307    symbol match within the nest of blocks whose innermost member is BLOCK,
5308    is the one match returned (no other matches in that or
5309    enclosing blocks is returned).  If there are any matches in or
5310    surrounding BLOCK, then these alone are returned.
5311
5312    Names prefixed with "standard__" are handled specially:
5313    "standard__" is first stripped off (by the lookup_name
5314    constructor), and only static and global symbols are searched.
5315
5316    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5317    to lookup global symbols.  */
5318
5319 static void
5320 ada_add_all_symbols (std::vector<struct block_symbol> &result,
5321                      const struct block *block,
5322                      const lookup_name_info &lookup_name,
5323                      domain_enum domain,
5324                      int full_search,
5325                      int *made_global_lookup_p)
5326 {
5327   struct symbol *sym;
5328
5329   if (made_global_lookup_p)
5330     *made_global_lookup_p = 0;
5331
5332   /* Special case: If the user specifies a symbol name inside package
5333      Standard, do a non-wild matching of the symbol name without
5334      the "standard__" prefix.  This was primarily introduced in order
5335      to allow the user to specifically access the standard exceptions
5336      using, for instance, Standard.Constraint_Error when Constraint_Error
5337      is ambiguous (due to the user defining its own Constraint_Error
5338      entity inside its program).  */
5339   if (lookup_name.ada ().standard_p ())
5340     block = NULL;
5341
5342   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5343
5344   if (block != NULL)
5345     {
5346       if (full_search)
5347         ada_add_local_symbols (result, lookup_name, block, domain);
5348       else
5349         {
5350           /* In the !full_search case we're are being called by
5351              iterate_over_symbols, and we don't want to search
5352              superblocks.  */
5353           ada_add_block_symbols (result, block, lookup_name, domain, NULL);
5354         }
5355       if (!result.empty () || !full_search)
5356         return;
5357     }
5358
5359   /* No non-global symbols found.  Check our cache to see if we have
5360      already performed this search before.  If we have, then return
5361      the same result.  */
5362
5363   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5364                             domain, &sym, &block))
5365     {
5366       if (sym != NULL)
5367         add_defn_to_vec (result, sym, block);
5368       return;
5369     }
5370
5371   if (made_global_lookup_p)
5372     *made_global_lookup_p = 1;
5373
5374   /* Search symbols from all global blocks.  */
5375  
5376   add_nonlocal_symbols (result, lookup_name, domain, 1);
5377
5378   /* Now add symbols from all per-file blocks if we've gotten no hits
5379      (not strictly correct, but perhaps better than an error).  */
5380
5381   if (result.empty ())
5382     add_nonlocal_symbols (result, lookup_name, domain, 0);
5383 }
5384
5385 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5386    is non-zero, enclosing scope and in global scopes.
5387
5388    Returns (SYM,BLOCK) tuples, indicating the symbols found and the
5389    blocks and symbol tables (if any) in which they were found.
5390
5391    When full_search is non-zero, any non-function/non-enumeral
5392    symbol match within the nest of blocks whose innermost member is BLOCK,
5393    is the one match returned (no other matches in that or
5394    enclosing blocks is returned).  If there are any matches in or
5395    surrounding BLOCK, then these alone are returned.
5396
5397    Names prefixed with "standard__" are handled specially: "standard__"
5398    is first stripped off, and only static and global symbols are searched.  */
5399
5400 static std::vector<struct block_symbol>
5401 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5402                                const struct block *block,
5403                                domain_enum domain,
5404                                int full_search)
5405 {
5406   int syms_from_global_search;
5407   std::vector<struct block_symbol> results;
5408
5409   ada_add_all_symbols (results, block, lookup_name,
5410                        domain, full_search, &syms_from_global_search);
5411
5412   remove_extra_symbols (&results);
5413
5414   if (results.empty () && full_search && syms_from_global_search)
5415     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5416
5417   if (results.size () == 1 && full_search && syms_from_global_search)
5418     cache_symbol (ada_lookup_name (lookup_name), domain,
5419                   results[0].symbol, results[0].block);
5420
5421   remove_irrelevant_renamings (&results, block);
5422   return results;
5423 }
5424
5425 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5426    in global scopes, returning (SYM,BLOCK) tuples.
5427
5428    See ada_lookup_symbol_list_worker for further details.  */
5429
5430 std::vector<struct block_symbol>
5431 ada_lookup_symbol_list (const char *name, const struct block *block,
5432                         domain_enum domain)
5433 {
5434   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5435   lookup_name_info lookup_name (name, name_match_type);
5436
5437   return ada_lookup_symbol_list_worker (lookup_name, block, domain, 1);
5438 }
5439
5440 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5441    to 1, but choosing the first symbol found if there are multiple
5442    choices.
5443
5444    The result is stored in *INFO, which must be non-NULL.
5445    If no match is found, INFO->SYM is set to NULL.  */
5446
5447 void
5448 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5449                            domain_enum domain,
5450                            struct block_symbol *info)
5451 {
5452   /* Since we already have an encoded name, wrap it in '<>' to force a
5453      verbatim match.  Otherwise, if the name happens to not look like
5454      an encoded name (because it doesn't include a "__"),
5455      ada_lookup_name_info would re-encode/fold it again, and that
5456      would e.g., incorrectly lowercase object renaming names like
5457      "R28b" -> "r28b".  */
5458   std::string verbatim = add_angle_brackets (name);
5459
5460   gdb_assert (info != NULL);
5461   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5462 }
5463
5464 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5465    scope and in global scopes, or NULL if none.  NAME is folded and
5466    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5467    choosing the first symbol if there are multiple choices.  */
5468
5469 struct block_symbol
5470 ada_lookup_symbol (const char *name, const struct block *block0,
5471                    domain_enum domain)
5472 {
5473   std::vector<struct block_symbol> candidates
5474     = ada_lookup_symbol_list (name, block0, domain);
5475
5476   if (candidates.empty ())
5477     return {};
5478
5479   block_symbol info = candidates[0];
5480   info.symbol = fixup_symbol_section (info.symbol, NULL);
5481   return info;
5482 }
5483
5484
5485 /* True iff STR is a possible encoded suffix of a normal Ada name
5486    that is to be ignored for matching purposes.  Suffixes of parallel
5487    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5488    are given by any of the regular expressions:
5489
5490    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5491    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5492    TKB              [subprogram suffix for task bodies]
5493    _E[0-9]+[bs]$    [protected object entry suffixes]
5494    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5495
5496    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5497    match is performed.  This sequence is used to differentiate homonyms,
5498    is an optional part of a valid name suffix.  */
5499
5500 static int
5501 is_name_suffix (const char *str)
5502 {
5503   int k;
5504   const char *matching;
5505   const int len = strlen (str);
5506
5507   /* Skip optional leading __[0-9]+.  */
5508
5509   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5510     {
5511       str += 3;
5512       while (isdigit (str[0]))
5513         str += 1;
5514     }
5515   
5516   /* [.$][0-9]+ */
5517
5518   if (str[0] == '.' || str[0] == '$')
5519     {
5520       matching = str + 1;
5521       while (isdigit (matching[0]))
5522         matching += 1;
5523       if (matching[0] == '\0')
5524         return 1;
5525     }
5526
5527   /* ___[0-9]+ */
5528
5529   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5530     {
5531       matching = str + 3;
5532       while (isdigit (matching[0]))
5533         matching += 1;
5534       if (matching[0] == '\0')
5535         return 1;
5536     }
5537
5538   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5539
5540   if (strcmp (str, "TKB") == 0)
5541     return 1;
5542
5543 #if 0
5544   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5545      with a N at the end.  Unfortunately, the compiler uses the same
5546      convention for other internal types it creates.  So treating
5547      all entity names that end with an "N" as a name suffix causes
5548      some regressions.  For instance, consider the case of an enumerated
5549      type.  To support the 'Image attribute, it creates an array whose
5550      name ends with N.
5551      Having a single character like this as a suffix carrying some
5552      information is a bit risky.  Perhaps we should change the encoding
5553      to be something like "_N" instead.  In the meantime, do not do
5554      the following check.  */
5555   /* Protected Object Subprograms */
5556   if (len == 1 && str [0] == 'N')
5557     return 1;
5558 #endif
5559
5560   /* _E[0-9]+[bs]$ */
5561   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5562     {
5563       matching = str + 3;
5564       while (isdigit (matching[0]))
5565         matching += 1;
5566       if ((matching[0] == 'b' || matching[0] == 's')
5567           && matching [1] == '\0')
5568         return 1;
5569     }
5570
5571   /* ??? We should not modify STR directly, as we are doing below.  This
5572      is fine in this case, but may become problematic later if we find
5573      that this alternative did not work, and want to try matching
5574      another one from the begining of STR.  Since we modified it, we
5575      won't be able to find the begining of the string anymore!  */
5576   if (str[0] == 'X')
5577     {
5578       str += 1;
5579       while (str[0] != '_' && str[0] != '\0')
5580         {
5581           if (str[0] != 'n' && str[0] != 'b')
5582             return 0;
5583           str += 1;
5584         }
5585     }
5586
5587   if (str[0] == '\000')
5588     return 1;
5589
5590   if (str[0] == '_')
5591     {
5592       if (str[1] != '_' || str[2] == '\000')
5593         return 0;
5594       if (str[2] == '_')
5595         {
5596           if (strcmp (str + 3, "JM") == 0)
5597             return 1;
5598           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5599              the LJM suffix in favor of the JM one.  But we will
5600              still accept LJM as a valid suffix for a reasonable
5601              amount of time, just to allow ourselves to debug programs
5602              compiled using an older version of GNAT.  */
5603           if (strcmp (str + 3, "LJM") == 0)
5604             return 1;
5605           if (str[3] != 'X')
5606             return 0;
5607           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5608               || str[4] == 'U' || str[4] == 'P')
5609             return 1;
5610           if (str[4] == 'R' && str[5] != 'T')
5611             return 1;
5612           return 0;
5613         }
5614       if (!isdigit (str[2]))
5615         return 0;
5616       for (k = 3; str[k] != '\0'; k += 1)
5617         if (!isdigit (str[k]) && str[k] != '_')
5618           return 0;
5619       return 1;
5620     }
5621   if (str[0] == '$' && isdigit (str[1]))
5622     {
5623       for (k = 2; str[k] != '\0'; k += 1)
5624         if (!isdigit (str[k]) && str[k] != '_')
5625           return 0;
5626       return 1;
5627     }
5628   return 0;
5629 }
5630
5631 /* Return non-zero if the string starting at NAME and ending before
5632    NAME_END contains no capital letters.  */
5633
5634 static int
5635 is_valid_name_for_wild_match (const char *name0)
5636 {
5637   std::string decoded_name = ada_decode (name0);
5638   int i;
5639
5640   /* If the decoded name starts with an angle bracket, it means that
5641      NAME0 does not follow the GNAT encoding format.  It should then
5642      not be allowed as a possible wild match.  */
5643   if (decoded_name[0] == '<')
5644     return 0;
5645
5646   for (i=0; decoded_name[i] != '\0'; i++)
5647     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5648       return 0;
5649
5650   return 1;
5651 }
5652
5653 /* Advance *NAMEP to next occurrence in the string NAME0 of the TARGET0
5654    character which could start a simple name.  Assumes that *NAMEP points
5655    somewhere inside the string beginning at NAME0.  */
5656
5657 static int
5658 advance_wild_match (const char **namep, const char *name0, char target0)
5659 {
5660   const char *name = *namep;
5661
5662   while (1)
5663     {
5664       char t0, t1;
5665
5666       t0 = *name;
5667       if (t0 == '_')
5668         {
5669           t1 = name[1];
5670           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
5671             {
5672               name += 1;
5673               if (name == name0 + 5 && startswith (name0, "_ada"))
5674                 break;
5675               else
5676                 name += 1;
5677             }
5678           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
5679                                  || name[2] == target0))
5680             {
5681               name += 2;
5682               break;
5683             }
5684           else if (t1 == '_' && name[2] == 'B' && name[3] == '_')
5685             {
5686               /* Names like "pkg__B_N__name", where N is a number, are
5687                  block-local.  We can handle these by simply skipping
5688                  the "B_" here.  */
5689               name += 4;
5690             }
5691           else
5692             return 0;
5693         }
5694       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
5695         name += 1;
5696       else
5697         return 0;
5698     }
5699
5700   *namep = name;
5701   return 1;
5702 }
5703
5704 /* Return true iff NAME encodes a name of the form prefix.PATN.
5705    Ignores any informational suffixes of NAME (i.e., for which
5706    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
5707    simple name.  */
5708
5709 static bool
5710 wild_match (const char *name, const char *patn)
5711 {
5712   const char *p;
5713   const char *name0 = name;
5714
5715   while (1)
5716     {
5717       const char *match = name;
5718
5719       if (*name == *patn)
5720         {
5721           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
5722             if (*p != *name)
5723               break;
5724           if (*p == '\0' && is_name_suffix (name))
5725             return match == name0 || is_valid_name_for_wild_match (name0);
5726
5727           if (name[-1] == '_')
5728             name -= 1;
5729         }
5730       if (!advance_wild_match (&name, name0, *patn))
5731         return false;
5732     }
5733 }
5734
5735 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to RESULT (if
5736    necessary).  OBJFILE is the section containing BLOCK.  */
5737
5738 static void
5739 ada_add_block_symbols (std::vector<struct block_symbol> &result,
5740                        const struct block *block,
5741                        const lookup_name_info &lookup_name,
5742                        domain_enum domain, struct objfile *objfile)
5743 {
5744   struct block_iterator iter;
5745   /* A matching argument symbol, if any.  */
5746   struct symbol *arg_sym;
5747   /* Set true when we find a matching non-argument symbol.  */
5748   bool found_sym;
5749   struct symbol *sym;
5750
5751   arg_sym = NULL;
5752   found_sym = false;
5753   for (sym = block_iter_match_first (block, lookup_name, &iter);
5754        sym != NULL;
5755        sym = block_iter_match_next (lookup_name, &iter))
5756     {
5757       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
5758         {
5759           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5760             {
5761               if (SYMBOL_IS_ARGUMENT (sym))
5762                 arg_sym = sym;
5763               else
5764                 {
5765                   found_sym = true;
5766                   add_defn_to_vec (result,
5767                                    fixup_symbol_section (sym, objfile),
5768                                    block);
5769                 }
5770             }
5771         }
5772     }
5773
5774   /* Handle renamings.  */
5775
5776   if (ada_add_block_renamings (result, block, lookup_name, domain))
5777     found_sym = true;
5778
5779   if (!found_sym && arg_sym != NULL)
5780     {
5781       add_defn_to_vec (result,
5782                        fixup_symbol_section (arg_sym, objfile),
5783                        block);
5784     }
5785
5786   if (!lookup_name.ada ().wild_match_p ())
5787     {
5788       arg_sym = NULL;
5789       found_sym = false;
5790       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
5791       const char *name = ada_lookup_name.c_str ();
5792       size_t name_len = ada_lookup_name.size ();
5793
5794       ALL_BLOCK_SYMBOLS (block, iter, sym)
5795       {
5796         if (symbol_matches_domain (sym->language (),
5797                                    SYMBOL_DOMAIN (sym), domain))
5798           {
5799             int cmp;
5800
5801             cmp = (int) '_' - (int) sym->linkage_name ()[0];
5802             if (cmp == 0)
5803               {
5804                 cmp = !startswith (sym->linkage_name (), "_ada_");
5805                 if (cmp == 0)
5806                   cmp = strncmp (name, sym->linkage_name () + 5,
5807                                  name_len);
5808               }
5809
5810             if (cmp == 0
5811                 && is_name_suffix (sym->linkage_name () + name_len + 5))
5812               {
5813                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
5814                   {
5815                     if (SYMBOL_IS_ARGUMENT (sym))
5816                       arg_sym = sym;
5817                     else
5818                       {
5819                         found_sym = true;
5820                         add_defn_to_vec (result,
5821                                          fixup_symbol_section (sym, objfile),
5822                                          block);
5823                       }
5824                   }
5825               }
5826           }
5827       }
5828
5829       /* NOTE: This really shouldn't be needed for _ada_ symbols.
5830          They aren't parameters, right?  */
5831       if (!found_sym && arg_sym != NULL)
5832         {
5833           add_defn_to_vec (result,
5834                            fixup_symbol_section (arg_sym, objfile),
5835                            block);
5836         }
5837     }
5838 }
5839 \f
5840
5841                                 /* Symbol Completion */
5842
5843 /* See symtab.h.  */
5844
5845 bool
5846 ada_lookup_name_info::matches
5847   (const char *sym_name,
5848    symbol_name_match_type match_type,
5849    completion_match_result *comp_match_res) const
5850 {
5851   bool match = false;
5852   const char *text = m_encoded_name.c_str ();
5853   size_t text_len = m_encoded_name.size ();
5854
5855   /* First, test against the fully qualified name of the symbol.  */
5856
5857   if (strncmp (sym_name, text, text_len) == 0)
5858     match = true;
5859
5860   std::string decoded_name = ada_decode (sym_name);
5861   if (match && !m_encoded_p)
5862     {
5863       /* One needed check before declaring a positive match is to verify
5864          that iff we are doing a verbatim match, the decoded version
5865          of the symbol name starts with '<'.  Otherwise, this symbol name
5866          is not a suitable completion.  */
5867
5868       bool has_angle_bracket = (decoded_name[0] == '<');
5869       match = (has_angle_bracket == m_verbatim_p);
5870     }
5871
5872   if (match && !m_verbatim_p)
5873     {
5874       /* When doing non-verbatim match, another check that needs to
5875          be done is to verify that the potentially matching symbol name
5876          does not include capital letters, because the ada-mode would
5877          not be able to understand these symbol names without the
5878          angle bracket notation.  */
5879       const char *tmp;
5880
5881       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
5882       if (*tmp != '\0')
5883         match = false;
5884     }
5885
5886   /* Second: Try wild matching...  */
5887
5888   if (!match && m_wild_match_p)
5889     {
5890       /* Since we are doing wild matching, this means that TEXT
5891          may represent an unqualified symbol name.  We therefore must
5892          also compare TEXT against the unqualified name of the symbol.  */
5893       sym_name = ada_unqualified_name (decoded_name.c_str ());
5894
5895       if (strncmp (sym_name, text, text_len) == 0)
5896         match = true;
5897     }
5898
5899   /* Finally: If we found a match, prepare the result to return.  */
5900
5901   if (!match)
5902     return false;
5903
5904   if (comp_match_res != NULL)
5905     {
5906       std::string &match_str = comp_match_res->match.storage ();
5907
5908       if (!m_encoded_p)
5909         match_str = ada_decode (sym_name);
5910       else
5911         {
5912           if (m_verbatim_p)
5913             match_str = add_angle_brackets (sym_name);
5914           else
5915             match_str = sym_name;
5916
5917         }
5918
5919       comp_match_res->set_match (match_str.c_str ());
5920     }
5921
5922   return true;
5923 }
5924
5925                                 /* Field Access */
5926
5927 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
5928    for tagged types.  */
5929
5930 static int
5931 ada_is_dispatch_table_ptr_type (struct type *type)
5932 {
5933   const char *name;
5934
5935   if (type->code () != TYPE_CODE_PTR)
5936     return 0;
5937
5938   name = TYPE_TARGET_TYPE (type)->name ();
5939   if (name == NULL)
5940     return 0;
5941
5942   return (strcmp (name, "ada__tags__dispatch_table") == 0);
5943 }
5944
5945 /* Return non-zero if TYPE is an interface tag.  */
5946
5947 static int
5948 ada_is_interface_tag (struct type *type)
5949 {
5950   const char *name = type->name ();
5951
5952   if (name == NULL)
5953     return 0;
5954
5955   return (strcmp (name, "ada__tags__interface_tag") == 0);
5956 }
5957
5958 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
5959    to be invisible to users.  */
5960
5961 int
5962 ada_is_ignored_field (struct type *type, int field_num)
5963 {
5964   if (field_num < 0 || field_num > type->num_fields ())
5965     return 1;
5966
5967   /* Check the name of that field.  */
5968   {
5969     const char *name = type->field (field_num).name ();
5970
5971     /* Anonymous field names should not be printed.
5972        brobecker/2007-02-20: I don't think this can actually happen
5973        but we don't want to print the value of anonymous fields anyway.  */
5974     if (name == NULL)
5975       return 1;
5976
5977     /* Normally, fields whose name start with an underscore ("_")
5978        are fields that have been internally generated by the compiler,
5979        and thus should not be printed.  The "_parent" field is special,
5980        however: This is a field internally generated by the compiler
5981        for tagged types, and it contains the components inherited from
5982        the parent type.  This field should not be printed as is, but
5983        should not be ignored either.  */
5984     if (name[0] == '_' && !startswith (name, "_parent"))
5985       return 1;
5986   }
5987
5988   /* If this is the dispatch table of a tagged type or an interface tag,
5989      then ignore.  */
5990   if (ada_is_tagged_type (type, 1)
5991       && (ada_is_dispatch_table_ptr_type (type->field (field_num).type ())
5992           || ada_is_interface_tag (type->field (field_num).type ())))
5993     return 1;
5994
5995   /* Not a special field, so it should not be ignored.  */
5996   return 0;
5997 }
5998
5999 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6000    pointer or reference type whose ultimate target has a tag field.  */
6001
6002 int
6003 ada_is_tagged_type (struct type *type, int refok)
6004 {
6005   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6006 }
6007
6008 /* True iff TYPE represents the type of X'Tag */
6009
6010 int
6011 ada_is_tag_type (struct type *type)
6012 {
6013   type = ada_check_typedef (type);
6014
6015   if (type == NULL || type->code () != TYPE_CODE_PTR)
6016     return 0;
6017   else
6018     {
6019       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6020
6021       return (name != NULL
6022               && strcmp (name, "ada__tags__dispatch_table") == 0);
6023     }
6024 }
6025
6026 /* The type of the tag on VAL.  */
6027
6028 static struct type *
6029 ada_tag_type (struct value *val)
6030 {
6031   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6032 }
6033
6034 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6035    retired at Ada 05).  */
6036
6037 static int
6038 is_ada95_tag (struct value *tag)
6039 {
6040   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6041 }
6042
6043 /* The value of the tag on VAL.  */
6044
6045 static struct value *
6046 ada_value_tag (struct value *val)
6047 {
6048   return ada_value_struct_elt (val, "_tag", 0);
6049 }
6050
6051 /* The value of the tag on the object of type TYPE whose contents are
6052    saved at VALADDR, if it is non-null, or is at memory address
6053    ADDRESS.  */
6054
6055 static struct value *
6056 value_tag_from_contents_and_address (struct type *type,
6057                                      const gdb_byte *valaddr,
6058                                      CORE_ADDR address)
6059 {
6060   int tag_byte_offset;
6061   struct type *tag_type;
6062
6063   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6064                          NULL, NULL, NULL))
6065     {
6066       const gdb_byte *valaddr1 = ((valaddr == NULL)
6067                                   ? NULL
6068                                   : valaddr + tag_byte_offset);
6069       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6070
6071       return value_from_contents_and_address (tag_type, valaddr1, address1);
6072     }
6073   return NULL;
6074 }
6075
6076 static struct type *
6077 type_from_tag (struct value *tag)
6078 {
6079   gdb::unique_xmalloc_ptr<char> type_name = ada_tag_name (tag);
6080
6081   if (type_name != NULL)
6082     return ada_find_any_type (ada_encode (type_name.get ()).c_str ());
6083   return NULL;
6084 }
6085
6086 /* Given a value OBJ of a tagged type, return a value of this
6087    type at the base address of the object.  The base address, as
6088    defined in Ada.Tags, it is the address of the primary tag of
6089    the object, and therefore where the field values of its full
6090    view can be fetched.  */
6091
6092 struct value *
6093 ada_tag_value_at_base_address (struct value *obj)
6094 {
6095   struct value *val;
6096   LONGEST offset_to_top = 0;
6097   struct type *ptr_type, *obj_type;
6098   struct value *tag;
6099   CORE_ADDR base_address;
6100
6101   obj_type = value_type (obj);
6102
6103   /* It is the responsability of the caller to deref pointers.  */
6104
6105   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6106     return obj;
6107
6108   tag = ada_value_tag (obj);
6109   if (!tag)
6110     return obj;
6111
6112   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6113
6114   if (is_ada95_tag (tag))
6115     return obj;
6116
6117   ptr_type = language_lookup_primitive_type
6118     (language_def (language_ada), target_gdbarch(), "storage_offset");
6119   ptr_type = lookup_pointer_type (ptr_type);
6120   val = value_cast (ptr_type, tag);
6121   if (!val)
6122     return obj;
6123
6124   /* It is perfectly possible that an exception be raised while
6125      trying to determine the base address, just like for the tag;
6126      see ada_tag_name for more details.  We do not print the error
6127      message for the same reason.  */
6128
6129   try
6130     {
6131       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6132     }
6133
6134   catch (const gdb_exception_error &e)
6135     {
6136       return obj;
6137     }
6138
6139   /* If offset is null, nothing to do.  */
6140
6141   if (offset_to_top == 0)
6142     return obj;
6143
6144   /* -1 is a special case in Ada.Tags; however, what should be done
6145      is not quite clear from the documentation.  So do nothing for
6146      now.  */
6147
6148   if (offset_to_top == -1)
6149     return obj;
6150
6151   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6152      from the base address.  This was however incompatible with
6153      C++ dispatch table: C++ uses a *negative* value to *add*
6154      to the base address.  Ada's convention has therefore been
6155      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6156      use the same convention.  Here, we support both cases by
6157      checking the sign of OFFSET_TO_TOP.  */
6158
6159   if (offset_to_top > 0)
6160     offset_to_top = -offset_to_top;
6161
6162   base_address = value_address (obj) + offset_to_top;
6163   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6164
6165   /* Make sure that we have a proper tag at the new address.
6166      Otherwise, offset_to_top is bogus (which can happen when
6167      the object is not initialized yet).  */
6168
6169   if (!tag)
6170     return obj;
6171
6172   obj_type = type_from_tag (tag);
6173
6174   if (!obj_type)
6175     return obj;
6176
6177   return value_from_contents_and_address (obj_type, NULL, base_address);
6178 }
6179
6180 /* Return the "ada__tags__type_specific_data" type.  */
6181
6182 static struct type *
6183 ada_get_tsd_type (struct inferior *inf)
6184 {
6185   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6186
6187   if (data->tsd_type == 0)
6188     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6189   return data->tsd_type;
6190 }
6191
6192 /* Return the TSD (type-specific data) associated to the given TAG.
6193    TAG is assumed to be the tag of a tagged-type entity.
6194
6195    May return NULL if we are unable to get the TSD.  */
6196
6197 static struct value *
6198 ada_get_tsd_from_tag (struct value *tag)
6199 {
6200   struct value *val;
6201   struct type *type;
6202
6203   /* First option: The TSD is simply stored as a field of our TAG.
6204      Only older versions of GNAT would use this format, but we have
6205      to test it first, because there are no visible markers for
6206      the current approach except the absence of that field.  */
6207
6208   val = ada_value_struct_elt (tag, "tsd", 1);
6209   if (val)
6210     return val;
6211
6212   /* Try the second representation for the dispatch table (in which
6213      there is no explicit 'tsd' field in the referent of the tag pointer,
6214      and instead the tsd pointer is stored just before the dispatch
6215      table.  */
6216
6217   type = ada_get_tsd_type (current_inferior());
6218   if (type == NULL)
6219     return NULL;
6220   type = lookup_pointer_type (lookup_pointer_type (type));
6221   val = value_cast (type, tag);
6222   if (val == NULL)
6223     return NULL;
6224   return value_ind (value_ptradd (val, -1));
6225 }
6226
6227 /* Given the TSD of a tag (type-specific data), return a string
6228    containing the name of the associated type.
6229
6230    May return NULL if we are unable to determine the tag name.  */
6231
6232 static gdb::unique_xmalloc_ptr<char>
6233 ada_tag_name_from_tsd (struct value *tsd)
6234 {
6235   char *p;
6236   struct value *val;
6237
6238   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6239   if (val == NULL)
6240     return NULL;
6241   gdb::unique_xmalloc_ptr<char> buffer
6242     = target_read_string (value_as_address (val), INT_MAX);
6243   if (buffer == nullptr)
6244     return nullptr;
6245
6246   for (p = buffer.get (); *p != '\0'; ++p)
6247     {
6248       if (isalpha (*p))
6249         *p = tolower (*p);
6250     }
6251
6252   return buffer;
6253 }
6254
6255 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6256    a C string.
6257
6258    Return NULL if the TAG is not an Ada tag, or if we were unable to
6259    determine the name of that tag.  */
6260
6261 gdb::unique_xmalloc_ptr<char>
6262 ada_tag_name (struct value *tag)
6263 {
6264   gdb::unique_xmalloc_ptr<char> name;
6265
6266   if (!ada_is_tag_type (value_type (tag)))
6267     return NULL;
6268
6269   /* It is perfectly possible that an exception be raised while trying
6270      to determine the TAG's name, even under normal circumstances:
6271      The associated variable may be uninitialized or corrupted, for
6272      instance. We do not let any exception propagate past this point.
6273      instead we return NULL.
6274
6275      We also do not print the error message either (which often is very
6276      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6277      the caller print a more meaningful message if necessary.  */
6278   try
6279     {
6280       struct value *tsd = ada_get_tsd_from_tag (tag);
6281
6282       if (tsd != NULL)
6283         name = ada_tag_name_from_tsd (tsd);
6284     }
6285   catch (const gdb_exception_error &e)
6286     {
6287     }
6288
6289   return name;
6290 }
6291
6292 /* The parent type of TYPE, or NULL if none.  */
6293
6294 struct type *
6295 ada_parent_type (struct type *type)
6296 {
6297   int i;
6298
6299   type = ada_check_typedef (type);
6300
6301   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6302     return NULL;
6303
6304   for (i = 0; i < type->num_fields (); i += 1)
6305     if (ada_is_parent_field (type, i))
6306       {
6307         struct type *parent_type = type->field (i).type ();
6308
6309         /* If the _parent field is a pointer, then dereference it.  */
6310         if (parent_type->code () == TYPE_CODE_PTR)
6311           parent_type = TYPE_TARGET_TYPE (parent_type);
6312         /* If there is a parallel XVS type, get the actual base type.  */
6313         parent_type = ada_get_base_type (parent_type);
6314
6315         return ada_check_typedef (parent_type);
6316       }
6317
6318   return NULL;
6319 }
6320
6321 /* True iff field number FIELD_NUM of structure type TYPE contains the
6322    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6323    a structure type with at least FIELD_NUM+1 fields.  */
6324
6325 int
6326 ada_is_parent_field (struct type *type, int field_num)
6327 {
6328   const char *name = ada_check_typedef (type)->field (field_num).name ();
6329
6330   return (name != NULL
6331           && (startswith (name, "PARENT")
6332               || startswith (name, "_parent")));
6333 }
6334
6335 /* True iff field number FIELD_NUM of structure type TYPE is a
6336    transparent wrapper field (which should be silently traversed when doing
6337    field selection and flattened when printing).  Assumes TYPE is a
6338    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6339    structures.  */
6340
6341 int
6342 ada_is_wrapper_field (struct type *type, int field_num)
6343 {
6344   const char *name = type->field (field_num).name ();
6345
6346   if (name != NULL && strcmp (name, "RETVAL") == 0)
6347     {
6348       /* This happens in functions with "out" or "in out" parameters
6349          which are passed by copy.  For such functions, GNAT describes
6350          the function's return type as being a struct where the return
6351          value is in a field called RETVAL, and where the other "out"
6352          or "in out" parameters are fields of that struct.  This is not
6353          a wrapper.  */
6354       return 0;
6355     }
6356
6357   return (name != NULL
6358           && (startswith (name, "PARENT")
6359               || strcmp (name, "REP") == 0
6360               || startswith (name, "_parent")
6361               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6362 }
6363
6364 /* True iff field number FIELD_NUM of structure or union type TYPE
6365    is a variant wrapper.  Assumes TYPE is a structure type with at least
6366    FIELD_NUM+1 fields.  */
6367
6368 int
6369 ada_is_variant_part (struct type *type, int field_num)
6370 {
6371   /* Only Ada types are eligible.  */
6372   if (!ADA_TYPE_P (type))
6373     return 0;
6374
6375   struct type *field_type = type->field (field_num).type ();
6376
6377   return (field_type->code () == TYPE_CODE_UNION
6378           || (is_dynamic_field (type, field_num)
6379               && (TYPE_TARGET_TYPE (field_type)->code ()
6380                   == TYPE_CODE_UNION)));
6381 }
6382
6383 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6384    whose discriminants are contained in the record type OUTER_TYPE,
6385    returns the type of the controlling discriminant for the variant.
6386    May return NULL if the type could not be found.  */
6387
6388 struct type *
6389 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6390 {
6391   const char *name = ada_variant_discrim_name (var_type);
6392
6393   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6394 }
6395
6396 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6397    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6398    represents a 'when others' clause; otherwise 0.  */
6399
6400 static int
6401 ada_is_others_clause (struct type *type, int field_num)
6402 {
6403   const char *name = type->field (field_num).name ();
6404
6405   return (name != NULL && name[0] == 'O');
6406 }
6407
6408 /* Assuming that TYPE0 is the type of the variant part of a record,
6409    returns the name of the discriminant controlling the variant.
6410    The value is valid until the next call to ada_variant_discrim_name.  */
6411
6412 const char *
6413 ada_variant_discrim_name (struct type *type0)
6414 {
6415   static std::string result;
6416   struct type *type;
6417   const char *name;
6418   const char *discrim_end;
6419   const char *discrim_start;
6420
6421   if (type0->code () == TYPE_CODE_PTR)
6422     type = TYPE_TARGET_TYPE (type0);
6423   else
6424     type = type0;
6425
6426   name = ada_type_name (type);
6427
6428   if (name == NULL || name[0] == '\000')
6429     return "";
6430
6431   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6432        discrim_end -= 1)
6433     {
6434       if (startswith (discrim_end, "___XVN"))
6435         break;
6436     }
6437   if (discrim_end == name)
6438     return "";
6439
6440   for (discrim_start = discrim_end; discrim_start != name + 3;
6441        discrim_start -= 1)
6442     {
6443       if (discrim_start == name + 1)
6444         return "";
6445       if ((discrim_start > name + 3
6446            && startswith (discrim_start - 3, "___"))
6447           || discrim_start[-1] == '.')
6448         break;
6449     }
6450
6451   result = std::string (discrim_start, discrim_end - discrim_start);
6452   return result.c_str ();
6453 }
6454
6455 /* Scan STR for a subtype-encoded number, beginning at position K.
6456    Put the position of the character just past the number scanned in
6457    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6458    Return 1 if there was a valid number at the given position, and 0
6459    otherwise.  A "subtype-encoded" number consists of the absolute value
6460    in decimal, followed by the letter 'm' to indicate a negative number.
6461    Assumes 0m does not occur.  */
6462
6463 int
6464 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6465 {
6466   ULONGEST RU;
6467
6468   if (!isdigit (str[k]))
6469     return 0;
6470
6471   /* Do it the hard way so as not to make any assumption about
6472      the relationship of unsigned long (%lu scan format code) and
6473      LONGEST.  */
6474   RU = 0;
6475   while (isdigit (str[k]))
6476     {
6477       RU = RU * 10 + (str[k] - '0');
6478       k += 1;
6479     }
6480
6481   if (str[k] == 'm')
6482     {
6483       if (R != NULL)
6484         *R = (-(LONGEST) (RU - 1)) - 1;
6485       k += 1;
6486     }
6487   else if (R != NULL)
6488     *R = (LONGEST) RU;
6489
6490   /* NOTE on the above: Technically, C does not say what the results of
6491      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6492      number representable as a LONGEST (although either would probably work
6493      in most implementations).  When RU>0, the locution in the then branch
6494      above is always equivalent to the negative of RU.  */
6495
6496   if (new_k != NULL)
6497     *new_k = k;
6498   return 1;
6499 }
6500
6501 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6502    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6503    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6504
6505 static int
6506 ada_in_variant (LONGEST val, struct type *type, int field_num)
6507 {
6508   const char *name = type->field (field_num).name ();
6509   int p;
6510
6511   p = 0;
6512   while (1)
6513     {
6514       switch (name[p])
6515         {
6516         case '\0':
6517           return 0;
6518         case 'S':
6519           {
6520             LONGEST W;
6521
6522             if (!ada_scan_number (name, p + 1, &W, &p))
6523               return 0;
6524             if (val == W)
6525               return 1;
6526             break;
6527           }
6528         case 'R':
6529           {
6530             LONGEST L, U;
6531
6532             if (!ada_scan_number (name, p + 1, &L, &p)
6533                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6534               return 0;
6535             if (val >= L && val <= U)
6536               return 1;
6537             break;
6538           }
6539         case 'O':
6540           return 1;
6541         default:
6542           return 0;
6543         }
6544     }
6545 }
6546
6547 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
6548
6549 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6550    ARG_TYPE, extract and return the value of one of its (non-static)
6551    fields.  FIELDNO says which field.   Differs from value_primitive_field
6552    only in that it can handle packed values of arbitrary type.  */
6553
6554 struct value *
6555 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6556                            struct type *arg_type)
6557 {
6558   struct type *type;
6559
6560   arg_type = ada_check_typedef (arg_type);
6561   type = arg_type->field (fieldno).type ();
6562
6563   /* Handle packed fields.  It might be that the field is not packed
6564      relative to its containing structure, but the structure itself is
6565      packed; in this case we must take the bit-field path.  */
6566   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
6567     {
6568       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6569       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6570
6571       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6572                                              offset + bit_pos / 8,
6573                                              bit_pos % 8, bit_size, type);
6574     }
6575   else
6576     return value_primitive_field (arg1, offset, fieldno, arg_type);
6577 }
6578
6579 /* Find field with name NAME in object of type TYPE.  If found, 
6580    set the following for each argument that is non-null:
6581     - *FIELD_TYPE_P to the field's type; 
6582     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
6583       an object of that type;
6584     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
6585     - *BIT_SIZE_P to its size in bits if the field is packed, and 
6586       0 otherwise;
6587    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6588    fields up to but not including the desired field, or by the total
6589    number of fields if not found.   A NULL value of NAME never
6590    matches; the function just counts visible fields in this case.
6591    
6592    Notice that we need to handle when a tagged record hierarchy
6593    has some components with the same name, like in this scenario:
6594
6595       type Top_T is tagged record
6596          N : Integer := 1;
6597          U : Integer := 974;
6598          A : Integer := 48;
6599       end record;
6600
6601       type Middle_T is new Top.Top_T with record
6602          N : Character := 'a';
6603          C : Integer := 3;
6604       end record;
6605
6606      type Bottom_T is new Middle.Middle_T with record
6607         N : Float := 4.0;
6608         C : Character := '5';
6609         X : Integer := 6;
6610         A : Character := 'J';
6611      end record;
6612
6613    Let's say we now have a variable declared and initialized as follow:
6614
6615      TC : Top_A := new Bottom_T;
6616
6617    And then we use this variable to call this function
6618
6619      procedure Assign (Obj: in out Top_T; TV : Integer);
6620
6621    as follow:
6622
6623       Assign (Top_T (B), 12);
6624
6625    Now, we're in the debugger, and we're inside that procedure
6626    then and we want to print the value of obj.c:
6627
6628    Usually, the tagged record or one of the parent type owns the
6629    component to print and there's no issue but in this particular
6630    case, what does it mean to ask for Obj.C? Since the actual
6631    type for object is type Bottom_T, it could mean two things: type
6632    component C from the Middle_T view, but also component C from
6633    Bottom_T.  So in that "undefined" case, when the component is
6634    not found in the non-resolved type (which includes all the
6635    components of the parent type), then resolve it and see if we
6636    get better luck once expanded.
6637
6638    In the case of homonyms in the derived tagged type, we don't
6639    guaranty anything, and pick the one that's easiest for us
6640    to program.
6641
6642    Returns 1 if found, 0 otherwise.  */
6643
6644 static int
6645 find_struct_field (const char *name, struct type *type, int offset,
6646                    struct type **field_type_p,
6647                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
6648                    int *index_p)
6649 {
6650   int i;
6651   int parent_offset = -1;
6652
6653   type = ada_check_typedef (type);
6654
6655   if (field_type_p != NULL)
6656     *field_type_p = NULL;
6657   if (byte_offset_p != NULL)
6658     *byte_offset_p = 0;
6659   if (bit_offset_p != NULL)
6660     *bit_offset_p = 0;
6661   if (bit_size_p != NULL)
6662     *bit_size_p = 0;
6663
6664   for (i = 0; i < type->num_fields (); i += 1)
6665     {
6666       int bit_pos = TYPE_FIELD_BITPOS (type, i);
6667       int fld_offset = offset + bit_pos / 8;
6668       const char *t_field_name = type->field (i).name ();
6669
6670       if (t_field_name == NULL)
6671         continue;
6672
6673       else if (ada_is_parent_field (type, i))
6674         {
6675           /* This is a field pointing us to the parent type of a tagged
6676              type.  As hinted in this function's documentation, we give
6677              preference to fields in the current record first, so what
6678              we do here is just record the index of this field before
6679              we skip it.  If it turns out we couldn't find our field
6680              in the current record, then we'll get back to it and search
6681              inside it whether the field might exist in the parent.  */
6682
6683           parent_offset = i;
6684           continue;
6685         }
6686
6687       else if (name != NULL && field_name_match (t_field_name, name))
6688         {
6689           int bit_size = TYPE_FIELD_BITSIZE (type, i);
6690
6691           if (field_type_p != NULL)
6692             *field_type_p = type->field (i).type ();
6693           if (byte_offset_p != NULL)
6694             *byte_offset_p = fld_offset;
6695           if (bit_offset_p != NULL)
6696             *bit_offset_p = bit_pos % 8;
6697           if (bit_size_p != NULL)
6698             *bit_size_p = bit_size;
6699           return 1;
6700         }
6701       else if (ada_is_wrapper_field (type, i))
6702         {
6703           if (find_struct_field (name, type->field (i).type (), fld_offset,
6704                                  field_type_p, byte_offset_p, bit_offset_p,
6705                                  bit_size_p, index_p))
6706             return 1;
6707         }
6708       else if (ada_is_variant_part (type, i))
6709         {
6710           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
6711              fixed type?? */
6712           int j;
6713           struct type *field_type
6714             = ada_check_typedef (type->field (i).type ());
6715
6716           for (j = 0; j < field_type->num_fields (); j += 1)
6717             {
6718               if (find_struct_field (name, field_type->field (j).type (),
6719                                      fld_offset
6720                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
6721                                      field_type_p, byte_offset_p,
6722                                      bit_offset_p, bit_size_p, index_p))
6723                 return 1;
6724             }
6725         }
6726       else if (index_p != NULL)
6727         *index_p += 1;
6728     }
6729
6730   /* Field not found so far.  If this is a tagged type which
6731      has a parent, try finding that field in the parent now.  */
6732
6733   if (parent_offset != -1)
6734     {
6735       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
6736       int fld_offset = offset + bit_pos / 8;
6737
6738       if (find_struct_field (name, type->field (parent_offset).type (),
6739                              fld_offset, field_type_p, byte_offset_p,
6740                              bit_offset_p, bit_size_p, index_p))
6741         return 1;
6742     }
6743
6744   return 0;
6745 }
6746
6747 /* Number of user-visible fields in record type TYPE.  */
6748
6749 static int
6750 num_visible_fields (struct type *type)
6751 {
6752   int n;
6753
6754   n = 0;
6755   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
6756   return n;
6757 }
6758
6759 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
6760    and search in it assuming it has (class) type TYPE.
6761    If found, return value, else return NULL.
6762
6763    Searches recursively through wrapper fields (e.g., '_parent').
6764
6765    In the case of homonyms in the tagged types, please refer to the
6766    long explanation in find_struct_field's function documentation.  */
6767
6768 static struct value *
6769 ada_search_struct_field (const char *name, struct value *arg, int offset,
6770                          struct type *type)
6771 {
6772   int i;
6773   int parent_offset = -1;
6774
6775   type = ada_check_typedef (type);
6776   for (i = 0; i < type->num_fields (); i += 1)
6777     {
6778       const char *t_field_name = type->field (i).name ();
6779
6780       if (t_field_name == NULL)
6781         continue;
6782
6783       else if (ada_is_parent_field (type, i))
6784         {
6785           /* This is a field pointing us to the parent type of a tagged
6786              type.  As hinted in this function's documentation, we give
6787              preference to fields in the current record first, so what
6788              we do here is just record the index of this field before
6789              we skip it.  If it turns out we couldn't find our field
6790              in the current record, then we'll get back to it and search
6791              inside it whether the field might exist in the parent.  */
6792
6793           parent_offset = i;
6794           continue;
6795         }
6796
6797       else if (field_name_match (t_field_name, name))
6798         return ada_value_primitive_field (arg, offset, i, type);
6799
6800       else if (ada_is_wrapper_field (type, i))
6801         {
6802           struct value *v =     /* Do not let indent join lines here.  */
6803             ada_search_struct_field (name, arg,
6804                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
6805                                      type->field (i).type ());
6806
6807           if (v != NULL)
6808             return v;
6809         }
6810
6811       else if (ada_is_variant_part (type, i))
6812         {
6813           /* PNH: Do we ever get here?  See find_struct_field.  */
6814           int j;
6815           struct type *field_type = ada_check_typedef (type->field (i).type ());
6816           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
6817
6818           for (j = 0; j < field_type->num_fields (); j += 1)
6819             {
6820               struct value *v = ada_search_struct_field /* Force line
6821                                                            break.  */
6822                 (name, arg,
6823                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
6824                  field_type->field (j).type ());
6825
6826               if (v != NULL)
6827                 return v;
6828             }
6829         }
6830     }
6831
6832   /* Field not found so far.  If this is a tagged type which
6833      has a parent, try finding that field in the parent now.  */
6834
6835   if (parent_offset != -1)
6836     {
6837       struct value *v = ada_search_struct_field (
6838         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
6839         type->field (parent_offset).type ());
6840
6841       if (v != NULL)
6842         return v;
6843     }
6844
6845   return NULL;
6846 }
6847
6848 static struct value *ada_index_struct_field_1 (int *, struct value *,
6849                                                int, struct type *);
6850
6851
6852 /* Return field #INDEX in ARG, where the index is that returned by
6853  * find_struct_field through its INDEX_P argument.  Adjust the address
6854  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
6855  * If found, return value, else return NULL.  */
6856
6857 static struct value *
6858 ada_index_struct_field (int index, struct value *arg, int offset,
6859                         struct type *type)
6860 {
6861   return ada_index_struct_field_1 (&index, arg, offset, type);
6862 }
6863
6864
6865 /* Auxiliary function for ada_index_struct_field.  Like
6866  * ada_index_struct_field, but takes index from *INDEX_P and modifies
6867  * *INDEX_P.  */
6868
6869 static struct value *
6870 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
6871                           struct type *type)
6872 {
6873   int i;
6874   type = ada_check_typedef (type);
6875
6876   for (i = 0; i < type->num_fields (); i += 1)
6877     {
6878       if (type->field (i).name () == NULL)
6879         continue;
6880       else if (ada_is_wrapper_field (type, i))
6881         {
6882           struct value *v =     /* Do not let indent join lines here.  */
6883             ada_index_struct_field_1 (index_p, arg,
6884                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
6885                                       type->field (i).type ());
6886
6887           if (v != NULL)
6888             return v;
6889         }
6890
6891       else if (ada_is_variant_part (type, i))
6892         {
6893           /* PNH: Do we ever get here?  See ada_search_struct_field,
6894              find_struct_field.  */
6895           error (_("Cannot assign this kind of variant record"));
6896         }
6897       else if (*index_p == 0)
6898         return ada_value_primitive_field (arg, offset, i, type);
6899       else
6900         *index_p -= 1;
6901     }
6902   return NULL;
6903 }
6904
6905 /* Return a string representation of type TYPE.  */
6906
6907 static std::string
6908 type_as_string (struct type *type)
6909 {
6910   string_file tmp_stream;
6911
6912   type_print (type, "", &tmp_stream, -1);
6913
6914   return std::move (tmp_stream.string ());
6915 }
6916
6917 /* Given a type TYPE, look up the type of the component of type named NAME.
6918    If DISPP is non-null, add its byte displacement from the beginning of a
6919    structure (pointed to by a value) of type TYPE to *DISPP (does not
6920    work for packed fields).
6921
6922    Matches any field whose name has NAME as a prefix, possibly
6923    followed by "___".
6924
6925    TYPE can be either a struct or union.  If REFOK, TYPE may also 
6926    be a (pointer or reference)+ to a struct or union, and the
6927    ultimate target type will be searched.
6928
6929    Looks recursively into variant clauses and parent types.
6930
6931    In the case of homonyms in the tagged types, please refer to the
6932    long explanation in find_struct_field's function documentation.
6933
6934    If NOERR is nonzero, return NULL if NAME is not suitably defined or
6935    TYPE is not a type of the right kind.  */
6936
6937 static struct type *
6938 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
6939                             int noerr)
6940 {
6941   int i;
6942   int parent_offset = -1;
6943
6944   if (name == NULL)
6945     goto BadName;
6946
6947   if (refok && type != NULL)
6948     while (1)
6949       {
6950         type = ada_check_typedef (type);
6951         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
6952           break;
6953         type = TYPE_TARGET_TYPE (type);
6954       }
6955
6956   if (type == NULL
6957       || (type->code () != TYPE_CODE_STRUCT
6958           && type->code () != TYPE_CODE_UNION))
6959     {
6960       if (noerr)
6961         return NULL;
6962
6963       error (_("Type %s is not a structure or union type"),
6964              type != NULL ? type_as_string (type).c_str () : _("(null)"));
6965     }
6966
6967   type = to_static_fixed_type (type);
6968
6969   for (i = 0; i < type->num_fields (); i += 1)
6970     {
6971       const char *t_field_name = type->field (i).name ();
6972       struct type *t;
6973
6974       if (t_field_name == NULL)
6975         continue;
6976
6977       else if (ada_is_parent_field (type, i))
6978         {
6979           /* This is a field pointing us to the parent type of a tagged
6980              type.  As hinted in this function's documentation, we give
6981              preference to fields in the current record first, so what
6982              we do here is just record the index of this field before
6983              we skip it.  If it turns out we couldn't find our field
6984              in the current record, then we'll get back to it and search
6985              inside it whether the field might exist in the parent.  */
6986
6987           parent_offset = i;
6988           continue;
6989         }
6990
6991       else if (field_name_match (t_field_name, name))
6992         return type->field (i).type ();
6993
6994       else if (ada_is_wrapper_field (type, i))
6995         {
6996           t = ada_lookup_struct_elt_type (type->field (i).type (), name,
6997                                           0, 1);
6998           if (t != NULL)
6999             return t;
7000         }
7001
7002       else if (ada_is_variant_part (type, i))
7003         {
7004           int j;
7005           struct type *field_type = ada_check_typedef (type->field (i).type ());
7006
7007           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7008             {
7009               /* FIXME pnh 2008/01/26: We check for a field that is
7010                  NOT wrapped in a struct, since the compiler sometimes
7011                  generates these for unchecked variant types.  Revisit
7012                  if the compiler changes this practice.  */
7013               const char *v_field_name = field_type->field (j).name ();
7014
7015               if (v_field_name != NULL 
7016                   && field_name_match (v_field_name, name))
7017                 t = field_type->field (j).type ();
7018               else
7019                 t = ada_lookup_struct_elt_type (field_type->field (j).type (),
7020                                                 name, 0, 1);
7021
7022               if (t != NULL)
7023                 return t;
7024             }
7025         }
7026
7027     }
7028
7029     /* Field not found so far.  If this is a tagged type which
7030        has a parent, try finding that field in the parent now.  */
7031
7032     if (parent_offset != -1)
7033       {
7034         struct type *t;
7035
7036         t = ada_lookup_struct_elt_type (type->field (parent_offset).type (),
7037                                         name, 0, 1);
7038         if (t != NULL)
7039           return t;
7040       }
7041
7042 BadName:
7043   if (!noerr)
7044     {
7045       const char *name_str = name != NULL ? name : _("<null>");
7046
7047       error (_("Type %s has no component named %s"),
7048              type_as_string (type).c_str (), name_str);
7049     }
7050
7051   return NULL;
7052 }
7053
7054 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7055    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7056    represents an unchecked union (that is, the variant part of a
7057    record that is named in an Unchecked_Union pragma).  */
7058
7059 static int
7060 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7061 {
7062   const char *discrim_name = ada_variant_discrim_name (var_type);
7063
7064   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7065 }
7066
7067
7068 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7069    within OUTER, determine which variant clause (field number in VAR_TYPE,
7070    numbering from 0) is applicable.  Returns -1 if none are.  */
7071
7072 int
7073 ada_which_variant_applies (struct type *var_type, struct value *outer)
7074 {
7075   int others_clause;
7076   int i;
7077   const char *discrim_name = ada_variant_discrim_name (var_type);
7078   struct value *discrim;
7079   LONGEST discrim_val;
7080
7081   /* Using plain value_from_contents_and_address here causes problems
7082      because we will end up trying to resolve a type that is currently
7083      being constructed.  */
7084   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7085   if (discrim == NULL)
7086     return -1;
7087   discrim_val = value_as_long (discrim);
7088
7089   others_clause = -1;
7090   for (i = 0; i < var_type->num_fields (); i += 1)
7091     {
7092       if (ada_is_others_clause (var_type, i))
7093         others_clause = i;
7094       else if (ada_in_variant (discrim_val, var_type, i))
7095         return i;
7096     }
7097
7098   return others_clause;
7099 }
7100 \f
7101
7102
7103                                 /* Dynamic-Sized Records */
7104
7105 /* Strategy: The type ostensibly attached to a value with dynamic size
7106    (i.e., a size that is not statically recorded in the debugging
7107    data) does not accurately reflect the size or layout of the value.
7108    Our strategy is to convert these values to values with accurate,
7109    conventional types that are constructed on the fly.  */
7110
7111 /* There is a subtle and tricky problem here.  In general, we cannot
7112    determine the size of dynamic records without its data.  However,
7113    the 'struct value' data structure, which GDB uses to represent
7114    quantities in the inferior process (the target), requires the size
7115    of the type at the time of its allocation in order to reserve space
7116    for GDB's internal copy of the data.  That's why the
7117    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7118    rather than struct value*s.
7119
7120    However, GDB's internal history variables ($1, $2, etc.) are
7121    struct value*s containing internal copies of the data that are not, in
7122    general, the same as the data at their corresponding addresses in
7123    the target.  Fortunately, the types we give to these values are all
7124    conventional, fixed-size types (as per the strategy described
7125    above), so that we don't usually have to perform the
7126    'to_fixed_xxx_type' conversions to look at their values.
7127    Unfortunately, there is one exception: if one of the internal
7128    history variables is an array whose elements are unconstrained
7129    records, then we will need to create distinct fixed types for each
7130    element selected.  */
7131
7132 /* The upshot of all of this is that many routines take a (type, host
7133    address, target address) triple as arguments to represent a value.
7134    The host address, if non-null, is supposed to contain an internal
7135    copy of the relevant data; otherwise, the program is to consult the
7136    target at the target address.  */
7137
7138 /* Assuming that VAL0 represents a pointer value, the result of
7139    dereferencing it.  Differs from value_ind in its treatment of
7140    dynamic-sized types.  */
7141
7142 struct value *
7143 ada_value_ind (struct value *val0)
7144 {
7145   struct value *val = value_ind (val0);
7146
7147   if (ada_is_tagged_type (value_type (val), 0))
7148     val = ada_tag_value_at_base_address (val);
7149
7150   return ada_to_fixed_value (val);
7151 }
7152
7153 /* The value resulting from dereferencing any "reference to"
7154    qualifiers on VAL0.  */
7155
7156 static struct value *
7157 ada_coerce_ref (struct value *val0)
7158 {
7159   if (value_type (val0)->code () == TYPE_CODE_REF)
7160     {
7161       struct value *val = val0;
7162
7163       val = coerce_ref (val);
7164
7165       if (ada_is_tagged_type (value_type (val), 0))
7166         val = ada_tag_value_at_base_address (val);
7167
7168       return ada_to_fixed_value (val);
7169     }
7170   else
7171     return val0;
7172 }
7173
7174 /* Return the bit alignment required for field #F of template type TYPE.  */
7175
7176 static unsigned int
7177 field_alignment (struct type *type, int f)
7178 {
7179   const char *name = type->field (f).name ();
7180   int len;
7181   int align_offset;
7182
7183   /* The field name should never be null, unless the debugging information
7184      is somehow malformed.  In this case, we assume the field does not
7185      require any alignment.  */
7186   if (name == NULL)
7187     return 1;
7188
7189   len = strlen (name);
7190
7191   if (!isdigit (name[len - 1]))
7192     return 1;
7193
7194   if (isdigit (name[len - 2]))
7195     align_offset = len - 2;
7196   else
7197     align_offset = len - 1;
7198
7199   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7200     return TARGET_CHAR_BIT;
7201
7202   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7203 }
7204
7205 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7206
7207 static struct symbol *
7208 ada_find_any_type_symbol (const char *name)
7209 {
7210   struct symbol *sym;
7211
7212   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7213   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7214     return sym;
7215
7216   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7217   return sym;
7218 }
7219
7220 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7221    solely for types defined by debug info, it will not search the GDB
7222    primitive types.  */
7223
7224 static struct type *
7225 ada_find_any_type (const char *name)
7226 {
7227   struct symbol *sym = ada_find_any_type_symbol (name);
7228
7229   if (sym != NULL)
7230     return SYMBOL_TYPE (sym);
7231
7232   return NULL;
7233 }
7234
7235 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7236    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7237    symbol, in which case it is returned.  Otherwise, this looks for
7238    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7239    Return symbol if found, and NULL otherwise.  */
7240
7241 static bool
7242 ada_is_renaming_symbol (struct symbol *name_sym)
7243 {
7244   const char *name = name_sym->linkage_name ();
7245   return strstr (name, "___XR") != NULL;
7246 }
7247
7248 /* Because of GNAT encoding conventions, several GDB symbols may match a
7249    given type name.  If the type denoted by TYPE0 is to be preferred to
7250    that of TYPE1 for purposes of type printing, return non-zero;
7251    otherwise return 0.  */
7252
7253 int
7254 ada_prefer_type (struct type *type0, struct type *type1)
7255 {
7256   if (type1 == NULL)
7257     return 1;
7258   else if (type0 == NULL)
7259     return 0;
7260   else if (type1->code () == TYPE_CODE_VOID)
7261     return 1;
7262   else if (type0->code () == TYPE_CODE_VOID)
7263     return 0;
7264   else if (type1->name () == NULL && type0->name () != NULL)
7265     return 1;
7266   else if (ada_is_constrained_packed_array_type (type0))
7267     return 1;
7268   else if (ada_is_array_descriptor_type (type0)
7269            && !ada_is_array_descriptor_type (type1))
7270     return 1;
7271   else
7272     {
7273       const char *type0_name = type0->name ();
7274       const char *type1_name = type1->name ();
7275
7276       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7277           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7278         return 1;
7279     }
7280   return 0;
7281 }
7282
7283 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7284    null.  */
7285
7286 const char *
7287 ada_type_name (struct type *type)
7288 {
7289   if (type == NULL)
7290     return NULL;
7291   return type->name ();
7292 }
7293
7294 /* Search the list of "descriptive" types associated to TYPE for a type
7295    whose name is NAME.  */
7296
7297 static struct type *
7298 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7299 {
7300   struct type *result, *tmp;
7301
7302   if (ada_ignore_descriptive_types_p)
7303     return NULL;
7304
7305   /* If there no descriptive-type info, then there is no parallel type
7306      to be found.  */
7307   if (!HAVE_GNAT_AUX_INFO (type))
7308     return NULL;
7309
7310   result = TYPE_DESCRIPTIVE_TYPE (type);
7311   while (result != NULL)
7312     {
7313       const char *result_name = ada_type_name (result);
7314
7315       if (result_name == NULL)
7316         {
7317           warning (_("unexpected null name on descriptive type"));
7318           return NULL;
7319         }
7320
7321       /* If the names match, stop.  */
7322       if (strcmp (result_name, name) == 0)
7323         break;
7324
7325       /* Otherwise, look at the next item on the list, if any.  */
7326       if (HAVE_GNAT_AUX_INFO (result))
7327         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7328       else
7329         tmp = NULL;
7330
7331       /* If not found either, try after having resolved the typedef.  */
7332       if (tmp != NULL)
7333         result = tmp;
7334       else
7335         {
7336           result = check_typedef (result);
7337           if (HAVE_GNAT_AUX_INFO (result))
7338             result = TYPE_DESCRIPTIVE_TYPE (result);
7339           else
7340             result = NULL;
7341         }
7342     }
7343
7344   /* If we didn't find a match, see whether this is a packed array.  With
7345      older compilers, the descriptive type information is either absent or
7346      irrelevant when it comes to packed arrays so the above lookup fails.
7347      Fall back to using a parallel lookup by name in this case.  */
7348   if (result == NULL && ada_is_constrained_packed_array_type (type))
7349     return ada_find_any_type (name);
7350
7351   return result;
7352 }
7353
7354 /* Find a parallel type to TYPE with the specified NAME, using the
7355    descriptive type taken from the debugging information, if available,
7356    and otherwise using the (slower) name-based method.  */
7357
7358 static struct type *
7359 ada_find_parallel_type_with_name (struct type *type, const char *name)
7360 {
7361   struct type *result = NULL;
7362
7363   if (HAVE_GNAT_AUX_INFO (type))
7364     result = find_parallel_type_by_descriptive_type (type, name);
7365   else
7366     result = ada_find_any_type (name);
7367
7368   return result;
7369 }
7370
7371 /* Same as above, but specify the name of the parallel type by appending
7372    SUFFIX to the name of TYPE.  */
7373
7374 struct type *
7375 ada_find_parallel_type (struct type *type, const char *suffix)
7376 {
7377   char *name;
7378   const char *type_name = ada_type_name (type);
7379   int len;
7380
7381   if (type_name == NULL)
7382     return NULL;
7383
7384   len = strlen (type_name);
7385
7386   name = (char *) alloca (len + strlen (suffix) + 1);
7387
7388   strcpy (name, type_name);
7389   strcpy (name + len, suffix);
7390
7391   return ada_find_parallel_type_with_name (type, name);
7392 }
7393
7394 /* If TYPE is a variable-size record type, return the corresponding template
7395    type describing its fields.  Otherwise, return NULL.  */
7396
7397 static struct type *
7398 dynamic_template_type (struct type *type)
7399 {
7400   type = ada_check_typedef (type);
7401
7402   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7403       || ada_type_name (type) == NULL)
7404     return NULL;
7405   else
7406     {
7407       int len = strlen (ada_type_name (type));
7408
7409       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7410         return type;
7411       else
7412         return ada_find_parallel_type (type, "___XVE");
7413     }
7414 }
7415
7416 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7417    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7418
7419 static int
7420 is_dynamic_field (struct type *templ_type, int field_num)
7421 {
7422   const char *name = templ_type->field (field_num).name ();
7423
7424   return name != NULL
7425     && templ_type->field (field_num).type ()->code () == TYPE_CODE_PTR
7426     && strstr (name, "___XVL") != NULL;
7427 }
7428
7429 /* The index of the variant field of TYPE, or -1 if TYPE does not
7430    represent a variant record type.  */
7431
7432 static int
7433 variant_field_index (struct type *type)
7434 {
7435   int f;
7436
7437   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7438     return -1;
7439
7440   for (f = 0; f < type->num_fields (); f += 1)
7441     {
7442       if (ada_is_variant_part (type, f))
7443         return f;
7444     }
7445   return -1;
7446 }
7447
7448 /* A record type with no fields.  */
7449
7450 static struct type *
7451 empty_record (struct type *templ)
7452 {
7453   struct type *type = alloc_type_copy (templ);
7454
7455   type->set_code (TYPE_CODE_STRUCT);
7456   INIT_NONE_SPECIFIC (type);
7457   type->set_name ("<empty>");
7458   TYPE_LENGTH (type) = 0;
7459   return type;
7460 }
7461
7462 /* An ordinary record type (with fixed-length fields) that describes
7463    the value of type TYPE at VALADDR or ADDRESS (see comments at
7464    the beginning of this section) VAL according to GNAT conventions.
7465    DVAL0 should describe the (portion of a) record that contains any
7466    necessary discriminants.  It should be NULL if value_type (VAL) is
7467    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7468    variant field (unless unchecked) is replaced by a particular branch
7469    of the variant.
7470
7471    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7472    length are not statically known are discarded.  As a consequence,
7473    VALADDR, ADDRESS and DVAL0 are ignored.
7474
7475    NOTE: Limitations: For now, we assume that dynamic fields and
7476    variants occupy whole numbers of bytes.  However, they need not be
7477    byte-aligned.  */
7478
7479 struct type *
7480 ada_template_to_fixed_record_type_1 (struct type *type,
7481                                      const gdb_byte *valaddr,
7482                                      CORE_ADDR address, struct value *dval0,
7483                                      int keep_dynamic_fields)
7484 {
7485   struct value *mark = value_mark ();
7486   struct value *dval;
7487   struct type *rtype;
7488   int nfields, bit_len;
7489   int variant_field;
7490   long off;
7491   int fld_bit_len;
7492   int f;
7493
7494   /* Compute the number of fields in this record type that are going
7495      to be processed: unless keep_dynamic_fields, this includes only
7496      fields whose position and length are static will be processed.  */
7497   if (keep_dynamic_fields)
7498     nfields = type->num_fields ();
7499   else
7500     {
7501       nfields = 0;
7502       while (nfields < type->num_fields ()
7503              && !ada_is_variant_part (type, nfields)
7504              && !is_dynamic_field (type, nfields))
7505         nfields++;
7506     }
7507
7508   rtype = alloc_type_copy (type);
7509   rtype->set_code (TYPE_CODE_STRUCT);
7510   INIT_NONE_SPECIFIC (rtype);
7511   rtype->set_num_fields (nfields);
7512   rtype->set_fields
7513    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
7514   rtype->set_name (ada_type_name (type));
7515   rtype->set_is_fixed_instance (true);
7516
7517   off = 0;
7518   bit_len = 0;
7519   variant_field = -1;
7520
7521   for (f = 0; f < nfields; f += 1)
7522     {
7523       off = align_up (off, field_alignment (type, f))
7524         + TYPE_FIELD_BITPOS (type, f);
7525       SET_FIELD_BITPOS (rtype->field (f), off);
7526       TYPE_FIELD_BITSIZE (rtype, f) = 0;
7527
7528       if (ada_is_variant_part (type, f))
7529         {
7530           variant_field = f;
7531           fld_bit_len = 0;
7532         }
7533       else if (is_dynamic_field (type, f))
7534         {
7535           const gdb_byte *field_valaddr = valaddr;
7536           CORE_ADDR field_address = address;
7537           struct type *field_type =
7538             TYPE_TARGET_TYPE (type->field (f).type ());
7539
7540           if (dval0 == NULL)
7541             {
7542               /* rtype's length is computed based on the run-time
7543                  value of discriminants.  If the discriminants are not
7544                  initialized, the type size may be completely bogus and
7545                  GDB may fail to allocate a value for it.  So check the
7546                  size first before creating the value.  */
7547               ada_ensure_varsize_limit (rtype);
7548               /* Using plain value_from_contents_and_address here
7549                  causes problems because we will end up trying to
7550                  resolve a type that is currently being
7551                  constructed.  */
7552               dval = value_from_contents_and_address_unresolved (rtype,
7553                                                                  valaddr,
7554                                                                  address);
7555               rtype = value_type (dval);
7556             }
7557           else
7558             dval = dval0;
7559
7560           /* If the type referenced by this field is an aligner type, we need
7561              to unwrap that aligner type, because its size might not be set.
7562              Keeping the aligner type would cause us to compute the wrong
7563              size for this field, impacting the offset of the all the fields
7564              that follow this one.  */
7565           if (ada_is_aligner_type (field_type))
7566             {
7567               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7568
7569               field_valaddr = cond_offset_host (field_valaddr, field_offset);
7570               field_address = cond_offset_target (field_address, field_offset);
7571               field_type = ada_aligned_type (field_type);
7572             }
7573
7574           field_valaddr = cond_offset_host (field_valaddr,
7575                                             off / TARGET_CHAR_BIT);
7576           field_address = cond_offset_target (field_address,
7577                                               off / TARGET_CHAR_BIT);
7578
7579           /* Get the fixed type of the field.  Note that, in this case,
7580              we do not want to get the real type out of the tag: if
7581              the current field is the parent part of a tagged record,
7582              we will get the tag of the object.  Clearly wrong: the real
7583              type of the parent is not the real type of the child.  We
7584              would end up in an infinite loop.  */
7585           field_type = ada_get_base_type (field_type);
7586           field_type = ada_to_fixed_type (field_type, field_valaddr,
7587                                           field_address, dval, 0);
7588           /* If the field size is already larger than the maximum
7589              object size, then the record itself will necessarily
7590              be larger than the maximum object size.  We need to make
7591              this check now, because the size might be so ridiculously
7592              large (due to an uninitialized variable in the inferior)
7593              that it would cause an overflow when adding it to the
7594              record size.  */
7595           ada_ensure_varsize_limit (field_type);
7596
7597           rtype->field (f).set_type (field_type);
7598           rtype->field (f).set_name (type->field (f).name ());
7599           /* The multiplication can potentially overflow.  But because
7600              the field length has been size-checked just above, and
7601              assuming that the maximum size is a reasonable value,
7602              an overflow should not happen in practice.  So rather than
7603              adding overflow recovery code to this already complex code,
7604              we just assume that it's not going to happen.  */
7605           fld_bit_len =
7606             TYPE_LENGTH (rtype->field (f).type ()) * TARGET_CHAR_BIT;
7607         }
7608       else
7609         {
7610           /* Note: If this field's type is a typedef, it is important
7611              to preserve the typedef layer.
7612
7613              Otherwise, we might be transforming a typedef to a fat
7614              pointer (encoding a pointer to an unconstrained array),
7615              into a basic fat pointer (encoding an unconstrained
7616              array).  As both types are implemented using the same
7617              structure, the typedef is the only clue which allows us
7618              to distinguish between the two options.  Stripping it
7619              would prevent us from printing this field appropriately.  */
7620           rtype->field (f).set_type (type->field (f).type ());
7621           rtype->field (f).set_name (type->field (f).name ());
7622           if (TYPE_FIELD_BITSIZE (type, f) > 0)
7623             fld_bit_len =
7624               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7625           else
7626             {
7627               struct type *field_type = type->field (f).type ();
7628
7629               /* We need to be careful of typedefs when computing
7630                  the length of our field.  If this is a typedef,
7631                  get the length of the target type, not the length
7632                  of the typedef.  */
7633               if (field_type->code () == TYPE_CODE_TYPEDEF)
7634                 field_type = ada_typedef_target_type (field_type);
7635
7636               fld_bit_len =
7637                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
7638             }
7639         }
7640       if (off + fld_bit_len > bit_len)
7641         bit_len = off + fld_bit_len;
7642       off += fld_bit_len;
7643       TYPE_LENGTH (rtype) =
7644         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7645     }
7646
7647   /* We handle the variant part, if any, at the end because of certain
7648      odd cases in which it is re-ordered so as NOT to be the last field of
7649      the record.  This can happen in the presence of representation
7650      clauses.  */
7651   if (variant_field >= 0)
7652     {
7653       struct type *branch_type;
7654
7655       off = TYPE_FIELD_BITPOS (rtype, variant_field);
7656
7657       if (dval0 == NULL)
7658         {
7659           /* Using plain value_from_contents_and_address here causes
7660              problems because we will end up trying to resolve a type
7661              that is currently being constructed.  */
7662           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
7663                                                              address);
7664           rtype = value_type (dval);
7665         }
7666       else
7667         dval = dval0;
7668
7669       branch_type =
7670         to_fixed_variant_branch_type
7671         (type->field (variant_field).type (),
7672          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
7673          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
7674       if (branch_type == NULL)
7675         {
7676           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
7677             rtype->field (f - 1) = rtype->field (f);
7678           rtype->set_num_fields (rtype->num_fields () - 1);
7679         }
7680       else
7681         {
7682           rtype->field (variant_field).set_type (branch_type);
7683           rtype->field (variant_field).set_name ("S");
7684           fld_bit_len =
7685             TYPE_LENGTH (rtype->field (variant_field).type ()) *
7686             TARGET_CHAR_BIT;
7687           if (off + fld_bit_len > bit_len)
7688             bit_len = off + fld_bit_len;
7689           TYPE_LENGTH (rtype) =
7690             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7691         }
7692     }
7693
7694   /* According to exp_dbug.ads, the size of TYPE for variable-size records
7695      should contain the alignment of that record, which should be a strictly
7696      positive value.  If null or negative, then something is wrong, most
7697      probably in the debug info.  In that case, we don't round up the size
7698      of the resulting type.  If this record is not part of another structure,
7699      the current RTYPE length might be good enough for our purposes.  */
7700   if (TYPE_LENGTH (type) <= 0)
7701     {
7702       if (rtype->name ())
7703         warning (_("Invalid type size for `%s' detected: %s."),
7704                  rtype->name (), pulongest (TYPE_LENGTH (type)));
7705       else
7706         warning (_("Invalid type size for <unnamed> detected: %s."),
7707                  pulongest (TYPE_LENGTH (type)));
7708     }
7709   else
7710     {
7711       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
7712                                       TYPE_LENGTH (type));
7713     }
7714
7715   value_free_to_mark (mark);
7716   if (TYPE_LENGTH (rtype) > varsize_limit)
7717     error (_("record type with dynamic size is larger than varsize-limit"));
7718   return rtype;
7719 }
7720
7721 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
7722    of 1.  */
7723
7724 static struct type *
7725 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
7726                                CORE_ADDR address, struct value *dval0)
7727 {
7728   return ada_template_to_fixed_record_type_1 (type, valaddr,
7729                                               address, dval0, 1);
7730 }
7731
7732 /* An ordinary record type in which ___XVL-convention fields and
7733    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
7734    static approximations, containing all possible fields.  Uses
7735    no runtime values.  Useless for use in values, but that's OK,
7736    since the results are used only for type determinations.   Works on both
7737    structs and unions.  Representation note: to save space, we memorize
7738    the result of this function in the TYPE_TARGET_TYPE of the
7739    template type.  */
7740
7741 static struct type *
7742 template_to_static_fixed_type (struct type *type0)
7743 {
7744   struct type *type;
7745   int nfields;
7746   int f;
7747
7748   /* No need no do anything if the input type is already fixed.  */
7749   if (type0->is_fixed_instance ())
7750     return type0;
7751
7752   /* Likewise if we already have computed the static approximation.  */
7753   if (TYPE_TARGET_TYPE (type0) != NULL)
7754     return TYPE_TARGET_TYPE (type0);
7755
7756   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
7757   type = type0;
7758   nfields = type0->num_fields ();
7759
7760   /* Whether or not we cloned TYPE0, cache the result so that we don't do
7761      recompute all over next time.  */
7762   TYPE_TARGET_TYPE (type0) = type;
7763
7764   for (f = 0; f < nfields; f += 1)
7765     {
7766       struct type *field_type = type0->field (f).type ();
7767       struct type *new_type;
7768
7769       if (is_dynamic_field (type0, f))
7770         {
7771           field_type = ada_check_typedef (field_type);
7772           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
7773         }
7774       else
7775         new_type = static_unwrap_type (field_type);
7776
7777       if (new_type != field_type)
7778         {
7779           /* Clone TYPE0 only the first time we get a new field type.  */
7780           if (type == type0)
7781             {
7782               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
7783               type->set_code (type0->code ());
7784               INIT_NONE_SPECIFIC (type);
7785               type->set_num_fields (nfields);
7786
7787               field *fields =
7788                 ((struct field *)
7789                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
7790               memcpy (fields, type0->fields (),
7791                       sizeof (struct field) * nfields);
7792               type->set_fields (fields);
7793
7794               type->set_name (ada_type_name (type0));
7795               type->set_is_fixed_instance (true);
7796               TYPE_LENGTH (type) = 0;
7797             }
7798           type->field (f).set_type (new_type);
7799           type->field (f).set_name (type0->field (f).name ());
7800         }
7801     }
7802
7803   return type;
7804 }
7805
7806 /* Given an object of type TYPE whose contents are at VALADDR and
7807    whose address in memory is ADDRESS, returns a revision of TYPE,
7808    which should be a non-dynamic-sized record, in which the variant
7809    part, if any, is replaced with the appropriate branch.  Looks
7810    for discriminant values in DVAL0, which can be NULL if the record
7811    contains the necessary discriminant values.  */
7812
7813 static struct type *
7814 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
7815                                    CORE_ADDR address, struct value *dval0)
7816 {
7817   struct value *mark = value_mark ();
7818   struct value *dval;
7819   struct type *rtype;
7820   struct type *branch_type;
7821   int nfields = type->num_fields ();
7822   int variant_field = variant_field_index (type);
7823
7824   if (variant_field == -1)
7825     return type;
7826
7827   if (dval0 == NULL)
7828     {
7829       dval = value_from_contents_and_address (type, valaddr, address);
7830       type = value_type (dval);
7831     }
7832   else
7833     dval = dval0;
7834
7835   rtype = alloc_type_copy (type);
7836   rtype->set_code (TYPE_CODE_STRUCT);
7837   INIT_NONE_SPECIFIC (rtype);
7838   rtype->set_num_fields (nfields);
7839
7840   field *fields =
7841     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
7842   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
7843   rtype->set_fields (fields);
7844
7845   rtype->set_name (ada_type_name (type));
7846   rtype->set_is_fixed_instance (true);
7847   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
7848
7849   branch_type = to_fixed_variant_branch_type
7850     (type->field (variant_field).type (),
7851      cond_offset_host (valaddr,
7852                        TYPE_FIELD_BITPOS (type, variant_field)
7853                        / TARGET_CHAR_BIT),
7854      cond_offset_target (address,
7855                          TYPE_FIELD_BITPOS (type, variant_field)
7856                          / TARGET_CHAR_BIT), dval);
7857   if (branch_type == NULL)
7858     {
7859       int f;
7860
7861       for (f = variant_field + 1; f < nfields; f += 1)
7862         rtype->field (f - 1) = rtype->field (f);
7863       rtype->set_num_fields (rtype->num_fields () - 1);
7864     }
7865   else
7866     {
7867       rtype->field (variant_field).set_type (branch_type);
7868       rtype->field (variant_field).set_name ("S");
7869       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
7870       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
7871     }
7872   TYPE_LENGTH (rtype) -= TYPE_LENGTH (type->field (variant_field).type ());
7873
7874   value_free_to_mark (mark);
7875   return rtype;
7876 }
7877
7878 /* An ordinary record type (with fixed-length fields) that describes
7879    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
7880    beginning of this section].   Any necessary discriminants' values
7881    should be in DVAL, a record value; it may be NULL if the object
7882    at ADDR itself contains any necessary discriminant values.
7883    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
7884    values from the record are needed.  Except in the case that DVAL,
7885    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
7886    unchecked) is replaced by a particular branch of the variant.
7887
7888    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
7889    is questionable and may be removed.  It can arise during the
7890    processing of an unconstrained-array-of-record type where all the
7891    variant branches have exactly the same size.  This is because in
7892    such cases, the compiler does not bother to use the XVS convention
7893    when encoding the record.  I am currently dubious of this
7894    shortcut and suspect the compiler should be altered.  FIXME.  */
7895
7896 static struct type *
7897 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
7898                       CORE_ADDR address, struct value *dval)
7899 {
7900   struct type *templ_type;
7901
7902   if (type0->is_fixed_instance ())
7903     return type0;
7904
7905   templ_type = dynamic_template_type (type0);
7906
7907   if (templ_type != NULL)
7908     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
7909   else if (variant_field_index (type0) >= 0)
7910     {
7911       if (dval == NULL && valaddr == NULL && address == 0)
7912         return type0;
7913       return to_record_with_fixed_variant_part (type0, valaddr, address,
7914                                                 dval);
7915     }
7916   else
7917     {
7918       type0->set_is_fixed_instance (true);
7919       return type0;
7920     }
7921
7922 }
7923
7924 /* An ordinary record type (with fixed-length fields) that describes
7925    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
7926    union type.  Any necessary discriminants' values should be in DVAL,
7927    a record value.  That is, this routine selects the appropriate
7928    branch of the union at ADDR according to the discriminant value
7929    indicated in the union's type name.  Returns VAR_TYPE0 itself if
7930    it represents a variant subject to a pragma Unchecked_Union.  */
7931
7932 static struct type *
7933 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
7934                               CORE_ADDR address, struct value *dval)
7935 {
7936   int which;
7937   struct type *templ_type;
7938   struct type *var_type;
7939
7940   if (var_type0->code () == TYPE_CODE_PTR)
7941     var_type = TYPE_TARGET_TYPE (var_type0);
7942   else
7943     var_type = var_type0;
7944
7945   templ_type = ada_find_parallel_type (var_type, "___XVU");
7946
7947   if (templ_type != NULL)
7948     var_type = templ_type;
7949
7950   if (is_unchecked_variant (var_type, value_type (dval)))
7951       return var_type0;
7952   which = ada_which_variant_applies (var_type, dval);
7953
7954   if (which < 0)
7955     return empty_record (var_type);
7956   else if (is_dynamic_field (var_type, which))
7957     return to_fixed_record_type
7958       (TYPE_TARGET_TYPE (var_type->field (which).type ()),
7959        valaddr, address, dval);
7960   else if (variant_field_index (var_type->field (which).type ()) >= 0)
7961     return
7962       to_fixed_record_type
7963       (var_type->field (which).type (), valaddr, address, dval);
7964   else
7965     return var_type->field (which).type ();
7966 }
7967
7968 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
7969    ENCODING_TYPE, a type following the GNAT conventions for discrete
7970    type encodings, only carries redundant information.  */
7971
7972 static int
7973 ada_is_redundant_range_encoding (struct type *range_type,
7974                                  struct type *encoding_type)
7975 {
7976   const char *bounds_str;
7977   int n;
7978   LONGEST lo, hi;
7979
7980   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
7981
7982   if (get_base_type (range_type)->code ()
7983       != get_base_type (encoding_type)->code ())
7984     {
7985       /* The compiler probably used a simple base type to describe
7986          the range type instead of the range's actual base type,
7987          expecting us to get the real base type from the encoding
7988          anyway.  In this situation, the encoding cannot be ignored
7989          as redundant.  */
7990       return 0;
7991     }
7992
7993   if (is_dynamic_type (range_type))
7994     return 0;
7995
7996   if (encoding_type->name () == NULL)
7997     return 0;
7998
7999   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8000   if (bounds_str == NULL)
8001     return 0;
8002
8003   n = 8; /* Skip "___XDLU_".  */
8004   if (!ada_scan_number (bounds_str, n, &lo, &n))
8005     return 0;
8006   if (range_type->bounds ()->low.const_val () != lo)
8007     return 0;
8008
8009   n += 2; /* Skip the "__" separator between the two bounds.  */
8010   if (!ada_scan_number (bounds_str, n, &hi, &n))
8011     return 0;
8012   if (range_type->bounds ()->high.const_val () != hi)
8013     return 0;
8014
8015   return 1;
8016 }
8017
8018 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8019    a type following the GNAT encoding for describing array type
8020    indices, only carries redundant information.  */
8021
8022 static int
8023 ada_is_redundant_index_type_desc (struct type *array_type,
8024                                   struct type *desc_type)
8025 {
8026   struct type *this_layer = check_typedef (array_type);
8027   int i;
8028
8029   for (i = 0; i < desc_type->num_fields (); i++)
8030     {
8031       if (!ada_is_redundant_range_encoding (this_layer->index_type (),
8032                                             desc_type->field (i).type ()))
8033         return 0;
8034       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8035     }
8036
8037   return 1;
8038 }
8039
8040 /* Assuming that TYPE0 is an array type describing the type of a value
8041    at ADDR, and that DVAL describes a record containing any
8042    discriminants used in TYPE0, returns a type for the value that
8043    contains no dynamic components (that is, no components whose sizes
8044    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8045    true, gives an error message if the resulting type's size is over
8046    varsize_limit.  */
8047
8048 static struct type *
8049 to_fixed_array_type (struct type *type0, struct value *dval,
8050                      int ignore_too_big)
8051 {
8052   struct type *index_type_desc;
8053   struct type *result;
8054   int constrained_packed_array_p;
8055   static const char *xa_suffix = "___XA";
8056
8057   type0 = ada_check_typedef (type0);
8058   if (type0->is_fixed_instance ())
8059     return type0;
8060
8061   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8062   if (constrained_packed_array_p)
8063     {
8064       type0 = decode_constrained_packed_array_type (type0);
8065       if (type0 == nullptr)
8066         error (_("could not decode constrained packed array type"));
8067     }
8068
8069   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8070
8071   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8072      encoding suffixed with 'P' may still be generated.  If so,
8073      it should be used to find the XA type.  */
8074
8075   if (index_type_desc == NULL)
8076     {
8077       const char *type_name = ada_type_name (type0);
8078
8079       if (type_name != NULL)
8080         {
8081           const int len = strlen (type_name);
8082           char *name = (char *) alloca (len + strlen (xa_suffix));
8083
8084           if (type_name[len - 1] == 'P')
8085             {
8086               strcpy (name, type_name);
8087               strcpy (name + len - 1, xa_suffix);
8088               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8089             }
8090         }
8091     }
8092
8093   ada_fixup_array_indexes_type (index_type_desc);
8094   if (index_type_desc != NULL
8095       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8096     {
8097       /* Ignore this ___XA parallel type, as it does not bring any
8098          useful information.  This allows us to avoid creating fixed
8099          versions of the array's index types, which would be identical
8100          to the original ones.  This, in turn, can also help avoid
8101          the creation of fixed versions of the array itself.  */
8102       index_type_desc = NULL;
8103     }
8104
8105   if (index_type_desc == NULL)
8106     {
8107       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8108
8109       /* NOTE: elt_type---the fixed version of elt_type0---should never
8110          depend on the contents of the array in properly constructed
8111          debugging data.  */
8112       /* Create a fixed version of the array element type.
8113          We're not providing the address of an element here,
8114          and thus the actual object value cannot be inspected to do
8115          the conversion.  This should not be a problem, since arrays of
8116          unconstrained objects are not allowed.  In particular, all
8117          the elements of an array of a tagged type should all be of
8118          the same type specified in the debugging info.  No need to
8119          consult the object tag.  */
8120       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8121
8122       /* Make sure we always create a new array type when dealing with
8123          packed array types, since we're going to fix-up the array
8124          type length and element bitsize a little further down.  */
8125       if (elt_type0 == elt_type && !constrained_packed_array_p)
8126         result = type0;
8127       else
8128         result = create_array_type (alloc_type_copy (type0),
8129                                     elt_type, type0->index_type ());
8130     }
8131   else
8132     {
8133       int i;
8134       struct type *elt_type0;
8135
8136       elt_type0 = type0;
8137       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8138         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8139
8140       /* NOTE: result---the fixed version of elt_type0---should never
8141          depend on the contents of the array in properly constructed
8142          debugging data.  */
8143       /* Create a fixed version of the array element type.
8144          We're not providing the address of an element here,
8145          and thus the actual object value cannot be inspected to do
8146          the conversion.  This should not be a problem, since arrays of
8147          unconstrained objects are not allowed.  In particular, all
8148          the elements of an array of a tagged type should all be of
8149          the same type specified in the debugging info.  No need to
8150          consult the object tag.  */
8151       result =
8152         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8153
8154       elt_type0 = type0;
8155       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8156         {
8157           struct type *range_type =
8158             to_fixed_range_type (index_type_desc->field (i).type (), dval);
8159
8160           result = create_array_type (alloc_type_copy (elt_type0),
8161                                       result, range_type);
8162           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8163         }
8164       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8165         error (_("array type with dynamic size is larger than varsize-limit"));
8166     }
8167
8168   /* We want to preserve the type name.  This can be useful when
8169      trying to get the type name of a value that has already been
8170      printed (for instance, if the user did "print VAR; whatis $".  */
8171   result->set_name (type0->name ());
8172
8173   if (constrained_packed_array_p)
8174     {
8175       /* So far, the resulting type has been created as if the original
8176          type was a regular (non-packed) array type.  As a result, the
8177          bitsize of the array elements needs to be set again, and the array
8178          length needs to be recomputed based on that bitsize.  */
8179       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8180       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8181
8182       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8183       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8184       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8185         TYPE_LENGTH (result)++;
8186     }
8187
8188   result->set_is_fixed_instance (true);
8189   return result;
8190 }
8191
8192
8193 /* A standard type (containing no dynamically sized components)
8194    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8195    DVAL describes a record containing any discriminants used in TYPE0,
8196    and may be NULL if there are none, or if the object of type TYPE at
8197    ADDRESS or in VALADDR contains these discriminants.
8198    
8199    If CHECK_TAG is not null, in the case of tagged types, this function
8200    attempts to locate the object's tag and use it to compute the actual
8201    type.  However, when ADDRESS is null, we cannot use it to determine the
8202    location of the tag, and therefore compute the tagged type's actual type.
8203    So we return the tagged type without consulting the tag.  */
8204    
8205 static struct type *
8206 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8207                    CORE_ADDR address, struct value *dval, int check_tag)
8208 {
8209   type = ada_check_typedef (type);
8210
8211   /* Only un-fixed types need to be handled here.  */
8212   if (!HAVE_GNAT_AUX_INFO (type))
8213     return type;
8214
8215   switch (type->code ())
8216     {
8217     default:
8218       return type;
8219     case TYPE_CODE_STRUCT:
8220       {
8221         struct type *static_type = to_static_fixed_type (type);
8222         struct type *fixed_record_type =
8223           to_fixed_record_type (type, valaddr, address, NULL);
8224
8225         /* If STATIC_TYPE is a tagged type and we know the object's address,
8226            then we can determine its tag, and compute the object's actual
8227            type from there.  Note that we have to use the fixed record
8228            type (the parent part of the record may have dynamic fields
8229            and the way the location of _tag is expressed may depend on
8230            them).  */
8231
8232         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8233           {
8234             struct value *tag =
8235               value_tag_from_contents_and_address
8236               (fixed_record_type,
8237                valaddr,
8238                address);
8239             struct type *real_type = type_from_tag (tag);
8240             struct value *obj =
8241               value_from_contents_and_address (fixed_record_type,
8242                                                valaddr,
8243                                                address);
8244             fixed_record_type = value_type (obj);
8245             if (real_type != NULL)
8246               return to_fixed_record_type
8247                 (real_type, NULL,
8248                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8249           }
8250
8251         /* Check to see if there is a parallel ___XVZ variable.
8252            If there is, then it provides the actual size of our type.  */
8253         else if (ada_type_name (fixed_record_type) != NULL)
8254           {
8255             const char *name = ada_type_name (fixed_record_type);
8256             char *xvz_name
8257               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8258             bool xvz_found = false;
8259             LONGEST size;
8260
8261             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8262             try
8263               {
8264                 xvz_found = get_int_var_value (xvz_name, size);
8265               }
8266             catch (const gdb_exception_error &except)
8267               {
8268                 /* We found the variable, but somehow failed to read
8269                    its value.  Rethrow the same error, but with a little
8270                    bit more information, to help the user understand
8271                    what went wrong (Eg: the variable might have been
8272                    optimized out).  */
8273                 throw_error (except.error,
8274                              _("unable to read value of %s (%s)"),
8275                              xvz_name, except.what ());
8276               }
8277
8278             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8279               {
8280                 fixed_record_type = copy_type (fixed_record_type);
8281                 TYPE_LENGTH (fixed_record_type) = size;
8282
8283                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8284                    observed this when the debugging info is STABS, and
8285                    apparently it is something that is hard to fix.
8286
8287                    In practice, we don't need the actual type definition
8288                    at all, because the presence of the XVZ variable allows us
8289                    to assume that there must be a XVS type as well, which we
8290                    should be able to use later, when we need the actual type
8291                    definition.
8292
8293                    In the meantime, pretend that the "fixed" type we are
8294                    returning is NOT a stub, because this can cause trouble
8295                    when using this type to create new types targeting it.
8296                    Indeed, the associated creation routines often check
8297                    whether the target type is a stub and will try to replace
8298                    it, thus using a type with the wrong size.  This, in turn,
8299                    might cause the new type to have the wrong size too.
8300                    Consider the case of an array, for instance, where the size
8301                    of the array is computed from the number of elements in
8302                    our array multiplied by the size of its element.  */
8303                 fixed_record_type->set_is_stub (false);
8304               }
8305           }
8306         return fixed_record_type;
8307       }
8308     case TYPE_CODE_ARRAY:
8309       return to_fixed_array_type (type, dval, 1);
8310     case TYPE_CODE_UNION:
8311       if (dval == NULL)
8312         return type;
8313       else
8314         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8315     }
8316 }
8317
8318 /* The same as ada_to_fixed_type_1, except that it preserves the type
8319    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8320
8321    The typedef layer needs be preserved in order to differentiate between
8322    arrays and array pointers when both types are implemented using the same
8323    fat pointer.  In the array pointer case, the pointer is encoded as
8324    a typedef of the pointer type.  For instance, considering:
8325
8326           type String_Access is access String;
8327           S1 : String_Access := null;
8328
8329    To the debugger, S1 is defined as a typedef of type String.  But
8330    to the user, it is a pointer.  So if the user tries to print S1,
8331    we should not dereference the array, but print the array address
8332    instead.
8333
8334    If we didn't preserve the typedef layer, we would lose the fact that
8335    the type is to be presented as a pointer (needs de-reference before
8336    being printed).  And we would also use the source-level type name.  */
8337
8338 struct type *
8339 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8340                    CORE_ADDR address, struct value *dval, int check_tag)
8341
8342 {
8343   struct type *fixed_type =
8344     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8345
8346   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8347       then preserve the typedef layer.
8348
8349       Implementation note: We can only check the main-type portion of
8350       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8351       from TYPE now returns a type that has the same instance flags
8352       as TYPE.  For instance, if TYPE is a "typedef const", and its
8353       target type is a "struct", then the typedef elimination will return
8354       a "const" version of the target type.  See check_typedef for more
8355       details about how the typedef layer elimination is done.
8356
8357       brobecker/2010-11-19: It seems to me that the only case where it is
8358       useful to preserve the typedef layer is when dealing with fat pointers.
8359       Perhaps, we could add a check for that and preserve the typedef layer
8360       only in that situation.  But this seems unnecessary so far, probably
8361       because we call check_typedef/ada_check_typedef pretty much everywhere.
8362       */
8363   if (type->code () == TYPE_CODE_TYPEDEF
8364       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8365           == TYPE_MAIN_TYPE (fixed_type)))
8366     return type;
8367
8368   return fixed_type;
8369 }
8370
8371 /* A standard (static-sized) type corresponding as well as possible to
8372    TYPE0, but based on no runtime data.  */
8373
8374 static struct type *
8375 to_static_fixed_type (struct type *type0)
8376 {
8377   struct type *type;
8378
8379   if (type0 == NULL)
8380     return NULL;
8381
8382   if (type0->is_fixed_instance ())
8383     return type0;
8384
8385   type0 = ada_check_typedef (type0);
8386
8387   switch (type0->code ())
8388     {
8389     default:
8390       return type0;
8391     case TYPE_CODE_STRUCT:
8392       type = dynamic_template_type (type0);
8393       if (type != NULL)
8394         return template_to_static_fixed_type (type);
8395       else
8396         return template_to_static_fixed_type (type0);
8397     case TYPE_CODE_UNION:
8398       type = ada_find_parallel_type (type0, "___XVU");
8399       if (type != NULL)
8400         return template_to_static_fixed_type (type);
8401       else
8402         return template_to_static_fixed_type (type0);
8403     }
8404 }
8405
8406 /* A static approximation of TYPE with all type wrappers removed.  */
8407
8408 static struct type *
8409 static_unwrap_type (struct type *type)
8410 {
8411   if (ada_is_aligner_type (type))
8412     {
8413       struct type *type1 = ada_check_typedef (type)->field (0).type ();
8414       if (ada_type_name (type1) == NULL)
8415         type1->set_name (ada_type_name (type));
8416
8417       return static_unwrap_type (type1);
8418     }
8419   else
8420     {
8421       struct type *raw_real_type = ada_get_base_type (type);
8422
8423       if (raw_real_type == type)
8424         return type;
8425       else
8426         return to_static_fixed_type (raw_real_type);
8427     }
8428 }
8429
8430 /* In some cases, incomplete and private types require
8431    cross-references that are not resolved as records (for example,
8432       type Foo;
8433       type FooP is access Foo;
8434       V: FooP;
8435       type Foo is array ...;
8436    ).  In these cases, since there is no mechanism for producing
8437    cross-references to such types, we instead substitute for FooP a
8438    stub enumeration type that is nowhere resolved, and whose tag is
8439    the name of the actual type.  Call these types "non-record stubs".  */
8440
8441 /* A type equivalent to TYPE that is not a non-record stub, if one
8442    exists, otherwise TYPE.  */
8443
8444 struct type *
8445 ada_check_typedef (struct type *type)
8446 {
8447   if (type == NULL)
8448     return NULL;
8449
8450   /* If our type is an access to an unconstrained array, which is encoded
8451      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8452      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8453      what allows us to distinguish between fat pointers that represent
8454      array types, and fat pointers that represent array access types
8455      (in both cases, the compiler implements them as fat pointers).  */
8456   if (ada_is_access_to_unconstrained_array (type))
8457     return type;
8458
8459   type = check_typedef (type);
8460   if (type == NULL || type->code () != TYPE_CODE_ENUM
8461       || !type->is_stub ()
8462       || type->name () == NULL)
8463     return type;
8464   else
8465     {
8466       const char *name = type->name ();
8467       struct type *type1 = ada_find_any_type (name);
8468
8469       if (type1 == NULL)
8470         return type;
8471
8472       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8473          stubs pointing to arrays, as we don't create symbols for array
8474          types, only for the typedef-to-array types).  If that's the case,
8475          strip the typedef layer.  */
8476       if (type1->code () == TYPE_CODE_TYPEDEF)
8477         type1 = ada_check_typedef (type1);
8478
8479       return type1;
8480     }
8481 }
8482
8483 /* A value representing the data at VALADDR/ADDRESS as described by
8484    type TYPE0, but with a standard (static-sized) type that correctly
8485    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8486    type, then return VAL0 [this feature is simply to avoid redundant
8487    creation of struct values].  */
8488
8489 static struct value *
8490 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8491                            struct value *val0)
8492 {
8493   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8494
8495   if (type == type0 && val0 != NULL)
8496     return val0;
8497
8498   if (VALUE_LVAL (val0) != lval_memory)
8499     {
8500       /* Our value does not live in memory; it could be a convenience
8501          variable, for instance.  Create a not_lval value using val0's
8502          contents.  */
8503       return value_from_contents (type, value_contents (val0));
8504     }
8505
8506   return value_from_contents_and_address (type, 0, address);
8507 }
8508
8509 /* A value representing VAL, but with a standard (static-sized) type
8510    that correctly describes it.  Does not necessarily create a new
8511    value.  */
8512
8513 struct value *
8514 ada_to_fixed_value (struct value *val)
8515 {
8516   val = unwrap_value (val);
8517   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
8518   return val;
8519 }
8520 \f
8521
8522 /* Attributes */
8523
8524 /* Table mapping attribute numbers to names.
8525    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
8526
8527 static const char * const attribute_names[] = {
8528   "<?>",
8529
8530   "first",
8531   "last",
8532   "length",
8533   "image",
8534   "max",
8535   "min",
8536   "modulus",
8537   "pos",
8538   "size",
8539   "tag",
8540   "val",
8541   0
8542 };
8543
8544 static const char *
8545 ada_attribute_name (enum exp_opcode n)
8546 {
8547   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8548     return attribute_names[n - OP_ATR_FIRST + 1];
8549   else
8550     return attribute_names[0];
8551 }
8552
8553 /* Evaluate the 'POS attribute applied to ARG.  */
8554
8555 static LONGEST
8556 pos_atr (struct value *arg)
8557 {
8558   struct value *val = coerce_ref (arg);
8559   struct type *type = value_type (val);
8560
8561   if (!discrete_type_p (type))
8562     error (_("'POS only defined on discrete types"));
8563
8564   gdb::optional<LONGEST> result = discrete_position (type, value_as_long (val));
8565   if (!result.has_value ())
8566     error (_("enumeration value is invalid: can't find 'POS"));
8567
8568   return *result;
8569 }
8570
8571 struct value *
8572 ada_pos_atr (struct type *expect_type,
8573              struct expression *exp,
8574              enum noside noside, enum exp_opcode op,
8575              struct value *arg)
8576 {
8577   struct type *type = builtin_type (exp->gdbarch)->builtin_int;
8578   if (noside == EVAL_AVOID_SIDE_EFFECTS)
8579     return value_zero (type, not_lval);
8580   return value_from_longest (type, pos_atr (arg));
8581 }
8582
8583 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
8584
8585 static struct value *
8586 val_atr (struct type *type, LONGEST val)
8587 {
8588   gdb_assert (discrete_type_p (type));
8589   if (type->code () == TYPE_CODE_RANGE)
8590     type = TYPE_TARGET_TYPE (type);
8591   if (type->code () == TYPE_CODE_ENUM)
8592     {
8593       if (val < 0 || val >= type->num_fields ())
8594         error (_("argument to 'VAL out of range"));
8595       val = TYPE_FIELD_ENUMVAL (type, val);
8596     }
8597   return value_from_longest (type, val);
8598 }
8599
8600 struct value *
8601 ada_val_atr (enum noside noside, struct type *type, struct value *arg)
8602 {
8603   if (noside == EVAL_AVOID_SIDE_EFFECTS)
8604     return value_zero (type, not_lval);
8605
8606   if (!discrete_type_p (type))
8607     error (_("'VAL only defined on discrete types"));
8608   if (!integer_type_p (value_type (arg)))
8609     error (_("'VAL requires integral argument"));
8610
8611   return val_atr (type, value_as_long (arg));
8612 }
8613 \f
8614
8615                                 /* Evaluation */
8616
8617 /* True if TYPE appears to be an Ada character type.
8618    [At the moment, this is true only for Character and Wide_Character;
8619    It is a heuristic test that could stand improvement].  */
8620
8621 bool
8622 ada_is_character_type (struct type *type)
8623 {
8624   const char *name;
8625
8626   /* If the type code says it's a character, then assume it really is,
8627      and don't check any further.  */
8628   if (type->code () == TYPE_CODE_CHAR)
8629     return true;
8630   
8631   /* Otherwise, assume it's a character type iff it is a discrete type
8632      with a known character type name.  */
8633   name = ada_type_name (type);
8634   return (name != NULL
8635           && (type->code () == TYPE_CODE_INT
8636               || type->code () == TYPE_CODE_RANGE)
8637           && (strcmp (name, "character") == 0
8638               || strcmp (name, "wide_character") == 0
8639               || strcmp (name, "wide_wide_character") == 0
8640               || strcmp (name, "unsigned char") == 0));
8641 }
8642
8643 /* True if TYPE appears to be an Ada string type.  */
8644
8645 bool
8646 ada_is_string_type (struct type *type)
8647 {
8648   type = ada_check_typedef (type);
8649   if (type != NULL
8650       && type->code () != TYPE_CODE_PTR
8651       && (ada_is_simple_array_type (type)
8652           || ada_is_array_descriptor_type (type))
8653       && ada_array_arity (type) == 1)
8654     {
8655       struct type *elttype = ada_array_element_type (type, 1);
8656
8657       return ada_is_character_type (elttype);
8658     }
8659   else
8660     return false;
8661 }
8662
8663 /* The compiler sometimes provides a parallel XVS type for a given
8664    PAD type.  Normally, it is safe to follow the PAD type directly,
8665    but older versions of the compiler have a bug that causes the offset
8666    of its "F" field to be wrong.  Following that field in that case
8667    would lead to incorrect results, but this can be worked around
8668    by ignoring the PAD type and using the associated XVS type instead.
8669
8670    Set to True if the debugger should trust the contents of PAD types.
8671    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
8672 static bool trust_pad_over_xvs = true;
8673
8674 /* True if TYPE is a struct type introduced by the compiler to force the
8675    alignment of a value.  Such types have a single field with a
8676    distinctive name.  */
8677
8678 int
8679 ada_is_aligner_type (struct type *type)
8680 {
8681   type = ada_check_typedef (type);
8682
8683   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
8684     return 0;
8685
8686   return (type->code () == TYPE_CODE_STRUCT
8687           && type->num_fields () == 1
8688           && strcmp (type->field (0).name (), "F") == 0);
8689 }
8690
8691 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8692    the parallel type.  */
8693
8694 struct type *
8695 ada_get_base_type (struct type *raw_type)
8696 {
8697   struct type *real_type_namer;
8698   struct type *raw_real_type;
8699
8700   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
8701     return raw_type;
8702
8703   if (ada_is_aligner_type (raw_type))
8704     /* The encoding specifies that we should always use the aligner type.
8705        So, even if this aligner type has an associated XVS type, we should
8706        simply ignore it.
8707
8708        According to the compiler gurus, an XVS type parallel to an aligner
8709        type may exist because of a stabs limitation.  In stabs, aligner
8710        types are empty because the field has a variable-sized type, and
8711        thus cannot actually be used as an aligner type.  As a result,
8712        we need the associated parallel XVS type to decode the type.
8713        Since the policy in the compiler is to not change the internal
8714        representation based on the debugging info format, we sometimes
8715        end up having a redundant XVS type parallel to the aligner type.  */
8716     return raw_type;
8717
8718   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
8719   if (real_type_namer == NULL
8720       || real_type_namer->code () != TYPE_CODE_STRUCT
8721       || real_type_namer->num_fields () != 1)
8722     return raw_type;
8723
8724   if (real_type_namer->field (0).type ()->code () != TYPE_CODE_REF)
8725     {
8726       /* This is an older encoding form where the base type needs to be
8727          looked up by name.  We prefer the newer encoding because it is
8728          more efficient.  */
8729       raw_real_type = ada_find_any_type (real_type_namer->field (0).name ());
8730       if (raw_real_type == NULL)
8731         return raw_type;
8732       else
8733         return raw_real_type;
8734     }
8735
8736   /* The field in our XVS type is a reference to the base type.  */
8737   return TYPE_TARGET_TYPE (real_type_namer->field (0).type ());
8738 }
8739
8740 /* The type of value designated by TYPE, with all aligners removed.  */
8741
8742 struct type *
8743 ada_aligned_type (struct type *type)
8744 {
8745   if (ada_is_aligner_type (type))
8746     return ada_aligned_type (type->field (0).type ());
8747   else
8748     return ada_get_base_type (type);
8749 }
8750
8751
8752 /* The address of the aligned value in an object at address VALADDR
8753    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
8754
8755 const gdb_byte *
8756 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
8757 {
8758   if (ada_is_aligner_type (type))
8759     return ada_aligned_value_addr (type->field (0).type (),
8760                                    valaddr +
8761                                    TYPE_FIELD_BITPOS (type,
8762                                                       0) / TARGET_CHAR_BIT);
8763   else
8764     return valaddr;
8765 }
8766
8767
8768
8769 /* The printed representation of an enumeration literal with encoded
8770    name NAME.  The value is good to the next call of ada_enum_name.  */
8771 const char *
8772 ada_enum_name (const char *name)
8773 {
8774   static std::string storage;
8775   const char *tmp;
8776
8777   /* First, unqualify the enumeration name:
8778      1. Search for the last '.' character.  If we find one, then skip
8779      all the preceding characters, the unqualified name starts
8780      right after that dot.
8781      2. Otherwise, we may be debugging on a target where the compiler
8782      translates dots into "__".  Search forward for double underscores,
8783      but stop searching when we hit an overloading suffix, which is
8784      of the form "__" followed by digits.  */
8785
8786   tmp = strrchr (name, '.');
8787   if (tmp != NULL)
8788     name = tmp + 1;
8789   else
8790     {
8791       while ((tmp = strstr (name, "__")) != NULL)
8792         {
8793           if (isdigit (tmp[2]))
8794             break;
8795           else
8796             name = tmp + 2;
8797         }
8798     }
8799
8800   if (name[0] == 'Q')
8801     {
8802       int v;
8803
8804       if (name[1] == 'U' || name[1] == 'W')
8805         {
8806           if (sscanf (name + 2, "%x", &v) != 1)
8807             return name;
8808         }
8809       else if (((name[1] >= '0' && name[1] <= '9')
8810                 || (name[1] >= 'a' && name[1] <= 'z'))
8811                && name[2] == '\0')
8812         {
8813           storage = string_printf ("'%c'", name[1]);
8814           return storage.c_str ();
8815         }
8816       else
8817         return name;
8818
8819       if (isascii (v) && isprint (v))
8820         storage = string_printf ("'%c'", v);
8821       else if (name[1] == 'U')
8822         storage = string_printf ("[\"%02x\"]", v);
8823       else
8824         storage = string_printf ("[\"%04x\"]", v);
8825
8826       return storage.c_str ();
8827     }
8828   else
8829     {
8830       tmp = strstr (name, "__");
8831       if (tmp == NULL)
8832         tmp = strstr (name, "$");
8833       if (tmp != NULL)
8834         {
8835           storage = std::string (name, tmp - name);
8836           return storage.c_str ();
8837         }
8838
8839       return name;
8840     }
8841 }
8842
8843 /* If VAL is wrapped in an aligner or subtype wrapper, return the
8844    value it wraps.  */
8845
8846 static struct value *
8847 unwrap_value (struct value *val)
8848 {
8849   struct type *type = ada_check_typedef (value_type (val));
8850
8851   if (ada_is_aligner_type (type))
8852     {
8853       struct value *v = ada_value_struct_elt (val, "F", 0);
8854       struct type *val_type = ada_check_typedef (value_type (v));
8855
8856       if (ada_type_name (val_type) == NULL)
8857         val_type->set_name (ada_type_name (type));
8858
8859       return unwrap_value (v);
8860     }
8861   else
8862     {
8863       struct type *raw_real_type =
8864         ada_check_typedef (ada_get_base_type (type));
8865
8866       /* If there is no parallel XVS or XVE type, then the value is
8867          already unwrapped.  Return it without further modification.  */
8868       if ((type == raw_real_type)
8869           && ada_find_parallel_type (type, "___XVE") == NULL)
8870         return val;
8871
8872       return
8873         coerce_unspec_val_to_type
8874         (val, ada_to_fixed_type (raw_real_type, 0,
8875                                  value_address (val),
8876                                  NULL, 1));
8877     }
8878 }
8879
8880 /* Given two array types T1 and T2, return nonzero iff both arrays
8881    contain the same number of elements.  */
8882
8883 static int
8884 ada_same_array_size_p (struct type *t1, struct type *t2)
8885 {
8886   LONGEST lo1, hi1, lo2, hi2;
8887
8888   /* Get the array bounds in order to verify that the size of
8889      the two arrays match.  */
8890   if (!get_array_bounds (t1, &lo1, &hi1)
8891       || !get_array_bounds (t2, &lo2, &hi2))
8892     error (_("unable to determine array bounds"));
8893
8894   /* To make things easier for size comparison, normalize a bit
8895      the case of empty arrays by making sure that the difference
8896      between upper bound and lower bound is always -1.  */
8897   if (lo1 > hi1)
8898     hi1 = lo1 - 1;
8899   if (lo2 > hi2)
8900     hi2 = lo2 - 1;
8901
8902   return (hi1 - lo1 == hi2 - lo2);
8903 }
8904
8905 /* Assuming that VAL is an array of integrals, and TYPE represents
8906    an array with the same number of elements, but with wider integral
8907    elements, return an array "casted" to TYPE.  In practice, this
8908    means that the returned array is built by casting each element
8909    of the original array into TYPE's (wider) element type.  */
8910
8911 static struct value *
8912 ada_promote_array_of_integrals (struct type *type, struct value *val)
8913 {
8914   struct type *elt_type = TYPE_TARGET_TYPE (type);
8915   LONGEST lo, hi;
8916   struct value *res;
8917   LONGEST i;
8918
8919   /* Verify that both val and type are arrays of scalars, and
8920      that the size of val's elements is smaller than the size
8921      of type's element.  */
8922   gdb_assert (type->code () == TYPE_CODE_ARRAY);
8923   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
8924   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
8925   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
8926   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
8927               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
8928
8929   if (!get_array_bounds (type, &lo, &hi))
8930     error (_("unable to determine array bounds"));
8931
8932   res = allocate_value (type);
8933
8934   /* Promote each array element.  */
8935   for (i = 0; i < hi - lo + 1; i++)
8936     {
8937       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
8938
8939       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
8940               value_contents_all (elt), TYPE_LENGTH (elt_type));
8941     }
8942
8943   return res;
8944 }
8945
8946 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
8947    return the converted value.  */
8948
8949 static struct value *
8950 coerce_for_assign (struct type *type, struct value *val)
8951 {
8952   struct type *type2 = value_type (val);
8953
8954   if (type == type2)
8955     return val;
8956
8957   type2 = ada_check_typedef (type2);
8958   type = ada_check_typedef (type);
8959
8960   if (type2->code () == TYPE_CODE_PTR
8961       && type->code () == TYPE_CODE_ARRAY)
8962     {
8963       val = ada_value_ind (val);
8964       type2 = value_type (val);
8965     }
8966
8967   if (type2->code () == TYPE_CODE_ARRAY
8968       && type->code () == TYPE_CODE_ARRAY)
8969     {
8970       if (!ada_same_array_size_p (type, type2))
8971         error (_("cannot assign arrays of different length"));
8972
8973       if (is_integral_type (TYPE_TARGET_TYPE (type))
8974           && is_integral_type (TYPE_TARGET_TYPE (type2))
8975           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
8976                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
8977         {
8978           /* Allow implicit promotion of the array elements to
8979              a wider type.  */
8980           return ada_promote_array_of_integrals (type, val);
8981         }
8982
8983       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
8984           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
8985         error (_("Incompatible types in assignment"));
8986       deprecated_set_value_type (val, type);
8987     }
8988   return val;
8989 }
8990
8991 static struct value *
8992 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
8993 {
8994   struct value *val;
8995   struct type *type1, *type2;
8996   LONGEST v, v1, v2;
8997
8998   arg1 = coerce_ref (arg1);
8999   arg2 = coerce_ref (arg2);
9000   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9001   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9002
9003   if (type1->code () != TYPE_CODE_INT
9004       || type2->code () != TYPE_CODE_INT)
9005     return value_binop (arg1, arg2, op);
9006
9007   switch (op)
9008     {
9009     case BINOP_MOD:
9010     case BINOP_DIV:
9011     case BINOP_REM:
9012       break;
9013     default:
9014       return value_binop (arg1, arg2, op);
9015     }
9016
9017   v2 = value_as_long (arg2);
9018   if (v2 == 0)
9019     {
9020       const char *name;
9021       if (op == BINOP_MOD)
9022         name = "mod";
9023       else if (op == BINOP_DIV)
9024         name = "/";
9025       else
9026         {
9027           gdb_assert (op == BINOP_REM);
9028           name = "rem";
9029         }
9030
9031       error (_("second operand of %s must not be zero."), name);
9032     }
9033
9034   if (type1->is_unsigned () || op == BINOP_MOD)
9035     return value_binop (arg1, arg2, op);
9036
9037   v1 = value_as_long (arg1);
9038   switch (op)
9039     {
9040     case BINOP_DIV:
9041       v = v1 / v2;
9042       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9043         v += v > 0 ? -1 : 1;
9044       break;
9045     case BINOP_REM:
9046       v = v1 % v2;
9047       if (v * v1 < 0)
9048         v -= v2;
9049       break;
9050     default:
9051       /* Should not reach this point.  */
9052       v = 0;
9053     }
9054
9055   val = allocate_value (type1);
9056   store_unsigned_integer (value_contents_raw (val),
9057                           TYPE_LENGTH (value_type (val)),
9058                           type_byte_order (type1), v);
9059   return val;
9060 }
9061
9062 static int
9063 ada_value_equal (struct value *arg1, struct value *arg2)
9064 {
9065   if (ada_is_direct_array_type (value_type (arg1))
9066       || ada_is_direct_array_type (value_type (arg2)))
9067     {
9068       struct type *arg1_type, *arg2_type;
9069
9070       /* Automatically dereference any array reference before
9071          we attempt to perform the comparison.  */
9072       arg1 = ada_coerce_ref (arg1);
9073       arg2 = ada_coerce_ref (arg2);
9074
9075       arg1 = ada_coerce_to_simple_array (arg1);
9076       arg2 = ada_coerce_to_simple_array (arg2);
9077
9078       arg1_type = ada_check_typedef (value_type (arg1));
9079       arg2_type = ada_check_typedef (value_type (arg2));
9080
9081       if (arg1_type->code () != TYPE_CODE_ARRAY
9082           || arg2_type->code () != TYPE_CODE_ARRAY)
9083         error (_("Attempt to compare array with non-array"));
9084       /* FIXME: The following works only for types whose
9085          representations use all bits (no padding or undefined bits)
9086          and do not have user-defined equality.  */
9087       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9088               && memcmp (value_contents (arg1), value_contents (arg2),
9089                          TYPE_LENGTH (arg1_type)) == 0);
9090     }
9091   return value_equal (arg1, arg2);
9092 }
9093
9094 namespace expr
9095 {
9096
9097 bool
9098 check_objfile (const std::unique_ptr<ada_component> &comp,
9099                struct objfile *objfile)
9100 {
9101   return comp->uses_objfile (objfile);
9102 }
9103
9104 /* Assign the result of evaluating ARG starting at *POS to the INDEXth
9105    component of LHS (a simple array or a record).  Does not modify the
9106    inferior's memory, nor does it modify LHS (unless LHS ==
9107    CONTAINER).  */
9108
9109 static void
9110 assign_component (struct value *container, struct value *lhs, LONGEST index,
9111                   struct expression *exp, operation_up &arg)
9112 {
9113   scoped_value_mark mark;
9114
9115   struct value *elt;
9116   struct type *lhs_type = check_typedef (value_type (lhs));
9117
9118   if (lhs_type->code () == TYPE_CODE_ARRAY)
9119     {
9120       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9121       struct value *index_val = value_from_longest (index_type, index);
9122
9123       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9124     }
9125   else
9126     {
9127       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9128       elt = ada_to_fixed_value (elt);
9129     }
9130
9131   ada_aggregate_operation *ag_op
9132     = dynamic_cast<ada_aggregate_operation *> (arg.get ());
9133   if (ag_op != nullptr)
9134     ag_op->assign_aggregate (container, elt, exp);
9135   else
9136     value_assign_to_component (container, elt,
9137                                arg->evaluate (nullptr, exp,
9138                                               EVAL_NORMAL));
9139 }
9140
9141 bool
9142 ada_aggregate_component::uses_objfile (struct objfile *objfile)
9143 {
9144   for (const auto &item : m_components)
9145     if (item->uses_objfile (objfile))
9146       return true;
9147   return false;
9148 }
9149
9150 void
9151 ada_aggregate_component::dump (ui_file *stream, int depth)
9152 {
9153   fprintf_filtered (stream, _("%*sAggregate\n"), depth, "");
9154   for (const auto &item : m_components)
9155     item->dump (stream, depth + 1);
9156 }
9157
9158 void
9159 ada_aggregate_component::assign (struct value *container,
9160                                  struct value *lhs, struct expression *exp,
9161                                  std::vector<LONGEST> &indices,
9162                                  LONGEST low, LONGEST high)
9163 {
9164   for (auto &item : m_components)
9165     item->assign (container, lhs, exp, indices, low, high);
9166 }
9167
9168 /* See ada-exp.h.  */
9169
9170 value *
9171 ada_aggregate_operation::assign_aggregate (struct value *container,
9172                                            struct value *lhs,
9173                                            struct expression *exp)
9174 {
9175   struct type *lhs_type;
9176   LONGEST low_index, high_index;
9177
9178   container = ada_coerce_ref (container);
9179   if (ada_is_direct_array_type (value_type (container)))
9180     container = ada_coerce_to_simple_array (container);
9181   lhs = ada_coerce_ref (lhs);
9182   if (!deprecated_value_modifiable (lhs))
9183     error (_("Left operand of assignment is not a modifiable lvalue."));
9184
9185   lhs_type = check_typedef (value_type (lhs));
9186   if (ada_is_direct_array_type (lhs_type))
9187     {
9188       lhs = ada_coerce_to_simple_array (lhs);
9189       lhs_type = check_typedef (value_type (lhs));
9190       low_index = lhs_type->bounds ()->low.const_val ();
9191       high_index = lhs_type->bounds ()->high.const_val ();
9192     }
9193   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9194     {
9195       low_index = 0;
9196       high_index = num_visible_fields (lhs_type) - 1;
9197     }
9198   else
9199     error (_("Left-hand side must be array or record."));
9200
9201   std::vector<LONGEST> indices (4);
9202   indices[0] = indices[1] = low_index - 1;
9203   indices[2] = indices[3] = high_index + 1;
9204
9205   std::get<0> (m_storage)->assign (container, lhs, exp, indices,
9206                                    low_index, high_index);
9207
9208   return container;
9209 }
9210
9211 bool
9212 ada_positional_component::uses_objfile (struct objfile *objfile)
9213 {
9214   return m_op->uses_objfile (objfile);
9215 }
9216
9217 void
9218 ada_positional_component::dump (ui_file *stream, int depth)
9219 {
9220   fprintf_filtered (stream, _("%*sPositional, index = %d\n"),
9221                     depth, "", m_index);
9222   m_op->dump (stream, depth + 1);
9223 }
9224
9225 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9226    construct, given that the positions are relative to lower bound
9227    LOW, where HIGH is the upper bound.  Record the position in
9228    INDICES.  CONTAINER is as for assign_aggregate.  */
9229 void
9230 ada_positional_component::assign (struct value *container,
9231                                   struct value *lhs, struct expression *exp,
9232                                   std::vector<LONGEST> &indices,
9233                                   LONGEST low, LONGEST high)
9234 {
9235   LONGEST ind = m_index + low;
9236
9237   if (ind - 1 == high)
9238     warning (_("Extra components in aggregate ignored."));
9239   if (ind <= high)
9240     {
9241       add_component_interval (ind, ind, indices);
9242       assign_component (container, lhs, ind, exp, m_op);
9243     }
9244 }
9245
9246 bool
9247 ada_discrete_range_association::uses_objfile (struct objfile *objfile)
9248 {
9249   return m_low->uses_objfile (objfile) || m_high->uses_objfile (objfile);
9250 }
9251
9252 void
9253 ada_discrete_range_association::dump (ui_file *stream, int depth)
9254 {
9255   fprintf_filtered (stream, _("%*sDiscrete range:\n"), depth, "");
9256   m_low->dump (stream, depth + 1);
9257   m_high->dump (stream, depth + 1);
9258 }
9259
9260 void
9261 ada_discrete_range_association::assign (struct value *container,
9262                                         struct value *lhs,
9263                                         struct expression *exp,
9264                                         std::vector<LONGEST> &indices,
9265                                         LONGEST low, LONGEST high,
9266                                         operation_up &op)
9267 {
9268   LONGEST lower = value_as_long (m_low->evaluate (nullptr, exp, EVAL_NORMAL));
9269   LONGEST upper = value_as_long (m_high->evaluate (nullptr, exp, EVAL_NORMAL));
9270
9271   if (lower <= upper && (lower < low || upper > high))
9272     error (_("Index in component association out of bounds."));
9273
9274   add_component_interval (lower, upper, indices);
9275   while (lower <= upper)
9276     {
9277       assign_component (container, lhs, lower, exp, op);
9278       lower += 1;
9279     }
9280 }
9281
9282 bool
9283 ada_name_association::uses_objfile (struct objfile *objfile)
9284 {
9285   return m_val->uses_objfile (objfile);
9286 }
9287
9288 void
9289 ada_name_association::dump (ui_file *stream, int depth)
9290 {
9291   fprintf_filtered (stream, _("%*sName:\n"), depth, "");
9292   m_val->dump (stream, depth + 1);
9293 }
9294
9295 void
9296 ada_name_association::assign (struct value *container,
9297                               struct value *lhs,
9298                               struct expression *exp,
9299                               std::vector<LONGEST> &indices,
9300                               LONGEST low, LONGEST high,
9301                               operation_up &op)
9302 {
9303   int index;
9304
9305   if (ada_is_direct_array_type (value_type (lhs)))
9306     index = longest_to_int (value_as_long (m_val->evaluate (nullptr, exp,
9307                                                             EVAL_NORMAL)));
9308   else
9309     {
9310       ada_string_operation *strop
9311         = dynamic_cast<ada_string_operation *> (m_val.get ());
9312
9313       const char *name;
9314       if (strop != nullptr)
9315         name = strop->get_name ();
9316       else
9317         {
9318           ada_var_value_operation *vvo
9319             = dynamic_cast<ada_var_value_operation *> (m_val.get ());
9320           if (vvo != nullptr)
9321             error (_("Invalid record component association."));
9322           name = vvo->get_symbol ()->natural_name ();
9323         }
9324
9325       index = 0;
9326       if (! find_struct_field (name, value_type (lhs), 0,
9327                                NULL, NULL, NULL, NULL, &index))
9328         error (_("Unknown component name: %s."), name);
9329     }
9330
9331   add_component_interval (index, index, indices);
9332   assign_component (container, lhs, index, exp, op);
9333 }
9334
9335 bool
9336 ada_choices_component::uses_objfile (struct objfile *objfile)
9337 {
9338   if (m_op->uses_objfile (objfile))
9339     return true;
9340   for (const auto &item : m_assocs)
9341     if (item->uses_objfile (objfile))
9342       return true;
9343   return false;
9344 }
9345
9346 void
9347 ada_choices_component::dump (ui_file *stream, int depth)
9348 {
9349   fprintf_filtered (stream, _("%*sChoices:\n"), depth, "");
9350   m_op->dump (stream, depth + 1);
9351   for (const auto &item : m_assocs)
9352     item->dump (stream, depth + 1);
9353 }
9354
9355 /* Assign into the components of LHS indexed by the OP_CHOICES
9356    construct at *POS, updating *POS past the construct, given that
9357    the allowable indices are LOW..HIGH.  Record the indices assigned
9358    to in INDICES.  CONTAINER is as for assign_aggregate.  */
9359 void
9360 ada_choices_component::assign (struct value *container,
9361                                struct value *lhs, struct expression *exp,
9362                                std::vector<LONGEST> &indices,
9363                                LONGEST low, LONGEST high)
9364 {
9365   for (auto &item : m_assocs)
9366     item->assign (container, lhs, exp, indices, low, high, m_op);
9367 }
9368
9369 bool
9370 ada_others_component::uses_objfile (struct objfile *objfile)
9371 {
9372   return m_op->uses_objfile (objfile);
9373 }
9374
9375 void
9376 ada_others_component::dump (ui_file *stream, int depth)
9377 {
9378   fprintf_filtered (stream, _("%*sOthers:\n"), depth, "");
9379   m_op->dump (stream, depth + 1);
9380 }
9381
9382 /* Assign the value of the expression in the OP_OTHERS construct in
9383    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9384    have not been previously assigned.  The index intervals already assigned
9385    are in INDICES.  CONTAINER is as for assign_aggregate.  */
9386 void
9387 ada_others_component::assign (struct value *container,
9388                               struct value *lhs, struct expression *exp,
9389                               std::vector<LONGEST> &indices,
9390                               LONGEST low, LONGEST high)
9391 {
9392   int num_indices = indices.size ();
9393   for (int i = 0; i < num_indices - 2; i += 2)
9394     {
9395       for (LONGEST ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9396         assign_component (container, lhs, ind, exp, m_op);
9397     }
9398 }
9399
9400 struct value *
9401 ada_assign_operation::evaluate (struct type *expect_type,
9402                                 struct expression *exp,
9403                                 enum noside noside)
9404 {
9405   value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
9406
9407   ada_aggregate_operation *ag_op
9408     = dynamic_cast<ada_aggregate_operation *> (std::get<1> (m_storage).get ());
9409   if (ag_op != nullptr)
9410     {
9411       if (noside != EVAL_NORMAL)
9412         return arg1;
9413
9414       arg1 = ag_op->assign_aggregate (arg1, arg1, exp);
9415       return ada_value_assign (arg1, arg1);
9416     }
9417   /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
9418      except if the lhs of our assignment is a convenience variable.
9419      In the case of assigning to a convenience variable, the lhs
9420      should be exactly the result of the evaluation of the rhs.  */
9421   struct type *type = value_type (arg1);
9422   if (VALUE_LVAL (arg1) == lval_internalvar)
9423     type = NULL;
9424   value *arg2 = std::get<1> (m_storage)->evaluate (type, exp, noside);
9425   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9426     return arg1;
9427   if (VALUE_LVAL (arg1) == lval_internalvar)
9428     {
9429       /* Nothing.  */
9430     }
9431   else
9432     arg2 = coerce_for_assign (value_type (arg1), arg2);
9433   return ada_value_assign (arg1, arg2);
9434 }
9435
9436 } /* namespace expr */
9437
9438 /* Add the interval [LOW .. HIGH] to the sorted set of intervals
9439    [ INDICES[0] .. INDICES[1] ],...  The resulting intervals do not
9440    overlap.  */
9441 static void
9442 add_component_interval (LONGEST low, LONGEST high, 
9443                         std::vector<LONGEST> &indices)
9444 {
9445   int i, j;
9446
9447   int size = indices.size ();
9448   for (i = 0; i < size; i += 2) {
9449     if (high >= indices[i] && low <= indices[i + 1])
9450       {
9451         int kh;
9452
9453         for (kh = i + 2; kh < size; kh += 2)
9454           if (high < indices[kh])
9455             break;
9456         if (low < indices[i])
9457           indices[i] = low;
9458         indices[i + 1] = indices[kh - 1];
9459         if (high > indices[i + 1])
9460           indices[i + 1] = high;
9461         memcpy (indices.data () + i + 2, indices.data () + kh, size - kh);
9462         indices.resize (kh - i - 2);
9463         return;
9464       }
9465     else if (high < indices[i])
9466       break;
9467   }
9468         
9469   indices.resize (indices.size () + 2);
9470   for (j = indices.size () - 1; j >= i + 2; j -= 1)
9471     indices[j] = indices[j - 2];
9472   indices[i] = low;
9473   indices[i + 1] = high;
9474 }
9475
9476 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9477    is different.  */
9478
9479 static struct value *
9480 ada_value_cast (struct type *type, struct value *arg2)
9481 {
9482   if (type == ada_check_typedef (value_type (arg2)))
9483     return arg2;
9484
9485   return value_cast (type, arg2);
9486 }
9487
9488 /*  Evaluating Ada expressions, and printing their result.
9489     ------------------------------------------------------
9490
9491     1. Introduction:
9492     ----------------
9493
9494     We usually evaluate an Ada expression in order to print its value.
9495     We also evaluate an expression in order to print its type, which
9496     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9497     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9498     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9499     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9500     similar.
9501
9502     Evaluating expressions is a little more complicated for Ada entities
9503     than it is for entities in languages such as C.  The main reason for
9504     this is that Ada provides types whose definition might be dynamic.
9505     One example of such types is variant records.  Or another example
9506     would be an array whose bounds can only be known at run time.
9507
9508     The following description is a general guide as to what should be
9509     done (and what should NOT be done) in order to evaluate an expression
9510     involving such types, and when.  This does not cover how the semantic
9511     information is encoded by GNAT as this is covered separatly.  For the
9512     document used as the reference for the GNAT encoding, see exp_dbug.ads
9513     in the GNAT sources.
9514
9515     Ideally, we should embed each part of this description next to its
9516     associated code.  Unfortunately, the amount of code is so vast right
9517     now that it's hard to see whether the code handling a particular
9518     situation might be duplicated or not.  One day, when the code is
9519     cleaned up, this guide might become redundant with the comments
9520     inserted in the code, and we might want to remove it.
9521
9522     2. ``Fixing'' an Entity, the Simple Case:
9523     -----------------------------------------
9524
9525     When evaluating Ada expressions, the tricky issue is that they may
9526     reference entities whose type contents and size are not statically
9527     known.  Consider for instance a variant record:
9528
9529        type Rec (Empty : Boolean := True) is record
9530           case Empty is
9531              when True => null;
9532              when False => Value : Integer;
9533           end case;
9534        end record;
9535        Yes : Rec := (Empty => False, Value => 1);
9536        No  : Rec := (empty => True);
9537
9538     The size and contents of that record depends on the value of the
9539     descriminant (Rec.Empty).  At this point, neither the debugging
9540     information nor the associated type structure in GDB are able to
9541     express such dynamic types.  So what the debugger does is to create
9542     "fixed" versions of the type that applies to the specific object.
9543     We also informally refer to this operation as "fixing" an object,
9544     which means creating its associated fixed type.
9545
9546     Example: when printing the value of variable "Yes" above, its fixed
9547     type would look like this:
9548
9549        type Rec is record
9550           Empty : Boolean;
9551           Value : Integer;
9552        end record;
9553
9554     On the other hand, if we printed the value of "No", its fixed type
9555     would become:
9556
9557        type Rec is record
9558           Empty : Boolean;
9559        end record;
9560
9561     Things become a little more complicated when trying to fix an entity
9562     with a dynamic type that directly contains another dynamic type,
9563     such as an array of variant records, for instance.  There are
9564     two possible cases: Arrays, and records.
9565
9566     3. ``Fixing'' Arrays:
9567     ---------------------
9568
9569     The type structure in GDB describes an array in terms of its bounds,
9570     and the type of its elements.  By design, all elements in the array
9571     have the same type and we cannot represent an array of variant elements
9572     using the current type structure in GDB.  When fixing an array,
9573     we cannot fix the array element, as we would potentially need one
9574     fixed type per element of the array.  As a result, the best we can do
9575     when fixing an array is to produce an array whose bounds and size
9576     are correct (allowing us to read it from memory), but without having
9577     touched its element type.  Fixing each element will be done later,
9578     when (if) necessary.
9579
9580     Arrays are a little simpler to handle than records, because the same
9581     amount of memory is allocated for each element of the array, even if
9582     the amount of space actually used by each element differs from element
9583     to element.  Consider for instance the following array of type Rec:
9584
9585        type Rec_Array is array (1 .. 2) of Rec;
9586
9587     The actual amount of memory occupied by each element might be different
9588     from element to element, depending on the value of their discriminant.
9589     But the amount of space reserved for each element in the array remains
9590     fixed regardless.  So we simply need to compute that size using
9591     the debugging information available, from which we can then determine
9592     the array size (we multiply the number of elements of the array by
9593     the size of each element).
9594
9595     The simplest case is when we have an array of a constrained element
9596     type. For instance, consider the following type declarations:
9597
9598         type Bounded_String (Max_Size : Integer) is
9599            Length : Integer;
9600            Buffer : String (1 .. Max_Size);
9601         end record;
9602         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9603
9604     In this case, the compiler describes the array as an array of
9605     variable-size elements (identified by its XVS suffix) for which
9606     the size can be read in the parallel XVZ variable.
9607
9608     In the case of an array of an unconstrained element type, the compiler
9609     wraps the array element inside a private PAD type.  This type should not
9610     be shown to the user, and must be "unwrap"'ed before printing.  Note
9611     that we also use the adjective "aligner" in our code to designate
9612     these wrapper types.
9613
9614     In some cases, the size allocated for each element is statically
9615     known.  In that case, the PAD type already has the correct size,
9616     and the array element should remain unfixed.
9617
9618     But there are cases when this size is not statically known.
9619     For instance, assuming that "Five" is an integer variable:
9620
9621         type Dynamic is array (1 .. Five) of Integer;
9622         type Wrapper (Has_Length : Boolean := False) is record
9623            Data : Dynamic;
9624            case Has_Length is
9625               when True => Length : Integer;
9626               when False => null;
9627            end case;
9628         end record;
9629         type Wrapper_Array is array (1 .. 2) of Wrapper;
9630
9631         Hello : Wrapper_Array := (others => (Has_Length => True,
9632                                              Data => (others => 17),
9633                                              Length => 1));
9634
9635
9636     The debugging info would describe variable Hello as being an
9637     array of a PAD type.  The size of that PAD type is not statically
9638     known, but can be determined using a parallel XVZ variable.
9639     In that case, a copy of the PAD type with the correct size should
9640     be used for the fixed array.
9641
9642     3. ``Fixing'' record type objects:
9643     ----------------------------------
9644
9645     Things are slightly different from arrays in the case of dynamic
9646     record types.  In this case, in order to compute the associated
9647     fixed type, we need to determine the size and offset of each of
9648     its components.  This, in turn, requires us to compute the fixed
9649     type of each of these components.
9650
9651     Consider for instance the example:
9652
9653         type Bounded_String (Max_Size : Natural) is record
9654            Str : String (1 .. Max_Size);
9655            Length : Natural;
9656         end record;
9657         My_String : Bounded_String (Max_Size => 10);
9658
9659     In that case, the position of field "Length" depends on the size
9660     of field Str, which itself depends on the value of the Max_Size
9661     discriminant.  In order to fix the type of variable My_String,
9662     we need to fix the type of field Str.  Therefore, fixing a variant
9663     record requires us to fix each of its components.
9664
9665     However, if a component does not have a dynamic size, the component
9666     should not be fixed.  In particular, fields that use a PAD type
9667     should not fixed.  Here is an example where this might happen
9668     (assuming type Rec above):
9669
9670        type Container (Big : Boolean) is record
9671           First : Rec;
9672           After : Integer;
9673           case Big is
9674              when True => Another : Integer;
9675              when False => null;
9676           end case;
9677        end record;
9678        My_Container : Container := (Big => False,
9679                                     First => (Empty => True),
9680                                     After => 42);
9681
9682     In that example, the compiler creates a PAD type for component First,
9683     whose size is constant, and then positions the component After just
9684     right after it.  The offset of component After is therefore constant
9685     in this case.
9686
9687     The debugger computes the position of each field based on an algorithm
9688     that uses, among other things, the actual position and size of the field
9689     preceding it.  Let's now imagine that the user is trying to print
9690     the value of My_Container.  If the type fixing was recursive, we would
9691     end up computing the offset of field After based on the size of the
9692     fixed version of field First.  And since in our example First has
9693     only one actual field, the size of the fixed type is actually smaller
9694     than the amount of space allocated to that field, and thus we would
9695     compute the wrong offset of field After.
9696
9697     To make things more complicated, we need to watch out for dynamic
9698     components of variant records (identified by the ___XVL suffix in
9699     the component name).  Even if the target type is a PAD type, the size
9700     of that type might not be statically known.  So the PAD type needs
9701     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
9702     we might end up with the wrong size for our component.  This can be
9703     observed with the following type declarations:
9704
9705         type Octal is new Integer range 0 .. 7;
9706         type Octal_Array is array (Positive range <>) of Octal;
9707         pragma Pack (Octal_Array);
9708
9709         type Octal_Buffer (Size : Positive) is record
9710            Buffer : Octal_Array (1 .. Size);
9711            Length : Integer;
9712         end record;
9713
9714     In that case, Buffer is a PAD type whose size is unset and needs
9715     to be computed by fixing the unwrapped type.
9716
9717     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
9718     ----------------------------------------------------------
9719
9720     Lastly, when should the sub-elements of an entity that remained unfixed
9721     thus far, be actually fixed?
9722
9723     The answer is: Only when referencing that element.  For instance
9724     when selecting one component of a record, this specific component
9725     should be fixed at that point in time.  Or when printing the value
9726     of a record, each component should be fixed before its value gets
9727     printed.  Similarly for arrays, the element of the array should be
9728     fixed when printing each element of the array, or when extracting
9729     one element out of that array.  On the other hand, fixing should
9730     not be performed on the elements when taking a slice of an array!
9731
9732     Note that one of the side effects of miscomputing the offset and
9733     size of each field is that we end up also miscomputing the size
9734     of the containing type.  This can have adverse results when computing
9735     the value of an entity.  GDB fetches the value of an entity based
9736     on the size of its type, and thus a wrong size causes GDB to fetch
9737     the wrong amount of memory.  In the case where the computed size is
9738     too small, GDB fetches too little data to print the value of our
9739     entity.  Results in this case are unpredictable, as we usually read
9740     past the buffer containing the data =:-o.  */
9741
9742 /* A helper function for TERNOP_IN_RANGE.  */
9743
9744 static value *
9745 eval_ternop_in_range (struct type *expect_type, struct expression *exp,
9746                       enum noside noside,
9747                       value *arg1, value *arg2, value *arg3)
9748 {
9749   binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
9750   binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
9751   struct type *type = language_bool_type (exp->language_defn, exp->gdbarch);
9752   return
9753     value_from_longest (type,
9754                         (value_less (arg1, arg3)
9755                          || value_equal (arg1, arg3))
9756                         && (value_less (arg2, arg1)
9757                             || value_equal (arg2, arg1)));
9758 }
9759
9760 /* A helper function for UNOP_NEG.  */
9761
9762 value *
9763 ada_unop_neg (struct type *expect_type,
9764               struct expression *exp,
9765               enum noside noside, enum exp_opcode op,
9766               struct value *arg1)
9767 {
9768   unop_promote (exp->language_defn, exp->gdbarch, &arg1);
9769   return value_neg (arg1);
9770 }
9771
9772 /* A helper function for UNOP_IN_RANGE.  */
9773
9774 value *
9775 ada_unop_in_range (struct type *expect_type,
9776                    struct expression *exp,
9777                    enum noside noside, enum exp_opcode op,
9778                    struct value *arg1, struct type *type)
9779 {
9780   struct value *arg2, *arg3;
9781   switch (type->code ())
9782     {
9783     default:
9784       lim_warning (_("Membership test incompletely implemented; "
9785                      "always returns true"));
9786       type = language_bool_type (exp->language_defn, exp->gdbarch);
9787       return value_from_longest (type, (LONGEST) 1);
9788
9789     case TYPE_CODE_RANGE:
9790       arg2 = value_from_longest (type,
9791                                  type->bounds ()->low.const_val ());
9792       arg3 = value_from_longest (type,
9793                                  type->bounds ()->high.const_val ());
9794       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
9795       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
9796       type = language_bool_type (exp->language_defn, exp->gdbarch);
9797       return
9798         value_from_longest (type,
9799                             (value_less (arg1, arg3)
9800                              || value_equal (arg1, arg3))
9801                             && (value_less (arg2, arg1)
9802                                 || value_equal (arg2, arg1)));
9803     }
9804 }
9805
9806 /* A helper function for OP_ATR_TAG.  */
9807
9808 value *
9809 ada_atr_tag (struct type *expect_type,
9810              struct expression *exp,
9811              enum noside noside, enum exp_opcode op,
9812              struct value *arg1)
9813 {
9814   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9815     return value_zero (ada_tag_type (arg1), not_lval);
9816
9817   return ada_value_tag (arg1);
9818 }
9819
9820 /* A helper function for OP_ATR_SIZE.  */
9821
9822 value *
9823 ada_atr_size (struct type *expect_type,
9824               struct expression *exp,
9825               enum noside noside, enum exp_opcode op,
9826               struct value *arg1)
9827 {
9828   struct type *type = value_type (arg1);
9829
9830   /* If the argument is a reference, then dereference its type, since
9831      the user is really asking for the size of the actual object,
9832      not the size of the pointer.  */
9833   if (type->code () == TYPE_CODE_REF)
9834     type = TYPE_TARGET_TYPE (type);
9835
9836   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9837     return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
9838   else
9839     return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
9840                                TARGET_CHAR_BIT * TYPE_LENGTH (type));
9841 }
9842
9843 /* A helper function for UNOP_ABS.  */
9844
9845 value *
9846 ada_abs (struct type *expect_type,
9847          struct expression *exp,
9848          enum noside noside, enum exp_opcode op,
9849          struct value *arg1)
9850 {
9851   unop_promote (exp->language_defn, exp->gdbarch, &arg1);
9852   if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
9853     return value_neg (arg1);
9854   else
9855     return arg1;
9856 }
9857
9858 /* A helper function for BINOP_MUL.  */
9859
9860 value *
9861 ada_mult_binop (struct type *expect_type,
9862                 struct expression *exp,
9863                 enum noside noside, enum exp_opcode op,
9864                 struct value *arg1, struct value *arg2)
9865 {
9866   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9867     {
9868       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
9869       return value_zero (value_type (arg1), not_lval);
9870     }
9871   else
9872     {
9873       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
9874       return ada_value_binop (arg1, arg2, op);
9875     }
9876 }
9877
9878 /* A helper function for BINOP_EQUAL and BINOP_NOTEQUAL.  */
9879
9880 value *
9881 ada_equal_binop (struct type *expect_type,
9882                  struct expression *exp,
9883                  enum noside noside, enum exp_opcode op,
9884                  struct value *arg1, struct value *arg2)
9885 {
9886   int tem;
9887   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9888     tem = 0;
9889   else
9890     {
9891       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
9892       tem = ada_value_equal (arg1, arg2);
9893     }
9894   if (op == BINOP_NOTEQUAL)
9895     tem = !tem;
9896   struct type *type = language_bool_type (exp->language_defn, exp->gdbarch);
9897   return value_from_longest (type, (LONGEST) tem);
9898 }
9899
9900 /* A helper function for TERNOP_SLICE.  */
9901
9902 value *
9903 ada_ternop_slice (struct expression *exp,
9904                   enum noside noside,
9905                   struct value *array, struct value *low_bound_val,
9906                   struct value *high_bound_val)
9907 {
9908   LONGEST low_bound;
9909   LONGEST high_bound;
9910
9911   low_bound_val = coerce_ref (low_bound_val);
9912   high_bound_val = coerce_ref (high_bound_val);
9913   low_bound = value_as_long (low_bound_val);
9914   high_bound = value_as_long (high_bound_val);
9915
9916   /* If this is a reference to an aligner type, then remove all
9917      the aligners.  */
9918   if (value_type (array)->code () == TYPE_CODE_REF
9919       && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
9920     TYPE_TARGET_TYPE (value_type (array)) =
9921       ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
9922
9923   if (ada_is_any_packed_array_type (value_type (array)))
9924     error (_("cannot slice a packed array"));
9925
9926   /* If this is a reference to an array or an array lvalue,
9927      convert to a pointer.  */
9928   if (value_type (array)->code () == TYPE_CODE_REF
9929       || (value_type (array)->code () == TYPE_CODE_ARRAY
9930           && VALUE_LVAL (array) == lval_memory))
9931     array = value_addr (array);
9932
9933   if (noside == EVAL_AVOID_SIDE_EFFECTS
9934       && ada_is_array_descriptor_type (ada_check_typedef
9935                                        (value_type (array))))
9936     return empty_array (ada_type_of_array (array, 0), low_bound,
9937                         high_bound);
9938
9939   array = ada_coerce_to_simple_array_ptr (array);
9940
9941   /* If we have more than one level of pointer indirection,
9942      dereference the value until we get only one level.  */
9943   while (value_type (array)->code () == TYPE_CODE_PTR
9944          && (TYPE_TARGET_TYPE (value_type (array))->code ()
9945              == TYPE_CODE_PTR))
9946     array = value_ind (array);
9947
9948   /* Make sure we really do have an array type before going further,
9949      to avoid a SEGV when trying to get the index type or the target
9950      type later down the road if the debug info generated by
9951      the compiler is incorrect or incomplete.  */
9952   if (!ada_is_simple_array_type (value_type (array)))
9953     error (_("cannot take slice of non-array"));
9954
9955   if (ada_check_typedef (value_type (array))->code ()
9956       == TYPE_CODE_PTR)
9957     {
9958       struct type *type0 = ada_check_typedef (value_type (array));
9959
9960       if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
9961         return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
9962       else
9963         {
9964           struct type *arr_type0 =
9965             to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
9966
9967           return ada_value_slice_from_ptr (array, arr_type0,
9968                                            longest_to_int (low_bound),
9969                                            longest_to_int (high_bound));
9970         }
9971     }
9972   else if (noside == EVAL_AVOID_SIDE_EFFECTS)
9973     return array;
9974   else if (high_bound < low_bound)
9975     return empty_array (value_type (array), low_bound, high_bound);
9976   else
9977     return ada_value_slice (array, longest_to_int (low_bound),
9978                             longest_to_int (high_bound));
9979 }
9980
9981 /* A helper function for BINOP_IN_BOUNDS.  */
9982
9983 value *
9984 ada_binop_in_bounds (struct expression *exp, enum noside noside,
9985                      struct value *arg1, struct value *arg2, int n)
9986 {
9987   if (noside == EVAL_AVOID_SIDE_EFFECTS)
9988     {
9989       struct type *type = language_bool_type (exp->language_defn,
9990                                               exp->gdbarch);
9991       return value_zero (type, not_lval);
9992     }
9993
9994   struct type *type = ada_index_type (value_type (arg2), n, "range");
9995   if (!type)
9996     type = value_type (arg1);
9997
9998   value *arg3 = value_from_longest (type, ada_array_bound (arg2, n, 1));
9999   arg2 = value_from_longest (type, ada_array_bound (arg2, n, 0));
10000
10001   binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10002   binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10003   type = language_bool_type (exp->language_defn, exp->gdbarch);
10004   return value_from_longest (type,
10005                              (value_less (arg1, arg3)
10006                               || value_equal (arg1, arg3))
10007                              && (value_less (arg2, arg1)
10008                                  || value_equal (arg2, arg1)));
10009 }
10010
10011 /* A helper function for some attribute operations.  */
10012
10013 static value *
10014 ada_unop_atr (struct expression *exp, enum noside noside, enum exp_opcode op,
10015               struct value *arg1, struct type *type_arg, int tem)
10016 {
10017   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10018     {
10019       if (type_arg == NULL)
10020         type_arg = value_type (arg1);
10021
10022       if (ada_is_constrained_packed_array_type (type_arg))
10023         type_arg = decode_constrained_packed_array_type (type_arg);
10024
10025       if (!discrete_type_p (type_arg))
10026         {
10027           switch (op)
10028             {
10029             default:          /* Should never happen.  */
10030               error (_("unexpected attribute encountered"));
10031             case OP_ATR_FIRST:
10032             case OP_ATR_LAST:
10033               type_arg = ada_index_type (type_arg, tem,
10034                                          ada_attribute_name (op));
10035               break;
10036             case OP_ATR_LENGTH:
10037               type_arg = builtin_type (exp->gdbarch)->builtin_int;
10038               break;
10039             }
10040         }
10041
10042       return value_zero (type_arg, not_lval);
10043     }
10044   else if (type_arg == NULL)
10045     {
10046       arg1 = ada_coerce_ref (arg1);
10047
10048       if (ada_is_constrained_packed_array_type (value_type (arg1)))
10049         arg1 = ada_coerce_to_simple_array (arg1);
10050
10051       struct type *type;
10052       if (op == OP_ATR_LENGTH)
10053         type = builtin_type (exp->gdbarch)->builtin_int;
10054       else
10055         {
10056           type = ada_index_type (value_type (arg1), tem,
10057                                  ada_attribute_name (op));
10058           if (type == NULL)
10059             type = builtin_type (exp->gdbarch)->builtin_int;
10060         }
10061
10062       switch (op)
10063         {
10064         default:          /* Should never happen.  */
10065           error (_("unexpected attribute encountered"));
10066         case OP_ATR_FIRST:
10067           return value_from_longest
10068             (type, ada_array_bound (arg1, tem, 0));
10069         case OP_ATR_LAST:
10070           return value_from_longest
10071             (type, ada_array_bound (arg1, tem, 1));
10072         case OP_ATR_LENGTH:
10073           return value_from_longest
10074             (type, ada_array_length (arg1, tem));
10075         }
10076     }
10077   else if (discrete_type_p (type_arg))
10078     {
10079       struct type *range_type;
10080       const char *name = ada_type_name (type_arg);
10081
10082       range_type = NULL;
10083       if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
10084         range_type = to_fixed_range_type (type_arg, NULL);
10085       if (range_type == NULL)
10086         range_type = type_arg;
10087       switch (op)
10088         {
10089         default:
10090           error (_("unexpected attribute encountered"));
10091         case OP_ATR_FIRST:
10092           return value_from_longest 
10093             (range_type, ada_discrete_type_low_bound (range_type));
10094         case OP_ATR_LAST:
10095           return value_from_longest
10096             (range_type, ada_discrete_type_high_bound (range_type));
10097         case OP_ATR_LENGTH:
10098           error (_("the 'length attribute applies only to array types"));
10099         }
10100     }
10101   else if (type_arg->code () == TYPE_CODE_FLT)
10102     error (_("unimplemented type attribute"));
10103   else
10104     {
10105       LONGEST low, high;
10106
10107       if (ada_is_constrained_packed_array_type (type_arg))
10108         type_arg = decode_constrained_packed_array_type (type_arg);
10109
10110       struct type *type;
10111       if (op == OP_ATR_LENGTH)
10112         type = builtin_type (exp->gdbarch)->builtin_int;
10113       else
10114         {
10115           type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10116           if (type == NULL)
10117             type = builtin_type (exp->gdbarch)->builtin_int;
10118         }
10119
10120       switch (op)
10121         {
10122         default:
10123           error (_("unexpected attribute encountered"));
10124         case OP_ATR_FIRST:
10125           low = ada_array_bound_from_type (type_arg, tem, 0);
10126           return value_from_longest (type, low);
10127         case OP_ATR_LAST:
10128           high = ada_array_bound_from_type (type_arg, tem, 1);
10129           return value_from_longest (type, high);
10130         case OP_ATR_LENGTH:
10131           low = ada_array_bound_from_type (type_arg, tem, 0);
10132           high = ada_array_bound_from_type (type_arg, tem, 1);
10133           return value_from_longest (type, high - low + 1);
10134         }
10135     }
10136 }
10137
10138 /* A helper function for OP_ATR_MIN and OP_ATR_MAX.  */
10139
10140 struct value *
10141 ada_binop_minmax (struct type *expect_type,
10142                   struct expression *exp,
10143                   enum noside noside, enum exp_opcode op,
10144                   struct value *arg1, struct value *arg2)
10145 {
10146   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10147     return value_zero (value_type (arg1), not_lval);
10148   else
10149     {
10150       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10151       return value_binop (arg1, arg2, op);
10152     }
10153 }
10154
10155 /* A helper function for BINOP_EXP.  */
10156
10157 struct value *
10158 ada_binop_exp (struct type *expect_type,
10159                struct expression *exp,
10160                enum noside noside, enum exp_opcode op,
10161                struct value *arg1, struct value *arg2)
10162 {
10163   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10164     return value_zero (value_type (arg1), not_lval);
10165   else
10166     {
10167       /* For integer exponentiation operations,
10168          only promote the first argument.  */
10169       if (is_integral_type (value_type (arg2)))
10170         unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10171       else
10172         binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10173
10174       return value_binop (arg1, arg2, op);
10175     }
10176 }
10177
10178 namespace expr
10179 {
10180
10181 /* See ada-exp.h.  */
10182
10183 operation_up
10184 ada_resolvable::replace (operation_up &&owner,
10185                          struct expression *exp,
10186                          bool deprocedure_p,
10187                          bool parse_completion,
10188                          innermost_block_tracker *tracker,
10189                          struct type *context_type)
10190 {
10191   if (resolve (exp, deprocedure_p, parse_completion, tracker, context_type))
10192     return (make_operation<ada_funcall_operation>
10193             (std::move (owner),
10194              std::vector<operation_up> ()));
10195   return std::move (owner);
10196 }
10197
10198 /* Convert the character literal whose ASCII value would be VAL to the
10199    appropriate value of type TYPE, if there is a translation.
10200    Otherwise return VAL.  Hence, in an enumeration type ('A', 'B'),
10201    the literal 'A' (VAL == 65), returns 0.  */
10202
10203 static LONGEST
10204 convert_char_literal (struct type *type, LONGEST val)
10205 {
10206   char name[7];
10207   int f;
10208
10209   if (type == NULL)
10210     return val;
10211   type = check_typedef (type);
10212   if (type->code () != TYPE_CODE_ENUM)
10213     return val;
10214
10215   if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
10216     xsnprintf (name, sizeof (name), "Q%c", (int) val);
10217   else
10218     xsnprintf (name, sizeof (name), "QU%02x", (int) val);
10219   size_t len = strlen (name);
10220   for (f = 0; f < type->num_fields (); f += 1)
10221     {
10222       /* Check the suffix because an enum constant in a package will
10223          have a name like "pkg__QUxx".  This is safe enough because we
10224          already have the correct type, and because mangling means
10225          there can't be clashes.  */
10226       const char *ename = type->field (f).name ();
10227       size_t elen = strlen (ename);
10228
10229       if (elen >= len && strcmp (name, ename + elen - len) == 0)
10230         return TYPE_FIELD_ENUMVAL (type, f);
10231     }
10232   return val;
10233 }
10234
10235 /* See ada-exp.h.  */
10236
10237 operation_up
10238 ada_char_operation::replace (operation_up &&owner,
10239                              struct expression *exp,
10240                              bool deprocedure_p,
10241                              bool parse_completion,
10242                              innermost_block_tracker *tracker,
10243                              struct type *context_type)
10244 {
10245   operation_up result = std::move (owner);
10246
10247   if (context_type != nullptr && context_type->code () == TYPE_CODE_ENUM)
10248     {
10249       gdb_assert (result.get () == this);
10250       std::get<0> (m_storage) = context_type;
10251       std::get<1> (m_storage)
10252         = convert_char_literal (context_type, std::get<1> (m_storage));
10253     }
10254
10255   return make_operation<ada_wrapped_operation> (std::move (result));
10256 }
10257
10258 value *
10259 ada_wrapped_operation::evaluate (struct type *expect_type,
10260                                  struct expression *exp,
10261                                  enum noside noside)
10262 {
10263   value *result = std::get<0> (m_storage)->evaluate (expect_type, exp, noside);
10264   if (noside == EVAL_NORMAL)
10265     result = unwrap_value (result);
10266
10267   /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10268      then we need to perform the conversion manually, because
10269      evaluate_subexp_standard doesn't do it.  This conversion is
10270      necessary in Ada because the different kinds of float/fixed
10271      types in Ada have different representations.
10272
10273      Similarly, we need to perform the conversion from OP_LONG
10274      ourselves.  */
10275   if ((opcode () == OP_FLOAT || opcode () == OP_LONG) && expect_type != NULL)
10276     result = ada_value_cast (expect_type, result);
10277
10278   return result;
10279 }
10280
10281 value *
10282 ada_string_operation::evaluate (struct type *expect_type,
10283                                 struct expression *exp,
10284                                 enum noside noside)
10285 {
10286   value *result = string_operation::evaluate (expect_type, exp, noside);
10287   /* The result type will have code OP_STRING, bashed there from 
10288      OP_ARRAY.  Bash it back.  */
10289   if (value_type (result)->code () == TYPE_CODE_STRING)
10290     value_type (result)->set_code (TYPE_CODE_ARRAY);
10291   return result;
10292 }
10293
10294 value *
10295 ada_qual_operation::evaluate (struct type *expect_type,
10296                               struct expression *exp,
10297                               enum noside noside)
10298 {
10299   struct type *type = std::get<1> (m_storage);
10300   return std::get<0> (m_storage)->evaluate (type, exp, noside);
10301 }
10302
10303 value *
10304 ada_ternop_range_operation::evaluate (struct type *expect_type,
10305                                       struct expression *exp,
10306                                       enum noside noside)
10307 {
10308   value *arg0 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
10309   value *arg1 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
10310   value *arg2 = std::get<2> (m_storage)->evaluate (nullptr, exp, noside);
10311   return eval_ternop_in_range (expect_type, exp, noside, arg0, arg1, arg2);
10312 }
10313
10314 value *
10315 ada_binop_addsub_operation::evaluate (struct type *expect_type,
10316                                       struct expression *exp,
10317                                       enum noside noside)
10318 {
10319   value *arg1 = std::get<1> (m_storage)->evaluate_with_coercion (exp, noside);
10320   value *arg2 = std::get<2> (m_storage)->evaluate_with_coercion (exp, noside);
10321
10322   auto do_op = [=] (LONGEST x, LONGEST y)
10323     {
10324       if (std::get<0> (m_storage) == BINOP_ADD)
10325         return x + y;
10326       return x - y;
10327     };
10328
10329   if (value_type (arg1)->code () == TYPE_CODE_PTR)
10330     return (value_from_longest
10331             (value_type (arg1),
10332              do_op (value_as_long (arg1), value_as_long (arg2))));
10333   if (value_type (arg2)->code () == TYPE_CODE_PTR)
10334     return (value_from_longest
10335             (value_type (arg2),
10336              do_op (value_as_long (arg1), value_as_long (arg2))));
10337   /* Preserve the original type for use by the range case below.
10338      We cannot cast the result to a reference type, so if ARG1 is
10339      a reference type, find its underlying type.  */
10340   struct type *type = value_type (arg1);
10341   while (type->code () == TYPE_CODE_REF)
10342     type = TYPE_TARGET_TYPE (type);
10343   binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10344   arg1 = value_binop (arg1, arg2, std::get<0> (m_storage));
10345   /* We need to special-case the result with a range.
10346      This is done for the benefit of "ptype".  gdb's Ada support
10347      historically used the LHS to set the result type here, so
10348      preserve this behavior.  */
10349   if (type->code () == TYPE_CODE_RANGE)
10350     arg1 = value_cast (type, arg1);
10351   return arg1;
10352 }
10353
10354 value *
10355 ada_unop_atr_operation::evaluate (struct type *expect_type,
10356                                   struct expression *exp,
10357                                   enum noside noside)
10358 {
10359   struct type *type_arg = nullptr;
10360   value *val = nullptr;
10361
10362   if (std::get<0> (m_storage)->opcode () == OP_TYPE)
10363     {
10364       value *tem = std::get<0> (m_storage)->evaluate (nullptr, exp,
10365                                                       EVAL_AVOID_SIDE_EFFECTS);
10366       type_arg = value_type (tem);
10367     }
10368   else
10369     val = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
10370
10371   return ada_unop_atr (exp, noside, std::get<1> (m_storage),
10372                        val, type_arg, std::get<2> (m_storage));
10373 }
10374
10375 value *
10376 ada_var_msym_value_operation::evaluate_for_cast (struct type *expect_type,
10377                                                  struct expression *exp,
10378                                                  enum noside noside)
10379 {
10380   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10381     return value_zero (expect_type, not_lval);
10382
10383   const bound_minimal_symbol &b = std::get<0> (m_storage);
10384   value *val = evaluate_var_msym_value (noside, b.objfile, b.minsym);
10385
10386   val = ada_value_cast (expect_type, val);
10387
10388   /* Follow the Ada language semantics that do not allow taking
10389      an address of the result of a cast (view conversion in Ada).  */
10390   if (VALUE_LVAL (val) == lval_memory)
10391     {
10392       if (value_lazy (val))
10393         value_fetch_lazy (val);
10394       VALUE_LVAL (val) = not_lval;
10395     }
10396   return val;
10397 }
10398
10399 value *
10400 ada_var_value_operation::evaluate_for_cast (struct type *expect_type,
10401                                             struct expression *exp,
10402                                             enum noside noside)
10403 {
10404   value *val = evaluate_var_value (noside,
10405                                    std::get<0> (m_storage).block,
10406                                    std::get<0> (m_storage).symbol);
10407
10408   val = ada_value_cast (expect_type, val);
10409
10410   /* Follow the Ada language semantics that do not allow taking
10411      an address of the result of a cast (view conversion in Ada).  */
10412   if (VALUE_LVAL (val) == lval_memory)
10413     {
10414       if (value_lazy (val))
10415         value_fetch_lazy (val);
10416       VALUE_LVAL (val) = not_lval;
10417     }
10418   return val;
10419 }
10420
10421 value *
10422 ada_var_value_operation::evaluate (struct type *expect_type,
10423                                    struct expression *exp,
10424                                    enum noside noside)
10425 {
10426   symbol *sym = std::get<0> (m_storage).symbol;
10427
10428   if (SYMBOL_DOMAIN (sym) == UNDEF_DOMAIN)
10429     /* Only encountered when an unresolved symbol occurs in a
10430        context other than a function call, in which case, it is
10431        invalid.  */
10432     error (_("Unexpected unresolved symbol, %s, during evaluation"),
10433            sym->print_name ());
10434
10435   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10436     {
10437       struct type *type = static_unwrap_type (SYMBOL_TYPE (sym));
10438       /* Check to see if this is a tagged type.  We also need to handle
10439          the case where the type is a reference to a tagged type, but
10440          we have to be careful to exclude pointers to tagged types.
10441          The latter should be shown as usual (as a pointer), whereas
10442          a reference should mostly be transparent to the user.  */
10443       if (ada_is_tagged_type (type, 0)
10444           || (type->code () == TYPE_CODE_REF
10445               && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10446         {
10447           /* Tagged types are a little special in the fact that the real
10448              type is dynamic and can only be determined by inspecting the
10449              object's tag.  This means that we need to get the object's
10450              value first (EVAL_NORMAL) and then extract the actual object
10451              type from its tag.
10452
10453              Note that we cannot skip the final step where we extract
10454              the object type from its tag, because the EVAL_NORMAL phase
10455              results in dynamic components being resolved into fixed ones.
10456              This can cause problems when trying to print the type
10457              description of tagged types whose parent has a dynamic size:
10458              We use the type name of the "_parent" component in order
10459              to print the name of the ancestor type in the type description.
10460              If that component had a dynamic size, the resolution into
10461              a fixed type would result in the loss of that type name,
10462              thus preventing us from printing the name of the ancestor
10463              type in the type description.  */
10464           value *arg1 = evaluate (nullptr, exp, EVAL_NORMAL);
10465
10466           if (type->code () != TYPE_CODE_REF)
10467             {
10468               struct type *actual_type;
10469
10470               actual_type = type_from_tag (ada_value_tag (arg1));
10471               if (actual_type == NULL)
10472                 /* If, for some reason, we were unable to determine
10473                    the actual type from the tag, then use the static
10474                    approximation that we just computed as a fallback.
10475                    This can happen if the debugging information is
10476                    incomplete, for instance.  */
10477                 actual_type = type;
10478               return value_zero (actual_type, not_lval);
10479             }
10480           else
10481             {
10482               /* In the case of a ref, ada_coerce_ref takes care
10483                  of determining the actual type.  But the evaluation
10484                  should return a ref as it should be valid to ask
10485                  for its address; so rebuild a ref after coerce.  */
10486               arg1 = ada_coerce_ref (arg1);
10487               return value_ref (arg1, TYPE_CODE_REF);
10488             }
10489         }
10490
10491       /* Records and unions for which GNAT encodings have been
10492          generated need to be statically fixed as well.
10493          Otherwise, non-static fixing produces a type where
10494          all dynamic properties are removed, which prevents "ptype"
10495          from being able to completely describe the type.
10496          For instance, a case statement in a variant record would be
10497          replaced by the relevant components based on the actual
10498          value of the discriminants.  */
10499       if ((type->code () == TYPE_CODE_STRUCT
10500            && dynamic_template_type (type) != NULL)
10501           || (type->code () == TYPE_CODE_UNION
10502               && ada_find_parallel_type (type, "___XVU") != NULL))
10503         return value_zero (to_static_fixed_type (type), not_lval);
10504     }
10505
10506   value *arg1 = var_value_operation::evaluate (expect_type, exp, noside);
10507   return ada_to_fixed_value (arg1);
10508 }
10509
10510 bool
10511 ada_var_value_operation::resolve (struct expression *exp,
10512                                   bool deprocedure_p,
10513                                   bool parse_completion,
10514                                   innermost_block_tracker *tracker,
10515                                   struct type *context_type)
10516 {
10517   symbol *sym = std::get<0> (m_storage).symbol;
10518   if (SYMBOL_DOMAIN (sym) == UNDEF_DOMAIN)
10519     {
10520       block_symbol resolved
10521         = ada_resolve_variable (sym, std::get<0> (m_storage).block,
10522                                 context_type, parse_completion,
10523                                 deprocedure_p, tracker);
10524       std::get<0> (m_storage) = resolved;
10525     }
10526
10527   if (deprocedure_p
10528       && (SYMBOL_TYPE (std::get<0> (m_storage).symbol)->code ()
10529           == TYPE_CODE_FUNC))
10530     return true;
10531
10532   return false;
10533 }
10534
10535 value *
10536 ada_atr_val_operation::evaluate (struct type *expect_type,
10537                                  struct expression *exp,
10538                                  enum noside noside)
10539 {
10540   value *arg = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
10541   return ada_val_atr (noside, std::get<0> (m_storage), arg);
10542 }
10543
10544 value *
10545 ada_unop_ind_operation::evaluate (struct type *expect_type,
10546                                   struct expression *exp,
10547                                   enum noside noside)
10548 {
10549   value *arg1 = std::get<0> (m_storage)->evaluate (expect_type, exp, noside);
10550
10551   struct type *type = ada_check_typedef (value_type (arg1));
10552   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10553     {
10554       if (ada_is_array_descriptor_type (type))
10555         /* GDB allows dereferencing GNAT array descriptors.  */
10556         {
10557           struct type *arrType = ada_type_of_array (arg1, 0);
10558
10559           if (arrType == NULL)
10560             error (_("Attempt to dereference null array pointer."));
10561           return value_at_lazy (arrType, 0);
10562         }
10563       else if (type->code () == TYPE_CODE_PTR
10564                || type->code () == TYPE_CODE_REF
10565                /* In C you can dereference an array to get the 1st elt.  */
10566                || type->code () == TYPE_CODE_ARRAY)
10567         {
10568           /* As mentioned in the OP_VAR_VALUE case, tagged types can
10569              only be determined by inspecting the object's tag.
10570              This means that we need to evaluate completely the
10571              expression in order to get its type.  */
10572
10573           if ((type->code () == TYPE_CODE_REF
10574                || type->code () == TYPE_CODE_PTR)
10575               && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
10576             {
10577               arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp,
10578                                                         EVAL_NORMAL);
10579               type = value_type (ada_value_ind (arg1));
10580             }
10581           else
10582             {
10583               type = to_static_fixed_type
10584                 (ada_aligned_type
10585                  (ada_check_typedef (TYPE_TARGET_TYPE (type))));
10586             }
10587           ada_ensure_varsize_limit (type);
10588           return value_zero (type, lval_memory);
10589         }
10590       else if (type->code () == TYPE_CODE_INT)
10591         {
10592           /* GDB allows dereferencing an int.  */
10593           if (expect_type == NULL)
10594             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10595                                lval_memory);
10596           else
10597             {
10598               expect_type =
10599                 to_static_fixed_type (ada_aligned_type (expect_type));
10600               return value_zero (expect_type, lval_memory);
10601             }
10602         }
10603       else
10604         error (_("Attempt to take contents of a non-pointer value."));
10605     }
10606   arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
10607   type = ada_check_typedef (value_type (arg1));
10608
10609   if (type->code () == TYPE_CODE_INT)
10610     /* GDB allows dereferencing an int.  If we were given
10611        the expect_type, then use that as the target type.
10612        Otherwise, assume that the target type is an int.  */
10613     {
10614       if (expect_type != NULL)
10615         return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
10616                                           arg1));
10617       else
10618         return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
10619                               (CORE_ADDR) value_as_address (arg1));
10620     }
10621
10622   struct type *target_type = (to_static_fixed_type
10623                               (ada_aligned_type
10624                                (ada_check_typedef (TYPE_TARGET_TYPE (type)))));
10625   ada_ensure_varsize_limit (target_type);
10626
10627   if (ada_is_array_descriptor_type (type))
10628     /* GDB allows dereferencing GNAT array descriptors.  */
10629     return ada_coerce_to_simple_array (arg1);
10630   else
10631     return ada_value_ind (arg1);
10632 }
10633
10634 value *
10635 ada_structop_operation::evaluate (struct type *expect_type,
10636                                   struct expression *exp,
10637                                   enum noside noside)
10638 {
10639   value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
10640   const char *str = std::get<1> (m_storage).c_str ();
10641   if (noside == EVAL_AVOID_SIDE_EFFECTS)
10642     {
10643       struct type *type;
10644       struct type *type1 = value_type (arg1);
10645
10646       if (ada_is_tagged_type (type1, 1))
10647         {
10648           type = ada_lookup_struct_elt_type (type1, str, 1, 1);
10649
10650           /* If the field is not found, check if it exists in the
10651              extension of this object's type. This means that we
10652              need to evaluate completely the expression.  */
10653
10654           if (type == NULL)
10655             {
10656               arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp,
10657                                                         EVAL_NORMAL);
10658               arg1 = ada_value_struct_elt (arg1, str, 0);
10659               arg1 = unwrap_value (arg1);
10660               type = value_type (ada_to_fixed_value (arg1));
10661             }
10662         }
10663       else
10664         type = ada_lookup_struct_elt_type (type1, str, 1, 0);
10665
10666       return value_zero (ada_aligned_type (type), lval_memory);
10667     }
10668   else
10669     {
10670       arg1 = ada_value_struct_elt (arg1, str, 0);
10671       arg1 = unwrap_value (arg1);
10672       return ada_to_fixed_value (arg1);
10673     }
10674 }
10675
10676 value *
10677 ada_funcall_operation::evaluate (struct type *expect_type,
10678                                  struct expression *exp,
10679                                  enum noside noside)
10680 {
10681   const std::vector<operation_up> &args_up = std::get<1> (m_storage);
10682   int nargs = args_up.size ();
10683   std::vector<value *> argvec (nargs);
10684   operation_up &callee_op = std::get<0> (m_storage);
10685
10686   ada_var_value_operation *avv
10687     = dynamic_cast<ada_var_value_operation *> (callee_op.get ());
10688   if (avv != nullptr
10689       && SYMBOL_DOMAIN (avv->get_symbol ()) == UNDEF_DOMAIN)
10690     error (_("Unexpected unresolved symbol, %s, during evaluation"),
10691            avv->get_symbol ()->print_name ());
10692
10693   value *callee = callee_op->evaluate (nullptr, exp, noside);
10694   for (int i = 0; i < args_up.size (); ++i)
10695     argvec[i] = args_up[i]->evaluate (nullptr, exp, noside);
10696
10697   if (ada_is_constrained_packed_array_type
10698       (desc_base_type (value_type (callee))))
10699     callee = ada_coerce_to_simple_array (callee);
10700   else if (value_type (callee)->code () == TYPE_CODE_ARRAY
10701            && TYPE_FIELD_BITSIZE (value_type (callee), 0) != 0)
10702     /* This is a packed array that has already been fixed, and
10703        therefore already coerced to a simple array.  Nothing further
10704        to do.  */
10705     ;
10706   else if (value_type (callee)->code () == TYPE_CODE_REF)
10707     {
10708       /* Make sure we dereference references so that all the code below
10709          feels like it's really handling the referenced value.  Wrapping
10710          types (for alignment) may be there, so make sure we strip them as
10711          well.  */
10712       callee = ada_to_fixed_value (coerce_ref (callee));
10713     }
10714   else if (value_type (callee)->code () == TYPE_CODE_ARRAY
10715            && VALUE_LVAL (callee) == lval_memory)
10716     callee = value_addr (callee);
10717
10718   struct type *type = ada_check_typedef (value_type (callee));
10719
10720   /* Ada allows us to implicitly dereference arrays when subscripting
10721      them.  So, if this is an array typedef (encoding use for array
10722      access types encoded as fat pointers), strip it now.  */
10723   if (type->code () == TYPE_CODE_TYPEDEF)
10724     type = ada_typedef_target_type (type);
10725
10726   if (type->code () == TYPE_CODE_PTR)
10727     {
10728       switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10729         {
10730         case TYPE_CODE_FUNC:
10731           type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10732           break;
10733         case TYPE_CODE_ARRAY:
10734           break;
10735         case TYPE_CODE_STRUCT:
10736           if (noside != EVAL_AVOID_SIDE_EFFECTS)
10737             callee = ada_value_ind (callee);
10738           type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10739           break;
10740         default:
10741           error (_("cannot subscript or call something of type `%s'"),
10742                  ada_type_name (value_type (callee)));
10743           break;
10744         }
10745     }
10746
10747   switch (type->code ())
10748     {
10749     case TYPE_CODE_FUNC:
10750       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10751         {
10752           if (TYPE_TARGET_TYPE (type) == NULL)
10753             error_call_unknown_return_type (NULL);
10754           return allocate_value (TYPE_TARGET_TYPE (type));
10755         }
10756       return call_function_by_hand (callee, NULL, argvec);
10757     case TYPE_CODE_INTERNAL_FUNCTION:
10758       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10759         /* We don't know anything about what the internal
10760            function might return, but we have to return
10761            something.  */
10762         return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10763                            not_lval);
10764       else
10765         return call_internal_function (exp->gdbarch, exp->language_defn,
10766                                        callee, nargs,
10767                                        argvec.data ());
10768
10769     case TYPE_CODE_STRUCT:
10770       {
10771         int arity;
10772
10773         arity = ada_array_arity (type);
10774         type = ada_array_element_type (type, nargs);
10775         if (type == NULL)
10776           error (_("cannot subscript or call a record"));
10777         if (arity != nargs)
10778           error (_("wrong number of subscripts; expecting %d"), arity);
10779         if (noside == EVAL_AVOID_SIDE_EFFECTS)
10780           return value_zero (ada_aligned_type (type), lval_memory);
10781         return
10782           unwrap_value (ada_value_subscript
10783                         (callee, nargs, argvec.data ()));
10784       }
10785     case TYPE_CODE_ARRAY:
10786       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10787         {
10788           type = ada_array_element_type (type, nargs);
10789           if (type == NULL)
10790             error (_("element type of array unknown"));
10791           else
10792             return value_zero (ada_aligned_type (type), lval_memory);
10793         }
10794       return
10795         unwrap_value (ada_value_subscript
10796                       (ada_coerce_to_simple_array (callee),
10797                        nargs, argvec.data ()));
10798     case TYPE_CODE_PTR:     /* Pointer to array */
10799       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10800         {
10801           type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10802           type = ada_array_element_type (type, nargs);
10803           if (type == NULL)
10804             error (_("element type of array unknown"));
10805           else
10806             return value_zero (ada_aligned_type (type), lval_memory);
10807         }
10808       return
10809         unwrap_value (ada_value_ptr_subscript (callee, nargs,
10810                                                argvec.data ()));
10811
10812     default:
10813       error (_("Attempt to index or call something other than an "
10814                "array or function"));
10815     }
10816 }
10817
10818 bool
10819 ada_funcall_operation::resolve (struct expression *exp,
10820                                 bool deprocedure_p,
10821                                 bool parse_completion,
10822                                 innermost_block_tracker *tracker,
10823                                 struct type *context_type)
10824 {
10825   operation_up &callee_op = std::get<0> (m_storage);
10826
10827   ada_var_value_operation *avv
10828     = dynamic_cast<ada_var_value_operation *> (callee_op.get ());
10829   if (avv == nullptr)
10830     return false;
10831
10832   symbol *sym = avv->get_symbol ();
10833   if (SYMBOL_DOMAIN (sym) != UNDEF_DOMAIN)
10834     return false;
10835
10836   const std::vector<operation_up> &args_up = std::get<1> (m_storage);
10837   int nargs = args_up.size ();
10838   std::vector<value *> argvec (nargs);
10839
10840   for (int i = 0; i < args_up.size (); ++i)
10841     argvec[i] = args_up[i]->evaluate (nullptr, exp, EVAL_AVOID_SIDE_EFFECTS);
10842
10843   const block *block = avv->get_block ();
10844   block_symbol resolved
10845     = ada_resolve_funcall (sym, block,
10846                            context_type, parse_completion,
10847                            nargs, argvec.data (),
10848                            tracker);
10849
10850   std::get<0> (m_storage)
10851     = make_operation<ada_var_value_operation> (resolved);
10852   return false;
10853 }
10854
10855 bool
10856 ada_ternop_slice_operation::resolve (struct expression *exp,
10857                                      bool deprocedure_p,
10858                                      bool parse_completion,
10859                                      innermost_block_tracker *tracker,
10860                                      struct type *context_type)
10861 {
10862   /* Historically this check was done during resolution, so we
10863      continue that here.  */
10864   value *v = std::get<0> (m_storage)->evaluate (context_type, exp,
10865                                                 EVAL_AVOID_SIDE_EFFECTS);
10866   if (ada_is_any_packed_array_type (value_type (v)))
10867     error (_("cannot slice a packed array"));
10868   return false;
10869 }
10870
10871 }
10872
10873 \f
10874
10875 /* Return non-zero iff TYPE represents a System.Address type.  */
10876
10877 int
10878 ada_is_system_address_type (struct type *type)
10879 {
10880   return (type->name () && strcmp (type->name (), "system__address") == 0);
10881 }
10882
10883 \f
10884
10885                                 /* Range types */
10886
10887 /* Scan STR beginning at position K for a discriminant name, and
10888    return the value of that discriminant field of DVAL in *PX.  If
10889    PNEW_K is not null, put the position of the character beyond the
10890    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
10891    not alter *PX and *PNEW_K if unsuccessful.  */
10892
10893 static int
10894 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
10895                     int *pnew_k)
10896 {
10897   static std::string storage;
10898   const char *pstart, *pend, *bound;
10899   struct value *bound_val;
10900
10901   if (dval == NULL || str == NULL || str[k] == '\0')
10902     return 0;
10903
10904   pstart = str + k;
10905   pend = strstr (pstart, "__");
10906   if (pend == NULL)
10907     {
10908       bound = pstart;
10909       k += strlen (bound);
10910     }
10911   else
10912     {
10913       int len = pend - pstart;
10914
10915       /* Strip __ and beyond.  */
10916       storage = std::string (pstart, len);
10917       bound = storage.c_str ();
10918       k = pend - str;
10919     }
10920
10921   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
10922   if (bound_val == NULL)
10923     return 0;
10924
10925   *px = value_as_long (bound_val);
10926   if (pnew_k != NULL)
10927     *pnew_k = k;
10928   return 1;
10929 }
10930
10931 /* Value of variable named NAME.  Only exact matches are considered.
10932    If no such variable found, then if ERR_MSG is null, returns 0, and
10933    otherwise causes an error with message ERR_MSG.  */
10934
10935 static struct value *
10936 get_var_value (const char *name, const char *err_msg)
10937 {
10938   std::string quoted_name = add_angle_brackets (name);
10939
10940   lookup_name_info lookup_name (quoted_name, symbol_name_match_type::FULL);
10941
10942   std::vector<struct block_symbol> syms
10943     = ada_lookup_symbol_list_worker (lookup_name,
10944                                      get_selected_block (0),
10945                                      VAR_DOMAIN, 1);
10946
10947   if (syms.size () != 1)
10948     {
10949       if (err_msg == NULL)
10950         return 0;
10951       else
10952         error (("%s"), err_msg);
10953     }
10954
10955   return value_of_variable (syms[0].symbol, syms[0].block);
10956 }
10957
10958 /* Value of integer variable named NAME in the current environment.
10959    If no such variable is found, returns false.  Otherwise, sets VALUE
10960    to the variable's value and returns true.  */
10961
10962 bool
10963 get_int_var_value (const char *name, LONGEST &value)
10964 {
10965   struct value *var_val = get_var_value (name, 0);
10966
10967   if (var_val == 0)
10968     return false;
10969
10970   value = value_as_long (var_val);
10971   return true;
10972 }
10973
10974
10975 /* Return a range type whose base type is that of the range type named
10976    NAME in the current environment, and whose bounds are calculated
10977    from NAME according to the GNAT range encoding conventions.
10978    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
10979    corresponding range type from debug information; fall back to using it
10980    if symbol lookup fails.  If a new type must be created, allocate it
10981    like ORIG_TYPE was.  The bounds information, in general, is encoded
10982    in NAME, the base type given in the named range type.  */
10983
10984 static struct type *
10985 to_fixed_range_type (struct type *raw_type, struct value *dval)
10986 {
10987   const char *name;
10988   struct type *base_type;
10989   const char *subtype_info;
10990
10991   gdb_assert (raw_type != NULL);
10992   gdb_assert (raw_type->name () != NULL);
10993
10994   if (raw_type->code () == TYPE_CODE_RANGE)
10995     base_type = TYPE_TARGET_TYPE (raw_type);
10996   else
10997     base_type = raw_type;
10998
10999   name = raw_type->name ();
11000   subtype_info = strstr (name, "___XD");
11001   if (subtype_info == NULL)
11002     {
11003       LONGEST L = ada_discrete_type_low_bound (raw_type);
11004       LONGEST U = ada_discrete_type_high_bound (raw_type);
11005
11006       if (L < INT_MIN || U > INT_MAX)
11007         return raw_type;
11008       else
11009         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11010                                          L, U);
11011     }
11012   else
11013     {
11014       int prefix_len = subtype_info - name;
11015       LONGEST L, U;
11016       struct type *type;
11017       const char *bounds_str;
11018       int n;
11019
11020       subtype_info += 5;
11021       bounds_str = strchr (subtype_info, '_');
11022       n = 1;
11023
11024       if (*subtype_info == 'L')
11025         {
11026           if (!ada_scan_number (bounds_str, n, &L, &n)
11027               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11028             return raw_type;
11029           if (bounds_str[n] == '_')
11030             n += 2;
11031           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11032             n += 1;
11033           subtype_info += 1;
11034         }
11035       else
11036         {
11037           std::string name_buf = std::string (name, prefix_len) + "___L";
11038           if (!get_int_var_value (name_buf.c_str (), L))
11039             {
11040               lim_warning (_("Unknown lower bound, using 1."));
11041               L = 1;
11042             }
11043         }
11044
11045       if (*subtype_info == 'U')
11046         {
11047           if (!ada_scan_number (bounds_str, n, &U, &n)
11048               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11049             return raw_type;
11050         }
11051       else
11052         {
11053           std::string name_buf = std::string (name, prefix_len) + "___U";
11054           if (!get_int_var_value (name_buf.c_str (), U))
11055             {
11056               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11057               U = L;
11058             }
11059         }
11060
11061       type = create_static_range_type (alloc_type_copy (raw_type),
11062                                        base_type, L, U);
11063       /* create_static_range_type alters the resulting type's length
11064          to match the size of the base_type, which is not what we want.
11065          Set it back to the original range type's length.  */
11066       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11067       type->set_name (name);
11068       return type;
11069     }
11070 }
11071
11072 /* True iff NAME is the name of a range type.  */
11073
11074 int
11075 ada_is_range_type_name (const char *name)
11076 {
11077   return (name != NULL && strstr (name, "___XD"));
11078 }
11079 \f
11080
11081                                 /* Modular types */
11082
11083 /* True iff TYPE is an Ada modular type.  */
11084
11085 int
11086 ada_is_modular_type (struct type *type)
11087 {
11088   struct type *subranged_type = get_base_type (type);
11089
11090   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11091           && subranged_type->code () == TYPE_CODE_INT
11092           && subranged_type->is_unsigned ());
11093 }
11094
11095 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11096
11097 ULONGEST
11098 ada_modulus (struct type *type)
11099 {
11100   const dynamic_prop &high = type->bounds ()->high;
11101
11102   if (high.kind () == PROP_CONST)
11103     return (ULONGEST) high.const_val () + 1;
11104
11105   /* If TYPE is unresolved, the high bound might be a location list.  Return
11106      0, for lack of a better value to return.  */
11107   return 0;
11108 }
11109 \f
11110
11111 /* Ada exception catchpoint support:
11112    ---------------------------------
11113
11114    We support 3 kinds of exception catchpoints:
11115      . catchpoints on Ada exceptions
11116      . catchpoints on unhandled Ada exceptions
11117      . catchpoints on failed assertions
11118
11119    Exceptions raised during failed assertions, or unhandled exceptions
11120    could perfectly be caught with the general catchpoint on Ada exceptions.
11121    However, we can easily differentiate these two special cases, and having
11122    the option to distinguish these two cases from the rest can be useful
11123    to zero-in on certain situations.
11124
11125    Exception catchpoints are a specialized form of breakpoint,
11126    since they rely on inserting breakpoints inside known routines
11127    of the GNAT runtime.  The implementation therefore uses a standard
11128    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11129    of breakpoint_ops.
11130
11131    Support in the runtime for exception catchpoints have been changed
11132    a few times already, and these changes affect the implementation
11133    of these catchpoints.  In order to be able to support several
11134    variants of the runtime, we use a sniffer that will determine
11135    the runtime variant used by the program being debugged.  */
11136
11137 /* Ada's standard exceptions.
11138
11139    The Ada 83 standard also defined Numeric_Error.  But there so many
11140    situations where it was unclear from the Ada 83 Reference Manual
11141    (RM) whether Constraint_Error or Numeric_Error should be raised,
11142    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11143    Interpretation saying that anytime the RM says that Numeric_Error
11144    should be raised, the implementation may raise Constraint_Error.
11145    Ada 95 went one step further and pretty much removed Numeric_Error
11146    from the list of standard exceptions (it made it a renaming of
11147    Constraint_Error, to help preserve compatibility when compiling
11148    an Ada83 compiler). As such, we do not include Numeric_Error from
11149    this list of standard exceptions.  */
11150
11151 static const char * const standard_exc[] = {
11152   "constraint_error",
11153   "program_error",
11154   "storage_error",
11155   "tasking_error"
11156 };
11157
11158 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11159
11160 /* A structure that describes how to support exception catchpoints
11161    for a given executable.  */
11162
11163 struct exception_support_info
11164 {
11165    /* The name of the symbol to break on in order to insert
11166       a catchpoint on exceptions.  */
11167    const char *catch_exception_sym;
11168
11169    /* The name of the symbol to break on in order to insert
11170       a catchpoint on unhandled exceptions.  */
11171    const char *catch_exception_unhandled_sym;
11172
11173    /* The name of the symbol to break on in order to insert
11174       a catchpoint on failed assertions.  */
11175    const char *catch_assert_sym;
11176
11177    /* The name of the symbol to break on in order to insert
11178       a catchpoint on exception handling.  */
11179    const char *catch_handlers_sym;
11180
11181    /* Assuming that the inferior just triggered an unhandled exception
11182       catchpoint, this function is responsible for returning the address
11183       in inferior memory where the name of that exception is stored.
11184       Return zero if the address could not be computed.  */
11185    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11186 };
11187
11188 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11189 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11190
11191 /* The following exception support info structure describes how to
11192    implement exception catchpoints with the latest version of the
11193    Ada runtime (as of 2019-08-??).  */
11194
11195 static const struct exception_support_info default_exception_support_info =
11196 {
11197   "__gnat_debug_raise_exception", /* catch_exception_sym */
11198   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11199   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11200   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11201   ada_unhandled_exception_name_addr
11202 };
11203
11204 /* The following exception support info structure describes how to
11205    implement exception catchpoints with an earlier version of the
11206    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11207
11208 static const struct exception_support_info exception_support_info_v0 =
11209 {
11210   "__gnat_debug_raise_exception", /* catch_exception_sym */
11211   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11212   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11213   "__gnat_begin_handler", /* catch_handlers_sym */
11214   ada_unhandled_exception_name_addr
11215 };
11216
11217 /* The following exception support info structure describes how to
11218    implement exception catchpoints with a slightly older version
11219    of the Ada runtime.  */
11220
11221 static const struct exception_support_info exception_support_info_fallback =
11222 {
11223   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11224   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11225   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11226   "__gnat_begin_handler", /* catch_handlers_sym */
11227   ada_unhandled_exception_name_addr_from_raise
11228 };
11229
11230 /* Return nonzero if we can detect the exception support routines
11231    described in EINFO.
11232
11233    This function errors out if an abnormal situation is detected
11234    (for instance, if we find the exception support routines, but
11235    that support is found to be incomplete).  */
11236
11237 static int
11238 ada_has_this_exception_support (const struct exception_support_info *einfo)
11239 {
11240   struct symbol *sym;
11241
11242   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11243      that should be compiled with debugging information.  As a result, we
11244      expect to find that symbol in the symtabs.  */
11245
11246   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11247   if (sym == NULL)
11248     {
11249       /* Perhaps we did not find our symbol because the Ada runtime was
11250          compiled without debugging info, or simply stripped of it.
11251          It happens on some GNU/Linux distributions for instance, where
11252          users have to install a separate debug package in order to get
11253          the runtime's debugging info.  In that situation, let the user
11254          know why we cannot insert an Ada exception catchpoint.
11255
11256          Note: Just for the purpose of inserting our Ada exception
11257          catchpoint, we could rely purely on the associated minimal symbol.
11258          But we would be operating in degraded mode anyway, since we are
11259          still lacking the debugging info needed later on to extract
11260          the name of the exception being raised (this name is printed in
11261          the catchpoint message, and is also used when trying to catch
11262          a specific exception).  We do not handle this case for now.  */
11263       struct bound_minimal_symbol msym
11264         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11265
11266       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11267         error (_("Your Ada runtime appears to be missing some debugging "
11268                  "information.\nCannot insert Ada exception catchpoint "
11269                  "in this configuration."));
11270
11271       return 0;
11272     }
11273
11274   /* Make sure that the symbol we found corresponds to a function.  */
11275
11276   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11277     {
11278       error (_("Symbol \"%s\" is not a function (class = %d)"),
11279              sym->linkage_name (), SYMBOL_CLASS (sym));
11280       return 0;
11281     }
11282
11283   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11284   if (sym == NULL)
11285     {
11286       struct bound_minimal_symbol msym
11287         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11288
11289       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11290         error (_("Your Ada runtime appears to be missing some debugging "
11291                  "information.\nCannot insert Ada exception catchpoint "
11292                  "in this configuration."));
11293
11294       return 0;
11295     }
11296
11297   /* Make sure that the symbol we found corresponds to a function.  */
11298
11299   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11300     {
11301       error (_("Symbol \"%s\" is not a function (class = %d)"),
11302              sym->linkage_name (), SYMBOL_CLASS (sym));
11303       return 0;
11304     }
11305
11306   return 1;
11307 }
11308
11309 /* Inspect the Ada runtime and determine which exception info structure
11310    should be used to provide support for exception catchpoints.
11311
11312    This function will always set the per-inferior exception_info,
11313    or raise an error.  */
11314
11315 static void
11316 ada_exception_support_info_sniffer (void)
11317 {
11318   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11319
11320   /* If the exception info is already known, then no need to recompute it.  */
11321   if (data->exception_info != NULL)
11322     return;
11323
11324   /* Check the latest (default) exception support info.  */
11325   if (ada_has_this_exception_support (&default_exception_support_info))
11326     {
11327       data->exception_info = &default_exception_support_info;
11328       return;
11329     }
11330
11331   /* Try the v0 exception suport info.  */
11332   if (ada_has_this_exception_support (&exception_support_info_v0))
11333     {
11334       data->exception_info = &exception_support_info_v0;
11335       return;
11336     }
11337
11338   /* Try our fallback exception suport info.  */
11339   if (ada_has_this_exception_support (&exception_support_info_fallback))
11340     {
11341       data->exception_info = &exception_support_info_fallback;
11342       return;
11343     }
11344
11345   /* Sometimes, it is normal for us to not be able to find the routine
11346      we are looking for.  This happens when the program is linked with
11347      the shared version of the GNAT runtime, and the program has not been
11348      started yet.  Inform the user of these two possible causes if
11349      applicable.  */
11350
11351   if (ada_update_initial_language (language_unknown) != language_ada)
11352     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11353
11354   /* If the symbol does not exist, then check that the program is
11355      already started, to make sure that shared libraries have been
11356      loaded.  If it is not started, this may mean that the symbol is
11357      in a shared library.  */
11358
11359   if (inferior_ptid.pid () == 0)
11360     error (_("Unable to insert catchpoint. Try to start the program first."));
11361
11362   /* At this point, we know that we are debugging an Ada program and
11363      that the inferior has been started, but we still are not able to
11364      find the run-time symbols.  That can mean that we are in
11365      configurable run time mode, or that a-except as been optimized
11366      out by the linker...  In any case, at this point it is not worth
11367      supporting this feature.  */
11368
11369   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11370 }
11371
11372 /* True iff FRAME is very likely to be that of a function that is
11373    part of the runtime system.  This is all very heuristic, but is
11374    intended to be used as advice as to what frames are uninteresting
11375    to most users.  */
11376
11377 static int
11378 is_known_support_routine (struct frame_info *frame)
11379 {
11380   enum language func_lang;
11381   int i;
11382   const char *fullname;
11383
11384   /* If this code does not have any debugging information (no symtab),
11385      This cannot be any user code.  */
11386
11387   symtab_and_line sal = find_frame_sal (frame);
11388   if (sal.symtab == NULL)
11389     return 1;
11390
11391   /* If there is a symtab, but the associated source file cannot be
11392      located, then assume this is not user code:  Selecting a frame
11393      for which we cannot display the code would not be very helpful
11394      for the user.  This should also take care of case such as VxWorks
11395      where the kernel has some debugging info provided for a few units.  */
11396
11397   fullname = symtab_to_fullname (sal.symtab);
11398   if (access (fullname, R_OK) != 0)
11399     return 1;
11400
11401   /* Check the unit filename against the Ada runtime file naming.
11402      We also check the name of the objfile against the name of some
11403      known system libraries that sometimes come with debugging info
11404      too.  */
11405
11406   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11407     {
11408       re_comp (known_runtime_file_name_patterns[i]);
11409       if (re_exec (lbasename (sal.symtab->filename)))
11410         return 1;
11411       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11412           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11413         return 1;
11414     }
11415
11416   /* Check whether the function is a GNAT-generated entity.  */
11417
11418   gdb::unique_xmalloc_ptr<char> func_name
11419     = find_frame_funname (frame, &func_lang, NULL);
11420   if (func_name == NULL)
11421     return 1;
11422
11423   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11424     {
11425       re_comp (known_auxiliary_function_name_patterns[i]);
11426       if (re_exec (func_name.get ()))
11427         return 1;
11428     }
11429
11430   return 0;
11431 }
11432
11433 /* Find the first frame that contains debugging information and that is not
11434    part of the Ada run-time, starting from FI and moving upward.  */
11435
11436 void
11437 ada_find_printable_frame (struct frame_info *fi)
11438 {
11439   for (; fi != NULL; fi = get_prev_frame (fi))
11440     {
11441       if (!is_known_support_routine (fi))
11442         {
11443           select_frame (fi);
11444           break;
11445         }
11446     }
11447
11448 }
11449
11450 /* Assuming that the inferior just triggered an unhandled exception
11451    catchpoint, return the address in inferior memory where the name
11452    of the exception is stored.
11453    
11454    Return zero if the address could not be computed.  */
11455
11456 static CORE_ADDR
11457 ada_unhandled_exception_name_addr (void)
11458 {
11459   return parse_and_eval_address ("e.full_name");
11460 }
11461
11462 /* Same as ada_unhandled_exception_name_addr, except that this function
11463    should be used when the inferior uses an older version of the runtime,
11464    where the exception name needs to be extracted from a specific frame
11465    several frames up in the callstack.  */
11466
11467 static CORE_ADDR
11468 ada_unhandled_exception_name_addr_from_raise (void)
11469 {
11470   int frame_level;
11471   struct frame_info *fi;
11472   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11473
11474   /* To determine the name of this exception, we need to select
11475      the frame corresponding to RAISE_SYM_NAME.  This frame is
11476      at least 3 levels up, so we simply skip the first 3 frames
11477      without checking the name of their associated function.  */
11478   fi = get_current_frame ();
11479   for (frame_level = 0; frame_level < 3; frame_level += 1)
11480     if (fi != NULL)
11481       fi = get_prev_frame (fi); 
11482
11483   while (fi != NULL)
11484     {
11485       enum language func_lang;
11486
11487       gdb::unique_xmalloc_ptr<char> func_name
11488         = find_frame_funname (fi, &func_lang, NULL);
11489       if (func_name != NULL)
11490         {
11491           if (strcmp (func_name.get (),
11492                       data->exception_info->catch_exception_sym) == 0)
11493             break; /* We found the frame we were looking for...  */
11494         }
11495       fi = get_prev_frame (fi);
11496     }
11497
11498   if (fi == NULL)
11499     return 0;
11500
11501   select_frame (fi);
11502   return parse_and_eval_address ("id.full_name");
11503 }
11504
11505 /* Assuming the inferior just triggered an Ada exception catchpoint
11506    (of any type), return the address in inferior memory where the name
11507    of the exception is stored, if applicable.
11508
11509    Assumes the selected frame is the current frame.
11510
11511    Return zero if the address could not be computed, or if not relevant.  */
11512
11513 static CORE_ADDR
11514 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11515                            struct breakpoint *b)
11516 {
11517   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11518
11519   switch (ex)
11520     {
11521       case ada_catch_exception:
11522         return (parse_and_eval_address ("e.full_name"));
11523         break;
11524
11525       case ada_catch_exception_unhandled:
11526         return data->exception_info->unhandled_exception_name_addr ();
11527         break;
11528
11529       case ada_catch_handlers:
11530         return 0;  /* The runtimes does not provide access to the exception
11531                       name.  */
11532         break;
11533
11534       case ada_catch_assert:
11535         return 0;  /* Exception name is not relevant in this case.  */
11536         break;
11537
11538       default:
11539         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11540         break;
11541     }
11542
11543   return 0; /* Should never be reached.  */
11544 }
11545
11546 /* Assuming the inferior is stopped at an exception catchpoint,
11547    return the message which was associated to the exception, if
11548    available.  Return NULL if the message could not be retrieved.
11549
11550    Note: The exception message can be associated to an exception
11551    either through the use of the Raise_Exception function, or
11552    more simply (Ada 2005 and later), via:
11553
11554        raise Exception_Name with "exception message";
11555
11556    */
11557
11558 static gdb::unique_xmalloc_ptr<char>
11559 ada_exception_message_1 (void)
11560 {
11561   struct value *e_msg_val;
11562   int e_msg_len;
11563
11564   /* For runtimes that support this feature, the exception message
11565      is passed as an unbounded string argument called "message".  */
11566   e_msg_val = parse_and_eval ("message");
11567   if (e_msg_val == NULL)
11568     return NULL; /* Exception message not supported.  */
11569
11570   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
11571   gdb_assert (e_msg_val != NULL);
11572   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
11573
11574   /* If the message string is empty, then treat it as if there was
11575      no exception message.  */
11576   if (e_msg_len <= 0)
11577     return NULL;
11578
11579   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
11580   read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (),
11581                e_msg_len);
11582   e_msg.get ()[e_msg_len] = '\0';
11583
11584   return e_msg;
11585 }
11586
11587 /* Same as ada_exception_message_1, except that all exceptions are
11588    contained here (returning NULL instead).  */
11589
11590 static gdb::unique_xmalloc_ptr<char>
11591 ada_exception_message (void)
11592 {
11593   gdb::unique_xmalloc_ptr<char> e_msg;
11594
11595   try
11596     {
11597       e_msg = ada_exception_message_1 ();
11598     }
11599   catch (const gdb_exception_error &e)
11600     {
11601       e_msg.reset (nullptr);
11602     }
11603
11604   return e_msg;
11605 }
11606
11607 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
11608    any error that ada_exception_name_addr_1 might cause to be thrown.
11609    When an error is intercepted, a warning with the error message is printed,
11610    and zero is returned.  */
11611
11612 static CORE_ADDR
11613 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
11614                          struct breakpoint *b)
11615 {
11616   CORE_ADDR result = 0;
11617
11618   try
11619     {
11620       result = ada_exception_name_addr_1 (ex, b);
11621     }
11622
11623   catch (const gdb_exception_error &e)
11624     {
11625       warning (_("failed to get exception name: %s"), e.what ());
11626       return 0;
11627     }
11628
11629   return result;
11630 }
11631
11632 static std::string ada_exception_catchpoint_cond_string
11633   (const char *excep_string,
11634    enum ada_exception_catchpoint_kind ex);
11635
11636 /* Ada catchpoints.
11637
11638    In the case of catchpoints on Ada exceptions, the catchpoint will
11639    stop the target on every exception the program throws.  When a user
11640    specifies the name of a specific exception, we translate this
11641    request into a condition expression (in text form), and then parse
11642    it into an expression stored in each of the catchpoint's locations.
11643    We then use this condition to check whether the exception that was
11644    raised is the one the user is interested in.  If not, then the
11645    target is resumed again.  We store the name of the requested
11646    exception, in order to be able to re-set the condition expression
11647    when symbols change.  */
11648
11649 /* An instance of this type is used to represent an Ada catchpoint
11650    breakpoint location.  */
11651
11652 class ada_catchpoint_location : public bp_location
11653 {
11654 public:
11655   ada_catchpoint_location (breakpoint *owner)
11656     : bp_location (owner, bp_loc_software_breakpoint)
11657   {}
11658
11659   /* The condition that checks whether the exception that was raised
11660      is the specific exception the user specified on catchpoint
11661      creation.  */
11662   expression_up excep_cond_expr;
11663 };
11664
11665 /* An instance of this type is used to represent an Ada catchpoint.  */
11666
11667 struct ada_catchpoint : public breakpoint
11668 {
11669   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
11670     : m_kind (kind)
11671   {
11672   }
11673
11674   /* The name of the specific exception the user specified.  */
11675   std::string excep_string;
11676
11677   /* What kind of catchpoint this is.  */
11678   enum ada_exception_catchpoint_kind m_kind;
11679 };
11680
11681 /* Parse the exception condition string in the context of each of the
11682    catchpoint's locations, and store them for later evaluation.  */
11683
11684 static void
11685 create_excep_cond_exprs (struct ada_catchpoint *c,
11686                          enum ada_exception_catchpoint_kind ex)
11687 {
11688   /* Nothing to do if there's no specific exception to catch.  */
11689   if (c->excep_string.empty ())
11690     return;
11691
11692   /* Same if there are no locations... */
11693   if (c->loc == NULL)
11694     return;
11695
11696   /* Compute the condition expression in text form, from the specific
11697      expection we want to catch.  */
11698   std::string cond_string
11699     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
11700
11701   /* Iterate over all the catchpoint's locations, and parse an
11702      expression for each.  */
11703   for (bp_location *bl : c->locations ())
11704     {
11705       struct ada_catchpoint_location *ada_loc
11706         = (struct ada_catchpoint_location *) bl;
11707       expression_up exp;
11708
11709       if (!bl->shlib_disabled)
11710         {
11711           const char *s;
11712
11713           s = cond_string.c_str ();
11714           try
11715             {
11716               exp = parse_exp_1 (&s, bl->address,
11717                                  block_for_pc (bl->address),
11718                                  0);
11719             }
11720           catch (const gdb_exception_error &e)
11721             {
11722               warning (_("failed to reevaluate internal exception condition "
11723                          "for catchpoint %d: %s"),
11724                        c->number, e.what ());
11725             }
11726         }
11727
11728       ada_loc->excep_cond_expr = std::move (exp);
11729     }
11730 }
11731
11732 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
11733    structure for all exception catchpoint kinds.  */
11734
11735 static struct bp_location *
11736 allocate_location_exception (struct breakpoint *self)
11737 {
11738   return new ada_catchpoint_location (self);
11739 }
11740
11741 /* Implement the RE_SET method in the breakpoint_ops structure for all
11742    exception catchpoint kinds.  */
11743
11744 static void
11745 re_set_exception (struct breakpoint *b)
11746 {
11747   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11748
11749   /* Call the base class's method.  This updates the catchpoint's
11750      locations.  */
11751   bkpt_breakpoint_ops.re_set (b);
11752
11753   /* Reparse the exception conditional expressions.  One for each
11754      location.  */
11755   create_excep_cond_exprs (c, c->m_kind);
11756 }
11757
11758 /* Returns true if we should stop for this breakpoint hit.  If the
11759    user specified a specific exception, we only want to cause a stop
11760    if the program thrown that exception.  */
11761
11762 static bool
11763 should_stop_exception (const struct bp_location *bl)
11764 {
11765   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
11766   const struct ada_catchpoint_location *ada_loc
11767     = (const struct ada_catchpoint_location *) bl;
11768   bool stop;
11769
11770   struct internalvar *var = lookup_internalvar ("_ada_exception");
11771   if (c->m_kind == ada_catch_assert)
11772     clear_internalvar (var);
11773   else
11774     {
11775       try
11776         {
11777           const char *expr;
11778
11779           if (c->m_kind == ada_catch_handlers)
11780             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
11781                     ".all.occurrence.id");
11782           else
11783             expr = "e";
11784
11785           struct value *exc = parse_and_eval (expr);
11786           set_internalvar (var, exc);
11787         }
11788       catch (const gdb_exception_error &ex)
11789         {
11790           clear_internalvar (var);
11791         }
11792     }
11793
11794   /* With no specific exception, should always stop.  */
11795   if (c->excep_string.empty ())
11796     return true;
11797
11798   if (ada_loc->excep_cond_expr == NULL)
11799     {
11800       /* We will have a NULL expression if back when we were creating
11801          the expressions, this location's had failed to parse.  */
11802       return true;
11803     }
11804
11805   stop = true;
11806   try
11807     {
11808       struct value *mark;
11809
11810       mark = value_mark ();
11811       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
11812       value_free_to_mark (mark);
11813     }
11814   catch (const gdb_exception &ex)
11815     {
11816       exception_fprintf (gdb_stderr, ex,
11817                          _("Error in testing exception condition:\n"));
11818     }
11819
11820   return stop;
11821 }
11822
11823 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
11824    for all exception catchpoint kinds.  */
11825
11826 static void
11827 check_status_exception (bpstat bs)
11828 {
11829   bs->stop = should_stop_exception (bs->bp_location_at.get ());
11830 }
11831
11832 /* Implement the PRINT_IT method in the breakpoint_ops structure
11833    for all exception catchpoint kinds.  */
11834
11835 static enum print_stop_action
11836 print_it_exception (bpstat bs)
11837 {
11838   struct ui_out *uiout = current_uiout;
11839   struct breakpoint *b = bs->breakpoint_at;
11840
11841   annotate_catchpoint (b->number);
11842
11843   if (uiout->is_mi_like_p ())
11844     {
11845       uiout->field_string ("reason",
11846                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11847       uiout->field_string ("disp", bpdisp_text (b->disposition));
11848     }
11849
11850   uiout->text (b->disposition == disp_del
11851                ? "\nTemporary catchpoint " : "\nCatchpoint ");
11852   uiout->field_signed ("bkptno", b->number);
11853   uiout->text (", ");
11854
11855   /* ada_exception_name_addr relies on the selected frame being the
11856      current frame.  Need to do this here because this function may be
11857      called more than once when printing a stop, and below, we'll
11858      select the first frame past the Ada run-time (see
11859      ada_find_printable_frame).  */
11860   select_frame (get_current_frame ());
11861
11862   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11863   switch (c->m_kind)
11864     {
11865       case ada_catch_exception:
11866       case ada_catch_exception_unhandled:
11867       case ada_catch_handlers:
11868         {
11869           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
11870           char exception_name[256];
11871
11872           if (addr != 0)
11873             {
11874               read_memory (addr, (gdb_byte *) exception_name,
11875                            sizeof (exception_name) - 1);
11876               exception_name [sizeof (exception_name) - 1] = '\0';
11877             }
11878           else
11879             {
11880               /* For some reason, we were unable to read the exception
11881                  name.  This could happen if the Runtime was compiled
11882                  without debugging info, for instance.  In that case,
11883                  just replace the exception name by the generic string
11884                  "exception" - it will read as "an exception" in the
11885                  notification we are about to print.  */
11886               memcpy (exception_name, "exception", sizeof ("exception"));
11887             }
11888           /* In the case of unhandled exception breakpoints, we print
11889              the exception name as "unhandled EXCEPTION_NAME", to make
11890              it clearer to the user which kind of catchpoint just got
11891              hit.  We used ui_out_text to make sure that this extra
11892              info does not pollute the exception name in the MI case.  */
11893           if (c->m_kind == ada_catch_exception_unhandled)
11894             uiout->text ("unhandled ");
11895           uiout->field_string ("exception-name", exception_name);
11896         }
11897         break;
11898       case ada_catch_assert:
11899         /* In this case, the name of the exception is not really
11900            important.  Just print "failed assertion" to make it clearer
11901            that his program just hit an assertion-failure catchpoint.
11902            We used ui_out_text because this info does not belong in
11903            the MI output.  */
11904         uiout->text ("failed assertion");
11905         break;
11906     }
11907
11908   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
11909   if (exception_message != NULL)
11910     {
11911       uiout->text (" (");
11912       uiout->field_string ("exception-message", exception_message.get ());
11913       uiout->text (")");
11914     }
11915
11916   uiout->text (" at ");
11917   ada_find_printable_frame (get_current_frame ());
11918
11919   return PRINT_SRC_AND_LOC;
11920 }
11921
11922 /* Implement the PRINT_ONE method in the breakpoint_ops structure
11923    for all exception catchpoint kinds.  */
11924
11925 static void
11926 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
11927
11928   struct ui_out *uiout = current_uiout;
11929   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11930   struct value_print_options opts;
11931
11932   get_user_print_options (&opts);
11933
11934   if (opts.addressprint)
11935     uiout->field_skip ("addr");
11936
11937   annotate_field (5);
11938   switch (c->m_kind)
11939     {
11940       case ada_catch_exception:
11941         if (!c->excep_string.empty ())
11942           {
11943             std::string msg = string_printf (_("`%s' Ada exception"),
11944                                              c->excep_string.c_str ());
11945
11946             uiout->field_string ("what", msg);
11947           }
11948         else
11949           uiout->field_string ("what", "all Ada exceptions");
11950         
11951         break;
11952
11953       case ada_catch_exception_unhandled:
11954         uiout->field_string ("what", "unhandled Ada exceptions");
11955         break;
11956       
11957       case ada_catch_handlers:
11958         if (!c->excep_string.empty ())
11959           {
11960             uiout->field_fmt ("what",
11961                               _("`%s' Ada exception handlers"),
11962                               c->excep_string.c_str ());
11963           }
11964         else
11965           uiout->field_string ("what", "all Ada exceptions handlers");
11966         break;
11967
11968       case ada_catch_assert:
11969         uiout->field_string ("what", "failed Ada assertions");
11970         break;
11971
11972       default:
11973         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11974         break;
11975     }
11976 }
11977
11978 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
11979    for all exception catchpoint kinds.  */
11980
11981 static void
11982 print_mention_exception (struct breakpoint *b)
11983 {
11984   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
11985   struct ui_out *uiout = current_uiout;
11986
11987   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
11988                                                  : _("Catchpoint "));
11989   uiout->field_signed ("bkptno", b->number);
11990   uiout->text (": ");
11991
11992   switch (c->m_kind)
11993     {
11994       case ada_catch_exception:
11995         if (!c->excep_string.empty ())
11996           {
11997             std::string info = string_printf (_("`%s' Ada exception"),
11998                                               c->excep_string.c_str ());
11999             uiout->text (info);
12000           }
12001         else
12002           uiout->text (_("all Ada exceptions"));
12003         break;
12004
12005       case ada_catch_exception_unhandled:
12006         uiout->text (_("unhandled Ada exceptions"));
12007         break;
12008
12009       case ada_catch_handlers:
12010         if (!c->excep_string.empty ())
12011           {
12012             std::string info
12013               = string_printf (_("`%s' Ada exception handlers"),
12014                                c->excep_string.c_str ());
12015             uiout->text (info);
12016           }
12017         else
12018           uiout->text (_("all Ada exceptions handlers"));
12019         break;
12020
12021       case ada_catch_assert:
12022         uiout->text (_("failed Ada assertions"));
12023         break;
12024
12025       default:
12026         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12027         break;
12028     }
12029 }
12030
12031 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12032    for all exception catchpoint kinds.  */
12033
12034 static void
12035 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12036 {
12037   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12038
12039   switch (c->m_kind)
12040     {
12041       case ada_catch_exception:
12042         fprintf_filtered (fp, "catch exception");
12043         if (!c->excep_string.empty ())
12044           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12045         break;
12046
12047       case ada_catch_exception_unhandled:
12048         fprintf_filtered (fp, "catch exception unhandled");
12049         break;
12050
12051       case ada_catch_handlers:
12052         fprintf_filtered (fp, "catch handlers");
12053         break;
12054
12055       case ada_catch_assert:
12056         fprintf_filtered (fp, "catch assert");
12057         break;
12058
12059       default:
12060         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12061     }
12062   print_recreate_thread (b, fp);
12063 }
12064
12065 /* Virtual tables for various breakpoint types.  */
12066 static struct breakpoint_ops catch_exception_breakpoint_ops;
12067 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12068 static struct breakpoint_ops catch_assert_breakpoint_ops;
12069 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12070
12071 /* See ada-lang.h.  */
12072
12073 bool
12074 is_ada_exception_catchpoint (breakpoint *bp)
12075 {
12076   return (bp->ops == &catch_exception_breakpoint_ops
12077           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12078           || bp->ops == &catch_assert_breakpoint_ops
12079           || bp->ops == &catch_handlers_breakpoint_ops);
12080 }
12081
12082 /* Split the arguments specified in a "catch exception" command.  
12083    Set EX to the appropriate catchpoint type.
12084    Set EXCEP_STRING to the name of the specific exception if
12085    specified by the user.
12086    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12087    "catch handlers" command.  False otherwise.
12088    If a condition is found at the end of the arguments, the condition
12089    expression is stored in COND_STRING (memory must be deallocated
12090    after use).  Otherwise COND_STRING is set to NULL.  */
12091
12092 static void
12093 catch_ada_exception_command_split (const char *args,
12094                                    bool is_catch_handlers_cmd,
12095                                    enum ada_exception_catchpoint_kind *ex,
12096                                    std::string *excep_string,
12097                                    std::string *cond_string)
12098 {
12099   std::string exception_name;
12100
12101   exception_name = extract_arg (&args);
12102   if (exception_name == "if")
12103     {
12104       /* This is not an exception name; this is the start of a condition
12105          expression for a catchpoint on all exceptions.  So, "un-get"
12106          this token, and set exception_name to NULL.  */
12107       exception_name.clear ();
12108       args -= 2;
12109     }
12110
12111   /* Check to see if we have a condition.  */
12112
12113   args = skip_spaces (args);
12114   if (startswith (args, "if")
12115       && (isspace (args[2]) || args[2] == '\0'))
12116     {
12117       args += 2;
12118       args = skip_spaces (args);
12119
12120       if (args[0] == '\0')
12121         error (_("Condition missing after `if' keyword"));
12122       *cond_string = args;
12123
12124       args += strlen (args);
12125     }
12126
12127   /* Check that we do not have any more arguments.  Anything else
12128      is unexpected.  */
12129
12130   if (args[0] != '\0')
12131     error (_("Junk at end of expression"));
12132
12133   if (is_catch_handlers_cmd)
12134     {
12135       /* Catch handling of exceptions.  */
12136       *ex = ada_catch_handlers;
12137       *excep_string = exception_name;
12138     }
12139   else if (exception_name.empty ())
12140     {
12141       /* Catch all exceptions.  */
12142       *ex = ada_catch_exception;
12143       excep_string->clear ();
12144     }
12145   else if (exception_name == "unhandled")
12146     {
12147       /* Catch unhandled exceptions.  */
12148       *ex = ada_catch_exception_unhandled;
12149       excep_string->clear ();
12150     }
12151   else
12152     {
12153       /* Catch a specific exception.  */
12154       *ex = ada_catch_exception;
12155       *excep_string = exception_name;
12156     }
12157 }
12158
12159 /* Return the name of the symbol on which we should break in order to
12160    implement a catchpoint of the EX kind.  */
12161
12162 static const char *
12163 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12164 {
12165   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12166
12167   gdb_assert (data->exception_info != NULL);
12168
12169   switch (ex)
12170     {
12171       case ada_catch_exception:
12172         return (data->exception_info->catch_exception_sym);
12173         break;
12174       case ada_catch_exception_unhandled:
12175         return (data->exception_info->catch_exception_unhandled_sym);
12176         break;
12177       case ada_catch_assert:
12178         return (data->exception_info->catch_assert_sym);
12179         break;
12180       case ada_catch_handlers:
12181         return (data->exception_info->catch_handlers_sym);
12182         break;
12183       default:
12184         internal_error (__FILE__, __LINE__,
12185                         _("unexpected catchpoint kind (%d)"), ex);
12186     }
12187 }
12188
12189 /* Return the breakpoint ops "virtual table" used for catchpoints
12190    of the EX kind.  */
12191
12192 static const struct breakpoint_ops *
12193 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12194 {
12195   switch (ex)
12196     {
12197       case ada_catch_exception:
12198         return (&catch_exception_breakpoint_ops);
12199         break;
12200       case ada_catch_exception_unhandled:
12201         return (&catch_exception_unhandled_breakpoint_ops);
12202         break;
12203       case ada_catch_assert:
12204         return (&catch_assert_breakpoint_ops);
12205         break;
12206       case ada_catch_handlers:
12207         return (&catch_handlers_breakpoint_ops);
12208         break;
12209       default:
12210         internal_error (__FILE__, __LINE__,
12211                         _("unexpected catchpoint kind (%d)"), ex);
12212     }
12213 }
12214
12215 /* Return the condition that will be used to match the current exception
12216    being raised with the exception that the user wants to catch.  This
12217    assumes that this condition is used when the inferior just triggered
12218    an exception catchpoint.
12219    EX: the type of catchpoints used for catching Ada exceptions.  */
12220
12221 static std::string
12222 ada_exception_catchpoint_cond_string (const char *excep_string,
12223                                       enum ada_exception_catchpoint_kind ex)
12224 {
12225   int i;
12226   bool is_standard_exc = false;
12227   std::string result;
12228
12229   if (ex == ada_catch_handlers)
12230     {
12231       /* For exception handlers catchpoints, the condition string does
12232          not use the same parameter as for the other exceptions.  */
12233       result = ("long_integer (GNAT_GCC_exception_Access"
12234                 "(gcc_exception).all.occurrence.id)");
12235     }
12236   else
12237     result = "long_integer (e)";
12238
12239   /* The standard exceptions are a special case.  They are defined in
12240      runtime units that have been compiled without debugging info; if
12241      EXCEP_STRING is the not-fully-qualified name of a standard
12242      exception (e.g. "constraint_error") then, during the evaluation
12243      of the condition expression, the symbol lookup on this name would
12244      *not* return this standard exception.  The catchpoint condition
12245      may then be set only on user-defined exceptions which have the
12246      same not-fully-qualified name (e.g. my_package.constraint_error).
12247
12248      To avoid this unexcepted behavior, these standard exceptions are
12249      systematically prefixed by "standard".  This means that "catch
12250      exception constraint_error" is rewritten into "catch exception
12251      standard.constraint_error".
12252
12253      If an exception named constraint_error is defined in another package of
12254      the inferior program, then the only way to specify this exception as a
12255      breakpoint condition is to use its fully-qualified named:
12256      e.g. my_package.constraint_error.  */
12257
12258   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12259     {
12260       if (strcmp (standard_exc [i], excep_string) == 0)
12261         {
12262           is_standard_exc = true;
12263           break;
12264         }
12265     }
12266
12267   result += " = ";
12268
12269   if (is_standard_exc)
12270     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12271   else
12272     string_appendf (result, "long_integer (&%s)", excep_string);
12273
12274   return result;
12275 }
12276
12277 /* Return the symtab_and_line that should be used to insert an exception
12278    catchpoint of the TYPE kind.
12279
12280    ADDR_STRING returns the name of the function where the real
12281    breakpoint that implements the catchpoints is set, depending on the
12282    type of catchpoint we need to create.  */
12283
12284 static struct symtab_and_line
12285 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12286                    std::string *addr_string, const struct breakpoint_ops **ops)
12287 {
12288   const char *sym_name;
12289   struct symbol *sym;
12290
12291   /* First, find out which exception support info to use.  */
12292   ada_exception_support_info_sniffer ();
12293
12294   /* Then lookup the function on which we will break in order to catch
12295      the Ada exceptions requested by the user.  */
12296   sym_name = ada_exception_sym_name (ex);
12297   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12298
12299   if (sym == NULL)
12300     error (_("Catchpoint symbol not found: %s"), sym_name);
12301
12302   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12303     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12304
12305   /* Set ADDR_STRING.  */
12306   *addr_string = sym_name;
12307
12308   /* Set OPS.  */
12309   *ops = ada_exception_breakpoint_ops (ex);
12310
12311   return find_function_start_sal (sym, 1);
12312 }
12313
12314 /* Create an Ada exception catchpoint.
12315
12316    EX_KIND is the kind of exception catchpoint to be created.
12317
12318    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12319    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12320    of the exception to which this catchpoint applies.
12321
12322    COND_STRING, if not empty, is the catchpoint condition.
12323
12324    TEMPFLAG, if nonzero, means that the underlying breakpoint
12325    should be temporary.
12326
12327    FROM_TTY is the usual argument passed to all commands implementations.  */
12328
12329 void
12330 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12331                                  enum ada_exception_catchpoint_kind ex_kind,
12332                                  const std::string &excep_string,
12333                                  const std::string &cond_string,
12334                                  int tempflag,
12335                                  int disabled,
12336                                  int from_tty)
12337 {
12338   std::string addr_string;
12339   const struct breakpoint_ops *ops = NULL;
12340   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12341
12342   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12343   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12344                                  ops, tempflag, disabled, from_tty);
12345   c->excep_string = excep_string;
12346   create_excep_cond_exprs (c.get (), ex_kind);
12347   if (!cond_string.empty ())
12348     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty, false);
12349   install_breakpoint (0, std::move (c), 1);
12350 }
12351
12352 /* Implement the "catch exception" command.  */
12353
12354 static void
12355 catch_ada_exception_command (const char *arg_entry, int from_tty,
12356                              struct cmd_list_element *command)
12357 {
12358   const char *arg = arg_entry;
12359   struct gdbarch *gdbarch = get_current_arch ();
12360   int tempflag;
12361   enum ada_exception_catchpoint_kind ex_kind;
12362   std::string excep_string;
12363   std::string cond_string;
12364
12365   tempflag = command->context () == CATCH_TEMPORARY;
12366
12367   if (!arg)
12368     arg = "";
12369   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12370                                      &cond_string);
12371   create_ada_exception_catchpoint (gdbarch, ex_kind,
12372                                    excep_string, cond_string,
12373                                    tempflag, 1 /* enabled */,
12374                                    from_tty);
12375 }
12376
12377 /* Implement the "catch handlers" command.  */
12378
12379 static void
12380 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12381                             struct cmd_list_element *command)
12382 {
12383   const char *arg = arg_entry;
12384   struct gdbarch *gdbarch = get_current_arch ();
12385   int tempflag;
12386   enum ada_exception_catchpoint_kind ex_kind;
12387   std::string excep_string;
12388   std::string cond_string;
12389
12390   tempflag = command->context () == CATCH_TEMPORARY;
12391
12392   if (!arg)
12393     arg = "";
12394   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12395                                      &cond_string);
12396   create_ada_exception_catchpoint (gdbarch, ex_kind,
12397                                    excep_string, cond_string,
12398                                    tempflag, 1 /* enabled */,
12399                                    from_tty);
12400 }
12401
12402 /* Completion function for the Ada "catch" commands.  */
12403
12404 static void
12405 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12406                      const char *text, const char *word)
12407 {
12408   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12409
12410   for (const ada_exc_info &info : exceptions)
12411     {
12412       if (startswith (info.name, word))
12413         tracker.add_completion (make_unique_xstrdup (info.name));
12414     }
12415 }
12416
12417 /* Split the arguments specified in a "catch assert" command.
12418
12419    ARGS contains the command's arguments (or the empty string if
12420    no arguments were passed).
12421
12422    If ARGS contains a condition, set COND_STRING to that condition
12423    (the memory needs to be deallocated after use).  */
12424
12425 static void
12426 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12427 {
12428   args = skip_spaces (args);
12429
12430   /* Check whether a condition was provided.  */
12431   if (startswith (args, "if")
12432       && (isspace (args[2]) || args[2] == '\0'))
12433     {
12434       args += 2;
12435       args = skip_spaces (args);
12436       if (args[0] == '\0')
12437         error (_("condition missing after `if' keyword"));
12438       cond_string.assign (args);
12439     }
12440
12441   /* Otherwise, there should be no other argument at the end of
12442      the command.  */
12443   else if (args[0] != '\0')
12444     error (_("Junk at end of arguments."));
12445 }
12446
12447 /* Implement the "catch assert" command.  */
12448
12449 static void
12450 catch_assert_command (const char *arg_entry, int from_tty,
12451                       struct cmd_list_element *command)
12452 {
12453   const char *arg = arg_entry;
12454   struct gdbarch *gdbarch = get_current_arch ();
12455   int tempflag;
12456   std::string cond_string;
12457
12458   tempflag = command->context () == CATCH_TEMPORARY;
12459
12460   if (!arg)
12461     arg = "";
12462   catch_ada_assert_command_split (arg, cond_string);
12463   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12464                                    "", cond_string,
12465                                    tempflag, 1 /* enabled */,
12466                                    from_tty);
12467 }
12468
12469 /* Return non-zero if the symbol SYM is an Ada exception object.  */
12470
12471 static int
12472 ada_is_exception_sym (struct symbol *sym)
12473 {
12474   const char *type_name = SYMBOL_TYPE (sym)->name ();
12475
12476   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12477           && SYMBOL_CLASS (sym) != LOC_BLOCK
12478           && SYMBOL_CLASS (sym) != LOC_CONST
12479           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12480           && type_name != NULL && strcmp (type_name, "exception") == 0);
12481 }
12482
12483 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12484    Ada exception object.  This matches all exceptions except the ones
12485    defined by the Ada language.  */
12486
12487 static int
12488 ada_is_non_standard_exception_sym (struct symbol *sym)
12489 {
12490   int i;
12491
12492   if (!ada_is_exception_sym (sym))
12493     return 0;
12494
12495   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12496     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
12497       return 0;  /* A standard exception.  */
12498
12499   /* Numeric_Error is also a standard exception, so exclude it.
12500      See the STANDARD_EXC description for more details as to why
12501      this exception is not listed in that array.  */
12502   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
12503     return 0;
12504
12505   return 1;
12506 }
12507
12508 /* A helper function for std::sort, comparing two struct ada_exc_info
12509    objects.
12510
12511    The comparison is determined first by exception name, and then
12512    by exception address.  */
12513
12514 bool
12515 ada_exc_info::operator< (const ada_exc_info &other) const
12516 {
12517   int result;
12518
12519   result = strcmp (name, other.name);
12520   if (result < 0)
12521     return true;
12522   if (result == 0 && addr < other.addr)
12523     return true;
12524   return false;
12525 }
12526
12527 bool
12528 ada_exc_info::operator== (const ada_exc_info &other) const
12529 {
12530   return addr == other.addr && strcmp (name, other.name) == 0;
12531 }
12532
12533 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12534    routine, but keeping the first SKIP elements untouched.
12535
12536    All duplicates are also removed.  */
12537
12538 static void
12539 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
12540                                       int skip)
12541 {
12542   std::sort (exceptions->begin () + skip, exceptions->end ());
12543   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
12544                      exceptions->end ());
12545 }
12546
12547 /* Add all exceptions defined by the Ada standard whose name match
12548    a regular expression.
12549
12550    If PREG is not NULL, then this regexp_t object is used to
12551    perform the symbol name matching.  Otherwise, no name-based
12552    filtering is performed.
12553
12554    EXCEPTIONS is a vector of exceptions to which matching exceptions
12555    gets pushed.  */
12556
12557 static void
12558 ada_add_standard_exceptions (compiled_regex *preg,
12559                              std::vector<ada_exc_info> *exceptions)
12560 {
12561   int i;
12562
12563   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12564     {
12565       if (preg == NULL
12566           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
12567         {
12568           struct bound_minimal_symbol msymbol
12569             = ada_lookup_simple_minsym (standard_exc[i]);
12570
12571           if (msymbol.minsym != NULL)
12572             {
12573               struct ada_exc_info info
12574                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12575
12576               exceptions->push_back (info);
12577             }
12578         }
12579     }
12580 }
12581
12582 /* Add all Ada exceptions defined locally and accessible from the given
12583    FRAME.
12584
12585    If PREG is not NULL, then this regexp_t object is used to
12586    perform the symbol name matching.  Otherwise, no name-based
12587    filtering is performed.
12588
12589    EXCEPTIONS is a vector of exceptions to which matching exceptions
12590    gets pushed.  */
12591
12592 static void
12593 ada_add_exceptions_from_frame (compiled_regex *preg,
12594                                struct frame_info *frame,
12595                                std::vector<ada_exc_info> *exceptions)
12596 {
12597   const struct block *block = get_frame_block (frame, 0);
12598
12599   while (block != 0)
12600     {
12601       struct block_iterator iter;
12602       struct symbol *sym;
12603
12604       ALL_BLOCK_SYMBOLS (block, iter, sym)
12605         {
12606           switch (SYMBOL_CLASS (sym))
12607             {
12608             case LOC_TYPEDEF:
12609             case LOC_BLOCK:
12610             case LOC_CONST:
12611               break;
12612             default:
12613               if (ada_is_exception_sym (sym))
12614                 {
12615                   struct ada_exc_info info = {sym->print_name (),
12616                                               SYMBOL_VALUE_ADDRESS (sym)};
12617
12618                   exceptions->push_back (info);
12619                 }
12620             }
12621         }
12622       if (BLOCK_FUNCTION (block) != NULL)
12623         break;
12624       block = BLOCK_SUPERBLOCK (block);
12625     }
12626 }
12627
12628 /* Return true if NAME matches PREG or if PREG is NULL.  */
12629
12630 static bool
12631 name_matches_regex (const char *name, compiled_regex *preg)
12632 {
12633   return (preg == NULL
12634           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
12635 }
12636
12637 /* Add all exceptions defined globally whose name name match
12638    a regular expression, excluding standard exceptions.
12639
12640    The reason we exclude standard exceptions is that they need
12641    to be handled separately: Standard exceptions are defined inside
12642    a runtime unit which is normally not compiled with debugging info,
12643    and thus usually do not show up in our symbol search.  However,
12644    if the unit was in fact built with debugging info, we need to
12645    exclude them because they would duplicate the entry we found
12646    during the special loop that specifically searches for those
12647    standard exceptions.
12648
12649    If PREG is not NULL, then this regexp_t object is used to
12650    perform the symbol name matching.  Otherwise, no name-based
12651    filtering is performed.
12652
12653    EXCEPTIONS is a vector of exceptions to which matching exceptions
12654    gets pushed.  */
12655
12656 static void
12657 ada_add_global_exceptions (compiled_regex *preg,
12658                            std::vector<ada_exc_info> *exceptions)
12659 {
12660   /* In Ada, the symbol "search name" is a linkage name, whereas the
12661      regular expression used to do the matching refers to the natural
12662      name.  So match against the decoded name.  */
12663   expand_symtabs_matching (NULL,
12664                            lookup_name_info::match_any (),
12665                            [&] (const char *search_name)
12666                            {
12667                              std::string decoded = ada_decode (search_name);
12668                              return name_matches_regex (decoded.c_str (), preg);
12669                            },
12670                            NULL,
12671                            SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK,
12672                            VARIABLES_DOMAIN);
12673
12674   for (objfile *objfile : current_program_space->objfiles ())
12675     {
12676       for (compunit_symtab *s : objfile->compunits ())
12677         {
12678           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
12679           int i;
12680
12681           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
12682             {
12683               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
12684               struct block_iterator iter;
12685               struct symbol *sym;
12686
12687               ALL_BLOCK_SYMBOLS (b, iter, sym)
12688                 if (ada_is_non_standard_exception_sym (sym)
12689                     && name_matches_regex (sym->natural_name (), preg))
12690                   {
12691                     struct ada_exc_info info
12692                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
12693
12694                     exceptions->push_back (info);
12695                   }
12696             }
12697         }
12698     }
12699 }
12700
12701 /* Implements ada_exceptions_list with the regular expression passed
12702    as a regex_t, rather than a string.
12703
12704    If not NULL, PREG is used to filter out exceptions whose names
12705    do not match.  Otherwise, all exceptions are listed.  */
12706
12707 static std::vector<ada_exc_info>
12708 ada_exceptions_list_1 (compiled_regex *preg)
12709 {
12710   std::vector<ada_exc_info> result;
12711   int prev_len;
12712
12713   /* First, list the known standard exceptions.  These exceptions
12714      need to be handled separately, as they are usually defined in
12715      runtime units that have been compiled without debugging info.  */
12716
12717   ada_add_standard_exceptions (preg, &result);
12718
12719   /* Next, find all exceptions whose scope is local and accessible
12720      from the currently selected frame.  */
12721
12722   if (has_stack_frames ())
12723     {
12724       prev_len = result.size ();
12725       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
12726                                      &result);
12727       if (result.size () > prev_len)
12728         sort_remove_dups_ada_exceptions_list (&result, prev_len);
12729     }
12730
12731   /* Add all exceptions whose scope is global.  */
12732
12733   prev_len = result.size ();
12734   ada_add_global_exceptions (preg, &result);
12735   if (result.size () > prev_len)
12736     sort_remove_dups_ada_exceptions_list (&result, prev_len);
12737
12738   return result;
12739 }
12740
12741 /* Return a vector of ada_exc_info.
12742
12743    If REGEXP is NULL, all exceptions are included in the result.
12744    Otherwise, it should contain a valid regular expression,
12745    and only the exceptions whose names match that regular expression
12746    are included in the result.
12747
12748    The exceptions are sorted in the following order:
12749      - Standard exceptions (defined by the Ada language), in
12750        alphabetical order;
12751      - Exceptions only visible from the current frame, in
12752        alphabetical order;
12753      - Exceptions whose scope is global, in alphabetical order.  */
12754
12755 std::vector<ada_exc_info>
12756 ada_exceptions_list (const char *regexp)
12757 {
12758   if (regexp == NULL)
12759     return ada_exceptions_list_1 (NULL);
12760
12761   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
12762   return ada_exceptions_list_1 (&reg);
12763 }
12764
12765 /* Implement the "info exceptions" command.  */
12766
12767 static void
12768 info_exceptions_command (const char *regexp, int from_tty)
12769 {
12770   struct gdbarch *gdbarch = get_current_arch ();
12771
12772   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
12773
12774   if (regexp != NULL)
12775     printf_filtered
12776       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
12777   else
12778     printf_filtered (_("All defined Ada exceptions:\n"));
12779
12780   for (const ada_exc_info &info : exceptions)
12781     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
12782 }
12783
12784 \f
12785                                 /* Language vector */
12786
12787 /* symbol_name_matcher_ftype adapter for wild_match.  */
12788
12789 static bool
12790 do_wild_match (const char *symbol_search_name,
12791                const lookup_name_info &lookup_name,
12792                completion_match_result *comp_match_res)
12793 {
12794   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
12795 }
12796
12797 /* symbol_name_matcher_ftype adapter for full_match.  */
12798
12799 static bool
12800 do_full_match (const char *symbol_search_name,
12801                const lookup_name_info &lookup_name,
12802                completion_match_result *comp_match_res)
12803 {
12804   const char *lname = lookup_name.ada ().lookup_name ().c_str ();
12805
12806   /* If both symbols start with "_ada_", just let the loop below
12807      handle the comparison.  However, if only the symbol name starts
12808      with "_ada_", skip the prefix and let the match proceed as
12809      usual.  */
12810   if (startswith (symbol_search_name, "_ada_")
12811       && !startswith (lname, "_ada"))
12812     symbol_search_name += 5;
12813
12814   int uscore_count = 0;
12815   while (*lname != '\0')
12816     {
12817       if (*symbol_search_name != *lname)
12818         {
12819           if (*symbol_search_name == 'B' && uscore_count == 2
12820               && symbol_search_name[1] == '_')
12821             {
12822               symbol_search_name += 2;
12823               while (isdigit (*symbol_search_name))
12824                 ++symbol_search_name;
12825               if (symbol_search_name[0] == '_'
12826                   && symbol_search_name[1] == '_')
12827                 {
12828                   symbol_search_name += 2;
12829                   continue;
12830                 }
12831             }
12832           return false;
12833         }
12834
12835       if (*symbol_search_name == '_')
12836         ++uscore_count;
12837       else
12838         uscore_count = 0;
12839
12840       ++symbol_search_name;
12841       ++lname;
12842     }
12843
12844   return is_name_suffix (symbol_search_name);
12845 }
12846
12847 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
12848
12849 static bool
12850 do_exact_match (const char *symbol_search_name,
12851                 const lookup_name_info &lookup_name,
12852                 completion_match_result *comp_match_res)
12853 {
12854   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
12855 }
12856
12857 /* Build the Ada lookup name for LOOKUP_NAME.  */
12858
12859 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
12860 {
12861   gdb::string_view user_name = lookup_name.name ();
12862
12863   if (!user_name.empty () && user_name[0] == '<')
12864     {
12865       if (user_name.back () == '>')
12866         m_encoded_name
12867           = gdb::to_string (user_name.substr (1, user_name.size () - 2));
12868       else
12869         m_encoded_name
12870           = gdb::to_string (user_name.substr (1, user_name.size () - 1));
12871       m_encoded_p = true;
12872       m_verbatim_p = true;
12873       m_wild_match_p = false;
12874       m_standard_p = false;
12875     }
12876   else
12877     {
12878       m_verbatim_p = false;
12879
12880       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
12881
12882       if (!m_encoded_p)
12883         {
12884           const char *folded = ada_fold_name (user_name);
12885           m_encoded_name = ada_encode_1 (folded, false);
12886           if (m_encoded_name.empty ())
12887             m_encoded_name = gdb::to_string (user_name);
12888         }
12889       else
12890         m_encoded_name = gdb::to_string (user_name);
12891
12892       /* Handle the 'package Standard' special case.  See description
12893          of m_standard_p.  */
12894       if (startswith (m_encoded_name.c_str (), "standard__"))
12895         {
12896           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
12897           m_standard_p = true;
12898         }
12899       else
12900         m_standard_p = false;
12901
12902       /* If the name contains a ".", then the user is entering a fully
12903          qualified entity name, and the match must not be done in wild
12904          mode.  Similarly, if the user wants to complete what looks
12905          like an encoded name, the match must not be done in wild
12906          mode.  Also, in the standard__ special case always do
12907          non-wild matching.  */
12908       m_wild_match_p
12909         = (lookup_name.match_type () != symbol_name_match_type::FULL
12910            && !m_encoded_p
12911            && !m_standard_p
12912            && user_name.find ('.') == std::string::npos);
12913     }
12914 }
12915
12916 /* symbol_name_matcher_ftype method for Ada.  This only handles
12917    completion mode.  */
12918
12919 static bool
12920 ada_symbol_name_matches (const char *symbol_search_name,
12921                          const lookup_name_info &lookup_name,
12922                          completion_match_result *comp_match_res)
12923 {
12924   return lookup_name.ada ().matches (symbol_search_name,
12925                                      lookup_name.match_type (),
12926                                      comp_match_res);
12927 }
12928
12929 /* A name matcher that matches the symbol name exactly, with
12930    strcmp.  */
12931
12932 static bool
12933 literal_symbol_name_matcher (const char *symbol_search_name,
12934                              const lookup_name_info &lookup_name,
12935                              completion_match_result *comp_match_res)
12936 {
12937   gdb::string_view name_view = lookup_name.name ();
12938
12939   if (lookup_name.completion_mode ()
12940       ? (strncmp (symbol_search_name, name_view.data (),
12941                   name_view.size ()) == 0)
12942       : symbol_search_name == name_view)
12943     {
12944       if (comp_match_res != NULL)
12945         comp_match_res->set_match (symbol_search_name);
12946       return true;
12947     }
12948   else
12949     return false;
12950 }
12951
12952 /* Implement the "get_symbol_name_matcher" language_defn method for
12953    Ada.  */
12954
12955 static symbol_name_matcher_ftype *
12956 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
12957 {
12958   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
12959     return literal_symbol_name_matcher;
12960
12961   if (lookup_name.completion_mode ())
12962     return ada_symbol_name_matches;
12963   else
12964     {
12965       if (lookup_name.ada ().wild_match_p ())
12966         return do_wild_match;
12967       else if (lookup_name.ada ().verbatim_p ())
12968         return do_exact_match;
12969       else
12970         return do_full_match;
12971     }
12972 }
12973
12974 /* Class representing the Ada language.  */
12975
12976 class ada_language : public language_defn
12977 {
12978 public:
12979   ada_language ()
12980     : language_defn (language_ada)
12981   { /* Nothing.  */ }
12982
12983   /* See language.h.  */
12984
12985   const char *name () const override
12986   { return "ada"; }
12987
12988   /* See language.h.  */
12989
12990   const char *natural_name () const override
12991   { return "Ada"; }
12992
12993   /* See language.h.  */
12994
12995   const std::vector<const char *> &filename_extensions () const override
12996   {
12997     static const std::vector<const char *> extensions
12998       = { ".adb", ".ads", ".a", ".ada", ".dg" };
12999     return extensions;
13000   }
13001
13002   /* Print an array element index using the Ada syntax.  */
13003
13004   void print_array_index (struct type *index_type,
13005                           LONGEST index,
13006                           struct ui_file *stream,
13007                           const value_print_options *options) const override
13008   {
13009     struct value *index_value = val_atr (index_type, index);
13010
13011     value_print (index_value, stream, options);
13012     fprintf_filtered (stream, " => ");
13013   }
13014
13015   /* Implement the "read_var_value" language_defn method for Ada.  */
13016
13017   struct value *read_var_value (struct symbol *var,
13018                                 const struct block *var_block,
13019                                 struct frame_info *frame) const override
13020   {
13021     /* The only case where default_read_var_value is not sufficient
13022        is when VAR is a renaming...  */
13023     if (frame != nullptr)
13024       {
13025         const struct block *frame_block = get_frame_block (frame, NULL);
13026         if (frame_block != nullptr && ada_is_renaming_symbol (var))
13027           return ada_read_renaming_var_value (var, frame_block);
13028       }
13029
13030     /* This is a typical case where we expect the default_read_var_value
13031        function to work.  */
13032     return language_defn::read_var_value (var, var_block, frame);
13033   }
13034
13035   /* See language.h.  */
13036   virtual bool symbol_printing_suppressed (struct symbol *symbol) const override
13037   {
13038     return symbol->artificial;
13039   }
13040
13041   /* See language.h.  */
13042   void language_arch_info (struct gdbarch *gdbarch,
13043                            struct language_arch_info *lai) const override
13044   {
13045     const struct builtin_type *builtin = builtin_type (gdbarch);
13046
13047     /* Helper function to allow shorter lines below.  */
13048     auto add = [&] (struct type *t)
13049     {
13050       lai->add_primitive_type (t);
13051     };
13052
13053     add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13054                             0, "integer"));
13055     add (arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13056                             0, "long_integer"));
13057     add (arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13058                             0, "short_integer"));
13059     struct type *char_type = arch_character_type (gdbarch, TARGET_CHAR_BIT,
13060                                                   0, "character");
13061     lai->set_string_char_type (char_type);
13062     add (char_type);
13063     add (arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13064                           "float", gdbarch_float_format (gdbarch)));
13065     add (arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13066                           "long_float", gdbarch_double_format (gdbarch)));
13067     add (arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13068                             0, "long_long_integer"));
13069     add (arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13070                           "long_long_float",
13071                           gdbarch_long_double_format (gdbarch)));
13072     add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13073                             0, "natural"));
13074     add (arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13075                             0, "positive"));
13076     add (builtin->builtin_void);
13077
13078     struct type *system_addr_ptr
13079       = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13080                                         "void"));
13081     system_addr_ptr->set_name ("system__address");
13082     add (system_addr_ptr);
13083
13084     /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13085        type.  This is a signed integral type whose size is the same as
13086        the size of addresses.  */
13087     unsigned int addr_length = TYPE_LENGTH (system_addr_ptr);
13088     add (arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13089                             "storage_offset"));
13090
13091     lai->set_bool_type (builtin->builtin_bool);
13092   }
13093
13094   /* See language.h.  */
13095
13096   bool iterate_over_symbols
13097         (const struct block *block, const lookup_name_info &name,
13098          domain_enum domain,
13099          gdb::function_view<symbol_found_callback_ftype> callback) const override
13100   {
13101     std::vector<struct block_symbol> results
13102       = ada_lookup_symbol_list_worker (name, block, domain, 0);
13103     for (block_symbol &sym : results)
13104       {
13105         if (!callback (&sym))
13106           return false;
13107       }
13108
13109     return true;
13110   }
13111
13112   /* See language.h.  */
13113   bool sniff_from_mangled_name
13114        (const char *mangled,
13115         gdb::unique_xmalloc_ptr<char> *out) const override
13116   {
13117     std::string demangled = ada_decode (mangled);
13118
13119     *out = NULL;
13120
13121     if (demangled != mangled && demangled[0] != '<')
13122       {
13123         /* Set the gsymbol language to Ada, but still return 0.
13124            Two reasons for that:
13125
13126            1. For Ada, we prefer computing the symbol's decoded name
13127            on the fly rather than pre-compute it, in order to save
13128            memory (Ada projects are typically very large).
13129
13130            2. There are some areas in the definition of the GNAT
13131            encoding where, with a bit of bad luck, we might be able
13132            to decode a non-Ada symbol, generating an incorrect
13133            demangled name (Eg: names ending with "TB" for instance
13134            are identified as task bodies and so stripped from
13135            the decoded name returned).
13136
13137            Returning true, here, but not setting *DEMANGLED, helps us get
13138            a little bit of the best of both worlds.  Because we're last,
13139            we should not affect any of the other languages that were
13140            able to demangle the symbol before us; we get to correctly
13141            tag Ada symbols as such; and even if we incorrectly tagged a
13142            non-Ada symbol, which should be rare, any routing through the
13143            Ada language should be transparent (Ada tries to behave much
13144            like C/C++ with non-Ada symbols).  */
13145         return true;
13146       }
13147
13148     return false;
13149   }
13150
13151   /* See language.h.  */
13152
13153   gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled,
13154                                                  int options) const override
13155   {
13156     return make_unique_xstrdup (ada_decode (mangled).c_str ());
13157   }
13158
13159   /* See language.h.  */
13160
13161   void print_type (struct type *type, const char *varstring,
13162                    struct ui_file *stream, int show, int level,
13163                    const struct type_print_options *flags) const override
13164   {
13165     ada_print_type (type, varstring, stream, show, level, flags);
13166   }
13167
13168   /* See language.h.  */
13169
13170   const char *word_break_characters (void) const override
13171   {
13172     return ada_completer_word_break_characters;
13173   }
13174
13175   /* See language.h.  */
13176
13177   void collect_symbol_completion_matches (completion_tracker &tracker,
13178                                           complete_symbol_mode mode,
13179                                           symbol_name_match_type name_match_type,
13180                                           const char *text, const char *word,
13181                                           enum type_code code) const override
13182   {
13183     struct symbol *sym;
13184     const struct block *b, *surrounding_static_block = 0;
13185     struct block_iterator iter;
13186
13187     gdb_assert (code == TYPE_CODE_UNDEF);
13188
13189     lookup_name_info lookup_name (text, name_match_type, true);
13190
13191     /* First, look at the partial symtab symbols.  */
13192     expand_symtabs_matching (NULL,
13193                              lookup_name,
13194                              NULL,
13195                              NULL,
13196                              SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK,
13197                              ALL_DOMAIN);
13198
13199     /* At this point scan through the misc symbol vectors and add each
13200        symbol you find to the list.  Eventually we want to ignore
13201        anything that isn't a text symbol (everything else will be
13202        handled by the psymtab code above).  */
13203
13204     for (objfile *objfile : current_program_space->objfiles ())
13205       {
13206         for (minimal_symbol *msymbol : objfile->msymbols ())
13207           {
13208             QUIT;
13209
13210             if (completion_skip_symbol (mode, msymbol))
13211               continue;
13212
13213             language symbol_language = msymbol->language ();
13214
13215             /* Ada minimal symbols won't have their language set to Ada.  If
13216                we let completion_list_add_name compare using the
13217                default/C-like matcher, then when completing e.g., symbols in a
13218                package named "pck", we'd match internal Ada symbols like
13219                "pckS", which are invalid in an Ada expression, unless you wrap
13220                them in '<' '>' to request a verbatim match.
13221
13222                Unfortunately, some Ada encoded names successfully demangle as
13223                C++ symbols (using an old mangling scheme), such as "name__2Xn"
13224                -> "Xn::name(void)" and thus some Ada minimal symbols end up
13225                with the wrong language set.  Paper over that issue here.  */
13226             if (symbol_language == language_auto
13227                 || symbol_language == language_cplus)
13228               symbol_language = language_ada;
13229
13230             completion_list_add_name (tracker,
13231                                       symbol_language,
13232                                       msymbol->linkage_name (),
13233                                       lookup_name, text, word);
13234           }
13235       }
13236
13237     /* Search upwards from currently selected frame (so that we can
13238        complete on local vars.  */
13239
13240     for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
13241       {
13242         if (!BLOCK_SUPERBLOCK (b))
13243           surrounding_static_block = b;   /* For elmin of dups */
13244
13245         ALL_BLOCK_SYMBOLS (b, iter, sym)
13246           {
13247             if (completion_skip_symbol (mode, sym))
13248               continue;
13249
13250             completion_list_add_name (tracker,
13251                                       sym->language (),
13252                                       sym->linkage_name (),
13253                                       lookup_name, text, word);
13254           }
13255       }
13256
13257     /* Go through the symtabs and check the externs and statics for
13258        symbols which match.  */
13259
13260     for (objfile *objfile : current_program_space->objfiles ())
13261       {
13262         for (compunit_symtab *s : objfile->compunits ())
13263           {
13264             QUIT;
13265             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
13266             ALL_BLOCK_SYMBOLS (b, iter, sym)
13267               {
13268                 if (completion_skip_symbol (mode, sym))
13269                   continue;
13270
13271                 completion_list_add_name (tracker,
13272                                           sym->language (),
13273                                           sym->linkage_name (),
13274                                           lookup_name, text, word);
13275               }
13276           }
13277       }
13278
13279     for (objfile *objfile : current_program_space->objfiles ())
13280       {
13281         for (compunit_symtab *s : objfile->compunits ())
13282           {
13283             QUIT;
13284             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
13285             /* Don't do this block twice.  */
13286             if (b == surrounding_static_block)
13287               continue;
13288             ALL_BLOCK_SYMBOLS (b, iter, sym)
13289               {
13290                 if (completion_skip_symbol (mode, sym))
13291                   continue;
13292
13293                 completion_list_add_name (tracker,
13294                                           sym->language (),
13295                                           sym->linkage_name (),
13296                                           lookup_name, text, word);
13297               }
13298           }
13299       }
13300   }
13301
13302   /* See language.h.  */
13303
13304   gdb::unique_xmalloc_ptr<char> watch_location_expression
13305         (struct type *type, CORE_ADDR addr) const override
13306   {
13307     type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
13308     std::string name = type_to_string (type);
13309     return gdb::unique_xmalloc_ptr<char>
13310       (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
13311   }
13312
13313   /* See language.h.  */
13314
13315   void value_print (struct value *val, struct ui_file *stream,
13316                     const struct value_print_options *options) const override
13317   {
13318     return ada_value_print (val, stream, options);
13319   }
13320
13321   /* See language.h.  */
13322
13323   void value_print_inner
13324         (struct value *val, struct ui_file *stream, int recurse,
13325          const struct value_print_options *options) const override
13326   {
13327     return ada_value_print_inner (val, stream, recurse, options);
13328   }
13329
13330   /* See language.h.  */
13331
13332   struct block_symbol lookup_symbol_nonlocal
13333         (const char *name, const struct block *block,
13334          const domain_enum domain) const override
13335   {
13336     struct block_symbol sym;
13337
13338     sym = ada_lookup_symbol (name, block_static_block (block), domain);
13339     if (sym.symbol != NULL)
13340       return sym;
13341
13342     /* If we haven't found a match at this point, try the primitive
13343        types.  In other languages, this search is performed before
13344        searching for global symbols in order to short-circuit that
13345        global-symbol search if it happens that the name corresponds
13346        to a primitive type.  But we cannot do the same in Ada, because
13347        it is perfectly legitimate for a program to declare a type which
13348        has the same name as a standard type.  If looking up a type in
13349        that situation, we have traditionally ignored the primitive type
13350        in favor of user-defined types.  This is why, unlike most other
13351        languages, we search the primitive types this late and only after
13352        having searched the global symbols without success.  */
13353
13354     if (domain == VAR_DOMAIN)
13355       {
13356         struct gdbarch *gdbarch;
13357
13358         if (block == NULL)
13359           gdbarch = target_gdbarch ();
13360         else
13361           gdbarch = block_gdbarch (block);
13362         sym.symbol
13363           = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
13364         if (sym.symbol != NULL)
13365           return sym;
13366       }
13367
13368     return {};
13369   }
13370
13371   /* See language.h.  */
13372
13373   int parser (struct parser_state *ps) const override
13374   {
13375     warnings_issued = 0;
13376     return ada_parse (ps);
13377   }
13378
13379   /* See language.h.  */
13380
13381   void emitchar (int ch, struct type *chtype,
13382                  struct ui_file *stream, int quoter) const override
13383   {
13384     ada_emit_char (ch, chtype, stream, quoter, 1);
13385   }
13386
13387   /* See language.h.  */
13388
13389   void printchar (int ch, struct type *chtype,
13390                   struct ui_file *stream) const override
13391   {
13392     ada_printchar (ch, chtype, stream);
13393   }
13394
13395   /* See language.h.  */
13396
13397   void printstr (struct ui_file *stream, struct type *elttype,
13398                  const gdb_byte *string, unsigned int length,
13399                  const char *encoding, int force_ellipses,
13400                  const struct value_print_options *options) const override
13401   {
13402     ada_printstr (stream, elttype, string, length, encoding,
13403                   force_ellipses, options);
13404   }
13405
13406   /* See language.h.  */
13407
13408   void print_typedef (struct type *type, struct symbol *new_symbol,
13409                       struct ui_file *stream) const override
13410   {
13411     ada_print_typedef (type, new_symbol, stream);
13412   }
13413
13414   /* See language.h.  */
13415
13416   bool is_string_type_p (struct type *type) const override
13417   {
13418     return ada_is_string_type (type);
13419   }
13420
13421   /* See language.h.  */
13422
13423   const char *struct_too_deep_ellipsis () const override
13424   { return "(...)"; }
13425
13426   /* See language.h.  */
13427
13428   bool c_style_arrays_p () const override
13429   { return false; }
13430
13431   /* See language.h.  */
13432
13433   bool store_sym_names_in_linkage_form_p () const override
13434   { return true; }
13435
13436   /* See language.h.  */
13437
13438   const struct lang_varobj_ops *varobj_ops () const override
13439   { return &ada_varobj_ops; }
13440
13441 protected:
13442   /* See language.h.  */
13443
13444   symbol_name_matcher_ftype *get_symbol_name_matcher_inner
13445         (const lookup_name_info &lookup_name) const override
13446   {
13447     return ada_get_symbol_name_matcher (lookup_name);
13448   }
13449 };
13450
13451 /* Single instance of the Ada language class.  */
13452
13453 static ada_language ada_language_defn;
13454
13455 /* Command-list for the "set/show ada" prefix command.  */
13456 static struct cmd_list_element *set_ada_list;
13457 static struct cmd_list_element *show_ada_list;
13458
13459 static void
13460 initialize_ada_catchpoint_ops (void)
13461 {
13462   struct breakpoint_ops *ops;
13463
13464   initialize_breakpoint_ops ();
13465
13466   ops = &catch_exception_breakpoint_ops;
13467   *ops = bkpt_breakpoint_ops;
13468   ops->allocate_location = allocate_location_exception;
13469   ops->re_set = re_set_exception;
13470   ops->check_status = check_status_exception;
13471   ops->print_it = print_it_exception;
13472   ops->print_one = print_one_exception;
13473   ops->print_mention = print_mention_exception;
13474   ops->print_recreate = print_recreate_exception;
13475
13476   ops = &catch_exception_unhandled_breakpoint_ops;
13477   *ops = bkpt_breakpoint_ops;
13478   ops->allocate_location = allocate_location_exception;
13479   ops->re_set = re_set_exception;
13480   ops->check_status = check_status_exception;
13481   ops->print_it = print_it_exception;
13482   ops->print_one = print_one_exception;
13483   ops->print_mention = print_mention_exception;
13484   ops->print_recreate = print_recreate_exception;
13485
13486   ops = &catch_assert_breakpoint_ops;
13487   *ops = bkpt_breakpoint_ops;
13488   ops->allocate_location = allocate_location_exception;
13489   ops->re_set = re_set_exception;
13490   ops->check_status = check_status_exception;
13491   ops->print_it = print_it_exception;
13492   ops->print_one = print_one_exception;
13493   ops->print_mention = print_mention_exception;
13494   ops->print_recreate = print_recreate_exception;
13495
13496   ops = &catch_handlers_breakpoint_ops;
13497   *ops = bkpt_breakpoint_ops;
13498   ops->allocate_location = allocate_location_exception;
13499   ops->re_set = re_set_exception;
13500   ops->check_status = check_status_exception;
13501   ops->print_it = print_it_exception;
13502   ops->print_one = print_one_exception;
13503   ops->print_mention = print_mention_exception;
13504   ops->print_recreate = print_recreate_exception;
13505 }
13506
13507 /* This module's 'new_objfile' observer.  */
13508
13509 static void
13510 ada_new_objfile_observer (struct objfile *objfile)
13511 {
13512   ada_clear_symbol_cache ();
13513 }
13514
13515 /* This module's 'free_objfile' observer.  */
13516
13517 static void
13518 ada_free_objfile_observer (struct objfile *objfile)
13519 {
13520   ada_clear_symbol_cache ();
13521 }
13522
13523 void _initialize_ada_language ();
13524 void
13525 _initialize_ada_language ()
13526 {
13527   initialize_ada_catchpoint_ops ();
13528
13529   add_basic_prefix_cmd ("ada", no_class,
13530                         _("Prefix command for changing Ada-specific settings."),
13531                         &set_ada_list, 0, &setlist);
13532
13533   add_show_prefix_cmd ("ada", no_class,
13534                        _("Generic command for showing Ada-specific settings."),
13535                        &show_ada_list, 0, &showlist);
13536
13537   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
13538                            &trust_pad_over_xvs, _("\
13539 Enable or disable an optimization trusting PAD types over XVS types."), _("\
13540 Show whether an optimization trusting PAD types over XVS types is activated."),
13541                            _("\
13542 This is related to the encoding used by the GNAT compiler.  The debugger\n\
13543 should normally trust the contents of PAD types, but certain older versions\n\
13544 of GNAT have a bug that sometimes causes the information in the PAD type\n\
13545 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
13546 work around this bug.  It is always safe to turn this option \"off\", but\n\
13547 this incurs a slight performance penalty, so it is recommended to NOT change\n\
13548 this option to \"off\" unless necessary."),
13549                             NULL, NULL, &set_ada_list, &show_ada_list);
13550
13551   add_setshow_boolean_cmd ("print-signatures", class_vars,
13552                            &print_signatures, _("\
13553 Enable or disable the output of formal and return types for functions in the \
13554 overloads selection menu."), _("\
13555 Show whether the output of formal and return types for functions in the \
13556 overloads selection menu is activated."),
13557                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
13558
13559   add_catch_command ("exception", _("\
13560 Catch Ada exceptions, when raised.\n\
13561 Usage: catch exception [ARG] [if CONDITION]\n\
13562 Without any argument, stop when any Ada exception is raised.\n\
13563 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
13564 being raised does not have a handler (and will therefore lead to the task's\n\
13565 termination).\n\
13566 Otherwise, the catchpoint only stops when the name of the exception being\n\
13567 raised is the same as ARG.\n\
13568 CONDITION is a boolean expression that is evaluated to see whether the\n\
13569 exception should cause a stop."),
13570                      catch_ada_exception_command,
13571                      catch_ada_completer,
13572                      CATCH_PERMANENT,
13573                      CATCH_TEMPORARY);
13574
13575   add_catch_command ("handlers", _("\
13576 Catch Ada exceptions, when handled.\n\
13577 Usage: catch handlers [ARG] [if CONDITION]\n\
13578 Without any argument, stop when any Ada exception is handled.\n\
13579 With an argument, catch only exceptions with the given name.\n\
13580 CONDITION is a boolean expression that is evaluated to see whether the\n\
13581 exception should cause a stop."),
13582                      catch_ada_handlers_command,
13583                      catch_ada_completer,
13584                      CATCH_PERMANENT,
13585                      CATCH_TEMPORARY);
13586   add_catch_command ("assert", _("\
13587 Catch failed Ada assertions, when raised.\n\
13588 Usage: catch assert [if CONDITION]\n\
13589 CONDITION is a boolean expression that is evaluated to see whether the\n\
13590 exception should cause a stop."),
13591                      catch_assert_command,
13592                      NULL,
13593                      CATCH_PERMANENT,
13594                      CATCH_TEMPORARY);
13595
13596   varsize_limit = 65536;
13597   add_setshow_uinteger_cmd ("varsize-limit", class_support,
13598                             &varsize_limit, _("\
13599 Set the maximum number of bytes allowed in a variable-size object."), _("\
13600 Show the maximum number of bytes allowed in a variable-size object."), _("\
13601 Attempts to access an object whose size is not a compile-time constant\n\
13602 and exceeds this limit will cause an error."),
13603                             NULL, NULL, &setlist, &showlist);
13604
13605   add_info ("exceptions", info_exceptions_command,
13606             _("\
13607 List all Ada exception names.\n\
13608 Usage: info exceptions [REGEXP]\n\
13609 If a regular expression is passed as an argument, only those matching\n\
13610 the regular expression are listed."));
13611
13612   add_basic_prefix_cmd ("ada", class_maintenance,
13613                         _("Set Ada maintenance-related variables."),
13614                         &maint_set_ada_cmdlist,
13615                         0/*allow-unknown*/, &maintenance_set_cmdlist);
13616
13617   add_show_prefix_cmd ("ada", class_maintenance,
13618                        _("Show Ada maintenance-related variables."),
13619                        &maint_show_ada_cmdlist,
13620                        0/*allow-unknown*/, &maintenance_show_cmdlist);
13621
13622   add_setshow_boolean_cmd
13623     ("ignore-descriptive-types", class_maintenance,
13624      &ada_ignore_descriptive_types_p,
13625      _("Set whether descriptive types generated by GNAT should be ignored."),
13626      _("Show whether descriptive types generated by GNAT should be ignored."),
13627      _("\
13628 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
13629 DWARF attribute."),
13630      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
13631
13632   decoded_names_store = htab_create_alloc (256, htab_hash_string,
13633                                            htab_eq_string,
13634                                            NULL, xcalloc, xfree);
13635
13636   /* The ada-lang observers.  */
13637   gdb::observers::new_objfile.attach (ada_new_objfile_observer, "ada-lang");
13638   gdb::observers::free_objfile.attach (ada_free_objfile_observer, "ada-lang");
13639   gdb::observers::inferior_exit.attach (ada_inferior_exit, "ada-lang");
13640 }
This page took 0.861756 seconds and 2 git commands to generate.