]> Git Repo - binutils.git/blob - gdb/ada-lang.c
gdb: remove TYPE_UNSIGNED
[binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2020 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
53 #include "value.h"
54 #include "mi/mi-common.h"
55 #include "arch-utils.h"
56 #include "cli/cli-utils.h"
57 #include "gdbsupport/function-view.h"
58 #include "gdbsupport/byte-vector.h"
59 #include <algorithm>
60
61 /* Define whether or not the C operator '/' truncates towards zero for
62    differently signed operands (truncation direction is undefined in C).
63    Copied from valarith.c.  */
64
65 #ifndef TRUNCATION_TOWARDS_ZERO
66 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
67 #endif
68
69 static struct type *desc_base_type (struct type *);
70
71 static struct type *desc_bounds_type (struct type *);
72
73 static struct value *desc_bounds (struct value *);
74
75 static int fat_pntr_bounds_bitpos (struct type *);
76
77 static int fat_pntr_bounds_bitsize (struct type *);
78
79 static struct type *desc_data_target_type (struct type *);
80
81 static struct value *desc_data (struct value *);
82
83 static int fat_pntr_data_bitpos (struct type *);
84
85 static int fat_pntr_data_bitsize (struct type *);
86
87 static struct value *desc_one_bound (struct value *, int, int);
88
89 static int desc_bound_bitpos (struct type *, int, int);
90
91 static int desc_bound_bitsize (struct type *, int, int);
92
93 static struct type *desc_index_type (struct type *, int);
94
95 static int desc_arity (struct type *);
96
97 static int ada_type_match (struct type *, struct type *, int);
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 (struct obstack *,
104                                    const struct block *,
105                                    const lookup_name_info &lookup_name,
106                                    domain_enum, struct objfile *);
107
108 static void ada_add_all_symbols (struct obstack *, const struct block *,
109                                  const lookup_name_info &lookup_name,
110                                  domain_enum, int, int *);
111
112 static int is_nonfunction (struct block_symbol *, int);
113
114 static void add_defn_to_vec (struct obstack *, struct symbol *,
115                              const struct block *);
116
117 static int num_defns_collected (struct obstack *);
118
119 static struct block_symbol *defns_collected (struct obstack *, int);
120
121 static struct value *resolve_subexp (expression_up *, int *, int,
122                                      struct type *, int,
123                                      innermost_block_tracker *);
124
125 static void replace_operator_with_call (expression_up *, int, int, int,
126                                         struct symbol *, const struct block *);
127
128 static int possible_user_operator_p (enum exp_opcode, struct value **);
129
130 static const char *ada_op_name (enum exp_opcode);
131
132 static const char *ada_decoded_op_name (enum exp_opcode);
133
134 static int numeric_type_p (struct type *);
135
136 static int integer_type_p (struct type *);
137
138 static int scalar_type_p (struct type *);
139
140 static int discrete_type_p (struct type *);
141
142 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
143                                                 int, int);
144
145 static struct value *evaluate_subexp_type (struct expression *, int *);
146
147 static struct type *ada_find_parallel_type_with_name (struct type *,
148                                                       const char *);
149
150 static int is_dynamic_field (struct type *, int);
151
152 static struct type *to_fixed_variant_branch_type (struct type *,
153                                                   const gdb_byte *,
154                                                   CORE_ADDR, struct value *);
155
156 static struct type *to_fixed_array_type (struct type *, struct value *, int);
157
158 static struct type *to_fixed_range_type (struct type *, struct value *);
159
160 static struct type *to_static_fixed_type (struct type *);
161 static struct type *static_unwrap_type (struct type *type);
162
163 static struct value *unwrap_value (struct value *);
164
165 static struct type *constrained_packed_array_type (struct type *, long *);
166
167 static struct type *decode_constrained_packed_array_type (struct type *);
168
169 static long decode_packed_array_bitsize (struct type *);
170
171 static struct value *decode_constrained_packed_array (struct value *);
172
173 static int ada_is_packed_array_type  (struct type *);
174
175 static int ada_is_unconstrained_packed_array_type (struct type *);
176
177 static struct value *value_subscript_packed (struct value *, int,
178                                              struct value **);
179
180 static struct value *coerce_unspec_val_to_type (struct value *,
181                                                 struct type *);
182
183 static int lesseq_defined_than (struct symbol *, struct symbol *);
184
185 static int equiv_types (struct type *, struct type *);
186
187 static int is_name_suffix (const char *);
188
189 static int advance_wild_match (const char **, const char *, int);
190
191 static bool wild_match (const char *name, const char *patn);
192
193 static struct value *ada_coerce_ref (struct value *);
194
195 static LONGEST pos_atr (struct value *);
196
197 static struct value *value_pos_atr (struct type *, struct value *);
198
199 static struct value *val_atr (struct type *, LONGEST);
200
201 static struct value *value_val_atr (struct type *, struct value *);
202
203 static struct symbol *standard_lookup (const char *, const struct block *,
204                                        domain_enum);
205
206 static struct value *ada_search_struct_field (const char *, struct value *, int,
207                                               struct type *);
208
209 static int find_struct_field (const char *, struct type *, int,
210                               struct type **, int *, int *, int *, int *);
211
212 static int ada_resolve_function (struct block_symbol *, int,
213                                  struct value **, int, const char *,
214                                  struct type *, int);
215
216 static int ada_is_direct_array_type (struct type *);
217
218 static struct value *ada_index_struct_field (int, struct value *, int,
219                                              struct type *);
220
221 static struct value *assign_aggregate (struct value *, struct value *, 
222                                        struct expression *,
223                                        int *, enum noside);
224
225 static void aggregate_assign_from_choices (struct value *, struct value *, 
226                                            struct expression *,
227                                            int *, LONGEST *, int *,
228                                            int, LONGEST, LONGEST);
229
230 static void aggregate_assign_positional (struct value *, struct value *,
231                                          struct expression *,
232                                          int *, LONGEST *, int *, int,
233                                          LONGEST, LONGEST);
234
235
236 static void aggregate_assign_others (struct value *, struct value *,
237                                      struct expression *,
238                                      int *, LONGEST *, int, LONGEST, LONGEST);
239
240
241 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
242
243
244 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
245                                           int *, enum noside);
246
247 static void ada_forward_operator_length (struct expression *, int, int *,
248                                          int *);
249
250 static struct type *ada_find_any_type (const char *name);
251
252 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
253   (const lookup_name_info &lookup_name);
254
255 \f
256
257 /* The result of a symbol lookup to be stored in our symbol cache.  */
258
259 struct cache_entry
260 {
261   /* The name used to perform the lookup.  */
262   const char *name;
263   /* The namespace used during the lookup.  */
264   domain_enum domain;
265   /* The symbol returned by the lookup, or NULL if no matching symbol
266      was found.  */
267   struct symbol *sym;
268   /* The block where the symbol was found, or NULL if no matching
269      symbol was found.  */
270   const struct block *block;
271   /* A pointer to the next entry with the same hash.  */
272   struct cache_entry *next;
273 };
274
275 /* The Ada symbol cache, used to store the result of Ada-mode symbol
276    lookups in the course of executing the user's commands.
277
278    The cache is implemented using a simple, fixed-sized hash.
279    The size is fixed on the grounds that there are not likely to be
280    all that many symbols looked up during any given session, regardless
281    of the size of the symbol table.  If we decide to go to a resizable
282    table, let's just use the stuff from libiberty instead.  */
283
284 #define HASH_SIZE 1009
285
286 struct ada_symbol_cache
287 {
288   /* An obstack used to store the entries in our cache.  */
289   struct obstack cache_space;
290
291   /* The root of the hash table used to implement our symbol cache.  */
292   struct cache_entry *root[HASH_SIZE];
293 };
294
295 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
296
297 /* Maximum-sized dynamic type.  */
298 static unsigned int varsize_limit;
299
300 static const char ada_completer_word_break_characters[] =
301 #ifdef VMS
302   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
303 #else
304   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
305 #endif
306
307 /* The name of the symbol to use to get the name of the main subprogram.  */
308 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
309   = "__gnat_ada_main_program_name";
310
311 /* Limit on the number of warnings to raise per expression evaluation.  */
312 static int warning_limit = 2;
313
314 /* Number of warning messages issued; reset to 0 by cleanups after
315    expression evaluation.  */
316 static int warnings_issued = 0;
317
318 static const char *known_runtime_file_name_patterns[] = {
319   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
320 };
321
322 static const char *known_auxiliary_function_name_patterns[] = {
323   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
324 };
325
326 /* Maintenance-related settings for this module.  */
327
328 static struct cmd_list_element *maint_set_ada_cmdlist;
329 static struct cmd_list_element *maint_show_ada_cmdlist;
330
331 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
332
333 static bool ada_ignore_descriptive_types_p = false;
334
335                         /* Inferior-specific data.  */
336
337 /* Per-inferior data for this module.  */
338
339 struct ada_inferior_data
340 {
341   /* The ada__tags__type_specific_data type, which is used when decoding
342      tagged types.  With older versions of GNAT, this type was directly
343      accessible through a component ("tsd") in the object tag.  But this
344      is no longer the case, so we cache it for each inferior.  */
345   struct type *tsd_type = nullptr;
346
347   /* The exception_support_info data.  This data is used to determine
348      how to implement support for Ada exception catchpoints in a given
349      inferior.  */
350   const struct exception_support_info *exception_info = nullptr;
351 };
352
353 /* Our key to this module's inferior data.  */
354 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
355
356 /* Return our inferior data for the given inferior (INF).
357
358    This function always returns a valid pointer to an allocated
359    ada_inferior_data structure.  If INF's inferior data has not
360    been previously set, this functions creates a new one with all
361    fields set to zero, sets INF's inferior to it, and then returns
362    a pointer to that newly allocated ada_inferior_data.  */
363
364 static struct ada_inferior_data *
365 get_ada_inferior_data (struct inferior *inf)
366 {
367   struct ada_inferior_data *data;
368
369   data = ada_inferior_data.get (inf);
370   if (data == NULL)
371     data = ada_inferior_data.emplace (inf);
372
373   return data;
374 }
375
376 /* Perform all necessary cleanups regarding our module's inferior data
377    that is required after the inferior INF just exited.  */
378
379 static void
380 ada_inferior_exit (struct inferior *inf)
381 {
382   ada_inferior_data.clear (inf);
383 }
384
385
386                         /* program-space-specific data.  */
387
388 /* This module's per-program-space data.  */
389 struct ada_pspace_data
390 {
391   ~ada_pspace_data ()
392   {
393     if (sym_cache != NULL)
394       ada_free_symbol_cache (sym_cache);
395   }
396
397   /* The Ada symbol cache.  */
398   struct ada_symbol_cache *sym_cache = nullptr;
399 };
400
401 /* Key to our per-program-space data.  */
402 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
403
404 /* Return this module's data for the given program space (PSPACE).
405    If not is found, add a zero'ed one now.
406
407    This function always returns a valid object.  */
408
409 static struct ada_pspace_data *
410 get_ada_pspace_data (struct program_space *pspace)
411 {
412   struct ada_pspace_data *data;
413
414   data = ada_pspace_data_handle.get (pspace);
415   if (data == NULL)
416     data = ada_pspace_data_handle.emplace (pspace);
417
418   return data;
419 }
420
421                         /* Utilities */
422
423 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
424    all typedef layers have been peeled.  Otherwise, return TYPE.
425
426    Normally, we really expect a typedef type to only have 1 typedef layer.
427    In other words, we really expect the target type of a typedef type to be
428    a non-typedef type.  This is particularly true for Ada units, because
429    the language does not have a typedef vs not-typedef distinction.
430    In that respect, the Ada compiler has been trying to eliminate as many
431    typedef definitions in the debugging information, since they generally
432    do not bring any extra information (we still use typedef under certain
433    circumstances related mostly to the GNAT encoding).
434
435    Unfortunately, we have seen situations where the debugging information
436    generated by the compiler leads to such multiple typedef layers.  For
437    instance, consider the following example with stabs:
438
439      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
440      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
441
442    This is an error in the debugging information which causes type
443    pck__float_array___XUP to be defined twice, and the second time,
444    it is defined as a typedef of a typedef.
445
446    This is on the fringe of legality as far as debugging information is
447    concerned, and certainly unexpected.  But it is easy to handle these
448    situations correctly, so we can afford to be lenient in this case.  */
449
450 static struct type *
451 ada_typedef_target_type (struct type *type)
452 {
453   while (type->code () == TYPE_CODE_TYPEDEF)
454     type = TYPE_TARGET_TYPE (type);
455   return type;
456 }
457
458 /* Given DECODED_NAME a string holding a symbol name in its
459    decoded form (ie using the Ada dotted notation), returns
460    its unqualified name.  */
461
462 static const char *
463 ada_unqualified_name (const char *decoded_name)
464 {
465   const char *result;
466   
467   /* If the decoded name starts with '<', it means that the encoded
468      name does not follow standard naming conventions, and thus that
469      it is not your typical Ada symbol name.  Trying to unqualify it
470      is therefore pointless and possibly erroneous.  */
471   if (decoded_name[0] == '<')
472     return decoded_name;
473
474   result = strrchr (decoded_name, '.');
475   if (result != NULL)
476     result++;                   /* Skip the dot...  */
477   else
478     result = decoded_name;
479
480   return result;
481 }
482
483 /* Return a string starting with '<', followed by STR, and '>'.  */
484
485 static std::string
486 add_angle_brackets (const char *str)
487 {
488   return string_printf ("<%s>", str);
489 }
490
491 /* Assuming V points to an array of S objects,  make sure that it contains at
492    least M objects, updating V and S as necessary.  */
493
494 #define GROW_VECT(v, s, m)                                    \
495    if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
496
497 /* Assuming VECT points to an array of *SIZE objects of size
498    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
499    updating *SIZE as necessary and returning the (new) array.  */
500
501 static void *
502 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
503 {
504   if (*size < min_size)
505     {
506       *size *= 2;
507       if (*size < min_size)
508         *size = min_size;
509       vect = xrealloc (vect, *size * element_size);
510     }
511   return vect;
512 }
513
514 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
515    suffix of FIELD_NAME beginning "___".  */
516
517 static int
518 field_name_match (const char *field_name, const char *target)
519 {
520   int len = strlen (target);
521
522   return
523     (strncmp (field_name, target, len) == 0
524      && (field_name[len] == '\0'
525          || (startswith (field_name + len, "___")
526              && strcmp (field_name + strlen (field_name) - 6,
527                         "___XVN") != 0)));
528 }
529
530
531 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
532    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
533    and return its index.  This function also handles fields whose name
534    have ___ suffixes because the compiler sometimes alters their name
535    by adding such a suffix to represent fields with certain constraints.
536    If the field could not be found, return a negative number if
537    MAYBE_MISSING is set.  Otherwise raise an error.  */
538
539 int
540 ada_get_field_index (const struct type *type, const char *field_name,
541                      int maybe_missing)
542 {
543   int fieldno;
544   struct type *struct_type = check_typedef ((struct type *) type);
545
546   for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
547     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
548       return fieldno;
549
550   if (!maybe_missing)
551     error (_("Unable to find field %s in struct %s.  Aborting"),
552            field_name, struct_type->name ());
553
554   return -1;
555 }
556
557 /* The length of the prefix of NAME prior to any "___" suffix.  */
558
559 int
560 ada_name_prefix_len (const char *name)
561 {
562   if (name == NULL)
563     return 0;
564   else
565     {
566       const char *p = strstr (name, "___");
567
568       if (p == NULL)
569         return strlen (name);
570       else
571         return p - name;
572     }
573 }
574
575 /* Return non-zero if SUFFIX is a suffix of STR.
576    Return zero if STR is null.  */
577
578 static int
579 is_suffix (const char *str, const char *suffix)
580 {
581   int len1, len2;
582
583   if (str == NULL)
584     return 0;
585   len1 = strlen (str);
586   len2 = strlen (suffix);
587   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
588 }
589
590 /* The contents of value VAL, treated as a value of type TYPE.  The
591    result is an lval in memory if VAL is.  */
592
593 static struct value *
594 coerce_unspec_val_to_type (struct value *val, struct type *type)
595 {
596   type = ada_check_typedef (type);
597   if (value_type (val) == type)
598     return val;
599   else
600     {
601       struct value *result;
602
603       /* Make sure that the object size is not unreasonable before
604          trying to allocate some memory for it.  */
605       ada_ensure_varsize_limit (type);
606
607       if (value_lazy (val)
608           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
609         result = allocate_value_lazy (type);
610       else
611         {
612           result = allocate_value (type);
613           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
614         }
615       set_value_component_location (result, val);
616       set_value_bitsize (result, value_bitsize (val));
617       set_value_bitpos (result, value_bitpos (val));
618       if (VALUE_LVAL (result) == lval_memory)
619         set_value_address (result, value_address (val));
620       return result;
621     }
622 }
623
624 static const gdb_byte *
625 cond_offset_host (const gdb_byte *valaddr, long offset)
626 {
627   if (valaddr == NULL)
628     return NULL;
629   else
630     return valaddr + offset;
631 }
632
633 static CORE_ADDR
634 cond_offset_target (CORE_ADDR address, long offset)
635 {
636   if (address == 0)
637     return 0;
638   else
639     return address + offset;
640 }
641
642 /* Issue a warning (as for the definition of warning in utils.c, but
643    with exactly one argument rather than ...), unless the limit on the
644    number of warnings has passed during the evaluation of the current
645    expression.  */
646
647 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
648    provided by "complaint".  */
649 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
650
651 static void
652 lim_warning (const char *format, ...)
653 {
654   va_list args;
655
656   va_start (args, format);
657   warnings_issued += 1;
658   if (warnings_issued <= warning_limit)
659     vwarning (format, args);
660
661   va_end (args);
662 }
663
664 /* Issue an error if the size of an object of type T is unreasonable,
665    i.e. if it would be a bad idea to allocate a value of this type in
666    GDB.  */
667
668 void
669 ada_ensure_varsize_limit (const struct type *type)
670 {
671   if (TYPE_LENGTH (type) > varsize_limit)
672     error (_("object size is larger than varsize-limit"));
673 }
674
675 /* Maximum value of a SIZE-byte signed integer type.  */
676 static LONGEST
677 max_of_size (int size)
678 {
679   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
680
681   return top_bit | (top_bit - 1);
682 }
683
684 /* Minimum value of a SIZE-byte signed integer type.  */
685 static LONGEST
686 min_of_size (int size)
687 {
688   return -max_of_size (size) - 1;
689 }
690
691 /* Maximum value of a SIZE-byte unsigned integer type.  */
692 static ULONGEST
693 umax_of_size (int size)
694 {
695   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
696
697   return top_bit | (top_bit - 1);
698 }
699
700 /* Maximum value of integral type T, as a signed quantity.  */
701 static LONGEST
702 max_of_type (struct type *t)
703 {
704   if (t->is_unsigned ())
705     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
706   else
707     return max_of_size (TYPE_LENGTH (t));
708 }
709
710 /* Minimum value of integral type T, as a signed quantity.  */
711 static LONGEST
712 min_of_type (struct type *t)
713 {
714   if (t->is_unsigned ())
715     return 0;
716   else
717     return min_of_size (TYPE_LENGTH (t));
718 }
719
720 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
721 LONGEST
722 ada_discrete_type_high_bound (struct type *type)
723 {
724   type = resolve_dynamic_type (type, {}, 0);
725   switch (type->code ())
726     {
727     case TYPE_CODE_RANGE:
728       {
729         const dynamic_prop &high = type->bounds ()->high;
730
731         if (high.kind () == PROP_CONST)
732           return high.const_val ();
733         else
734           {
735             gdb_assert (high.kind () == PROP_UNDEFINED);
736
737             /* This happens when trying to evaluate a type's dynamic bound
738                without a live target.  There is nothing relevant for us to
739                return here, so return 0.  */
740             return 0;
741           }
742       }
743     case TYPE_CODE_ENUM:
744       return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
745     case TYPE_CODE_BOOL:
746       return 1;
747     case TYPE_CODE_CHAR:
748     case TYPE_CODE_INT:
749       return max_of_type (type);
750     default:
751       error (_("Unexpected type in ada_discrete_type_high_bound."));
752     }
753 }
754
755 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
756 LONGEST
757 ada_discrete_type_low_bound (struct type *type)
758 {
759   type = resolve_dynamic_type (type, {}, 0);
760   switch (type->code ())
761     {
762     case TYPE_CODE_RANGE:
763       {
764         const dynamic_prop &low = type->bounds ()->low;
765
766         if (low.kind () == PROP_CONST)
767           return low.const_val ();
768         else
769           {
770             gdb_assert (low.kind () == PROP_UNDEFINED);
771
772             /* This happens when trying to evaluate a type's dynamic bound
773                without a live target.  There is nothing relevant for us to
774                return here, so return 0.  */
775             return 0;
776           }
777       }
778     case TYPE_CODE_ENUM:
779       return TYPE_FIELD_ENUMVAL (type, 0);
780     case TYPE_CODE_BOOL:
781       return 0;
782     case TYPE_CODE_CHAR:
783     case TYPE_CODE_INT:
784       return min_of_type (type);
785     default:
786       error (_("Unexpected type in ada_discrete_type_low_bound."));
787     }
788 }
789
790 /* The identity on non-range types.  For range types, the underlying
791    non-range scalar type.  */
792
793 static struct type *
794 get_base_type (struct type *type)
795 {
796   while (type != NULL && type->code () == TYPE_CODE_RANGE)
797     {
798       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
799         return type;
800       type = TYPE_TARGET_TYPE (type);
801     }
802   return type;
803 }
804
805 /* Return a decoded version of the given VALUE.  This means returning
806    a value whose type is obtained by applying all the GNAT-specific
807    encodings, making the resulting type a static but standard description
808    of the initial type.  */
809
810 struct value *
811 ada_get_decoded_value (struct value *value)
812 {
813   struct type *type = ada_check_typedef (value_type (value));
814
815   if (ada_is_array_descriptor_type (type)
816       || (ada_is_constrained_packed_array_type (type)
817           && type->code () != TYPE_CODE_PTR))
818     {
819       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
820         value = ada_coerce_to_simple_array_ptr (value);
821       else
822         value = ada_coerce_to_simple_array (value);
823     }
824   else
825     value = ada_to_fixed_value (value);
826
827   return value;
828 }
829
830 /* Same as ada_get_decoded_value, but with the given TYPE.
831    Because there is no associated actual value for this type,
832    the resulting type might be a best-effort approximation in
833    the case of dynamic types.  */
834
835 struct type *
836 ada_get_decoded_type (struct type *type)
837 {
838   type = to_static_fixed_type (type);
839   if (ada_is_constrained_packed_array_type (type))
840     type = ada_coerce_to_simple_array_type (type);
841   return type;
842 }
843
844 \f
845
846                                 /* Language Selection */
847
848 /* If the main program is in Ada, return language_ada, otherwise return LANG
849    (the main program is in Ada iif the adainit symbol is found).  */
850
851 static enum language
852 ada_update_initial_language (enum language lang)
853 {
854   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
855     return language_ada;
856
857   return lang;
858 }
859
860 /* If the main procedure is written in Ada, then return its name.
861    The result is good until the next call.  Return NULL if the main
862    procedure doesn't appear to be in Ada.  */
863
864 char *
865 ada_main_name (void)
866 {
867   struct bound_minimal_symbol msym;
868   static gdb::unique_xmalloc_ptr<char> main_program_name;
869
870   /* For Ada, the name of the main procedure is stored in a specific
871      string constant, generated by the binder.  Look for that symbol,
872      extract its address, and then read that string.  If we didn't find
873      that string, then most probably the main procedure is not written
874      in Ada.  */
875   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
876
877   if (msym.minsym != NULL)
878     {
879       CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
880       if (main_program_name_addr == 0)
881         error (_("Invalid address for Ada main program name."));
882
883       main_program_name = target_read_string (main_program_name_addr, 1024);
884       return main_program_name.get ();
885     }
886
887   /* The main procedure doesn't seem to be in Ada.  */
888   return NULL;
889 }
890 \f
891                                 /* Symbols */
892
893 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
894    of NULLs.  */
895
896 const struct ada_opname_map ada_opname_table[] = {
897   {"Oadd", "\"+\"", BINOP_ADD},
898   {"Osubtract", "\"-\"", BINOP_SUB},
899   {"Omultiply", "\"*\"", BINOP_MUL},
900   {"Odivide", "\"/\"", BINOP_DIV},
901   {"Omod", "\"mod\"", BINOP_MOD},
902   {"Orem", "\"rem\"", BINOP_REM},
903   {"Oexpon", "\"**\"", BINOP_EXP},
904   {"Olt", "\"<\"", BINOP_LESS},
905   {"Ole", "\"<=\"", BINOP_LEQ},
906   {"Ogt", "\">\"", BINOP_GTR},
907   {"Oge", "\">=\"", BINOP_GEQ},
908   {"Oeq", "\"=\"", BINOP_EQUAL},
909   {"One", "\"/=\"", BINOP_NOTEQUAL},
910   {"Oand", "\"and\"", BINOP_BITWISE_AND},
911   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
912   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
913   {"Oconcat", "\"&\"", BINOP_CONCAT},
914   {"Oabs", "\"abs\"", UNOP_ABS},
915   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
916   {"Oadd", "\"+\"", UNOP_PLUS},
917   {"Osubtract", "\"-\"", UNOP_NEG},
918   {NULL, NULL}
919 };
920
921 /* The "encoded" form of DECODED, according to GNAT conventions.  The
922    result is valid until the next call to ada_encode.  If
923    THROW_ERRORS, throw an error if invalid operator name is found.
924    Otherwise, return NULL in that case.  */
925
926 static char *
927 ada_encode_1 (const char *decoded, bool throw_errors)
928 {
929   static char *encoding_buffer = NULL;
930   static size_t encoding_buffer_size = 0;
931   const char *p;
932   int k;
933
934   if (decoded == NULL)
935     return NULL;
936
937   GROW_VECT (encoding_buffer, encoding_buffer_size,
938              2 * strlen (decoded) + 10);
939
940   k = 0;
941   for (p = decoded; *p != '\0'; p += 1)
942     {
943       if (*p == '.')
944         {
945           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
946           k += 2;
947         }
948       else if (*p == '"')
949         {
950           const struct ada_opname_map *mapping;
951
952           for (mapping = ada_opname_table;
953                mapping->encoded != NULL
954                && !startswith (p, mapping->decoded); mapping += 1)
955             ;
956           if (mapping->encoded == NULL)
957             {
958               if (throw_errors)
959                 error (_("invalid Ada operator name: %s"), p);
960               else
961                 return NULL;
962             }
963           strcpy (encoding_buffer + k, mapping->encoded);
964           k += strlen (mapping->encoded);
965           break;
966         }
967       else
968         {
969           encoding_buffer[k] = *p;
970           k += 1;
971         }
972     }
973
974   encoding_buffer[k] = '\0';
975   return encoding_buffer;
976 }
977
978 /* The "encoded" form of DECODED, according to GNAT conventions.
979    The result is valid until the next call to ada_encode.  */
980
981 char *
982 ada_encode (const char *decoded)
983 {
984   return ada_encode_1 (decoded, true);
985 }
986
987 /* Return NAME folded to lower case, or, if surrounded by single
988    quotes, unfolded, but with the quotes stripped away.  Result good
989    to next call.  */
990
991 static char *
992 ada_fold_name (gdb::string_view name)
993 {
994   static char *fold_buffer = NULL;
995   static size_t fold_buffer_size = 0;
996
997   int len = name.size ();
998   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
999
1000   if (name[0] == '\'')
1001     {
1002       strncpy (fold_buffer, name.data () + 1, len - 2);
1003       fold_buffer[len - 2] = '\000';
1004     }
1005   else
1006     {
1007       int i;
1008
1009       for (i = 0; i <= len; i += 1)
1010         fold_buffer[i] = tolower (name[i]);
1011     }
1012
1013   return fold_buffer;
1014 }
1015
1016 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1017
1018 static int
1019 is_lower_alphanum (const char c)
1020 {
1021   return (isdigit (c) || (isalpha (c) && islower (c)));
1022 }
1023
1024 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1025    This function saves in LEN the length of that same symbol name but
1026    without either of these suffixes:
1027      . .{DIGIT}+
1028      . ${DIGIT}+
1029      . ___{DIGIT}+
1030      . __{DIGIT}+.
1031
1032    These are suffixes introduced by the compiler for entities such as
1033    nested subprogram for instance, in order to avoid name clashes.
1034    They do not serve any purpose for the debugger.  */
1035
1036 static void
1037 ada_remove_trailing_digits (const char *encoded, int *len)
1038 {
1039   if (*len > 1 && isdigit (encoded[*len - 1]))
1040     {
1041       int i = *len - 2;
1042
1043       while (i > 0 && isdigit (encoded[i]))
1044         i--;
1045       if (i >= 0 && encoded[i] == '.')
1046         *len = i;
1047       else if (i >= 0 && encoded[i] == '$')
1048         *len = i;
1049       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1050         *len = i - 2;
1051       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1052         *len = i - 1;
1053     }
1054 }
1055
1056 /* Remove the suffix introduced by the compiler for protected object
1057    subprograms.  */
1058
1059 static void
1060 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1061 {
1062   /* Remove trailing N.  */
1063
1064   /* Protected entry subprograms are broken into two
1065      separate subprograms: The first one is unprotected, and has
1066      a 'N' suffix; the second is the protected version, and has
1067      the 'P' suffix.  The second calls the first one after handling
1068      the protection.  Since the P subprograms are internally generated,
1069      we leave these names undecoded, giving the user a clue that this
1070      entity is internal.  */
1071
1072   if (*len > 1
1073       && encoded[*len - 1] == 'N'
1074       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1075     *len = *len - 1;
1076 }
1077
1078 /* If ENCODED follows the GNAT entity encoding conventions, then return
1079    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1080    replaced by ENCODED.  */
1081
1082 std::string
1083 ada_decode (const char *encoded)
1084 {
1085   int i, j;
1086   int len0;
1087   const char *p;
1088   int at_start_name;
1089   std::string decoded;
1090
1091   /* With function descriptors on PPC64, the value of a symbol named
1092      ".FN", if it exists, is the entry point of the function "FN".  */
1093   if (encoded[0] == '.')
1094     encoded += 1;
1095
1096   /* The name of the Ada main procedure starts with "_ada_".
1097      This prefix is not part of the decoded name, so skip this part
1098      if we see this prefix.  */
1099   if (startswith (encoded, "_ada_"))
1100     encoded += 5;
1101
1102   /* If the name starts with '_', then it is not a properly encoded
1103      name, so do not attempt to decode it.  Similarly, if the name
1104      starts with '<', the name should not be decoded.  */
1105   if (encoded[0] == '_' || encoded[0] == '<')
1106     goto Suppress;
1107
1108   len0 = strlen (encoded);
1109
1110   ada_remove_trailing_digits (encoded, &len0);
1111   ada_remove_po_subprogram_suffix (encoded, &len0);
1112
1113   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1114      the suffix is located before the current "end" of ENCODED.  We want
1115      to avoid re-matching parts of ENCODED that have previously been
1116      marked as discarded (by decrementing LEN0).  */
1117   p = strstr (encoded, "___");
1118   if (p != NULL && p - encoded < len0 - 3)
1119     {
1120       if (p[3] == 'X')
1121         len0 = p - encoded;
1122       else
1123         goto Suppress;
1124     }
1125
1126   /* Remove any trailing TKB suffix.  It tells us that this symbol
1127      is for the body of a task, but that information does not actually
1128      appear in the decoded name.  */
1129
1130   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1131     len0 -= 3;
1132
1133   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1134      from the TKB suffix because it is used for non-anonymous task
1135      bodies.  */
1136
1137   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1138     len0 -= 2;
1139
1140   /* Remove trailing "B" suffixes.  */
1141   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1142
1143   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1144     len0 -= 1;
1145
1146   /* Make decoded big enough for possible expansion by operator name.  */
1147
1148   decoded.resize (2 * len0 + 1, 'X');
1149
1150   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1151
1152   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1153     {
1154       i = len0 - 2;
1155       while ((i >= 0 && isdigit (encoded[i]))
1156              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1157         i -= 1;
1158       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1159         len0 = i - 1;
1160       else if (encoded[i] == '$')
1161         len0 = i;
1162     }
1163
1164   /* The first few characters that are not alphabetic are not part
1165      of any encoding we use, so we can copy them over verbatim.  */
1166
1167   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1168     decoded[j] = encoded[i];
1169
1170   at_start_name = 1;
1171   while (i < len0)
1172     {
1173       /* Is this a symbol function?  */
1174       if (at_start_name && encoded[i] == 'O')
1175         {
1176           int k;
1177
1178           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1179             {
1180               int op_len = strlen (ada_opname_table[k].encoded);
1181               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1182                             op_len - 1) == 0)
1183                   && !isalnum (encoded[i + op_len]))
1184                 {
1185                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1186                   at_start_name = 0;
1187                   i += op_len;
1188                   j += strlen (ada_opname_table[k].decoded);
1189                   break;
1190                 }
1191             }
1192           if (ada_opname_table[k].encoded != NULL)
1193             continue;
1194         }
1195       at_start_name = 0;
1196
1197       /* Replace "TK__" with "__", which will eventually be translated
1198          into "." (just below).  */
1199
1200       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1201         i += 2;
1202
1203       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1204          be translated into "." (just below).  These are internal names
1205          generated for anonymous blocks inside which our symbol is nested.  */
1206
1207       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1208           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1209           && isdigit (encoded [i+4]))
1210         {
1211           int k = i + 5;
1212           
1213           while (k < len0 && isdigit (encoded[k]))
1214             k++;  /* Skip any extra digit.  */
1215
1216           /* Double-check that the "__B_{DIGITS}+" sequence we found
1217              is indeed followed by "__".  */
1218           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1219             i = k;
1220         }
1221
1222       /* Remove _E{DIGITS}+[sb] */
1223
1224       /* Just as for protected object subprograms, there are 2 categories
1225          of subprograms created by the compiler for each entry.  The first
1226          one implements the actual entry code, and has a suffix following
1227          the convention above; the second one implements the barrier and
1228          uses the same convention as above, except that the 'E' is replaced
1229          by a 'B'.
1230
1231          Just as above, we do not decode the name of barrier functions
1232          to give the user a clue that the code he is debugging has been
1233          internally generated.  */
1234
1235       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1236           && isdigit (encoded[i+2]))
1237         {
1238           int k = i + 3;
1239
1240           while (k < len0 && isdigit (encoded[k]))
1241             k++;
1242
1243           if (k < len0
1244               && (encoded[k] == 'b' || encoded[k] == 's'))
1245             {
1246               k++;
1247               /* Just as an extra precaution, make sure that if this
1248                  suffix is followed by anything else, it is a '_'.
1249                  Otherwise, we matched this sequence by accident.  */
1250               if (k == len0
1251                   || (k < len0 && encoded[k] == '_'))
1252                 i = k;
1253             }
1254         }
1255
1256       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1257          the GNAT front-end in protected object subprograms.  */
1258
1259       if (i < len0 + 3
1260           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1261         {
1262           /* Backtrack a bit up until we reach either the begining of
1263              the encoded name, or "__".  Make sure that we only find
1264              digits or lowercase characters.  */
1265           const char *ptr = encoded + i - 1;
1266
1267           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1268             ptr--;
1269           if (ptr < encoded
1270               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1271             i++;
1272         }
1273
1274       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1275         {
1276           /* This is a X[bn]* sequence not separated from the previous
1277              part of the name with a non-alpha-numeric character (in other
1278              words, immediately following an alpha-numeric character), then
1279              verify that it is placed at the end of the encoded name.  If
1280              not, then the encoding is not valid and we should abort the
1281              decoding.  Otherwise, just skip it, it is used in body-nested
1282              package names.  */
1283           do
1284             i += 1;
1285           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1286           if (i < len0)
1287             goto Suppress;
1288         }
1289       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1290         {
1291          /* Replace '__' by '.'.  */
1292           decoded[j] = '.';
1293           at_start_name = 1;
1294           i += 2;
1295           j += 1;
1296         }
1297       else
1298         {
1299           /* It's a character part of the decoded name, so just copy it
1300              over.  */
1301           decoded[j] = encoded[i];
1302           i += 1;
1303           j += 1;
1304         }
1305     }
1306   decoded.resize (j);
1307
1308   /* Decoded names should never contain any uppercase character.
1309      Double-check this, and abort the decoding if we find one.  */
1310
1311   for (i = 0; i < decoded.length(); ++i)
1312     if (isupper (decoded[i]) || decoded[i] == ' ')
1313       goto Suppress;
1314
1315   return decoded;
1316
1317 Suppress:
1318   if (encoded[0] == '<')
1319     decoded = encoded;
1320   else
1321     decoded = '<' + std::string(encoded) + '>';
1322   return decoded;
1323
1324 }
1325
1326 /* Table for keeping permanent unique copies of decoded names.  Once
1327    allocated, names in this table are never released.  While this is a
1328    storage leak, it should not be significant unless there are massive
1329    changes in the set of decoded names in successive versions of a 
1330    symbol table loaded during a single session.  */
1331 static struct htab *decoded_names_store;
1332
1333 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1334    in the language-specific part of GSYMBOL, if it has not been
1335    previously computed.  Tries to save the decoded name in the same
1336    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1337    in any case, the decoded symbol has a lifetime at least that of
1338    GSYMBOL).
1339    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1340    const, but nevertheless modified to a semantically equivalent form
1341    when a decoded name is cached in it.  */
1342
1343 const char *
1344 ada_decode_symbol (const struct general_symbol_info *arg)
1345 {
1346   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1347   const char **resultp =
1348     &gsymbol->language_specific.demangled_name;
1349
1350   if (!gsymbol->ada_mangled)
1351     {
1352       std::string decoded = ada_decode (gsymbol->linkage_name ());
1353       struct obstack *obstack = gsymbol->language_specific.obstack;
1354
1355       gsymbol->ada_mangled = 1;
1356
1357       if (obstack != NULL)
1358         *resultp = obstack_strdup (obstack, decoded.c_str ());
1359       else
1360         {
1361           /* Sometimes, we can't find a corresponding objfile, in
1362              which case, we put the result on the heap.  Since we only
1363              decode when needed, we hope this usually does not cause a
1364              significant memory leak (FIXME).  */
1365
1366           char **slot = (char **) htab_find_slot (decoded_names_store,
1367                                                   decoded.c_str (), INSERT);
1368
1369           if (*slot == NULL)
1370             *slot = xstrdup (decoded.c_str ());
1371           *resultp = *slot;
1372         }
1373     }
1374
1375   return *resultp;
1376 }
1377
1378 static char *
1379 ada_la_decode (const char *encoded, int options)
1380 {
1381   return xstrdup (ada_decode (encoded).c_str ());
1382 }
1383
1384 \f
1385
1386                                 /* Arrays */
1387
1388 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1389    generated by the GNAT compiler to describe the index type used
1390    for each dimension of an array, check whether it follows the latest
1391    known encoding.  If not, fix it up to conform to the latest encoding.
1392    Otherwise, do nothing.  This function also does nothing if
1393    INDEX_DESC_TYPE is NULL.
1394
1395    The GNAT encoding used to describe the array index type evolved a bit.
1396    Initially, the information would be provided through the name of each
1397    field of the structure type only, while the type of these fields was
1398    described as unspecified and irrelevant.  The debugger was then expected
1399    to perform a global type lookup using the name of that field in order
1400    to get access to the full index type description.  Because these global
1401    lookups can be very expensive, the encoding was later enhanced to make
1402    the global lookup unnecessary by defining the field type as being
1403    the full index type description.
1404
1405    The purpose of this routine is to allow us to support older versions
1406    of the compiler by detecting the use of the older encoding, and by
1407    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1408    we essentially replace each field's meaningless type by the associated
1409    index subtype).  */
1410
1411 void
1412 ada_fixup_array_indexes_type (struct type *index_desc_type)
1413 {
1414   int i;
1415
1416   if (index_desc_type == NULL)
1417     return;
1418   gdb_assert (index_desc_type->num_fields () > 0);
1419
1420   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1421      to check one field only, no need to check them all).  If not, return
1422      now.
1423
1424      If our INDEX_DESC_TYPE was generated using the older encoding,
1425      the field type should be a meaningless integer type whose name
1426      is not equal to the field name.  */
1427   if (index_desc_type->field (0).type ()->name () != NULL
1428       && strcmp (index_desc_type->field (0).type ()->name (),
1429                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1430     return;
1431
1432   /* Fixup each field of INDEX_DESC_TYPE.  */
1433   for (i = 0; i < index_desc_type->num_fields (); i++)
1434    {
1435      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1436      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1437
1438      if (raw_type)
1439        index_desc_type->field (i).set_type (raw_type);
1440    }
1441 }
1442
1443 /* The desc_* routines return primitive portions of array descriptors
1444    (fat pointers).  */
1445
1446 /* The descriptor or array type, if any, indicated by TYPE; removes
1447    level of indirection, if needed.  */
1448
1449 static struct type *
1450 desc_base_type (struct type *type)
1451 {
1452   if (type == NULL)
1453     return NULL;
1454   type = ada_check_typedef (type);
1455   if (type->code () == TYPE_CODE_TYPEDEF)
1456     type = ada_typedef_target_type (type);
1457
1458   if (type != NULL
1459       && (type->code () == TYPE_CODE_PTR
1460           || type->code () == TYPE_CODE_REF))
1461     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1462   else
1463     return type;
1464 }
1465
1466 /* True iff TYPE indicates a "thin" array pointer type.  */
1467
1468 static int
1469 is_thin_pntr (struct type *type)
1470 {
1471   return
1472     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1473     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1474 }
1475
1476 /* The descriptor type for thin pointer type TYPE.  */
1477
1478 static struct type *
1479 thin_descriptor_type (struct type *type)
1480 {
1481   struct type *base_type = desc_base_type (type);
1482
1483   if (base_type == NULL)
1484     return NULL;
1485   if (is_suffix (ada_type_name (base_type), "___XVE"))
1486     return base_type;
1487   else
1488     {
1489       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1490
1491       if (alt_type == NULL)
1492         return base_type;
1493       else
1494         return alt_type;
1495     }
1496 }
1497
1498 /* A pointer to the array data for thin-pointer value VAL.  */
1499
1500 static struct value *
1501 thin_data_pntr (struct value *val)
1502 {
1503   struct type *type = ada_check_typedef (value_type (val));
1504   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1505
1506   data_type = lookup_pointer_type (data_type);
1507
1508   if (type->code () == TYPE_CODE_PTR)
1509     return value_cast (data_type, value_copy (val));
1510   else
1511     return value_from_longest (data_type, value_address (val));
1512 }
1513
1514 /* True iff TYPE indicates a "thick" array pointer type.  */
1515
1516 static int
1517 is_thick_pntr (struct type *type)
1518 {
1519   type = desc_base_type (type);
1520   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1521           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1522 }
1523
1524 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1525    pointer to one, the type of its bounds data; otherwise, NULL.  */
1526
1527 static struct type *
1528 desc_bounds_type (struct type *type)
1529 {
1530   struct type *r;
1531
1532   type = desc_base_type (type);
1533
1534   if (type == NULL)
1535     return NULL;
1536   else if (is_thin_pntr (type))
1537     {
1538       type = thin_descriptor_type (type);
1539       if (type == NULL)
1540         return NULL;
1541       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1542       if (r != NULL)
1543         return ada_check_typedef (r);
1544     }
1545   else if (type->code () == TYPE_CODE_STRUCT)
1546     {
1547       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1548       if (r != NULL)
1549         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1550     }
1551   return NULL;
1552 }
1553
1554 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1555    one, a pointer to its bounds data.   Otherwise NULL.  */
1556
1557 static struct value *
1558 desc_bounds (struct value *arr)
1559 {
1560   struct type *type = ada_check_typedef (value_type (arr));
1561
1562   if (is_thin_pntr (type))
1563     {
1564       struct type *bounds_type =
1565         desc_bounds_type (thin_descriptor_type (type));
1566       LONGEST addr;
1567
1568       if (bounds_type == NULL)
1569         error (_("Bad GNAT array descriptor"));
1570
1571       /* NOTE: The following calculation is not really kosher, but
1572          since desc_type is an XVE-encoded type (and shouldn't be),
1573          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1574       if (type->code () == TYPE_CODE_PTR)
1575         addr = value_as_long (arr);
1576       else
1577         addr = value_address (arr);
1578
1579       return
1580         value_from_longest (lookup_pointer_type (bounds_type),
1581                             addr - TYPE_LENGTH (bounds_type));
1582     }
1583
1584   else if (is_thick_pntr (type))
1585     {
1586       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1587                                                _("Bad GNAT array descriptor"));
1588       struct type *p_bounds_type = value_type (p_bounds);
1589
1590       if (p_bounds_type
1591           && p_bounds_type->code () == TYPE_CODE_PTR)
1592         {
1593           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1594
1595           if (TYPE_STUB (target_type))
1596             p_bounds = value_cast (lookup_pointer_type
1597                                    (ada_check_typedef (target_type)),
1598                                    p_bounds);
1599         }
1600       else
1601         error (_("Bad GNAT array descriptor"));
1602
1603       return p_bounds;
1604     }
1605   else
1606     return NULL;
1607 }
1608
1609 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1610    position of the field containing the address of the bounds data.  */
1611
1612 static int
1613 fat_pntr_bounds_bitpos (struct type *type)
1614 {
1615   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1616 }
1617
1618 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1619    size of the field containing the address of the bounds data.  */
1620
1621 static int
1622 fat_pntr_bounds_bitsize (struct type *type)
1623 {
1624   type = desc_base_type (type);
1625
1626   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1627     return TYPE_FIELD_BITSIZE (type, 1);
1628   else
1629     return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
1630 }
1631
1632 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1633    pointer to one, the type of its array data (a array-with-no-bounds type);
1634    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1635    data.  */
1636
1637 static struct type *
1638 desc_data_target_type (struct type *type)
1639 {
1640   type = desc_base_type (type);
1641
1642   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1643   if (is_thin_pntr (type))
1644     return desc_base_type (thin_descriptor_type (type)->field (1).type ());
1645   else if (is_thick_pntr (type))
1646     {
1647       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1648
1649       if (data_type
1650           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1651         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1652     }
1653
1654   return NULL;
1655 }
1656
1657 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1658    its array data.  */
1659
1660 static struct value *
1661 desc_data (struct value *arr)
1662 {
1663   struct type *type = value_type (arr);
1664
1665   if (is_thin_pntr (type))
1666     return thin_data_pntr (arr);
1667   else if (is_thick_pntr (type))
1668     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1669                              _("Bad GNAT array descriptor"));
1670   else
1671     return NULL;
1672 }
1673
1674
1675 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1676    position of the field containing the address of the data.  */
1677
1678 static int
1679 fat_pntr_data_bitpos (struct type *type)
1680 {
1681   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1682 }
1683
1684 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1685    size of the field containing the address of the data.  */
1686
1687 static int
1688 fat_pntr_data_bitsize (struct type *type)
1689 {
1690   type = desc_base_type (type);
1691
1692   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1693     return TYPE_FIELD_BITSIZE (type, 0);
1694   else
1695     return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
1696 }
1697
1698 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1699    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1700    bound, if WHICH is 1.  The first bound is I=1.  */
1701
1702 static struct value *
1703 desc_one_bound (struct value *bounds, int i, int which)
1704 {
1705   char bound_name[20];
1706   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1707              which ? 'U' : 'L', i - 1);
1708   return value_struct_elt (&bounds, NULL, bound_name, NULL,
1709                            _("Bad GNAT array descriptor bounds"));
1710 }
1711
1712 /* If BOUNDS is an array-bounds structure type, return the bit position
1713    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1714    bound, if WHICH is 1.  The first bound is I=1.  */
1715
1716 static int
1717 desc_bound_bitpos (struct type *type, int i, int which)
1718 {
1719   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1720 }
1721
1722 /* If BOUNDS is an array-bounds structure type, return the bit field size
1723    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1724    bound, if WHICH is 1.  The first bound is I=1.  */
1725
1726 static int
1727 desc_bound_bitsize (struct type *type, int i, int which)
1728 {
1729   type = desc_base_type (type);
1730
1731   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1732     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1733   else
1734     return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
1735 }
1736
1737 /* If TYPE is the type of an array-bounds structure, the type of its
1738    Ith bound (numbering from 1).  Otherwise, NULL.  */
1739
1740 static struct type *
1741 desc_index_type (struct type *type, int i)
1742 {
1743   type = desc_base_type (type);
1744
1745   if (type->code () == TYPE_CODE_STRUCT)
1746     {
1747       char bound_name[20];
1748       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1749       return lookup_struct_elt_type (type, bound_name, 1);
1750     }
1751   else
1752     return NULL;
1753 }
1754
1755 /* The number of index positions in the array-bounds type TYPE.
1756    Return 0 if TYPE is NULL.  */
1757
1758 static int
1759 desc_arity (struct type *type)
1760 {
1761   type = desc_base_type (type);
1762
1763   if (type != NULL)
1764     return type->num_fields () / 2;
1765   return 0;
1766 }
1767
1768 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1769    an array descriptor type (representing an unconstrained array
1770    type).  */
1771
1772 static int
1773 ada_is_direct_array_type (struct type *type)
1774 {
1775   if (type == NULL)
1776     return 0;
1777   type = ada_check_typedef (type);
1778   return (type->code () == TYPE_CODE_ARRAY
1779           || ada_is_array_descriptor_type (type));
1780 }
1781
1782 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1783  * to one.  */
1784
1785 static int
1786 ada_is_array_type (struct type *type)
1787 {
1788   while (type != NULL
1789          && (type->code () == TYPE_CODE_PTR
1790              || type->code () == TYPE_CODE_REF))
1791     type = TYPE_TARGET_TYPE (type);
1792   return ada_is_direct_array_type (type);
1793 }
1794
1795 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1796
1797 int
1798 ada_is_simple_array_type (struct type *type)
1799 {
1800   if (type == NULL)
1801     return 0;
1802   type = ada_check_typedef (type);
1803   return (type->code () == TYPE_CODE_ARRAY
1804           || (type->code () == TYPE_CODE_PTR
1805               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1806                   == TYPE_CODE_ARRAY)));
1807 }
1808
1809 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1810
1811 int
1812 ada_is_array_descriptor_type (struct type *type)
1813 {
1814   struct type *data_type = desc_data_target_type (type);
1815
1816   if (type == NULL)
1817     return 0;
1818   type = ada_check_typedef (type);
1819   return (data_type != NULL
1820           && data_type->code () == TYPE_CODE_ARRAY
1821           && desc_arity (desc_bounds_type (type)) > 0);
1822 }
1823
1824 /* Non-zero iff type is a partially mal-formed GNAT array
1825    descriptor.  FIXME: This is to compensate for some problems with
1826    debugging output from GNAT.  Re-examine periodically to see if it
1827    is still needed.  */
1828
1829 int
1830 ada_is_bogus_array_descriptor (struct type *type)
1831 {
1832   return
1833     type != NULL
1834     && type->code () == TYPE_CODE_STRUCT
1835     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1836         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1837     && !ada_is_array_descriptor_type (type);
1838 }
1839
1840
1841 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1842    (fat pointer) returns the type of the array data described---specifically,
1843    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1844    in from the descriptor; otherwise, they are left unspecified.  If
1845    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1846    returns NULL.  The result is simply the type of ARR if ARR is not
1847    a descriptor.  */
1848
1849 static struct type *
1850 ada_type_of_array (struct value *arr, int bounds)
1851 {
1852   if (ada_is_constrained_packed_array_type (value_type (arr)))
1853     return decode_constrained_packed_array_type (value_type (arr));
1854
1855   if (!ada_is_array_descriptor_type (value_type (arr)))
1856     return value_type (arr);
1857
1858   if (!bounds)
1859     {
1860       struct type *array_type =
1861         ada_check_typedef (desc_data_target_type (value_type (arr)));
1862
1863       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1864         TYPE_FIELD_BITSIZE (array_type, 0) =
1865           decode_packed_array_bitsize (value_type (arr));
1866       
1867       return array_type;
1868     }
1869   else
1870     {
1871       struct type *elt_type;
1872       int arity;
1873       struct value *descriptor;
1874
1875       elt_type = ada_array_element_type (value_type (arr), -1);
1876       arity = ada_array_arity (value_type (arr));
1877
1878       if (elt_type == NULL || arity == 0)
1879         return ada_check_typedef (value_type (arr));
1880
1881       descriptor = desc_bounds (arr);
1882       if (value_as_long (descriptor) == 0)
1883         return NULL;
1884       while (arity > 0)
1885         {
1886           struct type *range_type = alloc_type_copy (value_type (arr));
1887           struct type *array_type = alloc_type_copy (value_type (arr));
1888           struct value *low = desc_one_bound (descriptor, arity, 0);
1889           struct value *high = desc_one_bound (descriptor, arity, 1);
1890
1891           arity -= 1;
1892           create_static_range_type (range_type, value_type (low),
1893                                     longest_to_int (value_as_long (low)),
1894                                     longest_to_int (value_as_long (high)));
1895           elt_type = create_array_type (array_type, elt_type, range_type);
1896
1897           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1898             {
1899               /* We need to store the element packed bitsize, as well as
1900                  recompute the array size, because it was previously
1901                  computed based on the unpacked element size.  */
1902               LONGEST lo = value_as_long (low);
1903               LONGEST hi = value_as_long (high);
1904
1905               TYPE_FIELD_BITSIZE (elt_type, 0) =
1906                 decode_packed_array_bitsize (value_type (arr));
1907               /* If the array has no element, then the size is already
1908                  zero, and does not need to be recomputed.  */
1909               if (lo < hi)
1910                 {
1911                   int array_bitsize =
1912                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1913
1914                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1915                 }
1916             }
1917         }
1918
1919       return lookup_pointer_type (elt_type);
1920     }
1921 }
1922
1923 /* If ARR does not represent an array, returns ARR unchanged.
1924    Otherwise, returns either a standard GDB array with bounds set
1925    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1926    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1927
1928 struct value *
1929 ada_coerce_to_simple_array_ptr (struct value *arr)
1930 {
1931   if (ada_is_array_descriptor_type (value_type (arr)))
1932     {
1933       struct type *arrType = ada_type_of_array (arr, 1);
1934
1935       if (arrType == NULL)
1936         return NULL;
1937       return value_cast (arrType, value_copy (desc_data (arr)));
1938     }
1939   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1940     return decode_constrained_packed_array (arr);
1941   else
1942     return arr;
1943 }
1944
1945 /* If ARR does not represent an array, returns ARR unchanged.
1946    Otherwise, returns a standard GDB array describing ARR (which may
1947    be ARR itself if it already is in the proper form).  */
1948
1949 struct value *
1950 ada_coerce_to_simple_array (struct value *arr)
1951 {
1952   if (ada_is_array_descriptor_type (value_type (arr)))
1953     {
1954       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1955
1956       if (arrVal == NULL)
1957         error (_("Bounds unavailable for null array pointer."));
1958       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1959       return value_ind (arrVal);
1960     }
1961   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1962     return decode_constrained_packed_array (arr);
1963   else
1964     return arr;
1965 }
1966
1967 /* If TYPE represents a GNAT array type, return it translated to an
1968    ordinary GDB array type (possibly with BITSIZE fields indicating
1969    packing).  For other types, is the identity.  */
1970
1971 struct type *
1972 ada_coerce_to_simple_array_type (struct type *type)
1973 {
1974   if (ada_is_constrained_packed_array_type (type))
1975     return decode_constrained_packed_array_type (type);
1976
1977   if (ada_is_array_descriptor_type (type))
1978     return ada_check_typedef (desc_data_target_type (type));
1979
1980   return type;
1981 }
1982
1983 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
1984
1985 static int
1986 ada_is_packed_array_type  (struct type *type)
1987 {
1988   if (type == NULL)
1989     return 0;
1990   type = desc_base_type (type);
1991   type = ada_check_typedef (type);
1992   return
1993     ada_type_name (type) != NULL
1994     && strstr (ada_type_name (type), "___XP") != NULL;
1995 }
1996
1997 /* Non-zero iff TYPE represents a standard GNAT constrained
1998    packed-array type.  */
1999
2000 int
2001 ada_is_constrained_packed_array_type (struct type *type)
2002 {
2003   return ada_is_packed_array_type (type)
2004     && !ada_is_array_descriptor_type (type);
2005 }
2006
2007 /* Non-zero iff TYPE represents an array descriptor for a
2008    unconstrained packed-array type.  */
2009
2010 static int
2011 ada_is_unconstrained_packed_array_type (struct type *type)
2012 {
2013   return ada_is_packed_array_type (type)
2014     && ada_is_array_descriptor_type (type);
2015 }
2016
2017 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2018    return the size of its elements in bits.  */
2019
2020 static long
2021 decode_packed_array_bitsize (struct type *type)
2022 {
2023   const char *raw_name;
2024   const char *tail;
2025   long bits;
2026
2027   /* Access to arrays implemented as fat pointers are encoded as a typedef
2028      of the fat pointer type.  We need the name of the fat pointer type
2029      to do the decoding, so strip the typedef layer.  */
2030   if (type->code () == TYPE_CODE_TYPEDEF)
2031     type = ada_typedef_target_type (type);
2032
2033   raw_name = ada_type_name (ada_check_typedef (type));
2034   if (!raw_name)
2035     raw_name = ada_type_name (desc_base_type (type));
2036
2037   if (!raw_name)
2038     return 0;
2039
2040   tail = strstr (raw_name, "___XP");
2041   gdb_assert (tail != NULL);
2042
2043   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2044     {
2045       lim_warning
2046         (_("could not understand bit size information on packed array"));
2047       return 0;
2048     }
2049
2050   return bits;
2051 }
2052
2053 /* Given that TYPE is a standard GDB array type with all bounds filled
2054    in, and that the element size of its ultimate scalar constituents
2055    (that is, either its elements, or, if it is an array of arrays, its
2056    elements' elements, etc.) is *ELT_BITS, return an identical type,
2057    but with the bit sizes of its elements (and those of any
2058    constituent arrays) recorded in the BITSIZE components of its
2059    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2060    in bits.
2061
2062    Note that, for arrays whose index type has an XA encoding where
2063    a bound references a record discriminant, getting that discriminant,
2064    and therefore the actual value of that bound, is not possible
2065    because none of the given parameters gives us access to the record.
2066    This function assumes that it is OK in the context where it is being
2067    used to return an array whose bounds are still dynamic and where
2068    the length is arbitrary.  */
2069
2070 static struct type *
2071 constrained_packed_array_type (struct type *type, long *elt_bits)
2072 {
2073   struct type *new_elt_type;
2074   struct type *new_type;
2075   struct type *index_type_desc;
2076   struct type *index_type;
2077   LONGEST low_bound, high_bound;
2078
2079   type = ada_check_typedef (type);
2080   if (type->code () != TYPE_CODE_ARRAY)
2081     return type;
2082
2083   index_type_desc = ada_find_parallel_type (type, "___XA");
2084   if (index_type_desc)
2085     index_type = to_fixed_range_type (index_type_desc->field (0).type (),
2086                                       NULL);
2087   else
2088     index_type = type->index_type ();
2089
2090   new_type = alloc_type_copy (type);
2091   new_elt_type =
2092     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2093                                    elt_bits);
2094   create_array_type (new_type, new_elt_type, index_type);
2095   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2096   new_type->set_name (ada_type_name (type));
2097
2098   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2099        && is_dynamic_type (check_typedef (index_type)))
2100       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2101     low_bound = high_bound = 0;
2102   if (high_bound < low_bound)
2103     *elt_bits = TYPE_LENGTH (new_type) = 0;
2104   else
2105     {
2106       *elt_bits *= (high_bound - low_bound + 1);
2107       TYPE_LENGTH (new_type) =
2108         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2109     }
2110
2111   TYPE_FIXED_INSTANCE (new_type) = 1;
2112   return new_type;
2113 }
2114
2115 /* The array type encoded by TYPE, where
2116    ada_is_constrained_packed_array_type (TYPE).  */
2117
2118 static struct type *
2119 decode_constrained_packed_array_type (struct type *type)
2120 {
2121   const char *raw_name = ada_type_name (ada_check_typedef (type));
2122   char *name;
2123   const char *tail;
2124   struct type *shadow_type;
2125   long bits;
2126
2127   if (!raw_name)
2128     raw_name = ada_type_name (desc_base_type (type));
2129
2130   if (!raw_name)
2131     return NULL;
2132
2133   name = (char *) alloca (strlen (raw_name) + 1);
2134   tail = strstr (raw_name, "___XP");
2135   type = desc_base_type (type);
2136
2137   memcpy (name, raw_name, tail - raw_name);
2138   name[tail - raw_name] = '\000';
2139
2140   shadow_type = ada_find_parallel_type_with_name (type, name);
2141
2142   if (shadow_type == NULL)
2143     {
2144       lim_warning (_("could not find bounds information on packed array"));
2145       return NULL;
2146     }
2147   shadow_type = check_typedef (shadow_type);
2148
2149   if (shadow_type->code () != TYPE_CODE_ARRAY)
2150     {
2151       lim_warning (_("could not understand bounds "
2152                      "information on packed array"));
2153       return NULL;
2154     }
2155
2156   bits = decode_packed_array_bitsize (type);
2157   return constrained_packed_array_type (shadow_type, &bits);
2158 }
2159
2160 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2161    array, returns a simple array that denotes that array.  Its type is a
2162    standard GDB array type except that the BITSIZEs of the array
2163    target types are set to the number of bits in each element, and the
2164    type length is set appropriately.  */
2165
2166 static struct value *
2167 decode_constrained_packed_array (struct value *arr)
2168 {
2169   struct type *type;
2170
2171   /* If our value is a pointer, then dereference it. Likewise if
2172      the value is a reference.  Make sure that this operation does not
2173      cause the target type to be fixed, as this would indirectly cause
2174      this array to be decoded.  The rest of the routine assumes that
2175      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2176      and "value_ind" routines to perform the dereferencing, as opposed
2177      to using "ada_coerce_ref" or "ada_value_ind".  */
2178   arr = coerce_ref (arr);
2179   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2180     arr = value_ind (arr);
2181
2182   type = decode_constrained_packed_array_type (value_type (arr));
2183   if (type == NULL)
2184     {
2185       error (_("can't unpack array"));
2186       return NULL;
2187     }
2188
2189   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2190       && ada_is_modular_type (value_type (arr)))
2191     {
2192        /* This is a (right-justified) modular type representing a packed
2193          array with no wrapper.  In order to interpret the value through
2194          the (left-justified) packed array type we just built, we must
2195          first left-justify it.  */
2196       int bit_size, bit_pos;
2197       ULONGEST mod;
2198
2199       mod = ada_modulus (value_type (arr)) - 1;
2200       bit_size = 0;
2201       while (mod > 0)
2202         {
2203           bit_size += 1;
2204           mod >>= 1;
2205         }
2206       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2207       arr = ada_value_primitive_packed_val (arr, NULL,
2208                                             bit_pos / HOST_CHAR_BIT,
2209                                             bit_pos % HOST_CHAR_BIT,
2210                                             bit_size,
2211                                             type);
2212     }
2213
2214   return coerce_unspec_val_to_type (arr, type);
2215 }
2216
2217
2218 /* The value of the element of packed array ARR at the ARITY indices
2219    given in IND.   ARR must be a simple array.  */
2220
2221 static struct value *
2222 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2223 {
2224   int i;
2225   int bits, elt_off, bit_off;
2226   long elt_total_bit_offset;
2227   struct type *elt_type;
2228   struct value *v;
2229
2230   bits = 0;
2231   elt_total_bit_offset = 0;
2232   elt_type = ada_check_typedef (value_type (arr));
2233   for (i = 0; i < arity; i += 1)
2234     {
2235       if (elt_type->code () != TYPE_CODE_ARRAY
2236           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2237         error
2238           (_("attempt to do packed indexing of "
2239              "something other than a packed array"));
2240       else
2241         {
2242           struct type *range_type = elt_type->index_type ();
2243           LONGEST lowerbound, upperbound;
2244           LONGEST idx;
2245
2246           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2247             {
2248               lim_warning (_("don't know bounds of array"));
2249               lowerbound = upperbound = 0;
2250             }
2251
2252           idx = pos_atr (ind[i]);
2253           if (idx < lowerbound || idx > upperbound)
2254             lim_warning (_("packed array index %ld out of bounds"),
2255                          (long) idx);
2256           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2257           elt_total_bit_offset += (idx - lowerbound) * bits;
2258           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2259         }
2260     }
2261   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2262   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2263
2264   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2265                                       bits, elt_type);
2266   return v;
2267 }
2268
2269 /* Non-zero iff TYPE includes negative integer values.  */
2270
2271 static int
2272 has_negatives (struct type *type)
2273 {
2274   switch (type->code ())
2275     {
2276     default:
2277       return 0;
2278     case TYPE_CODE_INT:
2279       return !type->is_unsigned ();
2280     case TYPE_CODE_RANGE:
2281       return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
2282     }
2283 }
2284
2285 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2286    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2287    the unpacked buffer.
2288
2289    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2290    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2291
2292    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2293    zero otherwise.
2294
2295    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2296
2297    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2298
2299 static void
2300 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2301                           gdb_byte *unpacked, int unpacked_len,
2302                           int is_big_endian, int is_signed_type,
2303                           int is_scalar)
2304 {
2305   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2306   int src_idx;                  /* Index into the source area */
2307   int src_bytes_left;           /* Number of source bytes left to process.  */
2308   int srcBitsLeft;              /* Number of source bits left to move */
2309   int unusedLS;                 /* Number of bits in next significant
2310                                    byte of source that are unused */
2311
2312   int unpacked_idx;             /* Index into the unpacked buffer */
2313   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2314
2315   unsigned long accum;          /* Staging area for bits being transferred */
2316   int accumSize;                /* Number of meaningful bits in accum */
2317   unsigned char sign;
2318
2319   /* Transmit bytes from least to most significant; delta is the direction
2320      the indices move.  */
2321   int delta = is_big_endian ? -1 : 1;
2322
2323   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2324      bits from SRC.  .*/
2325   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2326     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2327            bit_size, unpacked_len);
2328
2329   srcBitsLeft = bit_size;
2330   src_bytes_left = src_len;
2331   unpacked_bytes_left = unpacked_len;
2332   sign = 0;
2333
2334   if (is_big_endian)
2335     {
2336       src_idx = src_len - 1;
2337       if (is_signed_type
2338           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2339         sign = ~0;
2340
2341       unusedLS =
2342         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2343         % HOST_CHAR_BIT;
2344
2345       if (is_scalar)
2346         {
2347           accumSize = 0;
2348           unpacked_idx = unpacked_len - 1;
2349         }
2350       else
2351         {
2352           /* Non-scalar values must be aligned at a byte boundary...  */
2353           accumSize =
2354             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2355           /* ... And are placed at the beginning (most-significant) bytes
2356              of the target.  */
2357           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2358           unpacked_bytes_left = unpacked_idx + 1;
2359         }
2360     }
2361   else
2362     {
2363       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2364
2365       src_idx = unpacked_idx = 0;
2366       unusedLS = bit_offset;
2367       accumSize = 0;
2368
2369       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2370         sign = ~0;
2371     }
2372
2373   accum = 0;
2374   while (src_bytes_left > 0)
2375     {
2376       /* Mask for removing bits of the next source byte that are not
2377          part of the value.  */
2378       unsigned int unusedMSMask =
2379         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2380         1;
2381       /* Sign-extend bits for this byte.  */
2382       unsigned int signMask = sign & ~unusedMSMask;
2383
2384       accum |=
2385         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2386       accumSize += HOST_CHAR_BIT - unusedLS;
2387       if (accumSize >= HOST_CHAR_BIT)
2388         {
2389           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2390           accumSize -= HOST_CHAR_BIT;
2391           accum >>= HOST_CHAR_BIT;
2392           unpacked_bytes_left -= 1;
2393           unpacked_idx += delta;
2394         }
2395       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2396       unusedLS = 0;
2397       src_bytes_left -= 1;
2398       src_idx += delta;
2399     }
2400   while (unpacked_bytes_left > 0)
2401     {
2402       accum |= sign << accumSize;
2403       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2404       accumSize -= HOST_CHAR_BIT;
2405       if (accumSize < 0)
2406         accumSize = 0;
2407       accum >>= HOST_CHAR_BIT;
2408       unpacked_bytes_left -= 1;
2409       unpacked_idx += delta;
2410     }
2411 }
2412
2413 /* Create a new value of type TYPE from the contents of OBJ starting
2414    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2415    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2416    assigning through the result will set the field fetched from.
2417    VALADDR is ignored unless OBJ is NULL, in which case,
2418    VALADDR+OFFSET must address the start of storage containing the 
2419    packed value.  The value returned  in this case is never an lval.
2420    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2421
2422 struct value *
2423 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2424                                 long offset, int bit_offset, int bit_size,
2425                                 struct type *type)
2426 {
2427   struct value *v;
2428   const gdb_byte *src;                /* First byte containing data to unpack */
2429   gdb_byte *unpacked;
2430   const int is_scalar = is_scalar_type (type);
2431   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2432   gdb::byte_vector staging;
2433
2434   type = ada_check_typedef (type);
2435
2436   if (obj == NULL)
2437     src = valaddr + offset;
2438   else
2439     src = value_contents (obj) + offset;
2440
2441   if (is_dynamic_type (type))
2442     {
2443       /* The length of TYPE might by dynamic, so we need to resolve
2444          TYPE in order to know its actual size, which we then use
2445          to create the contents buffer of the value we return.
2446          The difficulty is that the data containing our object is
2447          packed, and therefore maybe not at a byte boundary.  So, what
2448          we do, is unpack the data into a byte-aligned buffer, and then
2449          use that buffer as our object's value for resolving the type.  */
2450       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2451       staging.resize (staging_len);
2452
2453       ada_unpack_from_contents (src, bit_offset, bit_size,
2454                                 staging.data (), staging.size (),
2455                                 is_big_endian, has_negatives (type),
2456                                 is_scalar);
2457       type = resolve_dynamic_type (type, staging, 0);
2458       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2459         {
2460           /* This happens when the length of the object is dynamic,
2461              and is actually smaller than the space reserved for it.
2462              For instance, in an array of variant records, the bit_size
2463              we're given is the array stride, which is constant and
2464              normally equal to the maximum size of its element.
2465              But, in reality, each element only actually spans a portion
2466              of that stride.  */
2467           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2468         }
2469     }
2470
2471   if (obj == NULL)
2472     {
2473       v = allocate_value (type);
2474       src = valaddr + offset;
2475     }
2476   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2477     {
2478       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2479       gdb_byte *buf;
2480
2481       v = value_at (type, value_address (obj) + offset);
2482       buf = (gdb_byte *) alloca (src_len);
2483       read_memory (value_address (v), buf, src_len);
2484       src = buf;
2485     }
2486   else
2487     {
2488       v = allocate_value (type);
2489       src = value_contents (obj) + offset;
2490     }
2491
2492   if (obj != NULL)
2493     {
2494       long new_offset = offset;
2495
2496       set_value_component_location (v, obj);
2497       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2498       set_value_bitsize (v, bit_size);
2499       if (value_bitpos (v) >= HOST_CHAR_BIT)
2500         {
2501           ++new_offset;
2502           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2503         }
2504       set_value_offset (v, new_offset);
2505
2506       /* Also set the parent value.  This is needed when trying to
2507          assign a new value (in inferior memory).  */
2508       set_value_parent (v, obj);
2509     }
2510   else
2511     set_value_bitsize (v, bit_size);
2512   unpacked = value_contents_writeable (v);
2513
2514   if (bit_size == 0)
2515     {
2516       memset (unpacked, 0, TYPE_LENGTH (type));
2517       return v;
2518     }
2519
2520   if (staging.size () == TYPE_LENGTH (type))
2521     {
2522       /* Small short-cut: If we've unpacked the data into a buffer
2523          of the same size as TYPE's length, then we can reuse that,
2524          instead of doing the unpacking again.  */
2525       memcpy (unpacked, staging.data (), staging.size ());
2526     }
2527   else
2528     ada_unpack_from_contents (src, bit_offset, bit_size,
2529                               unpacked, TYPE_LENGTH (type),
2530                               is_big_endian, has_negatives (type), is_scalar);
2531
2532   return v;
2533 }
2534
2535 /* Store the contents of FROMVAL into the location of TOVAL.
2536    Return a new value with the location of TOVAL and contents of
2537    FROMVAL.   Handles assignment into packed fields that have
2538    floating-point or non-scalar types.  */
2539
2540 static struct value *
2541 ada_value_assign (struct value *toval, struct value *fromval)
2542 {
2543   struct type *type = value_type (toval);
2544   int bits = value_bitsize (toval);
2545
2546   toval = ada_coerce_ref (toval);
2547   fromval = ada_coerce_ref (fromval);
2548
2549   if (ada_is_direct_array_type (value_type (toval)))
2550     toval = ada_coerce_to_simple_array (toval);
2551   if (ada_is_direct_array_type (value_type (fromval)))
2552     fromval = ada_coerce_to_simple_array (fromval);
2553
2554   if (!deprecated_value_modifiable (toval))
2555     error (_("Left operand of assignment is not a modifiable lvalue."));
2556
2557   if (VALUE_LVAL (toval) == lval_memory
2558       && bits > 0
2559       && (type->code () == TYPE_CODE_FLT
2560           || type->code () == TYPE_CODE_STRUCT))
2561     {
2562       int len = (value_bitpos (toval)
2563                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2564       int from_size;
2565       gdb_byte *buffer = (gdb_byte *) alloca (len);
2566       struct value *val;
2567       CORE_ADDR to_addr = value_address (toval);
2568
2569       if (type->code () == TYPE_CODE_FLT)
2570         fromval = value_cast (type, fromval);
2571
2572       read_memory (to_addr, buffer, len);
2573       from_size = value_bitsize (fromval);
2574       if (from_size == 0)
2575         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2576
2577       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2578       ULONGEST from_offset = 0;
2579       if (is_big_endian && is_scalar_type (value_type (fromval)))
2580         from_offset = from_size - bits;
2581       copy_bitwise (buffer, value_bitpos (toval),
2582                     value_contents (fromval), from_offset,
2583                     bits, is_big_endian);
2584       write_memory_with_notification (to_addr, buffer, len);
2585
2586       val = value_copy (toval);
2587       memcpy (value_contents_raw (val), value_contents (fromval),
2588               TYPE_LENGTH (type));
2589       deprecated_set_value_type (val, type);
2590
2591       return val;
2592     }
2593
2594   return value_assign (toval, fromval);
2595 }
2596
2597
2598 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2599    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2600    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2601    COMPONENT, and not the inferior's memory.  The current contents
2602    of COMPONENT are ignored.
2603
2604    Although not part of the initial design, this function also works
2605    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2606    had a null address, and COMPONENT had an address which is equal to
2607    its offset inside CONTAINER.  */
2608
2609 static void
2610 value_assign_to_component (struct value *container, struct value *component,
2611                            struct value *val)
2612 {
2613   LONGEST offset_in_container =
2614     (LONGEST)  (value_address (component) - value_address (container));
2615   int bit_offset_in_container =
2616     value_bitpos (component) - value_bitpos (container);
2617   int bits;
2618
2619   val = value_cast (value_type (component), val);
2620
2621   if (value_bitsize (component) == 0)
2622     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2623   else
2624     bits = value_bitsize (component);
2625
2626   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2627     {
2628       int src_offset;
2629
2630       if (is_scalar_type (check_typedef (value_type (component))))
2631         src_offset
2632           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2633       else
2634         src_offset = 0;
2635       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2636                     value_bitpos (container) + bit_offset_in_container,
2637                     value_contents (val), src_offset, bits, 1);
2638     }
2639   else
2640     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2641                   value_bitpos (container) + bit_offset_in_container,
2642                   value_contents (val), 0, bits, 0);
2643 }
2644
2645 /* Determine if TYPE is an access to an unconstrained array.  */
2646
2647 bool
2648 ada_is_access_to_unconstrained_array (struct type *type)
2649 {
2650   return (type->code () == TYPE_CODE_TYPEDEF
2651           && is_thick_pntr (ada_typedef_target_type (type)));
2652 }
2653
2654 /* The value of the element of array ARR at the ARITY indices given in IND.
2655    ARR may be either a simple array, GNAT array descriptor, or pointer
2656    thereto.  */
2657
2658 struct value *
2659 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2660 {
2661   int k;
2662   struct value *elt;
2663   struct type *elt_type;
2664
2665   elt = ada_coerce_to_simple_array (arr);
2666
2667   elt_type = ada_check_typedef (value_type (elt));
2668   if (elt_type->code () == TYPE_CODE_ARRAY
2669       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2670     return value_subscript_packed (elt, arity, ind);
2671
2672   for (k = 0; k < arity; k += 1)
2673     {
2674       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2675
2676       if (elt_type->code () != TYPE_CODE_ARRAY)
2677         error (_("too many subscripts (%d expected)"), k);
2678
2679       elt = value_subscript (elt, pos_atr (ind[k]));
2680
2681       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2682           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2683         {
2684           /* The element is a typedef to an unconstrained array,
2685              except that the value_subscript call stripped the
2686              typedef layer.  The typedef layer is GNAT's way to
2687              specify that the element is, at the source level, an
2688              access to the unconstrained array, rather than the
2689              unconstrained array.  So, we need to restore that
2690              typedef layer, which we can do by forcing the element's
2691              type back to its original type. Otherwise, the returned
2692              value is going to be printed as the array, rather
2693              than as an access.  Another symptom of the same issue
2694              would be that an expression trying to dereference the
2695              element would also be improperly rejected.  */
2696           deprecated_set_value_type (elt, saved_elt_type);
2697         }
2698
2699       elt_type = ada_check_typedef (value_type (elt));
2700     }
2701
2702   return elt;
2703 }
2704
2705 /* Assuming ARR is a pointer to a GDB array, the value of the element
2706    of *ARR at the ARITY indices given in IND.
2707    Does not read the entire array into memory.
2708
2709    Note: Unlike what one would expect, this function is used instead of
2710    ada_value_subscript for basically all non-packed array types.  The reason
2711    for this is that a side effect of doing our own pointer arithmetics instead
2712    of relying on value_subscript is that there is no implicit typedef peeling.
2713    This is important for arrays of array accesses, where it allows us to
2714    preserve the fact that the array's element is an array access, where the
2715    access part os encoded in a typedef layer.  */
2716
2717 static struct value *
2718 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2719 {
2720   int k;
2721   struct value *array_ind = ada_value_ind (arr);
2722   struct type *type
2723     = check_typedef (value_enclosing_type (array_ind));
2724
2725   if (type->code () == TYPE_CODE_ARRAY
2726       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2727     return value_subscript_packed (array_ind, arity, ind);
2728
2729   for (k = 0; k < arity; k += 1)
2730     {
2731       LONGEST lwb, upb;
2732
2733       if (type->code () != TYPE_CODE_ARRAY)
2734         error (_("too many subscripts (%d expected)"), k);
2735       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2736                         value_copy (arr));
2737       get_discrete_bounds (type->index_type (), &lwb, &upb);
2738       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2739       type = TYPE_TARGET_TYPE (type);
2740     }
2741
2742   return value_ind (arr);
2743 }
2744
2745 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2746    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2747    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2748    this array is LOW, as per Ada rules.  */
2749 static struct value *
2750 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2751                           int low, int high)
2752 {
2753   struct type *type0 = ada_check_typedef (type);
2754   struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2755   struct type *index_type
2756     = create_static_range_type (NULL, base_index_type, low, high);
2757   struct type *slice_type = create_array_type_with_stride
2758                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2759                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2760                                TYPE_FIELD_BITSIZE (type0, 0));
2761   int base_low =  ada_discrete_type_low_bound (type0->index_type ());
2762   LONGEST base_low_pos, low_pos;
2763   CORE_ADDR base;
2764
2765   if (!discrete_position (base_index_type, low, &low_pos)
2766       || !discrete_position (base_index_type, base_low, &base_low_pos))
2767     {
2768       warning (_("unable to get positions in slice, use bounds instead"));
2769       low_pos = low;
2770       base_low_pos = base_low;
2771     }
2772
2773   base = value_as_address (array_ptr)
2774     + ((low_pos - base_low_pos)
2775        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2776   return value_at_lazy (slice_type, base);
2777 }
2778
2779
2780 static struct value *
2781 ada_value_slice (struct value *array, int low, int high)
2782 {
2783   struct type *type = ada_check_typedef (value_type (array));
2784   struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
2785   struct type *index_type
2786     = create_static_range_type (NULL, type->index_type (), low, high);
2787   struct type *slice_type = create_array_type_with_stride
2788                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2789                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2790                                TYPE_FIELD_BITSIZE (type, 0));
2791   LONGEST low_pos, high_pos;
2792
2793   if (!discrete_position (base_index_type, low, &low_pos)
2794       || !discrete_position (base_index_type, high, &high_pos))
2795     {
2796       warning (_("unable to get positions in slice, use bounds instead"));
2797       low_pos = low;
2798       high_pos = high;
2799     }
2800
2801   return value_cast (slice_type,
2802                      value_slice (array, low, high_pos - low_pos + 1));
2803 }
2804
2805 /* If type is a record type in the form of a standard GNAT array
2806    descriptor, returns the number of dimensions for type.  If arr is a
2807    simple array, returns the number of "array of"s that prefix its
2808    type designation.  Otherwise, returns 0.  */
2809
2810 int
2811 ada_array_arity (struct type *type)
2812 {
2813   int arity;
2814
2815   if (type == NULL)
2816     return 0;
2817
2818   type = desc_base_type (type);
2819
2820   arity = 0;
2821   if (type->code () == TYPE_CODE_STRUCT)
2822     return desc_arity (desc_bounds_type (type));
2823   else
2824     while (type->code () == TYPE_CODE_ARRAY)
2825       {
2826         arity += 1;
2827         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2828       }
2829
2830   return arity;
2831 }
2832
2833 /* If TYPE is a record type in the form of a standard GNAT array
2834    descriptor or a simple array type, returns the element type for
2835    TYPE after indexing by NINDICES indices, or by all indices if
2836    NINDICES is -1.  Otherwise, returns NULL.  */
2837
2838 struct type *
2839 ada_array_element_type (struct type *type, int nindices)
2840 {
2841   type = desc_base_type (type);
2842
2843   if (type->code () == TYPE_CODE_STRUCT)
2844     {
2845       int k;
2846       struct type *p_array_type;
2847
2848       p_array_type = desc_data_target_type (type);
2849
2850       k = ada_array_arity (type);
2851       if (k == 0)
2852         return NULL;
2853
2854       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2855       if (nindices >= 0 && k > nindices)
2856         k = nindices;
2857       while (k > 0 && p_array_type != NULL)
2858         {
2859           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2860           k -= 1;
2861         }
2862       return p_array_type;
2863     }
2864   else if (type->code () == TYPE_CODE_ARRAY)
2865     {
2866       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2867         {
2868           type = TYPE_TARGET_TYPE (type);
2869           nindices -= 1;
2870         }
2871       return type;
2872     }
2873
2874   return NULL;
2875 }
2876
2877 /* The type of nth index in arrays of given type (n numbering from 1).
2878    Does not examine memory.  Throws an error if N is invalid or TYPE
2879    is not an array type.  NAME is the name of the Ada attribute being
2880    evaluated ('range, 'first, 'last, or 'length); it is used in building
2881    the error message.  */
2882
2883 static struct type *
2884 ada_index_type (struct type *type, int n, const char *name)
2885 {
2886   struct type *result_type;
2887
2888   type = desc_base_type (type);
2889
2890   if (n < 0 || n > ada_array_arity (type))
2891     error (_("invalid dimension number to '%s"), name);
2892
2893   if (ada_is_simple_array_type (type))
2894     {
2895       int i;
2896
2897       for (i = 1; i < n; i += 1)
2898         type = TYPE_TARGET_TYPE (type);
2899       result_type = TYPE_TARGET_TYPE (type->index_type ());
2900       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2901          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2902          perhaps stabsread.c would make more sense.  */
2903       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2904         result_type = NULL;
2905     }
2906   else
2907     {
2908       result_type = desc_index_type (desc_bounds_type (type), n);
2909       if (result_type == NULL)
2910         error (_("attempt to take bound of something that is not an array"));
2911     }
2912
2913   return result_type;
2914 }
2915
2916 /* Given that arr is an array type, returns the lower bound of the
2917    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2918    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2919    array-descriptor type.  It works for other arrays with bounds supplied
2920    by run-time quantities other than discriminants.  */
2921
2922 static LONGEST
2923 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2924 {
2925   struct type *type, *index_type_desc, *index_type;
2926   int i;
2927
2928   gdb_assert (which == 0 || which == 1);
2929
2930   if (ada_is_constrained_packed_array_type (arr_type))
2931     arr_type = decode_constrained_packed_array_type (arr_type);
2932
2933   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2934     return (LONGEST) - which;
2935
2936   if (arr_type->code () == TYPE_CODE_PTR)
2937     type = TYPE_TARGET_TYPE (arr_type);
2938   else
2939     type = arr_type;
2940
2941   if (TYPE_FIXED_INSTANCE (type))
2942     {
2943       /* The array has already been fixed, so we do not need to
2944          check the parallel ___XA type again.  That encoding has
2945          already been applied, so ignore it now.  */
2946       index_type_desc = NULL;
2947     }
2948   else
2949     {
2950       index_type_desc = ada_find_parallel_type (type, "___XA");
2951       ada_fixup_array_indexes_type (index_type_desc);
2952     }
2953
2954   if (index_type_desc != NULL)
2955     index_type = to_fixed_range_type (index_type_desc->field (n - 1).type (),
2956                                       NULL);
2957   else
2958     {
2959       struct type *elt_type = check_typedef (type);
2960
2961       for (i = 1; i < n; i++)
2962         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2963
2964       index_type = elt_type->index_type ();
2965     }
2966
2967   return
2968     (LONGEST) (which == 0
2969                ? ada_discrete_type_low_bound (index_type)
2970                : ada_discrete_type_high_bound (index_type));
2971 }
2972
2973 /* Given that arr is an array value, returns the lower bound of the
2974    nth index (numbering from 1) if WHICH is 0, and the upper bound if
2975    WHICH is 1.  This routine will also work for arrays with bounds
2976    supplied by run-time quantities other than discriminants.  */
2977
2978 static LONGEST
2979 ada_array_bound (struct value *arr, int n, int which)
2980 {
2981   struct type *arr_type;
2982
2983   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2984     arr = value_ind (arr);
2985   arr_type = value_enclosing_type (arr);
2986
2987   if (ada_is_constrained_packed_array_type (arr_type))
2988     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
2989   else if (ada_is_simple_array_type (arr_type))
2990     return ada_array_bound_from_type (arr_type, n, which);
2991   else
2992     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
2993 }
2994
2995 /* Given that arr is an array value, returns the length of the
2996    nth index.  This routine will also work for arrays with bounds
2997    supplied by run-time quantities other than discriminants.
2998    Does not work for arrays indexed by enumeration types with representation
2999    clauses at the moment.  */
3000
3001 static LONGEST
3002 ada_array_length (struct value *arr, int n)
3003 {
3004   struct type *arr_type, *index_type;
3005   int low, high;
3006
3007   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3008     arr = value_ind (arr);
3009   arr_type = value_enclosing_type (arr);
3010
3011   if (ada_is_constrained_packed_array_type (arr_type))
3012     return ada_array_length (decode_constrained_packed_array (arr), n);
3013
3014   if (ada_is_simple_array_type (arr_type))
3015     {
3016       low = ada_array_bound_from_type (arr_type, n, 0);
3017       high = ada_array_bound_from_type (arr_type, n, 1);
3018     }
3019   else
3020     {
3021       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3022       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3023     }
3024
3025   arr_type = check_typedef (arr_type);
3026   index_type = ada_index_type (arr_type, n, "length");
3027   if (index_type != NULL)
3028     {
3029       struct type *base_type;
3030       if (index_type->code () == TYPE_CODE_RANGE)
3031         base_type = TYPE_TARGET_TYPE (index_type);
3032       else
3033         base_type = index_type;
3034
3035       low = pos_atr (value_from_longest (base_type, low));
3036       high = pos_atr (value_from_longest (base_type, high));
3037     }
3038   return high - low + 1;
3039 }
3040
3041 /* An array whose type is that of ARR_TYPE (an array type), with
3042    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3043    less than LOW, then LOW-1 is used.  */
3044
3045 static struct value *
3046 empty_array (struct type *arr_type, int low, int high)
3047 {
3048   struct type *arr_type0 = ada_check_typedef (arr_type);
3049   struct type *index_type
3050     = create_static_range_type
3051         (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
3052          high < low ? low - 1 : high);
3053   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3054
3055   return allocate_value (create_array_type (NULL, elt_type, index_type));
3056 }
3057 \f
3058
3059                                 /* Name resolution */
3060
3061 /* The "decoded" name for the user-definable Ada operator corresponding
3062    to OP.  */
3063
3064 static const char *
3065 ada_decoded_op_name (enum exp_opcode op)
3066 {
3067   int i;
3068
3069   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3070     {
3071       if (ada_opname_table[i].op == op)
3072         return ada_opname_table[i].decoded;
3073     }
3074   error (_("Could not find operator name for opcode"));
3075 }
3076
3077 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3078    in a listing of choices during disambiguation (see sort_choices, below).
3079    The idea is that overloadings of a subprogram name from the
3080    same package should sort in their source order.  We settle for ordering
3081    such symbols by their trailing number (__N  or $N).  */
3082
3083 static int
3084 encoded_ordered_before (const char *N0, const char *N1)
3085 {
3086   if (N1 == NULL)
3087     return 0;
3088   else if (N0 == NULL)
3089     return 1;
3090   else
3091     {
3092       int k0, k1;
3093
3094       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3095         ;
3096       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3097         ;
3098       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3099           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3100         {
3101           int n0, n1;
3102
3103           n0 = k0;
3104           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3105             n0 -= 1;
3106           n1 = k1;
3107           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3108             n1 -= 1;
3109           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3110             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3111         }
3112       return (strcmp (N0, N1) < 0);
3113     }
3114 }
3115
3116 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3117    encoded names.  */
3118
3119 static void
3120 sort_choices (struct block_symbol syms[], int nsyms)
3121 {
3122   int i;
3123
3124   for (i = 1; i < nsyms; i += 1)
3125     {
3126       struct block_symbol sym = syms[i];
3127       int j;
3128
3129       for (j = i - 1; j >= 0; j -= 1)
3130         {
3131           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3132                                       sym.symbol->linkage_name ()))
3133             break;
3134           syms[j + 1] = syms[j];
3135         }
3136       syms[j + 1] = sym;
3137     }
3138 }
3139
3140 /* Whether GDB should display formals and return types for functions in the
3141    overloads selection menu.  */
3142 static bool print_signatures = true;
3143
3144 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3145    all but functions, the signature is just the name of the symbol.  For
3146    functions, this is the name of the function, the list of types for formals
3147    and the return type (if any).  */
3148
3149 static void
3150 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3151                             const struct type_print_options *flags)
3152 {
3153   struct type *type = SYMBOL_TYPE (sym);
3154
3155   fprintf_filtered (stream, "%s", sym->print_name ());
3156   if (!print_signatures
3157       || type == NULL
3158       || type->code () != TYPE_CODE_FUNC)
3159     return;
3160
3161   if (type->num_fields () > 0)
3162     {
3163       int i;
3164
3165       fprintf_filtered (stream, " (");
3166       for (i = 0; i < type->num_fields (); ++i)
3167         {
3168           if (i > 0)
3169             fprintf_filtered (stream, "; ");
3170           ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
3171                           flags);
3172         }
3173       fprintf_filtered (stream, ")");
3174     }
3175   if (TYPE_TARGET_TYPE (type) != NULL
3176       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3177     {
3178       fprintf_filtered (stream, " return ");
3179       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3180     }
3181 }
3182
3183 /* Read and validate a set of numeric choices from the user in the
3184    range 0 .. N_CHOICES-1.  Place the results in increasing
3185    order in CHOICES[0 .. N-1], and return N.
3186
3187    The user types choices as a sequence of numbers on one line
3188    separated by blanks, encoding them as follows:
3189
3190      + A choice of 0 means to cancel the selection, throwing an error.
3191      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3192      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3193
3194    The user is not allowed to choose more than MAX_RESULTS values.
3195
3196    ANNOTATION_SUFFIX, if present, is used to annotate the input
3197    prompts (for use with the -f switch).  */
3198
3199 static int
3200 get_selections (int *choices, int n_choices, int max_results,
3201                 int is_all_choice, const char *annotation_suffix)
3202 {
3203   const char *args;
3204   const char *prompt;
3205   int n_chosen;
3206   int first_choice = is_all_choice ? 2 : 1;
3207
3208   prompt = getenv ("PS2");
3209   if (prompt == NULL)
3210     prompt = "> ";
3211
3212   args = command_line_input (prompt, annotation_suffix);
3213
3214   if (args == NULL)
3215     error_no_arg (_("one or more choice numbers"));
3216
3217   n_chosen = 0;
3218
3219   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3220      order, as given in args.  Choices are validated.  */
3221   while (1)
3222     {
3223       char *args2;
3224       int choice, j;
3225
3226       args = skip_spaces (args);
3227       if (*args == '\0' && n_chosen == 0)
3228         error_no_arg (_("one or more choice numbers"));
3229       else if (*args == '\0')
3230         break;
3231
3232       choice = strtol (args, &args2, 10);
3233       if (args == args2 || choice < 0
3234           || choice > n_choices + first_choice - 1)
3235         error (_("Argument must be choice number"));
3236       args = args2;
3237
3238       if (choice == 0)
3239         error (_("cancelled"));
3240
3241       if (choice < first_choice)
3242         {
3243           n_chosen = n_choices;
3244           for (j = 0; j < n_choices; j += 1)
3245             choices[j] = j;
3246           break;
3247         }
3248       choice -= first_choice;
3249
3250       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3251         {
3252         }
3253
3254       if (j < 0 || choice != choices[j])
3255         {
3256           int k;
3257
3258           for (k = n_chosen - 1; k > j; k -= 1)
3259             choices[k + 1] = choices[k];
3260           choices[j + 1] = choice;
3261           n_chosen += 1;
3262         }
3263     }
3264
3265   if (n_chosen > max_results)
3266     error (_("Select no more than %d of the above"), max_results);
3267
3268   return n_chosen;
3269 }
3270
3271 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3272    by asking the user (if necessary), returning the number selected,
3273    and setting the first elements of SYMS items.  Error if no symbols
3274    selected.  */
3275
3276 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3277    to be re-integrated one of these days.  */
3278
3279 static int
3280 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3281 {
3282   int i;
3283   int *chosen = XALLOCAVEC (int , nsyms);
3284   int n_chosen;
3285   int first_choice = (max_results == 1) ? 1 : 2;
3286   const char *select_mode = multiple_symbols_select_mode ();
3287
3288   if (max_results < 1)
3289     error (_("Request to select 0 symbols!"));
3290   if (nsyms <= 1)
3291     return nsyms;
3292
3293   if (select_mode == multiple_symbols_cancel)
3294     error (_("\
3295 canceled because the command is ambiguous\n\
3296 See set/show multiple-symbol."));
3297
3298   /* If select_mode is "all", then return all possible symbols.
3299      Only do that if more than one symbol can be selected, of course.
3300      Otherwise, display the menu as usual.  */
3301   if (select_mode == multiple_symbols_all && max_results > 1)
3302     return nsyms;
3303
3304   printf_filtered (_("[0] cancel\n"));
3305   if (max_results > 1)
3306     printf_filtered (_("[1] all\n"));
3307
3308   sort_choices (syms, nsyms);
3309
3310   for (i = 0; i < nsyms; i += 1)
3311     {
3312       if (syms[i].symbol == NULL)
3313         continue;
3314
3315       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3316         {
3317           struct symtab_and_line sal =
3318             find_function_start_sal (syms[i].symbol, 1);
3319
3320           printf_filtered ("[%d] ", i + first_choice);
3321           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3322                                       &type_print_raw_options);
3323           if (sal.symtab == NULL)
3324             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3325                              metadata_style.style ().ptr (), nullptr, sal.line);
3326           else
3327             printf_filtered
3328               (_(" at %ps:%d\n"),
3329                styled_string (file_name_style.style (),
3330                               symtab_to_filename_for_display (sal.symtab)),
3331                sal.line);
3332           continue;
3333         }
3334       else
3335         {
3336           int is_enumeral =
3337             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3338              && SYMBOL_TYPE (syms[i].symbol) != NULL
3339              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3340           struct symtab *symtab = NULL;
3341
3342           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3343             symtab = symbol_symtab (syms[i].symbol);
3344
3345           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3346             {
3347               printf_filtered ("[%d] ", i + first_choice);
3348               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3349                                           &type_print_raw_options);
3350               printf_filtered (_(" at %s:%d\n"),
3351                                symtab_to_filename_for_display (symtab),
3352                                SYMBOL_LINE (syms[i].symbol));
3353             }
3354           else if (is_enumeral
3355                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3356             {
3357               printf_filtered (("[%d] "), i + first_choice);
3358               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3359                               gdb_stdout, -1, 0, &type_print_raw_options);
3360               printf_filtered (_("'(%s) (enumeral)\n"),
3361                                syms[i].symbol->print_name ());
3362             }
3363           else
3364             {
3365               printf_filtered ("[%d] ", i + first_choice);
3366               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3367                                           &type_print_raw_options);
3368
3369               if (symtab != NULL)
3370                 printf_filtered (is_enumeral
3371                                  ? _(" in %s (enumeral)\n")
3372                                  : _(" at %s:?\n"),
3373                                  symtab_to_filename_for_display (symtab));
3374               else
3375                 printf_filtered (is_enumeral
3376                                  ? _(" (enumeral)\n")
3377                                  : _(" at ?\n"));
3378             }
3379         }
3380     }
3381
3382   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3383                              "overload-choice");
3384
3385   for (i = 0; i < n_chosen; i += 1)
3386     syms[i] = syms[chosen[i]];
3387
3388   return n_chosen;
3389 }
3390
3391 /* Resolve the operator of the subexpression beginning at
3392    position *POS of *EXPP.  "Resolving" consists of replacing
3393    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3394    with their resolutions, replacing built-in operators with
3395    function calls to user-defined operators, where appropriate, and,
3396    when DEPROCEDURE_P is non-zero, converting function-valued variables
3397    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3398    are as in ada_resolve, above.  */
3399
3400 static struct value *
3401 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3402                 struct type *context_type, int parse_completion,
3403                 innermost_block_tracker *tracker)
3404 {
3405   int pc = *pos;
3406   int i;
3407   struct expression *exp;       /* Convenience: == *expp.  */
3408   enum exp_opcode op = (*expp)->elts[pc].opcode;
3409   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3410   int nargs;                    /* Number of operands.  */
3411   int oplen;
3412
3413   argvec = NULL;
3414   nargs = 0;
3415   exp = expp->get ();
3416
3417   /* Pass one: resolve operands, saving their types and updating *pos,
3418      if needed.  */
3419   switch (op)
3420     {
3421     case OP_FUNCALL:
3422       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3423           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3424         *pos += 7;
3425       else
3426         {
3427           *pos += 3;
3428           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3429         }
3430       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3431       break;
3432
3433     case UNOP_ADDR:
3434       *pos += 1;
3435       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3436       break;
3437
3438     case UNOP_QUAL:
3439       *pos += 3;
3440       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3441                       parse_completion, tracker);
3442       break;
3443
3444     case OP_ATR_MODULUS:
3445     case OP_ATR_SIZE:
3446     case OP_ATR_TAG:
3447     case OP_ATR_FIRST:
3448     case OP_ATR_LAST:
3449     case OP_ATR_LENGTH:
3450     case OP_ATR_POS:
3451     case OP_ATR_VAL:
3452     case OP_ATR_MIN:
3453     case OP_ATR_MAX:
3454     case TERNOP_IN_RANGE:
3455     case BINOP_IN_BOUNDS:
3456     case UNOP_IN_RANGE:
3457     case OP_AGGREGATE:
3458     case OP_OTHERS:
3459     case OP_CHOICES:
3460     case OP_POSITIONAL:
3461     case OP_DISCRETE_RANGE:
3462     case OP_NAME:
3463       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3464       *pos += oplen;
3465       break;
3466
3467     case BINOP_ASSIGN:
3468       {
3469         struct value *arg1;
3470
3471         *pos += 1;
3472         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3473         if (arg1 == NULL)
3474           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3475         else
3476           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3477                           tracker);
3478         break;
3479       }
3480
3481     case UNOP_CAST:
3482       *pos += 3;
3483       nargs = 1;
3484       break;
3485
3486     case BINOP_ADD:
3487     case BINOP_SUB:
3488     case BINOP_MUL:
3489     case BINOP_DIV:
3490     case BINOP_REM:
3491     case BINOP_MOD:
3492     case BINOP_EXP:
3493     case BINOP_CONCAT:
3494     case BINOP_LOGICAL_AND:
3495     case BINOP_LOGICAL_OR:
3496     case BINOP_BITWISE_AND:
3497     case BINOP_BITWISE_IOR:
3498     case BINOP_BITWISE_XOR:
3499
3500     case BINOP_EQUAL:
3501     case BINOP_NOTEQUAL:
3502     case BINOP_LESS:
3503     case BINOP_GTR:
3504     case BINOP_LEQ:
3505     case BINOP_GEQ:
3506
3507     case BINOP_REPEAT:
3508     case BINOP_SUBSCRIPT:
3509     case BINOP_COMMA:
3510       *pos += 1;
3511       nargs = 2;
3512       break;
3513
3514     case UNOP_NEG:
3515     case UNOP_PLUS:
3516     case UNOP_LOGICAL_NOT:
3517     case UNOP_ABS:
3518     case UNOP_IND:
3519       *pos += 1;
3520       nargs = 1;
3521       break;
3522
3523     case OP_LONG:
3524     case OP_FLOAT:
3525     case OP_VAR_VALUE:
3526     case OP_VAR_MSYM_VALUE:
3527       *pos += 4;
3528       break;
3529
3530     case OP_TYPE:
3531     case OP_BOOL:
3532     case OP_LAST:
3533     case OP_INTERNALVAR:
3534       *pos += 3;
3535       break;
3536
3537     case UNOP_MEMVAL:
3538       *pos += 3;
3539       nargs = 1;
3540       break;
3541
3542     case OP_REGISTER:
3543       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3544       break;
3545
3546     case STRUCTOP_STRUCT:
3547       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3548       nargs = 1;
3549       break;
3550
3551     case TERNOP_SLICE:
3552       *pos += 1;
3553       nargs = 3;
3554       break;
3555
3556     case OP_STRING:
3557       break;
3558
3559     default:
3560       error (_("Unexpected operator during name resolution"));
3561     }
3562
3563   argvec = XALLOCAVEC (struct value *, nargs + 1);
3564   for (i = 0; i < nargs; i += 1)
3565     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3566                                 tracker);
3567   argvec[i] = NULL;
3568   exp = expp->get ();
3569
3570   /* Pass two: perform any resolution on principal operator.  */
3571   switch (op)
3572     {
3573     default:
3574       break;
3575
3576     case OP_VAR_VALUE:
3577       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3578         {
3579           std::vector<struct block_symbol> candidates;
3580           int n_candidates;
3581
3582           n_candidates =
3583             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3584                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3585                                     &candidates);
3586
3587           if (n_candidates > 1)
3588             {
3589               /* Types tend to get re-introduced locally, so if there
3590                  are any local symbols that are not types, first filter
3591                  out all types.  */
3592               int j;
3593               for (j = 0; j < n_candidates; j += 1)
3594                 switch (SYMBOL_CLASS (candidates[j].symbol))
3595                   {
3596                   case LOC_REGISTER:
3597                   case LOC_ARG:
3598                   case LOC_REF_ARG:
3599                   case LOC_REGPARM_ADDR:
3600                   case LOC_LOCAL:
3601                   case LOC_COMPUTED:
3602                     goto FoundNonType;
3603                   default:
3604                     break;
3605                   }
3606             FoundNonType:
3607               if (j < n_candidates)
3608                 {
3609                   j = 0;
3610                   while (j < n_candidates)
3611                     {
3612                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3613                         {
3614                           candidates[j] = candidates[n_candidates - 1];
3615                           n_candidates -= 1;
3616                         }
3617                       else
3618                         j += 1;
3619                     }
3620                 }
3621             }
3622
3623           if (n_candidates == 0)
3624             error (_("No definition found for %s"),
3625                    exp->elts[pc + 2].symbol->print_name ());
3626           else if (n_candidates == 1)
3627             i = 0;
3628           else if (deprocedure_p
3629                    && !is_nonfunction (candidates.data (), n_candidates))
3630             {
3631               i = ada_resolve_function
3632                 (candidates.data (), n_candidates, NULL, 0,
3633                  exp->elts[pc + 2].symbol->linkage_name (),
3634                  context_type, parse_completion);
3635               if (i < 0)
3636                 error (_("Could not find a match for %s"),
3637                        exp->elts[pc + 2].symbol->print_name ());
3638             }
3639           else
3640             {
3641               printf_filtered (_("Multiple matches for %s\n"),
3642                                exp->elts[pc + 2].symbol->print_name ());
3643               user_select_syms (candidates.data (), n_candidates, 1);
3644               i = 0;
3645             }
3646
3647           exp->elts[pc + 1].block = candidates[i].block;
3648           exp->elts[pc + 2].symbol = candidates[i].symbol;
3649           tracker->update (candidates[i]);
3650         }
3651
3652       if (deprocedure_p
3653           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3654               == TYPE_CODE_FUNC))
3655         {
3656           replace_operator_with_call (expp, pc, 0, 4,
3657                                       exp->elts[pc + 2].symbol,
3658                                       exp->elts[pc + 1].block);
3659           exp = expp->get ();
3660         }
3661       break;
3662
3663     case OP_FUNCALL:
3664       {
3665         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3666             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3667           {
3668             std::vector<struct block_symbol> candidates;
3669             int n_candidates;
3670
3671             n_candidates =
3672               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3673                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3674                                       &candidates);
3675
3676             if (n_candidates == 1)
3677               i = 0;
3678             else
3679               {
3680                 i = ada_resolve_function
3681                   (candidates.data (), n_candidates,
3682                    argvec, nargs,
3683                    exp->elts[pc + 5].symbol->linkage_name (),
3684                    context_type, parse_completion);
3685                 if (i < 0)
3686                   error (_("Could not find a match for %s"),
3687                          exp->elts[pc + 5].symbol->print_name ());
3688               }
3689
3690             exp->elts[pc + 4].block = candidates[i].block;
3691             exp->elts[pc + 5].symbol = candidates[i].symbol;
3692             tracker->update (candidates[i]);
3693           }
3694       }
3695       break;
3696     case BINOP_ADD:
3697     case BINOP_SUB:
3698     case BINOP_MUL:
3699     case BINOP_DIV:
3700     case BINOP_REM:
3701     case BINOP_MOD:
3702     case BINOP_CONCAT:
3703     case BINOP_BITWISE_AND:
3704     case BINOP_BITWISE_IOR:
3705     case BINOP_BITWISE_XOR:
3706     case BINOP_EQUAL:
3707     case BINOP_NOTEQUAL:
3708     case BINOP_LESS:
3709     case BINOP_GTR:
3710     case BINOP_LEQ:
3711     case BINOP_GEQ:
3712     case BINOP_EXP:
3713     case UNOP_NEG:
3714     case UNOP_PLUS:
3715     case UNOP_LOGICAL_NOT:
3716     case UNOP_ABS:
3717       if (possible_user_operator_p (op, argvec))
3718         {
3719           std::vector<struct block_symbol> candidates;
3720           int n_candidates;
3721
3722           n_candidates =
3723             ada_lookup_symbol_list (ada_decoded_op_name (op),
3724                                     NULL, VAR_DOMAIN,
3725                                     &candidates);
3726
3727           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3728                                     nargs, ada_decoded_op_name (op), NULL,
3729                                     parse_completion);
3730           if (i < 0)
3731             break;
3732
3733           replace_operator_with_call (expp, pc, nargs, 1,
3734                                       candidates[i].symbol,
3735                                       candidates[i].block);
3736           exp = expp->get ();
3737         }
3738       break;
3739
3740     case OP_TYPE:
3741     case OP_REGISTER:
3742       return NULL;
3743     }
3744
3745   *pos = pc;
3746   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3747     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3748                                     exp->elts[pc + 1].objfile,
3749                                     exp->elts[pc + 2].msymbol);
3750   else
3751     return evaluate_subexp_type (exp, pos);
3752 }
3753
3754 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3755    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3756    a non-pointer.  */
3757 /* The term "match" here is rather loose.  The match is heuristic and
3758    liberal.  */
3759
3760 static int
3761 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3762 {
3763   ftype = ada_check_typedef (ftype);
3764   atype = ada_check_typedef (atype);
3765
3766   if (ftype->code () == TYPE_CODE_REF)
3767     ftype = TYPE_TARGET_TYPE (ftype);
3768   if (atype->code () == TYPE_CODE_REF)
3769     atype = TYPE_TARGET_TYPE (atype);
3770
3771   switch (ftype->code ())
3772     {
3773     default:
3774       return ftype->code () == atype->code ();
3775     case TYPE_CODE_PTR:
3776       if (atype->code () == TYPE_CODE_PTR)
3777         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3778                                TYPE_TARGET_TYPE (atype), 0);
3779       else
3780         return (may_deref
3781                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3782     case TYPE_CODE_INT:
3783     case TYPE_CODE_ENUM:
3784     case TYPE_CODE_RANGE:
3785       switch (atype->code ())
3786         {
3787         case TYPE_CODE_INT:
3788         case TYPE_CODE_ENUM:
3789         case TYPE_CODE_RANGE:
3790           return 1;
3791         default:
3792           return 0;
3793         }
3794
3795     case TYPE_CODE_ARRAY:
3796       return (atype->code () == TYPE_CODE_ARRAY
3797               || ada_is_array_descriptor_type (atype));
3798
3799     case TYPE_CODE_STRUCT:
3800       if (ada_is_array_descriptor_type (ftype))
3801         return (atype->code () == TYPE_CODE_ARRAY
3802                 || ada_is_array_descriptor_type (atype));
3803       else
3804         return (atype->code () == TYPE_CODE_STRUCT
3805                 && !ada_is_array_descriptor_type (atype));
3806
3807     case TYPE_CODE_UNION:
3808     case TYPE_CODE_FLT:
3809       return (atype->code () == ftype->code ());
3810     }
3811 }
3812
3813 /* Return non-zero if the formals of FUNC "sufficiently match" the
3814    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3815    may also be an enumeral, in which case it is treated as a 0-
3816    argument function.  */
3817
3818 static int
3819 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3820 {
3821   int i;
3822   struct type *func_type = SYMBOL_TYPE (func);
3823
3824   if (SYMBOL_CLASS (func) == LOC_CONST
3825       && func_type->code () == TYPE_CODE_ENUM)
3826     return (n_actuals == 0);
3827   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3828     return 0;
3829
3830   if (func_type->num_fields () != n_actuals)
3831     return 0;
3832
3833   for (i = 0; i < n_actuals; i += 1)
3834     {
3835       if (actuals[i] == NULL)
3836         return 0;
3837       else
3838         {
3839           struct type *ftype = ada_check_typedef (func_type->field (i).type ());
3840           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3841
3842           if (!ada_type_match (ftype, atype, 1))
3843             return 0;
3844         }
3845     }
3846   return 1;
3847 }
3848
3849 /* False iff function type FUNC_TYPE definitely does not produce a value
3850    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3851    FUNC_TYPE is not a valid function type with a non-null return type
3852    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3853
3854 static int
3855 return_match (struct type *func_type, struct type *context_type)
3856 {
3857   struct type *return_type;
3858
3859   if (func_type == NULL)
3860     return 1;
3861
3862   if (func_type->code () == TYPE_CODE_FUNC)
3863     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3864   else
3865     return_type = get_base_type (func_type);
3866   if (return_type == NULL)
3867     return 1;
3868
3869   context_type = get_base_type (context_type);
3870
3871   if (return_type->code () == TYPE_CODE_ENUM)
3872     return context_type == NULL || return_type == context_type;
3873   else if (context_type == NULL)
3874     return return_type->code () != TYPE_CODE_VOID;
3875   else
3876     return return_type->code () == context_type->code ();
3877 }
3878
3879
3880 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3881    function (if any) that matches the types of the NARGS arguments in
3882    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3883    that returns that type, then eliminate matches that don't.  If
3884    CONTEXT_TYPE is void and there is at least one match that does not
3885    return void, eliminate all matches that do.
3886
3887    Asks the user if there is more than one match remaining.  Returns -1
3888    if there is no such symbol or none is selected.  NAME is used
3889    solely for messages.  May re-arrange and modify SYMS in
3890    the process; the index returned is for the modified vector.  */
3891
3892 static int
3893 ada_resolve_function (struct block_symbol syms[],
3894                       int nsyms, struct value **args, int nargs,
3895                       const char *name, struct type *context_type,
3896                       int parse_completion)
3897 {
3898   int fallback;
3899   int k;
3900   int m;                        /* Number of hits */
3901
3902   m = 0;
3903   /* In the first pass of the loop, we only accept functions matching
3904      context_type.  If none are found, we add a second pass of the loop
3905      where every function is accepted.  */
3906   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3907     {
3908       for (k = 0; k < nsyms; k += 1)
3909         {
3910           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3911
3912           if (ada_args_match (syms[k].symbol, args, nargs)
3913               && (fallback || return_match (type, context_type)))
3914             {
3915               syms[m] = syms[k];
3916               m += 1;
3917             }
3918         }
3919     }
3920
3921   /* If we got multiple matches, ask the user which one to use.  Don't do this
3922      interactive thing during completion, though, as the purpose of the
3923      completion is providing a list of all possible matches.  Prompting the
3924      user to filter it down would be completely unexpected in this case.  */
3925   if (m == 0)
3926     return -1;
3927   else if (m > 1 && !parse_completion)
3928     {
3929       printf_filtered (_("Multiple matches for %s\n"), name);
3930       user_select_syms (syms, m, 1);
3931       return 0;
3932     }
3933   return 0;
3934 }
3935
3936 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3937    on the function identified by SYM and BLOCK, and taking NARGS
3938    arguments.  Update *EXPP as needed to hold more space.  */
3939
3940 static void
3941 replace_operator_with_call (expression_up *expp, int pc, int nargs,
3942                             int oplen, struct symbol *sym,
3943                             const struct block *block)
3944 {
3945   /* A new expression, with 6 more elements (3 for funcall, 4 for function
3946      symbol, -oplen for operator being replaced).  */
3947   struct expression *newexp = (struct expression *)
3948     xzalloc (sizeof (struct expression)
3949              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3950   struct expression *exp = expp->get ();
3951
3952   newexp->nelts = exp->nelts + 7 - oplen;
3953   newexp->language_defn = exp->language_defn;
3954   newexp->gdbarch = exp->gdbarch;
3955   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3956   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3957           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3958
3959   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3960   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3961
3962   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3963   newexp->elts[pc + 4].block = block;
3964   newexp->elts[pc + 5].symbol = sym;
3965
3966   expp->reset (newexp);
3967 }
3968
3969 /* Type-class predicates */
3970
3971 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3972    or FLOAT).  */
3973
3974 static int
3975 numeric_type_p (struct type *type)
3976 {
3977   if (type == NULL)
3978     return 0;
3979   else
3980     {
3981       switch (type->code ())
3982         {
3983         case TYPE_CODE_INT:
3984         case TYPE_CODE_FLT:
3985           return 1;
3986         case TYPE_CODE_RANGE:
3987           return (type == TYPE_TARGET_TYPE (type)
3988                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
3989         default:
3990           return 0;
3991         }
3992     }
3993 }
3994
3995 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
3996
3997 static int
3998 integer_type_p (struct type *type)
3999 {
4000   if (type == NULL)
4001     return 0;
4002   else
4003     {
4004       switch (type->code ())
4005         {
4006         case TYPE_CODE_INT:
4007           return 1;
4008         case TYPE_CODE_RANGE:
4009           return (type == TYPE_TARGET_TYPE (type)
4010                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4011         default:
4012           return 0;
4013         }
4014     }
4015 }
4016
4017 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4018
4019 static int
4020 scalar_type_p (struct type *type)
4021 {
4022   if (type == NULL)
4023     return 0;
4024   else
4025     {
4026       switch (type->code ())
4027         {
4028         case TYPE_CODE_INT:
4029         case TYPE_CODE_RANGE:
4030         case TYPE_CODE_ENUM:
4031         case TYPE_CODE_FLT:
4032           return 1;
4033         default:
4034           return 0;
4035         }
4036     }
4037 }
4038
4039 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4040
4041 static int
4042 discrete_type_p (struct type *type)
4043 {
4044   if (type == NULL)
4045     return 0;
4046   else
4047     {
4048       switch (type->code ())
4049         {
4050         case TYPE_CODE_INT:
4051         case TYPE_CODE_RANGE:
4052         case TYPE_CODE_ENUM:
4053         case TYPE_CODE_BOOL:
4054           return 1;
4055         default:
4056           return 0;
4057         }
4058     }
4059 }
4060
4061 /* Returns non-zero if OP with operands in the vector ARGS could be
4062    a user-defined function.  Errs on the side of pre-defined operators
4063    (i.e., result 0).  */
4064
4065 static int
4066 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4067 {
4068   struct type *type0 =
4069     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4070   struct type *type1 =
4071     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4072
4073   if (type0 == NULL)
4074     return 0;
4075
4076   switch (op)
4077     {
4078     default:
4079       return 0;
4080
4081     case BINOP_ADD:
4082     case BINOP_SUB:
4083     case BINOP_MUL:
4084     case BINOP_DIV:
4085       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4086
4087     case BINOP_REM:
4088     case BINOP_MOD:
4089     case BINOP_BITWISE_AND:
4090     case BINOP_BITWISE_IOR:
4091     case BINOP_BITWISE_XOR:
4092       return (!(integer_type_p (type0) && integer_type_p (type1)));
4093
4094     case BINOP_EQUAL:
4095     case BINOP_NOTEQUAL:
4096     case BINOP_LESS:
4097     case BINOP_GTR:
4098     case BINOP_LEQ:
4099     case BINOP_GEQ:
4100       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4101
4102     case BINOP_CONCAT:
4103       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4104
4105     case BINOP_EXP:
4106       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4107
4108     case UNOP_NEG:
4109     case UNOP_PLUS:
4110     case UNOP_LOGICAL_NOT:
4111     case UNOP_ABS:
4112       return (!numeric_type_p (type0));
4113
4114     }
4115 }
4116 \f
4117                                 /* Renaming */
4118
4119 /* NOTES: 
4120
4121    1. In the following, we assume that a renaming type's name may
4122       have an ___XD suffix.  It would be nice if this went away at some
4123       point.
4124    2. We handle both the (old) purely type-based representation of 
4125       renamings and the (new) variable-based encoding.  At some point,
4126       it is devoutly to be hoped that the former goes away 
4127       (FIXME: hilfinger-2007-07-09).
4128    3. Subprogram renamings are not implemented, although the XRS
4129       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4130
4131 /* If SYM encodes a renaming, 
4132
4133        <renaming> renames <renamed entity>,
4134
4135    sets *LEN to the length of the renamed entity's name,
4136    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4137    the string describing the subcomponent selected from the renamed
4138    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4139    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4140    are undefined).  Otherwise, returns a value indicating the category
4141    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4142    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4143    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4144    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4145    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4146    may be NULL, in which case they are not assigned.
4147
4148    [Currently, however, GCC does not generate subprogram renamings.]  */
4149
4150 enum ada_renaming_category
4151 ada_parse_renaming (struct symbol *sym,
4152                     const char **renamed_entity, int *len, 
4153                     const char **renaming_expr)
4154 {
4155   enum ada_renaming_category kind;
4156   const char *info;
4157   const char *suffix;
4158
4159   if (sym == NULL)
4160     return ADA_NOT_RENAMING;
4161   switch (SYMBOL_CLASS (sym)) 
4162     {
4163     default:
4164       return ADA_NOT_RENAMING;
4165     case LOC_LOCAL:
4166     case LOC_STATIC:
4167     case LOC_COMPUTED:
4168     case LOC_OPTIMIZED_OUT:
4169       info = strstr (sym->linkage_name (), "___XR");
4170       if (info == NULL)
4171         return ADA_NOT_RENAMING;
4172       switch (info[5])
4173         {
4174         case '_':
4175           kind = ADA_OBJECT_RENAMING;
4176           info += 6;
4177           break;
4178         case 'E':
4179           kind = ADA_EXCEPTION_RENAMING;
4180           info += 7;
4181           break;
4182         case 'P':
4183           kind = ADA_PACKAGE_RENAMING;
4184           info += 7;
4185           break;
4186         case 'S':
4187           kind = ADA_SUBPROGRAM_RENAMING;
4188           info += 7;
4189           break;
4190         default:
4191           return ADA_NOT_RENAMING;
4192         }
4193     }
4194
4195   if (renamed_entity != NULL)
4196     *renamed_entity = info;
4197   suffix = strstr (info, "___XE");
4198   if (suffix == NULL || suffix == info)
4199     return ADA_NOT_RENAMING;
4200   if (len != NULL)
4201     *len = strlen (info) - strlen (suffix);
4202   suffix += 5;
4203   if (renaming_expr != NULL)
4204     *renaming_expr = suffix;
4205   return kind;
4206 }
4207
4208 /* Compute the value of the given RENAMING_SYM, which is expected to
4209    be a symbol encoding a renaming expression.  BLOCK is the block
4210    used to evaluate the renaming.  */
4211
4212 static struct value *
4213 ada_read_renaming_var_value (struct symbol *renaming_sym,
4214                              const struct block *block)
4215 {
4216   const char *sym_name;
4217
4218   sym_name = renaming_sym->linkage_name ();
4219   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4220   return evaluate_expression (expr.get ());
4221 }
4222 \f
4223
4224                                 /* Evaluation: Function Calls */
4225
4226 /* Return an lvalue containing the value VAL.  This is the identity on
4227    lvalues, and otherwise has the side-effect of allocating memory
4228    in the inferior where a copy of the value contents is copied.  */
4229
4230 static struct value *
4231 ensure_lval (struct value *val)
4232 {
4233   if (VALUE_LVAL (val) == not_lval
4234       || VALUE_LVAL (val) == lval_internalvar)
4235     {
4236       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4237       const CORE_ADDR addr =
4238         value_as_long (value_allocate_space_in_inferior (len));
4239
4240       VALUE_LVAL (val) = lval_memory;
4241       set_value_address (val, addr);
4242       write_memory (addr, value_contents (val), len);
4243     }
4244
4245   return val;
4246 }
4247
4248 /* Given ARG, a value of type (pointer or reference to a)*
4249    structure/union, extract the component named NAME from the ultimate
4250    target structure/union and return it as a value with its
4251    appropriate type.
4252
4253    The routine searches for NAME among all members of the structure itself
4254    and (recursively) among all members of any wrapper members
4255    (e.g., '_parent').
4256
4257    If NO_ERR, then simply return NULL in case of error, rather than
4258    calling error.  */
4259
4260 static struct value *
4261 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4262 {
4263   struct type *t, *t1;
4264   struct value *v;
4265   int check_tag;
4266
4267   v = NULL;
4268   t1 = t = ada_check_typedef (value_type (arg));
4269   if (t->code () == TYPE_CODE_REF)
4270     {
4271       t1 = TYPE_TARGET_TYPE (t);
4272       if (t1 == NULL)
4273         goto BadValue;
4274       t1 = ada_check_typedef (t1);
4275       if (t1->code () == TYPE_CODE_PTR)
4276         {
4277           arg = coerce_ref (arg);
4278           t = t1;
4279         }
4280     }
4281
4282   while (t->code () == TYPE_CODE_PTR)
4283     {
4284       t1 = TYPE_TARGET_TYPE (t);
4285       if (t1 == NULL)
4286         goto BadValue;
4287       t1 = ada_check_typedef (t1);
4288       if (t1->code () == TYPE_CODE_PTR)
4289         {
4290           arg = value_ind (arg);
4291           t = t1;
4292         }
4293       else
4294         break;
4295     }
4296
4297   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4298     goto BadValue;
4299
4300   if (t1 == t)
4301     v = ada_search_struct_field (name, arg, 0, t);
4302   else
4303     {
4304       int bit_offset, bit_size, byte_offset;
4305       struct type *field_type;
4306       CORE_ADDR address;
4307
4308       if (t->code () == TYPE_CODE_PTR)
4309         address = value_address (ada_value_ind (arg));
4310       else
4311         address = value_address (ada_coerce_ref (arg));
4312
4313       /* Check to see if this is a tagged type.  We also need to handle
4314          the case where the type is a reference to a tagged type, but
4315          we have to be careful to exclude pointers to tagged types.
4316          The latter should be shown as usual (as a pointer), whereas
4317          a reference should mostly be transparent to the user.  */
4318
4319       if (ada_is_tagged_type (t1, 0)
4320           || (t1->code () == TYPE_CODE_REF
4321               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4322         {
4323           /* We first try to find the searched field in the current type.
4324              If not found then let's look in the fixed type.  */
4325
4326           if (!find_struct_field (name, t1, 0,
4327                                   &field_type, &byte_offset, &bit_offset,
4328                                   &bit_size, NULL))
4329             check_tag = 1;
4330           else
4331             check_tag = 0;
4332         }
4333       else
4334         check_tag = 0;
4335
4336       /* Convert to fixed type in all cases, so that we have proper
4337          offsets to each field in unconstrained record types.  */
4338       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4339                               address, NULL, check_tag);
4340
4341       if (find_struct_field (name, t1, 0,
4342                              &field_type, &byte_offset, &bit_offset,
4343                              &bit_size, NULL))
4344         {
4345           if (bit_size != 0)
4346             {
4347               if (t->code () == TYPE_CODE_REF)
4348                 arg = ada_coerce_ref (arg);
4349               else
4350                 arg = ada_value_ind (arg);
4351               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4352                                                   bit_offset, bit_size,
4353                                                   field_type);
4354             }
4355           else
4356             v = value_at_lazy (field_type, address + byte_offset);
4357         }
4358     }
4359
4360   if (v != NULL || no_err)
4361     return v;
4362   else
4363     error (_("There is no member named %s."), name);
4364
4365  BadValue:
4366   if (no_err)
4367     return NULL;
4368   else
4369     error (_("Attempt to extract a component of "
4370              "a value that is not a record."));
4371 }
4372
4373 /* Return the value ACTUAL, converted to be an appropriate value for a
4374    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4375    allocating any necessary descriptors (fat pointers), or copies of
4376    values not residing in memory, updating it as needed.  */
4377
4378 struct value *
4379 ada_convert_actual (struct value *actual, struct type *formal_type0)
4380 {
4381   struct type *actual_type = ada_check_typedef (value_type (actual));
4382   struct type *formal_type = ada_check_typedef (formal_type0);
4383   struct type *formal_target =
4384     formal_type->code () == TYPE_CODE_PTR
4385     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4386   struct type *actual_target =
4387     actual_type->code () == TYPE_CODE_PTR
4388     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4389
4390   if (ada_is_array_descriptor_type (formal_target)
4391       && actual_target->code () == TYPE_CODE_ARRAY)
4392     return make_array_descriptor (formal_type, actual);
4393   else if (formal_type->code () == TYPE_CODE_PTR
4394            || formal_type->code () == TYPE_CODE_REF)
4395     {
4396       struct value *result;
4397
4398       if (formal_target->code () == TYPE_CODE_ARRAY
4399           && ada_is_array_descriptor_type (actual_target))
4400         result = desc_data (actual);
4401       else if (formal_type->code () != TYPE_CODE_PTR)
4402         {
4403           if (VALUE_LVAL (actual) != lval_memory)
4404             {
4405               struct value *val;
4406
4407               actual_type = ada_check_typedef (value_type (actual));
4408               val = allocate_value (actual_type);
4409               memcpy ((char *) value_contents_raw (val),
4410                       (char *) value_contents (actual),
4411                       TYPE_LENGTH (actual_type));
4412               actual = ensure_lval (val);
4413             }
4414           result = value_addr (actual);
4415         }
4416       else
4417         return actual;
4418       return value_cast_pointers (formal_type, result, 0);
4419     }
4420   else if (actual_type->code () == TYPE_CODE_PTR)
4421     return ada_value_ind (actual);
4422   else if (ada_is_aligner_type (formal_type))
4423     {
4424       /* We need to turn this parameter into an aligner type
4425          as well.  */
4426       struct value *aligner = allocate_value (formal_type);
4427       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4428
4429       value_assign_to_component (aligner, component, actual);
4430       return aligner;
4431     }
4432
4433   return actual;
4434 }
4435
4436 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4437    type TYPE.  This is usually an inefficient no-op except on some targets
4438    (such as AVR) where the representation of a pointer and an address
4439    differs.  */
4440
4441 static CORE_ADDR
4442 value_pointer (struct value *value, struct type *type)
4443 {
4444   struct gdbarch *gdbarch = get_type_arch (type);
4445   unsigned len = TYPE_LENGTH (type);
4446   gdb_byte *buf = (gdb_byte *) alloca (len);
4447   CORE_ADDR addr;
4448
4449   addr = value_address (value);
4450   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4451   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4452   return addr;
4453 }
4454
4455
4456 /* Push a descriptor of type TYPE for array value ARR on the stack at
4457    *SP, updating *SP to reflect the new descriptor.  Return either
4458    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4459    to-descriptor type rather than a descriptor type), a struct value *
4460    representing a pointer to this descriptor.  */
4461
4462 static struct value *
4463 make_array_descriptor (struct type *type, struct value *arr)
4464 {
4465   struct type *bounds_type = desc_bounds_type (type);
4466   struct type *desc_type = desc_base_type (type);
4467   struct value *descriptor = allocate_value (desc_type);
4468   struct value *bounds = allocate_value (bounds_type);
4469   int i;
4470
4471   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4472        i > 0; i -= 1)
4473     {
4474       modify_field (value_type (bounds), value_contents_writeable (bounds),
4475                     ada_array_bound (arr, i, 0),
4476                     desc_bound_bitpos (bounds_type, i, 0),
4477                     desc_bound_bitsize (bounds_type, i, 0));
4478       modify_field (value_type (bounds), value_contents_writeable (bounds),
4479                     ada_array_bound (arr, i, 1),
4480                     desc_bound_bitpos (bounds_type, i, 1),
4481                     desc_bound_bitsize (bounds_type, i, 1));
4482     }
4483
4484   bounds = ensure_lval (bounds);
4485
4486   modify_field (value_type (descriptor),
4487                 value_contents_writeable (descriptor),
4488                 value_pointer (ensure_lval (arr),
4489                                desc_type->field (0).type ()),
4490                 fat_pntr_data_bitpos (desc_type),
4491                 fat_pntr_data_bitsize (desc_type));
4492
4493   modify_field (value_type (descriptor),
4494                 value_contents_writeable (descriptor),
4495                 value_pointer (bounds,
4496                                desc_type->field (1).type ()),
4497                 fat_pntr_bounds_bitpos (desc_type),
4498                 fat_pntr_bounds_bitsize (desc_type));
4499
4500   descriptor = ensure_lval (descriptor);
4501
4502   if (type->code () == TYPE_CODE_PTR)
4503     return value_addr (descriptor);
4504   else
4505     return descriptor;
4506 }
4507 \f
4508                                 /* Symbol Cache Module */
4509
4510 /* Performance measurements made as of 2010-01-15 indicate that
4511    this cache does bring some noticeable improvements.  Depending
4512    on the type of entity being printed, the cache can make it as much
4513    as an order of magnitude faster than without it.
4514
4515    The descriptive type DWARF extension has significantly reduced
4516    the need for this cache, at least when DWARF is being used.  However,
4517    even in this case, some expensive name-based symbol searches are still
4518    sometimes necessary - to find an XVZ variable, mostly.  */
4519
4520 /* Initialize the contents of SYM_CACHE.  */
4521
4522 static void
4523 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4524 {
4525   obstack_init (&sym_cache->cache_space);
4526   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4527 }
4528
4529 /* Free the memory used by SYM_CACHE.  */
4530
4531 static void
4532 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4533 {
4534   obstack_free (&sym_cache->cache_space, NULL);
4535   xfree (sym_cache);
4536 }
4537
4538 /* Return the symbol cache associated to the given program space PSPACE.
4539    If not allocated for this PSPACE yet, allocate and initialize one.  */
4540
4541 static struct ada_symbol_cache *
4542 ada_get_symbol_cache (struct program_space *pspace)
4543 {
4544   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4545
4546   if (pspace_data->sym_cache == NULL)
4547     {
4548       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4549       ada_init_symbol_cache (pspace_data->sym_cache);
4550     }
4551
4552   return pspace_data->sym_cache;
4553 }
4554
4555 /* Clear all entries from the symbol cache.  */
4556
4557 static void
4558 ada_clear_symbol_cache (void)
4559 {
4560   struct ada_symbol_cache *sym_cache
4561     = ada_get_symbol_cache (current_program_space);
4562
4563   obstack_free (&sym_cache->cache_space, NULL);
4564   ada_init_symbol_cache (sym_cache);
4565 }
4566
4567 /* Search our cache for an entry matching NAME and DOMAIN.
4568    Return it if found, or NULL otherwise.  */
4569
4570 static struct cache_entry **
4571 find_entry (const char *name, domain_enum domain)
4572 {
4573   struct ada_symbol_cache *sym_cache
4574     = ada_get_symbol_cache (current_program_space);
4575   int h = msymbol_hash (name) % HASH_SIZE;
4576   struct cache_entry **e;
4577
4578   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4579     {
4580       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4581         return e;
4582     }
4583   return NULL;
4584 }
4585
4586 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4587    Return 1 if found, 0 otherwise.
4588
4589    If an entry was found and SYM is not NULL, set *SYM to the entry's
4590    SYM.  Same principle for BLOCK if not NULL.  */
4591
4592 static int
4593 lookup_cached_symbol (const char *name, domain_enum domain,
4594                       struct symbol **sym, const struct block **block)
4595 {
4596   struct cache_entry **e = find_entry (name, domain);
4597
4598   if (e == NULL)
4599     return 0;
4600   if (sym != NULL)
4601     *sym = (*e)->sym;
4602   if (block != NULL)
4603     *block = (*e)->block;
4604   return 1;
4605 }
4606
4607 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4608    in domain DOMAIN, save this result in our symbol cache.  */
4609
4610 static void
4611 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4612               const struct block *block)
4613 {
4614   struct ada_symbol_cache *sym_cache
4615     = ada_get_symbol_cache (current_program_space);
4616   int h;
4617   struct cache_entry *e;
4618
4619   /* Symbols for builtin types don't have a block.
4620      For now don't cache such symbols.  */
4621   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4622     return;
4623
4624   /* If the symbol is a local symbol, then do not cache it, as a search
4625      for that symbol depends on the context.  To determine whether
4626      the symbol is local or not, we check the block where we found it
4627      against the global and static blocks of its associated symtab.  */
4628   if (sym
4629       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4630                             GLOBAL_BLOCK) != block
4631       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4632                             STATIC_BLOCK) != block)
4633     return;
4634
4635   h = msymbol_hash (name) % HASH_SIZE;
4636   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4637   e->next = sym_cache->root[h];
4638   sym_cache->root[h] = e;
4639   e->name = obstack_strdup (&sym_cache->cache_space, name);
4640   e->sym = sym;
4641   e->domain = domain;
4642   e->block = block;
4643 }
4644 \f
4645                                 /* Symbol Lookup */
4646
4647 /* Return the symbol name match type that should be used used when
4648    searching for all symbols matching LOOKUP_NAME.
4649
4650    LOOKUP_NAME is expected to be a symbol name after transformation
4651    for Ada lookups.  */
4652
4653 static symbol_name_match_type
4654 name_match_type_from_name (const char *lookup_name)
4655 {
4656   return (strstr (lookup_name, "__") == NULL
4657           ? symbol_name_match_type::WILD
4658           : symbol_name_match_type::FULL);
4659 }
4660
4661 /* Return the result of a standard (literal, C-like) lookup of NAME in
4662    given DOMAIN, visible from lexical block BLOCK.  */
4663
4664 static struct symbol *
4665 standard_lookup (const char *name, const struct block *block,
4666                  domain_enum domain)
4667 {
4668   /* Initialize it just to avoid a GCC false warning.  */
4669   struct block_symbol sym = {};
4670
4671   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4672     return sym.symbol;
4673   ada_lookup_encoded_symbol (name, block, domain, &sym);
4674   cache_symbol (name, domain, sym.symbol, sym.block);
4675   return sym.symbol;
4676 }
4677
4678
4679 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4680    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4681    since they contend in overloading in the same way.  */
4682 static int
4683 is_nonfunction (struct block_symbol syms[], int n)
4684 {
4685   int i;
4686
4687   for (i = 0; i < n; i += 1)
4688     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4689         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4690             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4691       return 1;
4692
4693   return 0;
4694 }
4695
4696 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4697    struct types.  Otherwise, they may not.  */
4698
4699 static int
4700 equiv_types (struct type *type0, struct type *type1)
4701 {
4702   if (type0 == type1)
4703     return 1;
4704   if (type0 == NULL || type1 == NULL
4705       || type0->code () != type1->code ())
4706     return 0;
4707   if ((type0->code () == TYPE_CODE_STRUCT
4708        || type0->code () == TYPE_CODE_ENUM)
4709       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4710       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4711     return 1;
4712
4713   return 0;
4714 }
4715
4716 /* True iff SYM0 represents the same entity as SYM1, or one that is
4717    no more defined than that of SYM1.  */
4718
4719 static int
4720 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4721 {
4722   if (sym0 == sym1)
4723     return 1;
4724   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4725       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4726     return 0;
4727
4728   switch (SYMBOL_CLASS (sym0))
4729     {
4730     case LOC_UNDEF:
4731       return 1;
4732     case LOC_TYPEDEF:
4733       {
4734         struct type *type0 = SYMBOL_TYPE (sym0);
4735         struct type *type1 = SYMBOL_TYPE (sym1);
4736         const char *name0 = sym0->linkage_name ();
4737         const char *name1 = sym1->linkage_name ();
4738         int len0 = strlen (name0);
4739
4740         return
4741           type0->code () == type1->code ()
4742           && (equiv_types (type0, type1)
4743               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4744                   && startswith (name1 + len0, "___XV")));
4745       }
4746     case LOC_CONST:
4747       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4748         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4749
4750     case LOC_STATIC:
4751       {
4752         const char *name0 = sym0->linkage_name ();
4753         const char *name1 = sym1->linkage_name ();
4754         return (strcmp (name0, name1) == 0
4755                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4756       }
4757
4758     default:
4759       return 0;
4760     }
4761 }
4762
4763 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4764    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4765
4766 static void
4767 add_defn_to_vec (struct obstack *obstackp,
4768                  struct symbol *sym,
4769                  const struct block *block)
4770 {
4771   int i;
4772   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4773
4774   /* Do not try to complete stub types, as the debugger is probably
4775      already scanning all symbols matching a certain name at the
4776      time when this function is called.  Trying to replace the stub
4777      type by its associated full type will cause us to restart a scan
4778      which may lead to an infinite recursion.  Instead, the client
4779      collecting the matching symbols will end up collecting several
4780      matches, with at least one of them complete.  It can then filter
4781      out the stub ones if needed.  */
4782
4783   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4784     {
4785       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4786         return;
4787       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4788         {
4789           prevDefns[i].symbol = sym;
4790           prevDefns[i].block = block;
4791           return;
4792         }
4793     }
4794
4795   {
4796     struct block_symbol info;
4797
4798     info.symbol = sym;
4799     info.block = block;
4800     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4801   }
4802 }
4803
4804 /* Number of block_symbol structures currently collected in current vector in
4805    OBSTACKP.  */
4806
4807 static int
4808 num_defns_collected (struct obstack *obstackp)
4809 {
4810   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4811 }
4812
4813 /* Vector of block_symbol structures currently collected in current vector in
4814    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4815
4816 static struct block_symbol *
4817 defns_collected (struct obstack *obstackp, int finish)
4818 {
4819   if (finish)
4820     return (struct block_symbol *) obstack_finish (obstackp);
4821   else
4822     return (struct block_symbol *) obstack_base (obstackp);
4823 }
4824
4825 /* Return a bound minimal symbol matching NAME according to Ada
4826    decoding rules.  Returns an invalid symbol if there is no such
4827    minimal symbol.  Names prefixed with "standard__" are handled
4828    specially: "standard__" is first stripped off, and only static and
4829    global symbols are searched.  */
4830
4831 struct bound_minimal_symbol
4832 ada_lookup_simple_minsym (const char *name)
4833 {
4834   struct bound_minimal_symbol result;
4835
4836   memset (&result, 0, sizeof (result));
4837
4838   symbol_name_match_type match_type = name_match_type_from_name (name);
4839   lookup_name_info lookup_name (name, match_type);
4840
4841   symbol_name_matcher_ftype *match_name
4842     = ada_get_symbol_name_matcher (lookup_name);
4843
4844   for (objfile *objfile : current_program_space->objfiles ())
4845     {
4846       for (minimal_symbol *msymbol : objfile->msymbols ())
4847         {
4848           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4849               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4850             {
4851               result.minsym = msymbol;
4852               result.objfile = objfile;
4853               break;
4854             }
4855         }
4856     }
4857
4858   return result;
4859 }
4860
4861 /* For all subprograms that statically enclose the subprogram of the
4862    selected frame, add symbols matching identifier NAME in DOMAIN
4863    and their blocks to the list of data in OBSTACKP, as for
4864    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4865    with a wildcard prefix.  */
4866
4867 static void
4868 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4869                                   const lookup_name_info &lookup_name,
4870                                   domain_enum domain)
4871 {
4872 }
4873
4874 /* True if TYPE is definitely an artificial type supplied to a symbol
4875    for which no debugging information was given in the symbol file.  */
4876
4877 static int
4878 is_nondebugging_type (struct type *type)
4879 {
4880   const char *name = ada_type_name (type);
4881
4882   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4883 }
4884
4885 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4886    that are deemed "identical" for practical purposes.
4887
4888    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4889    types and that their number of enumerals is identical (in other
4890    words, type1->num_fields () == type2->num_fields ()).  */
4891
4892 static int
4893 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4894 {
4895   int i;
4896
4897   /* The heuristic we use here is fairly conservative.  We consider
4898      that 2 enumerate types are identical if they have the same
4899      number of enumerals and that all enumerals have the same
4900      underlying value and name.  */
4901
4902   /* All enums in the type should have an identical underlying value.  */
4903   for (i = 0; i < type1->num_fields (); i++)
4904     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4905       return 0;
4906
4907   /* All enumerals should also have the same name (modulo any numerical
4908      suffix).  */
4909   for (i = 0; i < type1->num_fields (); i++)
4910     {
4911       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4912       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4913       int len_1 = strlen (name_1);
4914       int len_2 = strlen (name_2);
4915
4916       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4917       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4918       if (len_1 != len_2
4919           || strncmp (TYPE_FIELD_NAME (type1, i),
4920                       TYPE_FIELD_NAME (type2, i),
4921                       len_1) != 0)
4922         return 0;
4923     }
4924
4925   return 1;
4926 }
4927
4928 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4929    that are deemed "identical" for practical purposes.  Sometimes,
4930    enumerals are not strictly identical, but their types are so similar
4931    that they can be considered identical.
4932
4933    For instance, consider the following code:
4934
4935       type Color is (Black, Red, Green, Blue, White);
4936       type RGB_Color is new Color range Red .. Blue;
4937
4938    Type RGB_Color is a subrange of an implicit type which is a copy
4939    of type Color. If we call that implicit type RGB_ColorB ("B" is
4940    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4941    As a result, when an expression references any of the enumeral
4942    by name (Eg. "print green"), the expression is technically
4943    ambiguous and the user should be asked to disambiguate. But
4944    doing so would only hinder the user, since it wouldn't matter
4945    what choice he makes, the outcome would always be the same.
4946    So, for practical purposes, we consider them as the same.  */
4947
4948 static int
4949 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
4950 {
4951   int i;
4952
4953   /* Before performing a thorough comparison check of each type,
4954      we perform a series of inexpensive checks.  We expect that these
4955      checks will quickly fail in the vast majority of cases, and thus
4956      help prevent the unnecessary use of a more expensive comparison.
4957      Said comparison also expects us to make some of these checks
4958      (see ada_identical_enum_types_p).  */
4959
4960   /* Quick check: All symbols should have an enum type.  */
4961   for (i = 0; i < syms.size (); i++)
4962     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
4963       return 0;
4964
4965   /* Quick check: They should all have the same value.  */
4966   for (i = 1; i < syms.size (); i++)
4967     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4968       return 0;
4969
4970   /* Quick check: They should all have the same number of enumerals.  */
4971   for (i = 1; i < syms.size (); i++)
4972     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
4973         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
4974       return 0;
4975
4976   /* All the sanity checks passed, so we might have a set of
4977      identical enumeration types.  Perform a more complete
4978      comparison of the type of each symbol.  */
4979   for (i = 1; i < syms.size (); i++)
4980     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
4981                                      SYMBOL_TYPE (syms[0].symbol)))
4982       return 0;
4983
4984   return 1;
4985 }
4986
4987 /* Remove any non-debugging symbols in SYMS that definitely
4988    duplicate other symbols in the list (The only case I know of where
4989    this happens is when object files containing stabs-in-ecoff are
4990    linked with files containing ordinary ecoff debugging symbols (or no
4991    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
4992    Returns the number of items in the modified list.  */
4993
4994 static int
4995 remove_extra_symbols (std::vector<struct block_symbol> *syms)
4996 {
4997   int i, j;
4998
4999   /* We should never be called with less than 2 symbols, as there
5000      cannot be any extra symbol in that case.  But it's easy to
5001      handle, since we have nothing to do in that case.  */
5002   if (syms->size () < 2)
5003     return syms->size ();
5004
5005   i = 0;
5006   while (i < syms->size ())
5007     {
5008       int remove_p = 0;
5009
5010       /* If two symbols have the same name and one of them is a stub type,
5011          the get rid of the stub.  */
5012
5013       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5014           && (*syms)[i].symbol->linkage_name () != NULL)
5015         {
5016           for (j = 0; j < syms->size (); j++)
5017             {
5018               if (j != i
5019                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5020                   && (*syms)[j].symbol->linkage_name () != NULL
5021                   && strcmp ((*syms)[i].symbol->linkage_name (),
5022                              (*syms)[j].symbol->linkage_name ()) == 0)
5023                 remove_p = 1;
5024             }
5025         }
5026
5027       /* Two symbols with the same name, same class and same address
5028          should be identical.  */
5029
5030       else if ((*syms)[i].symbol->linkage_name () != NULL
5031           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5032           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5033         {
5034           for (j = 0; j < syms->size (); j += 1)
5035             {
5036               if (i != j
5037                   && (*syms)[j].symbol->linkage_name () != NULL
5038                   && strcmp ((*syms)[i].symbol->linkage_name (),
5039                              (*syms)[j].symbol->linkage_name ()) == 0
5040                   && SYMBOL_CLASS ((*syms)[i].symbol)
5041                        == SYMBOL_CLASS ((*syms)[j].symbol)
5042                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5043                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5044                 remove_p = 1;
5045             }
5046         }
5047       
5048       if (remove_p)
5049         syms->erase (syms->begin () + i);
5050       else
5051         i += 1;
5052     }
5053
5054   /* If all the remaining symbols are identical enumerals, then
5055      just keep the first one and discard the rest.
5056
5057      Unlike what we did previously, we do not discard any entry
5058      unless they are ALL identical.  This is because the symbol
5059      comparison is not a strict comparison, but rather a practical
5060      comparison.  If all symbols are considered identical, then
5061      we can just go ahead and use the first one and discard the rest.
5062      But if we cannot reduce the list to a single element, we have
5063      to ask the user to disambiguate anyways.  And if we have to
5064      present a multiple-choice menu, it's less confusing if the list
5065      isn't missing some choices that were identical and yet distinct.  */
5066   if (symbols_are_identical_enums (*syms))
5067     syms->resize (1);
5068
5069   return syms->size ();
5070 }
5071
5072 /* Given a type that corresponds to a renaming entity, use the type name
5073    to extract the scope (package name or function name, fully qualified,
5074    and following the GNAT encoding convention) where this renaming has been
5075    defined.  */
5076
5077 static std::string
5078 xget_renaming_scope (struct type *renaming_type)
5079 {
5080   /* The renaming types adhere to the following convention:
5081      <scope>__<rename>___<XR extension>.
5082      So, to extract the scope, we search for the "___XR" extension,
5083      and then backtrack until we find the first "__".  */
5084
5085   const char *name = renaming_type->name ();
5086   const char *suffix = strstr (name, "___XR");
5087   const char *last;
5088
5089   /* Now, backtrack a bit until we find the first "__".  Start looking
5090      at suffix - 3, as the <rename> part is at least one character long.  */
5091
5092   for (last = suffix - 3; last > name; last--)
5093     if (last[0] == '_' && last[1] == '_')
5094       break;
5095
5096   /* Make a copy of scope and return it.  */
5097   return std::string (name, last);
5098 }
5099
5100 /* Return nonzero if NAME corresponds to a package name.  */
5101
5102 static int
5103 is_package_name (const char *name)
5104 {
5105   /* Here, We take advantage of the fact that no symbols are generated
5106      for packages, while symbols are generated for each function.
5107      So the condition for NAME represent a package becomes equivalent
5108      to NAME not existing in our list of symbols.  There is only one
5109      small complication with library-level functions (see below).  */
5110
5111   /* If it is a function that has not been defined at library level,
5112      then we should be able to look it up in the symbols.  */
5113   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5114     return 0;
5115
5116   /* Library-level function names start with "_ada_".  See if function
5117      "_ada_" followed by NAME can be found.  */
5118
5119   /* Do a quick check that NAME does not contain "__", since library-level
5120      functions names cannot contain "__" in them.  */
5121   if (strstr (name, "__") != NULL)
5122     return 0;
5123
5124   std::string fun_name = string_printf ("_ada_%s", name);
5125
5126   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5127 }
5128
5129 /* Return nonzero if SYM corresponds to a renaming entity that is
5130    not visible from FUNCTION_NAME.  */
5131
5132 static int
5133 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5134 {
5135   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5136     return 0;
5137
5138   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5139
5140   /* If the rename has been defined in a package, then it is visible.  */
5141   if (is_package_name (scope.c_str ()))
5142     return 0;
5143
5144   /* Check that the rename is in the current function scope by checking
5145      that its name starts with SCOPE.  */
5146
5147   /* If the function name starts with "_ada_", it means that it is
5148      a library-level function.  Strip this prefix before doing the
5149      comparison, as the encoding for the renaming does not contain
5150      this prefix.  */
5151   if (startswith (function_name, "_ada_"))
5152     function_name += 5;
5153
5154   return !startswith (function_name, scope.c_str ());
5155 }
5156
5157 /* Remove entries from SYMS that corresponds to a renaming entity that
5158    is not visible from the function associated with CURRENT_BLOCK or
5159    that is superfluous due to the presence of more specific renaming
5160    information.  Places surviving symbols in the initial entries of
5161    SYMS and returns the number of surviving symbols.
5162    
5163    Rationale:
5164    First, in cases where an object renaming is implemented as a
5165    reference variable, GNAT may produce both the actual reference
5166    variable and the renaming encoding.  In this case, we discard the
5167    latter.
5168
5169    Second, GNAT emits a type following a specified encoding for each renaming
5170    entity.  Unfortunately, STABS currently does not support the definition
5171    of types that are local to a given lexical block, so all renamings types
5172    are emitted at library level.  As a consequence, if an application
5173    contains two renaming entities using the same name, and a user tries to
5174    print the value of one of these entities, the result of the ada symbol
5175    lookup will also contain the wrong renaming type.
5176
5177    This function partially covers for this limitation by attempting to
5178    remove from the SYMS list renaming symbols that should be visible
5179    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5180    method with the current information available.  The implementation
5181    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5182    
5183       - When the user tries to print a rename in a function while there
5184         is another rename entity defined in a package:  Normally, the
5185         rename in the function has precedence over the rename in the
5186         package, so the latter should be removed from the list.  This is
5187         currently not the case.
5188         
5189       - This function will incorrectly remove valid renames if
5190         the CURRENT_BLOCK corresponds to a function which symbol name
5191         has been changed by an "Export" pragma.  As a consequence,
5192         the user will be unable to print such rename entities.  */
5193
5194 static int
5195 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5196                              const struct block *current_block)
5197 {
5198   struct symbol *current_function;
5199   const char *current_function_name;
5200   int i;
5201   int is_new_style_renaming;
5202
5203   /* If there is both a renaming foo___XR... encoded as a variable and
5204      a simple variable foo in the same block, discard the latter.
5205      First, zero out such symbols, then compress.  */
5206   is_new_style_renaming = 0;
5207   for (i = 0; i < syms->size (); i += 1)
5208     {
5209       struct symbol *sym = (*syms)[i].symbol;
5210       const struct block *block = (*syms)[i].block;
5211       const char *name;
5212       const char *suffix;
5213
5214       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5215         continue;
5216       name = sym->linkage_name ();
5217       suffix = strstr (name, "___XR");
5218
5219       if (suffix != NULL)
5220         {
5221           int name_len = suffix - name;
5222           int j;
5223
5224           is_new_style_renaming = 1;
5225           for (j = 0; j < syms->size (); j += 1)
5226             if (i != j && (*syms)[j].symbol != NULL
5227                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5228                             name_len) == 0
5229                 && block == (*syms)[j].block)
5230               (*syms)[j].symbol = NULL;
5231         }
5232     }
5233   if (is_new_style_renaming)
5234     {
5235       int j, k;
5236
5237       for (j = k = 0; j < syms->size (); j += 1)
5238         if ((*syms)[j].symbol != NULL)
5239             {
5240               (*syms)[k] = (*syms)[j];
5241               k += 1;
5242             }
5243       return k;
5244     }
5245
5246   /* Extract the function name associated to CURRENT_BLOCK.
5247      Abort if unable to do so.  */
5248
5249   if (current_block == NULL)
5250     return syms->size ();
5251
5252   current_function = block_linkage_function (current_block);
5253   if (current_function == NULL)
5254     return syms->size ();
5255
5256   current_function_name = current_function->linkage_name ();
5257   if (current_function_name == NULL)
5258     return syms->size ();
5259
5260   /* Check each of the symbols, and remove it from the list if it is
5261      a type corresponding to a renaming that is out of the scope of
5262      the current block.  */
5263
5264   i = 0;
5265   while (i < syms->size ())
5266     {
5267       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5268           == ADA_OBJECT_RENAMING
5269           && old_renaming_is_invisible ((*syms)[i].symbol,
5270                                         current_function_name))
5271         syms->erase (syms->begin () + i);
5272       else
5273         i += 1;
5274     }
5275
5276   return syms->size ();
5277 }
5278
5279 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5280    whose name and domain match NAME and DOMAIN respectively.
5281    If no match was found, then extend the search to "enclosing"
5282    routines (in other words, if we're inside a nested function,
5283    search the symbols defined inside the enclosing functions).
5284    If WILD_MATCH_P is nonzero, perform the naming matching in
5285    "wild" mode (see function "wild_match" for more info).
5286
5287    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5288
5289 static void
5290 ada_add_local_symbols (struct obstack *obstackp,
5291                        const lookup_name_info &lookup_name,
5292                        const struct block *block, domain_enum domain)
5293 {
5294   int block_depth = 0;
5295
5296   while (block != NULL)
5297     {
5298       block_depth += 1;
5299       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5300
5301       /* If we found a non-function match, assume that's the one.  */
5302       if (is_nonfunction (defns_collected (obstackp, 0),
5303                           num_defns_collected (obstackp)))
5304         return;
5305
5306       block = BLOCK_SUPERBLOCK (block);
5307     }
5308
5309   /* If no luck so far, try to find NAME as a local symbol in some lexically
5310      enclosing subprogram.  */
5311   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5312     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5313 }
5314
5315 /* An object of this type is used as the user_data argument when
5316    calling the map_matching_symbols method.  */
5317
5318 struct match_data
5319 {
5320   struct objfile *objfile;
5321   struct obstack *obstackp;
5322   struct symbol *arg_sym;
5323   int found_sym;
5324 };
5325
5326 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5327    to a list of symbols.  DATA is a pointer to a struct match_data *
5328    containing the obstack that collects the symbol list, the file that SYM
5329    must come from, a flag indicating whether a non-argument symbol has
5330    been found in the current block, and the last argument symbol
5331    passed in SYM within the current block (if any).  When SYM is null,
5332    marking the end of a block, the argument symbol is added if no
5333    other has been found.  */
5334
5335 static bool
5336 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5337                           struct match_data *data)
5338 {
5339   const struct block *block = bsym->block;
5340   struct symbol *sym = bsym->symbol;
5341
5342   if (sym == NULL)
5343     {
5344       if (!data->found_sym && data->arg_sym != NULL) 
5345         add_defn_to_vec (data->obstackp,
5346                          fixup_symbol_section (data->arg_sym, data->objfile),
5347                          block);
5348       data->found_sym = 0;
5349       data->arg_sym = NULL;
5350     }
5351   else 
5352     {
5353       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5354         return true;
5355       else if (SYMBOL_IS_ARGUMENT (sym))
5356         data->arg_sym = sym;
5357       else
5358         {
5359           data->found_sym = 1;
5360           add_defn_to_vec (data->obstackp,
5361                            fixup_symbol_section (sym, data->objfile),
5362                            block);
5363         }
5364     }
5365   return true;
5366 }
5367
5368 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5369    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5370    symbols to OBSTACKP.  Return whether we found such symbols.  */
5371
5372 static int
5373 ada_add_block_renamings (struct obstack *obstackp,
5374                          const struct block *block,
5375                          const lookup_name_info &lookup_name,
5376                          domain_enum domain)
5377 {
5378   struct using_direct *renaming;
5379   int defns_mark = num_defns_collected (obstackp);
5380
5381   symbol_name_matcher_ftype *name_match
5382     = ada_get_symbol_name_matcher (lookup_name);
5383
5384   for (renaming = block_using (block);
5385        renaming != NULL;
5386        renaming = renaming->next)
5387     {
5388       const char *r_name;
5389
5390       /* Avoid infinite recursions: skip this renaming if we are actually
5391          already traversing it.
5392
5393          Currently, symbol lookup in Ada don't use the namespace machinery from
5394          C++/Fortran support: skip namespace imports that use them.  */
5395       if (renaming->searched
5396           || (renaming->import_src != NULL
5397               && renaming->import_src[0] != '\0')
5398           || (renaming->import_dest != NULL
5399               && renaming->import_dest[0] != '\0'))
5400         continue;
5401       renaming->searched = 1;
5402
5403       /* TODO: here, we perform another name-based symbol lookup, which can
5404          pull its own multiple overloads.  In theory, we should be able to do
5405          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5406          not a simple name.  But in order to do this, we would need to enhance
5407          the DWARF reader to associate a symbol to this renaming, instead of a
5408          name.  So, for now, we do something simpler: re-use the C++/Fortran
5409          namespace machinery.  */
5410       r_name = (renaming->alias != NULL
5411                 ? renaming->alias
5412                 : renaming->declaration);
5413       if (name_match (r_name, lookup_name, NULL))
5414         {
5415           lookup_name_info decl_lookup_name (renaming->declaration,
5416                                              lookup_name.match_type ());
5417           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5418                                1, NULL);
5419         }
5420       renaming->searched = 0;
5421     }
5422   return num_defns_collected (obstackp) != defns_mark;
5423 }
5424
5425 /* Implements compare_names, but only applying the comparision using
5426    the given CASING.  */
5427
5428 static int
5429 compare_names_with_case (const char *string1, const char *string2,
5430                          enum case_sensitivity casing)
5431 {
5432   while (*string1 != '\0' && *string2 != '\0')
5433     {
5434       char c1, c2;
5435
5436       if (isspace (*string1) || isspace (*string2))
5437         return strcmp_iw_ordered (string1, string2);
5438
5439       if (casing == case_sensitive_off)
5440         {
5441           c1 = tolower (*string1);
5442           c2 = tolower (*string2);
5443         }
5444       else
5445         {
5446           c1 = *string1;
5447           c2 = *string2;
5448         }
5449       if (c1 != c2)
5450         break;
5451
5452       string1 += 1;
5453       string2 += 1;
5454     }
5455
5456   switch (*string1)
5457     {
5458     case '(':
5459       return strcmp_iw_ordered (string1, string2);
5460     case '_':
5461       if (*string2 == '\0')
5462         {
5463           if (is_name_suffix (string1))
5464             return 0;
5465           else
5466             return 1;
5467         }
5468       /* FALLTHROUGH */
5469     default:
5470       if (*string2 == '(')
5471         return strcmp_iw_ordered (string1, string2);
5472       else
5473         {
5474           if (casing == case_sensitive_off)
5475             return tolower (*string1) - tolower (*string2);
5476           else
5477             return *string1 - *string2;
5478         }
5479     }
5480 }
5481
5482 /* Compare STRING1 to STRING2, with results as for strcmp.
5483    Compatible with strcmp_iw_ordered in that...
5484
5485        strcmp_iw_ordered (STRING1, STRING2) <= 0
5486
5487    ... implies...
5488
5489        compare_names (STRING1, STRING2) <= 0
5490
5491    (they may differ as to what symbols compare equal).  */
5492
5493 static int
5494 compare_names (const char *string1, const char *string2)
5495 {
5496   int result;
5497
5498   /* Similar to what strcmp_iw_ordered does, we need to perform
5499      a case-insensitive comparison first, and only resort to
5500      a second, case-sensitive, comparison if the first one was
5501      not sufficient to differentiate the two strings.  */
5502
5503   result = compare_names_with_case (string1, string2, case_sensitive_off);
5504   if (result == 0)
5505     result = compare_names_with_case (string1, string2, case_sensitive_on);
5506
5507   return result;
5508 }
5509
5510 /* Convenience function to get at the Ada encoded lookup name for
5511    LOOKUP_NAME, as a C string.  */
5512
5513 static const char *
5514 ada_lookup_name (const lookup_name_info &lookup_name)
5515 {
5516   return lookup_name.ada ().lookup_name ().c_str ();
5517 }
5518
5519 /* Add to OBSTACKP all non-local symbols whose name and domain match
5520    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5521    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5522    symbols otherwise.  */
5523
5524 static void
5525 add_nonlocal_symbols (struct obstack *obstackp,
5526                       const lookup_name_info &lookup_name,
5527                       domain_enum domain, int global)
5528 {
5529   struct match_data data;
5530
5531   memset (&data, 0, sizeof data);
5532   data.obstackp = obstackp;
5533
5534   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5535
5536   auto callback = [&] (struct block_symbol *bsym)
5537     {
5538       return aux_add_nonlocal_symbols (bsym, &data);
5539     };
5540
5541   for (objfile *objfile : current_program_space->objfiles ())
5542     {
5543       data.objfile = objfile;
5544
5545       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5546                                              domain, global, callback,
5547                                              (is_wild_match
5548                                               ? NULL : compare_names));
5549
5550       for (compunit_symtab *cu : objfile->compunits ())
5551         {
5552           const struct block *global_block
5553             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5554
5555           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5556                                        domain))
5557             data.found_sym = 1;
5558         }
5559     }
5560
5561   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5562     {
5563       const char *name = ada_lookup_name (lookup_name);
5564       std::string bracket_name = std::string ("<_ada_") + name + '>';
5565       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5566
5567       for (objfile *objfile : current_program_space->objfiles ())
5568         {
5569           data.objfile = objfile;
5570           objfile->sf->qf->map_matching_symbols (objfile, name1,
5571                                                  domain, global, callback,
5572                                                  compare_names);
5573         }
5574     }           
5575 }
5576
5577 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5578    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5579    returning the number of matches.  Add these to OBSTACKP.
5580
5581    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5582    symbol match within the nest of blocks whose innermost member is BLOCK,
5583    is the one match returned (no other matches in that or
5584    enclosing blocks is returned).  If there are any matches in or
5585    surrounding BLOCK, then these alone are returned.
5586
5587    Names prefixed with "standard__" are handled specially:
5588    "standard__" is first stripped off (by the lookup_name
5589    constructor), and only static and global symbols are searched.
5590
5591    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5592    to lookup global symbols.  */
5593
5594 static void
5595 ada_add_all_symbols (struct obstack *obstackp,
5596                      const struct block *block,
5597                      const lookup_name_info &lookup_name,
5598                      domain_enum domain,
5599                      int full_search,
5600                      int *made_global_lookup_p)
5601 {
5602   struct symbol *sym;
5603
5604   if (made_global_lookup_p)
5605     *made_global_lookup_p = 0;
5606
5607   /* Special case: If the user specifies a symbol name inside package
5608      Standard, do a non-wild matching of the symbol name without
5609      the "standard__" prefix.  This was primarily introduced in order
5610      to allow the user to specifically access the standard exceptions
5611      using, for instance, Standard.Constraint_Error when Constraint_Error
5612      is ambiguous (due to the user defining its own Constraint_Error
5613      entity inside its program).  */
5614   if (lookup_name.ada ().standard_p ())
5615     block = NULL;
5616
5617   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5618
5619   if (block != NULL)
5620     {
5621       if (full_search)
5622         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5623       else
5624         {
5625           /* In the !full_search case we're are being called by
5626              iterate_over_symbols, and we don't want to search
5627              superblocks.  */
5628           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5629         }
5630       if (num_defns_collected (obstackp) > 0 || !full_search)
5631         return;
5632     }
5633
5634   /* No non-global symbols found.  Check our cache to see if we have
5635      already performed this search before.  If we have, then return
5636      the same result.  */
5637
5638   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5639                             domain, &sym, &block))
5640     {
5641       if (sym != NULL)
5642         add_defn_to_vec (obstackp, sym, block);
5643       return;
5644     }
5645
5646   if (made_global_lookup_p)
5647     *made_global_lookup_p = 1;
5648
5649   /* Search symbols from all global blocks.  */
5650  
5651   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5652
5653   /* Now add symbols from all per-file blocks if we've gotten no hits
5654      (not strictly correct, but perhaps better than an error).  */
5655
5656   if (num_defns_collected (obstackp) == 0)
5657     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5658 }
5659
5660 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5661    is non-zero, enclosing scope and in global scopes, returning the number of
5662    matches.
5663    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5664    found and the blocks and symbol tables (if any) in which they were
5665    found.
5666
5667    When full_search is non-zero, any non-function/non-enumeral
5668    symbol match within the nest of blocks whose innermost member is BLOCK,
5669    is the one match returned (no other matches in that or
5670    enclosing blocks is returned).  If there are any matches in or
5671    surrounding BLOCK, then these alone are returned.
5672
5673    Names prefixed with "standard__" are handled specially: "standard__"
5674    is first stripped off, and only static and global symbols are searched.  */
5675
5676 static int
5677 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5678                                const struct block *block,
5679                                domain_enum domain,
5680                                std::vector<struct block_symbol> *results,
5681                                int full_search)
5682 {
5683   int syms_from_global_search;
5684   int ndefns;
5685   auto_obstack obstack;
5686
5687   ada_add_all_symbols (&obstack, block, lookup_name,
5688                        domain, full_search, &syms_from_global_search);
5689
5690   ndefns = num_defns_collected (&obstack);
5691
5692   struct block_symbol *base = defns_collected (&obstack, 1);
5693   for (int i = 0; i < ndefns; ++i)
5694     results->push_back (base[i]);
5695
5696   ndefns = remove_extra_symbols (results);
5697
5698   if (ndefns == 0 && full_search && syms_from_global_search)
5699     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5700
5701   if (ndefns == 1 && full_search && syms_from_global_search)
5702     cache_symbol (ada_lookup_name (lookup_name), domain,
5703                   (*results)[0].symbol, (*results)[0].block);
5704
5705   ndefns = remove_irrelevant_renamings (results, block);
5706
5707   return ndefns;
5708 }
5709
5710 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5711    in global scopes, returning the number of matches, and filling *RESULTS
5712    with (SYM,BLOCK) tuples.
5713
5714    See ada_lookup_symbol_list_worker for further details.  */
5715
5716 int
5717 ada_lookup_symbol_list (const char *name, const struct block *block,
5718                         domain_enum domain,
5719                         std::vector<struct block_symbol> *results)
5720 {
5721   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5722   lookup_name_info lookup_name (name, name_match_type);
5723
5724   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5725 }
5726
5727 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5728    to 1, but choosing the first symbol found if there are multiple
5729    choices.
5730
5731    The result is stored in *INFO, which must be non-NULL.
5732    If no match is found, INFO->SYM is set to NULL.  */
5733
5734 void
5735 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5736                            domain_enum domain,
5737                            struct block_symbol *info)
5738 {
5739   /* Since we already have an encoded name, wrap it in '<>' to force a
5740      verbatim match.  Otherwise, if the name happens to not look like
5741      an encoded name (because it doesn't include a "__"),
5742      ada_lookup_name_info would re-encode/fold it again, and that
5743      would e.g., incorrectly lowercase object renaming names like
5744      "R28b" -> "r28b".  */
5745   std::string verbatim = std::string ("<") + name + '>';
5746
5747   gdb_assert (info != NULL);
5748   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5749 }
5750
5751 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5752    scope and in global scopes, or NULL if none.  NAME is folded and
5753    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5754    choosing the first symbol if there are multiple choices.  */
5755
5756 struct block_symbol
5757 ada_lookup_symbol (const char *name, const struct block *block0,
5758                    domain_enum domain)
5759 {
5760   std::vector<struct block_symbol> candidates;
5761   int n_candidates;
5762
5763   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5764
5765   if (n_candidates == 0)
5766     return {};
5767
5768   block_symbol info = candidates[0];
5769   info.symbol = fixup_symbol_section (info.symbol, NULL);
5770   return info;
5771 }
5772
5773
5774 /* True iff STR is a possible encoded suffix of a normal Ada name
5775    that is to be ignored for matching purposes.  Suffixes of parallel
5776    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5777    are given by any of the regular expressions:
5778
5779    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5780    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5781    TKB              [subprogram suffix for task bodies]
5782    _E[0-9]+[bs]$    [protected object entry suffixes]
5783    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5784
5785    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5786    match is performed.  This sequence is used to differentiate homonyms,
5787    is an optional part of a valid name suffix.  */
5788
5789 static int
5790 is_name_suffix (const char *str)
5791 {
5792   int k;
5793   const char *matching;
5794   const int len = strlen (str);
5795
5796   /* Skip optional leading __[0-9]+.  */
5797
5798   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5799     {
5800       str += 3;
5801       while (isdigit (str[0]))
5802         str += 1;
5803     }
5804   
5805   /* [.$][0-9]+ */
5806
5807   if (str[0] == '.' || str[0] == '$')
5808     {
5809       matching = str + 1;
5810       while (isdigit (matching[0]))
5811         matching += 1;
5812       if (matching[0] == '\0')
5813         return 1;
5814     }
5815
5816   /* ___[0-9]+ */
5817
5818   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5819     {
5820       matching = str + 3;
5821       while (isdigit (matching[0]))
5822         matching += 1;
5823       if (matching[0] == '\0')
5824         return 1;
5825     }
5826
5827   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5828
5829   if (strcmp (str, "TKB") == 0)
5830     return 1;
5831
5832 #if 0
5833   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5834      with a N at the end.  Unfortunately, the compiler uses the same
5835      convention for other internal types it creates.  So treating
5836      all entity names that end with an "N" as a name suffix causes
5837      some regressions.  For instance, consider the case of an enumerated
5838      type.  To support the 'Image attribute, it creates an array whose
5839      name ends with N.
5840      Having a single character like this as a suffix carrying some
5841      information is a bit risky.  Perhaps we should change the encoding
5842      to be something like "_N" instead.  In the meantime, do not do
5843      the following check.  */
5844   /* Protected Object Subprograms */
5845   if (len == 1 && str [0] == 'N')
5846     return 1;
5847 #endif
5848
5849   /* _E[0-9]+[bs]$ */
5850   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5851     {
5852       matching = str + 3;
5853       while (isdigit (matching[0]))
5854         matching += 1;
5855       if ((matching[0] == 'b' || matching[0] == 's')
5856           && matching [1] == '\0')
5857         return 1;
5858     }
5859
5860   /* ??? We should not modify STR directly, as we are doing below.  This
5861      is fine in this case, but may become problematic later if we find
5862      that this alternative did not work, and want to try matching
5863      another one from the begining of STR.  Since we modified it, we
5864      won't be able to find the begining of the string anymore!  */
5865   if (str[0] == 'X')
5866     {
5867       str += 1;
5868       while (str[0] != '_' && str[0] != '\0')
5869         {
5870           if (str[0] != 'n' && str[0] != 'b')
5871             return 0;
5872           str += 1;
5873         }
5874     }
5875
5876   if (str[0] == '\000')
5877     return 1;
5878
5879   if (str[0] == '_')
5880     {
5881       if (str[1] != '_' || str[2] == '\000')
5882         return 0;
5883       if (str[2] == '_')
5884         {
5885           if (strcmp (str + 3, "JM") == 0)
5886             return 1;
5887           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5888              the LJM suffix in favor of the JM one.  But we will
5889              still accept LJM as a valid suffix for a reasonable
5890              amount of time, just to allow ourselves to debug programs
5891              compiled using an older version of GNAT.  */
5892           if (strcmp (str + 3, "LJM") == 0)
5893             return 1;
5894           if (str[3] != 'X')
5895             return 0;
5896           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5897               || str[4] == 'U' || str[4] == 'P')
5898             return 1;
5899           if (str[4] == 'R' && str[5] != 'T')
5900             return 1;
5901           return 0;
5902         }
5903       if (!isdigit (str[2]))
5904         return 0;
5905       for (k = 3; str[k] != '\0'; k += 1)
5906         if (!isdigit (str[k]) && str[k] != '_')
5907           return 0;
5908       return 1;
5909     }
5910   if (str[0] == '$' && isdigit (str[1]))
5911     {
5912       for (k = 2; str[k] != '\0'; k += 1)
5913         if (!isdigit (str[k]) && str[k] != '_')
5914           return 0;
5915       return 1;
5916     }
5917   return 0;
5918 }
5919
5920 /* Return non-zero if the string starting at NAME and ending before
5921    NAME_END contains no capital letters.  */
5922
5923 static int
5924 is_valid_name_for_wild_match (const char *name0)
5925 {
5926   std::string decoded_name = ada_decode (name0);
5927   int i;
5928
5929   /* If the decoded name starts with an angle bracket, it means that
5930      NAME0 does not follow the GNAT encoding format.  It should then
5931      not be allowed as a possible wild match.  */
5932   if (decoded_name[0] == '<')
5933     return 0;
5934
5935   for (i=0; decoded_name[i] != '\0'; i++)
5936     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5937       return 0;
5938
5939   return 1;
5940 }
5941
5942 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
5943    that could start a simple name.  Assumes that *NAMEP points into
5944    the string beginning at NAME0.  */
5945
5946 static int
5947 advance_wild_match (const char **namep, const char *name0, int target0)
5948 {
5949   const char *name = *namep;
5950
5951   while (1)
5952     {
5953       int t0, t1;
5954
5955       t0 = *name;
5956       if (t0 == '_')
5957         {
5958           t1 = name[1];
5959           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
5960             {
5961               name += 1;
5962               if (name == name0 + 5 && startswith (name0, "_ada"))
5963                 break;
5964               else
5965                 name += 1;
5966             }
5967           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
5968                                  || name[2] == target0))
5969             {
5970               name += 2;
5971               break;
5972             }
5973           else
5974             return 0;
5975         }
5976       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
5977         name += 1;
5978       else
5979         return 0;
5980     }
5981
5982   *namep = name;
5983   return 1;
5984 }
5985
5986 /* Return true iff NAME encodes a name of the form prefix.PATN.
5987    Ignores any informational suffixes of NAME (i.e., for which
5988    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
5989    simple name.  */
5990
5991 static bool
5992 wild_match (const char *name, const char *patn)
5993 {
5994   const char *p;
5995   const char *name0 = name;
5996
5997   while (1)
5998     {
5999       const char *match = name;
6000
6001       if (*name == *patn)
6002         {
6003           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6004             if (*p != *name)
6005               break;
6006           if (*p == '\0' && is_name_suffix (name))
6007             return match == name0 || is_valid_name_for_wild_match (name0);
6008
6009           if (name[-1] == '_')
6010             name -= 1;
6011         }
6012       if (!advance_wild_match (&name, name0, *patn))
6013         return false;
6014     }
6015 }
6016
6017 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6018    any trailing suffixes that encode debugging information or leading
6019    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6020    information that is ignored).  */
6021
6022 static bool
6023 full_match (const char *sym_name, const char *search_name)
6024 {
6025   size_t search_name_len = strlen (search_name);
6026
6027   if (strncmp (sym_name, search_name, search_name_len) == 0
6028       && is_name_suffix (sym_name + search_name_len))
6029     return true;
6030
6031   if (startswith (sym_name, "_ada_")
6032       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6033       && is_name_suffix (sym_name + search_name_len + 5))
6034     return true;
6035
6036   return false;
6037 }
6038
6039 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6040    *defn_symbols, updating the list of symbols in OBSTACKP (if
6041    necessary).  OBJFILE is the section containing BLOCK.  */
6042
6043 static void
6044 ada_add_block_symbols (struct obstack *obstackp,
6045                        const struct block *block,
6046                        const lookup_name_info &lookup_name,
6047                        domain_enum domain, struct objfile *objfile)
6048 {
6049   struct block_iterator iter;
6050   /* A matching argument symbol, if any.  */
6051   struct symbol *arg_sym;
6052   /* Set true when we find a matching non-argument symbol.  */
6053   int found_sym;
6054   struct symbol *sym;
6055
6056   arg_sym = NULL;
6057   found_sym = 0;
6058   for (sym = block_iter_match_first (block, lookup_name, &iter);
6059        sym != NULL;
6060        sym = block_iter_match_next (lookup_name, &iter))
6061     {
6062       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6063         {
6064           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6065             {
6066               if (SYMBOL_IS_ARGUMENT (sym))
6067                 arg_sym = sym;
6068               else
6069                 {
6070                   found_sym = 1;
6071                   add_defn_to_vec (obstackp,
6072                                    fixup_symbol_section (sym, objfile),
6073                                    block);
6074                 }
6075             }
6076         }
6077     }
6078
6079   /* Handle renamings.  */
6080
6081   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6082     found_sym = 1;
6083
6084   if (!found_sym && arg_sym != NULL)
6085     {
6086       add_defn_to_vec (obstackp,
6087                        fixup_symbol_section (arg_sym, objfile),
6088                        block);
6089     }
6090
6091   if (!lookup_name.ada ().wild_match_p ())
6092     {
6093       arg_sym = NULL;
6094       found_sym = 0;
6095       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6096       const char *name = ada_lookup_name.c_str ();
6097       size_t name_len = ada_lookup_name.size ();
6098
6099       ALL_BLOCK_SYMBOLS (block, iter, sym)
6100       {
6101         if (symbol_matches_domain (sym->language (),
6102                                    SYMBOL_DOMAIN (sym), domain))
6103           {
6104             int cmp;
6105
6106             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6107             if (cmp == 0)
6108               {
6109                 cmp = !startswith (sym->linkage_name (), "_ada_");
6110                 if (cmp == 0)
6111                   cmp = strncmp (name, sym->linkage_name () + 5,
6112                                  name_len);
6113               }
6114
6115             if (cmp == 0
6116                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6117               {
6118                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6119                   {
6120                     if (SYMBOL_IS_ARGUMENT (sym))
6121                       arg_sym = sym;
6122                     else
6123                       {
6124                         found_sym = 1;
6125                         add_defn_to_vec (obstackp,
6126                                          fixup_symbol_section (sym, objfile),
6127                                          block);
6128                       }
6129                   }
6130               }
6131           }
6132       }
6133
6134       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6135          They aren't parameters, right?  */
6136       if (!found_sym && arg_sym != NULL)
6137         {
6138           add_defn_to_vec (obstackp,
6139                            fixup_symbol_section (arg_sym, objfile),
6140                            block);
6141         }
6142     }
6143 }
6144 \f
6145
6146                                 /* Symbol Completion */
6147
6148 /* See symtab.h.  */
6149
6150 bool
6151 ada_lookup_name_info::matches
6152   (const char *sym_name,
6153    symbol_name_match_type match_type,
6154    completion_match_result *comp_match_res) const
6155 {
6156   bool match = false;
6157   const char *text = m_encoded_name.c_str ();
6158   size_t text_len = m_encoded_name.size ();
6159
6160   /* First, test against the fully qualified name of the symbol.  */
6161
6162   if (strncmp (sym_name, text, text_len) == 0)
6163     match = true;
6164
6165   std::string decoded_name = ada_decode (sym_name);
6166   if (match && !m_encoded_p)
6167     {
6168       /* One needed check before declaring a positive match is to verify
6169          that iff we are doing a verbatim match, the decoded version
6170          of the symbol name starts with '<'.  Otherwise, this symbol name
6171          is not a suitable completion.  */
6172
6173       bool has_angle_bracket = (decoded_name[0] == '<');
6174       match = (has_angle_bracket == m_verbatim_p);
6175     }
6176
6177   if (match && !m_verbatim_p)
6178     {
6179       /* When doing non-verbatim match, another check that needs to
6180          be done is to verify that the potentially matching symbol name
6181          does not include capital letters, because the ada-mode would
6182          not be able to understand these symbol names without the
6183          angle bracket notation.  */
6184       const char *tmp;
6185
6186       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6187       if (*tmp != '\0')
6188         match = false;
6189     }
6190
6191   /* Second: Try wild matching...  */
6192
6193   if (!match && m_wild_match_p)
6194     {
6195       /* Since we are doing wild matching, this means that TEXT
6196          may represent an unqualified symbol name.  We therefore must
6197          also compare TEXT against the unqualified name of the symbol.  */
6198       sym_name = ada_unqualified_name (decoded_name.c_str ());
6199
6200       if (strncmp (sym_name, text, text_len) == 0)
6201         match = true;
6202     }
6203
6204   /* Finally: If we found a match, prepare the result to return.  */
6205
6206   if (!match)
6207     return false;
6208
6209   if (comp_match_res != NULL)
6210     {
6211       std::string &match_str = comp_match_res->match.storage ();
6212
6213       if (!m_encoded_p)
6214         match_str = ada_decode (sym_name);
6215       else
6216         {
6217           if (m_verbatim_p)
6218             match_str = add_angle_brackets (sym_name);
6219           else
6220             match_str = sym_name;
6221
6222         }
6223
6224       comp_match_res->set_match (match_str.c_str ());
6225     }
6226
6227   return true;
6228 }
6229
6230                                 /* Field Access */
6231
6232 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6233    for tagged types.  */
6234
6235 static int
6236 ada_is_dispatch_table_ptr_type (struct type *type)
6237 {
6238   const char *name;
6239
6240   if (type->code () != TYPE_CODE_PTR)
6241     return 0;
6242
6243   name = TYPE_TARGET_TYPE (type)->name ();
6244   if (name == NULL)
6245     return 0;
6246
6247   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6248 }
6249
6250 /* Return non-zero if TYPE is an interface tag.  */
6251
6252 static int
6253 ada_is_interface_tag (struct type *type)
6254 {
6255   const char *name = type->name ();
6256
6257   if (name == NULL)
6258     return 0;
6259
6260   return (strcmp (name, "ada__tags__interface_tag") == 0);
6261 }
6262
6263 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6264    to be invisible to users.  */
6265
6266 int
6267 ada_is_ignored_field (struct type *type, int field_num)
6268 {
6269   if (field_num < 0 || field_num > type->num_fields ())
6270     return 1;
6271
6272   /* Check the name of that field.  */
6273   {
6274     const char *name = TYPE_FIELD_NAME (type, field_num);
6275
6276     /* Anonymous field names should not be printed.
6277        brobecker/2007-02-20: I don't think this can actually happen
6278        but we don't want to print the value of anonymous fields anyway.  */
6279     if (name == NULL)
6280       return 1;
6281
6282     /* Normally, fields whose name start with an underscore ("_")
6283        are fields that have been internally generated by the compiler,
6284        and thus should not be printed.  The "_parent" field is special,
6285        however: This is a field internally generated by the compiler
6286        for tagged types, and it contains the components inherited from
6287        the parent type.  This field should not be printed as is, but
6288        should not be ignored either.  */
6289     if (name[0] == '_' && !startswith (name, "_parent"))
6290       return 1;
6291   }
6292
6293   /* If this is the dispatch table of a tagged type or an interface tag,
6294      then ignore.  */
6295   if (ada_is_tagged_type (type, 1)
6296       && (ada_is_dispatch_table_ptr_type (type->field (field_num).type ())
6297           || ada_is_interface_tag (type->field (field_num).type ())))
6298     return 1;
6299
6300   /* Not a special field, so it should not be ignored.  */
6301   return 0;
6302 }
6303
6304 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6305    pointer or reference type whose ultimate target has a tag field.  */
6306
6307 int
6308 ada_is_tagged_type (struct type *type, int refok)
6309 {
6310   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6311 }
6312
6313 /* True iff TYPE represents the type of X'Tag */
6314
6315 int
6316 ada_is_tag_type (struct type *type)
6317 {
6318   type = ada_check_typedef (type);
6319
6320   if (type == NULL || type->code () != TYPE_CODE_PTR)
6321     return 0;
6322   else
6323     {
6324       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6325
6326       return (name != NULL
6327               && strcmp (name, "ada__tags__dispatch_table") == 0);
6328     }
6329 }
6330
6331 /* The type of the tag on VAL.  */
6332
6333 static struct type *
6334 ada_tag_type (struct value *val)
6335 {
6336   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6337 }
6338
6339 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6340    retired at Ada 05).  */
6341
6342 static int
6343 is_ada95_tag (struct value *tag)
6344 {
6345   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6346 }
6347
6348 /* The value of the tag on VAL.  */
6349
6350 static struct value *
6351 ada_value_tag (struct value *val)
6352 {
6353   return ada_value_struct_elt (val, "_tag", 0);
6354 }
6355
6356 /* The value of the tag on the object of type TYPE whose contents are
6357    saved at VALADDR, if it is non-null, or is at memory address
6358    ADDRESS.  */
6359
6360 static struct value *
6361 value_tag_from_contents_and_address (struct type *type,
6362                                      const gdb_byte *valaddr,
6363                                      CORE_ADDR address)
6364 {
6365   int tag_byte_offset;
6366   struct type *tag_type;
6367
6368   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6369                          NULL, NULL, NULL))
6370     {
6371       const gdb_byte *valaddr1 = ((valaddr == NULL)
6372                                   ? NULL
6373                                   : valaddr + tag_byte_offset);
6374       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6375
6376       return value_from_contents_and_address (tag_type, valaddr1, address1);
6377     }
6378   return NULL;
6379 }
6380
6381 static struct type *
6382 type_from_tag (struct value *tag)
6383 {
6384   gdb::unique_xmalloc_ptr<char> type_name = ada_tag_name (tag);
6385
6386   if (type_name != NULL)
6387     return ada_find_any_type (ada_encode (type_name.get ()));
6388   return NULL;
6389 }
6390
6391 /* Given a value OBJ of a tagged type, return a value of this
6392    type at the base address of the object.  The base address, as
6393    defined in Ada.Tags, it is the address of the primary tag of
6394    the object, and therefore where the field values of its full
6395    view can be fetched.  */
6396
6397 struct value *
6398 ada_tag_value_at_base_address (struct value *obj)
6399 {
6400   struct value *val;
6401   LONGEST offset_to_top = 0;
6402   struct type *ptr_type, *obj_type;
6403   struct value *tag;
6404   CORE_ADDR base_address;
6405
6406   obj_type = value_type (obj);
6407
6408   /* It is the responsability of the caller to deref pointers.  */
6409
6410   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6411     return obj;
6412
6413   tag = ada_value_tag (obj);
6414   if (!tag)
6415     return obj;
6416
6417   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6418
6419   if (is_ada95_tag (tag))
6420     return obj;
6421
6422   ptr_type = language_lookup_primitive_type
6423     (language_def (language_ada), target_gdbarch(), "storage_offset");
6424   ptr_type = lookup_pointer_type (ptr_type);
6425   val = value_cast (ptr_type, tag);
6426   if (!val)
6427     return obj;
6428
6429   /* It is perfectly possible that an exception be raised while
6430      trying to determine the base address, just like for the tag;
6431      see ada_tag_name for more details.  We do not print the error
6432      message for the same reason.  */
6433
6434   try
6435     {
6436       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6437     }
6438
6439   catch (const gdb_exception_error &e)
6440     {
6441       return obj;
6442     }
6443
6444   /* If offset is null, nothing to do.  */
6445
6446   if (offset_to_top == 0)
6447     return obj;
6448
6449   /* -1 is a special case in Ada.Tags; however, what should be done
6450      is not quite clear from the documentation.  So do nothing for
6451      now.  */
6452
6453   if (offset_to_top == -1)
6454     return obj;
6455
6456   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6457      from the base address.  This was however incompatible with
6458      C++ dispatch table: C++ uses a *negative* value to *add*
6459      to the base address.  Ada's convention has therefore been
6460      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6461      use the same convention.  Here, we support both cases by
6462      checking the sign of OFFSET_TO_TOP.  */
6463
6464   if (offset_to_top > 0)
6465     offset_to_top = -offset_to_top;
6466
6467   base_address = value_address (obj) + offset_to_top;
6468   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6469
6470   /* Make sure that we have a proper tag at the new address.
6471      Otherwise, offset_to_top is bogus (which can happen when
6472      the object is not initialized yet).  */
6473
6474   if (!tag)
6475     return obj;
6476
6477   obj_type = type_from_tag (tag);
6478
6479   if (!obj_type)
6480     return obj;
6481
6482   return value_from_contents_and_address (obj_type, NULL, base_address);
6483 }
6484
6485 /* Return the "ada__tags__type_specific_data" type.  */
6486
6487 static struct type *
6488 ada_get_tsd_type (struct inferior *inf)
6489 {
6490   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6491
6492   if (data->tsd_type == 0)
6493     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6494   return data->tsd_type;
6495 }
6496
6497 /* Return the TSD (type-specific data) associated to the given TAG.
6498    TAG is assumed to be the tag of a tagged-type entity.
6499
6500    May return NULL if we are unable to get the TSD.  */
6501
6502 static struct value *
6503 ada_get_tsd_from_tag (struct value *tag)
6504 {
6505   struct value *val;
6506   struct type *type;
6507
6508   /* First option: The TSD is simply stored as a field of our TAG.
6509      Only older versions of GNAT would use this format, but we have
6510      to test it first, because there are no visible markers for
6511      the current approach except the absence of that field.  */
6512
6513   val = ada_value_struct_elt (tag, "tsd", 1);
6514   if (val)
6515     return val;
6516
6517   /* Try the second representation for the dispatch table (in which
6518      there is no explicit 'tsd' field in the referent of the tag pointer,
6519      and instead the tsd pointer is stored just before the dispatch
6520      table.  */
6521
6522   type = ada_get_tsd_type (current_inferior());
6523   if (type == NULL)
6524     return NULL;
6525   type = lookup_pointer_type (lookup_pointer_type (type));
6526   val = value_cast (type, tag);
6527   if (val == NULL)
6528     return NULL;
6529   return value_ind (value_ptradd (val, -1));
6530 }
6531
6532 /* Given the TSD of a tag (type-specific data), return a string
6533    containing the name of the associated type.
6534
6535    May return NULL if we are unable to determine the tag name.  */
6536
6537 static gdb::unique_xmalloc_ptr<char>
6538 ada_tag_name_from_tsd (struct value *tsd)
6539 {
6540   char *p;
6541   struct value *val;
6542
6543   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6544   if (val == NULL)
6545     return NULL;
6546   gdb::unique_xmalloc_ptr<char> buffer
6547     = target_read_string (value_as_address (val), INT_MAX);
6548   if (buffer == nullptr)
6549     return nullptr;
6550
6551   for (p = buffer.get (); *p != '\0'; ++p)
6552     {
6553       if (isalpha (*p))
6554         *p = tolower (*p);
6555     }
6556
6557   return buffer;
6558 }
6559
6560 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6561    a C string.
6562
6563    Return NULL if the TAG is not an Ada tag, or if we were unable to
6564    determine the name of that tag.  */
6565
6566 gdb::unique_xmalloc_ptr<char>
6567 ada_tag_name (struct value *tag)
6568 {
6569   gdb::unique_xmalloc_ptr<char> name;
6570
6571   if (!ada_is_tag_type (value_type (tag)))
6572     return NULL;
6573
6574   /* It is perfectly possible that an exception be raised while trying
6575      to determine the TAG's name, even under normal circumstances:
6576      The associated variable may be uninitialized or corrupted, for
6577      instance. We do not let any exception propagate past this point.
6578      instead we return NULL.
6579
6580      We also do not print the error message either (which often is very
6581      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6582      the caller print a more meaningful message if necessary.  */
6583   try
6584     {
6585       struct value *tsd = ada_get_tsd_from_tag (tag);
6586
6587       if (tsd != NULL)
6588         name = ada_tag_name_from_tsd (tsd);
6589     }
6590   catch (const gdb_exception_error &e)
6591     {
6592     }
6593
6594   return name;
6595 }
6596
6597 /* The parent type of TYPE, or NULL if none.  */
6598
6599 struct type *
6600 ada_parent_type (struct type *type)
6601 {
6602   int i;
6603
6604   type = ada_check_typedef (type);
6605
6606   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6607     return NULL;
6608
6609   for (i = 0; i < type->num_fields (); i += 1)
6610     if (ada_is_parent_field (type, i))
6611       {
6612         struct type *parent_type = type->field (i).type ();
6613
6614         /* If the _parent field is a pointer, then dereference it.  */
6615         if (parent_type->code () == TYPE_CODE_PTR)
6616           parent_type = TYPE_TARGET_TYPE (parent_type);
6617         /* If there is a parallel XVS type, get the actual base type.  */
6618         parent_type = ada_get_base_type (parent_type);
6619
6620         return ada_check_typedef (parent_type);
6621       }
6622
6623   return NULL;
6624 }
6625
6626 /* True iff field number FIELD_NUM of structure type TYPE contains the
6627    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6628    a structure type with at least FIELD_NUM+1 fields.  */
6629
6630 int
6631 ada_is_parent_field (struct type *type, int field_num)
6632 {
6633   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6634
6635   return (name != NULL
6636           && (startswith (name, "PARENT")
6637               || startswith (name, "_parent")));
6638 }
6639
6640 /* True iff field number FIELD_NUM of structure type TYPE is a
6641    transparent wrapper field (which should be silently traversed when doing
6642    field selection and flattened when printing).  Assumes TYPE is a
6643    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6644    structures.  */
6645
6646 int
6647 ada_is_wrapper_field (struct type *type, int field_num)
6648 {
6649   const char *name = TYPE_FIELD_NAME (type, field_num);
6650
6651   if (name != NULL && strcmp (name, "RETVAL") == 0)
6652     {
6653       /* This happens in functions with "out" or "in out" parameters
6654          which are passed by copy.  For such functions, GNAT describes
6655          the function's return type as being a struct where the return
6656          value is in a field called RETVAL, and where the other "out"
6657          or "in out" parameters are fields of that struct.  This is not
6658          a wrapper.  */
6659       return 0;
6660     }
6661
6662   return (name != NULL
6663           && (startswith (name, "PARENT")
6664               || strcmp (name, "REP") == 0
6665               || startswith (name, "_parent")
6666               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6667 }
6668
6669 /* True iff field number FIELD_NUM of structure or union type TYPE
6670    is a variant wrapper.  Assumes TYPE is a structure type with at least
6671    FIELD_NUM+1 fields.  */
6672
6673 int
6674 ada_is_variant_part (struct type *type, int field_num)
6675 {
6676   /* Only Ada types are eligible.  */
6677   if (!ADA_TYPE_P (type))
6678     return 0;
6679
6680   struct type *field_type = type->field (field_num).type ();
6681
6682   return (field_type->code () == TYPE_CODE_UNION
6683           || (is_dynamic_field (type, field_num)
6684               && (TYPE_TARGET_TYPE (field_type)->code ()
6685                   == TYPE_CODE_UNION)));
6686 }
6687
6688 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6689    whose discriminants are contained in the record type OUTER_TYPE,
6690    returns the type of the controlling discriminant for the variant.
6691    May return NULL if the type could not be found.  */
6692
6693 struct type *
6694 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6695 {
6696   const char *name = ada_variant_discrim_name (var_type);
6697
6698   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6699 }
6700
6701 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6702    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6703    represents a 'when others' clause; otherwise 0.  */
6704
6705 static int
6706 ada_is_others_clause (struct type *type, int field_num)
6707 {
6708   const char *name = TYPE_FIELD_NAME (type, field_num);
6709
6710   return (name != NULL && name[0] == 'O');
6711 }
6712
6713 /* Assuming that TYPE0 is the type of the variant part of a record,
6714    returns the name of the discriminant controlling the variant.
6715    The value is valid until the next call to ada_variant_discrim_name.  */
6716
6717 const char *
6718 ada_variant_discrim_name (struct type *type0)
6719 {
6720   static char *result = NULL;
6721   static size_t result_len = 0;
6722   struct type *type;
6723   const char *name;
6724   const char *discrim_end;
6725   const char *discrim_start;
6726
6727   if (type0->code () == TYPE_CODE_PTR)
6728     type = TYPE_TARGET_TYPE (type0);
6729   else
6730     type = type0;
6731
6732   name = ada_type_name (type);
6733
6734   if (name == NULL || name[0] == '\000')
6735     return "";
6736
6737   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6738        discrim_end -= 1)
6739     {
6740       if (startswith (discrim_end, "___XVN"))
6741         break;
6742     }
6743   if (discrim_end == name)
6744     return "";
6745
6746   for (discrim_start = discrim_end; discrim_start != name + 3;
6747        discrim_start -= 1)
6748     {
6749       if (discrim_start == name + 1)
6750         return "";
6751       if ((discrim_start > name + 3
6752            && startswith (discrim_start - 3, "___"))
6753           || discrim_start[-1] == '.')
6754         break;
6755     }
6756
6757   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6758   strncpy (result, discrim_start, discrim_end - discrim_start);
6759   result[discrim_end - discrim_start] = '\0';
6760   return result;
6761 }
6762
6763 /* Scan STR for a subtype-encoded number, beginning at position K.
6764    Put the position of the character just past the number scanned in
6765    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6766    Return 1 if there was a valid number at the given position, and 0
6767    otherwise.  A "subtype-encoded" number consists of the absolute value
6768    in decimal, followed by the letter 'm' to indicate a negative number.
6769    Assumes 0m does not occur.  */
6770
6771 int
6772 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6773 {
6774   ULONGEST RU;
6775
6776   if (!isdigit (str[k]))
6777     return 0;
6778
6779   /* Do it the hard way so as not to make any assumption about
6780      the relationship of unsigned long (%lu scan format code) and
6781      LONGEST.  */
6782   RU = 0;
6783   while (isdigit (str[k]))
6784     {
6785       RU = RU * 10 + (str[k] - '0');
6786       k += 1;
6787     }
6788
6789   if (str[k] == 'm')
6790     {
6791       if (R != NULL)
6792         *R = (-(LONGEST) (RU - 1)) - 1;
6793       k += 1;
6794     }
6795   else if (R != NULL)
6796     *R = (LONGEST) RU;
6797
6798   /* NOTE on the above: Technically, C does not say what the results of
6799      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6800      number representable as a LONGEST (although either would probably work
6801      in most implementations).  When RU>0, the locution in the then branch
6802      above is always equivalent to the negative of RU.  */
6803
6804   if (new_k != NULL)
6805     *new_k = k;
6806   return 1;
6807 }
6808
6809 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6810    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6811    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6812
6813 static int
6814 ada_in_variant (LONGEST val, struct type *type, int field_num)
6815 {
6816   const char *name = TYPE_FIELD_NAME (type, field_num);
6817   int p;
6818
6819   p = 0;
6820   while (1)
6821     {
6822       switch (name[p])
6823         {
6824         case '\0':
6825           return 0;
6826         case 'S':
6827           {
6828             LONGEST W;
6829
6830             if (!ada_scan_number (name, p + 1, &W, &p))
6831               return 0;
6832             if (val == W)
6833               return 1;
6834             break;
6835           }
6836         case 'R':
6837           {
6838             LONGEST L, U;
6839
6840             if (!ada_scan_number (name, p + 1, &L, &p)
6841                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6842               return 0;
6843             if (val >= L && val <= U)
6844               return 1;
6845             break;
6846           }
6847         case 'O':
6848           return 1;
6849         default:
6850           return 0;
6851         }
6852     }
6853 }
6854
6855 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
6856
6857 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6858    ARG_TYPE, extract and return the value of one of its (non-static)
6859    fields.  FIELDNO says which field.   Differs from value_primitive_field
6860    only in that it can handle packed values of arbitrary type.  */
6861
6862 struct value *
6863 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6864                            struct type *arg_type)
6865 {
6866   struct type *type;
6867
6868   arg_type = ada_check_typedef (arg_type);
6869   type = arg_type->field (fieldno).type ();
6870
6871   /* Handle packed fields.  It might be that the field is not packed
6872      relative to its containing structure, but the structure itself is
6873      packed; in this case we must take the bit-field path.  */
6874   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
6875     {
6876       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6877       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6878
6879       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6880                                              offset + bit_pos / 8,
6881                                              bit_pos % 8, bit_size, type);
6882     }
6883   else
6884     return value_primitive_field (arg1, offset, fieldno, arg_type);
6885 }
6886
6887 /* Find field with name NAME in object of type TYPE.  If found, 
6888    set the following for each argument that is non-null:
6889     - *FIELD_TYPE_P to the field's type; 
6890     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
6891       an object of that type;
6892     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
6893     - *BIT_SIZE_P to its size in bits if the field is packed, and 
6894       0 otherwise;
6895    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6896    fields up to but not including the desired field, or by the total
6897    number of fields if not found.   A NULL value of NAME never
6898    matches; the function just counts visible fields in this case.
6899    
6900    Notice that we need to handle when a tagged record hierarchy
6901    has some components with the same name, like in this scenario:
6902
6903       type Top_T is tagged record
6904          N : Integer := 1;
6905          U : Integer := 974;
6906          A : Integer := 48;
6907       end record;
6908
6909       type Middle_T is new Top.Top_T with record
6910          N : Character := 'a';
6911          C : Integer := 3;
6912       end record;
6913
6914      type Bottom_T is new Middle.Middle_T with record
6915         N : Float := 4.0;
6916         C : Character := '5';
6917         X : Integer := 6;
6918         A : Character := 'J';
6919      end record;
6920
6921    Let's say we now have a variable declared and initialized as follow:
6922
6923      TC : Top_A := new Bottom_T;
6924
6925    And then we use this variable to call this function
6926
6927      procedure Assign (Obj: in out Top_T; TV : Integer);
6928
6929    as follow:
6930
6931       Assign (Top_T (B), 12);
6932
6933    Now, we're in the debugger, and we're inside that procedure
6934    then and we want to print the value of obj.c:
6935
6936    Usually, the tagged record or one of the parent type owns the
6937    component to print and there's no issue but in this particular
6938    case, what does it mean to ask for Obj.C? Since the actual
6939    type for object is type Bottom_T, it could mean two things: type
6940    component C from the Middle_T view, but also component C from
6941    Bottom_T.  So in that "undefined" case, when the component is
6942    not found in the non-resolved type (which includes all the
6943    components of the parent type), then resolve it and see if we
6944    get better luck once expanded.
6945
6946    In the case of homonyms in the derived tagged type, we don't
6947    guaranty anything, and pick the one that's easiest for us
6948    to program.
6949
6950    Returns 1 if found, 0 otherwise.  */
6951
6952 static int
6953 find_struct_field (const char *name, struct type *type, int offset,
6954                    struct type **field_type_p,
6955                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
6956                    int *index_p)
6957 {
6958   int i;
6959   int parent_offset = -1;
6960
6961   type = ada_check_typedef (type);
6962
6963   if (field_type_p != NULL)
6964     *field_type_p = NULL;
6965   if (byte_offset_p != NULL)
6966     *byte_offset_p = 0;
6967   if (bit_offset_p != NULL)
6968     *bit_offset_p = 0;
6969   if (bit_size_p != NULL)
6970     *bit_size_p = 0;
6971
6972   for (i = 0; i < type->num_fields (); i += 1)
6973     {
6974       int bit_pos = TYPE_FIELD_BITPOS (type, i);
6975       int fld_offset = offset + bit_pos / 8;
6976       const char *t_field_name = TYPE_FIELD_NAME (type, i);
6977
6978       if (t_field_name == NULL)
6979         continue;
6980
6981       else if (ada_is_parent_field (type, i))
6982         {
6983           /* This is a field pointing us to the parent type of a tagged
6984              type.  As hinted in this function's documentation, we give
6985              preference to fields in the current record first, so what
6986              we do here is just record the index of this field before
6987              we skip it.  If it turns out we couldn't find our field
6988              in the current record, then we'll get back to it and search
6989              inside it whether the field might exist in the parent.  */
6990
6991           parent_offset = i;
6992           continue;
6993         }
6994
6995       else if (name != NULL && field_name_match (t_field_name, name))
6996         {
6997           int bit_size = TYPE_FIELD_BITSIZE (type, i);
6998
6999           if (field_type_p != NULL)
7000             *field_type_p = type->field (i).type ();
7001           if (byte_offset_p != NULL)
7002             *byte_offset_p = fld_offset;
7003           if (bit_offset_p != NULL)
7004             *bit_offset_p = bit_pos % 8;
7005           if (bit_size_p != NULL)
7006             *bit_size_p = bit_size;
7007           return 1;
7008         }
7009       else if (ada_is_wrapper_field (type, i))
7010         {
7011           if (find_struct_field (name, type->field (i).type (), fld_offset,
7012                                  field_type_p, byte_offset_p, bit_offset_p,
7013                                  bit_size_p, index_p))
7014             return 1;
7015         }
7016       else if (ada_is_variant_part (type, i))
7017         {
7018           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7019              fixed type?? */
7020           int j;
7021           struct type *field_type
7022             = ada_check_typedef (type->field (i).type ());
7023
7024           for (j = 0; j < field_type->num_fields (); j += 1)
7025             {
7026               if (find_struct_field (name, field_type->field (j).type (),
7027                                      fld_offset
7028                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7029                                      field_type_p, byte_offset_p,
7030                                      bit_offset_p, bit_size_p, index_p))
7031                 return 1;
7032             }
7033         }
7034       else if (index_p != NULL)
7035         *index_p += 1;
7036     }
7037
7038   /* Field not found so far.  If this is a tagged type which
7039      has a parent, try finding that field in the parent now.  */
7040
7041   if (parent_offset != -1)
7042     {
7043       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7044       int fld_offset = offset + bit_pos / 8;
7045
7046       if (find_struct_field (name, type->field (parent_offset).type (),
7047                              fld_offset, field_type_p, byte_offset_p,
7048                              bit_offset_p, bit_size_p, index_p))
7049         return 1;
7050     }
7051
7052   return 0;
7053 }
7054
7055 /* Number of user-visible fields in record type TYPE.  */
7056
7057 static int
7058 num_visible_fields (struct type *type)
7059 {
7060   int n;
7061
7062   n = 0;
7063   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7064   return n;
7065 }
7066
7067 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7068    and search in it assuming it has (class) type TYPE.
7069    If found, return value, else return NULL.
7070
7071    Searches recursively through wrapper fields (e.g., '_parent').
7072
7073    In the case of homonyms in the tagged types, please refer to the
7074    long explanation in find_struct_field's function documentation.  */
7075
7076 static struct value *
7077 ada_search_struct_field (const char *name, struct value *arg, int offset,
7078                          struct type *type)
7079 {
7080   int i;
7081   int parent_offset = -1;
7082
7083   type = ada_check_typedef (type);
7084   for (i = 0; i < type->num_fields (); i += 1)
7085     {
7086       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7087
7088       if (t_field_name == NULL)
7089         continue;
7090
7091       else if (ada_is_parent_field (type, i))
7092         {
7093           /* This is a field pointing us to the parent type of a tagged
7094              type.  As hinted in this function's documentation, we give
7095              preference to fields in the current record first, so what
7096              we do here is just record the index of this field before
7097              we skip it.  If it turns out we couldn't find our field
7098              in the current record, then we'll get back to it and search
7099              inside it whether the field might exist in the parent.  */
7100
7101           parent_offset = i;
7102           continue;
7103         }
7104
7105       else if (field_name_match (t_field_name, name))
7106         return ada_value_primitive_field (arg, offset, i, type);
7107
7108       else if (ada_is_wrapper_field (type, i))
7109         {
7110           struct value *v =     /* Do not let indent join lines here.  */
7111             ada_search_struct_field (name, arg,
7112                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7113                                      type->field (i).type ());
7114
7115           if (v != NULL)
7116             return v;
7117         }
7118
7119       else if (ada_is_variant_part (type, i))
7120         {
7121           /* PNH: Do we ever get here?  See find_struct_field.  */
7122           int j;
7123           struct type *field_type = ada_check_typedef (type->field (i).type ());
7124           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7125
7126           for (j = 0; j < field_type->num_fields (); j += 1)
7127             {
7128               struct value *v = ada_search_struct_field /* Force line
7129                                                            break.  */
7130                 (name, arg,
7131                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7132                  field_type->field (j).type ());
7133
7134               if (v != NULL)
7135                 return v;
7136             }
7137         }
7138     }
7139
7140   /* Field not found so far.  If this is a tagged type which
7141      has a parent, try finding that field in the parent now.  */
7142
7143   if (parent_offset != -1)
7144     {
7145       struct value *v = ada_search_struct_field (
7146         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7147         type->field (parent_offset).type ());
7148
7149       if (v != NULL)
7150         return v;
7151     }
7152
7153   return NULL;
7154 }
7155
7156 static struct value *ada_index_struct_field_1 (int *, struct value *,
7157                                                int, struct type *);
7158
7159
7160 /* Return field #INDEX in ARG, where the index is that returned by
7161  * find_struct_field through its INDEX_P argument.  Adjust the address
7162  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7163  * If found, return value, else return NULL.  */
7164
7165 static struct value *
7166 ada_index_struct_field (int index, struct value *arg, int offset,
7167                         struct type *type)
7168 {
7169   return ada_index_struct_field_1 (&index, arg, offset, type);
7170 }
7171
7172
7173 /* Auxiliary function for ada_index_struct_field.  Like
7174  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7175  * *INDEX_P.  */
7176
7177 static struct value *
7178 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7179                           struct type *type)
7180 {
7181   int i;
7182   type = ada_check_typedef (type);
7183
7184   for (i = 0; i < type->num_fields (); i += 1)
7185     {
7186       if (TYPE_FIELD_NAME (type, i) == NULL)
7187         continue;
7188       else if (ada_is_wrapper_field (type, i))
7189         {
7190           struct value *v =     /* Do not let indent join lines here.  */
7191             ada_index_struct_field_1 (index_p, arg,
7192                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7193                                       type->field (i).type ());
7194
7195           if (v != NULL)
7196             return v;
7197         }
7198
7199       else if (ada_is_variant_part (type, i))
7200         {
7201           /* PNH: Do we ever get here?  See ada_search_struct_field,
7202              find_struct_field.  */
7203           error (_("Cannot assign this kind of variant record"));
7204         }
7205       else if (*index_p == 0)
7206         return ada_value_primitive_field (arg, offset, i, type);
7207       else
7208         *index_p -= 1;
7209     }
7210   return NULL;
7211 }
7212
7213 /* Return a string representation of type TYPE.  */
7214
7215 static std::string
7216 type_as_string (struct type *type)
7217 {
7218   string_file tmp_stream;
7219
7220   type_print (type, "", &tmp_stream, -1);
7221
7222   return std::move (tmp_stream.string ());
7223 }
7224
7225 /* Given a type TYPE, look up the type of the component of type named NAME.
7226    If DISPP is non-null, add its byte displacement from the beginning of a
7227    structure (pointed to by a value) of type TYPE to *DISPP (does not
7228    work for packed fields).
7229
7230    Matches any field whose name has NAME as a prefix, possibly
7231    followed by "___".
7232
7233    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7234    be a (pointer or reference)+ to a struct or union, and the
7235    ultimate target type will be searched.
7236
7237    Looks recursively into variant clauses and parent types.
7238
7239    In the case of homonyms in the tagged types, please refer to the
7240    long explanation in find_struct_field's function documentation.
7241
7242    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7243    TYPE is not a type of the right kind.  */
7244
7245 static struct type *
7246 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7247                             int noerr)
7248 {
7249   int i;
7250   int parent_offset = -1;
7251
7252   if (name == NULL)
7253     goto BadName;
7254
7255   if (refok && type != NULL)
7256     while (1)
7257       {
7258         type = ada_check_typedef (type);
7259         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7260           break;
7261         type = TYPE_TARGET_TYPE (type);
7262       }
7263
7264   if (type == NULL
7265       || (type->code () != TYPE_CODE_STRUCT
7266           && type->code () != TYPE_CODE_UNION))
7267     {
7268       if (noerr)
7269         return NULL;
7270
7271       error (_("Type %s is not a structure or union type"),
7272              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7273     }
7274
7275   type = to_static_fixed_type (type);
7276
7277   for (i = 0; i < type->num_fields (); i += 1)
7278     {
7279       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7280       struct type *t;
7281
7282       if (t_field_name == NULL)
7283         continue;
7284
7285       else if (ada_is_parent_field (type, i))
7286         {
7287           /* This is a field pointing us to the parent type of a tagged
7288              type.  As hinted in this function's documentation, we give
7289              preference to fields in the current record first, so what
7290              we do here is just record the index of this field before
7291              we skip it.  If it turns out we couldn't find our field
7292              in the current record, then we'll get back to it and search
7293              inside it whether the field might exist in the parent.  */
7294
7295           parent_offset = i;
7296           continue;
7297         }
7298
7299       else if (field_name_match (t_field_name, name))
7300         return type->field (i).type ();
7301
7302       else if (ada_is_wrapper_field (type, i))
7303         {
7304           t = ada_lookup_struct_elt_type (type->field (i).type (), name,
7305                                           0, 1);
7306           if (t != NULL)
7307             return t;
7308         }
7309
7310       else if (ada_is_variant_part (type, i))
7311         {
7312           int j;
7313           struct type *field_type = ada_check_typedef (type->field (i).type ());
7314
7315           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7316             {
7317               /* FIXME pnh 2008/01/26: We check for a field that is
7318                  NOT wrapped in a struct, since the compiler sometimes
7319                  generates these for unchecked variant types.  Revisit
7320                  if the compiler changes this practice.  */
7321               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7322
7323               if (v_field_name != NULL 
7324                   && field_name_match (v_field_name, name))
7325                 t = field_type->field (j).type ();
7326               else
7327                 t = ada_lookup_struct_elt_type (field_type->field (j).type (),
7328                                                 name, 0, 1);
7329
7330               if (t != NULL)
7331                 return t;
7332             }
7333         }
7334
7335     }
7336
7337     /* Field not found so far.  If this is a tagged type which
7338        has a parent, try finding that field in the parent now.  */
7339
7340     if (parent_offset != -1)
7341       {
7342         struct type *t;
7343
7344         t = ada_lookup_struct_elt_type (type->field (parent_offset).type (),
7345                                         name, 0, 1);
7346         if (t != NULL)
7347           return t;
7348       }
7349
7350 BadName:
7351   if (!noerr)
7352     {
7353       const char *name_str = name != NULL ? name : _("<null>");
7354
7355       error (_("Type %s has no component named %s"),
7356              type_as_string (type).c_str (), name_str);
7357     }
7358
7359   return NULL;
7360 }
7361
7362 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7363    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7364    represents an unchecked union (that is, the variant part of a
7365    record that is named in an Unchecked_Union pragma).  */
7366
7367 static int
7368 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7369 {
7370   const char *discrim_name = ada_variant_discrim_name (var_type);
7371
7372   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7373 }
7374
7375
7376 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7377    within OUTER, determine which variant clause (field number in VAR_TYPE,
7378    numbering from 0) is applicable.  Returns -1 if none are.  */
7379
7380 int
7381 ada_which_variant_applies (struct type *var_type, struct value *outer)
7382 {
7383   int others_clause;
7384   int i;
7385   const char *discrim_name = ada_variant_discrim_name (var_type);
7386   struct value *discrim;
7387   LONGEST discrim_val;
7388
7389   /* Using plain value_from_contents_and_address here causes problems
7390      because we will end up trying to resolve a type that is currently
7391      being constructed.  */
7392   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7393   if (discrim == NULL)
7394     return -1;
7395   discrim_val = value_as_long (discrim);
7396
7397   others_clause = -1;
7398   for (i = 0; i < var_type->num_fields (); i += 1)
7399     {
7400       if (ada_is_others_clause (var_type, i))
7401         others_clause = i;
7402       else if (ada_in_variant (discrim_val, var_type, i))
7403         return i;
7404     }
7405
7406   return others_clause;
7407 }
7408 \f
7409
7410
7411                                 /* Dynamic-Sized Records */
7412
7413 /* Strategy: The type ostensibly attached to a value with dynamic size
7414    (i.e., a size that is not statically recorded in the debugging
7415    data) does not accurately reflect the size or layout of the value.
7416    Our strategy is to convert these values to values with accurate,
7417    conventional types that are constructed on the fly.  */
7418
7419 /* There is a subtle and tricky problem here.  In general, we cannot
7420    determine the size of dynamic records without its data.  However,
7421    the 'struct value' data structure, which GDB uses to represent
7422    quantities in the inferior process (the target), requires the size
7423    of the type at the time of its allocation in order to reserve space
7424    for GDB's internal copy of the data.  That's why the
7425    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7426    rather than struct value*s.
7427
7428    However, GDB's internal history variables ($1, $2, etc.) are
7429    struct value*s containing internal copies of the data that are not, in
7430    general, the same as the data at their corresponding addresses in
7431    the target.  Fortunately, the types we give to these values are all
7432    conventional, fixed-size types (as per the strategy described
7433    above), so that we don't usually have to perform the
7434    'to_fixed_xxx_type' conversions to look at their values.
7435    Unfortunately, there is one exception: if one of the internal
7436    history variables is an array whose elements are unconstrained
7437    records, then we will need to create distinct fixed types for each
7438    element selected.  */
7439
7440 /* The upshot of all of this is that many routines take a (type, host
7441    address, target address) triple as arguments to represent a value.
7442    The host address, if non-null, is supposed to contain an internal
7443    copy of the relevant data; otherwise, the program is to consult the
7444    target at the target address.  */
7445
7446 /* Assuming that VAL0 represents a pointer value, the result of
7447    dereferencing it.  Differs from value_ind in its treatment of
7448    dynamic-sized types.  */
7449
7450 struct value *
7451 ada_value_ind (struct value *val0)
7452 {
7453   struct value *val = value_ind (val0);
7454
7455   if (ada_is_tagged_type (value_type (val), 0))
7456     val = ada_tag_value_at_base_address (val);
7457
7458   return ada_to_fixed_value (val);
7459 }
7460
7461 /* The value resulting from dereferencing any "reference to"
7462    qualifiers on VAL0.  */
7463
7464 static struct value *
7465 ada_coerce_ref (struct value *val0)
7466 {
7467   if (value_type (val0)->code () == TYPE_CODE_REF)
7468     {
7469       struct value *val = val0;
7470
7471       val = coerce_ref (val);
7472
7473       if (ada_is_tagged_type (value_type (val), 0))
7474         val = ada_tag_value_at_base_address (val);
7475
7476       return ada_to_fixed_value (val);
7477     }
7478   else
7479     return val0;
7480 }
7481
7482 /* Return the bit alignment required for field #F of template type TYPE.  */
7483
7484 static unsigned int
7485 field_alignment (struct type *type, int f)
7486 {
7487   const char *name = TYPE_FIELD_NAME (type, f);
7488   int len;
7489   int align_offset;
7490
7491   /* The field name should never be null, unless the debugging information
7492      is somehow malformed.  In this case, we assume the field does not
7493      require any alignment.  */
7494   if (name == NULL)
7495     return 1;
7496
7497   len = strlen (name);
7498
7499   if (!isdigit (name[len - 1]))
7500     return 1;
7501
7502   if (isdigit (name[len - 2]))
7503     align_offset = len - 2;
7504   else
7505     align_offset = len - 1;
7506
7507   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7508     return TARGET_CHAR_BIT;
7509
7510   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7511 }
7512
7513 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7514
7515 static struct symbol *
7516 ada_find_any_type_symbol (const char *name)
7517 {
7518   struct symbol *sym;
7519
7520   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7521   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7522     return sym;
7523
7524   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7525   return sym;
7526 }
7527
7528 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7529    solely for types defined by debug info, it will not search the GDB
7530    primitive types.  */
7531
7532 static struct type *
7533 ada_find_any_type (const char *name)
7534 {
7535   struct symbol *sym = ada_find_any_type_symbol (name);
7536
7537   if (sym != NULL)
7538     return SYMBOL_TYPE (sym);
7539
7540   return NULL;
7541 }
7542
7543 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7544    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7545    symbol, in which case it is returned.  Otherwise, this looks for
7546    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7547    Return symbol if found, and NULL otherwise.  */
7548
7549 static bool
7550 ada_is_renaming_symbol (struct symbol *name_sym)
7551 {
7552   const char *name = name_sym->linkage_name ();
7553   return strstr (name, "___XR") != NULL;
7554 }
7555
7556 /* Because of GNAT encoding conventions, several GDB symbols may match a
7557    given type name.  If the type denoted by TYPE0 is to be preferred to
7558    that of TYPE1 for purposes of type printing, return non-zero;
7559    otherwise return 0.  */
7560
7561 int
7562 ada_prefer_type (struct type *type0, struct type *type1)
7563 {
7564   if (type1 == NULL)
7565     return 1;
7566   else if (type0 == NULL)
7567     return 0;
7568   else if (type1->code () == TYPE_CODE_VOID)
7569     return 1;
7570   else if (type0->code () == TYPE_CODE_VOID)
7571     return 0;
7572   else if (type1->name () == NULL && type0->name () != NULL)
7573     return 1;
7574   else if (ada_is_constrained_packed_array_type (type0))
7575     return 1;
7576   else if (ada_is_array_descriptor_type (type0)
7577            && !ada_is_array_descriptor_type (type1))
7578     return 1;
7579   else
7580     {
7581       const char *type0_name = type0->name ();
7582       const char *type1_name = type1->name ();
7583
7584       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7585           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7586         return 1;
7587     }
7588   return 0;
7589 }
7590
7591 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7592    null.  */
7593
7594 const char *
7595 ada_type_name (struct type *type)
7596 {
7597   if (type == NULL)
7598     return NULL;
7599   return type->name ();
7600 }
7601
7602 /* Search the list of "descriptive" types associated to TYPE for a type
7603    whose name is NAME.  */
7604
7605 static struct type *
7606 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7607 {
7608   struct type *result, *tmp;
7609
7610   if (ada_ignore_descriptive_types_p)
7611     return NULL;
7612
7613   /* If there no descriptive-type info, then there is no parallel type
7614      to be found.  */
7615   if (!HAVE_GNAT_AUX_INFO (type))
7616     return NULL;
7617
7618   result = TYPE_DESCRIPTIVE_TYPE (type);
7619   while (result != NULL)
7620     {
7621       const char *result_name = ada_type_name (result);
7622
7623       if (result_name == NULL)
7624         {
7625           warning (_("unexpected null name on descriptive type"));
7626           return NULL;
7627         }
7628
7629       /* If the names match, stop.  */
7630       if (strcmp (result_name, name) == 0)
7631         break;
7632
7633       /* Otherwise, look at the next item on the list, if any.  */
7634       if (HAVE_GNAT_AUX_INFO (result))
7635         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7636       else
7637         tmp = NULL;
7638
7639       /* If not found either, try after having resolved the typedef.  */
7640       if (tmp != NULL)
7641         result = tmp;
7642       else
7643         {
7644           result = check_typedef (result);
7645           if (HAVE_GNAT_AUX_INFO (result))
7646             result = TYPE_DESCRIPTIVE_TYPE (result);
7647           else
7648             result = NULL;
7649         }
7650     }
7651
7652   /* If we didn't find a match, see whether this is a packed array.  With
7653      older compilers, the descriptive type information is either absent or
7654      irrelevant when it comes to packed arrays so the above lookup fails.
7655      Fall back to using a parallel lookup by name in this case.  */
7656   if (result == NULL && ada_is_constrained_packed_array_type (type))
7657     return ada_find_any_type (name);
7658
7659   return result;
7660 }
7661
7662 /* Find a parallel type to TYPE with the specified NAME, using the
7663    descriptive type taken from the debugging information, if available,
7664    and otherwise using the (slower) name-based method.  */
7665
7666 static struct type *
7667 ada_find_parallel_type_with_name (struct type *type, const char *name)
7668 {
7669   struct type *result = NULL;
7670
7671   if (HAVE_GNAT_AUX_INFO (type))
7672     result = find_parallel_type_by_descriptive_type (type, name);
7673   else
7674     result = ada_find_any_type (name);
7675
7676   return result;
7677 }
7678
7679 /* Same as above, but specify the name of the parallel type by appending
7680    SUFFIX to the name of TYPE.  */
7681
7682 struct type *
7683 ada_find_parallel_type (struct type *type, const char *suffix)
7684 {
7685   char *name;
7686   const char *type_name = ada_type_name (type);
7687   int len;
7688
7689   if (type_name == NULL)
7690     return NULL;
7691
7692   len = strlen (type_name);
7693
7694   name = (char *) alloca (len + strlen (suffix) + 1);
7695
7696   strcpy (name, type_name);
7697   strcpy (name + len, suffix);
7698
7699   return ada_find_parallel_type_with_name (type, name);
7700 }
7701
7702 /* If TYPE is a variable-size record type, return the corresponding template
7703    type describing its fields.  Otherwise, return NULL.  */
7704
7705 static struct type *
7706 dynamic_template_type (struct type *type)
7707 {
7708   type = ada_check_typedef (type);
7709
7710   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7711       || ada_type_name (type) == NULL)
7712     return NULL;
7713   else
7714     {
7715       int len = strlen (ada_type_name (type));
7716
7717       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7718         return type;
7719       else
7720         return ada_find_parallel_type (type, "___XVE");
7721     }
7722 }
7723
7724 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7725    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7726
7727 static int
7728 is_dynamic_field (struct type *templ_type, int field_num)
7729 {
7730   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7731
7732   return name != NULL
7733     && templ_type->field (field_num).type ()->code () == TYPE_CODE_PTR
7734     && strstr (name, "___XVL") != NULL;
7735 }
7736
7737 /* The index of the variant field of TYPE, or -1 if TYPE does not
7738    represent a variant record type.  */
7739
7740 static int
7741 variant_field_index (struct type *type)
7742 {
7743   int f;
7744
7745   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7746     return -1;
7747
7748   for (f = 0; f < type->num_fields (); f += 1)
7749     {
7750       if (ada_is_variant_part (type, f))
7751         return f;
7752     }
7753   return -1;
7754 }
7755
7756 /* A record type with no fields.  */
7757
7758 static struct type *
7759 empty_record (struct type *templ)
7760 {
7761   struct type *type = alloc_type_copy (templ);
7762
7763   type->set_code (TYPE_CODE_STRUCT);
7764   INIT_NONE_SPECIFIC (type);
7765   type->set_name ("<empty>");
7766   TYPE_LENGTH (type) = 0;
7767   return type;
7768 }
7769
7770 /* An ordinary record type (with fixed-length fields) that describes
7771    the value of type TYPE at VALADDR or ADDRESS (see comments at
7772    the beginning of this section) VAL according to GNAT conventions.
7773    DVAL0 should describe the (portion of a) record that contains any
7774    necessary discriminants.  It should be NULL if value_type (VAL) is
7775    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7776    variant field (unless unchecked) is replaced by a particular branch
7777    of the variant.
7778
7779    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7780    length are not statically known are discarded.  As a consequence,
7781    VALADDR, ADDRESS and DVAL0 are ignored.
7782
7783    NOTE: Limitations: For now, we assume that dynamic fields and
7784    variants occupy whole numbers of bytes.  However, they need not be
7785    byte-aligned.  */
7786
7787 struct type *
7788 ada_template_to_fixed_record_type_1 (struct type *type,
7789                                      const gdb_byte *valaddr,
7790                                      CORE_ADDR address, struct value *dval0,
7791                                      int keep_dynamic_fields)
7792 {
7793   struct value *mark = value_mark ();
7794   struct value *dval;
7795   struct type *rtype;
7796   int nfields, bit_len;
7797   int variant_field;
7798   long off;
7799   int fld_bit_len;
7800   int f;
7801
7802   /* Compute the number of fields in this record type that are going
7803      to be processed: unless keep_dynamic_fields, this includes only
7804      fields whose position and length are static will be processed.  */
7805   if (keep_dynamic_fields)
7806     nfields = type->num_fields ();
7807   else
7808     {
7809       nfields = 0;
7810       while (nfields < type->num_fields ()
7811              && !ada_is_variant_part (type, nfields)
7812              && !is_dynamic_field (type, nfields))
7813         nfields++;
7814     }
7815
7816   rtype = alloc_type_copy (type);
7817   rtype->set_code (TYPE_CODE_STRUCT);
7818   INIT_NONE_SPECIFIC (rtype);
7819   rtype->set_num_fields (nfields);
7820   rtype->set_fields
7821    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
7822   rtype->set_name (ada_type_name (type));
7823   TYPE_FIXED_INSTANCE (rtype) = 1;
7824
7825   off = 0;
7826   bit_len = 0;
7827   variant_field = -1;
7828
7829   for (f = 0; f < nfields; f += 1)
7830     {
7831       off = align_up (off, field_alignment (type, f))
7832         + TYPE_FIELD_BITPOS (type, f);
7833       SET_FIELD_BITPOS (rtype->field (f), off);
7834       TYPE_FIELD_BITSIZE (rtype, f) = 0;
7835
7836       if (ada_is_variant_part (type, f))
7837         {
7838           variant_field = f;
7839           fld_bit_len = 0;
7840         }
7841       else if (is_dynamic_field (type, f))
7842         {
7843           const gdb_byte *field_valaddr = valaddr;
7844           CORE_ADDR field_address = address;
7845           struct type *field_type =
7846             TYPE_TARGET_TYPE (type->field (f).type ());
7847
7848           if (dval0 == NULL)
7849             {
7850               /* rtype's length is computed based on the run-time
7851                  value of discriminants.  If the discriminants are not
7852                  initialized, the type size may be completely bogus and
7853                  GDB may fail to allocate a value for it.  So check the
7854                  size first before creating the value.  */
7855               ada_ensure_varsize_limit (rtype);
7856               /* Using plain value_from_contents_and_address here
7857                  causes problems because we will end up trying to
7858                  resolve a type that is currently being
7859                  constructed.  */
7860               dval = value_from_contents_and_address_unresolved (rtype,
7861                                                                  valaddr,
7862                                                                  address);
7863               rtype = value_type (dval);
7864             }
7865           else
7866             dval = dval0;
7867
7868           /* If the type referenced by this field is an aligner type, we need
7869              to unwrap that aligner type, because its size might not be set.
7870              Keeping the aligner type would cause us to compute the wrong
7871              size for this field, impacting the offset of the all the fields
7872              that follow this one.  */
7873           if (ada_is_aligner_type (field_type))
7874             {
7875               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7876
7877               field_valaddr = cond_offset_host (field_valaddr, field_offset);
7878               field_address = cond_offset_target (field_address, field_offset);
7879               field_type = ada_aligned_type (field_type);
7880             }
7881
7882           field_valaddr = cond_offset_host (field_valaddr,
7883                                             off / TARGET_CHAR_BIT);
7884           field_address = cond_offset_target (field_address,
7885                                               off / TARGET_CHAR_BIT);
7886
7887           /* Get the fixed type of the field.  Note that, in this case,
7888              we do not want to get the real type out of the tag: if
7889              the current field is the parent part of a tagged record,
7890              we will get the tag of the object.  Clearly wrong: the real
7891              type of the parent is not the real type of the child.  We
7892              would end up in an infinite loop.  */
7893           field_type = ada_get_base_type (field_type);
7894           field_type = ada_to_fixed_type (field_type, field_valaddr,
7895                                           field_address, dval, 0);
7896           /* If the field size is already larger than the maximum
7897              object size, then the record itself will necessarily
7898              be larger than the maximum object size.  We need to make
7899              this check now, because the size might be so ridiculously
7900              large (due to an uninitialized variable in the inferior)
7901              that it would cause an overflow when adding it to the
7902              record size.  */
7903           ada_ensure_varsize_limit (field_type);
7904
7905           rtype->field (f).set_type (field_type);
7906           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7907           /* The multiplication can potentially overflow.  But because
7908              the field length has been size-checked just above, and
7909              assuming that the maximum size is a reasonable value,
7910              an overflow should not happen in practice.  So rather than
7911              adding overflow recovery code to this already complex code,
7912              we just assume that it's not going to happen.  */
7913           fld_bit_len =
7914             TYPE_LENGTH (rtype->field (f).type ()) * TARGET_CHAR_BIT;
7915         }
7916       else
7917         {
7918           /* Note: If this field's type is a typedef, it is important
7919              to preserve the typedef layer.
7920
7921              Otherwise, we might be transforming a typedef to a fat
7922              pointer (encoding a pointer to an unconstrained array),
7923              into a basic fat pointer (encoding an unconstrained
7924              array).  As both types are implemented using the same
7925              structure, the typedef is the only clue which allows us
7926              to distinguish between the two options.  Stripping it
7927              would prevent us from printing this field appropriately.  */
7928           rtype->field (f).set_type (type->field (f).type ());
7929           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7930           if (TYPE_FIELD_BITSIZE (type, f) > 0)
7931             fld_bit_len =
7932               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7933           else
7934             {
7935               struct type *field_type = type->field (f).type ();
7936
7937               /* We need to be careful of typedefs when computing
7938                  the length of our field.  If this is a typedef,
7939                  get the length of the target type, not the length
7940                  of the typedef.  */
7941               if (field_type->code () == TYPE_CODE_TYPEDEF)
7942                 field_type = ada_typedef_target_type (field_type);
7943
7944               fld_bit_len =
7945                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
7946             }
7947         }
7948       if (off + fld_bit_len > bit_len)
7949         bit_len = off + fld_bit_len;
7950       off += fld_bit_len;
7951       TYPE_LENGTH (rtype) =
7952         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7953     }
7954
7955   /* We handle the variant part, if any, at the end because of certain
7956      odd cases in which it is re-ordered so as NOT to be the last field of
7957      the record.  This can happen in the presence of representation
7958      clauses.  */
7959   if (variant_field >= 0)
7960     {
7961       struct type *branch_type;
7962
7963       off = TYPE_FIELD_BITPOS (rtype, variant_field);
7964
7965       if (dval0 == NULL)
7966         {
7967           /* Using plain value_from_contents_and_address here causes
7968              problems because we will end up trying to resolve a type
7969              that is currently being constructed.  */
7970           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
7971                                                              address);
7972           rtype = value_type (dval);
7973         }
7974       else
7975         dval = dval0;
7976
7977       branch_type =
7978         to_fixed_variant_branch_type
7979         (type->field (variant_field).type (),
7980          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
7981          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
7982       if (branch_type == NULL)
7983         {
7984           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
7985             rtype->field (f - 1) = rtype->field (f);
7986           rtype->set_num_fields (rtype->num_fields () - 1);
7987         }
7988       else
7989         {
7990           rtype->field (variant_field).set_type (branch_type);
7991           TYPE_FIELD_NAME (rtype, variant_field) = "S";
7992           fld_bit_len =
7993             TYPE_LENGTH (rtype->field (variant_field).type ()) *
7994             TARGET_CHAR_BIT;
7995           if (off + fld_bit_len > bit_len)
7996             bit_len = off + fld_bit_len;
7997           TYPE_LENGTH (rtype) =
7998             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7999         }
8000     }
8001
8002   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8003      should contain the alignment of that record, which should be a strictly
8004      positive value.  If null or negative, then something is wrong, most
8005      probably in the debug info.  In that case, we don't round up the size
8006      of the resulting type.  If this record is not part of another structure,
8007      the current RTYPE length might be good enough for our purposes.  */
8008   if (TYPE_LENGTH (type) <= 0)
8009     {
8010       if (rtype->name ())
8011         warning (_("Invalid type size for `%s' detected: %s."),
8012                  rtype->name (), pulongest (TYPE_LENGTH (type)));
8013       else
8014         warning (_("Invalid type size for <unnamed> detected: %s."),
8015                  pulongest (TYPE_LENGTH (type)));
8016     }
8017   else
8018     {
8019       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8020                                       TYPE_LENGTH (type));
8021     }
8022
8023   value_free_to_mark (mark);
8024   if (TYPE_LENGTH (rtype) > varsize_limit)
8025     error (_("record type with dynamic size is larger than varsize-limit"));
8026   return rtype;
8027 }
8028
8029 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8030    of 1.  */
8031
8032 static struct type *
8033 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8034                                CORE_ADDR address, struct value *dval0)
8035 {
8036   return ada_template_to_fixed_record_type_1 (type, valaddr,
8037                                               address, dval0, 1);
8038 }
8039
8040 /* An ordinary record type in which ___XVL-convention fields and
8041    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8042    static approximations, containing all possible fields.  Uses
8043    no runtime values.  Useless for use in values, but that's OK,
8044    since the results are used only for type determinations.   Works on both
8045    structs and unions.  Representation note: to save space, we memorize
8046    the result of this function in the TYPE_TARGET_TYPE of the
8047    template type.  */
8048
8049 static struct type *
8050 template_to_static_fixed_type (struct type *type0)
8051 {
8052   struct type *type;
8053   int nfields;
8054   int f;
8055
8056   /* No need no do anything if the input type is already fixed.  */
8057   if (TYPE_FIXED_INSTANCE (type0))
8058     return type0;
8059
8060   /* Likewise if we already have computed the static approximation.  */
8061   if (TYPE_TARGET_TYPE (type0) != NULL)
8062     return TYPE_TARGET_TYPE (type0);
8063
8064   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8065   type = type0;
8066   nfields = type0->num_fields ();
8067
8068   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8069      recompute all over next time.  */
8070   TYPE_TARGET_TYPE (type0) = type;
8071
8072   for (f = 0; f < nfields; f += 1)
8073     {
8074       struct type *field_type = type0->field (f).type ();
8075       struct type *new_type;
8076
8077       if (is_dynamic_field (type0, f))
8078         {
8079           field_type = ada_check_typedef (field_type);
8080           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8081         }
8082       else
8083         new_type = static_unwrap_type (field_type);
8084
8085       if (new_type != field_type)
8086         {
8087           /* Clone TYPE0 only the first time we get a new field type.  */
8088           if (type == type0)
8089             {
8090               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8091               type->set_code (type0->code ());
8092               INIT_NONE_SPECIFIC (type);
8093               type->set_num_fields (nfields);
8094
8095               field *fields =
8096                 ((struct field *)
8097                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
8098               memcpy (fields, type0->fields (),
8099                       sizeof (struct field) * nfields);
8100               type->set_fields (fields);
8101
8102               type->set_name (ada_type_name (type0));
8103               TYPE_FIXED_INSTANCE (type) = 1;
8104               TYPE_LENGTH (type) = 0;
8105             }
8106           type->field (f).set_type (new_type);
8107           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8108         }
8109     }
8110
8111   return type;
8112 }
8113
8114 /* Given an object of type TYPE whose contents are at VALADDR and
8115    whose address in memory is ADDRESS, returns a revision of TYPE,
8116    which should be a non-dynamic-sized record, in which the variant
8117    part, if any, is replaced with the appropriate branch.  Looks
8118    for discriminant values in DVAL0, which can be NULL if the record
8119    contains the necessary discriminant values.  */
8120
8121 static struct type *
8122 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8123                                    CORE_ADDR address, struct value *dval0)
8124 {
8125   struct value *mark = value_mark ();
8126   struct value *dval;
8127   struct type *rtype;
8128   struct type *branch_type;
8129   int nfields = type->num_fields ();
8130   int variant_field = variant_field_index (type);
8131
8132   if (variant_field == -1)
8133     return type;
8134
8135   if (dval0 == NULL)
8136     {
8137       dval = value_from_contents_and_address (type, valaddr, address);
8138       type = value_type (dval);
8139     }
8140   else
8141     dval = dval0;
8142
8143   rtype = alloc_type_copy (type);
8144   rtype->set_code (TYPE_CODE_STRUCT);
8145   INIT_NONE_SPECIFIC (rtype);
8146   rtype->set_num_fields (nfields);
8147
8148   field *fields =
8149     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8150   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8151   rtype->set_fields (fields);
8152
8153   rtype->set_name (ada_type_name (type));
8154   TYPE_FIXED_INSTANCE (rtype) = 1;
8155   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8156
8157   branch_type = to_fixed_variant_branch_type
8158     (type->field (variant_field).type (),
8159      cond_offset_host (valaddr,
8160                        TYPE_FIELD_BITPOS (type, variant_field)
8161                        / TARGET_CHAR_BIT),
8162      cond_offset_target (address,
8163                          TYPE_FIELD_BITPOS (type, variant_field)
8164                          / TARGET_CHAR_BIT), dval);
8165   if (branch_type == NULL)
8166     {
8167       int f;
8168
8169       for (f = variant_field + 1; f < nfields; f += 1)
8170         rtype->field (f - 1) = rtype->field (f);
8171       rtype->set_num_fields (rtype->num_fields () - 1);
8172     }
8173   else
8174     {
8175       rtype->field (variant_field).set_type (branch_type);
8176       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8177       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8178       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8179     }
8180   TYPE_LENGTH (rtype) -= TYPE_LENGTH (type->field (variant_field).type ());
8181
8182   value_free_to_mark (mark);
8183   return rtype;
8184 }
8185
8186 /* An ordinary record type (with fixed-length fields) that describes
8187    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8188    beginning of this section].   Any necessary discriminants' values
8189    should be in DVAL, a record value; it may be NULL if the object
8190    at ADDR itself contains any necessary discriminant values.
8191    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8192    values from the record are needed.  Except in the case that DVAL,
8193    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8194    unchecked) is replaced by a particular branch of the variant.
8195
8196    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8197    is questionable and may be removed.  It can arise during the
8198    processing of an unconstrained-array-of-record type where all the
8199    variant branches have exactly the same size.  This is because in
8200    such cases, the compiler does not bother to use the XVS convention
8201    when encoding the record.  I am currently dubious of this
8202    shortcut and suspect the compiler should be altered.  FIXME.  */
8203
8204 static struct type *
8205 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8206                       CORE_ADDR address, struct value *dval)
8207 {
8208   struct type *templ_type;
8209
8210   if (TYPE_FIXED_INSTANCE (type0))
8211     return type0;
8212
8213   templ_type = dynamic_template_type (type0);
8214
8215   if (templ_type != NULL)
8216     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8217   else if (variant_field_index (type0) >= 0)
8218     {
8219       if (dval == NULL && valaddr == NULL && address == 0)
8220         return type0;
8221       return to_record_with_fixed_variant_part (type0, valaddr, address,
8222                                                 dval);
8223     }
8224   else
8225     {
8226       TYPE_FIXED_INSTANCE (type0) = 1;
8227       return type0;
8228     }
8229
8230 }
8231
8232 /* An ordinary record type (with fixed-length fields) that describes
8233    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8234    union type.  Any necessary discriminants' values should be in DVAL,
8235    a record value.  That is, this routine selects the appropriate
8236    branch of the union at ADDR according to the discriminant value
8237    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8238    it represents a variant subject to a pragma Unchecked_Union.  */
8239
8240 static struct type *
8241 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8242                               CORE_ADDR address, struct value *dval)
8243 {
8244   int which;
8245   struct type *templ_type;
8246   struct type *var_type;
8247
8248   if (var_type0->code () == TYPE_CODE_PTR)
8249     var_type = TYPE_TARGET_TYPE (var_type0);
8250   else
8251     var_type = var_type0;
8252
8253   templ_type = ada_find_parallel_type (var_type, "___XVU");
8254
8255   if (templ_type != NULL)
8256     var_type = templ_type;
8257
8258   if (is_unchecked_variant (var_type, value_type (dval)))
8259       return var_type0;
8260   which = ada_which_variant_applies (var_type, dval);
8261
8262   if (which < 0)
8263     return empty_record (var_type);
8264   else if (is_dynamic_field (var_type, which))
8265     return to_fixed_record_type
8266       (TYPE_TARGET_TYPE (var_type->field (which).type ()),
8267        valaddr, address, dval);
8268   else if (variant_field_index (var_type->field (which).type ()) >= 0)
8269     return
8270       to_fixed_record_type
8271       (var_type->field (which).type (), valaddr, address, dval);
8272   else
8273     return var_type->field (which).type ();
8274 }
8275
8276 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8277    ENCODING_TYPE, a type following the GNAT conventions for discrete
8278    type encodings, only carries redundant information.  */
8279
8280 static int
8281 ada_is_redundant_range_encoding (struct type *range_type,
8282                                  struct type *encoding_type)
8283 {
8284   const char *bounds_str;
8285   int n;
8286   LONGEST lo, hi;
8287
8288   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8289
8290   if (get_base_type (range_type)->code ()
8291       != get_base_type (encoding_type)->code ())
8292     {
8293       /* The compiler probably used a simple base type to describe
8294          the range type instead of the range's actual base type,
8295          expecting us to get the real base type from the encoding
8296          anyway.  In this situation, the encoding cannot be ignored
8297          as redundant.  */
8298       return 0;
8299     }
8300
8301   if (is_dynamic_type (range_type))
8302     return 0;
8303
8304   if (encoding_type->name () == NULL)
8305     return 0;
8306
8307   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8308   if (bounds_str == NULL)
8309     return 0;
8310
8311   n = 8; /* Skip "___XDLU_".  */
8312   if (!ada_scan_number (bounds_str, n, &lo, &n))
8313     return 0;
8314   if (range_type->bounds ()->low.const_val () != lo)
8315     return 0;
8316
8317   n += 2; /* Skip the "__" separator between the two bounds.  */
8318   if (!ada_scan_number (bounds_str, n, &hi, &n))
8319     return 0;
8320   if (range_type->bounds ()->high.const_val () != hi)
8321     return 0;
8322
8323   return 1;
8324 }
8325
8326 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8327    a type following the GNAT encoding for describing array type
8328    indices, only carries redundant information.  */
8329
8330 static int
8331 ada_is_redundant_index_type_desc (struct type *array_type,
8332                                   struct type *desc_type)
8333 {
8334   struct type *this_layer = check_typedef (array_type);
8335   int i;
8336
8337   for (i = 0; i < desc_type->num_fields (); i++)
8338     {
8339       if (!ada_is_redundant_range_encoding (this_layer->index_type (),
8340                                             desc_type->field (i).type ()))
8341         return 0;
8342       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8343     }
8344
8345   return 1;
8346 }
8347
8348 /* Assuming that TYPE0 is an array type describing the type of a value
8349    at ADDR, and that DVAL describes a record containing any
8350    discriminants used in TYPE0, returns a type for the value that
8351    contains no dynamic components (that is, no components whose sizes
8352    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8353    true, gives an error message if the resulting type's size is over
8354    varsize_limit.  */
8355
8356 static struct type *
8357 to_fixed_array_type (struct type *type0, struct value *dval,
8358                      int ignore_too_big)
8359 {
8360   struct type *index_type_desc;
8361   struct type *result;
8362   int constrained_packed_array_p;
8363   static const char *xa_suffix = "___XA";
8364
8365   type0 = ada_check_typedef (type0);
8366   if (TYPE_FIXED_INSTANCE (type0))
8367     return type0;
8368
8369   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8370   if (constrained_packed_array_p)
8371     type0 = decode_constrained_packed_array_type (type0);
8372
8373   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8374
8375   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8376      encoding suffixed with 'P' may still be generated.  If so,
8377      it should be used to find the XA type.  */
8378
8379   if (index_type_desc == NULL)
8380     {
8381       const char *type_name = ada_type_name (type0);
8382
8383       if (type_name != NULL)
8384         {
8385           const int len = strlen (type_name);
8386           char *name = (char *) alloca (len + strlen (xa_suffix));
8387
8388           if (type_name[len - 1] == 'P')
8389             {
8390               strcpy (name, type_name);
8391               strcpy (name + len - 1, xa_suffix);
8392               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8393             }
8394         }
8395     }
8396
8397   ada_fixup_array_indexes_type (index_type_desc);
8398   if (index_type_desc != NULL
8399       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8400     {
8401       /* Ignore this ___XA parallel type, as it does not bring any
8402          useful information.  This allows us to avoid creating fixed
8403          versions of the array's index types, which would be identical
8404          to the original ones.  This, in turn, can also help avoid
8405          the creation of fixed versions of the array itself.  */
8406       index_type_desc = NULL;
8407     }
8408
8409   if (index_type_desc == NULL)
8410     {
8411       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8412
8413       /* NOTE: elt_type---the fixed version of elt_type0---should never
8414          depend on the contents of the array in properly constructed
8415          debugging data.  */
8416       /* Create a fixed version of the array element type.
8417          We're not providing the address of an element here,
8418          and thus the actual object value cannot be inspected to do
8419          the conversion.  This should not be a problem, since arrays of
8420          unconstrained objects are not allowed.  In particular, all
8421          the elements of an array of a tagged type should all be of
8422          the same type specified in the debugging info.  No need to
8423          consult the object tag.  */
8424       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8425
8426       /* Make sure we always create a new array type when dealing with
8427          packed array types, since we're going to fix-up the array
8428          type length and element bitsize a little further down.  */
8429       if (elt_type0 == elt_type && !constrained_packed_array_p)
8430         result = type0;
8431       else
8432         result = create_array_type (alloc_type_copy (type0),
8433                                     elt_type, type0->index_type ());
8434     }
8435   else
8436     {
8437       int i;
8438       struct type *elt_type0;
8439
8440       elt_type0 = type0;
8441       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8442         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8443
8444       /* NOTE: result---the fixed version of elt_type0---should never
8445          depend on the contents of the array in properly constructed
8446          debugging data.  */
8447       /* Create a fixed version of the array element type.
8448          We're not providing the address of an element here,
8449          and thus the actual object value cannot be inspected to do
8450          the conversion.  This should not be a problem, since arrays of
8451          unconstrained objects are not allowed.  In particular, all
8452          the elements of an array of a tagged type should all be of
8453          the same type specified in the debugging info.  No need to
8454          consult the object tag.  */
8455       result =
8456         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8457
8458       elt_type0 = type0;
8459       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8460         {
8461           struct type *range_type =
8462             to_fixed_range_type (index_type_desc->field (i).type (), dval);
8463
8464           result = create_array_type (alloc_type_copy (elt_type0),
8465                                       result, range_type);
8466           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8467         }
8468       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8469         error (_("array type with dynamic size is larger than varsize-limit"));
8470     }
8471
8472   /* We want to preserve the type name.  This can be useful when
8473      trying to get the type name of a value that has already been
8474      printed (for instance, if the user did "print VAR; whatis $".  */
8475   result->set_name (type0->name ());
8476
8477   if (constrained_packed_array_p)
8478     {
8479       /* So far, the resulting type has been created as if the original
8480          type was a regular (non-packed) array type.  As a result, the
8481          bitsize of the array elements needs to be set again, and the array
8482          length needs to be recomputed based on that bitsize.  */
8483       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8484       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8485
8486       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8487       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8488       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8489         TYPE_LENGTH (result)++;
8490     }
8491
8492   TYPE_FIXED_INSTANCE (result) = 1;
8493   return result;
8494 }
8495
8496
8497 /* A standard type (containing no dynamically sized components)
8498    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8499    DVAL describes a record containing any discriminants used in TYPE0,
8500    and may be NULL if there are none, or if the object of type TYPE at
8501    ADDRESS or in VALADDR contains these discriminants.
8502    
8503    If CHECK_TAG is not null, in the case of tagged types, this function
8504    attempts to locate the object's tag and use it to compute the actual
8505    type.  However, when ADDRESS is null, we cannot use it to determine the
8506    location of the tag, and therefore compute the tagged type's actual type.
8507    So we return the tagged type without consulting the tag.  */
8508    
8509 static struct type *
8510 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8511                    CORE_ADDR address, struct value *dval, int check_tag)
8512 {
8513   type = ada_check_typedef (type);
8514
8515   /* Only un-fixed types need to be handled here.  */
8516   if (!HAVE_GNAT_AUX_INFO (type))
8517     return type;
8518
8519   switch (type->code ())
8520     {
8521     default:
8522       return type;
8523     case TYPE_CODE_STRUCT:
8524       {
8525         struct type *static_type = to_static_fixed_type (type);
8526         struct type *fixed_record_type =
8527           to_fixed_record_type (type, valaddr, address, NULL);
8528
8529         /* If STATIC_TYPE is a tagged type and we know the object's address,
8530            then we can determine its tag, and compute the object's actual
8531            type from there.  Note that we have to use the fixed record
8532            type (the parent part of the record may have dynamic fields
8533            and the way the location of _tag is expressed may depend on
8534            them).  */
8535
8536         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8537           {
8538             struct value *tag =
8539               value_tag_from_contents_and_address
8540               (fixed_record_type,
8541                valaddr,
8542                address);
8543             struct type *real_type = type_from_tag (tag);
8544             struct value *obj =
8545               value_from_contents_and_address (fixed_record_type,
8546                                                valaddr,
8547                                                address);
8548             fixed_record_type = value_type (obj);
8549             if (real_type != NULL)
8550               return to_fixed_record_type
8551                 (real_type, NULL,
8552                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8553           }
8554
8555         /* Check to see if there is a parallel ___XVZ variable.
8556            If there is, then it provides the actual size of our type.  */
8557         else if (ada_type_name (fixed_record_type) != NULL)
8558           {
8559             const char *name = ada_type_name (fixed_record_type);
8560             char *xvz_name
8561               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8562             bool xvz_found = false;
8563             LONGEST size;
8564
8565             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8566             try
8567               {
8568                 xvz_found = get_int_var_value (xvz_name, size);
8569               }
8570             catch (const gdb_exception_error &except)
8571               {
8572                 /* We found the variable, but somehow failed to read
8573                    its value.  Rethrow the same error, but with a little
8574                    bit more information, to help the user understand
8575                    what went wrong (Eg: the variable might have been
8576                    optimized out).  */
8577                 throw_error (except.error,
8578                              _("unable to read value of %s (%s)"),
8579                              xvz_name, except.what ());
8580               }
8581
8582             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8583               {
8584                 fixed_record_type = copy_type (fixed_record_type);
8585                 TYPE_LENGTH (fixed_record_type) = size;
8586
8587                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8588                    observed this when the debugging info is STABS, and
8589                    apparently it is something that is hard to fix.
8590
8591                    In practice, we don't need the actual type definition
8592                    at all, because the presence of the XVZ variable allows us
8593                    to assume that there must be a XVS type as well, which we
8594                    should be able to use later, when we need the actual type
8595                    definition.
8596
8597                    In the meantime, pretend that the "fixed" type we are
8598                    returning is NOT a stub, because this can cause trouble
8599                    when using this type to create new types targeting it.
8600                    Indeed, the associated creation routines often check
8601                    whether the target type is a stub and will try to replace
8602                    it, thus using a type with the wrong size.  This, in turn,
8603                    might cause the new type to have the wrong size too.
8604                    Consider the case of an array, for instance, where the size
8605                    of the array is computed from the number of elements in
8606                    our array multiplied by the size of its element.  */
8607                 TYPE_STUB (fixed_record_type) = 0;
8608               }
8609           }
8610         return fixed_record_type;
8611       }
8612     case TYPE_CODE_ARRAY:
8613       return to_fixed_array_type (type, dval, 1);
8614     case TYPE_CODE_UNION:
8615       if (dval == NULL)
8616         return type;
8617       else
8618         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8619     }
8620 }
8621
8622 /* The same as ada_to_fixed_type_1, except that it preserves the type
8623    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8624
8625    The typedef layer needs be preserved in order to differentiate between
8626    arrays and array pointers when both types are implemented using the same
8627    fat pointer.  In the array pointer case, the pointer is encoded as
8628    a typedef of the pointer type.  For instance, considering:
8629
8630           type String_Access is access String;
8631           S1 : String_Access := null;
8632
8633    To the debugger, S1 is defined as a typedef of type String.  But
8634    to the user, it is a pointer.  So if the user tries to print S1,
8635    we should not dereference the array, but print the array address
8636    instead.
8637
8638    If we didn't preserve the typedef layer, we would lose the fact that
8639    the type is to be presented as a pointer (needs de-reference before
8640    being printed).  And we would also use the source-level type name.  */
8641
8642 struct type *
8643 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8644                    CORE_ADDR address, struct value *dval, int check_tag)
8645
8646 {
8647   struct type *fixed_type =
8648     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8649
8650   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8651       then preserve the typedef layer.
8652
8653       Implementation note: We can only check the main-type portion of
8654       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8655       from TYPE now returns a type that has the same instance flags
8656       as TYPE.  For instance, if TYPE is a "typedef const", and its
8657       target type is a "struct", then the typedef elimination will return
8658       a "const" version of the target type.  See check_typedef for more
8659       details about how the typedef layer elimination is done.
8660
8661       brobecker/2010-11-19: It seems to me that the only case where it is
8662       useful to preserve the typedef layer is when dealing with fat pointers.
8663       Perhaps, we could add a check for that and preserve the typedef layer
8664       only in that situation.  But this seems unnecessary so far, probably
8665       because we call check_typedef/ada_check_typedef pretty much everywhere.
8666       */
8667   if (type->code () == TYPE_CODE_TYPEDEF
8668       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8669           == TYPE_MAIN_TYPE (fixed_type)))
8670     return type;
8671
8672   return fixed_type;
8673 }
8674
8675 /* A standard (static-sized) type corresponding as well as possible to
8676    TYPE0, but based on no runtime data.  */
8677
8678 static struct type *
8679 to_static_fixed_type (struct type *type0)
8680 {
8681   struct type *type;
8682
8683   if (type0 == NULL)
8684     return NULL;
8685
8686   if (TYPE_FIXED_INSTANCE (type0))
8687     return type0;
8688
8689   type0 = ada_check_typedef (type0);
8690
8691   switch (type0->code ())
8692     {
8693     default:
8694       return type0;
8695     case TYPE_CODE_STRUCT:
8696       type = dynamic_template_type (type0);
8697       if (type != NULL)
8698         return template_to_static_fixed_type (type);
8699       else
8700         return template_to_static_fixed_type (type0);
8701     case TYPE_CODE_UNION:
8702       type = ada_find_parallel_type (type0, "___XVU");
8703       if (type != NULL)
8704         return template_to_static_fixed_type (type);
8705       else
8706         return template_to_static_fixed_type (type0);
8707     }
8708 }
8709
8710 /* A static approximation of TYPE with all type wrappers removed.  */
8711
8712 static struct type *
8713 static_unwrap_type (struct type *type)
8714 {
8715   if (ada_is_aligner_type (type))
8716     {
8717       struct type *type1 = ada_check_typedef (type)->field (0).type ();
8718       if (ada_type_name (type1) == NULL)
8719         type1->set_name (ada_type_name (type));
8720
8721       return static_unwrap_type (type1);
8722     }
8723   else
8724     {
8725       struct type *raw_real_type = ada_get_base_type (type);
8726
8727       if (raw_real_type == type)
8728         return type;
8729       else
8730         return to_static_fixed_type (raw_real_type);
8731     }
8732 }
8733
8734 /* In some cases, incomplete and private types require
8735    cross-references that are not resolved as records (for example,
8736       type Foo;
8737       type FooP is access Foo;
8738       V: FooP;
8739       type Foo is array ...;
8740    ).  In these cases, since there is no mechanism for producing
8741    cross-references to such types, we instead substitute for FooP a
8742    stub enumeration type that is nowhere resolved, and whose tag is
8743    the name of the actual type.  Call these types "non-record stubs".  */
8744
8745 /* A type equivalent to TYPE that is not a non-record stub, if one
8746    exists, otherwise TYPE.  */
8747
8748 struct type *
8749 ada_check_typedef (struct type *type)
8750 {
8751   if (type == NULL)
8752     return NULL;
8753
8754   /* If our type is an access to an unconstrained array, which is encoded
8755      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8756      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8757      what allows us to distinguish between fat pointers that represent
8758      array types, and fat pointers that represent array access types
8759      (in both cases, the compiler implements them as fat pointers).  */
8760   if (ada_is_access_to_unconstrained_array (type))
8761     return type;
8762
8763   type = check_typedef (type);
8764   if (type == NULL || type->code () != TYPE_CODE_ENUM
8765       || !TYPE_STUB (type)
8766       || type->name () == NULL)
8767     return type;
8768   else
8769     {
8770       const char *name = type->name ();
8771       struct type *type1 = ada_find_any_type (name);
8772
8773       if (type1 == NULL)
8774         return type;
8775
8776       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8777          stubs pointing to arrays, as we don't create symbols for array
8778          types, only for the typedef-to-array types).  If that's the case,
8779          strip the typedef layer.  */
8780       if (type1->code () == TYPE_CODE_TYPEDEF)
8781         type1 = ada_check_typedef (type1);
8782
8783       return type1;
8784     }
8785 }
8786
8787 /* A value representing the data at VALADDR/ADDRESS as described by
8788    type TYPE0, but with a standard (static-sized) type that correctly
8789    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8790    type, then return VAL0 [this feature is simply to avoid redundant
8791    creation of struct values].  */
8792
8793 static struct value *
8794 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8795                            struct value *val0)
8796 {
8797   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8798
8799   if (type == type0 && val0 != NULL)
8800     return val0;
8801
8802   if (VALUE_LVAL (val0) != lval_memory)
8803     {
8804       /* Our value does not live in memory; it could be a convenience
8805          variable, for instance.  Create a not_lval value using val0's
8806          contents.  */
8807       return value_from_contents (type, value_contents (val0));
8808     }
8809
8810   return value_from_contents_and_address (type, 0, address);
8811 }
8812
8813 /* A value representing VAL, but with a standard (static-sized) type
8814    that correctly describes it.  Does not necessarily create a new
8815    value.  */
8816
8817 struct value *
8818 ada_to_fixed_value (struct value *val)
8819 {
8820   val = unwrap_value (val);
8821   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
8822   return val;
8823 }
8824 \f
8825
8826 /* Attributes */
8827
8828 /* Table mapping attribute numbers to names.
8829    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
8830
8831 static const char *attribute_names[] = {
8832   "<?>",
8833
8834   "first",
8835   "last",
8836   "length",
8837   "image",
8838   "max",
8839   "min",
8840   "modulus",
8841   "pos",
8842   "size",
8843   "tag",
8844   "val",
8845   0
8846 };
8847
8848 static const char *
8849 ada_attribute_name (enum exp_opcode n)
8850 {
8851   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8852     return attribute_names[n - OP_ATR_FIRST + 1];
8853   else
8854     return attribute_names[0];
8855 }
8856
8857 /* Evaluate the 'POS attribute applied to ARG.  */
8858
8859 static LONGEST
8860 pos_atr (struct value *arg)
8861 {
8862   struct value *val = coerce_ref (arg);
8863   struct type *type = value_type (val);
8864   LONGEST result;
8865
8866   if (!discrete_type_p (type))
8867     error (_("'POS only defined on discrete types"));
8868
8869   if (!discrete_position (type, value_as_long (val), &result))
8870     error (_("enumeration value is invalid: can't find 'POS"));
8871
8872   return result;
8873 }
8874
8875 static struct value *
8876 value_pos_atr (struct type *type, struct value *arg)
8877 {
8878   return value_from_longest (type, pos_atr (arg));
8879 }
8880
8881 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
8882
8883 static struct value *
8884 val_atr (struct type *type, LONGEST val)
8885 {
8886   gdb_assert (discrete_type_p (type));
8887   if (type->code () == TYPE_CODE_RANGE)
8888     type = TYPE_TARGET_TYPE (type);
8889   if (type->code () == TYPE_CODE_ENUM)
8890     {
8891       if (val < 0 || val >= type->num_fields ())
8892         error (_("argument to 'VAL out of range"));
8893       val = TYPE_FIELD_ENUMVAL (type, val);
8894     }
8895   return value_from_longest (type, val);
8896 }
8897
8898 static struct value *
8899 value_val_atr (struct type *type, struct value *arg)
8900 {
8901   if (!discrete_type_p (type))
8902     error (_("'VAL only defined on discrete types"));
8903   if (!integer_type_p (value_type (arg)))
8904     error (_("'VAL requires integral argument"));
8905
8906   return val_atr (type, value_as_long (arg));
8907 }
8908 \f
8909
8910                                 /* Evaluation */
8911
8912 /* True if TYPE appears to be an Ada character type.
8913    [At the moment, this is true only for Character and Wide_Character;
8914    It is a heuristic test that could stand improvement].  */
8915
8916 bool
8917 ada_is_character_type (struct type *type)
8918 {
8919   const char *name;
8920
8921   /* If the type code says it's a character, then assume it really is,
8922      and don't check any further.  */
8923   if (type->code () == TYPE_CODE_CHAR)
8924     return true;
8925   
8926   /* Otherwise, assume it's a character type iff it is a discrete type
8927      with a known character type name.  */
8928   name = ada_type_name (type);
8929   return (name != NULL
8930           && (type->code () == TYPE_CODE_INT
8931               || type->code () == TYPE_CODE_RANGE)
8932           && (strcmp (name, "character") == 0
8933               || strcmp (name, "wide_character") == 0
8934               || strcmp (name, "wide_wide_character") == 0
8935               || strcmp (name, "unsigned char") == 0));
8936 }
8937
8938 /* True if TYPE appears to be an Ada string type.  */
8939
8940 bool
8941 ada_is_string_type (struct type *type)
8942 {
8943   type = ada_check_typedef (type);
8944   if (type != NULL
8945       && type->code () != TYPE_CODE_PTR
8946       && (ada_is_simple_array_type (type)
8947           || ada_is_array_descriptor_type (type))
8948       && ada_array_arity (type) == 1)
8949     {
8950       struct type *elttype = ada_array_element_type (type, 1);
8951
8952       return ada_is_character_type (elttype);
8953     }
8954   else
8955     return false;
8956 }
8957
8958 /* The compiler sometimes provides a parallel XVS type for a given
8959    PAD type.  Normally, it is safe to follow the PAD type directly,
8960    but older versions of the compiler have a bug that causes the offset
8961    of its "F" field to be wrong.  Following that field in that case
8962    would lead to incorrect results, but this can be worked around
8963    by ignoring the PAD type and using the associated XVS type instead.
8964
8965    Set to True if the debugger should trust the contents of PAD types.
8966    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
8967 static bool trust_pad_over_xvs = true;
8968
8969 /* True if TYPE is a struct type introduced by the compiler to force the
8970    alignment of a value.  Such types have a single field with a
8971    distinctive name.  */
8972
8973 int
8974 ada_is_aligner_type (struct type *type)
8975 {
8976   type = ada_check_typedef (type);
8977
8978   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
8979     return 0;
8980
8981   return (type->code () == TYPE_CODE_STRUCT
8982           && type->num_fields () == 1
8983           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
8984 }
8985
8986 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8987    the parallel type.  */
8988
8989 struct type *
8990 ada_get_base_type (struct type *raw_type)
8991 {
8992   struct type *real_type_namer;
8993   struct type *raw_real_type;
8994
8995   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
8996     return raw_type;
8997
8998   if (ada_is_aligner_type (raw_type))
8999     /* The encoding specifies that we should always use the aligner type.
9000        So, even if this aligner type has an associated XVS type, we should
9001        simply ignore it.
9002
9003        According to the compiler gurus, an XVS type parallel to an aligner
9004        type may exist because of a stabs limitation.  In stabs, aligner
9005        types are empty because the field has a variable-sized type, and
9006        thus cannot actually be used as an aligner type.  As a result,
9007        we need the associated parallel XVS type to decode the type.
9008        Since the policy in the compiler is to not change the internal
9009        representation based on the debugging info format, we sometimes
9010        end up having a redundant XVS type parallel to the aligner type.  */
9011     return raw_type;
9012
9013   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9014   if (real_type_namer == NULL
9015       || real_type_namer->code () != TYPE_CODE_STRUCT
9016       || real_type_namer->num_fields () != 1)
9017     return raw_type;
9018
9019   if (real_type_namer->field (0).type ()->code () != TYPE_CODE_REF)
9020     {
9021       /* This is an older encoding form where the base type needs to be
9022          looked up by name.  We prefer the newer encoding because it is
9023          more efficient.  */
9024       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9025       if (raw_real_type == NULL)
9026         return raw_type;
9027       else
9028         return raw_real_type;
9029     }
9030
9031   /* The field in our XVS type is a reference to the base type.  */
9032   return TYPE_TARGET_TYPE (real_type_namer->field (0).type ());
9033 }
9034
9035 /* The type of value designated by TYPE, with all aligners removed.  */
9036
9037 struct type *
9038 ada_aligned_type (struct type *type)
9039 {
9040   if (ada_is_aligner_type (type))
9041     return ada_aligned_type (type->field (0).type ());
9042   else
9043     return ada_get_base_type (type);
9044 }
9045
9046
9047 /* The address of the aligned value in an object at address VALADDR
9048    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9049
9050 const gdb_byte *
9051 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9052 {
9053   if (ada_is_aligner_type (type))
9054     return ada_aligned_value_addr (type->field (0).type (),
9055                                    valaddr +
9056                                    TYPE_FIELD_BITPOS (type,
9057                                                       0) / TARGET_CHAR_BIT);
9058   else
9059     return valaddr;
9060 }
9061
9062
9063
9064 /* The printed representation of an enumeration literal with encoded
9065    name NAME.  The value is good to the next call of ada_enum_name.  */
9066 const char *
9067 ada_enum_name (const char *name)
9068 {
9069   static char *result;
9070   static size_t result_len = 0;
9071   const char *tmp;
9072
9073   /* First, unqualify the enumeration name:
9074      1. Search for the last '.' character.  If we find one, then skip
9075      all the preceding characters, the unqualified name starts
9076      right after that dot.
9077      2. Otherwise, we may be debugging on a target where the compiler
9078      translates dots into "__".  Search forward for double underscores,
9079      but stop searching when we hit an overloading suffix, which is
9080      of the form "__" followed by digits.  */
9081
9082   tmp = strrchr (name, '.');
9083   if (tmp != NULL)
9084     name = tmp + 1;
9085   else
9086     {
9087       while ((tmp = strstr (name, "__")) != NULL)
9088         {
9089           if (isdigit (tmp[2]))
9090             break;
9091           else
9092             name = tmp + 2;
9093         }
9094     }
9095
9096   if (name[0] == 'Q')
9097     {
9098       int v;
9099
9100       if (name[1] == 'U' || name[1] == 'W')
9101         {
9102           if (sscanf (name + 2, "%x", &v) != 1)
9103             return name;
9104         }
9105       else if (((name[1] >= '0' && name[1] <= '9')
9106                 || (name[1] >= 'a' && name[1] <= 'z'))
9107                && name[2] == '\0')
9108         {
9109           GROW_VECT (result, result_len, 4);
9110           xsnprintf (result, result_len, "'%c'", name[1]);
9111           return result;
9112         }
9113       else
9114         return name;
9115
9116       GROW_VECT (result, result_len, 16);
9117       if (isascii (v) && isprint (v))
9118         xsnprintf (result, result_len, "'%c'", v);
9119       else if (name[1] == 'U')
9120         xsnprintf (result, result_len, "[\"%02x\"]", v);
9121       else
9122         xsnprintf (result, result_len, "[\"%04x\"]", v);
9123
9124       return result;
9125     }
9126   else
9127     {
9128       tmp = strstr (name, "__");
9129       if (tmp == NULL)
9130         tmp = strstr (name, "$");
9131       if (tmp != NULL)
9132         {
9133           GROW_VECT (result, result_len, tmp - name + 1);
9134           strncpy (result, name, tmp - name);
9135           result[tmp - name] = '\0';
9136           return result;
9137         }
9138
9139       return name;
9140     }
9141 }
9142
9143 /* Evaluate the subexpression of EXP starting at *POS as for
9144    evaluate_type, updating *POS to point just past the evaluated
9145    expression.  */
9146
9147 static struct value *
9148 evaluate_subexp_type (struct expression *exp, int *pos)
9149 {
9150   return evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9151 }
9152
9153 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9154    value it wraps.  */
9155
9156 static struct value *
9157 unwrap_value (struct value *val)
9158 {
9159   struct type *type = ada_check_typedef (value_type (val));
9160
9161   if (ada_is_aligner_type (type))
9162     {
9163       struct value *v = ada_value_struct_elt (val, "F", 0);
9164       struct type *val_type = ada_check_typedef (value_type (v));
9165
9166       if (ada_type_name (val_type) == NULL)
9167         val_type->set_name (ada_type_name (type));
9168
9169       return unwrap_value (v);
9170     }
9171   else
9172     {
9173       struct type *raw_real_type =
9174         ada_check_typedef (ada_get_base_type (type));
9175
9176       /* If there is no parallel XVS or XVE type, then the value is
9177          already unwrapped.  Return it without further modification.  */
9178       if ((type == raw_real_type)
9179           && ada_find_parallel_type (type, "___XVE") == NULL)
9180         return val;
9181
9182       return
9183         coerce_unspec_val_to_type
9184         (val, ada_to_fixed_type (raw_real_type, 0,
9185                                  value_address (val),
9186                                  NULL, 1));
9187     }
9188 }
9189
9190 static struct value *
9191 cast_from_fixed (struct type *type, struct value *arg)
9192 {
9193   struct value *scale = ada_scaling_factor (value_type (arg));
9194   arg = value_cast (value_type (scale), arg);
9195
9196   arg = value_binop (arg, scale, BINOP_MUL);
9197   return value_cast (type, arg);
9198 }
9199
9200 static struct value *
9201 cast_to_fixed (struct type *type, struct value *arg)
9202 {
9203   if (type == value_type (arg))
9204     return arg;
9205
9206   struct value *scale = ada_scaling_factor (type);
9207   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9208     arg = cast_from_fixed (value_type (scale), arg);
9209   else
9210     arg = value_cast (value_type (scale), arg);
9211
9212   arg = value_binop (arg, scale, BINOP_DIV);
9213   return value_cast (type, arg);
9214 }
9215
9216 /* Given two array types T1 and T2, return nonzero iff both arrays
9217    contain the same number of elements.  */
9218
9219 static int
9220 ada_same_array_size_p (struct type *t1, struct type *t2)
9221 {
9222   LONGEST lo1, hi1, lo2, hi2;
9223
9224   /* Get the array bounds in order to verify that the size of
9225      the two arrays match.  */
9226   if (!get_array_bounds (t1, &lo1, &hi1)
9227       || !get_array_bounds (t2, &lo2, &hi2))
9228     error (_("unable to determine array bounds"));
9229
9230   /* To make things easier for size comparison, normalize a bit
9231      the case of empty arrays by making sure that the difference
9232      between upper bound and lower bound is always -1.  */
9233   if (lo1 > hi1)
9234     hi1 = lo1 - 1;
9235   if (lo2 > hi2)
9236     hi2 = lo2 - 1;
9237
9238   return (hi1 - lo1 == hi2 - lo2);
9239 }
9240
9241 /* Assuming that VAL is an array of integrals, and TYPE represents
9242    an array with the same number of elements, but with wider integral
9243    elements, return an array "casted" to TYPE.  In practice, this
9244    means that the returned array is built by casting each element
9245    of the original array into TYPE's (wider) element type.  */
9246
9247 static struct value *
9248 ada_promote_array_of_integrals (struct type *type, struct value *val)
9249 {
9250   struct type *elt_type = TYPE_TARGET_TYPE (type);
9251   LONGEST lo, hi;
9252   struct value *res;
9253   LONGEST i;
9254
9255   /* Verify that both val and type are arrays of scalars, and
9256      that the size of val's elements is smaller than the size
9257      of type's element.  */
9258   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9259   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9260   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9261   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9262   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9263               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9264
9265   if (!get_array_bounds (type, &lo, &hi))
9266     error (_("unable to determine array bounds"));
9267
9268   res = allocate_value (type);
9269
9270   /* Promote each array element.  */
9271   for (i = 0; i < hi - lo + 1; i++)
9272     {
9273       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9274
9275       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9276               value_contents_all (elt), TYPE_LENGTH (elt_type));
9277     }
9278
9279   return res;
9280 }
9281
9282 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9283    return the converted value.  */
9284
9285 static struct value *
9286 coerce_for_assign (struct type *type, struct value *val)
9287 {
9288   struct type *type2 = value_type (val);
9289
9290   if (type == type2)
9291     return val;
9292
9293   type2 = ada_check_typedef (type2);
9294   type = ada_check_typedef (type);
9295
9296   if (type2->code () == TYPE_CODE_PTR
9297       && type->code () == TYPE_CODE_ARRAY)
9298     {
9299       val = ada_value_ind (val);
9300       type2 = value_type (val);
9301     }
9302
9303   if (type2->code () == TYPE_CODE_ARRAY
9304       && type->code () == TYPE_CODE_ARRAY)
9305     {
9306       if (!ada_same_array_size_p (type, type2))
9307         error (_("cannot assign arrays of different length"));
9308
9309       if (is_integral_type (TYPE_TARGET_TYPE (type))
9310           && is_integral_type (TYPE_TARGET_TYPE (type2))
9311           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9312                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9313         {
9314           /* Allow implicit promotion of the array elements to
9315              a wider type.  */
9316           return ada_promote_array_of_integrals (type, val);
9317         }
9318
9319       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9320           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9321         error (_("Incompatible types in assignment"));
9322       deprecated_set_value_type (val, type);
9323     }
9324   return val;
9325 }
9326
9327 static struct value *
9328 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9329 {
9330   struct value *val;
9331   struct type *type1, *type2;
9332   LONGEST v, v1, v2;
9333
9334   arg1 = coerce_ref (arg1);
9335   arg2 = coerce_ref (arg2);
9336   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9337   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9338
9339   if (type1->code () != TYPE_CODE_INT
9340       || type2->code () != TYPE_CODE_INT)
9341     return value_binop (arg1, arg2, op);
9342
9343   switch (op)
9344     {
9345     case BINOP_MOD:
9346     case BINOP_DIV:
9347     case BINOP_REM:
9348       break;
9349     default:
9350       return value_binop (arg1, arg2, op);
9351     }
9352
9353   v2 = value_as_long (arg2);
9354   if (v2 == 0)
9355     error (_("second operand of %s must not be zero."), op_string (op));
9356
9357   if (type1->is_unsigned () || op == BINOP_MOD)
9358     return value_binop (arg1, arg2, op);
9359
9360   v1 = value_as_long (arg1);
9361   switch (op)
9362     {
9363     case BINOP_DIV:
9364       v = v1 / v2;
9365       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9366         v += v > 0 ? -1 : 1;
9367       break;
9368     case BINOP_REM:
9369       v = v1 % v2;
9370       if (v * v1 < 0)
9371         v -= v2;
9372       break;
9373     default:
9374       /* Should not reach this point.  */
9375       v = 0;
9376     }
9377
9378   val = allocate_value (type1);
9379   store_unsigned_integer (value_contents_raw (val),
9380                           TYPE_LENGTH (value_type (val)),
9381                           type_byte_order (type1), v);
9382   return val;
9383 }
9384
9385 static int
9386 ada_value_equal (struct value *arg1, struct value *arg2)
9387 {
9388   if (ada_is_direct_array_type (value_type (arg1))
9389       || ada_is_direct_array_type (value_type (arg2)))
9390     {
9391       struct type *arg1_type, *arg2_type;
9392
9393       /* Automatically dereference any array reference before
9394          we attempt to perform the comparison.  */
9395       arg1 = ada_coerce_ref (arg1);
9396       arg2 = ada_coerce_ref (arg2);
9397
9398       arg1 = ada_coerce_to_simple_array (arg1);
9399       arg2 = ada_coerce_to_simple_array (arg2);
9400
9401       arg1_type = ada_check_typedef (value_type (arg1));
9402       arg2_type = ada_check_typedef (value_type (arg2));
9403
9404       if (arg1_type->code () != TYPE_CODE_ARRAY
9405           || arg2_type->code () != TYPE_CODE_ARRAY)
9406         error (_("Attempt to compare array with non-array"));
9407       /* FIXME: The following works only for types whose
9408          representations use all bits (no padding or undefined bits)
9409          and do not have user-defined equality.  */
9410       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9411               && memcmp (value_contents (arg1), value_contents (arg2),
9412                          TYPE_LENGTH (arg1_type)) == 0);
9413     }
9414   return value_equal (arg1, arg2);
9415 }
9416
9417 /* Total number of component associations in the aggregate starting at
9418    index PC in EXP.  Assumes that index PC is the start of an
9419    OP_AGGREGATE.  */
9420
9421 static int
9422 num_component_specs (struct expression *exp, int pc)
9423 {
9424   int n, m, i;
9425
9426   m = exp->elts[pc + 1].longconst;
9427   pc += 3;
9428   n = 0;
9429   for (i = 0; i < m; i += 1)
9430     {
9431       switch (exp->elts[pc].opcode) 
9432         {
9433         default:
9434           n += 1;
9435           break;
9436         case OP_CHOICES:
9437           n += exp->elts[pc + 1].longconst;
9438           break;
9439         }
9440       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9441     }
9442   return n;
9443 }
9444
9445 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9446    component of LHS (a simple array or a record), updating *POS past
9447    the expression, assuming that LHS is contained in CONTAINER.  Does
9448    not modify the inferior's memory, nor does it modify LHS (unless
9449    LHS == CONTAINER).  */
9450
9451 static void
9452 assign_component (struct value *container, struct value *lhs, LONGEST index,
9453                   struct expression *exp, int *pos)
9454 {
9455   struct value *mark = value_mark ();
9456   struct value *elt;
9457   struct type *lhs_type = check_typedef (value_type (lhs));
9458
9459   if (lhs_type->code () == TYPE_CODE_ARRAY)
9460     {
9461       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9462       struct value *index_val = value_from_longest (index_type, index);
9463
9464       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9465     }
9466   else
9467     {
9468       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9469       elt = ada_to_fixed_value (elt);
9470     }
9471
9472   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9473     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9474   else
9475     value_assign_to_component (container, elt, 
9476                                ada_evaluate_subexp (NULL, exp, pos, 
9477                                                     EVAL_NORMAL));
9478
9479   value_free_to_mark (mark);
9480 }
9481
9482 /* Assuming that LHS represents an lvalue having a record or array
9483    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9484    of that aggregate's value to LHS, advancing *POS past the
9485    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9486    lvalue containing LHS (possibly LHS itself).  Does not modify
9487    the inferior's memory, nor does it modify the contents of 
9488    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9489
9490 static struct value *
9491 assign_aggregate (struct value *container, 
9492                   struct value *lhs, struct expression *exp, 
9493                   int *pos, enum noside noside)
9494 {
9495   struct type *lhs_type;
9496   int n = exp->elts[*pos+1].longconst;
9497   LONGEST low_index, high_index;
9498   int num_specs;
9499   LONGEST *indices;
9500   int max_indices, num_indices;
9501   int i;
9502
9503   *pos += 3;
9504   if (noside != EVAL_NORMAL)
9505     {
9506       for (i = 0; i < n; i += 1)
9507         ada_evaluate_subexp (NULL, exp, pos, noside);
9508       return container;
9509     }
9510
9511   container = ada_coerce_ref (container);
9512   if (ada_is_direct_array_type (value_type (container)))
9513     container = ada_coerce_to_simple_array (container);
9514   lhs = ada_coerce_ref (lhs);
9515   if (!deprecated_value_modifiable (lhs))
9516     error (_("Left operand of assignment is not a modifiable lvalue."));
9517
9518   lhs_type = check_typedef (value_type (lhs));
9519   if (ada_is_direct_array_type (lhs_type))
9520     {
9521       lhs = ada_coerce_to_simple_array (lhs);
9522       lhs_type = check_typedef (value_type (lhs));
9523       low_index = lhs_type->bounds ()->low.const_val ();
9524       high_index = lhs_type->bounds ()->high.const_val ();
9525     }
9526   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9527     {
9528       low_index = 0;
9529       high_index = num_visible_fields (lhs_type) - 1;
9530     }
9531   else
9532     error (_("Left-hand side must be array or record."));
9533
9534   num_specs = num_component_specs (exp, *pos - 3);
9535   max_indices = 4 * num_specs + 4;
9536   indices = XALLOCAVEC (LONGEST, max_indices);
9537   indices[0] = indices[1] = low_index - 1;
9538   indices[2] = indices[3] = high_index + 1;
9539   num_indices = 4;
9540
9541   for (i = 0; i < n; i += 1)
9542     {
9543       switch (exp->elts[*pos].opcode)
9544         {
9545           case OP_CHOICES:
9546             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9547                                            &num_indices, max_indices,
9548                                            low_index, high_index);
9549             break;
9550           case OP_POSITIONAL:
9551             aggregate_assign_positional (container, lhs, exp, pos, indices,
9552                                          &num_indices, max_indices,
9553                                          low_index, high_index);
9554             break;
9555           case OP_OTHERS:
9556             if (i != n-1)
9557               error (_("Misplaced 'others' clause"));
9558             aggregate_assign_others (container, lhs, exp, pos, indices, 
9559                                      num_indices, low_index, high_index);
9560             break;
9561           default:
9562             error (_("Internal error: bad aggregate clause"));
9563         }
9564     }
9565
9566   return container;
9567 }
9568               
9569 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9570    construct at *POS, updating *POS past the construct, given that
9571    the positions are relative to lower bound LOW, where HIGH is the 
9572    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9573    updating *NUM_INDICES as needed.  CONTAINER is as for
9574    assign_aggregate.  */
9575 static void
9576 aggregate_assign_positional (struct value *container,
9577                              struct value *lhs, struct expression *exp,
9578                              int *pos, LONGEST *indices, int *num_indices,
9579                              int max_indices, LONGEST low, LONGEST high) 
9580 {
9581   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9582   
9583   if (ind - 1 == high)
9584     warning (_("Extra components in aggregate ignored."));
9585   if (ind <= high)
9586     {
9587       add_component_interval (ind, ind, indices, num_indices, max_indices);
9588       *pos += 3;
9589       assign_component (container, lhs, ind, exp, pos);
9590     }
9591   else
9592     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9593 }
9594
9595 /* Assign into the components of LHS indexed by the OP_CHOICES
9596    construct at *POS, updating *POS past the construct, given that
9597    the allowable indices are LOW..HIGH.  Record the indices assigned
9598    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9599    needed.  CONTAINER is as for assign_aggregate.  */
9600 static void
9601 aggregate_assign_from_choices (struct value *container,
9602                                struct value *lhs, struct expression *exp,
9603                                int *pos, LONGEST *indices, int *num_indices,
9604                                int max_indices, LONGEST low, LONGEST high) 
9605 {
9606   int j;
9607   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9608   int choice_pos, expr_pc;
9609   int is_array = ada_is_direct_array_type (value_type (lhs));
9610
9611   choice_pos = *pos += 3;
9612
9613   for (j = 0; j < n_choices; j += 1)
9614     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9615   expr_pc = *pos;
9616   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9617   
9618   for (j = 0; j < n_choices; j += 1)
9619     {
9620       LONGEST lower, upper;
9621       enum exp_opcode op = exp->elts[choice_pos].opcode;
9622
9623       if (op == OP_DISCRETE_RANGE)
9624         {
9625           choice_pos += 1;
9626           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9627                                                       EVAL_NORMAL));
9628           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9629                                                       EVAL_NORMAL));
9630         }
9631       else if (is_array)
9632         {
9633           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9634                                                       EVAL_NORMAL));
9635           upper = lower;
9636         }
9637       else
9638         {
9639           int ind;
9640           const char *name;
9641
9642           switch (op)
9643             {
9644             case OP_NAME:
9645               name = &exp->elts[choice_pos + 2].string;
9646               break;
9647             case OP_VAR_VALUE:
9648               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9649               break;
9650             default:
9651               error (_("Invalid record component association."));
9652             }
9653           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9654           ind = 0;
9655           if (! find_struct_field (name, value_type (lhs), 0, 
9656                                    NULL, NULL, NULL, NULL, &ind))
9657             error (_("Unknown component name: %s."), name);
9658           lower = upper = ind;
9659         }
9660
9661       if (lower <= upper && (lower < low || upper > high))
9662         error (_("Index in component association out of bounds."));
9663
9664       add_component_interval (lower, upper, indices, num_indices,
9665                               max_indices);
9666       while (lower <= upper)
9667         {
9668           int pos1;
9669
9670           pos1 = expr_pc;
9671           assign_component (container, lhs, lower, exp, &pos1);
9672           lower += 1;
9673         }
9674     }
9675 }
9676
9677 /* Assign the value of the expression in the OP_OTHERS construct in
9678    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9679    have not been previously assigned.  The index intervals already assigned
9680    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9681    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9682 static void
9683 aggregate_assign_others (struct value *container,
9684                          struct value *lhs, struct expression *exp,
9685                          int *pos, LONGEST *indices, int num_indices,
9686                          LONGEST low, LONGEST high) 
9687 {
9688   int i;
9689   int expr_pc = *pos + 1;
9690   
9691   for (i = 0; i < num_indices - 2; i += 2)
9692     {
9693       LONGEST ind;
9694
9695       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9696         {
9697           int localpos;
9698
9699           localpos = expr_pc;
9700           assign_component (container, lhs, ind, exp, &localpos);
9701         }
9702     }
9703   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9704 }
9705
9706 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9707    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9708    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9709    MAX_SIZE.  The resulting intervals do not overlap.  */
9710 static void
9711 add_component_interval (LONGEST low, LONGEST high, 
9712                         LONGEST* indices, int *size, int max_size)
9713 {
9714   int i, j;
9715
9716   for (i = 0; i < *size; i += 2) {
9717     if (high >= indices[i] && low <= indices[i + 1])
9718       {
9719         int kh;
9720
9721         for (kh = i + 2; kh < *size; kh += 2)
9722           if (high < indices[kh])
9723             break;
9724         if (low < indices[i])
9725           indices[i] = low;
9726         indices[i + 1] = indices[kh - 1];
9727         if (high > indices[i + 1])
9728           indices[i + 1] = high;
9729         memcpy (indices + i + 2, indices + kh, *size - kh);
9730         *size -= kh - i - 2;
9731         return;
9732       }
9733     else if (high < indices[i])
9734       break;
9735   }
9736         
9737   if (*size == max_size)
9738     error (_("Internal error: miscounted aggregate components."));
9739   *size += 2;
9740   for (j = *size-1; j >= i+2; j -= 1)
9741     indices[j] = indices[j - 2];
9742   indices[i] = low;
9743   indices[i + 1] = high;
9744 }
9745
9746 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9747    is different.  */
9748
9749 static struct value *
9750 ada_value_cast (struct type *type, struct value *arg2)
9751 {
9752   if (type == ada_check_typedef (value_type (arg2)))
9753     return arg2;
9754
9755   if (ada_is_gnat_encoded_fixed_point_type (type))
9756     return cast_to_fixed (type, arg2);
9757
9758   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
9759     return cast_from_fixed (type, arg2);
9760
9761   return value_cast (type, arg2);
9762 }
9763
9764 /*  Evaluating Ada expressions, and printing their result.
9765     ------------------------------------------------------
9766
9767     1. Introduction:
9768     ----------------
9769
9770     We usually evaluate an Ada expression in order to print its value.
9771     We also evaluate an expression in order to print its type, which
9772     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9773     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9774     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9775     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9776     similar.
9777
9778     Evaluating expressions is a little more complicated for Ada entities
9779     than it is for entities in languages such as C.  The main reason for
9780     this is that Ada provides types whose definition might be dynamic.
9781     One example of such types is variant records.  Or another example
9782     would be an array whose bounds can only be known at run time.
9783
9784     The following description is a general guide as to what should be
9785     done (and what should NOT be done) in order to evaluate an expression
9786     involving such types, and when.  This does not cover how the semantic
9787     information is encoded by GNAT as this is covered separatly.  For the
9788     document used as the reference for the GNAT encoding, see exp_dbug.ads
9789     in the GNAT sources.
9790
9791     Ideally, we should embed each part of this description next to its
9792     associated code.  Unfortunately, the amount of code is so vast right
9793     now that it's hard to see whether the code handling a particular
9794     situation might be duplicated or not.  One day, when the code is
9795     cleaned up, this guide might become redundant with the comments
9796     inserted in the code, and we might want to remove it.
9797
9798     2. ``Fixing'' an Entity, the Simple Case:
9799     -----------------------------------------
9800
9801     When evaluating Ada expressions, the tricky issue is that they may
9802     reference entities whose type contents and size are not statically
9803     known.  Consider for instance a variant record:
9804
9805        type Rec (Empty : Boolean := True) is record
9806           case Empty is
9807              when True => null;
9808              when False => Value : Integer;
9809           end case;
9810        end record;
9811        Yes : Rec := (Empty => False, Value => 1);
9812        No  : Rec := (empty => True);
9813
9814     The size and contents of that record depends on the value of the
9815     descriminant (Rec.Empty).  At this point, neither the debugging
9816     information nor the associated type structure in GDB are able to
9817     express such dynamic types.  So what the debugger does is to create
9818     "fixed" versions of the type that applies to the specific object.
9819     We also informally refer to this operation as "fixing" an object,
9820     which means creating its associated fixed type.
9821
9822     Example: when printing the value of variable "Yes" above, its fixed
9823     type would look like this:
9824
9825        type Rec is record
9826           Empty : Boolean;
9827           Value : Integer;
9828        end record;
9829
9830     On the other hand, if we printed the value of "No", its fixed type
9831     would become:
9832
9833        type Rec is record
9834           Empty : Boolean;
9835        end record;
9836
9837     Things become a little more complicated when trying to fix an entity
9838     with a dynamic type that directly contains another dynamic type,
9839     such as an array of variant records, for instance.  There are
9840     two possible cases: Arrays, and records.
9841
9842     3. ``Fixing'' Arrays:
9843     ---------------------
9844
9845     The type structure in GDB describes an array in terms of its bounds,
9846     and the type of its elements.  By design, all elements in the array
9847     have the same type and we cannot represent an array of variant elements
9848     using the current type structure in GDB.  When fixing an array,
9849     we cannot fix the array element, as we would potentially need one
9850     fixed type per element of the array.  As a result, the best we can do
9851     when fixing an array is to produce an array whose bounds and size
9852     are correct (allowing us to read it from memory), but without having
9853     touched its element type.  Fixing each element will be done later,
9854     when (if) necessary.
9855
9856     Arrays are a little simpler to handle than records, because the same
9857     amount of memory is allocated for each element of the array, even if
9858     the amount of space actually used by each element differs from element
9859     to element.  Consider for instance the following array of type Rec:
9860
9861        type Rec_Array is array (1 .. 2) of Rec;
9862
9863     The actual amount of memory occupied by each element might be different
9864     from element to element, depending on the value of their discriminant.
9865     But the amount of space reserved for each element in the array remains
9866     fixed regardless.  So we simply need to compute that size using
9867     the debugging information available, from which we can then determine
9868     the array size (we multiply the number of elements of the array by
9869     the size of each element).
9870
9871     The simplest case is when we have an array of a constrained element
9872     type. For instance, consider the following type declarations:
9873
9874         type Bounded_String (Max_Size : Integer) is
9875            Length : Integer;
9876            Buffer : String (1 .. Max_Size);
9877         end record;
9878         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9879
9880     In this case, the compiler describes the array as an array of
9881     variable-size elements (identified by its XVS suffix) for which
9882     the size can be read in the parallel XVZ variable.
9883
9884     In the case of an array of an unconstrained element type, the compiler
9885     wraps the array element inside a private PAD type.  This type should not
9886     be shown to the user, and must be "unwrap"'ed before printing.  Note
9887     that we also use the adjective "aligner" in our code to designate
9888     these wrapper types.
9889
9890     In some cases, the size allocated for each element is statically
9891     known.  In that case, the PAD type already has the correct size,
9892     and the array element should remain unfixed.
9893
9894     But there are cases when this size is not statically known.
9895     For instance, assuming that "Five" is an integer variable:
9896
9897         type Dynamic is array (1 .. Five) of Integer;
9898         type Wrapper (Has_Length : Boolean := False) is record
9899            Data : Dynamic;
9900            case Has_Length is
9901               when True => Length : Integer;
9902               when False => null;
9903            end case;
9904         end record;
9905         type Wrapper_Array is array (1 .. 2) of Wrapper;
9906
9907         Hello : Wrapper_Array := (others => (Has_Length => True,
9908                                              Data => (others => 17),
9909                                              Length => 1));
9910
9911
9912     The debugging info would describe variable Hello as being an
9913     array of a PAD type.  The size of that PAD type is not statically
9914     known, but can be determined using a parallel XVZ variable.
9915     In that case, a copy of the PAD type with the correct size should
9916     be used for the fixed array.
9917
9918     3. ``Fixing'' record type objects:
9919     ----------------------------------
9920
9921     Things are slightly different from arrays in the case of dynamic
9922     record types.  In this case, in order to compute the associated
9923     fixed type, we need to determine the size and offset of each of
9924     its components.  This, in turn, requires us to compute the fixed
9925     type of each of these components.
9926
9927     Consider for instance the example:
9928
9929         type Bounded_String (Max_Size : Natural) is record
9930            Str : String (1 .. Max_Size);
9931            Length : Natural;
9932         end record;
9933         My_String : Bounded_String (Max_Size => 10);
9934
9935     In that case, the position of field "Length" depends on the size
9936     of field Str, which itself depends on the value of the Max_Size
9937     discriminant.  In order to fix the type of variable My_String,
9938     we need to fix the type of field Str.  Therefore, fixing a variant
9939     record requires us to fix each of its components.
9940
9941     However, if a component does not have a dynamic size, the component
9942     should not be fixed.  In particular, fields that use a PAD type
9943     should not fixed.  Here is an example where this might happen
9944     (assuming type Rec above):
9945
9946        type Container (Big : Boolean) is record
9947           First : Rec;
9948           After : Integer;
9949           case Big is
9950              when True => Another : Integer;
9951              when False => null;
9952           end case;
9953        end record;
9954        My_Container : Container := (Big => False,
9955                                     First => (Empty => True),
9956                                     After => 42);
9957
9958     In that example, the compiler creates a PAD type for component First,
9959     whose size is constant, and then positions the component After just
9960     right after it.  The offset of component After is therefore constant
9961     in this case.
9962
9963     The debugger computes the position of each field based on an algorithm
9964     that uses, among other things, the actual position and size of the field
9965     preceding it.  Let's now imagine that the user is trying to print
9966     the value of My_Container.  If the type fixing was recursive, we would
9967     end up computing the offset of field After based on the size of the
9968     fixed version of field First.  And since in our example First has
9969     only one actual field, the size of the fixed type is actually smaller
9970     than the amount of space allocated to that field, and thus we would
9971     compute the wrong offset of field After.
9972
9973     To make things more complicated, we need to watch out for dynamic
9974     components of variant records (identified by the ___XVL suffix in
9975     the component name).  Even if the target type is a PAD type, the size
9976     of that type might not be statically known.  So the PAD type needs
9977     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
9978     we might end up with the wrong size for our component.  This can be
9979     observed with the following type declarations:
9980
9981         type Octal is new Integer range 0 .. 7;
9982         type Octal_Array is array (Positive range <>) of Octal;
9983         pragma Pack (Octal_Array);
9984
9985         type Octal_Buffer (Size : Positive) is record
9986            Buffer : Octal_Array (1 .. Size);
9987            Length : Integer;
9988         end record;
9989
9990     In that case, Buffer is a PAD type whose size is unset and needs
9991     to be computed by fixing the unwrapped type.
9992
9993     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
9994     ----------------------------------------------------------
9995
9996     Lastly, when should the sub-elements of an entity that remained unfixed
9997     thus far, be actually fixed?
9998
9999     The answer is: Only when referencing that element.  For instance
10000     when selecting one component of a record, this specific component
10001     should be fixed at that point in time.  Or when printing the value
10002     of a record, each component should be fixed before its value gets
10003     printed.  Similarly for arrays, the element of the array should be
10004     fixed when printing each element of the array, or when extracting
10005     one element out of that array.  On the other hand, fixing should
10006     not be performed on the elements when taking a slice of an array!
10007
10008     Note that one of the side effects of miscomputing the offset and
10009     size of each field is that we end up also miscomputing the size
10010     of the containing type.  This can have adverse results when computing
10011     the value of an entity.  GDB fetches the value of an entity based
10012     on the size of its type, and thus a wrong size causes GDB to fetch
10013     the wrong amount of memory.  In the case where the computed size is
10014     too small, GDB fetches too little data to print the value of our
10015     entity.  Results in this case are unpredictable, as we usually read
10016     past the buffer containing the data =:-o.  */
10017
10018 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10019    for that subexpression cast to TO_TYPE.  Advance *POS over the
10020    subexpression.  */
10021
10022 static value *
10023 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10024                               enum noside noside, struct type *to_type)
10025 {
10026   int pc = *pos;
10027
10028   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10029       || exp->elts[pc].opcode == OP_VAR_VALUE)
10030     {
10031       (*pos) += 4;
10032
10033       value *val;
10034       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10035         {
10036           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10037             return value_zero (to_type, not_lval);
10038
10039           val = evaluate_var_msym_value (noside,
10040                                          exp->elts[pc + 1].objfile,
10041                                          exp->elts[pc + 2].msymbol);
10042         }
10043       else
10044         val = evaluate_var_value (noside,
10045                                   exp->elts[pc + 1].block,
10046                                   exp->elts[pc + 2].symbol);
10047
10048       if (noside == EVAL_SKIP)
10049         return eval_skip_value (exp);
10050
10051       val = ada_value_cast (to_type, val);
10052
10053       /* Follow the Ada language semantics that do not allow taking
10054          an address of the result of a cast (view conversion in Ada).  */
10055       if (VALUE_LVAL (val) == lval_memory)
10056         {
10057           if (value_lazy (val))
10058             value_fetch_lazy (val);
10059           VALUE_LVAL (val) = not_lval;
10060         }
10061       return val;
10062     }
10063
10064   value *val = evaluate_subexp (to_type, exp, pos, noside);
10065   if (noside == EVAL_SKIP)
10066     return eval_skip_value (exp);
10067   return ada_value_cast (to_type, val);
10068 }
10069
10070 /* Implement the evaluate_exp routine in the exp_descriptor structure
10071    for the Ada language.  */
10072
10073 static struct value *
10074 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10075                      int *pos, enum noside noside)
10076 {
10077   enum exp_opcode op;
10078   int tem;
10079   int pc;
10080   int preeval_pos;
10081   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10082   struct type *type;
10083   int nargs, oplen;
10084   struct value **argvec;
10085
10086   pc = *pos;
10087   *pos += 1;
10088   op = exp->elts[pc].opcode;
10089
10090   switch (op)
10091     {
10092     default:
10093       *pos -= 1;
10094       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10095
10096       if (noside == EVAL_NORMAL)
10097         arg1 = unwrap_value (arg1);
10098
10099       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10100          then we need to perform the conversion manually, because
10101          evaluate_subexp_standard doesn't do it.  This conversion is
10102          necessary in Ada because the different kinds of float/fixed
10103          types in Ada have different representations.
10104
10105          Similarly, we need to perform the conversion from OP_LONG
10106          ourselves.  */
10107       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10108         arg1 = ada_value_cast (expect_type, arg1);
10109
10110       return arg1;
10111
10112     case OP_STRING:
10113       {
10114         struct value *result;
10115
10116         *pos -= 1;
10117         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10118         /* The result type will have code OP_STRING, bashed there from 
10119            OP_ARRAY.  Bash it back.  */
10120         if (value_type (result)->code () == TYPE_CODE_STRING)
10121           value_type (result)->set_code (TYPE_CODE_ARRAY);
10122         return result;
10123       }
10124
10125     case UNOP_CAST:
10126       (*pos) += 2;
10127       type = exp->elts[pc + 1].type;
10128       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10129
10130     case UNOP_QUAL:
10131       (*pos) += 2;
10132       type = exp->elts[pc + 1].type;
10133       return ada_evaluate_subexp (type, exp, pos, noside);
10134
10135     case BINOP_ASSIGN:
10136       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10137       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10138         {
10139           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10140           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10141             return arg1;
10142           return ada_value_assign (arg1, arg1);
10143         }
10144       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10145          except if the lhs of our assignment is a convenience variable.
10146          In the case of assigning to a convenience variable, the lhs
10147          should be exactly the result of the evaluation of the rhs.  */
10148       type = value_type (arg1);
10149       if (VALUE_LVAL (arg1) == lval_internalvar)
10150          type = NULL;
10151       arg2 = evaluate_subexp (type, exp, pos, noside);
10152       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10153         return arg1;
10154       if (VALUE_LVAL (arg1) == lval_internalvar)
10155         {
10156           /* Nothing.  */
10157         }
10158       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10159         arg2 = cast_to_fixed (value_type (arg1), arg2);
10160       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10161         error
10162           (_("Fixed-point values must be assigned to fixed-point variables"));
10163       else
10164         arg2 = coerce_for_assign (value_type (arg1), arg2);
10165       return ada_value_assign (arg1, arg2);
10166
10167     case BINOP_ADD:
10168       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10169       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10170       if (noside == EVAL_SKIP)
10171         goto nosideret;
10172       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10173         return (value_from_longest
10174                  (value_type (arg1),
10175                   value_as_long (arg1) + value_as_long (arg2)));
10176       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10177         return (value_from_longest
10178                  (value_type (arg2),
10179                   value_as_long (arg1) + value_as_long (arg2)));
10180       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10181            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10182           && value_type (arg1) != value_type (arg2))
10183         error (_("Operands of fixed-point addition must have the same type"));
10184       /* Do the addition, and cast the result to the type of the first
10185          argument.  We cannot cast the result to a reference type, so if
10186          ARG1 is a reference type, find its underlying type.  */
10187       type = value_type (arg1);
10188       while (type->code () == TYPE_CODE_REF)
10189         type = TYPE_TARGET_TYPE (type);
10190       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10191       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10192
10193     case BINOP_SUB:
10194       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10195       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10196       if (noside == EVAL_SKIP)
10197         goto nosideret;
10198       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10199         return (value_from_longest
10200                  (value_type (arg1),
10201                   value_as_long (arg1) - value_as_long (arg2)));
10202       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10203         return (value_from_longest
10204                  (value_type (arg2),
10205                   value_as_long (arg1) - value_as_long (arg2)));
10206       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10207            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10208           && value_type (arg1) != value_type (arg2))
10209         error (_("Operands of fixed-point subtraction "
10210                  "must have the same type"));
10211       /* Do the substraction, and cast the result to the type of the first
10212          argument.  We cannot cast the result to a reference type, so if
10213          ARG1 is a reference type, find its underlying type.  */
10214       type = value_type (arg1);
10215       while (type->code () == TYPE_CODE_REF)
10216         type = TYPE_TARGET_TYPE (type);
10217       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10218       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10219
10220     case BINOP_MUL:
10221     case BINOP_DIV:
10222     case BINOP_REM:
10223     case BINOP_MOD:
10224       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10225       arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10226       if (noside == EVAL_SKIP)
10227         goto nosideret;
10228       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10229         {
10230           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10231           return value_zero (value_type (arg1), not_lval);
10232         }
10233       else
10234         {
10235           type = builtin_type (exp->gdbarch)->builtin_double;
10236           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10237             arg1 = cast_from_fixed (type, arg1);
10238           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10239             arg2 = cast_from_fixed (type, arg2);
10240           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10241           return ada_value_binop (arg1, arg2, op);
10242         }
10243
10244     case BINOP_EQUAL:
10245     case BINOP_NOTEQUAL:
10246       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10247       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10248       if (noside == EVAL_SKIP)
10249         goto nosideret;
10250       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10251         tem = 0;
10252       else
10253         {
10254           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10255           tem = ada_value_equal (arg1, arg2);
10256         }
10257       if (op == BINOP_NOTEQUAL)
10258         tem = !tem;
10259       type = language_bool_type (exp->language_defn, exp->gdbarch);
10260       return value_from_longest (type, (LONGEST) tem);
10261
10262     case UNOP_NEG:
10263       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10264       if (noside == EVAL_SKIP)
10265         goto nosideret;
10266       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10267         return value_cast (value_type (arg1), value_neg (arg1));
10268       else
10269         {
10270           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10271           return value_neg (arg1);
10272         }
10273
10274     case BINOP_LOGICAL_AND:
10275     case BINOP_LOGICAL_OR:
10276     case UNOP_LOGICAL_NOT:
10277       {
10278         struct value *val;
10279
10280         *pos -= 1;
10281         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10282         type = language_bool_type (exp->language_defn, exp->gdbarch);
10283         return value_cast (type, val);
10284       }
10285
10286     case BINOP_BITWISE_AND:
10287     case BINOP_BITWISE_IOR:
10288     case BINOP_BITWISE_XOR:
10289       {
10290         struct value *val;
10291
10292         arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10293         *pos = pc;
10294         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10295
10296         return value_cast (value_type (arg1), val);
10297       }
10298
10299     case OP_VAR_VALUE:
10300       *pos -= 1;
10301
10302       if (noside == EVAL_SKIP)
10303         {
10304           *pos += 4;
10305           goto nosideret;
10306         }
10307
10308       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10309         /* Only encountered when an unresolved symbol occurs in a
10310            context other than a function call, in which case, it is
10311            invalid.  */
10312         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10313                exp->elts[pc + 2].symbol->print_name ());
10314
10315       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10316         {
10317           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10318           /* Check to see if this is a tagged type.  We also need to handle
10319              the case where the type is a reference to a tagged type, but
10320              we have to be careful to exclude pointers to tagged types.
10321              The latter should be shown as usual (as a pointer), whereas
10322              a reference should mostly be transparent to the user.  */
10323           if (ada_is_tagged_type (type, 0)
10324               || (type->code () == TYPE_CODE_REF
10325                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10326             {
10327               /* Tagged types are a little special in the fact that the real
10328                  type is dynamic and can only be determined by inspecting the
10329                  object's tag.  This means that we need to get the object's
10330                  value first (EVAL_NORMAL) and then extract the actual object
10331                  type from its tag.
10332
10333                  Note that we cannot skip the final step where we extract
10334                  the object type from its tag, because the EVAL_NORMAL phase
10335                  results in dynamic components being resolved into fixed ones.
10336                  This can cause problems when trying to print the type
10337                  description of tagged types whose parent has a dynamic size:
10338                  We use the type name of the "_parent" component in order
10339                  to print the name of the ancestor type in the type description.
10340                  If that component had a dynamic size, the resolution into
10341                  a fixed type would result in the loss of that type name,
10342                  thus preventing us from printing the name of the ancestor
10343                  type in the type description.  */
10344               arg1 = evaluate_subexp (nullptr, exp, pos, EVAL_NORMAL);
10345
10346               if (type->code () != TYPE_CODE_REF)
10347                 {
10348                   struct type *actual_type;
10349
10350                   actual_type = type_from_tag (ada_value_tag (arg1));
10351                   if (actual_type == NULL)
10352                     /* If, for some reason, we were unable to determine
10353                        the actual type from the tag, then use the static
10354                        approximation that we just computed as a fallback.
10355                        This can happen if the debugging information is
10356                        incomplete, for instance.  */
10357                     actual_type = type;
10358                   return value_zero (actual_type, not_lval);
10359                 }
10360               else
10361                 {
10362                   /* In the case of a ref, ada_coerce_ref takes care
10363                      of determining the actual type.  But the evaluation
10364                      should return a ref as it should be valid to ask
10365                      for its address; so rebuild a ref after coerce.  */
10366                   arg1 = ada_coerce_ref (arg1);
10367                   return value_ref (arg1, TYPE_CODE_REF);
10368                 }
10369             }
10370
10371           /* Records and unions for which GNAT encodings have been
10372              generated need to be statically fixed as well.
10373              Otherwise, non-static fixing produces a type where
10374              all dynamic properties are removed, which prevents "ptype"
10375              from being able to completely describe the type.
10376              For instance, a case statement in a variant record would be
10377              replaced by the relevant components based on the actual
10378              value of the discriminants.  */
10379           if ((type->code () == TYPE_CODE_STRUCT
10380                && dynamic_template_type (type) != NULL)
10381               || (type->code () == TYPE_CODE_UNION
10382                   && ada_find_parallel_type (type, "___XVU") != NULL))
10383             {
10384               *pos += 4;
10385               return value_zero (to_static_fixed_type (type), not_lval);
10386             }
10387         }
10388
10389       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10390       return ada_to_fixed_value (arg1);
10391
10392     case OP_FUNCALL:
10393       (*pos) += 2;
10394
10395       /* Allocate arg vector, including space for the function to be
10396          called in argvec[0] and a terminating NULL.  */
10397       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10398       argvec = XALLOCAVEC (struct value *, nargs + 2);
10399
10400       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10401           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10402         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10403                exp->elts[pc + 5].symbol->print_name ());
10404       else
10405         {
10406           for (tem = 0; tem <= nargs; tem += 1)
10407             argvec[tem] = evaluate_subexp (nullptr, exp, pos, noside);
10408           argvec[tem] = 0;
10409
10410           if (noside == EVAL_SKIP)
10411             goto nosideret;
10412         }
10413
10414       if (ada_is_constrained_packed_array_type
10415           (desc_base_type (value_type (argvec[0]))))
10416         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10417       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10418                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10419         /* This is a packed array that has already been fixed, and
10420            therefore already coerced to a simple array.  Nothing further
10421            to do.  */
10422         ;
10423       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10424         {
10425           /* Make sure we dereference references so that all the code below
10426              feels like it's really handling the referenced value.  Wrapping
10427              types (for alignment) may be there, so make sure we strip them as
10428              well.  */
10429           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10430         }
10431       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10432                && VALUE_LVAL (argvec[0]) == lval_memory)
10433         argvec[0] = value_addr (argvec[0]);
10434
10435       type = ada_check_typedef (value_type (argvec[0]));
10436
10437       /* Ada allows us to implicitly dereference arrays when subscripting
10438          them.  So, if this is an array typedef (encoding use for array
10439          access types encoded as fat pointers), strip it now.  */
10440       if (type->code () == TYPE_CODE_TYPEDEF)
10441         type = ada_typedef_target_type (type);
10442
10443       if (type->code () == TYPE_CODE_PTR)
10444         {
10445           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10446             {
10447             case TYPE_CODE_FUNC:
10448               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10449               break;
10450             case TYPE_CODE_ARRAY:
10451               break;
10452             case TYPE_CODE_STRUCT:
10453               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10454                 argvec[0] = ada_value_ind (argvec[0]);
10455               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10456               break;
10457             default:
10458               error (_("cannot subscript or call something of type `%s'"),
10459                      ada_type_name (value_type (argvec[0])));
10460               break;
10461             }
10462         }
10463
10464       switch (type->code ())
10465         {
10466         case TYPE_CODE_FUNC:
10467           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10468             {
10469               if (TYPE_TARGET_TYPE (type) == NULL)
10470                 error_call_unknown_return_type (NULL);
10471               return allocate_value (TYPE_TARGET_TYPE (type));
10472             }
10473           return call_function_by_hand (argvec[0], NULL,
10474                                         gdb::make_array_view (argvec + 1,
10475                                                               nargs));
10476         case TYPE_CODE_INTERNAL_FUNCTION:
10477           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10478             /* We don't know anything about what the internal
10479                function might return, but we have to return
10480                something.  */
10481             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10482                                not_lval);
10483           else
10484             return call_internal_function (exp->gdbarch, exp->language_defn,
10485                                            argvec[0], nargs, argvec + 1);
10486
10487         case TYPE_CODE_STRUCT:
10488           {
10489             int arity;
10490
10491             arity = ada_array_arity (type);
10492             type = ada_array_element_type (type, nargs);
10493             if (type == NULL)
10494               error (_("cannot subscript or call a record"));
10495             if (arity != nargs)
10496               error (_("wrong number of subscripts; expecting %d"), arity);
10497             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10498               return value_zero (ada_aligned_type (type), lval_memory);
10499             return
10500               unwrap_value (ada_value_subscript
10501                             (argvec[0], nargs, argvec + 1));
10502           }
10503         case TYPE_CODE_ARRAY:
10504           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10505             {
10506               type = ada_array_element_type (type, nargs);
10507               if (type == NULL)
10508                 error (_("element type of array unknown"));
10509               else
10510                 return value_zero (ada_aligned_type (type), lval_memory);
10511             }
10512           return
10513             unwrap_value (ada_value_subscript
10514                           (ada_coerce_to_simple_array (argvec[0]),
10515                            nargs, argvec + 1));
10516         case TYPE_CODE_PTR:     /* Pointer to array */
10517           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10518             {
10519               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10520               type = ada_array_element_type (type, nargs);
10521               if (type == NULL)
10522                 error (_("element type of array unknown"));
10523               else
10524                 return value_zero (ada_aligned_type (type), lval_memory);
10525             }
10526           return
10527             unwrap_value (ada_value_ptr_subscript (argvec[0],
10528                                                    nargs, argvec + 1));
10529
10530         default:
10531           error (_("Attempt to index or call something other than an "
10532                    "array or function"));
10533         }
10534
10535     case TERNOP_SLICE:
10536       {
10537         struct value *array = evaluate_subexp (nullptr, exp, pos, noside);
10538         struct value *low_bound_val
10539           = evaluate_subexp (nullptr, exp, pos, noside);
10540         struct value *high_bound_val
10541           = evaluate_subexp (nullptr, exp, pos, noside);
10542         LONGEST low_bound;
10543         LONGEST high_bound;
10544
10545         low_bound_val = coerce_ref (low_bound_val);
10546         high_bound_val = coerce_ref (high_bound_val);
10547         low_bound = value_as_long (low_bound_val);
10548         high_bound = value_as_long (high_bound_val);
10549
10550         if (noside == EVAL_SKIP)
10551           goto nosideret;
10552
10553         /* If this is a reference to an aligner type, then remove all
10554            the aligners.  */
10555         if (value_type (array)->code () == TYPE_CODE_REF
10556             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10557           TYPE_TARGET_TYPE (value_type (array)) =
10558             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10559
10560         if (ada_is_constrained_packed_array_type (value_type (array)))
10561           error (_("cannot slice a packed array"));
10562
10563         /* If this is a reference to an array or an array lvalue,
10564            convert to a pointer.  */
10565         if (value_type (array)->code () == TYPE_CODE_REF
10566             || (value_type (array)->code () == TYPE_CODE_ARRAY
10567                 && VALUE_LVAL (array) == lval_memory))
10568           array = value_addr (array);
10569
10570         if (noside == EVAL_AVOID_SIDE_EFFECTS
10571             && ada_is_array_descriptor_type (ada_check_typedef
10572                                              (value_type (array))))
10573           return empty_array (ada_type_of_array (array, 0), low_bound,
10574                               high_bound);
10575
10576         array = ada_coerce_to_simple_array_ptr (array);
10577
10578         /* If we have more than one level of pointer indirection,
10579            dereference the value until we get only one level.  */
10580         while (value_type (array)->code () == TYPE_CODE_PTR
10581                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10582                      == TYPE_CODE_PTR))
10583           array = value_ind (array);
10584
10585         /* Make sure we really do have an array type before going further,
10586            to avoid a SEGV when trying to get the index type or the target
10587            type later down the road if the debug info generated by
10588            the compiler is incorrect or incomplete.  */
10589         if (!ada_is_simple_array_type (value_type (array)))
10590           error (_("cannot take slice of non-array"));
10591
10592         if (ada_check_typedef (value_type (array))->code ()
10593             == TYPE_CODE_PTR)
10594           {
10595             struct type *type0 = ada_check_typedef (value_type (array));
10596
10597             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10598               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10599             else
10600               {
10601                 struct type *arr_type0 =
10602                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10603
10604                 return ada_value_slice_from_ptr (array, arr_type0,
10605                                                  longest_to_int (low_bound),
10606                                                  longest_to_int (high_bound));
10607               }
10608           }
10609         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10610           return array;
10611         else if (high_bound < low_bound)
10612           return empty_array (value_type (array), low_bound, high_bound);
10613         else
10614           return ada_value_slice (array, longest_to_int (low_bound),
10615                                   longest_to_int (high_bound));
10616       }
10617
10618     case UNOP_IN_RANGE:
10619       (*pos) += 2;
10620       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10621       type = check_typedef (exp->elts[pc + 1].type);
10622
10623       if (noside == EVAL_SKIP)
10624         goto nosideret;
10625
10626       switch (type->code ())
10627         {
10628         default:
10629           lim_warning (_("Membership test incompletely implemented; "
10630                          "always returns true"));
10631           type = language_bool_type (exp->language_defn, exp->gdbarch);
10632           return value_from_longest (type, (LONGEST) 1);
10633
10634         case TYPE_CODE_RANGE:
10635           arg2 = value_from_longest (type,
10636                                      type->bounds ()->low.const_val ());
10637           arg3 = value_from_longest (type,
10638                                      type->bounds ()->high.const_val ());
10639           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10640           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10641           type = language_bool_type (exp->language_defn, exp->gdbarch);
10642           return
10643             value_from_longest (type,
10644                                 (value_less (arg1, arg3)
10645                                  || value_equal (arg1, arg3))
10646                                 && (value_less (arg2, arg1)
10647                                     || value_equal (arg2, arg1)));
10648         }
10649
10650     case BINOP_IN_BOUNDS:
10651       (*pos) += 2;
10652       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10653       arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10654
10655       if (noside == EVAL_SKIP)
10656         goto nosideret;
10657
10658       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10659         {
10660           type = language_bool_type (exp->language_defn, exp->gdbarch);
10661           return value_zero (type, not_lval);
10662         }
10663
10664       tem = longest_to_int (exp->elts[pc + 1].longconst);
10665
10666       type = ada_index_type (value_type (arg2), tem, "range");
10667       if (!type)
10668         type = value_type (arg1);
10669
10670       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10671       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10672
10673       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10674       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10675       type = language_bool_type (exp->language_defn, exp->gdbarch);
10676       return
10677         value_from_longest (type,
10678                             (value_less (arg1, arg3)
10679                              || value_equal (arg1, arg3))
10680                             && (value_less (arg2, arg1)
10681                                 || value_equal (arg2, arg1)));
10682
10683     case TERNOP_IN_RANGE:
10684       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10685       arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10686       arg3 = evaluate_subexp (nullptr, exp, pos, noside);
10687
10688       if (noside == EVAL_SKIP)
10689         goto nosideret;
10690
10691       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10692       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10693       type = language_bool_type (exp->language_defn, exp->gdbarch);
10694       return
10695         value_from_longest (type,
10696                             (value_less (arg1, arg3)
10697                              || value_equal (arg1, arg3))
10698                             && (value_less (arg2, arg1)
10699                                 || value_equal (arg2, arg1)));
10700
10701     case OP_ATR_FIRST:
10702     case OP_ATR_LAST:
10703     case OP_ATR_LENGTH:
10704       {
10705         struct type *type_arg;
10706
10707         if (exp->elts[*pos].opcode == OP_TYPE)
10708           {
10709             evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10710             arg1 = NULL;
10711             type_arg = check_typedef (exp->elts[pc + 2].type);
10712           }
10713         else
10714           {
10715             arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10716             type_arg = NULL;
10717           }
10718
10719         if (exp->elts[*pos].opcode != OP_LONG)
10720           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10721         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10722         *pos += 4;
10723
10724         if (noside == EVAL_SKIP)
10725           goto nosideret;
10726         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10727           {
10728             if (type_arg == NULL)
10729               type_arg = value_type (arg1);
10730
10731             if (ada_is_constrained_packed_array_type (type_arg))
10732               type_arg = decode_constrained_packed_array_type (type_arg);
10733
10734             if (!discrete_type_p (type_arg))
10735               {
10736                 switch (op)
10737                   {
10738                   default:          /* Should never happen.  */
10739                     error (_("unexpected attribute encountered"));
10740                   case OP_ATR_FIRST:
10741                   case OP_ATR_LAST:
10742                     type_arg = ada_index_type (type_arg, tem,
10743                                                ada_attribute_name (op));
10744                     break;
10745                   case OP_ATR_LENGTH:
10746                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
10747                     break;
10748                   }
10749               }
10750
10751             return value_zero (type_arg, not_lval);
10752           }
10753         else if (type_arg == NULL)
10754           {
10755             arg1 = ada_coerce_ref (arg1);
10756
10757             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10758               arg1 = ada_coerce_to_simple_array (arg1);
10759
10760             if (op == OP_ATR_LENGTH)
10761               type = builtin_type (exp->gdbarch)->builtin_int;
10762             else
10763               {
10764                 type = ada_index_type (value_type (arg1), tem,
10765                                        ada_attribute_name (op));
10766                 if (type == NULL)
10767                   type = builtin_type (exp->gdbarch)->builtin_int;
10768               }
10769
10770             switch (op)
10771               {
10772               default:          /* Should never happen.  */
10773                 error (_("unexpected attribute encountered"));
10774               case OP_ATR_FIRST:
10775                 return value_from_longest
10776                         (type, ada_array_bound (arg1, tem, 0));
10777               case OP_ATR_LAST:
10778                 return value_from_longest
10779                         (type, ada_array_bound (arg1, tem, 1));
10780               case OP_ATR_LENGTH:
10781                 return value_from_longest
10782                         (type, ada_array_length (arg1, tem));
10783               }
10784           }
10785         else if (discrete_type_p (type_arg))
10786           {
10787             struct type *range_type;
10788             const char *name = ada_type_name (type_arg);
10789
10790             range_type = NULL;
10791             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
10792               range_type = to_fixed_range_type (type_arg, NULL);
10793             if (range_type == NULL)
10794               range_type = type_arg;
10795             switch (op)
10796               {
10797               default:
10798                 error (_("unexpected attribute encountered"));
10799               case OP_ATR_FIRST:
10800                 return value_from_longest 
10801                   (range_type, ada_discrete_type_low_bound (range_type));
10802               case OP_ATR_LAST:
10803                 return value_from_longest
10804                   (range_type, ada_discrete_type_high_bound (range_type));
10805               case OP_ATR_LENGTH:
10806                 error (_("the 'length attribute applies only to array types"));
10807               }
10808           }
10809         else if (type_arg->code () == TYPE_CODE_FLT)
10810           error (_("unimplemented type attribute"));
10811         else
10812           {
10813             LONGEST low, high;
10814
10815             if (ada_is_constrained_packed_array_type (type_arg))
10816               type_arg = decode_constrained_packed_array_type (type_arg);
10817
10818             if (op == OP_ATR_LENGTH)
10819               type = builtin_type (exp->gdbarch)->builtin_int;
10820             else
10821               {
10822                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10823                 if (type == NULL)
10824                   type = builtin_type (exp->gdbarch)->builtin_int;
10825               }
10826
10827             switch (op)
10828               {
10829               default:
10830                 error (_("unexpected attribute encountered"));
10831               case OP_ATR_FIRST:
10832                 low = ada_array_bound_from_type (type_arg, tem, 0);
10833                 return value_from_longest (type, low);
10834               case OP_ATR_LAST:
10835                 high = ada_array_bound_from_type (type_arg, tem, 1);
10836                 return value_from_longest (type, high);
10837               case OP_ATR_LENGTH:
10838                 low = ada_array_bound_from_type (type_arg, tem, 0);
10839                 high = ada_array_bound_from_type (type_arg, tem, 1);
10840                 return value_from_longest (type, high - low + 1);
10841               }
10842           }
10843       }
10844
10845     case OP_ATR_TAG:
10846       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10847       if (noside == EVAL_SKIP)
10848         goto nosideret;
10849
10850       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10851         return value_zero (ada_tag_type (arg1), not_lval);
10852
10853       return ada_value_tag (arg1);
10854
10855     case OP_ATR_MIN:
10856     case OP_ATR_MAX:
10857       evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10858       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10859       arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10860       if (noside == EVAL_SKIP)
10861         goto nosideret;
10862       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10863         return value_zero (value_type (arg1), not_lval);
10864       else
10865         {
10866           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10867           return value_binop (arg1, arg2,
10868                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
10869         }
10870
10871     case OP_ATR_MODULUS:
10872       {
10873         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
10874
10875         evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10876         if (noside == EVAL_SKIP)
10877           goto nosideret;
10878
10879         if (!ada_is_modular_type (type_arg))
10880           error (_("'modulus must be applied to modular type"));
10881
10882         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
10883                                    ada_modulus (type_arg));
10884       }
10885
10886
10887     case OP_ATR_POS:
10888       evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10889       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10890       if (noside == EVAL_SKIP)
10891         goto nosideret;
10892       type = builtin_type (exp->gdbarch)->builtin_int;
10893       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10894         return value_zero (type, not_lval);
10895       else
10896         return value_pos_atr (type, arg1);
10897
10898     case OP_ATR_SIZE:
10899       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10900       type = value_type (arg1);
10901
10902       /* If the argument is a reference, then dereference its type, since
10903          the user is really asking for the size of the actual object,
10904          not the size of the pointer.  */
10905       if (type->code () == TYPE_CODE_REF)
10906         type = TYPE_TARGET_TYPE (type);
10907
10908       if (noside == EVAL_SKIP)
10909         goto nosideret;
10910       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10911         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
10912       else
10913         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
10914                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
10915
10916     case OP_ATR_VAL:
10917       evaluate_subexp (nullptr, exp, pos, EVAL_SKIP);
10918       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10919       type = exp->elts[pc + 2].type;
10920       if (noside == EVAL_SKIP)
10921         goto nosideret;
10922       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10923         return value_zero (type, not_lval);
10924       else
10925         return value_val_atr (type, arg1);
10926
10927     case BINOP_EXP:
10928       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10929       arg2 = evaluate_subexp (nullptr, exp, pos, noside);
10930       if (noside == EVAL_SKIP)
10931         goto nosideret;
10932       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10933         return value_zero (value_type (arg1), not_lval);
10934       else
10935         {
10936           /* For integer exponentiation operations,
10937              only promote the first argument.  */
10938           if (is_integral_type (value_type (arg2)))
10939             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10940           else
10941             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10942
10943           return value_binop (arg1, arg2, op);
10944         }
10945
10946     case UNOP_PLUS:
10947       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10948       if (noside == EVAL_SKIP)
10949         goto nosideret;
10950       else
10951         return arg1;
10952
10953     case UNOP_ABS:
10954       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10955       if (noside == EVAL_SKIP)
10956         goto nosideret;
10957       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10958       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
10959         return value_neg (arg1);
10960       else
10961         return arg1;
10962
10963     case UNOP_IND:
10964       preeval_pos = *pos;
10965       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
10966       if (noside == EVAL_SKIP)
10967         goto nosideret;
10968       type = ada_check_typedef (value_type (arg1));
10969       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10970         {
10971           if (ada_is_array_descriptor_type (type))
10972             /* GDB allows dereferencing GNAT array descriptors.  */
10973             {
10974               struct type *arrType = ada_type_of_array (arg1, 0);
10975
10976               if (arrType == NULL)
10977                 error (_("Attempt to dereference null array pointer."));
10978               return value_at_lazy (arrType, 0);
10979             }
10980           else if (type->code () == TYPE_CODE_PTR
10981                    || type->code () == TYPE_CODE_REF
10982                    /* In C you can dereference an array to get the 1st elt.  */
10983                    || type->code () == TYPE_CODE_ARRAY)
10984             {
10985             /* As mentioned in the OP_VAR_VALUE case, tagged types can
10986                only be determined by inspecting the object's tag.
10987                This means that we need to evaluate completely the
10988                expression in order to get its type.  */
10989
10990               if ((type->code () == TYPE_CODE_REF
10991                    || type->code () == TYPE_CODE_PTR)
10992                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
10993                 {
10994                   arg1
10995                     = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
10996                   type = value_type (ada_value_ind (arg1));
10997                 }
10998               else
10999                 {
11000                   type = to_static_fixed_type
11001                     (ada_aligned_type
11002                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11003                 }
11004               ada_ensure_varsize_limit (type);
11005               return value_zero (type, lval_memory);
11006             }
11007           else if (type->code () == TYPE_CODE_INT)
11008             {
11009               /* GDB allows dereferencing an int.  */
11010               if (expect_type == NULL)
11011                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11012                                    lval_memory);
11013               else
11014                 {
11015                   expect_type = 
11016                     to_static_fixed_type (ada_aligned_type (expect_type));
11017                   return value_zero (expect_type, lval_memory);
11018                 }
11019             }
11020           else
11021             error (_("Attempt to take contents of a non-pointer value."));
11022         }
11023       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11024       type = ada_check_typedef (value_type (arg1));
11025
11026       if (type->code () == TYPE_CODE_INT)
11027           /* GDB allows dereferencing an int.  If we were given
11028              the expect_type, then use that as the target type.
11029              Otherwise, assume that the target type is an int.  */
11030         {
11031           if (expect_type != NULL)
11032             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11033                                               arg1));
11034           else
11035             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11036                                   (CORE_ADDR) value_as_address (arg1));
11037         }
11038
11039       if (ada_is_array_descriptor_type (type))
11040         /* GDB allows dereferencing GNAT array descriptors.  */
11041         return ada_coerce_to_simple_array (arg1);
11042       else
11043         return ada_value_ind (arg1);
11044
11045     case STRUCTOP_STRUCT:
11046       tem = longest_to_int (exp->elts[pc + 1].longconst);
11047       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11048       preeval_pos = *pos;
11049       arg1 = evaluate_subexp (nullptr, exp, pos, noside);
11050       if (noside == EVAL_SKIP)
11051         goto nosideret;
11052       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11053         {
11054           struct type *type1 = value_type (arg1);
11055
11056           if (ada_is_tagged_type (type1, 1))
11057             {
11058               type = ada_lookup_struct_elt_type (type1,
11059                                                  &exp->elts[pc + 2].string,
11060                                                  1, 1);
11061
11062               /* If the field is not found, check if it exists in the
11063                  extension of this object's type. This means that we
11064                  need to evaluate completely the expression.  */
11065
11066               if (type == NULL)
11067                 {
11068                   arg1
11069                     = evaluate_subexp (nullptr, exp, &preeval_pos, EVAL_NORMAL);
11070                   arg1 = ada_value_struct_elt (arg1,
11071                                                &exp->elts[pc + 2].string,
11072                                                0);
11073                   arg1 = unwrap_value (arg1);
11074                   type = value_type (ada_to_fixed_value (arg1));
11075                 }
11076             }
11077           else
11078             type =
11079               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11080                                           0);
11081
11082           return value_zero (ada_aligned_type (type), lval_memory);
11083         }
11084       else
11085         {
11086           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11087           arg1 = unwrap_value (arg1);
11088           return ada_to_fixed_value (arg1);
11089         }
11090
11091     case OP_TYPE:
11092       /* The value is not supposed to be used.  This is here to make it
11093          easier to accommodate expressions that contain types.  */
11094       (*pos) += 2;
11095       if (noside == EVAL_SKIP)
11096         goto nosideret;
11097       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11098         return allocate_value (exp->elts[pc + 1].type);
11099       else
11100         error (_("Attempt to use a type name as an expression"));
11101
11102     case OP_AGGREGATE:
11103     case OP_CHOICES:
11104     case OP_OTHERS:
11105     case OP_DISCRETE_RANGE:
11106     case OP_POSITIONAL:
11107     case OP_NAME:
11108       if (noside == EVAL_NORMAL)
11109         switch (op) 
11110           {
11111           case OP_NAME:
11112             error (_("Undefined name, ambiguous name, or renaming used in "
11113                      "component association: %s."), &exp->elts[pc+2].string);
11114           case OP_AGGREGATE:
11115             error (_("Aggregates only allowed on the right of an assignment"));
11116           default:
11117             internal_error (__FILE__, __LINE__,
11118                             _("aggregate apparently mangled"));
11119           }
11120
11121       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11122       *pos += oplen - 1;
11123       for (tem = 0; tem < nargs; tem += 1) 
11124         ada_evaluate_subexp (NULL, exp, pos, noside);
11125       goto nosideret;
11126     }
11127
11128 nosideret:
11129   return eval_skip_value (exp);
11130 }
11131 \f
11132
11133                                 /* Fixed point */
11134
11135 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11136    type name that encodes the 'small and 'delta information.
11137    Otherwise, return NULL.  */
11138
11139 static const char *
11140 gnat_encoded_fixed_type_info (struct type *type)
11141 {
11142   const char *name = ada_type_name (type);
11143   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11144
11145   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11146     {
11147       const char *tail = strstr (name, "___XF_");
11148
11149       if (tail == NULL)
11150         return NULL;
11151       else
11152         return tail + 5;
11153     }
11154   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11155     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11156   else
11157     return NULL;
11158 }
11159
11160 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11161
11162 int
11163 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11164 {
11165   return gnat_encoded_fixed_type_info (type) != NULL;
11166 }
11167
11168 /* Return non-zero iff TYPE represents a System.Address type.  */
11169
11170 int
11171 ada_is_system_address_type (struct type *type)
11172 {
11173   return (type->name () && strcmp (type->name (), "system__address") == 0);
11174 }
11175
11176 /* Assuming that TYPE is the representation of an Ada fixed-point
11177    type, return the target floating-point type to be used to represent
11178    of this type during internal computation.  */
11179
11180 static struct type *
11181 ada_scaling_type (struct type *type)
11182 {
11183   return builtin_type (get_type_arch (type))->builtin_long_double;
11184 }
11185
11186 /* Assuming that TYPE is the representation of an Ada fixed-point
11187    type, return its delta, or NULL if the type is malformed and the
11188    delta cannot be determined.  */
11189
11190 struct value *
11191 gnat_encoded_fixed_point_delta (struct type *type)
11192 {
11193   const char *encoding = gnat_encoded_fixed_type_info (type);
11194   struct type *scale_type = ada_scaling_type (type);
11195
11196   long long num, den;
11197
11198   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11199     return nullptr;
11200   else
11201     return value_binop (value_from_longest (scale_type, num),
11202                         value_from_longest (scale_type, den), BINOP_DIV);
11203 }
11204
11205 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11206    the scaling factor ('SMALL value) associated with the type.  */
11207
11208 struct value *
11209 ada_scaling_factor (struct type *type)
11210 {
11211   const char *encoding = gnat_encoded_fixed_type_info (type);
11212   struct type *scale_type = ada_scaling_type (type);
11213
11214   long long num0, den0, num1, den1;
11215   int n;
11216
11217   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11218               &num0, &den0, &num1, &den1);
11219
11220   if (n < 2)
11221     return value_from_longest (scale_type, 1);
11222   else if (n == 4)
11223     return value_binop (value_from_longest (scale_type, num1),
11224                         value_from_longest (scale_type, den1), BINOP_DIV);
11225   else
11226     return value_binop (value_from_longest (scale_type, num0),
11227                         value_from_longest (scale_type, den0), BINOP_DIV);
11228 }
11229
11230 \f
11231
11232                                 /* Range types */
11233
11234 /* Scan STR beginning at position K for a discriminant name, and
11235    return the value of that discriminant field of DVAL in *PX.  If
11236    PNEW_K is not null, put the position of the character beyond the
11237    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11238    not alter *PX and *PNEW_K if unsuccessful.  */
11239
11240 static int
11241 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11242                     int *pnew_k)
11243 {
11244   static char *bound_buffer = NULL;
11245   static size_t bound_buffer_len = 0;
11246   const char *pstart, *pend, *bound;
11247   struct value *bound_val;
11248
11249   if (dval == NULL || str == NULL || str[k] == '\0')
11250     return 0;
11251
11252   pstart = str + k;
11253   pend = strstr (pstart, "__");
11254   if (pend == NULL)
11255     {
11256       bound = pstart;
11257       k += strlen (bound);
11258     }
11259   else
11260     {
11261       int len = pend - pstart;
11262
11263       /* Strip __ and beyond.  */
11264       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11265       strncpy (bound_buffer, pstart, len);
11266       bound_buffer[len] = '\0';
11267
11268       bound = bound_buffer;
11269       k = pend - str;
11270     }
11271
11272   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11273   if (bound_val == NULL)
11274     return 0;
11275
11276   *px = value_as_long (bound_val);
11277   if (pnew_k != NULL)
11278     *pnew_k = k;
11279   return 1;
11280 }
11281
11282 /* Value of variable named NAME in the current environment.  If
11283    no such variable found, then if ERR_MSG is null, returns 0, and
11284    otherwise causes an error with message ERR_MSG.  */
11285
11286 static struct value *
11287 get_var_value (const char *name, const char *err_msg)
11288 {
11289   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11290
11291   std::vector<struct block_symbol> syms;
11292   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11293                                              get_selected_block (0),
11294                                              VAR_DOMAIN, &syms, 1);
11295
11296   if (nsyms != 1)
11297     {
11298       if (err_msg == NULL)
11299         return 0;
11300       else
11301         error (("%s"), err_msg);
11302     }
11303
11304   return value_of_variable (syms[0].symbol, syms[0].block);
11305 }
11306
11307 /* Value of integer variable named NAME in the current environment.
11308    If no such variable is found, returns false.  Otherwise, sets VALUE
11309    to the variable's value and returns true.  */
11310
11311 bool
11312 get_int_var_value (const char *name, LONGEST &value)
11313 {
11314   struct value *var_val = get_var_value (name, 0);
11315
11316   if (var_val == 0)
11317     return false;
11318
11319   value = value_as_long (var_val);
11320   return true;
11321 }
11322
11323
11324 /* Return a range type whose base type is that of the range type named
11325    NAME in the current environment, and whose bounds are calculated
11326    from NAME according to the GNAT range encoding conventions.
11327    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11328    corresponding range type from debug information; fall back to using it
11329    if symbol lookup fails.  If a new type must be created, allocate it
11330    like ORIG_TYPE was.  The bounds information, in general, is encoded
11331    in NAME, the base type given in the named range type.  */
11332
11333 static struct type *
11334 to_fixed_range_type (struct type *raw_type, struct value *dval)
11335 {
11336   const char *name;
11337   struct type *base_type;
11338   const char *subtype_info;
11339
11340   gdb_assert (raw_type != NULL);
11341   gdb_assert (raw_type->name () != NULL);
11342
11343   if (raw_type->code () == TYPE_CODE_RANGE)
11344     base_type = TYPE_TARGET_TYPE (raw_type);
11345   else
11346     base_type = raw_type;
11347
11348   name = raw_type->name ();
11349   subtype_info = strstr (name, "___XD");
11350   if (subtype_info == NULL)
11351     {
11352       LONGEST L = ada_discrete_type_low_bound (raw_type);
11353       LONGEST U = ada_discrete_type_high_bound (raw_type);
11354
11355       if (L < INT_MIN || U > INT_MAX)
11356         return raw_type;
11357       else
11358         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11359                                          L, U);
11360     }
11361   else
11362     {
11363       static char *name_buf = NULL;
11364       static size_t name_len = 0;
11365       int prefix_len = subtype_info - name;
11366       LONGEST L, U;
11367       struct type *type;
11368       const char *bounds_str;
11369       int n;
11370
11371       GROW_VECT (name_buf, name_len, prefix_len + 5);
11372       strncpy (name_buf, name, prefix_len);
11373       name_buf[prefix_len] = '\0';
11374
11375       subtype_info += 5;
11376       bounds_str = strchr (subtype_info, '_');
11377       n = 1;
11378
11379       if (*subtype_info == 'L')
11380         {
11381           if (!ada_scan_number (bounds_str, n, &L, &n)
11382               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11383             return raw_type;
11384           if (bounds_str[n] == '_')
11385             n += 2;
11386           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11387             n += 1;
11388           subtype_info += 1;
11389         }
11390       else
11391         {
11392           strcpy (name_buf + prefix_len, "___L");
11393           if (!get_int_var_value (name_buf, L))
11394             {
11395               lim_warning (_("Unknown lower bound, using 1."));
11396               L = 1;
11397             }
11398         }
11399
11400       if (*subtype_info == 'U')
11401         {
11402           if (!ada_scan_number (bounds_str, n, &U, &n)
11403               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11404             return raw_type;
11405         }
11406       else
11407         {
11408           strcpy (name_buf + prefix_len, "___U");
11409           if (!get_int_var_value (name_buf, U))
11410             {
11411               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11412               U = L;
11413             }
11414         }
11415
11416       type = create_static_range_type (alloc_type_copy (raw_type),
11417                                        base_type, L, U);
11418       /* create_static_range_type alters the resulting type's length
11419          to match the size of the base_type, which is not what we want.
11420          Set it back to the original range type's length.  */
11421       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11422       type->set_name (name);
11423       return type;
11424     }
11425 }
11426
11427 /* True iff NAME is the name of a range type.  */
11428
11429 int
11430 ada_is_range_type_name (const char *name)
11431 {
11432   return (name != NULL && strstr (name, "___XD"));
11433 }
11434 \f
11435
11436                                 /* Modular types */
11437
11438 /* True iff TYPE is an Ada modular type.  */
11439
11440 int
11441 ada_is_modular_type (struct type *type)
11442 {
11443   struct type *subranged_type = get_base_type (type);
11444
11445   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11446           && subranged_type->code () == TYPE_CODE_INT
11447           && subranged_type->is_unsigned ());
11448 }
11449
11450 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11451
11452 ULONGEST
11453 ada_modulus (struct type *type)
11454 {
11455   const dynamic_prop &high = type->bounds ()->high;
11456
11457   if (high.kind () == PROP_CONST)
11458     return (ULONGEST) high.const_val () + 1;
11459
11460   /* If TYPE is unresolved, the high bound might be a location list.  Return
11461      0, for lack of a better value to return.  */
11462   return 0;
11463 }
11464 \f
11465
11466 /* Ada exception catchpoint support:
11467    ---------------------------------
11468
11469    We support 3 kinds of exception catchpoints:
11470      . catchpoints on Ada exceptions
11471      . catchpoints on unhandled Ada exceptions
11472      . catchpoints on failed assertions
11473
11474    Exceptions raised during failed assertions, or unhandled exceptions
11475    could perfectly be caught with the general catchpoint on Ada exceptions.
11476    However, we can easily differentiate these two special cases, and having
11477    the option to distinguish these two cases from the rest can be useful
11478    to zero-in on certain situations.
11479
11480    Exception catchpoints are a specialized form of breakpoint,
11481    since they rely on inserting breakpoints inside known routines
11482    of the GNAT runtime.  The implementation therefore uses a standard
11483    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11484    of breakpoint_ops.
11485
11486    Support in the runtime for exception catchpoints have been changed
11487    a few times already, and these changes affect the implementation
11488    of these catchpoints.  In order to be able to support several
11489    variants of the runtime, we use a sniffer that will determine
11490    the runtime variant used by the program being debugged.  */
11491
11492 /* Ada's standard exceptions.
11493
11494    The Ada 83 standard also defined Numeric_Error.  But there so many
11495    situations where it was unclear from the Ada 83 Reference Manual
11496    (RM) whether Constraint_Error or Numeric_Error should be raised,
11497    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11498    Interpretation saying that anytime the RM says that Numeric_Error
11499    should be raised, the implementation may raise Constraint_Error.
11500    Ada 95 went one step further and pretty much removed Numeric_Error
11501    from the list of standard exceptions (it made it a renaming of
11502    Constraint_Error, to help preserve compatibility when compiling
11503    an Ada83 compiler). As such, we do not include Numeric_Error from
11504    this list of standard exceptions.  */
11505
11506 static const char *standard_exc[] = {
11507   "constraint_error",
11508   "program_error",
11509   "storage_error",
11510   "tasking_error"
11511 };
11512
11513 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11514
11515 /* A structure that describes how to support exception catchpoints
11516    for a given executable.  */
11517
11518 struct exception_support_info
11519 {
11520    /* The name of the symbol to break on in order to insert
11521       a catchpoint on exceptions.  */
11522    const char *catch_exception_sym;
11523
11524    /* The name of the symbol to break on in order to insert
11525       a catchpoint on unhandled exceptions.  */
11526    const char *catch_exception_unhandled_sym;
11527
11528    /* The name of the symbol to break on in order to insert
11529       a catchpoint on failed assertions.  */
11530    const char *catch_assert_sym;
11531
11532    /* The name of the symbol to break on in order to insert
11533       a catchpoint on exception handling.  */
11534    const char *catch_handlers_sym;
11535
11536    /* Assuming that the inferior just triggered an unhandled exception
11537       catchpoint, this function is responsible for returning the address
11538       in inferior memory where the name of that exception is stored.
11539       Return zero if the address could not be computed.  */
11540    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11541 };
11542
11543 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11544 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11545
11546 /* The following exception support info structure describes how to
11547    implement exception catchpoints with the latest version of the
11548    Ada runtime (as of 2019-08-??).  */
11549
11550 static const struct exception_support_info default_exception_support_info =
11551 {
11552   "__gnat_debug_raise_exception", /* catch_exception_sym */
11553   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11554   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11555   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11556   ada_unhandled_exception_name_addr
11557 };
11558
11559 /* The following exception support info structure describes how to
11560    implement exception catchpoints with an earlier version of the
11561    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11562
11563 static const struct exception_support_info exception_support_info_v0 =
11564 {
11565   "__gnat_debug_raise_exception", /* catch_exception_sym */
11566   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11567   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11568   "__gnat_begin_handler", /* catch_handlers_sym */
11569   ada_unhandled_exception_name_addr
11570 };
11571
11572 /* The following exception support info structure describes how to
11573    implement exception catchpoints with a slightly older version
11574    of the Ada runtime.  */
11575
11576 static const struct exception_support_info exception_support_info_fallback =
11577 {
11578   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11579   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11580   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11581   "__gnat_begin_handler", /* catch_handlers_sym */
11582   ada_unhandled_exception_name_addr_from_raise
11583 };
11584
11585 /* Return nonzero if we can detect the exception support routines
11586    described in EINFO.
11587
11588    This function errors out if an abnormal situation is detected
11589    (for instance, if we find the exception support routines, but
11590    that support is found to be incomplete).  */
11591
11592 static int
11593 ada_has_this_exception_support (const struct exception_support_info *einfo)
11594 {
11595   struct symbol *sym;
11596
11597   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11598      that should be compiled with debugging information.  As a result, we
11599      expect to find that symbol in the symtabs.  */
11600
11601   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11602   if (sym == NULL)
11603     {
11604       /* Perhaps we did not find our symbol because the Ada runtime was
11605          compiled without debugging info, or simply stripped of it.
11606          It happens on some GNU/Linux distributions for instance, where
11607          users have to install a separate debug package in order to get
11608          the runtime's debugging info.  In that situation, let the user
11609          know why we cannot insert an Ada exception catchpoint.
11610
11611          Note: Just for the purpose of inserting our Ada exception
11612          catchpoint, we could rely purely on the associated minimal symbol.
11613          But we would be operating in degraded mode anyway, since we are
11614          still lacking the debugging info needed later on to extract
11615          the name of the exception being raised (this name is printed in
11616          the catchpoint message, and is also used when trying to catch
11617          a specific exception).  We do not handle this case for now.  */
11618       struct bound_minimal_symbol msym
11619         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11620
11621       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11622         error (_("Your Ada runtime appears to be missing some debugging "
11623                  "information.\nCannot insert Ada exception catchpoint "
11624                  "in this configuration."));
11625
11626       return 0;
11627     }
11628
11629   /* Make sure that the symbol we found corresponds to a function.  */
11630
11631   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11632     {
11633       error (_("Symbol \"%s\" is not a function (class = %d)"),
11634              sym->linkage_name (), SYMBOL_CLASS (sym));
11635       return 0;
11636     }
11637
11638   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11639   if (sym == NULL)
11640     {
11641       struct bound_minimal_symbol msym
11642         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11643
11644       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11645         error (_("Your Ada runtime appears to be missing some debugging "
11646                  "information.\nCannot insert Ada exception catchpoint "
11647                  "in this configuration."));
11648
11649       return 0;
11650     }
11651
11652   /* Make sure that the symbol we found corresponds to a function.  */
11653
11654   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11655     {
11656       error (_("Symbol \"%s\" is not a function (class = %d)"),
11657              sym->linkage_name (), SYMBOL_CLASS (sym));
11658       return 0;
11659     }
11660
11661   return 1;
11662 }
11663
11664 /* Inspect the Ada runtime and determine which exception info structure
11665    should be used to provide support for exception catchpoints.
11666
11667    This function will always set the per-inferior exception_info,
11668    or raise an error.  */
11669
11670 static void
11671 ada_exception_support_info_sniffer (void)
11672 {
11673   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11674
11675   /* If the exception info is already known, then no need to recompute it.  */
11676   if (data->exception_info != NULL)
11677     return;
11678
11679   /* Check the latest (default) exception support info.  */
11680   if (ada_has_this_exception_support (&default_exception_support_info))
11681     {
11682       data->exception_info = &default_exception_support_info;
11683       return;
11684     }
11685
11686   /* Try the v0 exception suport info.  */
11687   if (ada_has_this_exception_support (&exception_support_info_v0))
11688     {
11689       data->exception_info = &exception_support_info_v0;
11690       return;
11691     }
11692
11693   /* Try our fallback exception suport info.  */
11694   if (ada_has_this_exception_support (&exception_support_info_fallback))
11695     {
11696       data->exception_info = &exception_support_info_fallback;
11697       return;
11698     }
11699
11700   /* Sometimes, it is normal for us to not be able to find the routine
11701      we are looking for.  This happens when the program is linked with
11702      the shared version of the GNAT runtime, and the program has not been
11703      started yet.  Inform the user of these two possible causes if
11704      applicable.  */
11705
11706   if (ada_update_initial_language (language_unknown) != language_ada)
11707     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11708
11709   /* If the symbol does not exist, then check that the program is
11710      already started, to make sure that shared libraries have been
11711      loaded.  If it is not started, this may mean that the symbol is
11712      in a shared library.  */
11713
11714   if (inferior_ptid.pid () == 0)
11715     error (_("Unable to insert catchpoint. Try to start the program first."));
11716
11717   /* At this point, we know that we are debugging an Ada program and
11718      that the inferior has been started, but we still are not able to
11719      find the run-time symbols.  That can mean that we are in
11720      configurable run time mode, or that a-except as been optimized
11721      out by the linker...  In any case, at this point it is not worth
11722      supporting this feature.  */
11723
11724   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11725 }
11726
11727 /* True iff FRAME is very likely to be that of a function that is
11728    part of the runtime system.  This is all very heuristic, but is
11729    intended to be used as advice as to what frames are uninteresting
11730    to most users.  */
11731
11732 static int
11733 is_known_support_routine (struct frame_info *frame)
11734 {
11735   enum language func_lang;
11736   int i;
11737   const char *fullname;
11738
11739   /* If this code does not have any debugging information (no symtab),
11740      This cannot be any user code.  */
11741
11742   symtab_and_line sal = find_frame_sal (frame);
11743   if (sal.symtab == NULL)
11744     return 1;
11745
11746   /* If there is a symtab, but the associated source file cannot be
11747      located, then assume this is not user code:  Selecting a frame
11748      for which we cannot display the code would not be very helpful
11749      for the user.  This should also take care of case such as VxWorks
11750      where the kernel has some debugging info provided for a few units.  */
11751
11752   fullname = symtab_to_fullname (sal.symtab);
11753   if (access (fullname, R_OK) != 0)
11754     return 1;
11755
11756   /* Check the unit filename against the Ada runtime file naming.
11757      We also check the name of the objfile against the name of some
11758      known system libraries that sometimes come with debugging info
11759      too.  */
11760
11761   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11762     {
11763       re_comp (known_runtime_file_name_patterns[i]);
11764       if (re_exec (lbasename (sal.symtab->filename)))
11765         return 1;
11766       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11767           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11768         return 1;
11769     }
11770
11771   /* Check whether the function is a GNAT-generated entity.  */
11772
11773   gdb::unique_xmalloc_ptr<char> func_name
11774     = find_frame_funname (frame, &func_lang, NULL);
11775   if (func_name == NULL)
11776     return 1;
11777
11778   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11779     {
11780       re_comp (known_auxiliary_function_name_patterns[i]);
11781       if (re_exec (func_name.get ()))
11782         return 1;
11783     }
11784
11785   return 0;
11786 }
11787
11788 /* Find the first frame that contains debugging information and that is not
11789    part of the Ada run-time, starting from FI and moving upward.  */
11790
11791 void
11792 ada_find_printable_frame (struct frame_info *fi)
11793 {
11794   for (; fi != NULL; fi = get_prev_frame (fi))
11795     {
11796       if (!is_known_support_routine (fi))
11797         {
11798           select_frame (fi);
11799           break;
11800         }
11801     }
11802
11803 }
11804
11805 /* Assuming that the inferior just triggered an unhandled exception
11806    catchpoint, return the address in inferior memory where the name
11807    of the exception is stored.
11808    
11809    Return zero if the address could not be computed.  */
11810
11811 static CORE_ADDR
11812 ada_unhandled_exception_name_addr (void)
11813 {
11814   return parse_and_eval_address ("e.full_name");
11815 }
11816
11817 /* Same as ada_unhandled_exception_name_addr, except that this function
11818    should be used when the inferior uses an older version of the runtime,
11819    where the exception name needs to be extracted from a specific frame
11820    several frames up in the callstack.  */
11821
11822 static CORE_ADDR
11823 ada_unhandled_exception_name_addr_from_raise (void)
11824 {
11825   int frame_level;
11826   struct frame_info *fi;
11827   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11828
11829   /* To determine the name of this exception, we need to select
11830      the frame corresponding to RAISE_SYM_NAME.  This frame is
11831      at least 3 levels up, so we simply skip the first 3 frames
11832      without checking the name of their associated function.  */
11833   fi = get_current_frame ();
11834   for (frame_level = 0; frame_level < 3; frame_level += 1)
11835     if (fi != NULL)
11836       fi = get_prev_frame (fi); 
11837
11838   while (fi != NULL)
11839     {
11840       enum language func_lang;
11841
11842       gdb::unique_xmalloc_ptr<char> func_name
11843         = find_frame_funname (fi, &func_lang, NULL);
11844       if (func_name != NULL)
11845         {
11846           if (strcmp (func_name.get (),
11847                       data->exception_info->catch_exception_sym) == 0)
11848             break; /* We found the frame we were looking for...  */
11849         }
11850       fi = get_prev_frame (fi);
11851     }
11852
11853   if (fi == NULL)
11854     return 0;
11855
11856   select_frame (fi);
11857   return parse_and_eval_address ("id.full_name");
11858 }
11859
11860 /* Assuming the inferior just triggered an Ada exception catchpoint
11861    (of any type), return the address in inferior memory where the name
11862    of the exception is stored, if applicable.
11863
11864    Assumes the selected frame is the current frame.
11865
11866    Return zero if the address could not be computed, or if not relevant.  */
11867
11868 static CORE_ADDR
11869 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11870                            struct breakpoint *b)
11871 {
11872   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11873
11874   switch (ex)
11875     {
11876       case ada_catch_exception:
11877         return (parse_and_eval_address ("e.full_name"));
11878         break;
11879
11880       case ada_catch_exception_unhandled:
11881         return data->exception_info->unhandled_exception_name_addr ();
11882         break;
11883
11884       case ada_catch_handlers:
11885         return 0;  /* The runtimes does not provide access to the exception
11886                       name.  */
11887         break;
11888
11889       case ada_catch_assert:
11890         return 0;  /* Exception name is not relevant in this case.  */
11891         break;
11892
11893       default:
11894         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11895         break;
11896     }
11897
11898   return 0; /* Should never be reached.  */
11899 }
11900
11901 /* Assuming the inferior is stopped at an exception catchpoint,
11902    return the message which was associated to the exception, if
11903    available.  Return NULL if the message could not be retrieved.
11904
11905    Note: The exception message can be associated to an exception
11906    either through the use of the Raise_Exception function, or
11907    more simply (Ada 2005 and later), via:
11908
11909        raise Exception_Name with "exception message";
11910
11911    */
11912
11913 static gdb::unique_xmalloc_ptr<char>
11914 ada_exception_message_1 (void)
11915 {
11916   struct value *e_msg_val;
11917   int e_msg_len;
11918
11919   /* For runtimes that support this feature, the exception message
11920      is passed as an unbounded string argument called "message".  */
11921   e_msg_val = parse_and_eval ("message");
11922   if (e_msg_val == NULL)
11923     return NULL; /* Exception message not supported.  */
11924
11925   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
11926   gdb_assert (e_msg_val != NULL);
11927   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
11928
11929   /* If the message string is empty, then treat it as if there was
11930      no exception message.  */
11931   if (e_msg_len <= 0)
11932     return NULL;
11933
11934   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
11935   read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (),
11936                e_msg_len);
11937   e_msg.get ()[e_msg_len] = '\0';
11938
11939   return e_msg;
11940 }
11941
11942 /* Same as ada_exception_message_1, except that all exceptions are
11943    contained here (returning NULL instead).  */
11944
11945 static gdb::unique_xmalloc_ptr<char>
11946 ada_exception_message (void)
11947 {
11948   gdb::unique_xmalloc_ptr<char> e_msg;
11949
11950   try
11951     {
11952       e_msg = ada_exception_message_1 ();
11953     }
11954   catch (const gdb_exception_error &e)
11955     {
11956       e_msg.reset (nullptr);
11957     }
11958
11959   return e_msg;
11960 }
11961
11962 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
11963    any error that ada_exception_name_addr_1 might cause to be thrown.
11964    When an error is intercepted, a warning with the error message is printed,
11965    and zero is returned.  */
11966
11967 static CORE_ADDR
11968 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
11969                          struct breakpoint *b)
11970 {
11971   CORE_ADDR result = 0;
11972
11973   try
11974     {
11975       result = ada_exception_name_addr_1 (ex, b);
11976     }
11977
11978   catch (const gdb_exception_error &e)
11979     {
11980       warning (_("failed to get exception name: %s"), e.what ());
11981       return 0;
11982     }
11983
11984   return result;
11985 }
11986
11987 static std::string ada_exception_catchpoint_cond_string
11988   (const char *excep_string,
11989    enum ada_exception_catchpoint_kind ex);
11990
11991 /* Ada catchpoints.
11992
11993    In the case of catchpoints on Ada exceptions, the catchpoint will
11994    stop the target on every exception the program throws.  When a user
11995    specifies the name of a specific exception, we translate this
11996    request into a condition expression (in text form), and then parse
11997    it into an expression stored in each of the catchpoint's locations.
11998    We then use this condition to check whether the exception that was
11999    raised is the one the user is interested in.  If not, then the
12000    target is resumed again.  We store the name of the requested
12001    exception, in order to be able to re-set the condition expression
12002    when symbols change.  */
12003
12004 /* An instance of this type is used to represent an Ada catchpoint
12005    breakpoint location.  */
12006
12007 class ada_catchpoint_location : public bp_location
12008 {
12009 public:
12010   ada_catchpoint_location (breakpoint *owner)
12011     : bp_location (owner, bp_loc_software_breakpoint)
12012   {}
12013
12014   /* The condition that checks whether the exception that was raised
12015      is the specific exception the user specified on catchpoint
12016      creation.  */
12017   expression_up excep_cond_expr;
12018 };
12019
12020 /* An instance of this type is used to represent an Ada catchpoint.  */
12021
12022 struct ada_catchpoint : public breakpoint
12023 {
12024   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12025     : m_kind (kind)
12026   {
12027   }
12028
12029   /* The name of the specific exception the user specified.  */
12030   std::string excep_string;
12031
12032   /* What kind of catchpoint this is.  */
12033   enum ada_exception_catchpoint_kind m_kind;
12034 };
12035
12036 /* Parse the exception condition string in the context of each of the
12037    catchpoint's locations, and store them for later evaluation.  */
12038
12039 static void
12040 create_excep_cond_exprs (struct ada_catchpoint *c,
12041                          enum ada_exception_catchpoint_kind ex)
12042 {
12043   struct bp_location *bl;
12044
12045   /* Nothing to do if there's no specific exception to catch.  */
12046   if (c->excep_string.empty ())
12047     return;
12048
12049   /* Same if there are no locations... */
12050   if (c->loc == NULL)
12051     return;
12052
12053   /* Compute the condition expression in text form, from the specific
12054      expection we want to catch.  */
12055   std::string cond_string
12056     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12057
12058   /* Iterate over all the catchpoint's locations, and parse an
12059      expression for each.  */
12060   for (bl = c->loc; bl != NULL; bl = bl->next)
12061     {
12062       struct ada_catchpoint_location *ada_loc
12063         = (struct ada_catchpoint_location *) bl;
12064       expression_up exp;
12065
12066       if (!bl->shlib_disabled)
12067         {
12068           const char *s;
12069
12070           s = cond_string.c_str ();
12071           try
12072             {
12073               exp = parse_exp_1 (&s, bl->address,
12074                                  block_for_pc (bl->address),
12075                                  0);
12076             }
12077           catch (const gdb_exception_error &e)
12078             {
12079               warning (_("failed to reevaluate internal exception condition "
12080                          "for catchpoint %d: %s"),
12081                        c->number, e.what ());
12082             }
12083         }
12084
12085       ada_loc->excep_cond_expr = std::move (exp);
12086     }
12087 }
12088
12089 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12090    structure for all exception catchpoint kinds.  */
12091
12092 static struct bp_location *
12093 allocate_location_exception (struct breakpoint *self)
12094 {
12095   return new ada_catchpoint_location (self);
12096 }
12097
12098 /* Implement the RE_SET method in the breakpoint_ops structure for all
12099    exception catchpoint kinds.  */
12100
12101 static void
12102 re_set_exception (struct breakpoint *b)
12103 {
12104   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12105
12106   /* Call the base class's method.  This updates the catchpoint's
12107      locations.  */
12108   bkpt_breakpoint_ops.re_set (b);
12109
12110   /* Reparse the exception conditional expressions.  One for each
12111      location.  */
12112   create_excep_cond_exprs (c, c->m_kind);
12113 }
12114
12115 /* Returns true if we should stop for this breakpoint hit.  If the
12116    user specified a specific exception, we only want to cause a stop
12117    if the program thrown that exception.  */
12118
12119 static int
12120 should_stop_exception (const struct bp_location *bl)
12121 {
12122   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12123   const struct ada_catchpoint_location *ada_loc
12124     = (const struct ada_catchpoint_location *) bl;
12125   int stop;
12126
12127   struct internalvar *var = lookup_internalvar ("_ada_exception");
12128   if (c->m_kind == ada_catch_assert)
12129     clear_internalvar (var);
12130   else
12131     {
12132       try
12133         {
12134           const char *expr;
12135
12136           if (c->m_kind == ada_catch_handlers)
12137             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12138                     ".all.occurrence.id");
12139           else
12140             expr = "e";
12141
12142           struct value *exc = parse_and_eval (expr);
12143           set_internalvar (var, exc);
12144         }
12145       catch (const gdb_exception_error &ex)
12146         {
12147           clear_internalvar (var);
12148         }
12149     }
12150
12151   /* With no specific exception, should always stop.  */
12152   if (c->excep_string.empty ())
12153     return 1;
12154
12155   if (ada_loc->excep_cond_expr == NULL)
12156     {
12157       /* We will have a NULL expression if back when we were creating
12158          the expressions, this location's had failed to parse.  */
12159       return 1;
12160     }
12161
12162   stop = 1;
12163   try
12164     {
12165       struct value *mark;
12166
12167       mark = value_mark ();
12168       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12169       value_free_to_mark (mark);
12170     }
12171   catch (const gdb_exception &ex)
12172     {
12173       exception_fprintf (gdb_stderr, ex,
12174                          _("Error in testing exception condition:\n"));
12175     }
12176
12177   return stop;
12178 }
12179
12180 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12181    for all exception catchpoint kinds.  */
12182
12183 static void
12184 check_status_exception (bpstat bs)
12185 {
12186   bs->stop = should_stop_exception (bs->bp_location_at);
12187 }
12188
12189 /* Implement the PRINT_IT method in the breakpoint_ops structure
12190    for all exception catchpoint kinds.  */
12191
12192 static enum print_stop_action
12193 print_it_exception (bpstat bs)
12194 {
12195   struct ui_out *uiout = current_uiout;
12196   struct breakpoint *b = bs->breakpoint_at;
12197
12198   annotate_catchpoint (b->number);
12199
12200   if (uiout->is_mi_like_p ())
12201     {
12202       uiout->field_string ("reason",
12203                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12204       uiout->field_string ("disp", bpdisp_text (b->disposition));
12205     }
12206
12207   uiout->text (b->disposition == disp_del
12208                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12209   uiout->field_signed ("bkptno", b->number);
12210   uiout->text (", ");
12211
12212   /* ada_exception_name_addr relies on the selected frame being the
12213      current frame.  Need to do this here because this function may be
12214      called more than once when printing a stop, and below, we'll
12215      select the first frame past the Ada run-time (see
12216      ada_find_printable_frame).  */
12217   select_frame (get_current_frame ());
12218
12219   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12220   switch (c->m_kind)
12221     {
12222       case ada_catch_exception:
12223       case ada_catch_exception_unhandled:
12224       case ada_catch_handlers:
12225         {
12226           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12227           char exception_name[256];
12228
12229           if (addr != 0)
12230             {
12231               read_memory (addr, (gdb_byte *) exception_name,
12232                            sizeof (exception_name) - 1);
12233               exception_name [sizeof (exception_name) - 1] = '\0';
12234             }
12235           else
12236             {
12237               /* For some reason, we were unable to read the exception
12238                  name.  This could happen if the Runtime was compiled
12239                  without debugging info, for instance.  In that case,
12240                  just replace the exception name by the generic string
12241                  "exception" - it will read as "an exception" in the
12242                  notification we are about to print.  */
12243               memcpy (exception_name, "exception", sizeof ("exception"));
12244             }
12245           /* In the case of unhandled exception breakpoints, we print
12246              the exception name as "unhandled EXCEPTION_NAME", to make
12247              it clearer to the user which kind of catchpoint just got
12248              hit.  We used ui_out_text to make sure that this extra
12249              info does not pollute the exception name in the MI case.  */
12250           if (c->m_kind == ada_catch_exception_unhandled)
12251             uiout->text ("unhandled ");
12252           uiout->field_string ("exception-name", exception_name);
12253         }
12254         break;
12255       case ada_catch_assert:
12256         /* In this case, the name of the exception is not really
12257            important.  Just print "failed assertion" to make it clearer
12258            that his program just hit an assertion-failure catchpoint.
12259            We used ui_out_text because this info does not belong in
12260            the MI output.  */
12261         uiout->text ("failed assertion");
12262         break;
12263     }
12264
12265   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12266   if (exception_message != NULL)
12267     {
12268       uiout->text (" (");
12269       uiout->field_string ("exception-message", exception_message.get ());
12270       uiout->text (")");
12271     }
12272
12273   uiout->text (" at ");
12274   ada_find_printable_frame (get_current_frame ());
12275
12276   return PRINT_SRC_AND_LOC;
12277 }
12278
12279 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12280    for all exception catchpoint kinds.  */
12281
12282 static void
12283 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12284
12285   struct ui_out *uiout = current_uiout;
12286   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12287   struct value_print_options opts;
12288
12289   get_user_print_options (&opts);
12290
12291   if (opts.addressprint)
12292     uiout->field_skip ("addr");
12293
12294   annotate_field (5);
12295   switch (c->m_kind)
12296     {
12297       case ada_catch_exception:
12298         if (!c->excep_string.empty ())
12299           {
12300             std::string msg = string_printf (_("`%s' Ada exception"),
12301                                              c->excep_string.c_str ());
12302
12303             uiout->field_string ("what", msg);
12304           }
12305         else
12306           uiout->field_string ("what", "all Ada exceptions");
12307         
12308         break;
12309
12310       case ada_catch_exception_unhandled:
12311         uiout->field_string ("what", "unhandled Ada exceptions");
12312         break;
12313       
12314       case ada_catch_handlers:
12315         if (!c->excep_string.empty ())
12316           {
12317             uiout->field_fmt ("what",
12318                               _("`%s' Ada exception handlers"),
12319                               c->excep_string.c_str ());
12320           }
12321         else
12322           uiout->field_string ("what", "all Ada exceptions handlers");
12323         break;
12324
12325       case ada_catch_assert:
12326         uiout->field_string ("what", "failed Ada assertions");
12327         break;
12328
12329       default:
12330         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12331         break;
12332     }
12333 }
12334
12335 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12336    for all exception catchpoint kinds.  */
12337
12338 static void
12339 print_mention_exception (struct breakpoint *b)
12340 {
12341   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12342   struct ui_out *uiout = current_uiout;
12343
12344   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12345                                                  : _("Catchpoint "));
12346   uiout->field_signed ("bkptno", b->number);
12347   uiout->text (": ");
12348
12349   switch (c->m_kind)
12350     {
12351       case ada_catch_exception:
12352         if (!c->excep_string.empty ())
12353           {
12354             std::string info = string_printf (_("`%s' Ada exception"),
12355                                               c->excep_string.c_str ());
12356             uiout->text (info.c_str ());
12357           }
12358         else
12359           uiout->text (_("all Ada exceptions"));
12360         break;
12361
12362       case ada_catch_exception_unhandled:
12363         uiout->text (_("unhandled Ada exceptions"));
12364         break;
12365
12366       case ada_catch_handlers:
12367         if (!c->excep_string.empty ())
12368           {
12369             std::string info
12370               = string_printf (_("`%s' Ada exception handlers"),
12371                                c->excep_string.c_str ());
12372             uiout->text (info.c_str ());
12373           }
12374         else
12375           uiout->text (_("all Ada exceptions handlers"));
12376         break;
12377
12378       case ada_catch_assert:
12379         uiout->text (_("failed Ada assertions"));
12380         break;
12381
12382       default:
12383         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12384         break;
12385     }
12386 }
12387
12388 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12389    for all exception catchpoint kinds.  */
12390
12391 static void
12392 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12393 {
12394   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12395
12396   switch (c->m_kind)
12397     {
12398       case ada_catch_exception:
12399         fprintf_filtered (fp, "catch exception");
12400         if (!c->excep_string.empty ())
12401           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12402         break;
12403
12404       case ada_catch_exception_unhandled:
12405         fprintf_filtered (fp, "catch exception unhandled");
12406         break;
12407
12408       case ada_catch_handlers:
12409         fprintf_filtered (fp, "catch handlers");
12410         break;
12411
12412       case ada_catch_assert:
12413         fprintf_filtered (fp, "catch assert");
12414         break;
12415
12416       default:
12417         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12418     }
12419   print_recreate_thread (b, fp);
12420 }
12421
12422 /* Virtual tables for various breakpoint types.  */
12423 static struct breakpoint_ops catch_exception_breakpoint_ops;
12424 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12425 static struct breakpoint_ops catch_assert_breakpoint_ops;
12426 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12427
12428 /* See ada-lang.h.  */
12429
12430 bool
12431 is_ada_exception_catchpoint (breakpoint *bp)
12432 {
12433   return (bp->ops == &catch_exception_breakpoint_ops
12434           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12435           || bp->ops == &catch_assert_breakpoint_ops
12436           || bp->ops == &catch_handlers_breakpoint_ops);
12437 }
12438
12439 /* Split the arguments specified in a "catch exception" command.  
12440    Set EX to the appropriate catchpoint type.
12441    Set EXCEP_STRING to the name of the specific exception if
12442    specified by the user.
12443    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12444    "catch handlers" command.  False otherwise.
12445    If a condition is found at the end of the arguments, the condition
12446    expression is stored in COND_STRING (memory must be deallocated
12447    after use).  Otherwise COND_STRING is set to NULL.  */
12448
12449 static void
12450 catch_ada_exception_command_split (const char *args,
12451                                    bool is_catch_handlers_cmd,
12452                                    enum ada_exception_catchpoint_kind *ex,
12453                                    std::string *excep_string,
12454                                    std::string *cond_string)
12455 {
12456   std::string exception_name;
12457
12458   exception_name = extract_arg (&args);
12459   if (exception_name == "if")
12460     {
12461       /* This is not an exception name; this is the start of a condition
12462          expression for a catchpoint on all exceptions.  So, "un-get"
12463          this token, and set exception_name to NULL.  */
12464       exception_name.clear ();
12465       args -= 2;
12466     }
12467
12468   /* Check to see if we have a condition.  */
12469
12470   args = skip_spaces (args);
12471   if (startswith (args, "if")
12472       && (isspace (args[2]) || args[2] == '\0'))
12473     {
12474       args += 2;
12475       args = skip_spaces (args);
12476
12477       if (args[0] == '\0')
12478         error (_("Condition missing after `if' keyword"));
12479       *cond_string = args;
12480
12481       args += strlen (args);
12482     }
12483
12484   /* Check that we do not have any more arguments.  Anything else
12485      is unexpected.  */
12486
12487   if (args[0] != '\0')
12488     error (_("Junk at end of expression"));
12489
12490   if (is_catch_handlers_cmd)
12491     {
12492       /* Catch handling of exceptions.  */
12493       *ex = ada_catch_handlers;
12494       *excep_string = exception_name;
12495     }
12496   else if (exception_name.empty ())
12497     {
12498       /* Catch all exceptions.  */
12499       *ex = ada_catch_exception;
12500       excep_string->clear ();
12501     }
12502   else if (exception_name == "unhandled")
12503     {
12504       /* Catch unhandled exceptions.  */
12505       *ex = ada_catch_exception_unhandled;
12506       excep_string->clear ();
12507     }
12508   else
12509     {
12510       /* Catch a specific exception.  */
12511       *ex = ada_catch_exception;
12512       *excep_string = exception_name;
12513     }
12514 }
12515
12516 /* Return the name of the symbol on which we should break in order to
12517    implement a catchpoint of the EX kind.  */
12518
12519 static const char *
12520 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12521 {
12522   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12523
12524   gdb_assert (data->exception_info != NULL);
12525
12526   switch (ex)
12527     {
12528       case ada_catch_exception:
12529         return (data->exception_info->catch_exception_sym);
12530         break;
12531       case ada_catch_exception_unhandled:
12532         return (data->exception_info->catch_exception_unhandled_sym);
12533         break;
12534       case ada_catch_assert:
12535         return (data->exception_info->catch_assert_sym);
12536         break;
12537       case ada_catch_handlers:
12538         return (data->exception_info->catch_handlers_sym);
12539         break;
12540       default:
12541         internal_error (__FILE__, __LINE__,
12542                         _("unexpected catchpoint kind (%d)"), ex);
12543     }
12544 }
12545
12546 /* Return the breakpoint ops "virtual table" used for catchpoints
12547    of the EX kind.  */
12548
12549 static const struct breakpoint_ops *
12550 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12551 {
12552   switch (ex)
12553     {
12554       case ada_catch_exception:
12555         return (&catch_exception_breakpoint_ops);
12556         break;
12557       case ada_catch_exception_unhandled:
12558         return (&catch_exception_unhandled_breakpoint_ops);
12559         break;
12560       case ada_catch_assert:
12561         return (&catch_assert_breakpoint_ops);
12562         break;
12563       case ada_catch_handlers:
12564         return (&catch_handlers_breakpoint_ops);
12565         break;
12566       default:
12567         internal_error (__FILE__, __LINE__,
12568                         _("unexpected catchpoint kind (%d)"), ex);
12569     }
12570 }
12571
12572 /* Return the condition that will be used to match the current exception
12573    being raised with the exception that the user wants to catch.  This
12574    assumes that this condition is used when the inferior just triggered
12575    an exception catchpoint.
12576    EX: the type of catchpoints used for catching Ada exceptions.  */
12577
12578 static std::string
12579 ada_exception_catchpoint_cond_string (const char *excep_string,
12580                                       enum ada_exception_catchpoint_kind ex)
12581 {
12582   int i;
12583   bool is_standard_exc = false;
12584   std::string result;
12585
12586   if (ex == ada_catch_handlers)
12587     {
12588       /* For exception handlers catchpoints, the condition string does
12589          not use the same parameter as for the other exceptions.  */
12590       result = ("long_integer (GNAT_GCC_exception_Access"
12591                 "(gcc_exception).all.occurrence.id)");
12592     }
12593   else
12594     result = "long_integer (e)";
12595
12596   /* The standard exceptions are a special case.  They are defined in
12597      runtime units that have been compiled without debugging info; if
12598      EXCEP_STRING is the not-fully-qualified name of a standard
12599      exception (e.g. "constraint_error") then, during the evaluation
12600      of the condition expression, the symbol lookup on this name would
12601      *not* return this standard exception.  The catchpoint condition
12602      may then be set only on user-defined exceptions which have the
12603      same not-fully-qualified name (e.g. my_package.constraint_error).
12604
12605      To avoid this unexcepted behavior, these standard exceptions are
12606      systematically prefixed by "standard".  This means that "catch
12607      exception constraint_error" is rewritten into "catch exception
12608      standard.constraint_error".
12609
12610      If an exception named constraint_error is defined in another package of
12611      the inferior program, then the only way to specify this exception as a
12612      breakpoint condition is to use its fully-qualified named:
12613      e.g. my_package.constraint_error.  */
12614
12615   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12616     {
12617       if (strcmp (standard_exc [i], excep_string) == 0)
12618         {
12619           is_standard_exc = true;
12620           break;
12621         }
12622     }
12623
12624   result += " = ";
12625
12626   if (is_standard_exc)
12627     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12628   else
12629     string_appendf (result, "long_integer (&%s)", excep_string);
12630
12631   return result;
12632 }
12633
12634 /* Return the symtab_and_line that should be used to insert an exception
12635    catchpoint of the TYPE kind.
12636
12637    ADDR_STRING returns the name of the function where the real
12638    breakpoint that implements the catchpoints is set, depending on the
12639    type of catchpoint we need to create.  */
12640
12641 static struct symtab_and_line
12642 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12643                    std::string *addr_string, const struct breakpoint_ops **ops)
12644 {
12645   const char *sym_name;
12646   struct symbol *sym;
12647
12648   /* First, find out which exception support info to use.  */
12649   ada_exception_support_info_sniffer ();
12650
12651   /* Then lookup the function on which we will break in order to catch
12652      the Ada exceptions requested by the user.  */
12653   sym_name = ada_exception_sym_name (ex);
12654   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12655
12656   if (sym == NULL)
12657     error (_("Catchpoint symbol not found: %s"), sym_name);
12658
12659   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12660     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12661
12662   /* Set ADDR_STRING.  */
12663   *addr_string = sym_name;
12664
12665   /* Set OPS.  */
12666   *ops = ada_exception_breakpoint_ops (ex);
12667
12668   return find_function_start_sal (sym, 1);
12669 }
12670
12671 /* Create an Ada exception catchpoint.
12672
12673    EX_KIND is the kind of exception catchpoint to be created.
12674
12675    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12676    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12677    of the exception to which this catchpoint applies.
12678
12679    COND_STRING, if not empty, is the catchpoint condition.
12680
12681    TEMPFLAG, if nonzero, means that the underlying breakpoint
12682    should be temporary.
12683
12684    FROM_TTY is the usual argument passed to all commands implementations.  */
12685
12686 void
12687 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12688                                  enum ada_exception_catchpoint_kind ex_kind,
12689                                  const std::string &excep_string,
12690                                  const std::string &cond_string,
12691                                  int tempflag,
12692                                  int disabled,
12693                                  int from_tty)
12694 {
12695   std::string addr_string;
12696   const struct breakpoint_ops *ops = NULL;
12697   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12698
12699   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12700   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12701                                  ops, tempflag, disabled, from_tty);
12702   c->excep_string = excep_string;
12703   create_excep_cond_exprs (c.get (), ex_kind);
12704   if (!cond_string.empty ())
12705     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12706   install_breakpoint (0, std::move (c), 1);
12707 }
12708
12709 /* Implement the "catch exception" command.  */
12710
12711 static void
12712 catch_ada_exception_command (const char *arg_entry, int from_tty,
12713                              struct cmd_list_element *command)
12714 {
12715   const char *arg = arg_entry;
12716   struct gdbarch *gdbarch = get_current_arch ();
12717   int tempflag;
12718   enum ada_exception_catchpoint_kind ex_kind;
12719   std::string excep_string;
12720   std::string cond_string;
12721
12722   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12723
12724   if (!arg)
12725     arg = "";
12726   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12727                                      &cond_string);
12728   create_ada_exception_catchpoint (gdbarch, ex_kind,
12729                                    excep_string, cond_string,
12730                                    tempflag, 1 /* enabled */,
12731                                    from_tty);
12732 }
12733
12734 /* Implement the "catch handlers" command.  */
12735
12736 static void
12737 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12738                             struct cmd_list_element *command)
12739 {
12740   const char *arg = arg_entry;
12741   struct gdbarch *gdbarch = get_current_arch ();
12742   int tempflag;
12743   enum ada_exception_catchpoint_kind ex_kind;
12744   std::string excep_string;
12745   std::string cond_string;
12746
12747   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12748
12749   if (!arg)
12750     arg = "";
12751   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12752                                      &cond_string);
12753   create_ada_exception_catchpoint (gdbarch, ex_kind,
12754                                    excep_string, cond_string,
12755                                    tempflag, 1 /* enabled */,
12756                                    from_tty);
12757 }
12758
12759 /* Completion function for the Ada "catch" commands.  */
12760
12761 static void
12762 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12763                      const char *text, const char *word)
12764 {
12765   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12766
12767   for (const ada_exc_info &info : exceptions)
12768     {
12769       if (startswith (info.name, word))
12770         tracker.add_completion (make_unique_xstrdup (info.name));
12771     }
12772 }
12773
12774 /* Split the arguments specified in a "catch assert" command.
12775
12776    ARGS contains the command's arguments (or the empty string if
12777    no arguments were passed).
12778
12779    If ARGS contains a condition, set COND_STRING to that condition
12780    (the memory needs to be deallocated after use).  */
12781
12782 static void
12783 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12784 {
12785   args = skip_spaces (args);
12786
12787   /* Check whether a condition was provided.  */
12788   if (startswith (args, "if")
12789       && (isspace (args[2]) || args[2] == '\0'))
12790     {
12791       args += 2;
12792       args = skip_spaces (args);
12793       if (args[0] == '\0')
12794         error (_("condition missing after `if' keyword"));
12795       cond_string.assign (args);
12796     }
12797
12798   /* Otherwise, there should be no other argument at the end of
12799      the command.  */
12800   else if (args[0] != '\0')
12801     error (_("Junk at end of arguments."));
12802 }
12803
12804 /* Implement the "catch assert" command.  */
12805
12806 static void
12807 catch_assert_command (const char *arg_entry, int from_tty,
12808                       struct cmd_list_element *command)
12809 {
12810   const char *arg = arg_entry;
12811   struct gdbarch *gdbarch = get_current_arch ();
12812   int tempflag;
12813   std::string cond_string;
12814
12815   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12816
12817   if (!arg)
12818     arg = "";
12819   catch_ada_assert_command_split (arg, cond_string);
12820   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12821                                    "", cond_string,
12822                                    tempflag, 1 /* enabled */,
12823                                    from_tty);
12824 }
12825
12826 /* Return non-zero if the symbol SYM is an Ada exception object.  */
12827
12828 static int
12829 ada_is_exception_sym (struct symbol *sym)
12830 {
12831   const char *type_name = SYMBOL_TYPE (sym)->name ();
12832
12833   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12834           && SYMBOL_CLASS (sym) != LOC_BLOCK
12835           && SYMBOL_CLASS (sym) != LOC_CONST
12836           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12837           && type_name != NULL && strcmp (type_name, "exception") == 0);
12838 }
12839
12840 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12841    Ada exception object.  This matches all exceptions except the ones
12842    defined by the Ada language.  */
12843
12844 static int
12845 ada_is_non_standard_exception_sym (struct symbol *sym)
12846 {
12847   int i;
12848
12849   if (!ada_is_exception_sym (sym))
12850     return 0;
12851
12852   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12853     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
12854       return 0;  /* A standard exception.  */
12855
12856   /* Numeric_Error is also a standard exception, so exclude it.
12857      See the STANDARD_EXC description for more details as to why
12858      this exception is not listed in that array.  */
12859   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
12860     return 0;
12861
12862   return 1;
12863 }
12864
12865 /* A helper function for std::sort, comparing two struct ada_exc_info
12866    objects.
12867
12868    The comparison is determined first by exception name, and then
12869    by exception address.  */
12870
12871 bool
12872 ada_exc_info::operator< (const ada_exc_info &other) const
12873 {
12874   int result;
12875
12876   result = strcmp (name, other.name);
12877   if (result < 0)
12878     return true;
12879   if (result == 0 && addr < other.addr)
12880     return true;
12881   return false;
12882 }
12883
12884 bool
12885 ada_exc_info::operator== (const ada_exc_info &other) const
12886 {
12887   return addr == other.addr && strcmp (name, other.name) == 0;
12888 }
12889
12890 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12891    routine, but keeping the first SKIP elements untouched.
12892
12893    All duplicates are also removed.  */
12894
12895 static void
12896 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
12897                                       int skip)
12898 {
12899   std::sort (exceptions->begin () + skip, exceptions->end ());
12900   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
12901                      exceptions->end ());
12902 }
12903
12904 /* Add all exceptions defined by the Ada standard whose name match
12905    a regular expression.
12906
12907    If PREG is not NULL, then this regexp_t object is used to
12908    perform the symbol name matching.  Otherwise, no name-based
12909    filtering is performed.
12910
12911    EXCEPTIONS is a vector of exceptions to which matching exceptions
12912    gets pushed.  */
12913
12914 static void
12915 ada_add_standard_exceptions (compiled_regex *preg,
12916                              std::vector<ada_exc_info> *exceptions)
12917 {
12918   int i;
12919
12920   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12921     {
12922       if (preg == NULL
12923           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
12924         {
12925           struct bound_minimal_symbol msymbol
12926             = ada_lookup_simple_minsym (standard_exc[i]);
12927
12928           if (msymbol.minsym != NULL)
12929             {
12930               struct ada_exc_info info
12931                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12932
12933               exceptions->push_back (info);
12934             }
12935         }
12936     }
12937 }
12938
12939 /* Add all Ada exceptions defined locally and accessible from the given
12940    FRAME.
12941
12942    If PREG is not NULL, then this regexp_t object is used to
12943    perform the symbol name matching.  Otherwise, no name-based
12944    filtering is performed.
12945
12946    EXCEPTIONS is a vector of exceptions to which matching exceptions
12947    gets pushed.  */
12948
12949 static void
12950 ada_add_exceptions_from_frame (compiled_regex *preg,
12951                                struct frame_info *frame,
12952                                std::vector<ada_exc_info> *exceptions)
12953 {
12954   const struct block *block = get_frame_block (frame, 0);
12955
12956   while (block != 0)
12957     {
12958       struct block_iterator iter;
12959       struct symbol *sym;
12960
12961       ALL_BLOCK_SYMBOLS (block, iter, sym)
12962         {
12963           switch (SYMBOL_CLASS (sym))
12964             {
12965             case LOC_TYPEDEF:
12966             case LOC_BLOCK:
12967             case LOC_CONST:
12968               break;
12969             default:
12970               if (ada_is_exception_sym (sym))
12971                 {
12972                   struct ada_exc_info info = {sym->print_name (),
12973                                               SYMBOL_VALUE_ADDRESS (sym)};
12974
12975                   exceptions->push_back (info);
12976                 }
12977             }
12978         }
12979       if (BLOCK_FUNCTION (block) != NULL)
12980         break;
12981       block = BLOCK_SUPERBLOCK (block);
12982     }
12983 }
12984
12985 /* Return true if NAME matches PREG or if PREG is NULL.  */
12986
12987 static bool
12988 name_matches_regex (const char *name, compiled_regex *preg)
12989 {
12990   return (preg == NULL
12991           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
12992 }
12993
12994 /* Add all exceptions defined globally whose name name match
12995    a regular expression, excluding standard exceptions.
12996
12997    The reason we exclude standard exceptions is that they need
12998    to be handled separately: Standard exceptions are defined inside
12999    a runtime unit which is normally not compiled with debugging info,
13000    and thus usually do not show up in our symbol search.  However,
13001    if the unit was in fact built with debugging info, we need to
13002    exclude them because they would duplicate the entry we found
13003    during the special loop that specifically searches for those
13004    standard exceptions.
13005
13006    If PREG is not NULL, then this regexp_t object is used to
13007    perform the symbol name matching.  Otherwise, no name-based
13008    filtering is performed.
13009
13010    EXCEPTIONS is a vector of exceptions to which matching exceptions
13011    gets pushed.  */
13012
13013 static void
13014 ada_add_global_exceptions (compiled_regex *preg,
13015                            std::vector<ada_exc_info> *exceptions)
13016 {
13017   /* In Ada, the symbol "search name" is a linkage name, whereas the
13018      regular expression used to do the matching refers to the natural
13019      name.  So match against the decoded name.  */
13020   expand_symtabs_matching (NULL,
13021                            lookup_name_info::match_any (),
13022                            [&] (const char *search_name)
13023                            {
13024                              std::string decoded = ada_decode (search_name);
13025                              return name_matches_regex (decoded.c_str (), preg);
13026                            },
13027                            NULL,
13028                            VARIABLES_DOMAIN);
13029
13030   for (objfile *objfile : current_program_space->objfiles ())
13031     {
13032       for (compunit_symtab *s : objfile->compunits ())
13033         {
13034           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13035           int i;
13036
13037           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13038             {
13039               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13040               struct block_iterator iter;
13041               struct symbol *sym;
13042
13043               ALL_BLOCK_SYMBOLS (b, iter, sym)
13044                 if (ada_is_non_standard_exception_sym (sym)
13045                     && name_matches_regex (sym->natural_name (), preg))
13046                   {
13047                     struct ada_exc_info info
13048                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13049
13050                     exceptions->push_back (info);
13051                   }
13052             }
13053         }
13054     }
13055 }
13056
13057 /* Implements ada_exceptions_list with the regular expression passed
13058    as a regex_t, rather than a string.
13059
13060    If not NULL, PREG is used to filter out exceptions whose names
13061    do not match.  Otherwise, all exceptions are listed.  */
13062
13063 static std::vector<ada_exc_info>
13064 ada_exceptions_list_1 (compiled_regex *preg)
13065 {
13066   std::vector<ada_exc_info> result;
13067   int prev_len;
13068
13069   /* First, list the known standard exceptions.  These exceptions
13070      need to be handled separately, as they are usually defined in
13071      runtime units that have been compiled without debugging info.  */
13072
13073   ada_add_standard_exceptions (preg, &result);
13074
13075   /* Next, find all exceptions whose scope is local and accessible
13076      from the currently selected frame.  */
13077
13078   if (has_stack_frames ())
13079     {
13080       prev_len = result.size ();
13081       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13082                                      &result);
13083       if (result.size () > prev_len)
13084         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13085     }
13086
13087   /* Add all exceptions whose scope is global.  */
13088
13089   prev_len = result.size ();
13090   ada_add_global_exceptions (preg, &result);
13091   if (result.size () > prev_len)
13092     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13093
13094   return result;
13095 }
13096
13097 /* Return a vector of ada_exc_info.
13098
13099    If REGEXP is NULL, all exceptions are included in the result.
13100    Otherwise, it should contain a valid regular expression,
13101    and only the exceptions whose names match that regular expression
13102    are included in the result.
13103
13104    The exceptions are sorted in the following order:
13105      - Standard exceptions (defined by the Ada language), in
13106        alphabetical order;
13107      - Exceptions only visible from the current frame, in
13108        alphabetical order;
13109      - Exceptions whose scope is global, in alphabetical order.  */
13110
13111 std::vector<ada_exc_info>
13112 ada_exceptions_list (const char *regexp)
13113 {
13114   if (regexp == NULL)
13115     return ada_exceptions_list_1 (NULL);
13116
13117   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13118   return ada_exceptions_list_1 (&reg);
13119 }
13120
13121 /* Implement the "info exceptions" command.  */
13122
13123 static void
13124 info_exceptions_command (const char *regexp, int from_tty)
13125 {
13126   struct gdbarch *gdbarch = get_current_arch ();
13127
13128   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13129
13130   if (regexp != NULL)
13131     printf_filtered
13132       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13133   else
13134     printf_filtered (_("All defined Ada exceptions:\n"));
13135
13136   for (const ada_exc_info &info : exceptions)
13137     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13138 }
13139
13140                                 /* Operators */
13141 /* Information about operators given special treatment in functions
13142    below.  */
13143 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13144
13145 #define ADA_OPERATORS \
13146     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13147     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13148     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13149     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13150     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13151     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13152     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13153     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13154     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13155     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13156     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13157     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13158     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13159     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13160     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13161     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13162     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13163     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13164     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13165
13166 static void
13167 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13168                      int *argsp)
13169 {
13170   switch (exp->elts[pc - 1].opcode)
13171     {
13172     default:
13173       operator_length_standard (exp, pc, oplenp, argsp);
13174       break;
13175
13176 #define OP_DEFN(op, len, args, binop) \
13177     case op: *oplenp = len; *argsp = args; break;
13178       ADA_OPERATORS;
13179 #undef OP_DEFN
13180
13181     case OP_AGGREGATE:
13182       *oplenp = 3;
13183       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13184       break;
13185
13186     case OP_CHOICES:
13187       *oplenp = 3;
13188       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13189       break;
13190     }
13191 }
13192
13193 /* Implementation of the exp_descriptor method operator_check.  */
13194
13195 static int
13196 ada_operator_check (struct expression *exp, int pos,
13197                     int (*objfile_func) (struct objfile *objfile, void *data),
13198                     void *data)
13199 {
13200   const union exp_element *const elts = exp->elts;
13201   struct type *type = NULL;
13202
13203   switch (elts[pos].opcode)
13204     {
13205       case UNOP_IN_RANGE:
13206       case UNOP_QUAL:
13207         type = elts[pos + 1].type;
13208         break;
13209
13210       default:
13211         return operator_check_standard (exp, pos, objfile_func, data);
13212     }
13213
13214   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13215
13216   if (type && TYPE_OBJFILE (type)
13217       && (*objfile_func) (TYPE_OBJFILE (type), data))
13218     return 1;
13219
13220   return 0;
13221 }
13222
13223 static const char *
13224 ada_op_name (enum exp_opcode opcode)
13225 {
13226   switch (opcode)
13227     {
13228     default:
13229       return op_name_standard (opcode);
13230
13231 #define OP_DEFN(op, len, args, binop) case op: return #op;
13232       ADA_OPERATORS;
13233 #undef OP_DEFN
13234
13235     case OP_AGGREGATE:
13236       return "OP_AGGREGATE";
13237     case OP_CHOICES:
13238       return "OP_CHOICES";
13239     case OP_NAME:
13240       return "OP_NAME";
13241     }
13242 }
13243
13244 /* As for operator_length, but assumes PC is pointing at the first
13245    element of the operator, and gives meaningful results only for the 
13246    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13247
13248 static void
13249 ada_forward_operator_length (struct expression *exp, int pc,
13250                              int *oplenp, int *argsp)
13251 {
13252   switch (exp->elts[pc].opcode)
13253     {
13254     default:
13255       *oplenp = *argsp = 0;
13256       break;
13257
13258 #define OP_DEFN(op, len, args, binop) \
13259     case op: *oplenp = len; *argsp = args; break;
13260       ADA_OPERATORS;
13261 #undef OP_DEFN
13262
13263     case OP_AGGREGATE:
13264       *oplenp = 3;
13265       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13266       break;
13267
13268     case OP_CHOICES:
13269       *oplenp = 3;
13270       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13271       break;
13272
13273     case OP_STRING:
13274     case OP_NAME:
13275       {
13276         int len = longest_to_int (exp->elts[pc + 1].longconst);
13277
13278         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13279         *argsp = 0;
13280         break;
13281       }
13282     }
13283 }
13284
13285 static int
13286 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13287 {
13288   enum exp_opcode op = exp->elts[elt].opcode;
13289   int oplen, nargs;
13290   int pc = elt;
13291   int i;
13292
13293   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13294
13295   switch (op)
13296     {
13297       /* Ada attributes ('Foo).  */
13298     case OP_ATR_FIRST:
13299     case OP_ATR_LAST:
13300     case OP_ATR_LENGTH:
13301     case OP_ATR_IMAGE:
13302     case OP_ATR_MAX:
13303     case OP_ATR_MIN:
13304     case OP_ATR_MODULUS:
13305     case OP_ATR_POS:
13306     case OP_ATR_SIZE:
13307     case OP_ATR_TAG:
13308     case OP_ATR_VAL:
13309       break;
13310
13311     case UNOP_IN_RANGE:
13312     case UNOP_QUAL:
13313       /* XXX: gdb_sprint_host_address, type_sprint */
13314       fprintf_filtered (stream, _("Type @"));
13315       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13316       fprintf_filtered (stream, " (");
13317       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13318       fprintf_filtered (stream, ")");
13319       break;
13320     case BINOP_IN_BOUNDS:
13321       fprintf_filtered (stream, " (%d)",
13322                         longest_to_int (exp->elts[pc + 2].longconst));
13323       break;
13324     case TERNOP_IN_RANGE:
13325       break;
13326
13327     case OP_AGGREGATE:
13328     case OP_OTHERS:
13329     case OP_DISCRETE_RANGE:
13330     case OP_POSITIONAL:
13331     case OP_CHOICES:
13332       break;
13333
13334     case OP_NAME:
13335     case OP_STRING:
13336       {
13337         char *name = &exp->elts[elt + 2].string;
13338         int len = longest_to_int (exp->elts[elt + 1].longconst);
13339
13340         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13341         break;
13342       }
13343
13344     default:
13345       return dump_subexp_body_standard (exp, stream, elt);
13346     }
13347
13348   elt += oplen;
13349   for (i = 0; i < nargs; i += 1)
13350     elt = dump_subexp (exp, stream, elt);
13351
13352   return elt;
13353 }
13354
13355 /* The Ada extension of print_subexp (q.v.).  */
13356
13357 static void
13358 ada_print_subexp (struct expression *exp, int *pos,
13359                   struct ui_file *stream, enum precedence prec)
13360 {
13361   int oplen, nargs, i;
13362   int pc = *pos;
13363   enum exp_opcode op = exp->elts[pc].opcode;
13364
13365   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13366
13367   *pos += oplen;
13368   switch (op)
13369     {
13370     default:
13371       *pos -= oplen;
13372       print_subexp_standard (exp, pos, stream, prec);
13373       return;
13374
13375     case OP_VAR_VALUE:
13376       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13377       return;
13378
13379     case BINOP_IN_BOUNDS:
13380       /* XXX: sprint_subexp */
13381       print_subexp (exp, pos, stream, PREC_SUFFIX);
13382       fputs_filtered (" in ", stream);
13383       print_subexp (exp, pos, stream, PREC_SUFFIX);
13384       fputs_filtered ("'range", stream);
13385       if (exp->elts[pc + 1].longconst > 1)
13386         fprintf_filtered (stream, "(%ld)",
13387                           (long) exp->elts[pc + 1].longconst);
13388       return;
13389
13390     case TERNOP_IN_RANGE:
13391       if (prec >= PREC_EQUAL)
13392         fputs_filtered ("(", stream);
13393       /* XXX: sprint_subexp */
13394       print_subexp (exp, pos, stream, PREC_SUFFIX);
13395       fputs_filtered (" in ", stream);
13396       print_subexp (exp, pos, stream, PREC_EQUAL);
13397       fputs_filtered (" .. ", stream);
13398       print_subexp (exp, pos, stream, PREC_EQUAL);
13399       if (prec >= PREC_EQUAL)
13400         fputs_filtered (")", stream);
13401       return;
13402
13403     case OP_ATR_FIRST:
13404     case OP_ATR_LAST:
13405     case OP_ATR_LENGTH:
13406     case OP_ATR_IMAGE:
13407     case OP_ATR_MAX:
13408     case OP_ATR_MIN:
13409     case OP_ATR_MODULUS:
13410     case OP_ATR_POS:
13411     case OP_ATR_SIZE:
13412     case OP_ATR_TAG:
13413     case OP_ATR_VAL:
13414       if (exp->elts[*pos].opcode == OP_TYPE)
13415         {
13416           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13417             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13418                            &type_print_raw_options);
13419           *pos += 3;
13420         }
13421       else
13422         print_subexp (exp, pos, stream, PREC_SUFFIX);
13423       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13424       if (nargs > 1)
13425         {
13426           int tem;
13427
13428           for (tem = 1; tem < nargs; tem += 1)
13429             {
13430               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13431               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13432             }
13433           fputs_filtered (")", stream);
13434         }
13435       return;
13436
13437     case UNOP_QUAL:
13438       type_print (exp->elts[pc + 1].type, "", stream, 0);
13439       fputs_filtered ("'(", stream);
13440       print_subexp (exp, pos, stream, PREC_PREFIX);
13441       fputs_filtered (")", stream);
13442       return;
13443
13444     case UNOP_IN_RANGE:
13445       /* XXX: sprint_subexp */
13446       print_subexp (exp, pos, stream, PREC_SUFFIX);
13447       fputs_filtered (" in ", stream);
13448       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13449                      &type_print_raw_options);
13450       return;
13451
13452     case OP_DISCRETE_RANGE:
13453       print_subexp (exp, pos, stream, PREC_SUFFIX);
13454       fputs_filtered ("..", stream);
13455       print_subexp (exp, pos, stream, PREC_SUFFIX);
13456       return;
13457
13458     case OP_OTHERS:
13459       fputs_filtered ("others => ", stream);
13460       print_subexp (exp, pos, stream, PREC_SUFFIX);
13461       return;
13462
13463     case OP_CHOICES:
13464       for (i = 0; i < nargs-1; i += 1)
13465         {
13466           if (i > 0)
13467             fputs_filtered ("|", stream);
13468           print_subexp (exp, pos, stream, PREC_SUFFIX);
13469         }
13470       fputs_filtered (" => ", stream);
13471       print_subexp (exp, pos, stream, PREC_SUFFIX);
13472       return;
13473       
13474     case OP_POSITIONAL:
13475       print_subexp (exp, pos, stream, PREC_SUFFIX);
13476       return;
13477
13478     case OP_AGGREGATE:
13479       fputs_filtered ("(", stream);
13480       for (i = 0; i < nargs; i += 1)
13481         {
13482           if (i > 0)
13483             fputs_filtered (", ", stream);
13484           print_subexp (exp, pos, stream, PREC_SUFFIX);
13485         }
13486       fputs_filtered (")", stream);
13487       return;
13488     }
13489 }
13490
13491 /* Table mapping opcodes into strings for printing operators
13492    and precedences of the operators.  */
13493
13494 static const struct op_print ada_op_print_tab[] = {
13495   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13496   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13497   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13498   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13499   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13500   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13501   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13502   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13503   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13504   {">=", BINOP_GEQ, PREC_ORDER, 0},
13505   {">", BINOP_GTR, PREC_ORDER, 0},
13506   {"<", BINOP_LESS, PREC_ORDER, 0},
13507   {">>", BINOP_RSH, PREC_SHIFT, 0},
13508   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13509   {"+", BINOP_ADD, PREC_ADD, 0},
13510   {"-", BINOP_SUB, PREC_ADD, 0},
13511   {"&", BINOP_CONCAT, PREC_ADD, 0},
13512   {"*", BINOP_MUL, PREC_MUL, 0},
13513   {"/", BINOP_DIV, PREC_MUL, 0},
13514   {"rem", BINOP_REM, PREC_MUL, 0},
13515   {"mod", BINOP_MOD, PREC_MUL, 0},
13516   {"**", BINOP_EXP, PREC_REPEAT, 0},
13517   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13518   {"-", UNOP_NEG, PREC_PREFIX, 0},
13519   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13520   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13521   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13522   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13523   {".all", UNOP_IND, PREC_SUFFIX, 1},
13524   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13525   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13526   {NULL, OP_NULL, PREC_SUFFIX, 0}
13527 };
13528 \f
13529 enum ada_primitive_types {
13530   ada_primitive_type_int,
13531   ada_primitive_type_long,
13532   ada_primitive_type_short,
13533   ada_primitive_type_char,
13534   ada_primitive_type_float,
13535   ada_primitive_type_double,
13536   ada_primitive_type_void,
13537   ada_primitive_type_long_long,
13538   ada_primitive_type_long_double,
13539   ada_primitive_type_natural,
13540   ada_primitive_type_positive,
13541   ada_primitive_type_system_address,
13542   ada_primitive_type_storage_offset,
13543   nr_ada_primitive_types
13544 };
13545
13546 \f
13547                                 /* Language vector */
13548
13549 static const struct exp_descriptor ada_exp_descriptor = {
13550   ada_print_subexp,
13551   ada_operator_length,
13552   ada_operator_check,
13553   ada_op_name,
13554   ada_dump_subexp_body,
13555   ada_evaluate_subexp
13556 };
13557
13558 /* symbol_name_matcher_ftype adapter for wild_match.  */
13559
13560 static bool
13561 do_wild_match (const char *symbol_search_name,
13562                const lookup_name_info &lookup_name,
13563                completion_match_result *comp_match_res)
13564 {
13565   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13566 }
13567
13568 /* symbol_name_matcher_ftype adapter for full_match.  */
13569
13570 static bool
13571 do_full_match (const char *symbol_search_name,
13572                const lookup_name_info &lookup_name,
13573                completion_match_result *comp_match_res)
13574 {
13575   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13576 }
13577
13578 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13579
13580 static bool
13581 do_exact_match (const char *symbol_search_name,
13582                 const lookup_name_info &lookup_name,
13583                 completion_match_result *comp_match_res)
13584 {
13585   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13586 }
13587
13588 /* Build the Ada lookup name for LOOKUP_NAME.  */
13589
13590 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13591 {
13592   gdb::string_view user_name = lookup_name.name ();
13593
13594   if (user_name[0] == '<')
13595     {
13596       if (user_name.back () == '>')
13597         m_encoded_name
13598           = gdb::to_string (user_name.substr (1, user_name.size () - 2));
13599       else
13600         m_encoded_name
13601           = gdb::to_string (user_name.substr (1, user_name.size () - 1));
13602       m_encoded_p = true;
13603       m_verbatim_p = true;
13604       m_wild_match_p = false;
13605       m_standard_p = false;
13606     }
13607   else
13608     {
13609       m_verbatim_p = false;
13610
13611       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13612
13613       if (!m_encoded_p)
13614         {
13615           const char *folded = ada_fold_name (user_name);
13616           const char *encoded = ada_encode_1 (folded, false);
13617           if (encoded != NULL)
13618             m_encoded_name = encoded;
13619           else
13620             m_encoded_name = gdb::to_string (user_name);
13621         }
13622       else
13623         m_encoded_name = gdb::to_string (user_name);
13624
13625       /* Handle the 'package Standard' special case.  See description
13626          of m_standard_p.  */
13627       if (startswith (m_encoded_name.c_str (), "standard__"))
13628         {
13629           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13630           m_standard_p = true;
13631         }
13632       else
13633         m_standard_p = false;
13634
13635       /* If the name contains a ".", then the user is entering a fully
13636          qualified entity name, and the match must not be done in wild
13637          mode.  Similarly, if the user wants to complete what looks
13638          like an encoded name, the match must not be done in wild
13639          mode.  Also, in the standard__ special case always do
13640          non-wild matching.  */
13641       m_wild_match_p
13642         = (lookup_name.match_type () != symbol_name_match_type::FULL
13643            && !m_encoded_p
13644            && !m_standard_p
13645            && user_name.find ('.') == std::string::npos);
13646     }
13647 }
13648
13649 /* symbol_name_matcher_ftype method for Ada.  This only handles
13650    completion mode.  */
13651
13652 static bool
13653 ada_symbol_name_matches (const char *symbol_search_name,
13654                          const lookup_name_info &lookup_name,
13655                          completion_match_result *comp_match_res)
13656 {
13657   return lookup_name.ada ().matches (symbol_search_name,
13658                                      lookup_name.match_type (),
13659                                      comp_match_res);
13660 }
13661
13662 /* A name matcher that matches the symbol name exactly, with
13663    strcmp.  */
13664
13665 static bool
13666 literal_symbol_name_matcher (const char *symbol_search_name,
13667                              const lookup_name_info &lookup_name,
13668                              completion_match_result *comp_match_res)
13669 {
13670   gdb::string_view name_view = lookup_name.name ();
13671
13672   if (lookup_name.completion_mode ()
13673       ? (strncmp (symbol_search_name, name_view.data (),
13674                   name_view.size ()) == 0)
13675       : symbol_search_name == name_view)
13676     {
13677       if (comp_match_res != NULL)
13678         comp_match_res->set_match (symbol_search_name);
13679       return true;
13680     }
13681   else
13682     return false;
13683 }
13684
13685 /* Implement the "get_symbol_name_matcher" language_defn method for
13686    Ada.  */
13687
13688 static symbol_name_matcher_ftype *
13689 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13690 {
13691   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13692     return literal_symbol_name_matcher;
13693
13694   if (lookup_name.completion_mode ())
13695     return ada_symbol_name_matches;
13696   else
13697     {
13698       if (lookup_name.ada ().wild_match_p ())
13699         return do_wild_match;
13700       else if (lookup_name.ada ().verbatim_p ())
13701         return do_exact_match;
13702       else
13703         return do_full_match;
13704     }
13705 }
13706
13707 static const char *ada_extensions[] =
13708 {
13709   ".adb", ".ads", ".a", ".ada", ".dg", NULL
13710 };
13711
13712 /* Constant data that describes the Ada language.  */
13713
13714 extern const struct language_data ada_language_data =
13715 {
13716   "ada",                        /* Language name */
13717   "Ada",
13718   language_ada,
13719   range_check_off,
13720   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13721                                    that's not quite what this means.  */
13722   array_row_major,
13723   macro_expansion_no,
13724   ada_extensions,
13725   &ada_exp_descriptor,
13726   NULL,                         /* name_of_this */
13727   true,                         /* la_store_sym_names_in_linkage_form_p */
13728   ada_op_print_tab,             /* expression operators for printing */
13729   0,                            /* c-style arrays */
13730   1,                            /* String lower bound */
13731   &ada_varobj_ops,
13732   "(...)"                       /* la_struct_too_deep_ellipsis */
13733 };
13734
13735 /* Class representing the Ada language.  */
13736
13737 class ada_language : public language_defn
13738 {
13739 public:
13740   ada_language ()
13741     : language_defn (language_ada, ada_language_data)
13742   { /* Nothing.  */ }
13743
13744   /* Print an array element index using the Ada syntax.  */
13745
13746   void print_array_index (struct type *index_type,
13747                           LONGEST index,
13748                           struct ui_file *stream,
13749                           const value_print_options *options) const override
13750   {
13751     struct value *index_value = val_atr (index_type, index);
13752
13753     LA_VALUE_PRINT (index_value, stream, options);
13754     fprintf_filtered (stream, " => ");
13755   }
13756
13757   /* Implement the "read_var_value" language_defn method for Ada.  */
13758
13759   struct value *read_var_value (struct symbol *var,
13760                                 const struct block *var_block,
13761                                 struct frame_info *frame) const override
13762   {
13763     /* The only case where default_read_var_value is not sufficient
13764        is when VAR is a renaming...  */
13765     if (frame != nullptr)
13766       {
13767         const struct block *frame_block = get_frame_block (frame, NULL);
13768         if (frame_block != nullptr && ada_is_renaming_symbol (var))
13769           return ada_read_renaming_var_value (var, frame_block);
13770       }
13771
13772     /* This is a typical case where we expect the default_read_var_value
13773        function to work.  */
13774     return language_defn::read_var_value (var, var_block, frame);
13775   }
13776
13777   /* See language.h.  */
13778   void language_arch_info (struct gdbarch *gdbarch,
13779                            struct language_arch_info *lai) const override
13780   {
13781     const struct builtin_type *builtin = builtin_type (gdbarch);
13782
13783     lai->primitive_type_vector
13784       = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13785                                 struct type *);
13786
13787     lai->primitive_type_vector [ada_primitive_type_int]
13788       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13789                            0, "integer");
13790     lai->primitive_type_vector [ada_primitive_type_long]
13791       = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13792                            0, "long_integer");
13793     lai->primitive_type_vector [ada_primitive_type_short]
13794       = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13795                            0, "short_integer");
13796     lai->string_char_type
13797       = lai->primitive_type_vector [ada_primitive_type_char]
13798       = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13799     lai->primitive_type_vector [ada_primitive_type_float]
13800       = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13801                          "float", gdbarch_float_format (gdbarch));
13802     lai->primitive_type_vector [ada_primitive_type_double]
13803       = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13804                          "long_float", gdbarch_double_format (gdbarch));
13805     lai->primitive_type_vector [ada_primitive_type_long_long]
13806       = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13807                            0, "long_long_integer");
13808     lai->primitive_type_vector [ada_primitive_type_long_double]
13809       = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13810                          "long_long_float", gdbarch_long_double_format (gdbarch));
13811     lai->primitive_type_vector [ada_primitive_type_natural]
13812       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13813                            0, "natural");
13814     lai->primitive_type_vector [ada_primitive_type_positive]
13815       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13816                            0, "positive");
13817     lai->primitive_type_vector [ada_primitive_type_void]
13818       = builtin->builtin_void;
13819
13820     lai->primitive_type_vector [ada_primitive_type_system_address]
13821       = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13822                                         "void"));
13823     lai->primitive_type_vector [ada_primitive_type_system_address]
13824       ->set_name ("system__address");
13825
13826     /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13827        type.  This is a signed integral type whose size is the same as
13828        the size of addresses.  */
13829     {
13830       unsigned int addr_length = TYPE_LENGTH
13831         (lai->primitive_type_vector [ada_primitive_type_system_address]);
13832
13833       lai->primitive_type_vector [ada_primitive_type_storage_offset]
13834         = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13835                              "storage_offset");
13836     }
13837
13838     lai->bool_type_symbol = NULL;
13839     lai->bool_type_default = builtin->builtin_bool;
13840   }
13841
13842   /* See language.h.  */
13843
13844   bool iterate_over_symbols
13845         (const struct block *block, const lookup_name_info &name,
13846          domain_enum domain,
13847          gdb::function_view<symbol_found_callback_ftype> callback) const override
13848   {
13849     std::vector<struct block_symbol> results;
13850
13851     ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
13852     for (block_symbol &sym : results)
13853       {
13854         if (!callback (&sym))
13855           return false;
13856       }
13857
13858     return true;
13859   }
13860
13861   /* See language.h.  */
13862   bool sniff_from_mangled_name (const char *mangled,
13863                                 char **out) const override
13864   {
13865     std::string demangled = ada_decode (mangled);
13866
13867     *out = NULL;
13868
13869     if (demangled != mangled && demangled[0] != '<')
13870       {
13871         /* Set the gsymbol language to Ada, but still return 0.
13872            Two reasons for that:
13873
13874            1. For Ada, we prefer computing the symbol's decoded name
13875            on the fly rather than pre-compute it, in order to save
13876            memory (Ada projects are typically very large).
13877
13878            2. There are some areas in the definition of the GNAT
13879            encoding where, with a bit of bad luck, we might be able
13880            to decode a non-Ada symbol, generating an incorrect
13881            demangled name (Eg: names ending with "TB" for instance
13882            are identified as task bodies and so stripped from
13883            the decoded name returned).
13884
13885            Returning true, here, but not setting *DEMANGLED, helps us get
13886            a little bit of the best of both worlds.  Because we're last,
13887            we should not affect any of the other languages that were
13888            able to demangle the symbol before us; we get to correctly
13889            tag Ada symbols as such; and even if we incorrectly tagged a
13890            non-Ada symbol, which should be rare, any routing through the
13891            Ada language should be transparent (Ada tries to behave much
13892            like C/C++ with non-Ada symbols).  */
13893         return true;
13894       }
13895
13896     return false;
13897   }
13898
13899   /* See language.h.  */
13900
13901   char *demangle (const char *mangled, int options) const override
13902   {
13903     return ada_la_decode (mangled, options);
13904   }
13905
13906   /* See language.h.  */
13907
13908   void print_type (struct type *type, const char *varstring,
13909                    struct ui_file *stream, int show, int level,
13910                    const struct type_print_options *flags) const override
13911   {
13912     ada_print_type (type, varstring, stream, show, level, flags);
13913   }
13914
13915   /* See language.h.  */
13916
13917   const char *word_break_characters (void) const override
13918   {
13919     return ada_completer_word_break_characters;
13920   }
13921
13922   /* See language.h.  */
13923
13924   void collect_symbol_completion_matches (completion_tracker &tracker,
13925                                           complete_symbol_mode mode,
13926                                           symbol_name_match_type name_match_type,
13927                                           const char *text, const char *word,
13928                                           enum type_code code) const override
13929   {
13930     struct symbol *sym;
13931     const struct block *b, *surrounding_static_block = 0;
13932     struct block_iterator iter;
13933
13934     gdb_assert (code == TYPE_CODE_UNDEF);
13935
13936     lookup_name_info lookup_name (text, name_match_type, true);
13937
13938     /* First, look at the partial symtab symbols.  */
13939     expand_symtabs_matching (NULL,
13940                              lookup_name,
13941                              NULL,
13942                              NULL,
13943                              ALL_DOMAIN);
13944
13945     /* At this point scan through the misc symbol vectors and add each
13946        symbol you find to the list.  Eventually we want to ignore
13947        anything that isn't a text symbol (everything else will be
13948        handled by the psymtab code above).  */
13949
13950     for (objfile *objfile : current_program_space->objfiles ())
13951       {
13952         for (minimal_symbol *msymbol : objfile->msymbols ())
13953           {
13954             QUIT;
13955
13956             if (completion_skip_symbol (mode, msymbol))
13957               continue;
13958
13959             language symbol_language = msymbol->language ();
13960
13961             /* Ada minimal symbols won't have their language set to Ada.  If
13962                we let completion_list_add_name compare using the
13963                default/C-like matcher, then when completing e.g., symbols in a
13964                package named "pck", we'd match internal Ada symbols like
13965                "pckS", which are invalid in an Ada expression, unless you wrap
13966                them in '<' '>' to request a verbatim match.
13967
13968                Unfortunately, some Ada encoded names successfully demangle as
13969                C++ symbols (using an old mangling scheme), such as "name__2Xn"
13970                -> "Xn::name(void)" and thus some Ada minimal symbols end up
13971                with the wrong language set.  Paper over that issue here.  */
13972             if (symbol_language == language_auto
13973                 || symbol_language == language_cplus)
13974               symbol_language = language_ada;
13975
13976             completion_list_add_name (tracker,
13977                                       symbol_language,
13978                                       msymbol->linkage_name (),
13979                                       lookup_name, text, word);
13980           }
13981       }
13982
13983     /* Search upwards from currently selected frame (so that we can
13984        complete on local vars.  */
13985
13986     for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
13987       {
13988         if (!BLOCK_SUPERBLOCK (b))
13989           surrounding_static_block = b;   /* For elmin of dups */
13990
13991         ALL_BLOCK_SYMBOLS (b, iter, sym)
13992           {
13993             if (completion_skip_symbol (mode, sym))
13994               continue;
13995
13996             completion_list_add_name (tracker,
13997                                       sym->language (),
13998                                       sym->linkage_name (),
13999                                       lookup_name, text, word);
14000           }
14001       }
14002
14003     /* Go through the symtabs and check the externs and statics for
14004        symbols which match.  */
14005
14006     for (objfile *objfile : current_program_space->objfiles ())
14007       {
14008         for (compunit_symtab *s : objfile->compunits ())
14009           {
14010             QUIT;
14011             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
14012             ALL_BLOCK_SYMBOLS (b, iter, sym)
14013               {
14014                 if (completion_skip_symbol (mode, sym))
14015                   continue;
14016
14017                 completion_list_add_name (tracker,
14018                                           sym->language (),
14019                                           sym->linkage_name (),
14020                                           lookup_name, text, word);
14021               }
14022           }
14023       }
14024
14025     for (objfile *objfile : current_program_space->objfiles ())
14026       {
14027         for (compunit_symtab *s : objfile->compunits ())
14028           {
14029             QUIT;
14030             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
14031             /* Don't do this block twice.  */
14032             if (b == surrounding_static_block)
14033               continue;
14034             ALL_BLOCK_SYMBOLS (b, iter, sym)
14035               {
14036                 if (completion_skip_symbol (mode, sym))
14037                   continue;
14038
14039                 completion_list_add_name (tracker,
14040                                           sym->language (),
14041                                           sym->linkage_name (),
14042                                           lookup_name, text, word);
14043               }
14044           }
14045       }
14046   }
14047
14048   /* See language.h.  */
14049
14050   gdb::unique_xmalloc_ptr<char> watch_location_expression
14051         (struct type *type, CORE_ADDR addr) const override
14052   {
14053     type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
14054     std::string name = type_to_string (type);
14055     return gdb::unique_xmalloc_ptr<char>
14056       (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
14057   }
14058
14059   /* See language.h.  */
14060
14061   void value_print (struct value *val, struct ui_file *stream,
14062                     const struct value_print_options *options) const override
14063   {
14064     return ada_value_print (val, stream, options);
14065   }
14066
14067   /* See language.h.  */
14068
14069   void value_print_inner
14070         (struct value *val, struct ui_file *stream, int recurse,
14071          const struct value_print_options *options) const override
14072   {
14073     return ada_value_print_inner (val, stream, recurse, options);
14074   }
14075
14076   /* See language.h.  */
14077
14078   struct block_symbol lookup_symbol_nonlocal
14079         (const char *name, const struct block *block,
14080          const domain_enum domain) const override
14081   {
14082     struct block_symbol sym;
14083
14084     sym = ada_lookup_symbol (name, block_static_block (block), domain);
14085     if (sym.symbol != NULL)
14086       return sym;
14087
14088     /* If we haven't found a match at this point, try the primitive
14089        types.  In other languages, this search is performed before
14090        searching for global symbols in order to short-circuit that
14091        global-symbol search if it happens that the name corresponds
14092        to a primitive type.  But we cannot do the same in Ada, because
14093        it is perfectly legitimate for a program to declare a type which
14094        has the same name as a standard type.  If looking up a type in
14095        that situation, we have traditionally ignored the primitive type
14096        in favor of user-defined types.  This is why, unlike most other
14097        languages, we search the primitive types this late and only after
14098        having searched the global symbols without success.  */
14099
14100     if (domain == VAR_DOMAIN)
14101       {
14102         struct gdbarch *gdbarch;
14103
14104         if (block == NULL)
14105           gdbarch = target_gdbarch ();
14106         else
14107           gdbarch = block_gdbarch (block);
14108         sym.symbol
14109           = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
14110         if (sym.symbol != NULL)
14111           return sym;
14112       }
14113
14114     return {};
14115   }
14116
14117   /* See language.h.  */
14118
14119   int parser (struct parser_state *ps) const override
14120   {
14121     warnings_issued = 0;
14122     return ada_parse (ps);
14123   }
14124
14125   /* See language.h.
14126
14127      Same as evaluate_type (*EXP), but resolves ambiguous symbol references
14128      (marked by OP_VAR_VALUE nodes in which the symbol has an undefined
14129      namespace) and converts operators that are user-defined into
14130      appropriate function calls.  If CONTEXT_TYPE is non-null, it provides
14131      a preferred result type [at the moment, only type void has any
14132      effect---causing procedures to be preferred over functions in calls].
14133      A null CONTEXT_TYPE indicates that a non-void return type is
14134      preferred.  May change (expand) *EXP.  */
14135
14136   void post_parser (expression_up *expp, int void_context_p, int completing,
14137                     innermost_block_tracker *tracker) const override
14138   {
14139     struct type *context_type = NULL;
14140     int pc = 0;
14141
14142     if (void_context_p)
14143       context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
14144
14145     resolve_subexp (expp, &pc, 1, context_type, completing, tracker);
14146   }
14147
14148   /* See language.h.  */
14149
14150   void emitchar (int ch, struct type *chtype,
14151                  struct ui_file *stream, int quoter) const override
14152   {
14153     ada_emit_char (ch, chtype, stream, quoter, 1);
14154   }
14155
14156   /* See language.h.  */
14157
14158   void printchar (int ch, struct type *chtype,
14159                   struct ui_file *stream) const override
14160   {
14161     ada_printchar (ch, chtype, stream);
14162   }
14163
14164   /* See language.h.  */
14165
14166   void printstr (struct ui_file *stream, struct type *elttype,
14167                  const gdb_byte *string, unsigned int length,
14168                  const char *encoding, int force_ellipses,
14169                  const struct value_print_options *options) const override
14170   {
14171     ada_printstr (stream, elttype, string, length, encoding,
14172                   force_ellipses, options);
14173   }
14174
14175   /* See language.h.  */
14176
14177   void print_typedef (struct type *type, struct symbol *new_symbol,
14178                       struct ui_file *stream) const override
14179   {
14180     ada_print_typedef (type, new_symbol, stream);
14181   }
14182
14183   /* See language.h.  */
14184
14185   bool is_string_type_p (struct type *type) const override
14186   {
14187     return ada_is_string_type (type);
14188   }
14189
14190
14191 protected:
14192   /* See language.h.  */
14193
14194   symbol_name_matcher_ftype *get_symbol_name_matcher_inner
14195         (const lookup_name_info &lookup_name) const override
14196   {
14197     return ada_get_symbol_name_matcher (lookup_name);
14198   }
14199 };
14200
14201 /* Single instance of the Ada language class.  */
14202
14203 static ada_language ada_language_defn;
14204
14205 /* Command-list for the "set/show ada" prefix command.  */
14206 static struct cmd_list_element *set_ada_list;
14207 static struct cmd_list_element *show_ada_list;
14208
14209 static void
14210 initialize_ada_catchpoint_ops (void)
14211 {
14212   struct breakpoint_ops *ops;
14213
14214   initialize_breakpoint_ops ();
14215
14216   ops = &catch_exception_breakpoint_ops;
14217   *ops = bkpt_breakpoint_ops;
14218   ops->allocate_location = allocate_location_exception;
14219   ops->re_set = re_set_exception;
14220   ops->check_status = check_status_exception;
14221   ops->print_it = print_it_exception;
14222   ops->print_one = print_one_exception;
14223   ops->print_mention = print_mention_exception;
14224   ops->print_recreate = print_recreate_exception;
14225
14226   ops = &catch_exception_unhandled_breakpoint_ops;
14227   *ops = bkpt_breakpoint_ops;
14228   ops->allocate_location = allocate_location_exception;
14229   ops->re_set = re_set_exception;
14230   ops->check_status = check_status_exception;
14231   ops->print_it = print_it_exception;
14232   ops->print_one = print_one_exception;
14233   ops->print_mention = print_mention_exception;
14234   ops->print_recreate = print_recreate_exception;
14235
14236   ops = &catch_assert_breakpoint_ops;
14237   *ops = bkpt_breakpoint_ops;
14238   ops->allocate_location = allocate_location_exception;
14239   ops->re_set = re_set_exception;
14240   ops->check_status = check_status_exception;
14241   ops->print_it = print_it_exception;
14242   ops->print_one = print_one_exception;
14243   ops->print_mention = print_mention_exception;
14244   ops->print_recreate = print_recreate_exception;
14245
14246   ops = &catch_handlers_breakpoint_ops;
14247   *ops = bkpt_breakpoint_ops;
14248   ops->allocate_location = allocate_location_exception;
14249   ops->re_set = re_set_exception;
14250   ops->check_status = check_status_exception;
14251   ops->print_it = print_it_exception;
14252   ops->print_one = print_one_exception;
14253   ops->print_mention = print_mention_exception;
14254   ops->print_recreate = print_recreate_exception;
14255 }
14256
14257 /* This module's 'new_objfile' observer.  */
14258
14259 static void
14260 ada_new_objfile_observer (struct objfile *objfile)
14261 {
14262   ada_clear_symbol_cache ();
14263 }
14264
14265 /* This module's 'free_objfile' observer.  */
14266
14267 static void
14268 ada_free_objfile_observer (struct objfile *objfile)
14269 {
14270   ada_clear_symbol_cache ();
14271 }
14272
14273 void _initialize_ada_language ();
14274 void
14275 _initialize_ada_language ()
14276 {
14277   initialize_ada_catchpoint_ops ();
14278
14279   add_basic_prefix_cmd ("ada", no_class,
14280                         _("Prefix command for changing Ada-specific settings."),
14281                         &set_ada_list, "set ada ", 0, &setlist);
14282
14283   add_show_prefix_cmd ("ada", no_class,
14284                        _("Generic command for showing Ada-specific settings."),
14285                        &show_ada_list, "show ada ", 0, &showlist);
14286
14287   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14288                            &trust_pad_over_xvs, _("\
14289 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14290 Show whether an optimization trusting PAD types over XVS types is activated."),
14291                            _("\
14292 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14293 should normally trust the contents of PAD types, but certain older versions\n\
14294 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14295 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14296 work around this bug.  It is always safe to turn this option \"off\", but\n\
14297 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14298 this option to \"off\" unless necessary."),
14299                             NULL, NULL, &set_ada_list, &show_ada_list);
14300
14301   add_setshow_boolean_cmd ("print-signatures", class_vars,
14302                            &print_signatures, _("\
14303 Enable or disable the output of formal and return types for functions in the \
14304 overloads selection menu."), _("\
14305 Show whether the output of formal and return types for functions in the \
14306 overloads selection menu is activated."),
14307                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14308
14309   add_catch_command ("exception", _("\
14310 Catch Ada exceptions, when raised.\n\
14311 Usage: catch exception [ARG] [if CONDITION]\n\
14312 Without any argument, stop when any Ada exception is raised.\n\
14313 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14314 being raised does not have a handler (and will therefore lead to the task's\n\
14315 termination).\n\
14316 Otherwise, the catchpoint only stops when the name of the exception being\n\
14317 raised is the same as ARG.\n\
14318 CONDITION is a boolean expression that is evaluated to see whether the\n\
14319 exception should cause a stop."),
14320                      catch_ada_exception_command,
14321                      catch_ada_completer,
14322                      CATCH_PERMANENT,
14323                      CATCH_TEMPORARY);
14324
14325   add_catch_command ("handlers", _("\
14326 Catch Ada exceptions, when handled.\n\
14327 Usage: catch handlers [ARG] [if CONDITION]\n\
14328 Without any argument, stop when any Ada exception is handled.\n\
14329 With an argument, catch only exceptions with the given name.\n\
14330 CONDITION is a boolean expression that is evaluated to see whether the\n\
14331 exception should cause a stop."),
14332                      catch_ada_handlers_command,
14333                      catch_ada_completer,
14334                      CATCH_PERMANENT,
14335                      CATCH_TEMPORARY);
14336   add_catch_command ("assert", _("\
14337 Catch failed Ada assertions, when raised.\n\
14338 Usage: catch assert [if CONDITION]\n\
14339 CONDITION is a boolean expression that is evaluated to see whether the\n\
14340 exception should cause a stop."),
14341                      catch_assert_command,
14342                      NULL,
14343                      CATCH_PERMANENT,
14344                      CATCH_TEMPORARY);
14345
14346   varsize_limit = 65536;
14347   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14348                             &varsize_limit, _("\
14349 Set the maximum number of bytes allowed in a variable-size object."), _("\
14350 Show the maximum number of bytes allowed in a variable-size object."), _("\
14351 Attempts to access an object whose size is not a compile-time constant\n\
14352 and exceeds this limit will cause an error."),
14353                             NULL, NULL, &setlist, &showlist);
14354
14355   add_info ("exceptions", info_exceptions_command,
14356             _("\
14357 List all Ada exception names.\n\
14358 Usage: info exceptions [REGEXP]\n\
14359 If a regular expression is passed as an argument, only those matching\n\
14360 the regular expression are listed."));
14361
14362   add_basic_prefix_cmd ("ada", class_maintenance,
14363                         _("Set Ada maintenance-related variables."),
14364                         &maint_set_ada_cmdlist, "maintenance set ada ",
14365                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14366
14367   add_show_prefix_cmd ("ada", class_maintenance,
14368                        _("Show Ada maintenance-related variables."),
14369                        &maint_show_ada_cmdlist, "maintenance show ada ",
14370                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14371
14372   add_setshow_boolean_cmd
14373     ("ignore-descriptive-types", class_maintenance,
14374      &ada_ignore_descriptive_types_p,
14375      _("Set whether descriptive types generated by GNAT should be ignored."),
14376      _("Show whether descriptive types generated by GNAT should be ignored."),
14377      _("\
14378 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14379 DWARF attribute."),
14380      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14381
14382   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14383                                            NULL, xcalloc, xfree);
14384
14385   /* The ada-lang observers.  */
14386   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14387   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14388   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14389 }
This page took 0.850105 seconds and 4 git commands to generate.