]> Git Repo - binutils.git/blob - gdb/ada-lang.c
3d85a5a014d4692973b0f7b09d8d10651109e0c8
[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 (TYPE_UNSIGNED (t))
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 (TYPE_UNSIGNED (t)) 
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       return type->bounds ()->high.const_val ();
729     case TYPE_CODE_ENUM:
730       return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
731     case TYPE_CODE_BOOL:
732       return 1;
733     case TYPE_CODE_CHAR:
734     case TYPE_CODE_INT:
735       return max_of_type (type);
736     default:
737       error (_("Unexpected type in ada_discrete_type_high_bound."));
738     }
739 }
740
741 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
742 LONGEST
743 ada_discrete_type_low_bound (struct type *type)
744 {
745   type = resolve_dynamic_type (type, {}, 0);
746   switch (type->code ())
747     {
748     case TYPE_CODE_RANGE:
749       return type->bounds ()->low.const_val ();
750     case TYPE_CODE_ENUM:
751       return TYPE_FIELD_ENUMVAL (type, 0);
752     case TYPE_CODE_BOOL:
753       return 0;
754     case TYPE_CODE_CHAR:
755     case TYPE_CODE_INT:
756       return min_of_type (type);
757     default:
758       error (_("Unexpected type in ada_discrete_type_low_bound."));
759     }
760 }
761
762 /* The identity on non-range types.  For range types, the underlying
763    non-range scalar type.  */
764
765 static struct type *
766 get_base_type (struct type *type)
767 {
768   while (type != NULL && type->code () == TYPE_CODE_RANGE)
769     {
770       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
771         return type;
772       type = TYPE_TARGET_TYPE (type);
773     }
774   return type;
775 }
776
777 /* Return a decoded version of the given VALUE.  This means returning
778    a value whose type is obtained by applying all the GNAT-specific
779    encodings, making the resulting type a static but standard description
780    of the initial type.  */
781
782 struct value *
783 ada_get_decoded_value (struct value *value)
784 {
785   struct type *type = ada_check_typedef (value_type (value));
786
787   if (ada_is_array_descriptor_type (type)
788       || (ada_is_constrained_packed_array_type (type)
789           && type->code () != TYPE_CODE_PTR))
790     {
791       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
792         value = ada_coerce_to_simple_array_ptr (value);
793       else
794         value = ada_coerce_to_simple_array (value);
795     }
796   else
797     value = ada_to_fixed_value (value);
798
799   return value;
800 }
801
802 /* Same as ada_get_decoded_value, but with the given TYPE.
803    Because there is no associated actual value for this type,
804    the resulting type might be a best-effort approximation in
805    the case of dynamic types.  */
806
807 struct type *
808 ada_get_decoded_type (struct type *type)
809 {
810   type = to_static_fixed_type (type);
811   if (ada_is_constrained_packed_array_type (type))
812     type = ada_coerce_to_simple_array_type (type);
813   return type;
814 }
815
816 \f
817
818                                 /* Language Selection */
819
820 /* If the main program is in Ada, return language_ada, otherwise return LANG
821    (the main program is in Ada iif the adainit symbol is found).  */
822
823 static enum language
824 ada_update_initial_language (enum language lang)
825 {
826   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
827     return language_ada;
828
829   return lang;
830 }
831
832 /* If the main procedure is written in Ada, then return its name.
833    The result is good until the next call.  Return NULL if the main
834    procedure doesn't appear to be in Ada.  */
835
836 char *
837 ada_main_name (void)
838 {
839   struct bound_minimal_symbol msym;
840   static gdb::unique_xmalloc_ptr<char> main_program_name;
841
842   /* For Ada, the name of the main procedure is stored in a specific
843      string constant, generated by the binder.  Look for that symbol,
844      extract its address, and then read that string.  If we didn't find
845      that string, then most probably the main procedure is not written
846      in Ada.  */
847   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
848
849   if (msym.minsym != NULL)
850     {
851       CORE_ADDR main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
852       if (main_program_name_addr == 0)
853         error (_("Invalid address for Ada main program name."));
854
855       main_program_name = target_read_string (main_program_name_addr, 1024);
856       return main_program_name.get ();
857     }
858
859   /* The main procedure doesn't seem to be in Ada.  */
860   return NULL;
861 }
862 \f
863                                 /* Symbols */
864
865 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
866    of NULLs.  */
867
868 const struct ada_opname_map ada_opname_table[] = {
869   {"Oadd", "\"+\"", BINOP_ADD},
870   {"Osubtract", "\"-\"", BINOP_SUB},
871   {"Omultiply", "\"*\"", BINOP_MUL},
872   {"Odivide", "\"/\"", BINOP_DIV},
873   {"Omod", "\"mod\"", BINOP_MOD},
874   {"Orem", "\"rem\"", BINOP_REM},
875   {"Oexpon", "\"**\"", BINOP_EXP},
876   {"Olt", "\"<\"", BINOP_LESS},
877   {"Ole", "\"<=\"", BINOP_LEQ},
878   {"Ogt", "\">\"", BINOP_GTR},
879   {"Oge", "\">=\"", BINOP_GEQ},
880   {"Oeq", "\"=\"", BINOP_EQUAL},
881   {"One", "\"/=\"", BINOP_NOTEQUAL},
882   {"Oand", "\"and\"", BINOP_BITWISE_AND},
883   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
884   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
885   {"Oconcat", "\"&\"", BINOP_CONCAT},
886   {"Oabs", "\"abs\"", UNOP_ABS},
887   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
888   {"Oadd", "\"+\"", UNOP_PLUS},
889   {"Osubtract", "\"-\"", UNOP_NEG},
890   {NULL, NULL}
891 };
892
893 /* The "encoded" form of DECODED, according to GNAT conventions.  The
894    result is valid until the next call to ada_encode.  If
895    THROW_ERRORS, throw an error if invalid operator name is found.
896    Otherwise, return NULL in that case.  */
897
898 static char *
899 ada_encode_1 (const char *decoded, bool throw_errors)
900 {
901   static char *encoding_buffer = NULL;
902   static size_t encoding_buffer_size = 0;
903   const char *p;
904   int k;
905
906   if (decoded == NULL)
907     return NULL;
908
909   GROW_VECT (encoding_buffer, encoding_buffer_size,
910              2 * strlen (decoded) + 10);
911
912   k = 0;
913   for (p = decoded; *p != '\0'; p += 1)
914     {
915       if (*p == '.')
916         {
917           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
918           k += 2;
919         }
920       else if (*p == '"')
921         {
922           const struct ada_opname_map *mapping;
923
924           for (mapping = ada_opname_table;
925                mapping->encoded != NULL
926                && !startswith (p, mapping->decoded); mapping += 1)
927             ;
928           if (mapping->encoded == NULL)
929             {
930               if (throw_errors)
931                 error (_("invalid Ada operator name: %s"), p);
932               else
933                 return NULL;
934             }
935           strcpy (encoding_buffer + k, mapping->encoded);
936           k += strlen (mapping->encoded);
937           break;
938         }
939       else
940         {
941           encoding_buffer[k] = *p;
942           k += 1;
943         }
944     }
945
946   encoding_buffer[k] = '\0';
947   return encoding_buffer;
948 }
949
950 /* The "encoded" form of DECODED, according to GNAT conventions.
951    The result is valid until the next call to ada_encode.  */
952
953 char *
954 ada_encode (const char *decoded)
955 {
956   return ada_encode_1 (decoded, true);
957 }
958
959 /* Return NAME folded to lower case, or, if surrounded by single
960    quotes, unfolded, but with the quotes stripped away.  Result good
961    to next call.  */
962
963 static char *
964 ada_fold_name (gdb::string_view name)
965 {
966   static char *fold_buffer = NULL;
967   static size_t fold_buffer_size = 0;
968
969   int len = name.size ();
970   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
971
972   if (name[0] == '\'')
973     {
974       strncpy (fold_buffer, name.data () + 1, len - 2);
975       fold_buffer[len - 2] = '\000';
976     }
977   else
978     {
979       int i;
980
981       for (i = 0; i <= len; i += 1)
982         fold_buffer[i] = tolower (name[i]);
983     }
984
985   return fold_buffer;
986 }
987
988 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
989
990 static int
991 is_lower_alphanum (const char c)
992 {
993   return (isdigit (c) || (isalpha (c) && islower (c)));
994 }
995
996 /* ENCODED is the linkage name of a symbol and LEN contains its length.
997    This function saves in LEN the length of that same symbol name but
998    without either of these suffixes:
999      . .{DIGIT}+
1000      . ${DIGIT}+
1001      . ___{DIGIT}+
1002      . __{DIGIT}+.
1003
1004    These are suffixes introduced by the compiler for entities such as
1005    nested subprogram for instance, in order to avoid name clashes.
1006    They do not serve any purpose for the debugger.  */
1007
1008 static void
1009 ada_remove_trailing_digits (const char *encoded, int *len)
1010 {
1011   if (*len > 1 && isdigit (encoded[*len - 1]))
1012     {
1013       int i = *len - 2;
1014
1015       while (i > 0 && isdigit (encoded[i]))
1016         i--;
1017       if (i >= 0 && encoded[i] == '.')
1018         *len = i;
1019       else if (i >= 0 && encoded[i] == '$')
1020         *len = i;
1021       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1022         *len = i - 2;
1023       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1024         *len = i - 1;
1025     }
1026 }
1027
1028 /* Remove the suffix introduced by the compiler for protected object
1029    subprograms.  */
1030
1031 static void
1032 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1033 {
1034   /* Remove trailing N.  */
1035
1036   /* Protected entry subprograms are broken into two
1037      separate subprograms: The first one is unprotected, and has
1038      a 'N' suffix; the second is the protected version, and has
1039      the 'P' suffix.  The second calls the first one after handling
1040      the protection.  Since the P subprograms are internally generated,
1041      we leave these names undecoded, giving the user a clue that this
1042      entity is internal.  */
1043
1044   if (*len > 1
1045       && encoded[*len - 1] == 'N'
1046       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1047     *len = *len - 1;
1048 }
1049
1050 /* If ENCODED follows the GNAT entity encoding conventions, then return
1051    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1052    replaced by ENCODED.  */
1053
1054 std::string
1055 ada_decode (const char *encoded)
1056 {
1057   int i, j;
1058   int len0;
1059   const char *p;
1060   int at_start_name;
1061   std::string decoded;
1062
1063   /* With function descriptors on PPC64, the value of a symbol named
1064      ".FN", if it exists, is the entry point of the function "FN".  */
1065   if (encoded[0] == '.')
1066     encoded += 1;
1067
1068   /* The name of the Ada main procedure starts with "_ada_".
1069      This prefix is not part of the decoded name, so skip this part
1070      if we see this prefix.  */
1071   if (startswith (encoded, "_ada_"))
1072     encoded += 5;
1073
1074   /* If the name starts with '_', then it is not a properly encoded
1075      name, so do not attempt to decode it.  Similarly, if the name
1076      starts with '<', the name should not be decoded.  */
1077   if (encoded[0] == '_' || encoded[0] == '<')
1078     goto Suppress;
1079
1080   len0 = strlen (encoded);
1081
1082   ada_remove_trailing_digits (encoded, &len0);
1083   ada_remove_po_subprogram_suffix (encoded, &len0);
1084
1085   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1086      the suffix is located before the current "end" of ENCODED.  We want
1087      to avoid re-matching parts of ENCODED that have previously been
1088      marked as discarded (by decrementing LEN0).  */
1089   p = strstr (encoded, "___");
1090   if (p != NULL && p - encoded < len0 - 3)
1091     {
1092       if (p[3] == 'X')
1093         len0 = p - encoded;
1094       else
1095         goto Suppress;
1096     }
1097
1098   /* Remove any trailing TKB suffix.  It tells us that this symbol
1099      is for the body of a task, but that information does not actually
1100      appear in the decoded name.  */
1101
1102   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1103     len0 -= 3;
1104
1105   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1106      from the TKB suffix because it is used for non-anonymous task
1107      bodies.  */
1108
1109   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1110     len0 -= 2;
1111
1112   /* Remove trailing "B" suffixes.  */
1113   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1114
1115   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1116     len0 -= 1;
1117
1118   /* Make decoded big enough for possible expansion by operator name.  */
1119
1120   decoded.resize (2 * len0 + 1, 'X');
1121
1122   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1123
1124   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1125     {
1126       i = len0 - 2;
1127       while ((i >= 0 && isdigit (encoded[i]))
1128              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1129         i -= 1;
1130       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1131         len0 = i - 1;
1132       else if (encoded[i] == '$')
1133         len0 = i;
1134     }
1135
1136   /* The first few characters that are not alphabetic are not part
1137      of any encoding we use, so we can copy them over verbatim.  */
1138
1139   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1140     decoded[j] = encoded[i];
1141
1142   at_start_name = 1;
1143   while (i < len0)
1144     {
1145       /* Is this a symbol function?  */
1146       if (at_start_name && encoded[i] == 'O')
1147         {
1148           int k;
1149
1150           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1151             {
1152               int op_len = strlen (ada_opname_table[k].encoded);
1153               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1154                             op_len - 1) == 0)
1155                   && !isalnum (encoded[i + op_len]))
1156                 {
1157                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1158                   at_start_name = 0;
1159                   i += op_len;
1160                   j += strlen (ada_opname_table[k].decoded);
1161                   break;
1162                 }
1163             }
1164           if (ada_opname_table[k].encoded != NULL)
1165             continue;
1166         }
1167       at_start_name = 0;
1168
1169       /* Replace "TK__" with "__", which will eventually be translated
1170          into "." (just below).  */
1171
1172       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1173         i += 2;
1174
1175       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1176          be translated into "." (just below).  These are internal names
1177          generated for anonymous blocks inside which our symbol is nested.  */
1178
1179       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1180           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1181           && isdigit (encoded [i+4]))
1182         {
1183           int k = i + 5;
1184           
1185           while (k < len0 && isdigit (encoded[k]))
1186             k++;  /* Skip any extra digit.  */
1187
1188           /* Double-check that the "__B_{DIGITS}+" sequence we found
1189              is indeed followed by "__".  */
1190           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1191             i = k;
1192         }
1193
1194       /* Remove _E{DIGITS}+[sb] */
1195
1196       /* Just as for protected object subprograms, there are 2 categories
1197          of subprograms created by the compiler for each entry.  The first
1198          one implements the actual entry code, and has a suffix following
1199          the convention above; the second one implements the barrier and
1200          uses the same convention as above, except that the 'E' is replaced
1201          by a 'B'.
1202
1203          Just as above, we do not decode the name of barrier functions
1204          to give the user a clue that the code he is debugging has been
1205          internally generated.  */
1206
1207       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1208           && isdigit (encoded[i+2]))
1209         {
1210           int k = i + 3;
1211
1212           while (k < len0 && isdigit (encoded[k]))
1213             k++;
1214
1215           if (k < len0
1216               && (encoded[k] == 'b' || encoded[k] == 's'))
1217             {
1218               k++;
1219               /* Just as an extra precaution, make sure that if this
1220                  suffix is followed by anything else, it is a '_'.
1221                  Otherwise, we matched this sequence by accident.  */
1222               if (k == len0
1223                   || (k < len0 && encoded[k] == '_'))
1224                 i = k;
1225             }
1226         }
1227
1228       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1229          the GNAT front-end in protected object subprograms.  */
1230
1231       if (i < len0 + 3
1232           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1233         {
1234           /* Backtrack a bit up until we reach either the begining of
1235              the encoded name, or "__".  Make sure that we only find
1236              digits or lowercase characters.  */
1237           const char *ptr = encoded + i - 1;
1238
1239           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1240             ptr--;
1241           if (ptr < encoded
1242               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1243             i++;
1244         }
1245
1246       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1247         {
1248           /* This is a X[bn]* sequence not separated from the previous
1249              part of the name with a non-alpha-numeric character (in other
1250              words, immediately following an alpha-numeric character), then
1251              verify that it is placed at the end of the encoded name.  If
1252              not, then the encoding is not valid and we should abort the
1253              decoding.  Otherwise, just skip it, it is used in body-nested
1254              package names.  */
1255           do
1256             i += 1;
1257           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1258           if (i < len0)
1259             goto Suppress;
1260         }
1261       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1262         {
1263          /* Replace '__' by '.'.  */
1264           decoded[j] = '.';
1265           at_start_name = 1;
1266           i += 2;
1267           j += 1;
1268         }
1269       else
1270         {
1271           /* It's a character part of the decoded name, so just copy it
1272              over.  */
1273           decoded[j] = encoded[i];
1274           i += 1;
1275           j += 1;
1276         }
1277     }
1278   decoded.resize (j);
1279
1280   /* Decoded names should never contain any uppercase character.
1281      Double-check this, and abort the decoding if we find one.  */
1282
1283   for (i = 0; i < decoded.length(); ++i)
1284     if (isupper (decoded[i]) || decoded[i] == ' ')
1285       goto Suppress;
1286
1287   return decoded;
1288
1289 Suppress:
1290   if (encoded[0] == '<')
1291     decoded = encoded;
1292   else
1293     decoded = '<' + std::string(encoded) + '>';
1294   return decoded;
1295
1296 }
1297
1298 /* Table for keeping permanent unique copies of decoded names.  Once
1299    allocated, names in this table are never released.  While this is a
1300    storage leak, it should not be significant unless there are massive
1301    changes in the set of decoded names in successive versions of a 
1302    symbol table loaded during a single session.  */
1303 static struct htab *decoded_names_store;
1304
1305 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1306    in the language-specific part of GSYMBOL, if it has not been
1307    previously computed.  Tries to save the decoded name in the same
1308    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1309    in any case, the decoded symbol has a lifetime at least that of
1310    GSYMBOL).
1311    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1312    const, but nevertheless modified to a semantically equivalent form
1313    when a decoded name is cached in it.  */
1314
1315 const char *
1316 ada_decode_symbol (const struct general_symbol_info *arg)
1317 {
1318   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1319   const char **resultp =
1320     &gsymbol->language_specific.demangled_name;
1321
1322   if (!gsymbol->ada_mangled)
1323     {
1324       std::string decoded = ada_decode (gsymbol->linkage_name ());
1325       struct obstack *obstack = gsymbol->language_specific.obstack;
1326
1327       gsymbol->ada_mangled = 1;
1328
1329       if (obstack != NULL)
1330         *resultp = obstack_strdup (obstack, decoded.c_str ());
1331       else
1332         {
1333           /* Sometimes, we can't find a corresponding objfile, in
1334              which case, we put the result on the heap.  Since we only
1335              decode when needed, we hope this usually does not cause a
1336              significant memory leak (FIXME).  */
1337
1338           char **slot = (char **) htab_find_slot (decoded_names_store,
1339                                                   decoded.c_str (), INSERT);
1340
1341           if (*slot == NULL)
1342             *slot = xstrdup (decoded.c_str ());
1343           *resultp = *slot;
1344         }
1345     }
1346
1347   return *resultp;
1348 }
1349
1350 static char *
1351 ada_la_decode (const char *encoded, int options)
1352 {
1353   return xstrdup (ada_decode (encoded).c_str ());
1354 }
1355
1356 \f
1357
1358                                 /* Arrays */
1359
1360 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1361    generated by the GNAT compiler to describe the index type used
1362    for each dimension of an array, check whether it follows the latest
1363    known encoding.  If not, fix it up to conform to the latest encoding.
1364    Otherwise, do nothing.  This function also does nothing if
1365    INDEX_DESC_TYPE is NULL.
1366
1367    The GNAT encoding used to describe the array index type evolved a bit.
1368    Initially, the information would be provided through the name of each
1369    field of the structure type only, while the type of these fields was
1370    described as unspecified and irrelevant.  The debugger was then expected
1371    to perform a global type lookup using the name of that field in order
1372    to get access to the full index type description.  Because these global
1373    lookups can be very expensive, the encoding was later enhanced to make
1374    the global lookup unnecessary by defining the field type as being
1375    the full index type description.
1376
1377    The purpose of this routine is to allow us to support older versions
1378    of the compiler by detecting the use of the older encoding, and by
1379    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1380    we essentially replace each field's meaningless type by the associated
1381    index subtype).  */
1382
1383 void
1384 ada_fixup_array_indexes_type (struct type *index_desc_type)
1385 {
1386   int i;
1387
1388   if (index_desc_type == NULL)
1389     return;
1390   gdb_assert (index_desc_type->num_fields () > 0);
1391
1392   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1393      to check one field only, no need to check them all).  If not, return
1394      now.
1395
1396      If our INDEX_DESC_TYPE was generated using the older encoding,
1397      the field type should be a meaningless integer type whose name
1398      is not equal to the field name.  */
1399   if (index_desc_type->field (0).type ()->name () != NULL
1400       && strcmp (index_desc_type->field (0).type ()->name (),
1401                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1402     return;
1403
1404   /* Fixup each field of INDEX_DESC_TYPE.  */
1405   for (i = 0; i < index_desc_type->num_fields (); i++)
1406    {
1407      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1408      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1409
1410      if (raw_type)
1411        index_desc_type->field (i).set_type (raw_type);
1412    }
1413 }
1414
1415 /* The desc_* routines return primitive portions of array descriptors
1416    (fat pointers).  */
1417
1418 /* The descriptor or array type, if any, indicated by TYPE; removes
1419    level of indirection, if needed.  */
1420
1421 static struct type *
1422 desc_base_type (struct type *type)
1423 {
1424   if (type == NULL)
1425     return NULL;
1426   type = ada_check_typedef (type);
1427   if (type->code () == TYPE_CODE_TYPEDEF)
1428     type = ada_typedef_target_type (type);
1429
1430   if (type != NULL
1431       && (type->code () == TYPE_CODE_PTR
1432           || type->code () == TYPE_CODE_REF))
1433     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1434   else
1435     return type;
1436 }
1437
1438 /* True iff TYPE indicates a "thin" array pointer type.  */
1439
1440 static int
1441 is_thin_pntr (struct type *type)
1442 {
1443   return
1444     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1445     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1446 }
1447
1448 /* The descriptor type for thin pointer type TYPE.  */
1449
1450 static struct type *
1451 thin_descriptor_type (struct type *type)
1452 {
1453   struct type *base_type = desc_base_type (type);
1454
1455   if (base_type == NULL)
1456     return NULL;
1457   if (is_suffix (ada_type_name (base_type), "___XVE"))
1458     return base_type;
1459   else
1460     {
1461       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1462
1463       if (alt_type == NULL)
1464         return base_type;
1465       else
1466         return alt_type;
1467     }
1468 }
1469
1470 /* A pointer to the array data for thin-pointer value VAL.  */
1471
1472 static struct value *
1473 thin_data_pntr (struct value *val)
1474 {
1475   struct type *type = ada_check_typedef (value_type (val));
1476   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1477
1478   data_type = lookup_pointer_type (data_type);
1479
1480   if (type->code () == TYPE_CODE_PTR)
1481     return value_cast (data_type, value_copy (val));
1482   else
1483     return value_from_longest (data_type, value_address (val));
1484 }
1485
1486 /* True iff TYPE indicates a "thick" array pointer type.  */
1487
1488 static int
1489 is_thick_pntr (struct type *type)
1490 {
1491   type = desc_base_type (type);
1492   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1493           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1494 }
1495
1496 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1497    pointer to one, the type of its bounds data; otherwise, NULL.  */
1498
1499 static struct type *
1500 desc_bounds_type (struct type *type)
1501 {
1502   struct type *r;
1503
1504   type = desc_base_type (type);
1505
1506   if (type == NULL)
1507     return NULL;
1508   else if (is_thin_pntr (type))
1509     {
1510       type = thin_descriptor_type (type);
1511       if (type == NULL)
1512         return NULL;
1513       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1514       if (r != NULL)
1515         return ada_check_typedef (r);
1516     }
1517   else if (type->code () == TYPE_CODE_STRUCT)
1518     {
1519       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1520       if (r != NULL)
1521         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1522     }
1523   return NULL;
1524 }
1525
1526 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1527    one, a pointer to its bounds data.   Otherwise NULL.  */
1528
1529 static struct value *
1530 desc_bounds (struct value *arr)
1531 {
1532   struct type *type = ada_check_typedef (value_type (arr));
1533
1534   if (is_thin_pntr (type))
1535     {
1536       struct type *bounds_type =
1537         desc_bounds_type (thin_descriptor_type (type));
1538       LONGEST addr;
1539
1540       if (bounds_type == NULL)
1541         error (_("Bad GNAT array descriptor"));
1542
1543       /* NOTE: The following calculation is not really kosher, but
1544          since desc_type is an XVE-encoded type (and shouldn't be),
1545          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1546       if (type->code () == TYPE_CODE_PTR)
1547         addr = value_as_long (arr);
1548       else
1549         addr = value_address (arr);
1550
1551       return
1552         value_from_longest (lookup_pointer_type (bounds_type),
1553                             addr - TYPE_LENGTH (bounds_type));
1554     }
1555
1556   else if (is_thick_pntr (type))
1557     {
1558       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1559                                                _("Bad GNAT array descriptor"));
1560       struct type *p_bounds_type = value_type (p_bounds);
1561
1562       if (p_bounds_type
1563           && p_bounds_type->code () == TYPE_CODE_PTR)
1564         {
1565           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1566
1567           if (TYPE_STUB (target_type))
1568             p_bounds = value_cast (lookup_pointer_type
1569                                    (ada_check_typedef (target_type)),
1570                                    p_bounds);
1571         }
1572       else
1573         error (_("Bad GNAT array descriptor"));
1574
1575       return p_bounds;
1576     }
1577   else
1578     return NULL;
1579 }
1580
1581 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1582    position of the field containing the address of the bounds data.  */
1583
1584 static int
1585 fat_pntr_bounds_bitpos (struct type *type)
1586 {
1587   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1588 }
1589
1590 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1591    size of the field containing the address of the bounds data.  */
1592
1593 static int
1594 fat_pntr_bounds_bitsize (struct type *type)
1595 {
1596   type = desc_base_type (type);
1597
1598   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1599     return TYPE_FIELD_BITSIZE (type, 1);
1600   else
1601     return 8 * TYPE_LENGTH (ada_check_typedef (type->field (1).type ()));
1602 }
1603
1604 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1605    pointer to one, the type of its array data (a array-with-no-bounds type);
1606    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1607    data.  */
1608
1609 static struct type *
1610 desc_data_target_type (struct type *type)
1611 {
1612   type = desc_base_type (type);
1613
1614   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1615   if (is_thin_pntr (type))
1616     return desc_base_type (thin_descriptor_type (type)->field (1).type ());
1617   else if (is_thick_pntr (type))
1618     {
1619       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1620
1621       if (data_type
1622           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1623         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1624     }
1625
1626   return NULL;
1627 }
1628
1629 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1630    its array data.  */
1631
1632 static struct value *
1633 desc_data (struct value *arr)
1634 {
1635   struct type *type = value_type (arr);
1636
1637   if (is_thin_pntr (type))
1638     return thin_data_pntr (arr);
1639   else if (is_thick_pntr (type))
1640     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1641                              _("Bad GNAT array descriptor"));
1642   else
1643     return NULL;
1644 }
1645
1646
1647 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1648    position of the field containing the address of the data.  */
1649
1650 static int
1651 fat_pntr_data_bitpos (struct type *type)
1652 {
1653   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1654 }
1655
1656 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1657    size of the field containing the address of the data.  */
1658
1659 static int
1660 fat_pntr_data_bitsize (struct type *type)
1661 {
1662   type = desc_base_type (type);
1663
1664   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1665     return TYPE_FIELD_BITSIZE (type, 0);
1666   else
1667     return TARGET_CHAR_BIT * TYPE_LENGTH (type->field (0).type ());
1668 }
1669
1670 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1671    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1672    bound, if WHICH is 1.  The first bound is I=1.  */
1673
1674 static struct value *
1675 desc_one_bound (struct value *bounds, int i, int which)
1676 {
1677   char bound_name[20];
1678   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1679              which ? 'U' : 'L', i - 1);
1680   return value_struct_elt (&bounds, NULL, bound_name, NULL,
1681                            _("Bad GNAT array descriptor bounds"));
1682 }
1683
1684 /* If BOUNDS is an array-bounds structure type, return the bit position
1685    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1686    bound, if WHICH is 1.  The first bound is I=1.  */
1687
1688 static int
1689 desc_bound_bitpos (struct type *type, int i, int which)
1690 {
1691   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1692 }
1693
1694 /* If BOUNDS is an array-bounds structure type, return the bit field size
1695    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1696    bound, if WHICH is 1.  The first bound is I=1.  */
1697
1698 static int
1699 desc_bound_bitsize (struct type *type, int i, int which)
1700 {
1701   type = desc_base_type (type);
1702
1703   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1704     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1705   else
1706     return 8 * TYPE_LENGTH (type->field (2 * i + which - 2).type ());
1707 }
1708
1709 /* If TYPE is the type of an array-bounds structure, the type of its
1710    Ith bound (numbering from 1).  Otherwise, NULL.  */
1711
1712 static struct type *
1713 desc_index_type (struct type *type, int i)
1714 {
1715   type = desc_base_type (type);
1716
1717   if (type->code () == TYPE_CODE_STRUCT)
1718     {
1719       char bound_name[20];
1720       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1721       return lookup_struct_elt_type (type, bound_name, 1);
1722     }
1723   else
1724     return NULL;
1725 }
1726
1727 /* The number of index positions in the array-bounds type TYPE.
1728    Return 0 if TYPE is NULL.  */
1729
1730 static int
1731 desc_arity (struct type *type)
1732 {
1733   type = desc_base_type (type);
1734
1735   if (type != NULL)
1736     return type->num_fields () / 2;
1737   return 0;
1738 }
1739
1740 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1741    an array descriptor type (representing an unconstrained array
1742    type).  */
1743
1744 static int
1745 ada_is_direct_array_type (struct type *type)
1746 {
1747   if (type == NULL)
1748     return 0;
1749   type = ada_check_typedef (type);
1750   return (type->code () == TYPE_CODE_ARRAY
1751           || ada_is_array_descriptor_type (type));
1752 }
1753
1754 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1755  * to one.  */
1756
1757 static int
1758 ada_is_array_type (struct type *type)
1759 {
1760   while (type != NULL
1761          && (type->code () == TYPE_CODE_PTR
1762              || type->code () == TYPE_CODE_REF))
1763     type = TYPE_TARGET_TYPE (type);
1764   return ada_is_direct_array_type (type);
1765 }
1766
1767 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1768
1769 int
1770 ada_is_simple_array_type (struct type *type)
1771 {
1772   if (type == NULL)
1773     return 0;
1774   type = ada_check_typedef (type);
1775   return (type->code () == TYPE_CODE_ARRAY
1776           || (type->code () == TYPE_CODE_PTR
1777               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1778                   == TYPE_CODE_ARRAY)));
1779 }
1780
1781 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1782
1783 int
1784 ada_is_array_descriptor_type (struct type *type)
1785 {
1786   struct type *data_type = desc_data_target_type (type);
1787
1788   if (type == NULL)
1789     return 0;
1790   type = ada_check_typedef (type);
1791   return (data_type != NULL
1792           && data_type->code () == TYPE_CODE_ARRAY
1793           && desc_arity (desc_bounds_type (type)) > 0);
1794 }
1795
1796 /* Non-zero iff type is a partially mal-formed GNAT array
1797    descriptor.  FIXME: This is to compensate for some problems with
1798    debugging output from GNAT.  Re-examine periodically to see if it
1799    is still needed.  */
1800
1801 int
1802 ada_is_bogus_array_descriptor (struct type *type)
1803 {
1804   return
1805     type != NULL
1806     && type->code () == TYPE_CODE_STRUCT
1807     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1808         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1809     && !ada_is_array_descriptor_type (type);
1810 }
1811
1812
1813 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1814    (fat pointer) returns the type of the array data described---specifically,
1815    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1816    in from the descriptor; otherwise, they are left unspecified.  If
1817    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1818    returns NULL.  The result is simply the type of ARR if ARR is not
1819    a descriptor.  */
1820
1821 static struct type *
1822 ada_type_of_array (struct value *arr, int bounds)
1823 {
1824   if (ada_is_constrained_packed_array_type (value_type (arr)))
1825     return decode_constrained_packed_array_type (value_type (arr));
1826
1827   if (!ada_is_array_descriptor_type (value_type (arr)))
1828     return value_type (arr);
1829
1830   if (!bounds)
1831     {
1832       struct type *array_type =
1833         ada_check_typedef (desc_data_target_type (value_type (arr)));
1834
1835       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1836         TYPE_FIELD_BITSIZE (array_type, 0) =
1837           decode_packed_array_bitsize (value_type (arr));
1838       
1839       return array_type;
1840     }
1841   else
1842     {
1843       struct type *elt_type;
1844       int arity;
1845       struct value *descriptor;
1846
1847       elt_type = ada_array_element_type (value_type (arr), -1);
1848       arity = ada_array_arity (value_type (arr));
1849
1850       if (elt_type == NULL || arity == 0)
1851         return ada_check_typedef (value_type (arr));
1852
1853       descriptor = desc_bounds (arr);
1854       if (value_as_long (descriptor) == 0)
1855         return NULL;
1856       while (arity > 0)
1857         {
1858           struct type *range_type = alloc_type_copy (value_type (arr));
1859           struct type *array_type = alloc_type_copy (value_type (arr));
1860           struct value *low = desc_one_bound (descriptor, arity, 0);
1861           struct value *high = desc_one_bound (descriptor, arity, 1);
1862
1863           arity -= 1;
1864           create_static_range_type (range_type, value_type (low),
1865                                     longest_to_int (value_as_long (low)),
1866                                     longest_to_int (value_as_long (high)));
1867           elt_type = create_array_type (array_type, elt_type, range_type);
1868
1869           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1870             {
1871               /* We need to store the element packed bitsize, as well as
1872                  recompute the array size, because it was previously
1873                  computed based on the unpacked element size.  */
1874               LONGEST lo = value_as_long (low);
1875               LONGEST hi = value_as_long (high);
1876
1877               TYPE_FIELD_BITSIZE (elt_type, 0) =
1878                 decode_packed_array_bitsize (value_type (arr));
1879               /* If the array has no element, then the size is already
1880                  zero, and does not need to be recomputed.  */
1881               if (lo < hi)
1882                 {
1883                   int array_bitsize =
1884                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1885
1886                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1887                 }
1888             }
1889         }
1890
1891       return lookup_pointer_type (elt_type);
1892     }
1893 }
1894
1895 /* If ARR does not represent an array, returns ARR unchanged.
1896    Otherwise, returns either a standard GDB array with bounds set
1897    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1898    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1899
1900 struct value *
1901 ada_coerce_to_simple_array_ptr (struct value *arr)
1902 {
1903   if (ada_is_array_descriptor_type (value_type (arr)))
1904     {
1905       struct type *arrType = ada_type_of_array (arr, 1);
1906
1907       if (arrType == NULL)
1908         return NULL;
1909       return value_cast (arrType, value_copy (desc_data (arr)));
1910     }
1911   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1912     return decode_constrained_packed_array (arr);
1913   else
1914     return arr;
1915 }
1916
1917 /* If ARR does not represent an array, returns ARR unchanged.
1918    Otherwise, returns a standard GDB array describing ARR (which may
1919    be ARR itself if it already is in the proper form).  */
1920
1921 struct value *
1922 ada_coerce_to_simple_array (struct value *arr)
1923 {
1924   if (ada_is_array_descriptor_type (value_type (arr)))
1925     {
1926       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1927
1928       if (arrVal == NULL)
1929         error (_("Bounds unavailable for null array pointer."));
1930       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1931       return value_ind (arrVal);
1932     }
1933   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1934     return decode_constrained_packed_array (arr);
1935   else
1936     return arr;
1937 }
1938
1939 /* If TYPE represents a GNAT array type, return it translated to an
1940    ordinary GDB array type (possibly with BITSIZE fields indicating
1941    packing).  For other types, is the identity.  */
1942
1943 struct type *
1944 ada_coerce_to_simple_array_type (struct type *type)
1945 {
1946   if (ada_is_constrained_packed_array_type (type))
1947     return decode_constrained_packed_array_type (type);
1948
1949   if (ada_is_array_descriptor_type (type))
1950     return ada_check_typedef (desc_data_target_type (type));
1951
1952   return type;
1953 }
1954
1955 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
1956
1957 static int
1958 ada_is_packed_array_type  (struct type *type)
1959 {
1960   if (type == NULL)
1961     return 0;
1962   type = desc_base_type (type);
1963   type = ada_check_typedef (type);
1964   return
1965     ada_type_name (type) != NULL
1966     && strstr (ada_type_name (type), "___XP") != NULL;
1967 }
1968
1969 /* Non-zero iff TYPE represents a standard GNAT constrained
1970    packed-array type.  */
1971
1972 int
1973 ada_is_constrained_packed_array_type (struct type *type)
1974 {
1975   return ada_is_packed_array_type (type)
1976     && !ada_is_array_descriptor_type (type);
1977 }
1978
1979 /* Non-zero iff TYPE represents an array descriptor for a
1980    unconstrained packed-array type.  */
1981
1982 static int
1983 ada_is_unconstrained_packed_array_type (struct type *type)
1984 {
1985   return ada_is_packed_array_type (type)
1986     && ada_is_array_descriptor_type (type);
1987 }
1988
1989 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
1990    return the size of its elements in bits.  */
1991
1992 static long
1993 decode_packed_array_bitsize (struct type *type)
1994 {
1995   const char *raw_name;
1996   const char *tail;
1997   long bits;
1998
1999   /* Access to arrays implemented as fat pointers are encoded as a typedef
2000      of the fat pointer type.  We need the name of the fat pointer type
2001      to do the decoding, so strip the typedef layer.  */
2002   if (type->code () == TYPE_CODE_TYPEDEF)
2003     type = ada_typedef_target_type (type);
2004
2005   raw_name = ada_type_name (ada_check_typedef (type));
2006   if (!raw_name)
2007     raw_name = ada_type_name (desc_base_type (type));
2008
2009   if (!raw_name)
2010     return 0;
2011
2012   tail = strstr (raw_name, "___XP");
2013   gdb_assert (tail != NULL);
2014
2015   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2016     {
2017       lim_warning
2018         (_("could not understand bit size information on packed array"));
2019       return 0;
2020     }
2021
2022   return bits;
2023 }
2024
2025 /* Given that TYPE is a standard GDB array type with all bounds filled
2026    in, and that the element size of its ultimate scalar constituents
2027    (that is, either its elements, or, if it is an array of arrays, its
2028    elements' elements, etc.) is *ELT_BITS, return an identical type,
2029    but with the bit sizes of its elements (and those of any
2030    constituent arrays) recorded in the BITSIZE components of its
2031    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2032    in bits.
2033
2034    Note that, for arrays whose index type has an XA encoding where
2035    a bound references a record discriminant, getting that discriminant,
2036    and therefore the actual value of that bound, is not possible
2037    because none of the given parameters gives us access to the record.
2038    This function assumes that it is OK in the context where it is being
2039    used to return an array whose bounds are still dynamic and where
2040    the length is arbitrary.  */
2041
2042 static struct type *
2043 constrained_packed_array_type (struct type *type, long *elt_bits)
2044 {
2045   struct type *new_elt_type;
2046   struct type *new_type;
2047   struct type *index_type_desc;
2048   struct type *index_type;
2049   LONGEST low_bound, high_bound;
2050
2051   type = ada_check_typedef (type);
2052   if (type->code () != TYPE_CODE_ARRAY)
2053     return type;
2054
2055   index_type_desc = ada_find_parallel_type (type, "___XA");
2056   if (index_type_desc)
2057     index_type = to_fixed_range_type (index_type_desc->field (0).type (),
2058                                       NULL);
2059   else
2060     index_type = type->index_type ();
2061
2062   new_type = alloc_type_copy (type);
2063   new_elt_type =
2064     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2065                                    elt_bits);
2066   create_array_type (new_type, new_elt_type, index_type);
2067   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2068   new_type->set_name (ada_type_name (type));
2069
2070   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2071        && is_dynamic_type (check_typedef (index_type)))
2072       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2073     low_bound = high_bound = 0;
2074   if (high_bound < low_bound)
2075     *elt_bits = TYPE_LENGTH (new_type) = 0;
2076   else
2077     {
2078       *elt_bits *= (high_bound - low_bound + 1);
2079       TYPE_LENGTH (new_type) =
2080         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2081     }
2082
2083   TYPE_FIXED_INSTANCE (new_type) = 1;
2084   return new_type;
2085 }
2086
2087 /* The array type encoded by TYPE, where
2088    ada_is_constrained_packed_array_type (TYPE).  */
2089
2090 static struct type *
2091 decode_constrained_packed_array_type (struct type *type)
2092 {
2093   const char *raw_name = ada_type_name (ada_check_typedef (type));
2094   char *name;
2095   const char *tail;
2096   struct type *shadow_type;
2097   long bits;
2098
2099   if (!raw_name)
2100     raw_name = ada_type_name (desc_base_type (type));
2101
2102   if (!raw_name)
2103     return NULL;
2104
2105   name = (char *) alloca (strlen (raw_name) + 1);
2106   tail = strstr (raw_name, "___XP");
2107   type = desc_base_type (type);
2108
2109   memcpy (name, raw_name, tail - raw_name);
2110   name[tail - raw_name] = '\000';
2111
2112   shadow_type = ada_find_parallel_type_with_name (type, name);
2113
2114   if (shadow_type == NULL)
2115     {
2116       lim_warning (_("could not find bounds information on packed array"));
2117       return NULL;
2118     }
2119   shadow_type = check_typedef (shadow_type);
2120
2121   if (shadow_type->code () != TYPE_CODE_ARRAY)
2122     {
2123       lim_warning (_("could not understand bounds "
2124                      "information on packed array"));
2125       return NULL;
2126     }
2127
2128   bits = decode_packed_array_bitsize (type);
2129   return constrained_packed_array_type (shadow_type, &bits);
2130 }
2131
2132 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2133    array, returns a simple array that denotes that array.  Its type is a
2134    standard GDB array type except that the BITSIZEs of the array
2135    target types are set to the number of bits in each element, and the
2136    type length is set appropriately.  */
2137
2138 static struct value *
2139 decode_constrained_packed_array (struct value *arr)
2140 {
2141   struct type *type;
2142
2143   /* If our value is a pointer, then dereference it. Likewise if
2144      the value is a reference.  Make sure that this operation does not
2145      cause the target type to be fixed, as this would indirectly cause
2146      this array to be decoded.  The rest of the routine assumes that
2147      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2148      and "value_ind" routines to perform the dereferencing, as opposed
2149      to using "ada_coerce_ref" or "ada_value_ind".  */
2150   arr = coerce_ref (arr);
2151   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2152     arr = value_ind (arr);
2153
2154   type = decode_constrained_packed_array_type (value_type (arr));
2155   if (type == NULL)
2156     {
2157       error (_("can't unpack array"));
2158       return NULL;
2159     }
2160
2161   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2162       && ada_is_modular_type (value_type (arr)))
2163     {
2164        /* This is a (right-justified) modular type representing a packed
2165          array with no wrapper.  In order to interpret the value through
2166          the (left-justified) packed array type we just built, we must
2167          first left-justify it.  */
2168       int bit_size, bit_pos;
2169       ULONGEST mod;
2170
2171       mod = ada_modulus (value_type (arr)) - 1;
2172       bit_size = 0;
2173       while (mod > 0)
2174         {
2175           bit_size += 1;
2176           mod >>= 1;
2177         }
2178       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2179       arr = ada_value_primitive_packed_val (arr, NULL,
2180                                             bit_pos / HOST_CHAR_BIT,
2181                                             bit_pos % HOST_CHAR_BIT,
2182                                             bit_size,
2183                                             type);
2184     }
2185
2186   return coerce_unspec_val_to_type (arr, type);
2187 }
2188
2189
2190 /* The value of the element of packed array ARR at the ARITY indices
2191    given in IND.   ARR must be a simple array.  */
2192
2193 static struct value *
2194 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2195 {
2196   int i;
2197   int bits, elt_off, bit_off;
2198   long elt_total_bit_offset;
2199   struct type *elt_type;
2200   struct value *v;
2201
2202   bits = 0;
2203   elt_total_bit_offset = 0;
2204   elt_type = ada_check_typedef (value_type (arr));
2205   for (i = 0; i < arity; i += 1)
2206     {
2207       if (elt_type->code () != TYPE_CODE_ARRAY
2208           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2209         error
2210           (_("attempt to do packed indexing of "
2211              "something other than a packed array"));
2212       else
2213         {
2214           struct type *range_type = elt_type->index_type ();
2215           LONGEST lowerbound, upperbound;
2216           LONGEST idx;
2217
2218           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2219             {
2220               lim_warning (_("don't know bounds of array"));
2221               lowerbound = upperbound = 0;
2222             }
2223
2224           idx = pos_atr (ind[i]);
2225           if (idx < lowerbound || idx > upperbound)
2226             lim_warning (_("packed array index %ld out of bounds"),
2227                          (long) idx);
2228           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2229           elt_total_bit_offset += (idx - lowerbound) * bits;
2230           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2231         }
2232     }
2233   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2234   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2235
2236   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2237                                       bits, elt_type);
2238   return v;
2239 }
2240
2241 /* Non-zero iff TYPE includes negative integer values.  */
2242
2243 static int
2244 has_negatives (struct type *type)
2245 {
2246   switch (type->code ())
2247     {
2248     default:
2249       return 0;
2250     case TYPE_CODE_INT:
2251       return !TYPE_UNSIGNED (type);
2252     case TYPE_CODE_RANGE:
2253       return type->bounds ()->low.const_val () - type->bounds ()->bias < 0;
2254     }
2255 }
2256
2257 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2258    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2259    the unpacked buffer.
2260
2261    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2262    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2263
2264    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2265    zero otherwise.
2266
2267    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2268
2269    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2270
2271 static void
2272 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2273                           gdb_byte *unpacked, int unpacked_len,
2274                           int is_big_endian, int is_signed_type,
2275                           int is_scalar)
2276 {
2277   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2278   int src_idx;                  /* Index into the source area */
2279   int src_bytes_left;           /* Number of source bytes left to process.  */
2280   int srcBitsLeft;              /* Number of source bits left to move */
2281   int unusedLS;                 /* Number of bits in next significant
2282                                    byte of source that are unused */
2283
2284   int unpacked_idx;             /* Index into the unpacked buffer */
2285   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2286
2287   unsigned long accum;          /* Staging area for bits being transferred */
2288   int accumSize;                /* Number of meaningful bits in accum */
2289   unsigned char sign;
2290
2291   /* Transmit bytes from least to most significant; delta is the direction
2292      the indices move.  */
2293   int delta = is_big_endian ? -1 : 1;
2294
2295   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2296      bits from SRC.  .*/
2297   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2298     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2299            bit_size, unpacked_len);
2300
2301   srcBitsLeft = bit_size;
2302   src_bytes_left = src_len;
2303   unpacked_bytes_left = unpacked_len;
2304   sign = 0;
2305
2306   if (is_big_endian)
2307     {
2308       src_idx = src_len - 1;
2309       if (is_signed_type
2310           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2311         sign = ~0;
2312
2313       unusedLS =
2314         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2315         % HOST_CHAR_BIT;
2316
2317       if (is_scalar)
2318         {
2319           accumSize = 0;
2320           unpacked_idx = unpacked_len - 1;
2321         }
2322       else
2323         {
2324           /* Non-scalar values must be aligned at a byte boundary...  */
2325           accumSize =
2326             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2327           /* ... And are placed at the beginning (most-significant) bytes
2328              of the target.  */
2329           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2330           unpacked_bytes_left = unpacked_idx + 1;
2331         }
2332     }
2333   else
2334     {
2335       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2336
2337       src_idx = unpacked_idx = 0;
2338       unusedLS = bit_offset;
2339       accumSize = 0;
2340
2341       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2342         sign = ~0;
2343     }
2344
2345   accum = 0;
2346   while (src_bytes_left > 0)
2347     {
2348       /* Mask for removing bits of the next source byte that are not
2349          part of the value.  */
2350       unsigned int unusedMSMask =
2351         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2352         1;
2353       /* Sign-extend bits for this byte.  */
2354       unsigned int signMask = sign & ~unusedMSMask;
2355
2356       accum |=
2357         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2358       accumSize += HOST_CHAR_BIT - unusedLS;
2359       if (accumSize >= HOST_CHAR_BIT)
2360         {
2361           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2362           accumSize -= HOST_CHAR_BIT;
2363           accum >>= HOST_CHAR_BIT;
2364           unpacked_bytes_left -= 1;
2365           unpacked_idx += delta;
2366         }
2367       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2368       unusedLS = 0;
2369       src_bytes_left -= 1;
2370       src_idx += delta;
2371     }
2372   while (unpacked_bytes_left > 0)
2373     {
2374       accum |= sign << accumSize;
2375       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2376       accumSize -= HOST_CHAR_BIT;
2377       if (accumSize < 0)
2378         accumSize = 0;
2379       accum >>= HOST_CHAR_BIT;
2380       unpacked_bytes_left -= 1;
2381       unpacked_idx += delta;
2382     }
2383 }
2384
2385 /* Create a new value of type TYPE from the contents of OBJ starting
2386    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2387    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2388    assigning through the result will set the field fetched from.
2389    VALADDR is ignored unless OBJ is NULL, in which case,
2390    VALADDR+OFFSET must address the start of storage containing the 
2391    packed value.  The value returned  in this case is never an lval.
2392    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2393
2394 struct value *
2395 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2396                                 long offset, int bit_offset, int bit_size,
2397                                 struct type *type)
2398 {
2399   struct value *v;
2400   const gdb_byte *src;                /* First byte containing data to unpack */
2401   gdb_byte *unpacked;
2402   const int is_scalar = is_scalar_type (type);
2403   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2404   gdb::byte_vector staging;
2405
2406   type = ada_check_typedef (type);
2407
2408   if (obj == NULL)
2409     src = valaddr + offset;
2410   else
2411     src = value_contents (obj) + offset;
2412
2413   if (is_dynamic_type (type))
2414     {
2415       /* The length of TYPE might by dynamic, so we need to resolve
2416          TYPE in order to know its actual size, which we then use
2417          to create the contents buffer of the value we return.
2418          The difficulty is that the data containing our object is
2419          packed, and therefore maybe not at a byte boundary.  So, what
2420          we do, is unpack the data into a byte-aligned buffer, and then
2421          use that buffer as our object's value for resolving the type.  */
2422       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2423       staging.resize (staging_len);
2424
2425       ada_unpack_from_contents (src, bit_offset, bit_size,
2426                                 staging.data (), staging.size (),
2427                                 is_big_endian, has_negatives (type),
2428                                 is_scalar);
2429       type = resolve_dynamic_type (type, staging, 0);
2430       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2431         {
2432           /* This happens when the length of the object is dynamic,
2433              and is actually smaller than the space reserved for it.
2434              For instance, in an array of variant records, the bit_size
2435              we're given is the array stride, which is constant and
2436              normally equal to the maximum size of its element.
2437              But, in reality, each element only actually spans a portion
2438              of that stride.  */
2439           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2440         }
2441     }
2442
2443   if (obj == NULL)
2444     {
2445       v = allocate_value (type);
2446       src = valaddr + offset;
2447     }
2448   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2449     {
2450       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2451       gdb_byte *buf;
2452
2453       v = value_at (type, value_address (obj) + offset);
2454       buf = (gdb_byte *) alloca (src_len);
2455       read_memory (value_address (v), buf, src_len);
2456       src = buf;
2457     }
2458   else
2459     {
2460       v = allocate_value (type);
2461       src = value_contents (obj) + offset;
2462     }
2463
2464   if (obj != NULL)
2465     {
2466       long new_offset = offset;
2467
2468       set_value_component_location (v, obj);
2469       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2470       set_value_bitsize (v, bit_size);
2471       if (value_bitpos (v) >= HOST_CHAR_BIT)
2472         {
2473           ++new_offset;
2474           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2475         }
2476       set_value_offset (v, new_offset);
2477
2478       /* Also set the parent value.  This is needed when trying to
2479          assign a new value (in inferior memory).  */
2480       set_value_parent (v, obj);
2481     }
2482   else
2483     set_value_bitsize (v, bit_size);
2484   unpacked = value_contents_writeable (v);
2485
2486   if (bit_size == 0)
2487     {
2488       memset (unpacked, 0, TYPE_LENGTH (type));
2489       return v;
2490     }
2491
2492   if (staging.size () == TYPE_LENGTH (type))
2493     {
2494       /* Small short-cut: If we've unpacked the data into a buffer
2495          of the same size as TYPE's length, then we can reuse that,
2496          instead of doing the unpacking again.  */
2497       memcpy (unpacked, staging.data (), staging.size ());
2498     }
2499   else
2500     ada_unpack_from_contents (src, bit_offset, bit_size,
2501                               unpacked, TYPE_LENGTH (type),
2502                               is_big_endian, has_negatives (type), is_scalar);
2503
2504   return v;
2505 }
2506
2507 /* Store the contents of FROMVAL into the location of TOVAL.
2508    Return a new value with the location of TOVAL and contents of
2509    FROMVAL.   Handles assignment into packed fields that have
2510    floating-point or non-scalar types.  */
2511
2512 static struct value *
2513 ada_value_assign (struct value *toval, struct value *fromval)
2514 {
2515   struct type *type = value_type (toval);
2516   int bits = value_bitsize (toval);
2517
2518   toval = ada_coerce_ref (toval);
2519   fromval = ada_coerce_ref (fromval);
2520
2521   if (ada_is_direct_array_type (value_type (toval)))
2522     toval = ada_coerce_to_simple_array (toval);
2523   if (ada_is_direct_array_type (value_type (fromval)))
2524     fromval = ada_coerce_to_simple_array (fromval);
2525
2526   if (!deprecated_value_modifiable (toval))
2527     error (_("Left operand of assignment is not a modifiable lvalue."));
2528
2529   if (VALUE_LVAL (toval) == lval_memory
2530       && bits > 0
2531       && (type->code () == TYPE_CODE_FLT
2532           || type->code () == TYPE_CODE_STRUCT))
2533     {
2534       int len = (value_bitpos (toval)
2535                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2536       int from_size;
2537       gdb_byte *buffer = (gdb_byte *) alloca (len);
2538       struct value *val;
2539       CORE_ADDR to_addr = value_address (toval);
2540
2541       if (type->code () == TYPE_CODE_FLT)
2542         fromval = value_cast (type, fromval);
2543
2544       read_memory (to_addr, buffer, len);
2545       from_size = value_bitsize (fromval);
2546       if (from_size == 0)
2547         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2548
2549       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2550       ULONGEST from_offset = 0;
2551       if (is_big_endian && is_scalar_type (value_type (fromval)))
2552         from_offset = from_size - bits;
2553       copy_bitwise (buffer, value_bitpos (toval),
2554                     value_contents (fromval), from_offset,
2555                     bits, is_big_endian);
2556       write_memory_with_notification (to_addr, buffer, len);
2557
2558       val = value_copy (toval);
2559       memcpy (value_contents_raw (val), value_contents (fromval),
2560               TYPE_LENGTH (type));
2561       deprecated_set_value_type (val, type);
2562
2563       return val;
2564     }
2565
2566   return value_assign (toval, fromval);
2567 }
2568
2569
2570 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2571    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2572    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2573    COMPONENT, and not the inferior's memory.  The current contents
2574    of COMPONENT are ignored.
2575
2576    Although not part of the initial design, this function also works
2577    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2578    had a null address, and COMPONENT had an address which is equal to
2579    its offset inside CONTAINER.  */
2580
2581 static void
2582 value_assign_to_component (struct value *container, struct value *component,
2583                            struct value *val)
2584 {
2585   LONGEST offset_in_container =
2586     (LONGEST)  (value_address (component) - value_address (container));
2587   int bit_offset_in_container =
2588     value_bitpos (component) - value_bitpos (container);
2589   int bits;
2590
2591   val = value_cast (value_type (component), val);
2592
2593   if (value_bitsize (component) == 0)
2594     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2595   else
2596     bits = value_bitsize (component);
2597
2598   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2599     {
2600       int src_offset;
2601
2602       if (is_scalar_type (check_typedef (value_type (component))))
2603         src_offset
2604           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2605       else
2606         src_offset = 0;
2607       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2608                     value_bitpos (container) + bit_offset_in_container,
2609                     value_contents (val), src_offset, bits, 1);
2610     }
2611   else
2612     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2613                   value_bitpos (container) + bit_offset_in_container,
2614                   value_contents (val), 0, bits, 0);
2615 }
2616
2617 /* Determine if TYPE is an access to an unconstrained array.  */
2618
2619 bool
2620 ada_is_access_to_unconstrained_array (struct type *type)
2621 {
2622   return (type->code () == TYPE_CODE_TYPEDEF
2623           && is_thick_pntr (ada_typedef_target_type (type)));
2624 }
2625
2626 /* The value of the element of array ARR at the ARITY indices given in IND.
2627    ARR may be either a simple array, GNAT array descriptor, or pointer
2628    thereto.  */
2629
2630 struct value *
2631 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2632 {
2633   int k;
2634   struct value *elt;
2635   struct type *elt_type;
2636
2637   elt = ada_coerce_to_simple_array (arr);
2638
2639   elt_type = ada_check_typedef (value_type (elt));
2640   if (elt_type->code () == TYPE_CODE_ARRAY
2641       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2642     return value_subscript_packed (elt, arity, ind);
2643
2644   for (k = 0; k < arity; k += 1)
2645     {
2646       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2647
2648       if (elt_type->code () != TYPE_CODE_ARRAY)
2649         error (_("too many subscripts (%d expected)"), k);
2650
2651       elt = value_subscript (elt, pos_atr (ind[k]));
2652
2653       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2654           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2655         {
2656           /* The element is a typedef to an unconstrained array,
2657              except that the value_subscript call stripped the
2658              typedef layer.  The typedef layer is GNAT's way to
2659              specify that the element is, at the source level, an
2660              access to the unconstrained array, rather than the
2661              unconstrained array.  So, we need to restore that
2662              typedef layer, which we can do by forcing the element's
2663              type back to its original type. Otherwise, the returned
2664              value is going to be printed as the array, rather
2665              than as an access.  Another symptom of the same issue
2666              would be that an expression trying to dereference the
2667              element would also be improperly rejected.  */
2668           deprecated_set_value_type (elt, saved_elt_type);
2669         }
2670
2671       elt_type = ada_check_typedef (value_type (elt));
2672     }
2673
2674   return elt;
2675 }
2676
2677 /* Assuming ARR is a pointer to a GDB array, the value of the element
2678    of *ARR at the ARITY indices given in IND.
2679    Does not read the entire array into memory.
2680
2681    Note: Unlike what one would expect, this function is used instead of
2682    ada_value_subscript for basically all non-packed array types.  The reason
2683    for this is that a side effect of doing our own pointer arithmetics instead
2684    of relying on value_subscript is that there is no implicit typedef peeling.
2685    This is important for arrays of array accesses, where it allows us to
2686    preserve the fact that the array's element is an array access, where the
2687    access part os encoded in a typedef layer.  */
2688
2689 static struct value *
2690 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2691 {
2692   int k;
2693   struct value *array_ind = ada_value_ind (arr);
2694   struct type *type
2695     = check_typedef (value_enclosing_type (array_ind));
2696
2697   if (type->code () == TYPE_CODE_ARRAY
2698       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2699     return value_subscript_packed (array_ind, arity, ind);
2700
2701   for (k = 0; k < arity; k += 1)
2702     {
2703       LONGEST lwb, upb;
2704
2705       if (type->code () != TYPE_CODE_ARRAY)
2706         error (_("too many subscripts (%d expected)"), k);
2707       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2708                         value_copy (arr));
2709       get_discrete_bounds (type->index_type (), &lwb, &upb);
2710       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2711       type = TYPE_TARGET_TYPE (type);
2712     }
2713
2714   return value_ind (arr);
2715 }
2716
2717 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2718    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2719    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2720    this array is LOW, as per Ada rules.  */
2721 static struct value *
2722 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2723                           int low, int high)
2724 {
2725   struct type *type0 = ada_check_typedef (type);
2726   struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2727   struct type *index_type
2728     = create_static_range_type (NULL, base_index_type, low, high);
2729   struct type *slice_type = create_array_type_with_stride
2730                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2731                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2732                                TYPE_FIELD_BITSIZE (type0, 0));
2733   int base_low =  ada_discrete_type_low_bound (type0->index_type ());
2734   LONGEST base_low_pos, low_pos;
2735   CORE_ADDR base;
2736
2737   if (!discrete_position (base_index_type, low, &low_pos)
2738       || !discrete_position (base_index_type, base_low, &base_low_pos))
2739     {
2740       warning (_("unable to get positions in slice, use bounds instead"));
2741       low_pos = low;
2742       base_low_pos = base_low;
2743     }
2744
2745   base = value_as_address (array_ptr)
2746     + ((low_pos - base_low_pos)
2747        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2748   return value_at_lazy (slice_type, base);
2749 }
2750
2751
2752 static struct value *
2753 ada_value_slice (struct value *array, int low, int high)
2754 {
2755   struct type *type = ada_check_typedef (value_type (array));
2756   struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
2757   struct type *index_type
2758     = create_static_range_type (NULL, type->index_type (), low, high);
2759   struct type *slice_type = create_array_type_with_stride
2760                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2761                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2762                                TYPE_FIELD_BITSIZE (type, 0));
2763   LONGEST low_pos, high_pos;
2764
2765   if (!discrete_position (base_index_type, low, &low_pos)
2766       || !discrete_position (base_index_type, high, &high_pos))
2767     {
2768       warning (_("unable to get positions in slice, use bounds instead"));
2769       low_pos = low;
2770       high_pos = high;
2771     }
2772
2773   return value_cast (slice_type,
2774                      value_slice (array, low, high_pos - low_pos + 1));
2775 }
2776
2777 /* If type is a record type in the form of a standard GNAT array
2778    descriptor, returns the number of dimensions for type.  If arr is a
2779    simple array, returns the number of "array of"s that prefix its
2780    type designation.  Otherwise, returns 0.  */
2781
2782 int
2783 ada_array_arity (struct type *type)
2784 {
2785   int arity;
2786
2787   if (type == NULL)
2788     return 0;
2789
2790   type = desc_base_type (type);
2791
2792   arity = 0;
2793   if (type->code () == TYPE_CODE_STRUCT)
2794     return desc_arity (desc_bounds_type (type));
2795   else
2796     while (type->code () == TYPE_CODE_ARRAY)
2797       {
2798         arity += 1;
2799         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2800       }
2801
2802   return arity;
2803 }
2804
2805 /* If TYPE is a record type in the form of a standard GNAT array
2806    descriptor or a simple array type, returns the element type for
2807    TYPE after indexing by NINDICES indices, or by all indices if
2808    NINDICES is -1.  Otherwise, returns NULL.  */
2809
2810 struct type *
2811 ada_array_element_type (struct type *type, int nindices)
2812 {
2813   type = desc_base_type (type);
2814
2815   if (type->code () == TYPE_CODE_STRUCT)
2816     {
2817       int k;
2818       struct type *p_array_type;
2819
2820       p_array_type = desc_data_target_type (type);
2821
2822       k = ada_array_arity (type);
2823       if (k == 0)
2824         return NULL;
2825
2826       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2827       if (nindices >= 0 && k > nindices)
2828         k = nindices;
2829       while (k > 0 && p_array_type != NULL)
2830         {
2831           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2832           k -= 1;
2833         }
2834       return p_array_type;
2835     }
2836   else if (type->code () == TYPE_CODE_ARRAY)
2837     {
2838       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2839         {
2840           type = TYPE_TARGET_TYPE (type);
2841           nindices -= 1;
2842         }
2843       return type;
2844     }
2845
2846   return NULL;
2847 }
2848
2849 /* The type of nth index in arrays of given type (n numbering from 1).
2850    Does not examine memory.  Throws an error if N is invalid or TYPE
2851    is not an array type.  NAME is the name of the Ada attribute being
2852    evaluated ('range, 'first, 'last, or 'length); it is used in building
2853    the error message.  */
2854
2855 static struct type *
2856 ada_index_type (struct type *type, int n, const char *name)
2857 {
2858   struct type *result_type;
2859
2860   type = desc_base_type (type);
2861
2862   if (n < 0 || n > ada_array_arity (type))
2863     error (_("invalid dimension number to '%s"), name);
2864
2865   if (ada_is_simple_array_type (type))
2866     {
2867       int i;
2868
2869       for (i = 1; i < n; i += 1)
2870         type = TYPE_TARGET_TYPE (type);
2871       result_type = TYPE_TARGET_TYPE (type->index_type ());
2872       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2873          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2874          perhaps stabsread.c would make more sense.  */
2875       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2876         result_type = NULL;
2877     }
2878   else
2879     {
2880       result_type = desc_index_type (desc_bounds_type (type), n);
2881       if (result_type == NULL)
2882         error (_("attempt to take bound of something that is not an array"));
2883     }
2884
2885   return result_type;
2886 }
2887
2888 /* Given that arr is an array type, returns the lower bound of the
2889    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2890    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2891    array-descriptor type.  It works for other arrays with bounds supplied
2892    by run-time quantities other than discriminants.  */
2893
2894 static LONGEST
2895 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2896 {
2897   struct type *type, *index_type_desc, *index_type;
2898   int i;
2899
2900   gdb_assert (which == 0 || which == 1);
2901
2902   if (ada_is_constrained_packed_array_type (arr_type))
2903     arr_type = decode_constrained_packed_array_type (arr_type);
2904
2905   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2906     return (LONGEST) - which;
2907
2908   if (arr_type->code () == TYPE_CODE_PTR)
2909     type = TYPE_TARGET_TYPE (arr_type);
2910   else
2911     type = arr_type;
2912
2913   if (TYPE_FIXED_INSTANCE (type))
2914     {
2915       /* The array has already been fixed, so we do not need to
2916          check the parallel ___XA type again.  That encoding has
2917          already been applied, so ignore it now.  */
2918       index_type_desc = NULL;
2919     }
2920   else
2921     {
2922       index_type_desc = ada_find_parallel_type (type, "___XA");
2923       ada_fixup_array_indexes_type (index_type_desc);
2924     }
2925
2926   if (index_type_desc != NULL)
2927     index_type = to_fixed_range_type (index_type_desc->field (n - 1).type (),
2928                                       NULL);
2929   else
2930     {
2931       struct type *elt_type = check_typedef (type);
2932
2933       for (i = 1; i < n; i++)
2934         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2935
2936       index_type = elt_type->index_type ();
2937     }
2938
2939   return
2940     (LONGEST) (which == 0
2941                ? ada_discrete_type_low_bound (index_type)
2942                : ada_discrete_type_high_bound (index_type));
2943 }
2944
2945 /* Given that arr is an array value, returns the lower bound of the
2946    nth index (numbering from 1) if WHICH is 0, and the upper bound if
2947    WHICH is 1.  This routine will also work for arrays with bounds
2948    supplied by run-time quantities other than discriminants.  */
2949
2950 static LONGEST
2951 ada_array_bound (struct value *arr, int n, int which)
2952 {
2953   struct type *arr_type;
2954
2955   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2956     arr = value_ind (arr);
2957   arr_type = value_enclosing_type (arr);
2958
2959   if (ada_is_constrained_packed_array_type (arr_type))
2960     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
2961   else if (ada_is_simple_array_type (arr_type))
2962     return ada_array_bound_from_type (arr_type, n, which);
2963   else
2964     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
2965 }
2966
2967 /* Given that arr is an array value, returns the length of the
2968    nth index.  This routine will also work for arrays with bounds
2969    supplied by run-time quantities other than discriminants.
2970    Does not work for arrays indexed by enumeration types with representation
2971    clauses at the moment.  */
2972
2973 static LONGEST
2974 ada_array_length (struct value *arr, int n)
2975 {
2976   struct type *arr_type, *index_type;
2977   int low, high;
2978
2979   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2980     arr = value_ind (arr);
2981   arr_type = value_enclosing_type (arr);
2982
2983   if (ada_is_constrained_packed_array_type (arr_type))
2984     return ada_array_length (decode_constrained_packed_array (arr), n);
2985
2986   if (ada_is_simple_array_type (arr_type))
2987     {
2988       low = ada_array_bound_from_type (arr_type, n, 0);
2989       high = ada_array_bound_from_type (arr_type, n, 1);
2990     }
2991   else
2992     {
2993       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
2994       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
2995     }
2996
2997   arr_type = check_typedef (arr_type);
2998   index_type = ada_index_type (arr_type, n, "length");
2999   if (index_type != NULL)
3000     {
3001       struct type *base_type;
3002       if (index_type->code () == TYPE_CODE_RANGE)
3003         base_type = TYPE_TARGET_TYPE (index_type);
3004       else
3005         base_type = index_type;
3006
3007       low = pos_atr (value_from_longest (base_type, low));
3008       high = pos_atr (value_from_longest (base_type, high));
3009     }
3010   return high - low + 1;
3011 }
3012
3013 /* An array whose type is that of ARR_TYPE (an array type), with
3014    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3015    less than LOW, then LOW-1 is used.  */
3016
3017 static struct value *
3018 empty_array (struct type *arr_type, int low, int high)
3019 {
3020   struct type *arr_type0 = ada_check_typedef (arr_type);
3021   struct type *index_type
3022     = create_static_range_type
3023         (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
3024          high < low ? low - 1 : high);
3025   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3026
3027   return allocate_value (create_array_type (NULL, elt_type, index_type));
3028 }
3029 \f
3030
3031                                 /* Name resolution */
3032
3033 /* The "decoded" name for the user-definable Ada operator corresponding
3034    to OP.  */
3035
3036 static const char *
3037 ada_decoded_op_name (enum exp_opcode op)
3038 {
3039   int i;
3040
3041   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3042     {
3043       if (ada_opname_table[i].op == op)
3044         return ada_opname_table[i].decoded;
3045     }
3046   error (_("Could not find operator name for opcode"));
3047 }
3048
3049 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3050    in a listing of choices during disambiguation (see sort_choices, below).
3051    The idea is that overloadings of a subprogram name from the
3052    same package should sort in their source order.  We settle for ordering
3053    such symbols by their trailing number (__N  or $N).  */
3054
3055 static int
3056 encoded_ordered_before (const char *N0, const char *N1)
3057 {
3058   if (N1 == NULL)
3059     return 0;
3060   else if (N0 == NULL)
3061     return 1;
3062   else
3063     {
3064       int k0, k1;
3065
3066       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3067         ;
3068       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3069         ;
3070       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3071           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3072         {
3073           int n0, n1;
3074
3075           n0 = k0;
3076           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3077             n0 -= 1;
3078           n1 = k1;
3079           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3080             n1 -= 1;
3081           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3082             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3083         }
3084       return (strcmp (N0, N1) < 0);
3085     }
3086 }
3087
3088 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3089    encoded names.  */
3090
3091 static void
3092 sort_choices (struct block_symbol syms[], int nsyms)
3093 {
3094   int i;
3095
3096   for (i = 1; i < nsyms; i += 1)
3097     {
3098       struct block_symbol sym = syms[i];
3099       int j;
3100
3101       for (j = i - 1; j >= 0; j -= 1)
3102         {
3103           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3104                                       sym.symbol->linkage_name ()))
3105             break;
3106           syms[j + 1] = syms[j];
3107         }
3108       syms[j + 1] = sym;
3109     }
3110 }
3111
3112 /* Whether GDB should display formals and return types for functions in the
3113    overloads selection menu.  */
3114 static bool print_signatures = true;
3115
3116 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3117    all but functions, the signature is just the name of the symbol.  For
3118    functions, this is the name of the function, the list of types for formals
3119    and the return type (if any).  */
3120
3121 static void
3122 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3123                             const struct type_print_options *flags)
3124 {
3125   struct type *type = SYMBOL_TYPE (sym);
3126
3127   fprintf_filtered (stream, "%s", sym->print_name ());
3128   if (!print_signatures
3129       || type == NULL
3130       || type->code () != TYPE_CODE_FUNC)
3131     return;
3132
3133   if (type->num_fields () > 0)
3134     {
3135       int i;
3136
3137       fprintf_filtered (stream, " (");
3138       for (i = 0; i < type->num_fields (); ++i)
3139         {
3140           if (i > 0)
3141             fprintf_filtered (stream, "; ");
3142           ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
3143                           flags);
3144         }
3145       fprintf_filtered (stream, ")");
3146     }
3147   if (TYPE_TARGET_TYPE (type) != NULL
3148       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3149     {
3150       fprintf_filtered (stream, " return ");
3151       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3152     }
3153 }
3154
3155 /* Read and validate a set of numeric choices from the user in the
3156    range 0 .. N_CHOICES-1.  Place the results in increasing
3157    order in CHOICES[0 .. N-1], and return N.
3158
3159    The user types choices as a sequence of numbers on one line
3160    separated by blanks, encoding them as follows:
3161
3162      + A choice of 0 means to cancel the selection, throwing an error.
3163      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3164      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3165
3166    The user is not allowed to choose more than MAX_RESULTS values.
3167
3168    ANNOTATION_SUFFIX, if present, is used to annotate the input
3169    prompts (for use with the -f switch).  */
3170
3171 static int
3172 get_selections (int *choices, int n_choices, int max_results,
3173                 int is_all_choice, const char *annotation_suffix)
3174 {
3175   const char *args;
3176   const char *prompt;
3177   int n_chosen;
3178   int first_choice = is_all_choice ? 2 : 1;
3179
3180   prompt = getenv ("PS2");
3181   if (prompt == NULL)
3182     prompt = "> ";
3183
3184   args = command_line_input (prompt, annotation_suffix);
3185
3186   if (args == NULL)
3187     error_no_arg (_("one or more choice numbers"));
3188
3189   n_chosen = 0;
3190
3191   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3192      order, as given in args.  Choices are validated.  */
3193   while (1)
3194     {
3195       char *args2;
3196       int choice, j;
3197
3198       args = skip_spaces (args);
3199       if (*args == '\0' && n_chosen == 0)
3200         error_no_arg (_("one or more choice numbers"));
3201       else if (*args == '\0')
3202         break;
3203
3204       choice = strtol (args, &args2, 10);
3205       if (args == args2 || choice < 0
3206           || choice > n_choices + first_choice - 1)
3207         error (_("Argument must be choice number"));
3208       args = args2;
3209
3210       if (choice == 0)
3211         error (_("cancelled"));
3212
3213       if (choice < first_choice)
3214         {
3215           n_chosen = n_choices;
3216           for (j = 0; j < n_choices; j += 1)
3217             choices[j] = j;
3218           break;
3219         }
3220       choice -= first_choice;
3221
3222       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3223         {
3224         }
3225
3226       if (j < 0 || choice != choices[j])
3227         {
3228           int k;
3229
3230           for (k = n_chosen - 1; k > j; k -= 1)
3231             choices[k + 1] = choices[k];
3232           choices[j + 1] = choice;
3233           n_chosen += 1;
3234         }
3235     }
3236
3237   if (n_chosen > max_results)
3238     error (_("Select no more than %d of the above"), max_results);
3239
3240   return n_chosen;
3241 }
3242
3243 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3244    by asking the user (if necessary), returning the number selected,
3245    and setting the first elements of SYMS items.  Error if no symbols
3246    selected.  */
3247
3248 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3249    to be re-integrated one of these days.  */
3250
3251 static int
3252 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3253 {
3254   int i;
3255   int *chosen = XALLOCAVEC (int , nsyms);
3256   int n_chosen;
3257   int first_choice = (max_results == 1) ? 1 : 2;
3258   const char *select_mode = multiple_symbols_select_mode ();
3259
3260   if (max_results < 1)
3261     error (_("Request to select 0 symbols!"));
3262   if (nsyms <= 1)
3263     return nsyms;
3264
3265   if (select_mode == multiple_symbols_cancel)
3266     error (_("\
3267 canceled because the command is ambiguous\n\
3268 See set/show multiple-symbol."));
3269
3270   /* If select_mode is "all", then return all possible symbols.
3271      Only do that if more than one symbol can be selected, of course.
3272      Otherwise, display the menu as usual.  */
3273   if (select_mode == multiple_symbols_all && max_results > 1)
3274     return nsyms;
3275
3276   printf_filtered (_("[0] cancel\n"));
3277   if (max_results > 1)
3278     printf_filtered (_("[1] all\n"));
3279
3280   sort_choices (syms, nsyms);
3281
3282   for (i = 0; i < nsyms; i += 1)
3283     {
3284       if (syms[i].symbol == NULL)
3285         continue;
3286
3287       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3288         {
3289           struct symtab_and_line sal =
3290             find_function_start_sal (syms[i].symbol, 1);
3291
3292           printf_filtered ("[%d] ", i + first_choice);
3293           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3294                                       &type_print_raw_options);
3295           if (sal.symtab == NULL)
3296             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3297                              metadata_style.style ().ptr (), nullptr, sal.line);
3298           else
3299             printf_filtered
3300               (_(" at %ps:%d\n"),
3301                styled_string (file_name_style.style (),
3302                               symtab_to_filename_for_display (sal.symtab)),
3303                sal.line);
3304           continue;
3305         }
3306       else
3307         {
3308           int is_enumeral =
3309             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3310              && SYMBOL_TYPE (syms[i].symbol) != NULL
3311              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3312           struct symtab *symtab = NULL;
3313
3314           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3315             symtab = symbol_symtab (syms[i].symbol);
3316
3317           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3318             {
3319               printf_filtered ("[%d] ", i + first_choice);
3320               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3321                                           &type_print_raw_options);
3322               printf_filtered (_(" at %s:%d\n"),
3323                                symtab_to_filename_for_display (symtab),
3324                                SYMBOL_LINE (syms[i].symbol));
3325             }
3326           else if (is_enumeral
3327                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3328             {
3329               printf_filtered (("[%d] "), i + first_choice);
3330               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3331                               gdb_stdout, -1, 0, &type_print_raw_options);
3332               printf_filtered (_("'(%s) (enumeral)\n"),
3333                                syms[i].symbol->print_name ());
3334             }
3335           else
3336             {
3337               printf_filtered ("[%d] ", i + first_choice);
3338               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3339                                           &type_print_raw_options);
3340
3341               if (symtab != NULL)
3342                 printf_filtered (is_enumeral
3343                                  ? _(" in %s (enumeral)\n")
3344                                  : _(" at %s:?\n"),
3345                                  symtab_to_filename_for_display (symtab));
3346               else
3347                 printf_filtered (is_enumeral
3348                                  ? _(" (enumeral)\n")
3349                                  : _(" at ?\n"));
3350             }
3351         }
3352     }
3353
3354   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3355                              "overload-choice");
3356
3357   for (i = 0; i < n_chosen; i += 1)
3358     syms[i] = syms[chosen[i]];
3359
3360   return n_chosen;
3361 }
3362
3363 /* Resolve the operator of the subexpression beginning at
3364    position *POS of *EXPP.  "Resolving" consists of replacing
3365    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3366    with their resolutions, replacing built-in operators with
3367    function calls to user-defined operators, where appropriate, and,
3368    when DEPROCEDURE_P is non-zero, converting function-valued variables
3369    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3370    are as in ada_resolve, above.  */
3371
3372 static struct value *
3373 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3374                 struct type *context_type, int parse_completion,
3375                 innermost_block_tracker *tracker)
3376 {
3377   int pc = *pos;
3378   int i;
3379   struct expression *exp;       /* Convenience: == *expp.  */
3380   enum exp_opcode op = (*expp)->elts[pc].opcode;
3381   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3382   int nargs;                    /* Number of operands.  */
3383   int oplen;
3384
3385   argvec = NULL;
3386   nargs = 0;
3387   exp = expp->get ();
3388
3389   /* Pass one: resolve operands, saving their types and updating *pos,
3390      if needed.  */
3391   switch (op)
3392     {
3393     case OP_FUNCALL:
3394       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3395           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3396         *pos += 7;
3397       else
3398         {
3399           *pos += 3;
3400           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3401         }
3402       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3403       break;
3404
3405     case UNOP_ADDR:
3406       *pos += 1;
3407       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3408       break;
3409
3410     case UNOP_QUAL:
3411       *pos += 3;
3412       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3413                       parse_completion, tracker);
3414       break;
3415
3416     case OP_ATR_MODULUS:
3417     case OP_ATR_SIZE:
3418     case OP_ATR_TAG:
3419     case OP_ATR_FIRST:
3420     case OP_ATR_LAST:
3421     case OP_ATR_LENGTH:
3422     case OP_ATR_POS:
3423     case OP_ATR_VAL:
3424     case OP_ATR_MIN:
3425     case OP_ATR_MAX:
3426     case TERNOP_IN_RANGE:
3427     case BINOP_IN_BOUNDS:
3428     case UNOP_IN_RANGE:
3429     case OP_AGGREGATE:
3430     case OP_OTHERS:
3431     case OP_CHOICES:
3432     case OP_POSITIONAL:
3433     case OP_DISCRETE_RANGE:
3434     case OP_NAME:
3435       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3436       *pos += oplen;
3437       break;
3438
3439     case BINOP_ASSIGN:
3440       {
3441         struct value *arg1;
3442
3443         *pos += 1;
3444         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3445         if (arg1 == NULL)
3446           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3447         else
3448           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3449                           tracker);
3450         break;
3451       }
3452
3453     case UNOP_CAST:
3454       *pos += 3;
3455       nargs = 1;
3456       break;
3457
3458     case BINOP_ADD:
3459     case BINOP_SUB:
3460     case BINOP_MUL:
3461     case BINOP_DIV:
3462     case BINOP_REM:
3463     case BINOP_MOD:
3464     case BINOP_EXP:
3465     case BINOP_CONCAT:
3466     case BINOP_LOGICAL_AND:
3467     case BINOP_LOGICAL_OR:
3468     case BINOP_BITWISE_AND:
3469     case BINOP_BITWISE_IOR:
3470     case BINOP_BITWISE_XOR:
3471
3472     case BINOP_EQUAL:
3473     case BINOP_NOTEQUAL:
3474     case BINOP_LESS:
3475     case BINOP_GTR:
3476     case BINOP_LEQ:
3477     case BINOP_GEQ:
3478
3479     case BINOP_REPEAT:
3480     case BINOP_SUBSCRIPT:
3481     case BINOP_COMMA:
3482       *pos += 1;
3483       nargs = 2;
3484       break;
3485
3486     case UNOP_NEG:
3487     case UNOP_PLUS:
3488     case UNOP_LOGICAL_NOT:
3489     case UNOP_ABS:
3490     case UNOP_IND:
3491       *pos += 1;
3492       nargs = 1;
3493       break;
3494
3495     case OP_LONG:
3496     case OP_FLOAT:
3497     case OP_VAR_VALUE:
3498     case OP_VAR_MSYM_VALUE:
3499       *pos += 4;
3500       break;
3501
3502     case OP_TYPE:
3503     case OP_BOOL:
3504     case OP_LAST:
3505     case OP_INTERNALVAR:
3506       *pos += 3;
3507       break;
3508
3509     case UNOP_MEMVAL:
3510       *pos += 3;
3511       nargs = 1;
3512       break;
3513
3514     case OP_REGISTER:
3515       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3516       break;
3517
3518     case STRUCTOP_STRUCT:
3519       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3520       nargs = 1;
3521       break;
3522
3523     case TERNOP_SLICE:
3524       *pos += 1;
3525       nargs = 3;
3526       break;
3527
3528     case OP_STRING:
3529       break;
3530
3531     default:
3532       error (_("Unexpected operator during name resolution"));
3533     }
3534
3535   argvec = XALLOCAVEC (struct value *, nargs + 1);
3536   for (i = 0; i < nargs; i += 1)
3537     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3538                                 tracker);
3539   argvec[i] = NULL;
3540   exp = expp->get ();
3541
3542   /* Pass two: perform any resolution on principal operator.  */
3543   switch (op)
3544     {
3545     default:
3546       break;
3547
3548     case OP_VAR_VALUE:
3549       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3550         {
3551           std::vector<struct block_symbol> candidates;
3552           int n_candidates;
3553
3554           n_candidates =
3555             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3556                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3557                                     &candidates);
3558
3559           if (n_candidates > 1)
3560             {
3561               /* Types tend to get re-introduced locally, so if there
3562                  are any local symbols that are not types, first filter
3563                  out all types.  */
3564               int j;
3565               for (j = 0; j < n_candidates; j += 1)
3566                 switch (SYMBOL_CLASS (candidates[j].symbol))
3567                   {
3568                   case LOC_REGISTER:
3569                   case LOC_ARG:
3570                   case LOC_REF_ARG:
3571                   case LOC_REGPARM_ADDR:
3572                   case LOC_LOCAL:
3573                   case LOC_COMPUTED:
3574                     goto FoundNonType;
3575                   default:
3576                     break;
3577                   }
3578             FoundNonType:
3579               if (j < n_candidates)
3580                 {
3581                   j = 0;
3582                   while (j < n_candidates)
3583                     {
3584                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3585                         {
3586                           candidates[j] = candidates[n_candidates - 1];
3587                           n_candidates -= 1;
3588                         }
3589                       else
3590                         j += 1;
3591                     }
3592                 }
3593             }
3594
3595           if (n_candidates == 0)
3596             error (_("No definition found for %s"),
3597                    exp->elts[pc + 2].symbol->print_name ());
3598           else if (n_candidates == 1)
3599             i = 0;
3600           else if (deprocedure_p
3601                    && !is_nonfunction (candidates.data (), n_candidates))
3602             {
3603               i = ada_resolve_function
3604                 (candidates.data (), n_candidates, NULL, 0,
3605                  exp->elts[pc + 2].symbol->linkage_name (),
3606                  context_type, parse_completion);
3607               if (i < 0)
3608                 error (_("Could not find a match for %s"),
3609                        exp->elts[pc + 2].symbol->print_name ());
3610             }
3611           else
3612             {
3613               printf_filtered (_("Multiple matches for %s\n"),
3614                                exp->elts[pc + 2].symbol->print_name ());
3615               user_select_syms (candidates.data (), n_candidates, 1);
3616               i = 0;
3617             }
3618
3619           exp->elts[pc + 1].block = candidates[i].block;
3620           exp->elts[pc + 2].symbol = candidates[i].symbol;
3621           tracker->update (candidates[i]);
3622         }
3623
3624       if (deprocedure_p
3625           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3626               == TYPE_CODE_FUNC))
3627         {
3628           replace_operator_with_call (expp, pc, 0, 4,
3629                                       exp->elts[pc + 2].symbol,
3630                                       exp->elts[pc + 1].block);
3631           exp = expp->get ();
3632         }
3633       break;
3634
3635     case OP_FUNCALL:
3636       {
3637         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3638             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3639           {
3640             std::vector<struct block_symbol> candidates;
3641             int n_candidates;
3642
3643             n_candidates =
3644               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3645                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3646                                       &candidates);
3647
3648             if (n_candidates == 1)
3649               i = 0;
3650             else
3651               {
3652                 i = ada_resolve_function
3653                   (candidates.data (), n_candidates,
3654                    argvec, nargs,
3655                    exp->elts[pc + 5].symbol->linkage_name (),
3656                    context_type, parse_completion);
3657                 if (i < 0)
3658                   error (_("Could not find a match for %s"),
3659                          exp->elts[pc + 5].symbol->print_name ());
3660               }
3661
3662             exp->elts[pc + 4].block = candidates[i].block;
3663             exp->elts[pc + 5].symbol = candidates[i].symbol;
3664             tracker->update (candidates[i]);
3665           }
3666       }
3667       break;
3668     case BINOP_ADD:
3669     case BINOP_SUB:
3670     case BINOP_MUL:
3671     case BINOP_DIV:
3672     case BINOP_REM:
3673     case BINOP_MOD:
3674     case BINOP_CONCAT:
3675     case BINOP_BITWISE_AND:
3676     case BINOP_BITWISE_IOR:
3677     case BINOP_BITWISE_XOR:
3678     case BINOP_EQUAL:
3679     case BINOP_NOTEQUAL:
3680     case BINOP_LESS:
3681     case BINOP_GTR:
3682     case BINOP_LEQ:
3683     case BINOP_GEQ:
3684     case BINOP_EXP:
3685     case UNOP_NEG:
3686     case UNOP_PLUS:
3687     case UNOP_LOGICAL_NOT:
3688     case UNOP_ABS:
3689       if (possible_user_operator_p (op, argvec))
3690         {
3691           std::vector<struct block_symbol> candidates;
3692           int n_candidates;
3693
3694           n_candidates =
3695             ada_lookup_symbol_list (ada_decoded_op_name (op),
3696                                     NULL, VAR_DOMAIN,
3697                                     &candidates);
3698
3699           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3700                                     nargs, ada_decoded_op_name (op), NULL,
3701                                     parse_completion);
3702           if (i < 0)
3703             break;
3704
3705           replace_operator_with_call (expp, pc, nargs, 1,
3706                                       candidates[i].symbol,
3707                                       candidates[i].block);
3708           exp = expp->get ();
3709         }
3710       break;
3711
3712     case OP_TYPE:
3713     case OP_REGISTER:
3714       return NULL;
3715     }
3716
3717   *pos = pc;
3718   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3719     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3720                                     exp->elts[pc + 1].objfile,
3721                                     exp->elts[pc + 2].msymbol);
3722   else
3723     return evaluate_subexp_type (exp, pos);
3724 }
3725
3726 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3727    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3728    a non-pointer.  */
3729 /* The term "match" here is rather loose.  The match is heuristic and
3730    liberal.  */
3731
3732 static int
3733 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3734 {
3735   ftype = ada_check_typedef (ftype);
3736   atype = ada_check_typedef (atype);
3737
3738   if (ftype->code () == TYPE_CODE_REF)
3739     ftype = TYPE_TARGET_TYPE (ftype);
3740   if (atype->code () == TYPE_CODE_REF)
3741     atype = TYPE_TARGET_TYPE (atype);
3742
3743   switch (ftype->code ())
3744     {
3745     default:
3746       return ftype->code () == atype->code ();
3747     case TYPE_CODE_PTR:
3748       if (atype->code () == TYPE_CODE_PTR)
3749         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3750                                TYPE_TARGET_TYPE (atype), 0);
3751       else
3752         return (may_deref
3753                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3754     case TYPE_CODE_INT:
3755     case TYPE_CODE_ENUM:
3756     case TYPE_CODE_RANGE:
3757       switch (atype->code ())
3758         {
3759         case TYPE_CODE_INT:
3760         case TYPE_CODE_ENUM:
3761         case TYPE_CODE_RANGE:
3762           return 1;
3763         default:
3764           return 0;
3765         }
3766
3767     case TYPE_CODE_ARRAY:
3768       return (atype->code () == TYPE_CODE_ARRAY
3769               || ada_is_array_descriptor_type (atype));
3770
3771     case TYPE_CODE_STRUCT:
3772       if (ada_is_array_descriptor_type (ftype))
3773         return (atype->code () == TYPE_CODE_ARRAY
3774                 || ada_is_array_descriptor_type (atype));
3775       else
3776         return (atype->code () == TYPE_CODE_STRUCT
3777                 && !ada_is_array_descriptor_type (atype));
3778
3779     case TYPE_CODE_UNION:
3780     case TYPE_CODE_FLT:
3781       return (atype->code () == ftype->code ());
3782     }
3783 }
3784
3785 /* Return non-zero if the formals of FUNC "sufficiently match" the
3786    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3787    may also be an enumeral, in which case it is treated as a 0-
3788    argument function.  */
3789
3790 static int
3791 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3792 {
3793   int i;
3794   struct type *func_type = SYMBOL_TYPE (func);
3795
3796   if (SYMBOL_CLASS (func) == LOC_CONST
3797       && func_type->code () == TYPE_CODE_ENUM)
3798     return (n_actuals == 0);
3799   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3800     return 0;
3801
3802   if (func_type->num_fields () != n_actuals)
3803     return 0;
3804
3805   for (i = 0; i < n_actuals; i += 1)
3806     {
3807       if (actuals[i] == NULL)
3808         return 0;
3809       else
3810         {
3811           struct type *ftype = ada_check_typedef (func_type->field (i).type ());
3812           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3813
3814           if (!ada_type_match (ftype, atype, 1))
3815             return 0;
3816         }
3817     }
3818   return 1;
3819 }
3820
3821 /* False iff function type FUNC_TYPE definitely does not produce a value
3822    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3823    FUNC_TYPE is not a valid function type with a non-null return type
3824    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3825
3826 static int
3827 return_match (struct type *func_type, struct type *context_type)
3828 {
3829   struct type *return_type;
3830
3831   if (func_type == NULL)
3832     return 1;
3833
3834   if (func_type->code () == TYPE_CODE_FUNC)
3835     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3836   else
3837     return_type = get_base_type (func_type);
3838   if (return_type == NULL)
3839     return 1;
3840
3841   context_type = get_base_type (context_type);
3842
3843   if (return_type->code () == TYPE_CODE_ENUM)
3844     return context_type == NULL || return_type == context_type;
3845   else if (context_type == NULL)
3846     return return_type->code () != TYPE_CODE_VOID;
3847   else
3848     return return_type->code () == context_type->code ();
3849 }
3850
3851
3852 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3853    function (if any) that matches the types of the NARGS arguments in
3854    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3855    that returns that type, then eliminate matches that don't.  If
3856    CONTEXT_TYPE is void and there is at least one match that does not
3857    return void, eliminate all matches that do.
3858
3859    Asks the user if there is more than one match remaining.  Returns -1
3860    if there is no such symbol or none is selected.  NAME is used
3861    solely for messages.  May re-arrange and modify SYMS in
3862    the process; the index returned is for the modified vector.  */
3863
3864 static int
3865 ada_resolve_function (struct block_symbol syms[],
3866                       int nsyms, struct value **args, int nargs,
3867                       const char *name, struct type *context_type,
3868                       int parse_completion)
3869 {
3870   int fallback;
3871   int k;
3872   int m;                        /* Number of hits */
3873
3874   m = 0;
3875   /* In the first pass of the loop, we only accept functions matching
3876      context_type.  If none are found, we add a second pass of the loop
3877      where every function is accepted.  */
3878   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3879     {
3880       for (k = 0; k < nsyms; k += 1)
3881         {
3882           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3883
3884           if (ada_args_match (syms[k].symbol, args, nargs)
3885               && (fallback || return_match (type, context_type)))
3886             {
3887               syms[m] = syms[k];
3888               m += 1;
3889             }
3890         }
3891     }
3892
3893   /* If we got multiple matches, ask the user which one to use.  Don't do this
3894      interactive thing during completion, though, as the purpose of the
3895      completion is providing a list of all possible matches.  Prompting the
3896      user to filter it down would be completely unexpected in this case.  */
3897   if (m == 0)
3898     return -1;
3899   else if (m > 1 && !parse_completion)
3900     {
3901       printf_filtered (_("Multiple matches for %s\n"), name);
3902       user_select_syms (syms, m, 1);
3903       return 0;
3904     }
3905   return 0;
3906 }
3907
3908 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3909    on the function identified by SYM and BLOCK, and taking NARGS
3910    arguments.  Update *EXPP as needed to hold more space.  */
3911
3912 static void
3913 replace_operator_with_call (expression_up *expp, int pc, int nargs,
3914                             int oplen, struct symbol *sym,
3915                             const struct block *block)
3916 {
3917   /* A new expression, with 6 more elements (3 for funcall, 4 for function
3918      symbol, -oplen for operator being replaced).  */
3919   struct expression *newexp = (struct expression *)
3920     xzalloc (sizeof (struct expression)
3921              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3922   struct expression *exp = expp->get ();
3923
3924   newexp->nelts = exp->nelts + 7 - oplen;
3925   newexp->language_defn = exp->language_defn;
3926   newexp->gdbarch = exp->gdbarch;
3927   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3928   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3929           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3930
3931   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3932   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3933
3934   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3935   newexp->elts[pc + 4].block = block;
3936   newexp->elts[pc + 5].symbol = sym;
3937
3938   expp->reset (newexp);
3939 }
3940
3941 /* Type-class predicates */
3942
3943 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3944    or FLOAT).  */
3945
3946 static int
3947 numeric_type_p (struct type *type)
3948 {
3949   if (type == NULL)
3950     return 0;
3951   else
3952     {
3953       switch (type->code ())
3954         {
3955         case TYPE_CODE_INT:
3956         case TYPE_CODE_FLT:
3957           return 1;
3958         case TYPE_CODE_RANGE:
3959           return (type == TYPE_TARGET_TYPE (type)
3960                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
3961         default:
3962           return 0;
3963         }
3964     }
3965 }
3966
3967 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
3968
3969 static int
3970 integer_type_p (struct type *type)
3971 {
3972   if (type == NULL)
3973     return 0;
3974   else
3975     {
3976       switch (type->code ())
3977         {
3978         case TYPE_CODE_INT:
3979           return 1;
3980         case TYPE_CODE_RANGE:
3981           return (type == TYPE_TARGET_TYPE (type)
3982                   || integer_type_p (TYPE_TARGET_TYPE (type)));
3983         default:
3984           return 0;
3985         }
3986     }
3987 }
3988
3989 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
3990
3991 static int
3992 scalar_type_p (struct type *type)
3993 {
3994   if (type == NULL)
3995     return 0;
3996   else
3997     {
3998       switch (type->code ())
3999         {
4000         case TYPE_CODE_INT:
4001         case TYPE_CODE_RANGE:
4002         case TYPE_CODE_ENUM:
4003         case TYPE_CODE_FLT:
4004           return 1;
4005         default:
4006           return 0;
4007         }
4008     }
4009 }
4010
4011 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4012
4013 static int
4014 discrete_type_p (struct type *type)
4015 {
4016   if (type == NULL)
4017     return 0;
4018   else
4019     {
4020       switch (type->code ())
4021         {
4022         case TYPE_CODE_INT:
4023         case TYPE_CODE_RANGE:
4024         case TYPE_CODE_ENUM:
4025         case TYPE_CODE_BOOL:
4026           return 1;
4027         default:
4028           return 0;
4029         }
4030     }
4031 }
4032
4033 /* Returns non-zero if OP with operands in the vector ARGS could be
4034    a user-defined function.  Errs on the side of pre-defined operators
4035    (i.e., result 0).  */
4036
4037 static int
4038 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4039 {
4040   struct type *type0 =
4041     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4042   struct type *type1 =
4043     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4044
4045   if (type0 == NULL)
4046     return 0;
4047
4048   switch (op)
4049     {
4050     default:
4051       return 0;
4052
4053     case BINOP_ADD:
4054     case BINOP_SUB:
4055     case BINOP_MUL:
4056     case BINOP_DIV:
4057       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4058
4059     case BINOP_REM:
4060     case BINOP_MOD:
4061     case BINOP_BITWISE_AND:
4062     case BINOP_BITWISE_IOR:
4063     case BINOP_BITWISE_XOR:
4064       return (!(integer_type_p (type0) && integer_type_p (type1)));
4065
4066     case BINOP_EQUAL:
4067     case BINOP_NOTEQUAL:
4068     case BINOP_LESS:
4069     case BINOP_GTR:
4070     case BINOP_LEQ:
4071     case BINOP_GEQ:
4072       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4073
4074     case BINOP_CONCAT:
4075       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4076
4077     case BINOP_EXP:
4078       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4079
4080     case UNOP_NEG:
4081     case UNOP_PLUS:
4082     case UNOP_LOGICAL_NOT:
4083     case UNOP_ABS:
4084       return (!numeric_type_p (type0));
4085
4086     }
4087 }
4088 \f
4089                                 /* Renaming */
4090
4091 /* NOTES: 
4092
4093    1. In the following, we assume that a renaming type's name may
4094       have an ___XD suffix.  It would be nice if this went away at some
4095       point.
4096    2. We handle both the (old) purely type-based representation of 
4097       renamings and the (new) variable-based encoding.  At some point,
4098       it is devoutly to be hoped that the former goes away 
4099       (FIXME: hilfinger-2007-07-09).
4100    3. Subprogram renamings are not implemented, although the XRS
4101       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4102
4103 /* If SYM encodes a renaming, 
4104
4105        <renaming> renames <renamed entity>,
4106
4107    sets *LEN to the length of the renamed entity's name,
4108    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4109    the string describing the subcomponent selected from the renamed
4110    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4111    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4112    are undefined).  Otherwise, returns a value indicating the category
4113    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4114    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4115    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4116    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4117    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4118    may be NULL, in which case they are not assigned.
4119
4120    [Currently, however, GCC does not generate subprogram renamings.]  */
4121
4122 enum ada_renaming_category
4123 ada_parse_renaming (struct symbol *sym,
4124                     const char **renamed_entity, int *len, 
4125                     const char **renaming_expr)
4126 {
4127   enum ada_renaming_category kind;
4128   const char *info;
4129   const char *suffix;
4130
4131   if (sym == NULL)
4132     return ADA_NOT_RENAMING;
4133   switch (SYMBOL_CLASS (sym)) 
4134     {
4135     default:
4136       return ADA_NOT_RENAMING;
4137     case LOC_LOCAL:
4138     case LOC_STATIC:
4139     case LOC_COMPUTED:
4140     case LOC_OPTIMIZED_OUT:
4141       info = strstr (sym->linkage_name (), "___XR");
4142       if (info == NULL)
4143         return ADA_NOT_RENAMING;
4144       switch (info[5])
4145         {
4146         case '_':
4147           kind = ADA_OBJECT_RENAMING;
4148           info += 6;
4149           break;
4150         case 'E':
4151           kind = ADA_EXCEPTION_RENAMING;
4152           info += 7;
4153           break;
4154         case 'P':
4155           kind = ADA_PACKAGE_RENAMING;
4156           info += 7;
4157           break;
4158         case 'S':
4159           kind = ADA_SUBPROGRAM_RENAMING;
4160           info += 7;
4161           break;
4162         default:
4163           return ADA_NOT_RENAMING;
4164         }
4165     }
4166
4167   if (renamed_entity != NULL)
4168     *renamed_entity = info;
4169   suffix = strstr (info, "___XE");
4170   if (suffix == NULL || suffix == info)
4171     return ADA_NOT_RENAMING;
4172   if (len != NULL)
4173     *len = strlen (info) - strlen (suffix);
4174   suffix += 5;
4175   if (renaming_expr != NULL)
4176     *renaming_expr = suffix;
4177   return kind;
4178 }
4179
4180 /* Compute the value of the given RENAMING_SYM, which is expected to
4181    be a symbol encoding a renaming expression.  BLOCK is the block
4182    used to evaluate the renaming.  */
4183
4184 static struct value *
4185 ada_read_renaming_var_value (struct symbol *renaming_sym,
4186                              const struct block *block)
4187 {
4188   const char *sym_name;
4189
4190   sym_name = renaming_sym->linkage_name ();
4191   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4192   return evaluate_expression (expr.get ());
4193 }
4194 \f
4195
4196                                 /* Evaluation: Function Calls */
4197
4198 /* Return an lvalue containing the value VAL.  This is the identity on
4199    lvalues, and otherwise has the side-effect of allocating memory
4200    in the inferior where a copy of the value contents is copied.  */
4201
4202 static struct value *
4203 ensure_lval (struct value *val)
4204 {
4205   if (VALUE_LVAL (val) == not_lval
4206       || VALUE_LVAL (val) == lval_internalvar)
4207     {
4208       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4209       const CORE_ADDR addr =
4210         value_as_long (value_allocate_space_in_inferior (len));
4211
4212       VALUE_LVAL (val) = lval_memory;
4213       set_value_address (val, addr);
4214       write_memory (addr, value_contents (val), len);
4215     }
4216
4217   return val;
4218 }
4219
4220 /* Given ARG, a value of type (pointer or reference to a)*
4221    structure/union, extract the component named NAME from the ultimate
4222    target structure/union and return it as a value with its
4223    appropriate type.
4224
4225    The routine searches for NAME among all members of the structure itself
4226    and (recursively) among all members of any wrapper members
4227    (e.g., '_parent').
4228
4229    If NO_ERR, then simply return NULL in case of error, rather than
4230    calling error.  */
4231
4232 static struct value *
4233 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4234 {
4235   struct type *t, *t1;
4236   struct value *v;
4237   int check_tag;
4238
4239   v = NULL;
4240   t1 = t = ada_check_typedef (value_type (arg));
4241   if (t->code () == TYPE_CODE_REF)
4242     {
4243       t1 = TYPE_TARGET_TYPE (t);
4244       if (t1 == NULL)
4245         goto BadValue;
4246       t1 = ada_check_typedef (t1);
4247       if (t1->code () == TYPE_CODE_PTR)
4248         {
4249           arg = coerce_ref (arg);
4250           t = t1;
4251         }
4252     }
4253
4254   while (t->code () == TYPE_CODE_PTR)
4255     {
4256       t1 = TYPE_TARGET_TYPE (t);
4257       if (t1 == NULL)
4258         goto BadValue;
4259       t1 = ada_check_typedef (t1);
4260       if (t1->code () == TYPE_CODE_PTR)
4261         {
4262           arg = value_ind (arg);
4263           t = t1;
4264         }
4265       else
4266         break;
4267     }
4268
4269   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4270     goto BadValue;
4271
4272   if (t1 == t)
4273     v = ada_search_struct_field (name, arg, 0, t);
4274   else
4275     {
4276       int bit_offset, bit_size, byte_offset;
4277       struct type *field_type;
4278       CORE_ADDR address;
4279
4280       if (t->code () == TYPE_CODE_PTR)
4281         address = value_address (ada_value_ind (arg));
4282       else
4283         address = value_address (ada_coerce_ref (arg));
4284
4285       /* Check to see if this is a tagged type.  We also need to handle
4286          the case where the type is a reference to a tagged type, but
4287          we have to be careful to exclude pointers to tagged types.
4288          The latter should be shown as usual (as a pointer), whereas
4289          a reference should mostly be transparent to the user.  */
4290
4291       if (ada_is_tagged_type (t1, 0)
4292           || (t1->code () == TYPE_CODE_REF
4293               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4294         {
4295           /* We first try to find the searched field in the current type.
4296              If not found then let's look in the fixed type.  */
4297
4298           if (!find_struct_field (name, t1, 0,
4299                                   &field_type, &byte_offset, &bit_offset,
4300                                   &bit_size, NULL))
4301             check_tag = 1;
4302           else
4303             check_tag = 0;
4304         }
4305       else
4306         check_tag = 0;
4307
4308       /* Convert to fixed type in all cases, so that we have proper
4309          offsets to each field in unconstrained record types.  */
4310       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4311                               address, NULL, check_tag);
4312
4313       if (find_struct_field (name, t1, 0,
4314                              &field_type, &byte_offset, &bit_offset,
4315                              &bit_size, NULL))
4316         {
4317           if (bit_size != 0)
4318             {
4319               if (t->code () == TYPE_CODE_REF)
4320                 arg = ada_coerce_ref (arg);
4321               else
4322                 arg = ada_value_ind (arg);
4323               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4324                                                   bit_offset, bit_size,
4325                                                   field_type);
4326             }
4327           else
4328             v = value_at_lazy (field_type, address + byte_offset);
4329         }
4330     }
4331
4332   if (v != NULL || no_err)
4333     return v;
4334   else
4335     error (_("There is no member named %s."), name);
4336
4337  BadValue:
4338   if (no_err)
4339     return NULL;
4340   else
4341     error (_("Attempt to extract a component of "
4342              "a value that is not a record."));
4343 }
4344
4345 /* Return the value ACTUAL, converted to be an appropriate value for a
4346    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4347    allocating any necessary descriptors (fat pointers), or copies of
4348    values not residing in memory, updating it as needed.  */
4349
4350 struct value *
4351 ada_convert_actual (struct value *actual, struct type *formal_type0)
4352 {
4353   struct type *actual_type = ada_check_typedef (value_type (actual));
4354   struct type *formal_type = ada_check_typedef (formal_type0);
4355   struct type *formal_target =
4356     formal_type->code () == TYPE_CODE_PTR
4357     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4358   struct type *actual_target =
4359     actual_type->code () == TYPE_CODE_PTR
4360     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4361
4362   if (ada_is_array_descriptor_type (formal_target)
4363       && actual_target->code () == TYPE_CODE_ARRAY)
4364     return make_array_descriptor (formal_type, actual);
4365   else if (formal_type->code () == TYPE_CODE_PTR
4366            || formal_type->code () == TYPE_CODE_REF)
4367     {
4368       struct value *result;
4369
4370       if (formal_target->code () == TYPE_CODE_ARRAY
4371           && ada_is_array_descriptor_type (actual_target))
4372         result = desc_data (actual);
4373       else if (formal_type->code () != TYPE_CODE_PTR)
4374         {
4375           if (VALUE_LVAL (actual) != lval_memory)
4376             {
4377               struct value *val;
4378
4379               actual_type = ada_check_typedef (value_type (actual));
4380               val = allocate_value (actual_type);
4381               memcpy ((char *) value_contents_raw (val),
4382                       (char *) value_contents (actual),
4383                       TYPE_LENGTH (actual_type));
4384               actual = ensure_lval (val);
4385             }
4386           result = value_addr (actual);
4387         }
4388       else
4389         return actual;
4390       return value_cast_pointers (formal_type, result, 0);
4391     }
4392   else if (actual_type->code () == TYPE_CODE_PTR)
4393     return ada_value_ind (actual);
4394   else if (ada_is_aligner_type (formal_type))
4395     {
4396       /* We need to turn this parameter into an aligner type
4397          as well.  */
4398       struct value *aligner = allocate_value (formal_type);
4399       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4400
4401       value_assign_to_component (aligner, component, actual);
4402       return aligner;
4403     }
4404
4405   return actual;
4406 }
4407
4408 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4409    type TYPE.  This is usually an inefficient no-op except on some targets
4410    (such as AVR) where the representation of a pointer and an address
4411    differs.  */
4412
4413 static CORE_ADDR
4414 value_pointer (struct value *value, struct type *type)
4415 {
4416   struct gdbarch *gdbarch = get_type_arch (type);
4417   unsigned len = TYPE_LENGTH (type);
4418   gdb_byte *buf = (gdb_byte *) alloca (len);
4419   CORE_ADDR addr;
4420
4421   addr = value_address (value);
4422   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4423   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4424   return addr;
4425 }
4426
4427
4428 /* Push a descriptor of type TYPE for array value ARR on the stack at
4429    *SP, updating *SP to reflect the new descriptor.  Return either
4430    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4431    to-descriptor type rather than a descriptor type), a struct value *
4432    representing a pointer to this descriptor.  */
4433
4434 static struct value *
4435 make_array_descriptor (struct type *type, struct value *arr)
4436 {
4437   struct type *bounds_type = desc_bounds_type (type);
4438   struct type *desc_type = desc_base_type (type);
4439   struct value *descriptor = allocate_value (desc_type);
4440   struct value *bounds = allocate_value (bounds_type);
4441   int i;
4442
4443   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4444        i > 0; i -= 1)
4445     {
4446       modify_field (value_type (bounds), value_contents_writeable (bounds),
4447                     ada_array_bound (arr, i, 0),
4448                     desc_bound_bitpos (bounds_type, i, 0),
4449                     desc_bound_bitsize (bounds_type, i, 0));
4450       modify_field (value_type (bounds), value_contents_writeable (bounds),
4451                     ada_array_bound (arr, i, 1),
4452                     desc_bound_bitpos (bounds_type, i, 1),
4453                     desc_bound_bitsize (bounds_type, i, 1));
4454     }
4455
4456   bounds = ensure_lval (bounds);
4457
4458   modify_field (value_type (descriptor),
4459                 value_contents_writeable (descriptor),
4460                 value_pointer (ensure_lval (arr),
4461                                desc_type->field (0).type ()),
4462                 fat_pntr_data_bitpos (desc_type),
4463                 fat_pntr_data_bitsize (desc_type));
4464
4465   modify_field (value_type (descriptor),
4466                 value_contents_writeable (descriptor),
4467                 value_pointer (bounds,
4468                                desc_type->field (1).type ()),
4469                 fat_pntr_bounds_bitpos (desc_type),
4470                 fat_pntr_bounds_bitsize (desc_type));
4471
4472   descriptor = ensure_lval (descriptor);
4473
4474   if (type->code () == TYPE_CODE_PTR)
4475     return value_addr (descriptor);
4476   else
4477     return descriptor;
4478 }
4479 \f
4480                                 /* Symbol Cache Module */
4481
4482 /* Performance measurements made as of 2010-01-15 indicate that
4483    this cache does bring some noticeable improvements.  Depending
4484    on the type of entity being printed, the cache can make it as much
4485    as an order of magnitude faster than without it.
4486
4487    The descriptive type DWARF extension has significantly reduced
4488    the need for this cache, at least when DWARF is being used.  However,
4489    even in this case, some expensive name-based symbol searches are still
4490    sometimes necessary - to find an XVZ variable, mostly.  */
4491
4492 /* Initialize the contents of SYM_CACHE.  */
4493
4494 static void
4495 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4496 {
4497   obstack_init (&sym_cache->cache_space);
4498   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4499 }
4500
4501 /* Free the memory used by SYM_CACHE.  */
4502
4503 static void
4504 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4505 {
4506   obstack_free (&sym_cache->cache_space, NULL);
4507   xfree (sym_cache);
4508 }
4509
4510 /* Return the symbol cache associated to the given program space PSPACE.
4511    If not allocated for this PSPACE yet, allocate and initialize one.  */
4512
4513 static struct ada_symbol_cache *
4514 ada_get_symbol_cache (struct program_space *pspace)
4515 {
4516   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4517
4518   if (pspace_data->sym_cache == NULL)
4519     {
4520       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4521       ada_init_symbol_cache (pspace_data->sym_cache);
4522     }
4523
4524   return pspace_data->sym_cache;
4525 }
4526
4527 /* Clear all entries from the symbol cache.  */
4528
4529 static void
4530 ada_clear_symbol_cache (void)
4531 {
4532   struct ada_symbol_cache *sym_cache
4533     = ada_get_symbol_cache (current_program_space);
4534
4535   obstack_free (&sym_cache->cache_space, NULL);
4536   ada_init_symbol_cache (sym_cache);
4537 }
4538
4539 /* Search our cache for an entry matching NAME and DOMAIN.
4540    Return it if found, or NULL otherwise.  */
4541
4542 static struct cache_entry **
4543 find_entry (const char *name, domain_enum domain)
4544 {
4545   struct ada_symbol_cache *sym_cache
4546     = ada_get_symbol_cache (current_program_space);
4547   int h = msymbol_hash (name) % HASH_SIZE;
4548   struct cache_entry **e;
4549
4550   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4551     {
4552       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4553         return e;
4554     }
4555   return NULL;
4556 }
4557
4558 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4559    Return 1 if found, 0 otherwise.
4560
4561    If an entry was found and SYM is not NULL, set *SYM to the entry's
4562    SYM.  Same principle for BLOCK if not NULL.  */
4563
4564 static int
4565 lookup_cached_symbol (const char *name, domain_enum domain,
4566                       struct symbol **sym, const struct block **block)
4567 {
4568   struct cache_entry **e = find_entry (name, domain);
4569
4570   if (e == NULL)
4571     return 0;
4572   if (sym != NULL)
4573     *sym = (*e)->sym;
4574   if (block != NULL)
4575     *block = (*e)->block;
4576   return 1;
4577 }
4578
4579 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4580    in domain DOMAIN, save this result in our symbol cache.  */
4581
4582 static void
4583 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4584               const struct block *block)
4585 {
4586   struct ada_symbol_cache *sym_cache
4587     = ada_get_symbol_cache (current_program_space);
4588   int h;
4589   struct cache_entry *e;
4590
4591   /* Symbols for builtin types don't have a block.
4592      For now don't cache such symbols.  */
4593   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4594     return;
4595
4596   /* If the symbol is a local symbol, then do not cache it, as a search
4597      for that symbol depends on the context.  To determine whether
4598      the symbol is local or not, we check the block where we found it
4599      against the global and static blocks of its associated symtab.  */
4600   if (sym
4601       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4602                             GLOBAL_BLOCK) != block
4603       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4604                             STATIC_BLOCK) != block)
4605     return;
4606
4607   h = msymbol_hash (name) % HASH_SIZE;
4608   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4609   e->next = sym_cache->root[h];
4610   sym_cache->root[h] = e;
4611   e->name = obstack_strdup (&sym_cache->cache_space, name);
4612   e->sym = sym;
4613   e->domain = domain;
4614   e->block = block;
4615 }
4616 \f
4617                                 /* Symbol Lookup */
4618
4619 /* Return the symbol name match type that should be used used when
4620    searching for all symbols matching LOOKUP_NAME.
4621
4622    LOOKUP_NAME is expected to be a symbol name after transformation
4623    for Ada lookups.  */
4624
4625 static symbol_name_match_type
4626 name_match_type_from_name (const char *lookup_name)
4627 {
4628   return (strstr (lookup_name, "__") == NULL
4629           ? symbol_name_match_type::WILD
4630           : symbol_name_match_type::FULL);
4631 }
4632
4633 /* Return the result of a standard (literal, C-like) lookup of NAME in
4634    given DOMAIN, visible from lexical block BLOCK.  */
4635
4636 static struct symbol *
4637 standard_lookup (const char *name, const struct block *block,
4638                  domain_enum domain)
4639 {
4640   /* Initialize it just to avoid a GCC false warning.  */
4641   struct block_symbol sym = {};
4642
4643   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4644     return sym.symbol;
4645   ada_lookup_encoded_symbol (name, block, domain, &sym);
4646   cache_symbol (name, domain, sym.symbol, sym.block);
4647   return sym.symbol;
4648 }
4649
4650
4651 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4652    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4653    since they contend in overloading in the same way.  */
4654 static int
4655 is_nonfunction (struct block_symbol syms[], int n)
4656 {
4657   int i;
4658
4659   for (i = 0; i < n; i += 1)
4660     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4661         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4662             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4663       return 1;
4664
4665   return 0;
4666 }
4667
4668 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4669    struct types.  Otherwise, they may not.  */
4670
4671 static int
4672 equiv_types (struct type *type0, struct type *type1)
4673 {
4674   if (type0 == type1)
4675     return 1;
4676   if (type0 == NULL || type1 == NULL
4677       || type0->code () != type1->code ())
4678     return 0;
4679   if ((type0->code () == TYPE_CODE_STRUCT
4680        || type0->code () == TYPE_CODE_ENUM)
4681       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4682       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4683     return 1;
4684
4685   return 0;
4686 }
4687
4688 /* True iff SYM0 represents the same entity as SYM1, or one that is
4689    no more defined than that of SYM1.  */
4690
4691 static int
4692 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4693 {
4694   if (sym0 == sym1)
4695     return 1;
4696   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4697       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4698     return 0;
4699
4700   switch (SYMBOL_CLASS (sym0))
4701     {
4702     case LOC_UNDEF:
4703       return 1;
4704     case LOC_TYPEDEF:
4705       {
4706         struct type *type0 = SYMBOL_TYPE (sym0);
4707         struct type *type1 = SYMBOL_TYPE (sym1);
4708         const char *name0 = sym0->linkage_name ();
4709         const char *name1 = sym1->linkage_name ();
4710         int len0 = strlen (name0);
4711
4712         return
4713           type0->code () == type1->code ()
4714           && (equiv_types (type0, type1)
4715               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4716                   && startswith (name1 + len0, "___XV")));
4717       }
4718     case LOC_CONST:
4719       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4720         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4721
4722     case LOC_STATIC:
4723       {
4724         const char *name0 = sym0->linkage_name ();
4725         const char *name1 = sym1->linkage_name ();
4726         return (strcmp (name0, name1) == 0
4727                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4728       }
4729
4730     default:
4731       return 0;
4732     }
4733 }
4734
4735 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4736    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4737
4738 static void
4739 add_defn_to_vec (struct obstack *obstackp,
4740                  struct symbol *sym,
4741                  const struct block *block)
4742 {
4743   int i;
4744   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4745
4746   /* Do not try to complete stub types, as the debugger is probably
4747      already scanning all symbols matching a certain name at the
4748      time when this function is called.  Trying to replace the stub
4749      type by its associated full type will cause us to restart a scan
4750      which may lead to an infinite recursion.  Instead, the client
4751      collecting the matching symbols will end up collecting several
4752      matches, with at least one of them complete.  It can then filter
4753      out the stub ones if needed.  */
4754
4755   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4756     {
4757       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4758         return;
4759       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4760         {
4761           prevDefns[i].symbol = sym;
4762           prevDefns[i].block = block;
4763           return;
4764         }
4765     }
4766
4767   {
4768     struct block_symbol info;
4769
4770     info.symbol = sym;
4771     info.block = block;
4772     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4773   }
4774 }
4775
4776 /* Number of block_symbol structures currently collected in current vector in
4777    OBSTACKP.  */
4778
4779 static int
4780 num_defns_collected (struct obstack *obstackp)
4781 {
4782   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4783 }
4784
4785 /* Vector of block_symbol structures currently collected in current vector in
4786    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4787
4788 static struct block_symbol *
4789 defns_collected (struct obstack *obstackp, int finish)
4790 {
4791   if (finish)
4792     return (struct block_symbol *) obstack_finish (obstackp);
4793   else
4794     return (struct block_symbol *) obstack_base (obstackp);
4795 }
4796
4797 /* Return a bound minimal symbol matching NAME according to Ada
4798    decoding rules.  Returns an invalid symbol if there is no such
4799    minimal symbol.  Names prefixed with "standard__" are handled
4800    specially: "standard__" is first stripped off, and only static and
4801    global symbols are searched.  */
4802
4803 struct bound_minimal_symbol
4804 ada_lookup_simple_minsym (const char *name)
4805 {
4806   struct bound_minimal_symbol result;
4807
4808   memset (&result, 0, sizeof (result));
4809
4810   symbol_name_match_type match_type = name_match_type_from_name (name);
4811   lookup_name_info lookup_name (name, match_type);
4812
4813   symbol_name_matcher_ftype *match_name
4814     = ada_get_symbol_name_matcher (lookup_name);
4815
4816   for (objfile *objfile : current_program_space->objfiles ())
4817     {
4818       for (minimal_symbol *msymbol : objfile->msymbols ())
4819         {
4820           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4821               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4822             {
4823               result.minsym = msymbol;
4824               result.objfile = objfile;
4825               break;
4826             }
4827         }
4828     }
4829
4830   return result;
4831 }
4832
4833 /* For all subprograms that statically enclose the subprogram of the
4834    selected frame, add symbols matching identifier NAME in DOMAIN
4835    and their blocks to the list of data in OBSTACKP, as for
4836    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4837    with a wildcard prefix.  */
4838
4839 static void
4840 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4841                                   const lookup_name_info &lookup_name,
4842                                   domain_enum domain)
4843 {
4844 }
4845
4846 /* True if TYPE is definitely an artificial type supplied to a symbol
4847    for which no debugging information was given in the symbol file.  */
4848
4849 static int
4850 is_nondebugging_type (struct type *type)
4851 {
4852   const char *name = ada_type_name (type);
4853
4854   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4855 }
4856
4857 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4858    that are deemed "identical" for practical purposes.
4859
4860    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4861    types and that their number of enumerals is identical (in other
4862    words, type1->num_fields () == type2->num_fields ()).  */
4863
4864 static int
4865 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4866 {
4867   int i;
4868
4869   /* The heuristic we use here is fairly conservative.  We consider
4870      that 2 enumerate types are identical if they have the same
4871      number of enumerals and that all enumerals have the same
4872      underlying value and name.  */
4873
4874   /* All enums in the type should have an identical underlying value.  */
4875   for (i = 0; i < type1->num_fields (); i++)
4876     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4877       return 0;
4878
4879   /* All enumerals should also have the same name (modulo any numerical
4880      suffix).  */
4881   for (i = 0; i < type1->num_fields (); i++)
4882     {
4883       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4884       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4885       int len_1 = strlen (name_1);
4886       int len_2 = strlen (name_2);
4887
4888       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4889       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4890       if (len_1 != len_2
4891           || strncmp (TYPE_FIELD_NAME (type1, i),
4892                       TYPE_FIELD_NAME (type2, i),
4893                       len_1) != 0)
4894         return 0;
4895     }
4896
4897   return 1;
4898 }
4899
4900 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4901    that are deemed "identical" for practical purposes.  Sometimes,
4902    enumerals are not strictly identical, but their types are so similar
4903    that they can be considered identical.
4904
4905    For instance, consider the following code:
4906
4907       type Color is (Black, Red, Green, Blue, White);
4908       type RGB_Color is new Color range Red .. Blue;
4909
4910    Type RGB_Color is a subrange of an implicit type which is a copy
4911    of type Color. If we call that implicit type RGB_ColorB ("B" is
4912    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4913    As a result, when an expression references any of the enumeral
4914    by name (Eg. "print green"), the expression is technically
4915    ambiguous and the user should be asked to disambiguate. But
4916    doing so would only hinder the user, since it wouldn't matter
4917    what choice he makes, the outcome would always be the same.
4918    So, for practical purposes, we consider them as the same.  */
4919
4920 static int
4921 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
4922 {
4923   int i;
4924
4925   /* Before performing a thorough comparison check of each type,
4926      we perform a series of inexpensive checks.  We expect that these
4927      checks will quickly fail in the vast majority of cases, and thus
4928      help prevent the unnecessary use of a more expensive comparison.
4929      Said comparison also expects us to make some of these checks
4930      (see ada_identical_enum_types_p).  */
4931
4932   /* Quick check: All symbols should have an enum type.  */
4933   for (i = 0; i < syms.size (); i++)
4934     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
4935       return 0;
4936
4937   /* Quick check: They should all have the same value.  */
4938   for (i = 1; i < syms.size (); i++)
4939     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4940       return 0;
4941
4942   /* Quick check: They should all have the same number of enumerals.  */
4943   for (i = 1; i < syms.size (); i++)
4944     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
4945         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
4946       return 0;
4947
4948   /* All the sanity checks passed, so we might have a set of
4949      identical enumeration types.  Perform a more complete
4950      comparison of the type of each symbol.  */
4951   for (i = 1; i < syms.size (); i++)
4952     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
4953                                      SYMBOL_TYPE (syms[0].symbol)))
4954       return 0;
4955
4956   return 1;
4957 }
4958
4959 /* Remove any non-debugging symbols in SYMS that definitely
4960    duplicate other symbols in the list (The only case I know of where
4961    this happens is when object files containing stabs-in-ecoff are
4962    linked with files containing ordinary ecoff debugging symbols (or no
4963    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
4964    Returns the number of items in the modified list.  */
4965
4966 static int
4967 remove_extra_symbols (std::vector<struct block_symbol> *syms)
4968 {
4969   int i, j;
4970
4971   /* We should never be called with less than 2 symbols, as there
4972      cannot be any extra symbol in that case.  But it's easy to
4973      handle, since we have nothing to do in that case.  */
4974   if (syms->size () < 2)
4975     return syms->size ();
4976
4977   i = 0;
4978   while (i < syms->size ())
4979     {
4980       int remove_p = 0;
4981
4982       /* If two symbols have the same name and one of them is a stub type,
4983          the get rid of the stub.  */
4984
4985       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
4986           && (*syms)[i].symbol->linkage_name () != NULL)
4987         {
4988           for (j = 0; j < syms->size (); j++)
4989             {
4990               if (j != i
4991                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
4992                   && (*syms)[j].symbol->linkage_name () != NULL
4993                   && strcmp ((*syms)[i].symbol->linkage_name (),
4994                              (*syms)[j].symbol->linkage_name ()) == 0)
4995                 remove_p = 1;
4996             }
4997         }
4998
4999       /* Two symbols with the same name, same class and same address
5000          should be identical.  */
5001
5002       else if ((*syms)[i].symbol->linkage_name () != NULL
5003           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5004           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5005         {
5006           for (j = 0; j < syms->size (); j += 1)
5007             {
5008               if (i != j
5009                   && (*syms)[j].symbol->linkage_name () != NULL
5010                   && strcmp ((*syms)[i].symbol->linkage_name (),
5011                              (*syms)[j].symbol->linkage_name ()) == 0
5012                   && SYMBOL_CLASS ((*syms)[i].symbol)
5013                        == SYMBOL_CLASS ((*syms)[j].symbol)
5014                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5015                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5016                 remove_p = 1;
5017             }
5018         }
5019       
5020       if (remove_p)
5021         syms->erase (syms->begin () + i);
5022
5023       i += 1;
5024     }
5025
5026   /* If all the remaining symbols are identical enumerals, then
5027      just keep the first one and discard the rest.
5028
5029      Unlike what we did previously, we do not discard any entry
5030      unless they are ALL identical.  This is because the symbol
5031      comparison is not a strict comparison, but rather a practical
5032      comparison.  If all symbols are considered identical, then
5033      we can just go ahead and use the first one and discard the rest.
5034      But if we cannot reduce the list to a single element, we have
5035      to ask the user to disambiguate anyways.  And if we have to
5036      present a multiple-choice menu, it's less confusing if the list
5037      isn't missing some choices that were identical and yet distinct.  */
5038   if (symbols_are_identical_enums (*syms))
5039     syms->resize (1);
5040
5041   return syms->size ();
5042 }
5043
5044 /* Given a type that corresponds to a renaming entity, use the type name
5045    to extract the scope (package name or function name, fully qualified,
5046    and following the GNAT encoding convention) where this renaming has been
5047    defined.  */
5048
5049 static std::string
5050 xget_renaming_scope (struct type *renaming_type)
5051 {
5052   /* The renaming types adhere to the following convention:
5053      <scope>__<rename>___<XR extension>.
5054      So, to extract the scope, we search for the "___XR" extension,
5055      and then backtrack until we find the first "__".  */
5056
5057   const char *name = renaming_type->name ();
5058   const char *suffix = strstr (name, "___XR");
5059   const char *last;
5060
5061   /* Now, backtrack a bit until we find the first "__".  Start looking
5062      at suffix - 3, as the <rename> part is at least one character long.  */
5063
5064   for (last = suffix - 3; last > name; last--)
5065     if (last[0] == '_' && last[1] == '_')
5066       break;
5067
5068   /* Make a copy of scope and return it.  */
5069   return std::string (name, last);
5070 }
5071
5072 /* Return nonzero if NAME corresponds to a package name.  */
5073
5074 static int
5075 is_package_name (const char *name)
5076 {
5077   /* Here, We take advantage of the fact that no symbols are generated
5078      for packages, while symbols are generated for each function.
5079      So the condition for NAME represent a package becomes equivalent
5080      to NAME not existing in our list of symbols.  There is only one
5081      small complication with library-level functions (see below).  */
5082
5083   /* If it is a function that has not been defined at library level,
5084      then we should be able to look it up in the symbols.  */
5085   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5086     return 0;
5087
5088   /* Library-level function names start with "_ada_".  See if function
5089      "_ada_" followed by NAME can be found.  */
5090
5091   /* Do a quick check that NAME does not contain "__", since library-level
5092      functions names cannot contain "__" in them.  */
5093   if (strstr (name, "__") != NULL)
5094     return 0;
5095
5096   std::string fun_name = string_printf ("_ada_%s", name);
5097
5098   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5099 }
5100
5101 /* Return nonzero if SYM corresponds to a renaming entity that is
5102    not visible from FUNCTION_NAME.  */
5103
5104 static int
5105 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5106 {
5107   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5108     return 0;
5109
5110   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5111
5112   /* If the rename has been defined in a package, then it is visible.  */
5113   if (is_package_name (scope.c_str ()))
5114     return 0;
5115
5116   /* Check that the rename is in the current function scope by checking
5117      that its name starts with SCOPE.  */
5118
5119   /* If the function name starts with "_ada_", it means that it is
5120      a library-level function.  Strip this prefix before doing the
5121      comparison, as the encoding for the renaming does not contain
5122      this prefix.  */
5123   if (startswith (function_name, "_ada_"))
5124     function_name += 5;
5125
5126   return !startswith (function_name, scope.c_str ());
5127 }
5128
5129 /* Remove entries from SYMS that corresponds to a renaming entity that
5130    is not visible from the function associated with CURRENT_BLOCK or
5131    that is superfluous due to the presence of more specific renaming
5132    information.  Places surviving symbols in the initial entries of
5133    SYMS and returns the number of surviving symbols.
5134    
5135    Rationale:
5136    First, in cases where an object renaming is implemented as a
5137    reference variable, GNAT may produce both the actual reference
5138    variable and the renaming encoding.  In this case, we discard the
5139    latter.
5140
5141    Second, GNAT emits a type following a specified encoding for each renaming
5142    entity.  Unfortunately, STABS currently does not support the definition
5143    of types that are local to a given lexical block, so all renamings types
5144    are emitted at library level.  As a consequence, if an application
5145    contains two renaming entities using the same name, and a user tries to
5146    print the value of one of these entities, the result of the ada symbol
5147    lookup will also contain the wrong renaming type.
5148
5149    This function partially covers for this limitation by attempting to
5150    remove from the SYMS list renaming symbols that should be visible
5151    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5152    method with the current information available.  The implementation
5153    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5154    
5155       - When the user tries to print a rename in a function while there
5156         is another rename entity defined in a package:  Normally, the
5157         rename in the function has precedence over the rename in the
5158         package, so the latter should be removed from the list.  This is
5159         currently not the case.
5160         
5161       - This function will incorrectly remove valid renames if
5162         the CURRENT_BLOCK corresponds to a function which symbol name
5163         has been changed by an "Export" pragma.  As a consequence,
5164         the user will be unable to print such rename entities.  */
5165
5166 static int
5167 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5168                              const struct block *current_block)
5169 {
5170   struct symbol *current_function;
5171   const char *current_function_name;
5172   int i;
5173   int is_new_style_renaming;
5174
5175   /* If there is both a renaming foo___XR... encoded as a variable and
5176      a simple variable foo in the same block, discard the latter.
5177      First, zero out such symbols, then compress.  */
5178   is_new_style_renaming = 0;
5179   for (i = 0; i < syms->size (); i += 1)
5180     {
5181       struct symbol *sym = (*syms)[i].symbol;
5182       const struct block *block = (*syms)[i].block;
5183       const char *name;
5184       const char *suffix;
5185
5186       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5187         continue;
5188       name = sym->linkage_name ();
5189       suffix = strstr (name, "___XR");
5190
5191       if (suffix != NULL)
5192         {
5193           int name_len = suffix - name;
5194           int j;
5195
5196           is_new_style_renaming = 1;
5197           for (j = 0; j < syms->size (); j += 1)
5198             if (i != j && (*syms)[j].symbol != NULL
5199                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5200                             name_len) == 0
5201                 && block == (*syms)[j].block)
5202               (*syms)[j].symbol = NULL;
5203         }
5204     }
5205   if (is_new_style_renaming)
5206     {
5207       int j, k;
5208
5209       for (j = k = 0; j < syms->size (); j += 1)
5210         if ((*syms)[j].symbol != NULL)
5211             {
5212               (*syms)[k] = (*syms)[j];
5213               k += 1;
5214             }
5215       return k;
5216     }
5217
5218   /* Extract the function name associated to CURRENT_BLOCK.
5219      Abort if unable to do so.  */
5220
5221   if (current_block == NULL)
5222     return syms->size ();
5223
5224   current_function = block_linkage_function (current_block);
5225   if (current_function == NULL)
5226     return syms->size ();
5227
5228   current_function_name = current_function->linkage_name ();
5229   if (current_function_name == NULL)
5230     return syms->size ();
5231
5232   /* Check each of the symbols, and remove it from the list if it is
5233      a type corresponding to a renaming that is out of the scope of
5234      the current block.  */
5235
5236   i = 0;
5237   while (i < syms->size ())
5238     {
5239       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5240           == ADA_OBJECT_RENAMING
5241           && old_renaming_is_invisible ((*syms)[i].symbol,
5242                                         current_function_name))
5243         syms->erase (syms->begin () + i);
5244       else
5245         i += 1;
5246     }
5247
5248   return syms->size ();
5249 }
5250
5251 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5252    whose name and domain match NAME and DOMAIN respectively.
5253    If no match was found, then extend the search to "enclosing"
5254    routines (in other words, if we're inside a nested function,
5255    search the symbols defined inside the enclosing functions).
5256    If WILD_MATCH_P is nonzero, perform the naming matching in
5257    "wild" mode (see function "wild_match" for more info).
5258
5259    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5260
5261 static void
5262 ada_add_local_symbols (struct obstack *obstackp,
5263                        const lookup_name_info &lookup_name,
5264                        const struct block *block, domain_enum domain)
5265 {
5266   int block_depth = 0;
5267
5268   while (block != NULL)
5269     {
5270       block_depth += 1;
5271       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5272
5273       /* If we found a non-function match, assume that's the one.  */
5274       if (is_nonfunction (defns_collected (obstackp, 0),
5275                           num_defns_collected (obstackp)))
5276         return;
5277
5278       block = BLOCK_SUPERBLOCK (block);
5279     }
5280
5281   /* If no luck so far, try to find NAME as a local symbol in some lexically
5282      enclosing subprogram.  */
5283   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5284     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5285 }
5286
5287 /* An object of this type is used as the user_data argument when
5288    calling the map_matching_symbols method.  */
5289
5290 struct match_data
5291 {
5292   struct objfile *objfile;
5293   struct obstack *obstackp;
5294   struct symbol *arg_sym;
5295   int found_sym;
5296 };
5297
5298 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5299    to a list of symbols.  DATA is a pointer to a struct match_data *
5300    containing the obstack that collects the symbol list, the file that SYM
5301    must come from, a flag indicating whether a non-argument symbol has
5302    been found in the current block, and the last argument symbol
5303    passed in SYM within the current block (if any).  When SYM is null,
5304    marking the end of a block, the argument symbol is added if no
5305    other has been found.  */
5306
5307 static bool
5308 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5309                           struct match_data *data)
5310 {
5311   const struct block *block = bsym->block;
5312   struct symbol *sym = bsym->symbol;
5313
5314   if (sym == NULL)
5315     {
5316       if (!data->found_sym && data->arg_sym != NULL) 
5317         add_defn_to_vec (data->obstackp,
5318                          fixup_symbol_section (data->arg_sym, data->objfile),
5319                          block);
5320       data->found_sym = 0;
5321       data->arg_sym = NULL;
5322     }
5323   else 
5324     {
5325       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5326         return true;
5327       else if (SYMBOL_IS_ARGUMENT (sym))
5328         data->arg_sym = sym;
5329       else
5330         {
5331           data->found_sym = 1;
5332           add_defn_to_vec (data->obstackp,
5333                            fixup_symbol_section (sym, data->objfile),
5334                            block);
5335         }
5336     }
5337   return true;
5338 }
5339
5340 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5341    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5342    symbols to OBSTACKP.  Return whether we found such symbols.  */
5343
5344 static int
5345 ada_add_block_renamings (struct obstack *obstackp,
5346                          const struct block *block,
5347                          const lookup_name_info &lookup_name,
5348                          domain_enum domain)
5349 {
5350   struct using_direct *renaming;
5351   int defns_mark = num_defns_collected (obstackp);
5352
5353   symbol_name_matcher_ftype *name_match
5354     = ada_get_symbol_name_matcher (lookup_name);
5355
5356   for (renaming = block_using (block);
5357        renaming != NULL;
5358        renaming = renaming->next)
5359     {
5360       const char *r_name;
5361
5362       /* Avoid infinite recursions: skip this renaming if we are actually
5363          already traversing it.
5364
5365          Currently, symbol lookup in Ada don't use the namespace machinery from
5366          C++/Fortran support: skip namespace imports that use them.  */
5367       if (renaming->searched
5368           || (renaming->import_src != NULL
5369               && renaming->import_src[0] != '\0')
5370           || (renaming->import_dest != NULL
5371               && renaming->import_dest[0] != '\0'))
5372         continue;
5373       renaming->searched = 1;
5374
5375       /* TODO: here, we perform another name-based symbol lookup, which can
5376          pull its own multiple overloads.  In theory, we should be able to do
5377          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5378          not a simple name.  But in order to do this, we would need to enhance
5379          the DWARF reader to associate a symbol to this renaming, instead of a
5380          name.  So, for now, we do something simpler: re-use the C++/Fortran
5381          namespace machinery.  */
5382       r_name = (renaming->alias != NULL
5383                 ? renaming->alias
5384                 : renaming->declaration);
5385       if (name_match (r_name, lookup_name, NULL))
5386         {
5387           lookup_name_info decl_lookup_name (renaming->declaration,
5388                                              lookup_name.match_type ());
5389           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5390                                1, NULL);
5391         }
5392       renaming->searched = 0;
5393     }
5394   return num_defns_collected (obstackp) != defns_mark;
5395 }
5396
5397 /* Implements compare_names, but only applying the comparision using
5398    the given CASING.  */
5399
5400 static int
5401 compare_names_with_case (const char *string1, const char *string2,
5402                          enum case_sensitivity casing)
5403 {
5404   while (*string1 != '\0' && *string2 != '\0')
5405     {
5406       char c1, c2;
5407
5408       if (isspace (*string1) || isspace (*string2))
5409         return strcmp_iw_ordered (string1, string2);
5410
5411       if (casing == case_sensitive_off)
5412         {
5413           c1 = tolower (*string1);
5414           c2 = tolower (*string2);
5415         }
5416       else
5417         {
5418           c1 = *string1;
5419           c2 = *string2;
5420         }
5421       if (c1 != c2)
5422         break;
5423
5424       string1 += 1;
5425       string2 += 1;
5426     }
5427
5428   switch (*string1)
5429     {
5430     case '(':
5431       return strcmp_iw_ordered (string1, string2);
5432     case '_':
5433       if (*string2 == '\0')
5434         {
5435           if (is_name_suffix (string1))
5436             return 0;
5437           else
5438             return 1;
5439         }
5440       /* FALLTHROUGH */
5441     default:
5442       if (*string2 == '(')
5443         return strcmp_iw_ordered (string1, string2);
5444       else
5445         {
5446           if (casing == case_sensitive_off)
5447             return tolower (*string1) - tolower (*string2);
5448           else
5449             return *string1 - *string2;
5450         }
5451     }
5452 }
5453
5454 /* Compare STRING1 to STRING2, with results as for strcmp.
5455    Compatible with strcmp_iw_ordered in that...
5456
5457        strcmp_iw_ordered (STRING1, STRING2) <= 0
5458
5459    ... implies...
5460
5461        compare_names (STRING1, STRING2) <= 0
5462
5463    (they may differ as to what symbols compare equal).  */
5464
5465 static int
5466 compare_names (const char *string1, const char *string2)
5467 {
5468   int result;
5469
5470   /* Similar to what strcmp_iw_ordered does, we need to perform
5471      a case-insensitive comparison first, and only resort to
5472      a second, case-sensitive, comparison if the first one was
5473      not sufficient to differentiate the two strings.  */
5474
5475   result = compare_names_with_case (string1, string2, case_sensitive_off);
5476   if (result == 0)
5477     result = compare_names_with_case (string1, string2, case_sensitive_on);
5478
5479   return result;
5480 }
5481
5482 /* Convenience function to get at the Ada encoded lookup name for
5483    LOOKUP_NAME, as a C string.  */
5484
5485 static const char *
5486 ada_lookup_name (const lookup_name_info &lookup_name)
5487 {
5488   return lookup_name.ada ().lookup_name ().c_str ();
5489 }
5490
5491 /* Add to OBSTACKP all non-local symbols whose name and domain match
5492    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5493    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5494    symbols otherwise.  */
5495
5496 static void
5497 add_nonlocal_symbols (struct obstack *obstackp,
5498                       const lookup_name_info &lookup_name,
5499                       domain_enum domain, int global)
5500 {
5501   struct match_data data;
5502
5503   memset (&data, 0, sizeof data);
5504   data.obstackp = obstackp;
5505
5506   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5507
5508   auto callback = [&] (struct block_symbol *bsym)
5509     {
5510       return aux_add_nonlocal_symbols (bsym, &data);
5511     };
5512
5513   for (objfile *objfile : current_program_space->objfiles ())
5514     {
5515       data.objfile = objfile;
5516
5517       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5518                                              domain, global, callback,
5519                                              (is_wild_match
5520                                               ? NULL : compare_names));
5521
5522       for (compunit_symtab *cu : objfile->compunits ())
5523         {
5524           const struct block *global_block
5525             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5526
5527           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5528                                        domain))
5529             data.found_sym = 1;
5530         }
5531     }
5532
5533   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5534     {
5535       const char *name = ada_lookup_name (lookup_name);
5536       std::string bracket_name = std::string ("<_ada_") + name + '>';
5537       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5538
5539       for (objfile *objfile : current_program_space->objfiles ())
5540         {
5541           data.objfile = objfile;
5542           objfile->sf->qf->map_matching_symbols (objfile, name1,
5543                                                  domain, global, callback,
5544                                                  compare_names);
5545         }
5546     }           
5547 }
5548
5549 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5550    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5551    returning the number of matches.  Add these to OBSTACKP.
5552
5553    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5554    symbol match within the nest of blocks whose innermost member is BLOCK,
5555    is the one match returned (no other matches in that or
5556    enclosing blocks is returned).  If there are any matches in or
5557    surrounding BLOCK, then these alone are returned.
5558
5559    Names prefixed with "standard__" are handled specially:
5560    "standard__" is first stripped off (by the lookup_name
5561    constructor), and only static and global symbols are searched.
5562
5563    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5564    to lookup global symbols.  */
5565
5566 static void
5567 ada_add_all_symbols (struct obstack *obstackp,
5568                      const struct block *block,
5569                      const lookup_name_info &lookup_name,
5570                      domain_enum domain,
5571                      int full_search,
5572                      int *made_global_lookup_p)
5573 {
5574   struct symbol *sym;
5575
5576   if (made_global_lookup_p)
5577     *made_global_lookup_p = 0;
5578
5579   /* Special case: If the user specifies a symbol name inside package
5580      Standard, do a non-wild matching of the symbol name without
5581      the "standard__" prefix.  This was primarily introduced in order
5582      to allow the user to specifically access the standard exceptions
5583      using, for instance, Standard.Constraint_Error when Constraint_Error
5584      is ambiguous (due to the user defining its own Constraint_Error
5585      entity inside its program).  */
5586   if (lookup_name.ada ().standard_p ())
5587     block = NULL;
5588
5589   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5590
5591   if (block != NULL)
5592     {
5593       if (full_search)
5594         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5595       else
5596         {
5597           /* In the !full_search case we're are being called by
5598              iterate_over_symbols, and we don't want to search
5599              superblocks.  */
5600           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5601         }
5602       if (num_defns_collected (obstackp) > 0 || !full_search)
5603         return;
5604     }
5605
5606   /* No non-global symbols found.  Check our cache to see if we have
5607      already performed this search before.  If we have, then return
5608      the same result.  */
5609
5610   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5611                             domain, &sym, &block))
5612     {
5613       if (sym != NULL)
5614         add_defn_to_vec (obstackp, sym, block);
5615       return;
5616     }
5617
5618   if (made_global_lookup_p)
5619     *made_global_lookup_p = 1;
5620
5621   /* Search symbols from all global blocks.  */
5622  
5623   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5624
5625   /* Now add symbols from all per-file blocks if we've gotten no hits
5626      (not strictly correct, but perhaps better than an error).  */
5627
5628   if (num_defns_collected (obstackp) == 0)
5629     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5630 }
5631
5632 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5633    is non-zero, enclosing scope and in global scopes, returning the number of
5634    matches.
5635    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5636    found and the blocks and symbol tables (if any) in which they were
5637    found.
5638
5639    When full_search is non-zero, any non-function/non-enumeral
5640    symbol match within the nest of blocks whose innermost member is BLOCK,
5641    is the one match returned (no other matches in that or
5642    enclosing blocks is returned).  If there are any matches in or
5643    surrounding BLOCK, then these alone are returned.
5644
5645    Names prefixed with "standard__" are handled specially: "standard__"
5646    is first stripped off, and only static and global symbols are searched.  */
5647
5648 static int
5649 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5650                                const struct block *block,
5651                                domain_enum domain,
5652                                std::vector<struct block_symbol> *results,
5653                                int full_search)
5654 {
5655   int syms_from_global_search;
5656   int ndefns;
5657   auto_obstack obstack;
5658
5659   ada_add_all_symbols (&obstack, block, lookup_name,
5660                        domain, full_search, &syms_from_global_search);
5661
5662   ndefns = num_defns_collected (&obstack);
5663
5664   struct block_symbol *base = defns_collected (&obstack, 1);
5665   for (int i = 0; i < ndefns; ++i)
5666     results->push_back (base[i]);
5667
5668   ndefns = remove_extra_symbols (results);
5669
5670   if (ndefns == 0 && full_search && syms_from_global_search)
5671     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5672
5673   if (ndefns == 1 && full_search && syms_from_global_search)
5674     cache_symbol (ada_lookup_name (lookup_name), domain,
5675                   (*results)[0].symbol, (*results)[0].block);
5676
5677   ndefns = remove_irrelevant_renamings (results, block);
5678
5679   return ndefns;
5680 }
5681
5682 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5683    in global scopes, returning the number of matches, and filling *RESULTS
5684    with (SYM,BLOCK) tuples.
5685
5686    See ada_lookup_symbol_list_worker for further details.  */
5687
5688 int
5689 ada_lookup_symbol_list (const char *name, const struct block *block,
5690                         domain_enum domain,
5691                         std::vector<struct block_symbol> *results)
5692 {
5693   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5694   lookup_name_info lookup_name (name, name_match_type);
5695
5696   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5697 }
5698
5699 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5700    to 1, but choosing the first symbol found if there are multiple
5701    choices.
5702
5703    The result is stored in *INFO, which must be non-NULL.
5704    If no match is found, INFO->SYM is set to NULL.  */
5705
5706 void
5707 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5708                            domain_enum domain,
5709                            struct block_symbol *info)
5710 {
5711   /* Since we already have an encoded name, wrap it in '<>' to force a
5712      verbatim match.  Otherwise, if the name happens to not look like
5713      an encoded name (because it doesn't include a "__"),
5714      ada_lookup_name_info would re-encode/fold it again, and that
5715      would e.g., incorrectly lowercase object renaming names like
5716      "R28b" -> "r28b".  */
5717   std::string verbatim = std::string ("<") + name + '>';
5718
5719   gdb_assert (info != NULL);
5720   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5721 }
5722
5723 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5724    scope and in global scopes, or NULL if none.  NAME is folded and
5725    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5726    choosing the first symbol if there are multiple choices.  */
5727
5728 struct block_symbol
5729 ada_lookup_symbol (const char *name, const struct block *block0,
5730                    domain_enum domain)
5731 {
5732   std::vector<struct block_symbol> candidates;
5733   int n_candidates;
5734
5735   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5736
5737   if (n_candidates == 0)
5738     return {};
5739
5740   block_symbol info = candidates[0];
5741   info.symbol = fixup_symbol_section (info.symbol, NULL);
5742   return info;
5743 }
5744
5745
5746 /* True iff STR is a possible encoded suffix of a normal Ada name
5747    that is to be ignored for matching purposes.  Suffixes of parallel
5748    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5749    are given by any of the regular expressions:
5750
5751    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5752    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5753    TKB              [subprogram suffix for task bodies]
5754    _E[0-9]+[bs]$    [protected object entry suffixes]
5755    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5756
5757    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5758    match is performed.  This sequence is used to differentiate homonyms,
5759    is an optional part of a valid name suffix.  */
5760
5761 static int
5762 is_name_suffix (const char *str)
5763 {
5764   int k;
5765   const char *matching;
5766   const int len = strlen (str);
5767
5768   /* Skip optional leading __[0-9]+.  */
5769
5770   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5771     {
5772       str += 3;
5773       while (isdigit (str[0]))
5774         str += 1;
5775     }
5776   
5777   /* [.$][0-9]+ */
5778
5779   if (str[0] == '.' || str[0] == '$')
5780     {
5781       matching = str + 1;
5782       while (isdigit (matching[0]))
5783         matching += 1;
5784       if (matching[0] == '\0')
5785         return 1;
5786     }
5787
5788   /* ___[0-9]+ */
5789
5790   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5791     {
5792       matching = str + 3;
5793       while (isdigit (matching[0]))
5794         matching += 1;
5795       if (matching[0] == '\0')
5796         return 1;
5797     }
5798
5799   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5800
5801   if (strcmp (str, "TKB") == 0)
5802     return 1;
5803
5804 #if 0
5805   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5806      with a N at the end.  Unfortunately, the compiler uses the same
5807      convention for other internal types it creates.  So treating
5808      all entity names that end with an "N" as a name suffix causes
5809      some regressions.  For instance, consider the case of an enumerated
5810      type.  To support the 'Image attribute, it creates an array whose
5811      name ends with N.
5812      Having a single character like this as a suffix carrying some
5813      information is a bit risky.  Perhaps we should change the encoding
5814      to be something like "_N" instead.  In the meantime, do not do
5815      the following check.  */
5816   /* Protected Object Subprograms */
5817   if (len == 1 && str [0] == 'N')
5818     return 1;
5819 #endif
5820
5821   /* _E[0-9]+[bs]$ */
5822   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5823     {
5824       matching = str + 3;
5825       while (isdigit (matching[0]))
5826         matching += 1;
5827       if ((matching[0] == 'b' || matching[0] == 's')
5828           && matching [1] == '\0')
5829         return 1;
5830     }
5831
5832   /* ??? We should not modify STR directly, as we are doing below.  This
5833      is fine in this case, but may become problematic later if we find
5834      that this alternative did not work, and want to try matching
5835      another one from the begining of STR.  Since we modified it, we
5836      won't be able to find the begining of the string anymore!  */
5837   if (str[0] == 'X')
5838     {
5839       str += 1;
5840       while (str[0] != '_' && str[0] != '\0')
5841         {
5842           if (str[0] != 'n' && str[0] != 'b')
5843             return 0;
5844           str += 1;
5845         }
5846     }
5847
5848   if (str[0] == '\000')
5849     return 1;
5850
5851   if (str[0] == '_')
5852     {
5853       if (str[1] != '_' || str[2] == '\000')
5854         return 0;
5855       if (str[2] == '_')
5856         {
5857           if (strcmp (str + 3, "JM") == 0)
5858             return 1;
5859           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5860              the LJM suffix in favor of the JM one.  But we will
5861              still accept LJM as a valid suffix for a reasonable
5862              amount of time, just to allow ourselves to debug programs
5863              compiled using an older version of GNAT.  */
5864           if (strcmp (str + 3, "LJM") == 0)
5865             return 1;
5866           if (str[3] != 'X')
5867             return 0;
5868           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5869               || str[4] == 'U' || str[4] == 'P')
5870             return 1;
5871           if (str[4] == 'R' && str[5] != 'T')
5872             return 1;
5873           return 0;
5874         }
5875       if (!isdigit (str[2]))
5876         return 0;
5877       for (k = 3; str[k] != '\0'; k += 1)
5878         if (!isdigit (str[k]) && str[k] != '_')
5879           return 0;
5880       return 1;
5881     }
5882   if (str[0] == '$' && isdigit (str[1]))
5883     {
5884       for (k = 2; str[k] != '\0'; k += 1)
5885         if (!isdigit (str[k]) && str[k] != '_')
5886           return 0;
5887       return 1;
5888     }
5889   return 0;
5890 }
5891
5892 /* Return non-zero if the string starting at NAME and ending before
5893    NAME_END contains no capital letters.  */
5894
5895 static int
5896 is_valid_name_for_wild_match (const char *name0)
5897 {
5898   std::string decoded_name = ada_decode (name0);
5899   int i;
5900
5901   /* If the decoded name starts with an angle bracket, it means that
5902      NAME0 does not follow the GNAT encoding format.  It should then
5903      not be allowed as a possible wild match.  */
5904   if (decoded_name[0] == '<')
5905     return 0;
5906
5907   for (i=0; decoded_name[i] != '\0'; i++)
5908     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5909       return 0;
5910
5911   return 1;
5912 }
5913
5914 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
5915    that could start a simple name.  Assumes that *NAMEP points into
5916    the string beginning at NAME0.  */
5917
5918 static int
5919 advance_wild_match (const char **namep, const char *name0, int target0)
5920 {
5921   const char *name = *namep;
5922
5923   while (1)
5924     {
5925       int t0, t1;
5926
5927       t0 = *name;
5928       if (t0 == '_')
5929         {
5930           t1 = name[1];
5931           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
5932             {
5933               name += 1;
5934               if (name == name0 + 5 && startswith (name0, "_ada"))
5935                 break;
5936               else
5937                 name += 1;
5938             }
5939           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
5940                                  || name[2] == target0))
5941             {
5942               name += 2;
5943               break;
5944             }
5945           else
5946             return 0;
5947         }
5948       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
5949         name += 1;
5950       else
5951         return 0;
5952     }
5953
5954   *namep = name;
5955   return 1;
5956 }
5957
5958 /* Return true iff NAME encodes a name of the form prefix.PATN.
5959    Ignores any informational suffixes of NAME (i.e., for which
5960    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
5961    simple name.  */
5962
5963 static bool
5964 wild_match (const char *name, const char *patn)
5965 {
5966   const char *p;
5967   const char *name0 = name;
5968
5969   while (1)
5970     {
5971       const char *match = name;
5972
5973       if (*name == *patn)
5974         {
5975           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
5976             if (*p != *name)
5977               break;
5978           if (*p == '\0' && is_name_suffix (name))
5979             return match == name0 || is_valid_name_for_wild_match (name0);
5980
5981           if (name[-1] == '_')
5982             name -= 1;
5983         }
5984       if (!advance_wild_match (&name, name0, *patn))
5985         return false;
5986     }
5987 }
5988
5989 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
5990    any trailing suffixes that encode debugging information or leading
5991    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
5992    information that is ignored).  */
5993
5994 static bool
5995 full_match (const char *sym_name, const char *search_name)
5996 {
5997   size_t search_name_len = strlen (search_name);
5998
5999   if (strncmp (sym_name, search_name, search_name_len) == 0
6000       && is_name_suffix (sym_name + search_name_len))
6001     return true;
6002
6003   if (startswith (sym_name, "_ada_")
6004       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6005       && is_name_suffix (sym_name + search_name_len + 5))
6006     return true;
6007
6008   return false;
6009 }
6010
6011 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6012    *defn_symbols, updating the list of symbols in OBSTACKP (if
6013    necessary).  OBJFILE is the section containing BLOCK.  */
6014
6015 static void
6016 ada_add_block_symbols (struct obstack *obstackp,
6017                        const struct block *block,
6018                        const lookup_name_info &lookup_name,
6019                        domain_enum domain, struct objfile *objfile)
6020 {
6021   struct block_iterator iter;
6022   /* A matching argument symbol, if any.  */
6023   struct symbol *arg_sym;
6024   /* Set true when we find a matching non-argument symbol.  */
6025   int found_sym;
6026   struct symbol *sym;
6027
6028   arg_sym = NULL;
6029   found_sym = 0;
6030   for (sym = block_iter_match_first (block, lookup_name, &iter);
6031        sym != NULL;
6032        sym = block_iter_match_next (lookup_name, &iter))
6033     {
6034       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6035         {
6036           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6037             {
6038               if (SYMBOL_IS_ARGUMENT (sym))
6039                 arg_sym = sym;
6040               else
6041                 {
6042                   found_sym = 1;
6043                   add_defn_to_vec (obstackp,
6044                                    fixup_symbol_section (sym, objfile),
6045                                    block);
6046                 }
6047             }
6048         }
6049     }
6050
6051   /* Handle renamings.  */
6052
6053   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6054     found_sym = 1;
6055
6056   if (!found_sym && arg_sym != NULL)
6057     {
6058       add_defn_to_vec (obstackp,
6059                        fixup_symbol_section (arg_sym, objfile),
6060                        block);
6061     }
6062
6063   if (!lookup_name.ada ().wild_match_p ())
6064     {
6065       arg_sym = NULL;
6066       found_sym = 0;
6067       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6068       const char *name = ada_lookup_name.c_str ();
6069       size_t name_len = ada_lookup_name.size ();
6070
6071       ALL_BLOCK_SYMBOLS (block, iter, sym)
6072       {
6073         if (symbol_matches_domain (sym->language (),
6074                                    SYMBOL_DOMAIN (sym), domain))
6075           {
6076             int cmp;
6077
6078             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6079             if (cmp == 0)
6080               {
6081                 cmp = !startswith (sym->linkage_name (), "_ada_");
6082                 if (cmp == 0)
6083                   cmp = strncmp (name, sym->linkage_name () + 5,
6084                                  name_len);
6085               }
6086
6087             if (cmp == 0
6088                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6089               {
6090                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6091                   {
6092                     if (SYMBOL_IS_ARGUMENT (sym))
6093                       arg_sym = sym;
6094                     else
6095                       {
6096                         found_sym = 1;
6097                         add_defn_to_vec (obstackp,
6098                                          fixup_symbol_section (sym, objfile),
6099                                          block);
6100                       }
6101                   }
6102               }
6103           }
6104       }
6105
6106       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6107          They aren't parameters, right?  */
6108       if (!found_sym && arg_sym != NULL)
6109         {
6110           add_defn_to_vec (obstackp,
6111                            fixup_symbol_section (arg_sym, objfile),
6112                            block);
6113         }
6114     }
6115 }
6116 \f
6117
6118                                 /* Symbol Completion */
6119
6120 /* See symtab.h.  */
6121
6122 bool
6123 ada_lookup_name_info::matches
6124   (const char *sym_name,
6125    symbol_name_match_type match_type,
6126    completion_match_result *comp_match_res) const
6127 {
6128   bool match = false;
6129   const char *text = m_encoded_name.c_str ();
6130   size_t text_len = m_encoded_name.size ();
6131
6132   /* First, test against the fully qualified name of the symbol.  */
6133
6134   if (strncmp (sym_name, text, text_len) == 0)
6135     match = true;
6136
6137   std::string decoded_name = ada_decode (sym_name);
6138   if (match && !m_encoded_p)
6139     {
6140       /* One needed check before declaring a positive match is to verify
6141          that iff we are doing a verbatim match, the decoded version
6142          of the symbol name starts with '<'.  Otherwise, this symbol name
6143          is not a suitable completion.  */
6144
6145       bool has_angle_bracket = (decoded_name[0] == '<');
6146       match = (has_angle_bracket == m_verbatim_p);
6147     }
6148
6149   if (match && !m_verbatim_p)
6150     {
6151       /* When doing non-verbatim match, another check that needs to
6152          be done is to verify that the potentially matching symbol name
6153          does not include capital letters, because the ada-mode would
6154          not be able to understand these symbol names without the
6155          angle bracket notation.  */
6156       const char *tmp;
6157
6158       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6159       if (*tmp != '\0')
6160         match = false;
6161     }
6162
6163   /* Second: Try wild matching...  */
6164
6165   if (!match && m_wild_match_p)
6166     {
6167       /* Since we are doing wild matching, this means that TEXT
6168          may represent an unqualified symbol name.  We therefore must
6169          also compare TEXT against the unqualified name of the symbol.  */
6170       sym_name = ada_unqualified_name (decoded_name.c_str ());
6171
6172       if (strncmp (sym_name, text, text_len) == 0)
6173         match = true;
6174     }
6175
6176   /* Finally: If we found a match, prepare the result to return.  */
6177
6178   if (!match)
6179     return false;
6180
6181   if (comp_match_res != NULL)
6182     {
6183       std::string &match_str = comp_match_res->match.storage ();
6184
6185       if (!m_encoded_p)
6186         match_str = ada_decode (sym_name);
6187       else
6188         {
6189           if (m_verbatim_p)
6190             match_str = add_angle_brackets (sym_name);
6191           else
6192             match_str = sym_name;
6193
6194         }
6195
6196       comp_match_res->set_match (match_str.c_str ());
6197     }
6198
6199   return true;
6200 }
6201
6202                                 /* Field Access */
6203
6204 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6205    for tagged types.  */
6206
6207 static int
6208 ada_is_dispatch_table_ptr_type (struct type *type)
6209 {
6210   const char *name;
6211
6212   if (type->code () != TYPE_CODE_PTR)
6213     return 0;
6214
6215   name = TYPE_TARGET_TYPE (type)->name ();
6216   if (name == NULL)
6217     return 0;
6218
6219   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6220 }
6221
6222 /* Return non-zero if TYPE is an interface tag.  */
6223
6224 static int
6225 ada_is_interface_tag (struct type *type)
6226 {
6227   const char *name = type->name ();
6228
6229   if (name == NULL)
6230     return 0;
6231
6232   return (strcmp (name, "ada__tags__interface_tag") == 0);
6233 }
6234
6235 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6236    to be invisible to users.  */
6237
6238 int
6239 ada_is_ignored_field (struct type *type, int field_num)
6240 {
6241   if (field_num < 0 || field_num > type->num_fields ())
6242     return 1;
6243
6244   /* Check the name of that field.  */
6245   {
6246     const char *name = TYPE_FIELD_NAME (type, field_num);
6247
6248     /* Anonymous field names should not be printed.
6249        brobecker/2007-02-20: I don't think this can actually happen
6250        but we don't want to print the value of anonymous fields anyway.  */
6251     if (name == NULL)
6252       return 1;
6253
6254     /* Normally, fields whose name start with an underscore ("_")
6255        are fields that have been internally generated by the compiler,
6256        and thus should not be printed.  The "_parent" field is special,
6257        however: This is a field internally generated by the compiler
6258        for tagged types, and it contains the components inherited from
6259        the parent type.  This field should not be printed as is, but
6260        should not be ignored either.  */
6261     if (name[0] == '_' && !startswith (name, "_parent"))
6262       return 1;
6263   }
6264
6265   /* If this is the dispatch table of a tagged type or an interface tag,
6266      then ignore.  */
6267   if (ada_is_tagged_type (type, 1)
6268       && (ada_is_dispatch_table_ptr_type (type->field (field_num).type ())
6269           || ada_is_interface_tag (type->field (field_num).type ())))
6270     return 1;
6271
6272   /* Not a special field, so it should not be ignored.  */
6273   return 0;
6274 }
6275
6276 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6277    pointer or reference type whose ultimate target has a tag field.  */
6278
6279 int
6280 ada_is_tagged_type (struct type *type, int refok)
6281 {
6282   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6283 }
6284
6285 /* True iff TYPE represents the type of X'Tag */
6286
6287 int
6288 ada_is_tag_type (struct type *type)
6289 {
6290   type = ada_check_typedef (type);
6291
6292   if (type == NULL || type->code () != TYPE_CODE_PTR)
6293     return 0;
6294   else
6295     {
6296       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6297
6298       return (name != NULL
6299               && strcmp (name, "ada__tags__dispatch_table") == 0);
6300     }
6301 }
6302
6303 /* The type of the tag on VAL.  */
6304
6305 static struct type *
6306 ada_tag_type (struct value *val)
6307 {
6308   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6309 }
6310
6311 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6312    retired at Ada 05).  */
6313
6314 static int
6315 is_ada95_tag (struct value *tag)
6316 {
6317   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6318 }
6319
6320 /* The value of the tag on VAL.  */
6321
6322 static struct value *
6323 ada_value_tag (struct value *val)
6324 {
6325   return ada_value_struct_elt (val, "_tag", 0);
6326 }
6327
6328 /* The value of the tag on the object of type TYPE whose contents are
6329    saved at VALADDR, if it is non-null, or is at memory address
6330    ADDRESS.  */
6331
6332 static struct value *
6333 value_tag_from_contents_and_address (struct type *type,
6334                                      const gdb_byte *valaddr,
6335                                      CORE_ADDR address)
6336 {
6337   int tag_byte_offset;
6338   struct type *tag_type;
6339
6340   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6341                          NULL, NULL, NULL))
6342     {
6343       const gdb_byte *valaddr1 = ((valaddr == NULL)
6344                                   ? NULL
6345                                   : valaddr + tag_byte_offset);
6346       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6347
6348       return value_from_contents_and_address (tag_type, valaddr1, address1);
6349     }
6350   return NULL;
6351 }
6352
6353 static struct type *
6354 type_from_tag (struct value *tag)
6355 {
6356   gdb::unique_xmalloc_ptr<char> type_name = ada_tag_name (tag);
6357
6358   if (type_name != NULL)
6359     return ada_find_any_type (ada_encode (type_name.get ()));
6360   return NULL;
6361 }
6362
6363 /* Given a value OBJ of a tagged type, return a value of this
6364    type at the base address of the object.  The base address, as
6365    defined in Ada.Tags, it is the address of the primary tag of
6366    the object, and therefore where the field values of its full
6367    view can be fetched.  */
6368
6369 struct value *
6370 ada_tag_value_at_base_address (struct value *obj)
6371 {
6372   struct value *val;
6373   LONGEST offset_to_top = 0;
6374   struct type *ptr_type, *obj_type;
6375   struct value *tag;
6376   CORE_ADDR base_address;
6377
6378   obj_type = value_type (obj);
6379
6380   /* It is the responsability of the caller to deref pointers.  */
6381
6382   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6383     return obj;
6384
6385   tag = ada_value_tag (obj);
6386   if (!tag)
6387     return obj;
6388
6389   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6390
6391   if (is_ada95_tag (tag))
6392     return obj;
6393
6394   ptr_type = language_lookup_primitive_type
6395     (language_def (language_ada), target_gdbarch(), "storage_offset");
6396   ptr_type = lookup_pointer_type (ptr_type);
6397   val = value_cast (ptr_type, tag);
6398   if (!val)
6399     return obj;
6400
6401   /* It is perfectly possible that an exception be raised while
6402      trying to determine the base address, just like for the tag;
6403      see ada_tag_name for more details.  We do not print the error
6404      message for the same reason.  */
6405
6406   try
6407     {
6408       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6409     }
6410
6411   catch (const gdb_exception_error &e)
6412     {
6413       return obj;
6414     }
6415
6416   /* If offset is null, nothing to do.  */
6417
6418   if (offset_to_top == 0)
6419     return obj;
6420
6421   /* -1 is a special case in Ada.Tags; however, what should be done
6422      is not quite clear from the documentation.  So do nothing for
6423      now.  */
6424
6425   if (offset_to_top == -1)
6426     return obj;
6427
6428   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6429      from the base address.  This was however incompatible with
6430      C++ dispatch table: C++ uses a *negative* value to *add*
6431      to the base address.  Ada's convention has therefore been
6432      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6433      use the same convention.  Here, we support both cases by
6434      checking the sign of OFFSET_TO_TOP.  */
6435
6436   if (offset_to_top > 0)
6437     offset_to_top = -offset_to_top;
6438
6439   base_address = value_address (obj) + offset_to_top;
6440   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6441
6442   /* Make sure that we have a proper tag at the new address.
6443      Otherwise, offset_to_top is bogus (which can happen when
6444      the object is not initialized yet).  */
6445
6446   if (!tag)
6447     return obj;
6448
6449   obj_type = type_from_tag (tag);
6450
6451   if (!obj_type)
6452     return obj;
6453
6454   return value_from_contents_and_address (obj_type, NULL, base_address);
6455 }
6456
6457 /* Return the "ada__tags__type_specific_data" type.  */
6458
6459 static struct type *
6460 ada_get_tsd_type (struct inferior *inf)
6461 {
6462   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6463
6464   if (data->tsd_type == 0)
6465     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6466   return data->tsd_type;
6467 }
6468
6469 /* Return the TSD (type-specific data) associated to the given TAG.
6470    TAG is assumed to be the tag of a tagged-type entity.
6471
6472    May return NULL if we are unable to get the TSD.  */
6473
6474 static struct value *
6475 ada_get_tsd_from_tag (struct value *tag)
6476 {
6477   struct value *val;
6478   struct type *type;
6479
6480   /* First option: The TSD is simply stored as a field of our TAG.
6481      Only older versions of GNAT would use this format, but we have
6482      to test it first, because there are no visible markers for
6483      the current approach except the absence of that field.  */
6484
6485   val = ada_value_struct_elt (tag, "tsd", 1);
6486   if (val)
6487     return val;
6488
6489   /* Try the second representation for the dispatch table (in which
6490      there is no explicit 'tsd' field in the referent of the tag pointer,
6491      and instead the tsd pointer is stored just before the dispatch
6492      table.  */
6493
6494   type = ada_get_tsd_type (current_inferior());
6495   if (type == NULL)
6496     return NULL;
6497   type = lookup_pointer_type (lookup_pointer_type (type));
6498   val = value_cast (type, tag);
6499   if (val == NULL)
6500     return NULL;
6501   return value_ind (value_ptradd (val, -1));
6502 }
6503
6504 /* Given the TSD of a tag (type-specific data), return a string
6505    containing the name of the associated type.
6506
6507    May return NULL if we are unable to determine the tag name.  */
6508
6509 static gdb::unique_xmalloc_ptr<char>
6510 ada_tag_name_from_tsd (struct value *tsd)
6511 {
6512   char *p;
6513   struct value *val;
6514
6515   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6516   if (val == NULL)
6517     return NULL;
6518   gdb::unique_xmalloc_ptr<char> buffer
6519     = target_read_string (value_as_address (val), INT_MAX);
6520   if (buffer == nullptr)
6521     return nullptr;
6522
6523   for (p = buffer.get (); *p != '\0'; ++p)
6524     {
6525       if (isalpha (*p))
6526         *p = tolower (*p);
6527     }
6528
6529   return buffer;
6530 }
6531
6532 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6533    a C string.
6534
6535    Return NULL if the TAG is not an Ada tag, or if we were unable to
6536    determine the name of that tag.  */
6537
6538 gdb::unique_xmalloc_ptr<char>
6539 ada_tag_name (struct value *tag)
6540 {
6541   gdb::unique_xmalloc_ptr<char> name;
6542
6543   if (!ada_is_tag_type (value_type (tag)))
6544     return NULL;
6545
6546   /* It is perfectly possible that an exception be raised while trying
6547      to determine the TAG's name, even under normal circumstances:
6548      The associated variable may be uninitialized or corrupted, for
6549      instance. We do not let any exception propagate past this point.
6550      instead we return NULL.
6551
6552      We also do not print the error message either (which often is very
6553      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6554      the caller print a more meaningful message if necessary.  */
6555   try
6556     {
6557       struct value *tsd = ada_get_tsd_from_tag (tag);
6558
6559       if (tsd != NULL)
6560         name = ada_tag_name_from_tsd (tsd);
6561     }
6562   catch (const gdb_exception_error &e)
6563     {
6564     }
6565
6566   return name;
6567 }
6568
6569 /* The parent type of TYPE, or NULL if none.  */
6570
6571 struct type *
6572 ada_parent_type (struct type *type)
6573 {
6574   int i;
6575
6576   type = ada_check_typedef (type);
6577
6578   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6579     return NULL;
6580
6581   for (i = 0; i < type->num_fields (); i += 1)
6582     if (ada_is_parent_field (type, i))
6583       {
6584         struct type *parent_type = type->field (i).type ();
6585
6586         /* If the _parent field is a pointer, then dereference it.  */
6587         if (parent_type->code () == TYPE_CODE_PTR)
6588           parent_type = TYPE_TARGET_TYPE (parent_type);
6589         /* If there is a parallel XVS type, get the actual base type.  */
6590         parent_type = ada_get_base_type (parent_type);
6591
6592         return ada_check_typedef (parent_type);
6593       }
6594
6595   return NULL;
6596 }
6597
6598 /* True iff field number FIELD_NUM of structure type TYPE contains the
6599    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6600    a structure type with at least FIELD_NUM+1 fields.  */
6601
6602 int
6603 ada_is_parent_field (struct type *type, int field_num)
6604 {
6605   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6606
6607   return (name != NULL
6608           && (startswith (name, "PARENT")
6609               || startswith (name, "_parent")));
6610 }
6611
6612 /* True iff field number FIELD_NUM of structure type TYPE is a
6613    transparent wrapper field (which should be silently traversed when doing
6614    field selection and flattened when printing).  Assumes TYPE is a
6615    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6616    structures.  */
6617
6618 int
6619 ada_is_wrapper_field (struct type *type, int field_num)
6620 {
6621   const char *name = TYPE_FIELD_NAME (type, field_num);
6622
6623   if (name != NULL && strcmp (name, "RETVAL") == 0)
6624     {
6625       /* This happens in functions with "out" or "in out" parameters
6626          which are passed by copy.  For such functions, GNAT describes
6627          the function's return type as being a struct where the return
6628          value is in a field called RETVAL, and where the other "out"
6629          or "in out" parameters are fields of that struct.  This is not
6630          a wrapper.  */
6631       return 0;
6632     }
6633
6634   return (name != NULL
6635           && (startswith (name, "PARENT")
6636               || strcmp (name, "REP") == 0
6637               || startswith (name, "_parent")
6638               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6639 }
6640
6641 /* True iff field number FIELD_NUM of structure or union type TYPE
6642    is a variant wrapper.  Assumes TYPE is a structure type with at least
6643    FIELD_NUM+1 fields.  */
6644
6645 int
6646 ada_is_variant_part (struct type *type, int field_num)
6647 {
6648   /* Only Ada types are eligible.  */
6649   if (!ADA_TYPE_P (type))
6650     return 0;
6651
6652   struct type *field_type = type->field (field_num).type ();
6653
6654   return (field_type->code () == TYPE_CODE_UNION
6655           || (is_dynamic_field (type, field_num)
6656               && (TYPE_TARGET_TYPE (field_type)->code ()
6657                   == TYPE_CODE_UNION)));
6658 }
6659
6660 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6661    whose discriminants are contained in the record type OUTER_TYPE,
6662    returns the type of the controlling discriminant for the variant.
6663    May return NULL if the type could not be found.  */
6664
6665 struct type *
6666 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6667 {
6668   const char *name = ada_variant_discrim_name (var_type);
6669
6670   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6671 }
6672
6673 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6674    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6675    represents a 'when others' clause; otherwise 0.  */
6676
6677 static int
6678 ada_is_others_clause (struct type *type, int field_num)
6679 {
6680   const char *name = TYPE_FIELD_NAME (type, field_num);
6681
6682   return (name != NULL && name[0] == 'O');
6683 }
6684
6685 /* Assuming that TYPE0 is the type of the variant part of a record,
6686    returns the name of the discriminant controlling the variant.
6687    The value is valid until the next call to ada_variant_discrim_name.  */
6688
6689 const char *
6690 ada_variant_discrim_name (struct type *type0)
6691 {
6692   static char *result = NULL;
6693   static size_t result_len = 0;
6694   struct type *type;
6695   const char *name;
6696   const char *discrim_end;
6697   const char *discrim_start;
6698
6699   if (type0->code () == TYPE_CODE_PTR)
6700     type = TYPE_TARGET_TYPE (type0);
6701   else
6702     type = type0;
6703
6704   name = ada_type_name (type);
6705
6706   if (name == NULL || name[0] == '\000')
6707     return "";
6708
6709   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6710        discrim_end -= 1)
6711     {
6712       if (startswith (discrim_end, "___XVN"))
6713         break;
6714     }
6715   if (discrim_end == name)
6716     return "";
6717
6718   for (discrim_start = discrim_end; discrim_start != name + 3;
6719        discrim_start -= 1)
6720     {
6721       if (discrim_start == name + 1)
6722         return "";
6723       if ((discrim_start > name + 3
6724            && startswith (discrim_start - 3, "___"))
6725           || discrim_start[-1] == '.')
6726         break;
6727     }
6728
6729   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6730   strncpy (result, discrim_start, discrim_end - discrim_start);
6731   result[discrim_end - discrim_start] = '\0';
6732   return result;
6733 }
6734
6735 /* Scan STR for a subtype-encoded number, beginning at position K.
6736    Put the position of the character just past the number scanned in
6737    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6738    Return 1 if there was a valid number at the given position, and 0
6739    otherwise.  A "subtype-encoded" number consists of the absolute value
6740    in decimal, followed by the letter 'm' to indicate a negative number.
6741    Assumes 0m does not occur.  */
6742
6743 int
6744 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6745 {
6746   ULONGEST RU;
6747
6748   if (!isdigit (str[k]))
6749     return 0;
6750
6751   /* Do it the hard way so as not to make any assumption about
6752      the relationship of unsigned long (%lu scan format code) and
6753      LONGEST.  */
6754   RU = 0;
6755   while (isdigit (str[k]))
6756     {
6757       RU = RU * 10 + (str[k] - '0');
6758       k += 1;
6759     }
6760
6761   if (str[k] == 'm')
6762     {
6763       if (R != NULL)
6764         *R = (-(LONGEST) (RU - 1)) - 1;
6765       k += 1;
6766     }
6767   else if (R != NULL)
6768     *R = (LONGEST) RU;
6769
6770   /* NOTE on the above: Technically, C does not say what the results of
6771      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6772      number representable as a LONGEST (although either would probably work
6773      in most implementations).  When RU>0, the locution in the then branch
6774      above is always equivalent to the negative of RU.  */
6775
6776   if (new_k != NULL)
6777     *new_k = k;
6778   return 1;
6779 }
6780
6781 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6782    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6783    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6784
6785 static int
6786 ada_in_variant (LONGEST val, struct type *type, int field_num)
6787 {
6788   const char *name = TYPE_FIELD_NAME (type, field_num);
6789   int p;
6790
6791   p = 0;
6792   while (1)
6793     {
6794       switch (name[p])
6795         {
6796         case '\0':
6797           return 0;
6798         case 'S':
6799           {
6800             LONGEST W;
6801
6802             if (!ada_scan_number (name, p + 1, &W, &p))
6803               return 0;
6804             if (val == W)
6805               return 1;
6806             break;
6807           }
6808         case 'R':
6809           {
6810             LONGEST L, U;
6811
6812             if (!ada_scan_number (name, p + 1, &L, &p)
6813                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
6814               return 0;
6815             if (val >= L && val <= U)
6816               return 1;
6817             break;
6818           }
6819         case 'O':
6820           return 1;
6821         default:
6822           return 0;
6823         }
6824     }
6825 }
6826
6827 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
6828
6829 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
6830    ARG_TYPE, extract and return the value of one of its (non-static)
6831    fields.  FIELDNO says which field.   Differs from value_primitive_field
6832    only in that it can handle packed values of arbitrary type.  */
6833
6834 struct value *
6835 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
6836                            struct type *arg_type)
6837 {
6838   struct type *type;
6839
6840   arg_type = ada_check_typedef (arg_type);
6841   type = arg_type->field (fieldno).type ();
6842
6843   /* Handle packed fields.  It might be that the field is not packed
6844      relative to its containing structure, but the structure itself is
6845      packed; in this case we must take the bit-field path.  */
6846   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
6847     {
6848       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
6849       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
6850
6851       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
6852                                              offset + bit_pos / 8,
6853                                              bit_pos % 8, bit_size, type);
6854     }
6855   else
6856     return value_primitive_field (arg1, offset, fieldno, arg_type);
6857 }
6858
6859 /* Find field with name NAME in object of type TYPE.  If found, 
6860    set the following for each argument that is non-null:
6861     - *FIELD_TYPE_P to the field's type; 
6862     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
6863       an object of that type;
6864     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
6865     - *BIT_SIZE_P to its size in bits if the field is packed, and 
6866       0 otherwise;
6867    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
6868    fields up to but not including the desired field, or by the total
6869    number of fields if not found.   A NULL value of NAME never
6870    matches; the function just counts visible fields in this case.
6871    
6872    Notice that we need to handle when a tagged record hierarchy
6873    has some components with the same name, like in this scenario:
6874
6875       type Top_T is tagged record
6876          N : Integer := 1;
6877          U : Integer := 974;
6878          A : Integer := 48;
6879       end record;
6880
6881       type Middle_T is new Top.Top_T with record
6882          N : Character := 'a';
6883          C : Integer := 3;
6884       end record;
6885
6886      type Bottom_T is new Middle.Middle_T with record
6887         N : Float := 4.0;
6888         C : Character := '5';
6889         X : Integer := 6;
6890         A : Character := 'J';
6891      end record;
6892
6893    Let's say we now have a variable declared and initialized as follow:
6894
6895      TC : Top_A := new Bottom_T;
6896
6897    And then we use this variable to call this function
6898
6899      procedure Assign (Obj: in out Top_T; TV : Integer);
6900
6901    as follow:
6902
6903       Assign (Top_T (B), 12);
6904
6905    Now, we're in the debugger, and we're inside that procedure
6906    then and we want to print the value of obj.c:
6907
6908    Usually, the tagged record or one of the parent type owns the
6909    component to print and there's no issue but in this particular
6910    case, what does it mean to ask for Obj.C? Since the actual
6911    type for object is type Bottom_T, it could mean two things: type
6912    component C from the Middle_T view, but also component C from
6913    Bottom_T.  So in that "undefined" case, when the component is
6914    not found in the non-resolved type (which includes all the
6915    components of the parent type), then resolve it and see if we
6916    get better luck once expanded.
6917
6918    In the case of homonyms in the derived tagged type, we don't
6919    guaranty anything, and pick the one that's easiest for us
6920    to program.
6921
6922    Returns 1 if found, 0 otherwise.  */
6923
6924 static int
6925 find_struct_field (const char *name, struct type *type, int offset,
6926                    struct type **field_type_p,
6927                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
6928                    int *index_p)
6929 {
6930   int i;
6931   int parent_offset = -1;
6932
6933   type = ada_check_typedef (type);
6934
6935   if (field_type_p != NULL)
6936     *field_type_p = NULL;
6937   if (byte_offset_p != NULL)
6938     *byte_offset_p = 0;
6939   if (bit_offset_p != NULL)
6940     *bit_offset_p = 0;
6941   if (bit_size_p != NULL)
6942     *bit_size_p = 0;
6943
6944   for (i = 0; i < type->num_fields (); i += 1)
6945     {
6946       int bit_pos = TYPE_FIELD_BITPOS (type, i);
6947       int fld_offset = offset + bit_pos / 8;
6948       const char *t_field_name = TYPE_FIELD_NAME (type, i);
6949
6950       if (t_field_name == NULL)
6951         continue;
6952
6953       else if (ada_is_parent_field (type, i))
6954         {
6955           /* This is a field pointing us to the parent type of a tagged
6956              type.  As hinted in this function's documentation, we give
6957              preference to fields in the current record first, so what
6958              we do here is just record the index of this field before
6959              we skip it.  If it turns out we couldn't find our field
6960              in the current record, then we'll get back to it and search
6961              inside it whether the field might exist in the parent.  */
6962
6963           parent_offset = i;
6964           continue;
6965         }
6966
6967       else if (name != NULL && field_name_match (t_field_name, name))
6968         {
6969           int bit_size = TYPE_FIELD_BITSIZE (type, i);
6970
6971           if (field_type_p != NULL)
6972             *field_type_p = type->field (i).type ();
6973           if (byte_offset_p != NULL)
6974             *byte_offset_p = fld_offset;
6975           if (bit_offset_p != NULL)
6976             *bit_offset_p = bit_pos % 8;
6977           if (bit_size_p != NULL)
6978             *bit_size_p = bit_size;
6979           return 1;
6980         }
6981       else if (ada_is_wrapper_field (type, i))
6982         {
6983           if (find_struct_field (name, type->field (i).type (), fld_offset,
6984                                  field_type_p, byte_offset_p, bit_offset_p,
6985                                  bit_size_p, index_p))
6986             return 1;
6987         }
6988       else if (ada_is_variant_part (type, i))
6989         {
6990           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
6991              fixed type?? */
6992           int j;
6993           struct type *field_type
6994             = ada_check_typedef (type->field (i).type ());
6995
6996           for (j = 0; j < field_type->num_fields (); j += 1)
6997             {
6998               if (find_struct_field (name, field_type->field (j).type (),
6999                                      fld_offset
7000                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7001                                      field_type_p, byte_offset_p,
7002                                      bit_offset_p, bit_size_p, index_p))
7003                 return 1;
7004             }
7005         }
7006       else if (index_p != NULL)
7007         *index_p += 1;
7008     }
7009
7010   /* Field not found so far.  If this is a tagged type which
7011      has a parent, try finding that field in the parent now.  */
7012
7013   if (parent_offset != -1)
7014     {
7015       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7016       int fld_offset = offset + bit_pos / 8;
7017
7018       if (find_struct_field (name, type->field (parent_offset).type (),
7019                              fld_offset, field_type_p, byte_offset_p,
7020                              bit_offset_p, bit_size_p, index_p))
7021         return 1;
7022     }
7023
7024   return 0;
7025 }
7026
7027 /* Number of user-visible fields in record type TYPE.  */
7028
7029 static int
7030 num_visible_fields (struct type *type)
7031 {
7032   int n;
7033
7034   n = 0;
7035   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7036   return n;
7037 }
7038
7039 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7040    and search in it assuming it has (class) type TYPE.
7041    If found, return value, else return NULL.
7042
7043    Searches recursively through wrapper fields (e.g., '_parent').
7044
7045    In the case of homonyms in the tagged types, please refer to the
7046    long explanation in find_struct_field's function documentation.  */
7047
7048 static struct value *
7049 ada_search_struct_field (const char *name, struct value *arg, int offset,
7050                          struct type *type)
7051 {
7052   int i;
7053   int parent_offset = -1;
7054
7055   type = ada_check_typedef (type);
7056   for (i = 0; i < type->num_fields (); i += 1)
7057     {
7058       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7059
7060       if (t_field_name == NULL)
7061         continue;
7062
7063       else if (ada_is_parent_field (type, i))
7064         {
7065           /* This is a field pointing us to the parent type of a tagged
7066              type.  As hinted in this function's documentation, we give
7067              preference to fields in the current record first, so what
7068              we do here is just record the index of this field before
7069              we skip it.  If it turns out we couldn't find our field
7070              in the current record, then we'll get back to it and search
7071              inside it whether the field might exist in the parent.  */
7072
7073           parent_offset = i;
7074           continue;
7075         }
7076
7077       else if (field_name_match (t_field_name, name))
7078         return ada_value_primitive_field (arg, offset, i, type);
7079
7080       else if (ada_is_wrapper_field (type, i))
7081         {
7082           struct value *v =     /* Do not let indent join lines here.  */
7083             ada_search_struct_field (name, arg,
7084                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7085                                      type->field (i).type ());
7086
7087           if (v != NULL)
7088             return v;
7089         }
7090
7091       else if (ada_is_variant_part (type, i))
7092         {
7093           /* PNH: Do we ever get here?  See find_struct_field.  */
7094           int j;
7095           struct type *field_type = ada_check_typedef (type->field (i).type ());
7096           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7097
7098           for (j = 0; j < field_type->num_fields (); j += 1)
7099             {
7100               struct value *v = ada_search_struct_field /* Force line
7101                                                            break.  */
7102                 (name, arg,
7103                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7104                  field_type->field (j).type ());
7105
7106               if (v != NULL)
7107                 return v;
7108             }
7109         }
7110     }
7111
7112   /* Field not found so far.  If this is a tagged type which
7113      has a parent, try finding that field in the parent now.  */
7114
7115   if (parent_offset != -1)
7116     {
7117       struct value *v = ada_search_struct_field (
7118         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7119         type->field (parent_offset).type ());
7120
7121       if (v != NULL)
7122         return v;
7123     }
7124
7125   return NULL;
7126 }
7127
7128 static struct value *ada_index_struct_field_1 (int *, struct value *,
7129                                                int, struct type *);
7130
7131
7132 /* Return field #INDEX in ARG, where the index is that returned by
7133  * find_struct_field through its INDEX_P argument.  Adjust the address
7134  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7135  * If found, return value, else return NULL.  */
7136
7137 static struct value *
7138 ada_index_struct_field (int index, struct value *arg, int offset,
7139                         struct type *type)
7140 {
7141   return ada_index_struct_field_1 (&index, arg, offset, type);
7142 }
7143
7144
7145 /* Auxiliary function for ada_index_struct_field.  Like
7146  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7147  * *INDEX_P.  */
7148
7149 static struct value *
7150 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7151                           struct type *type)
7152 {
7153   int i;
7154   type = ada_check_typedef (type);
7155
7156   for (i = 0; i < type->num_fields (); i += 1)
7157     {
7158       if (TYPE_FIELD_NAME (type, i) == NULL)
7159         continue;
7160       else if (ada_is_wrapper_field (type, i))
7161         {
7162           struct value *v =     /* Do not let indent join lines here.  */
7163             ada_index_struct_field_1 (index_p, arg,
7164                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7165                                       type->field (i).type ());
7166
7167           if (v != NULL)
7168             return v;
7169         }
7170
7171       else if (ada_is_variant_part (type, i))
7172         {
7173           /* PNH: Do we ever get here?  See ada_search_struct_field,
7174              find_struct_field.  */
7175           error (_("Cannot assign this kind of variant record"));
7176         }
7177       else if (*index_p == 0)
7178         return ada_value_primitive_field (arg, offset, i, type);
7179       else
7180         *index_p -= 1;
7181     }
7182   return NULL;
7183 }
7184
7185 /* Return a string representation of type TYPE.  */
7186
7187 static std::string
7188 type_as_string (struct type *type)
7189 {
7190   string_file tmp_stream;
7191
7192   type_print (type, "", &tmp_stream, -1);
7193
7194   return std::move (tmp_stream.string ());
7195 }
7196
7197 /* Given a type TYPE, look up the type of the component of type named NAME.
7198    If DISPP is non-null, add its byte displacement from the beginning of a
7199    structure (pointed to by a value) of type TYPE to *DISPP (does not
7200    work for packed fields).
7201
7202    Matches any field whose name has NAME as a prefix, possibly
7203    followed by "___".
7204
7205    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7206    be a (pointer or reference)+ to a struct or union, and the
7207    ultimate target type will be searched.
7208
7209    Looks recursively into variant clauses and parent types.
7210
7211    In the case of homonyms in the tagged types, please refer to the
7212    long explanation in find_struct_field's function documentation.
7213
7214    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7215    TYPE is not a type of the right kind.  */
7216
7217 static struct type *
7218 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7219                             int noerr)
7220 {
7221   int i;
7222   int parent_offset = -1;
7223
7224   if (name == NULL)
7225     goto BadName;
7226
7227   if (refok && type != NULL)
7228     while (1)
7229       {
7230         type = ada_check_typedef (type);
7231         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7232           break;
7233         type = TYPE_TARGET_TYPE (type);
7234       }
7235
7236   if (type == NULL
7237       || (type->code () != TYPE_CODE_STRUCT
7238           && type->code () != TYPE_CODE_UNION))
7239     {
7240       if (noerr)
7241         return NULL;
7242
7243       error (_("Type %s is not a structure or union type"),
7244              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7245     }
7246
7247   type = to_static_fixed_type (type);
7248
7249   for (i = 0; i < type->num_fields (); i += 1)
7250     {
7251       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7252       struct type *t;
7253
7254       if (t_field_name == NULL)
7255         continue;
7256
7257       else if (ada_is_parent_field (type, i))
7258         {
7259           /* This is a field pointing us to the parent type of a tagged
7260              type.  As hinted in this function's documentation, we give
7261              preference to fields in the current record first, so what
7262              we do here is just record the index of this field before
7263              we skip it.  If it turns out we couldn't find our field
7264              in the current record, then we'll get back to it and search
7265              inside it whether the field might exist in the parent.  */
7266
7267           parent_offset = i;
7268           continue;
7269         }
7270
7271       else if (field_name_match (t_field_name, name))
7272         return type->field (i).type ();
7273
7274       else if (ada_is_wrapper_field (type, i))
7275         {
7276           t = ada_lookup_struct_elt_type (type->field (i).type (), name,
7277                                           0, 1);
7278           if (t != NULL)
7279             return t;
7280         }
7281
7282       else if (ada_is_variant_part (type, i))
7283         {
7284           int j;
7285           struct type *field_type = ada_check_typedef (type->field (i).type ());
7286
7287           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7288             {
7289               /* FIXME pnh 2008/01/26: We check for a field that is
7290                  NOT wrapped in a struct, since the compiler sometimes
7291                  generates these for unchecked variant types.  Revisit
7292                  if the compiler changes this practice.  */
7293               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7294
7295               if (v_field_name != NULL 
7296                   && field_name_match (v_field_name, name))
7297                 t = field_type->field (j).type ();
7298               else
7299                 t = ada_lookup_struct_elt_type (field_type->field (j).type (),
7300                                                 name, 0, 1);
7301
7302               if (t != NULL)
7303                 return t;
7304             }
7305         }
7306
7307     }
7308
7309     /* Field not found so far.  If this is a tagged type which
7310        has a parent, try finding that field in the parent now.  */
7311
7312     if (parent_offset != -1)
7313       {
7314         struct type *t;
7315
7316         t = ada_lookup_struct_elt_type (type->field (parent_offset).type (),
7317                                         name, 0, 1);
7318         if (t != NULL)
7319           return t;
7320       }
7321
7322 BadName:
7323   if (!noerr)
7324     {
7325       const char *name_str = name != NULL ? name : _("<null>");
7326
7327       error (_("Type %s has no component named %s"),
7328              type_as_string (type).c_str (), name_str);
7329     }
7330
7331   return NULL;
7332 }
7333
7334 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7335    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7336    represents an unchecked union (that is, the variant part of a
7337    record that is named in an Unchecked_Union pragma).  */
7338
7339 static int
7340 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7341 {
7342   const char *discrim_name = ada_variant_discrim_name (var_type);
7343
7344   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7345 }
7346
7347
7348 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7349    within OUTER, determine which variant clause (field number in VAR_TYPE,
7350    numbering from 0) is applicable.  Returns -1 if none are.  */
7351
7352 int
7353 ada_which_variant_applies (struct type *var_type, struct value *outer)
7354 {
7355   int others_clause;
7356   int i;
7357   const char *discrim_name = ada_variant_discrim_name (var_type);
7358   struct value *discrim;
7359   LONGEST discrim_val;
7360
7361   /* Using plain value_from_contents_and_address here causes problems
7362      because we will end up trying to resolve a type that is currently
7363      being constructed.  */
7364   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7365   if (discrim == NULL)
7366     return -1;
7367   discrim_val = value_as_long (discrim);
7368
7369   others_clause = -1;
7370   for (i = 0; i < var_type->num_fields (); i += 1)
7371     {
7372       if (ada_is_others_clause (var_type, i))
7373         others_clause = i;
7374       else if (ada_in_variant (discrim_val, var_type, i))
7375         return i;
7376     }
7377
7378   return others_clause;
7379 }
7380 \f
7381
7382
7383                                 /* Dynamic-Sized Records */
7384
7385 /* Strategy: The type ostensibly attached to a value with dynamic size
7386    (i.e., a size that is not statically recorded in the debugging
7387    data) does not accurately reflect the size or layout of the value.
7388    Our strategy is to convert these values to values with accurate,
7389    conventional types that are constructed on the fly.  */
7390
7391 /* There is a subtle and tricky problem here.  In general, we cannot
7392    determine the size of dynamic records without its data.  However,
7393    the 'struct value' data structure, which GDB uses to represent
7394    quantities in the inferior process (the target), requires the size
7395    of the type at the time of its allocation in order to reserve space
7396    for GDB's internal copy of the data.  That's why the
7397    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7398    rather than struct value*s.
7399
7400    However, GDB's internal history variables ($1, $2, etc.) are
7401    struct value*s containing internal copies of the data that are not, in
7402    general, the same as the data at their corresponding addresses in
7403    the target.  Fortunately, the types we give to these values are all
7404    conventional, fixed-size types (as per the strategy described
7405    above), so that we don't usually have to perform the
7406    'to_fixed_xxx_type' conversions to look at their values.
7407    Unfortunately, there is one exception: if one of the internal
7408    history variables is an array whose elements are unconstrained
7409    records, then we will need to create distinct fixed types for each
7410    element selected.  */
7411
7412 /* The upshot of all of this is that many routines take a (type, host
7413    address, target address) triple as arguments to represent a value.
7414    The host address, if non-null, is supposed to contain an internal
7415    copy of the relevant data; otherwise, the program is to consult the
7416    target at the target address.  */
7417
7418 /* Assuming that VAL0 represents a pointer value, the result of
7419    dereferencing it.  Differs from value_ind in its treatment of
7420    dynamic-sized types.  */
7421
7422 struct value *
7423 ada_value_ind (struct value *val0)
7424 {
7425   struct value *val = value_ind (val0);
7426
7427   if (ada_is_tagged_type (value_type (val), 0))
7428     val = ada_tag_value_at_base_address (val);
7429
7430   return ada_to_fixed_value (val);
7431 }
7432
7433 /* The value resulting from dereferencing any "reference to"
7434    qualifiers on VAL0.  */
7435
7436 static struct value *
7437 ada_coerce_ref (struct value *val0)
7438 {
7439   if (value_type (val0)->code () == TYPE_CODE_REF)
7440     {
7441       struct value *val = val0;
7442
7443       val = coerce_ref (val);
7444
7445       if (ada_is_tagged_type (value_type (val), 0))
7446         val = ada_tag_value_at_base_address (val);
7447
7448       return ada_to_fixed_value (val);
7449     }
7450   else
7451     return val0;
7452 }
7453
7454 /* Return the bit alignment required for field #F of template type TYPE.  */
7455
7456 static unsigned int
7457 field_alignment (struct type *type, int f)
7458 {
7459   const char *name = TYPE_FIELD_NAME (type, f);
7460   int len;
7461   int align_offset;
7462
7463   /* The field name should never be null, unless the debugging information
7464      is somehow malformed.  In this case, we assume the field does not
7465      require any alignment.  */
7466   if (name == NULL)
7467     return 1;
7468
7469   len = strlen (name);
7470
7471   if (!isdigit (name[len - 1]))
7472     return 1;
7473
7474   if (isdigit (name[len - 2]))
7475     align_offset = len - 2;
7476   else
7477     align_offset = len - 1;
7478
7479   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7480     return TARGET_CHAR_BIT;
7481
7482   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7483 }
7484
7485 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7486
7487 static struct symbol *
7488 ada_find_any_type_symbol (const char *name)
7489 {
7490   struct symbol *sym;
7491
7492   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7493   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7494     return sym;
7495
7496   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7497   return sym;
7498 }
7499
7500 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7501    solely for types defined by debug info, it will not search the GDB
7502    primitive types.  */
7503
7504 static struct type *
7505 ada_find_any_type (const char *name)
7506 {
7507   struct symbol *sym = ada_find_any_type_symbol (name);
7508
7509   if (sym != NULL)
7510     return SYMBOL_TYPE (sym);
7511
7512   return NULL;
7513 }
7514
7515 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7516    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7517    symbol, in which case it is returned.  Otherwise, this looks for
7518    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7519    Return symbol if found, and NULL otherwise.  */
7520
7521 static bool
7522 ada_is_renaming_symbol (struct symbol *name_sym)
7523 {
7524   const char *name = name_sym->linkage_name ();
7525   return strstr (name, "___XR") != NULL;
7526 }
7527
7528 /* Because of GNAT encoding conventions, several GDB symbols may match a
7529    given type name.  If the type denoted by TYPE0 is to be preferred to
7530    that of TYPE1 for purposes of type printing, return non-zero;
7531    otherwise return 0.  */
7532
7533 int
7534 ada_prefer_type (struct type *type0, struct type *type1)
7535 {
7536   if (type1 == NULL)
7537     return 1;
7538   else if (type0 == NULL)
7539     return 0;
7540   else if (type1->code () == TYPE_CODE_VOID)
7541     return 1;
7542   else if (type0->code () == TYPE_CODE_VOID)
7543     return 0;
7544   else if (type1->name () == NULL && type0->name () != NULL)
7545     return 1;
7546   else if (ada_is_constrained_packed_array_type (type0))
7547     return 1;
7548   else if (ada_is_array_descriptor_type (type0)
7549            && !ada_is_array_descriptor_type (type1))
7550     return 1;
7551   else
7552     {
7553       const char *type0_name = type0->name ();
7554       const char *type1_name = type1->name ();
7555
7556       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7557           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7558         return 1;
7559     }
7560   return 0;
7561 }
7562
7563 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7564    null.  */
7565
7566 const char *
7567 ada_type_name (struct type *type)
7568 {
7569   if (type == NULL)
7570     return NULL;
7571   return type->name ();
7572 }
7573
7574 /* Search the list of "descriptive" types associated to TYPE for a type
7575    whose name is NAME.  */
7576
7577 static struct type *
7578 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7579 {
7580   struct type *result, *tmp;
7581
7582   if (ada_ignore_descriptive_types_p)
7583     return NULL;
7584
7585   /* If there no descriptive-type info, then there is no parallel type
7586      to be found.  */
7587   if (!HAVE_GNAT_AUX_INFO (type))
7588     return NULL;
7589
7590   result = TYPE_DESCRIPTIVE_TYPE (type);
7591   while (result != NULL)
7592     {
7593       const char *result_name = ada_type_name (result);
7594
7595       if (result_name == NULL)
7596         {
7597           warning (_("unexpected null name on descriptive type"));
7598           return NULL;
7599         }
7600
7601       /* If the names match, stop.  */
7602       if (strcmp (result_name, name) == 0)
7603         break;
7604
7605       /* Otherwise, look at the next item on the list, if any.  */
7606       if (HAVE_GNAT_AUX_INFO (result))
7607         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7608       else
7609         tmp = NULL;
7610
7611       /* If not found either, try after having resolved the typedef.  */
7612       if (tmp != NULL)
7613         result = tmp;
7614       else
7615         {
7616           result = check_typedef (result);
7617           if (HAVE_GNAT_AUX_INFO (result))
7618             result = TYPE_DESCRIPTIVE_TYPE (result);
7619           else
7620             result = NULL;
7621         }
7622     }
7623
7624   /* If we didn't find a match, see whether this is a packed array.  With
7625      older compilers, the descriptive type information is either absent or
7626      irrelevant when it comes to packed arrays so the above lookup fails.
7627      Fall back to using a parallel lookup by name in this case.  */
7628   if (result == NULL && ada_is_constrained_packed_array_type (type))
7629     return ada_find_any_type (name);
7630
7631   return result;
7632 }
7633
7634 /* Find a parallel type to TYPE with the specified NAME, using the
7635    descriptive type taken from the debugging information, if available,
7636    and otherwise using the (slower) name-based method.  */
7637
7638 static struct type *
7639 ada_find_parallel_type_with_name (struct type *type, const char *name)
7640 {
7641   struct type *result = NULL;
7642
7643   if (HAVE_GNAT_AUX_INFO (type))
7644     result = find_parallel_type_by_descriptive_type (type, name);
7645   else
7646     result = ada_find_any_type (name);
7647
7648   return result;
7649 }
7650
7651 /* Same as above, but specify the name of the parallel type by appending
7652    SUFFIX to the name of TYPE.  */
7653
7654 struct type *
7655 ada_find_parallel_type (struct type *type, const char *suffix)
7656 {
7657   char *name;
7658   const char *type_name = ada_type_name (type);
7659   int len;
7660
7661   if (type_name == NULL)
7662     return NULL;
7663
7664   len = strlen (type_name);
7665
7666   name = (char *) alloca (len + strlen (suffix) + 1);
7667
7668   strcpy (name, type_name);
7669   strcpy (name + len, suffix);
7670
7671   return ada_find_parallel_type_with_name (type, name);
7672 }
7673
7674 /* If TYPE is a variable-size record type, return the corresponding template
7675    type describing its fields.  Otherwise, return NULL.  */
7676
7677 static struct type *
7678 dynamic_template_type (struct type *type)
7679 {
7680   type = ada_check_typedef (type);
7681
7682   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7683       || ada_type_name (type) == NULL)
7684     return NULL;
7685   else
7686     {
7687       int len = strlen (ada_type_name (type));
7688
7689       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7690         return type;
7691       else
7692         return ada_find_parallel_type (type, "___XVE");
7693     }
7694 }
7695
7696 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7697    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7698
7699 static int
7700 is_dynamic_field (struct type *templ_type, int field_num)
7701 {
7702   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7703
7704   return name != NULL
7705     && templ_type->field (field_num).type ()->code () == TYPE_CODE_PTR
7706     && strstr (name, "___XVL") != NULL;
7707 }
7708
7709 /* The index of the variant field of TYPE, or -1 if TYPE does not
7710    represent a variant record type.  */
7711
7712 static int
7713 variant_field_index (struct type *type)
7714 {
7715   int f;
7716
7717   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7718     return -1;
7719
7720   for (f = 0; f < type->num_fields (); f += 1)
7721     {
7722       if (ada_is_variant_part (type, f))
7723         return f;
7724     }
7725   return -1;
7726 }
7727
7728 /* A record type with no fields.  */
7729
7730 static struct type *
7731 empty_record (struct type *templ)
7732 {
7733   struct type *type = alloc_type_copy (templ);
7734
7735   type->set_code (TYPE_CODE_STRUCT);
7736   INIT_NONE_SPECIFIC (type);
7737   type->set_name ("<empty>");
7738   TYPE_LENGTH (type) = 0;
7739   return type;
7740 }
7741
7742 /* An ordinary record type (with fixed-length fields) that describes
7743    the value of type TYPE at VALADDR or ADDRESS (see comments at
7744    the beginning of this section) VAL according to GNAT conventions.
7745    DVAL0 should describe the (portion of a) record that contains any
7746    necessary discriminants.  It should be NULL if value_type (VAL) is
7747    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7748    variant field (unless unchecked) is replaced by a particular branch
7749    of the variant.
7750
7751    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7752    length are not statically known are discarded.  As a consequence,
7753    VALADDR, ADDRESS and DVAL0 are ignored.
7754
7755    NOTE: Limitations: For now, we assume that dynamic fields and
7756    variants occupy whole numbers of bytes.  However, they need not be
7757    byte-aligned.  */
7758
7759 struct type *
7760 ada_template_to_fixed_record_type_1 (struct type *type,
7761                                      const gdb_byte *valaddr,
7762                                      CORE_ADDR address, struct value *dval0,
7763                                      int keep_dynamic_fields)
7764 {
7765   struct value *mark = value_mark ();
7766   struct value *dval;
7767   struct type *rtype;
7768   int nfields, bit_len;
7769   int variant_field;
7770   long off;
7771   int fld_bit_len;
7772   int f;
7773
7774   /* Compute the number of fields in this record type that are going
7775      to be processed: unless keep_dynamic_fields, this includes only
7776      fields whose position and length are static will be processed.  */
7777   if (keep_dynamic_fields)
7778     nfields = type->num_fields ();
7779   else
7780     {
7781       nfields = 0;
7782       while (nfields < type->num_fields ()
7783              && !ada_is_variant_part (type, nfields)
7784              && !is_dynamic_field (type, nfields))
7785         nfields++;
7786     }
7787
7788   rtype = alloc_type_copy (type);
7789   rtype->set_code (TYPE_CODE_STRUCT);
7790   INIT_NONE_SPECIFIC (rtype);
7791   rtype->set_num_fields (nfields);
7792   rtype->set_fields
7793    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
7794   rtype->set_name (ada_type_name (type));
7795   TYPE_FIXED_INSTANCE (rtype) = 1;
7796
7797   off = 0;
7798   bit_len = 0;
7799   variant_field = -1;
7800
7801   for (f = 0; f < nfields; f += 1)
7802     {
7803       off = align_up (off, field_alignment (type, f))
7804         + TYPE_FIELD_BITPOS (type, f);
7805       SET_FIELD_BITPOS (rtype->field (f), off);
7806       TYPE_FIELD_BITSIZE (rtype, f) = 0;
7807
7808       if (ada_is_variant_part (type, f))
7809         {
7810           variant_field = f;
7811           fld_bit_len = 0;
7812         }
7813       else if (is_dynamic_field (type, f))
7814         {
7815           const gdb_byte *field_valaddr = valaddr;
7816           CORE_ADDR field_address = address;
7817           struct type *field_type =
7818             TYPE_TARGET_TYPE (type->field (f).type ());
7819
7820           if (dval0 == NULL)
7821             {
7822               /* rtype's length is computed based on the run-time
7823                  value of discriminants.  If the discriminants are not
7824                  initialized, the type size may be completely bogus and
7825                  GDB may fail to allocate a value for it.  So check the
7826                  size first before creating the value.  */
7827               ada_ensure_varsize_limit (rtype);
7828               /* Using plain value_from_contents_and_address here
7829                  causes problems because we will end up trying to
7830                  resolve a type that is currently being
7831                  constructed.  */
7832               dval = value_from_contents_and_address_unresolved (rtype,
7833                                                                  valaddr,
7834                                                                  address);
7835               rtype = value_type (dval);
7836             }
7837           else
7838             dval = dval0;
7839
7840           /* If the type referenced by this field is an aligner type, we need
7841              to unwrap that aligner type, because its size might not be set.
7842              Keeping the aligner type would cause us to compute the wrong
7843              size for this field, impacting the offset of the all the fields
7844              that follow this one.  */
7845           if (ada_is_aligner_type (field_type))
7846             {
7847               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
7848
7849               field_valaddr = cond_offset_host (field_valaddr, field_offset);
7850               field_address = cond_offset_target (field_address, field_offset);
7851               field_type = ada_aligned_type (field_type);
7852             }
7853
7854           field_valaddr = cond_offset_host (field_valaddr,
7855                                             off / TARGET_CHAR_BIT);
7856           field_address = cond_offset_target (field_address,
7857                                               off / TARGET_CHAR_BIT);
7858
7859           /* Get the fixed type of the field.  Note that, in this case,
7860              we do not want to get the real type out of the tag: if
7861              the current field is the parent part of a tagged record,
7862              we will get the tag of the object.  Clearly wrong: the real
7863              type of the parent is not the real type of the child.  We
7864              would end up in an infinite loop.  */
7865           field_type = ada_get_base_type (field_type);
7866           field_type = ada_to_fixed_type (field_type, field_valaddr,
7867                                           field_address, dval, 0);
7868           /* If the field size is already larger than the maximum
7869              object size, then the record itself will necessarily
7870              be larger than the maximum object size.  We need to make
7871              this check now, because the size might be so ridiculously
7872              large (due to an uninitialized variable in the inferior)
7873              that it would cause an overflow when adding it to the
7874              record size.  */
7875           ada_ensure_varsize_limit (field_type);
7876
7877           rtype->field (f).set_type (field_type);
7878           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7879           /* The multiplication can potentially overflow.  But because
7880              the field length has been size-checked just above, and
7881              assuming that the maximum size is a reasonable value,
7882              an overflow should not happen in practice.  So rather than
7883              adding overflow recovery code to this already complex code,
7884              we just assume that it's not going to happen.  */
7885           fld_bit_len =
7886             TYPE_LENGTH (rtype->field (f).type ()) * TARGET_CHAR_BIT;
7887         }
7888       else
7889         {
7890           /* Note: If this field's type is a typedef, it is important
7891              to preserve the typedef layer.
7892
7893              Otherwise, we might be transforming a typedef to a fat
7894              pointer (encoding a pointer to an unconstrained array),
7895              into a basic fat pointer (encoding an unconstrained
7896              array).  As both types are implemented using the same
7897              structure, the typedef is the only clue which allows us
7898              to distinguish between the two options.  Stripping it
7899              would prevent us from printing this field appropriately.  */
7900           rtype->field (f).set_type (type->field (f).type ());
7901           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
7902           if (TYPE_FIELD_BITSIZE (type, f) > 0)
7903             fld_bit_len =
7904               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
7905           else
7906             {
7907               struct type *field_type = type->field (f).type ();
7908
7909               /* We need to be careful of typedefs when computing
7910                  the length of our field.  If this is a typedef,
7911                  get the length of the target type, not the length
7912                  of the typedef.  */
7913               if (field_type->code () == TYPE_CODE_TYPEDEF)
7914                 field_type = ada_typedef_target_type (field_type);
7915
7916               fld_bit_len =
7917                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
7918             }
7919         }
7920       if (off + fld_bit_len > bit_len)
7921         bit_len = off + fld_bit_len;
7922       off += fld_bit_len;
7923       TYPE_LENGTH (rtype) =
7924         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7925     }
7926
7927   /* We handle the variant part, if any, at the end because of certain
7928      odd cases in which it is re-ordered so as NOT to be the last field of
7929      the record.  This can happen in the presence of representation
7930      clauses.  */
7931   if (variant_field >= 0)
7932     {
7933       struct type *branch_type;
7934
7935       off = TYPE_FIELD_BITPOS (rtype, variant_field);
7936
7937       if (dval0 == NULL)
7938         {
7939           /* Using plain value_from_contents_and_address here causes
7940              problems because we will end up trying to resolve a type
7941              that is currently being constructed.  */
7942           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
7943                                                              address);
7944           rtype = value_type (dval);
7945         }
7946       else
7947         dval = dval0;
7948
7949       branch_type =
7950         to_fixed_variant_branch_type
7951         (type->field (variant_field).type (),
7952          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
7953          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
7954       if (branch_type == NULL)
7955         {
7956           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
7957             rtype->field (f - 1) = rtype->field (f);
7958           rtype->set_num_fields (rtype->num_fields () - 1);
7959         }
7960       else
7961         {
7962           rtype->field (variant_field).set_type (branch_type);
7963           TYPE_FIELD_NAME (rtype, variant_field) = "S";
7964           fld_bit_len =
7965             TYPE_LENGTH (rtype->field (variant_field).type ()) *
7966             TARGET_CHAR_BIT;
7967           if (off + fld_bit_len > bit_len)
7968             bit_len = off + fld_bit_len;
7969           TYPE_LENGTH (rtype) =
7970             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
7971         }
7972     }
7973
7974   /* According to exp_dbug.ads, the size of TYPE for variable-size records
7975      should contain the alignment of that record, which should be a strictly
7976      positive value.  If null or negative, then something is wrong, most
7977      probably in the debug info.  In that case, we don't round up the size
7978      of the resulting type.  If this record is not part of another structure,
7979      the current RTYPE length might be good enough for our purposes.  */
7980   if (TYPE_LENGTH (type) <= 0)
7981     {
7982       if (rtype->name ())
7983         warning (_("Invalid type size for `%s' detected: %s."),
7984                  rtype->name (), pulongest (TYPE_LENGTH (type)));
7985       else
7986         warning (_("Invalid type size for <unnamed> detected: %s."),
7987                  pulongest (TYPE_LENGTH (type)));
7988     }
7989   else
7990     {
7991       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
7992                                       TYPE_LENGTH (type));
7993     }
7994
7995   value_free_to_mark (mark);
7996   if (TYPE_LENGTH (rtype) > varsize_limit)
7997     error (_("record type with dynamic size is larger than varsize-limit"));
7998   return rtype;
7999 }
8000
8001 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8002    of 1.  */
8003
8004 static struct type *
8005 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8006                                CORE_ADDR address, struct value *dval0)
8007 {
8008   return ada_template_to_fixed_record_type_1 (type, valaddr,
8009                                               address, dval0, 1);
8010 }
8011
8012 /* An ordinary record type in which ___XVL-convention fields and
8013    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8014    static approximations, containing all possible fields.  Uses
8015    no runtime values.  Useless for use in values, but that's OK,
8016    since the results are used only for type determinations.   Works on both
8017    structs and unions.  Representation note: to save space, we memorize
8018    the result of this function in the TYPE_TARGET_TYPE of the
8019    template type.  */
8020
8021 static struct type *
8022 template_to_static_fixed_type (struct type *type0)
8023 {
8024   struct type *type;
8025   int nfields;
8026   int f;
8027
8028   /* No need no do anything if the input type is already fixed.  */
8029   if (TYPE_FIXED_INSTANCE (type0))
8030     return type0;
8031
8032   /* Likewise if we already have computed the static approximation.  */
8033   if (TYPE_TARGET_TYPE (type0) != NULL)
8034     return TYPE_TARGET_TYPE (type0);
8035
8036   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8037   type = type0;
8038   nfields = type0->num_fields ();
8039
8040   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8041      recompute all over next time.  */
8042   TYPE_TARGET_TYPE (type0) = type;
8043
8044   for (f = 0; f < nfields; f += 1)
8045     {
8046       struct type *field_type = type0->field (f).type ();
8047       struct type *new_type;
8048
8049       if (is_dynamic_field (type0, f))
8050         {
8051           field_type = ada_check_typedef (field_type);
8052           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8053         }
8054       else
8055         new_type = static_unwrap_type (field_type);
8056
8057       if (new_type != field_type)
8058         {
8059           /* Clone TYPE0 only the first time we get a new field type.  */
8060           if (type == type0)
8061             {
8062               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8063               type->set_code (type0->code ());
8064               INIT_NONE_SPECIFIC (type);
8065               type->set_num_fields (nfields);
8066
8067               field *fields =
8068                 ((struct field *)
8069                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
8070               memcpy (fields, type0->fields (),
8071                       sizeof (struct field) * nfields);
8072               type->set_fields (fields);
8073
8074               type->set_name (ada_type_name (type0));
8075               TYPE_FIXED_INSTANCE (type) = 1;
8076               TYPE_LENGTH (type) = 0;
8077             }
8078           type->field (f).set_type (new_type);
8079           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8080         }
8081     }
8082
8083   return type;
8084 }
8085
8086 /* Given an object of type TYPE whose contents are at VALADDR and
8087    whose address in memory is ADDRESS, returns a revision of TYPE,
8088    which should be a non-dynamic-sized record, in which the variant
8089    part, if any, is replaced with the appropriate branch.  Looks
8090    for discriminant values in DVAL0, which can be NULL if the record
8091    contains the necessary discriminant values.  */
8092
8093 static struct type *
8094 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8095                                    CORE_ADDR address, struct value *dval0)
8096 {
8097   struct value *mark = value_mark ();
8098   struct value *dval;
8099   struct type *rtype;
8100   struct type *branch_type;
8101   int nfields = type->num_fields ();
8102   int variant_field = variant_field_index (type);
8103
8104   if (variant_field == -1)
8105     return type;
8106
8107   if (dval0 == NULL)
8108     {
8109       dval = value_from_contents_and_address (type, valaddr, address);
8110       type = value_type (dval);
8111     }
8112   else
8113     dval = dval0;
8114
8115   rtype = alloc_type_copy (type);
8116   rtype->set_code (TYPE_CODE_STRUCT);
8117   INIT_NONE_SPECIFIC (rtype);
8118   rtype->set_num_fields (nfields);
8119
8120   field *fields =
8121     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8122   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8123   rtype->set_fields (fields);
8124
8125   rtype->set_name (ada_type_name (type));
8126   TYPE_FIXED_INSTANCE (rtype) = 1;
8127   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8128
8129   branch_type = to_fixed_variant_branch_type
8130     (type->field (variant_field).type (),
8131      cond_offset_host (valaddr,
8132                        TYPE_FIELD_BITPOS (type, variant_field)
8133                        / TARGET_CHAR_BIT),
8134      cond_offset_target (address,
8135                          TYPE_FIELD_BITPOS (type, variant_field)
8136                          / TARGET_CHAR_BIT), dval);
8137   if (branch_type == NULL)
8138     {
8139       int f;
8140
8141       for (f = variant_field + 1; f < nfields; f += 1)
8142         rtype->field (f - 1) = rtype->field (f);
8143       rtype->set_num_fields (rtype->num_fields () - 1);
8144     }
8145   else
8146     {
8147       rtype->field (variant_field).set_type (branch_type);
8148       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8149       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8150       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8151     }
8152   TYPE_LENGTH (rtype) -= TYPE_LENGTH (type->field (variant_field).type ());
8153
8154   value_free_to_mark (mark);
8155   return rtype;
8156 }
8157
8158 /* An ordinary record type (with fixed-length fields) that describes
8159    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8160    beginning of this section].   Any necessary discriminants' values
8161    should be in DVAL, a record value; it may be NULL if the object
8162    at ADDR itself contains any necessary discriminant values.
8163    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8164    values from the record are needed.  Except in the case that DVAL,
8165    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8166    unchecked) is replaced by a particular branch of the variant.
8167
8168    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8169    is questionable and may be removed.  It can arise during the
8170    processing of an unconstrained-array-of-record type where all the
8171    variant branches have exactly the same size.  This is because in
8172    such cases, the compiler does not bother to use the XVS convention
8173    when encoding the record.  I am currently dubious of this
8174    shortcut and suspect the compiler should be altered.  FIXME.  */
8175
8176 static struct type *
8177 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8178                       CORE_ADDR address, struct value *dval)
8179 {
8180   struct type *templ_type;
8181
8182   if (TYPE_FIXED_INSTANCE (type0))
8183     return type0;
8184
8185   templ_type = dynamic_template_type (type0);
8186
8187   if (templ_type != NULL)
8188     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8189   else if (variant_field_index (type0) >= 0)
8190     {
8191       if (dval == NULL && valaddr == NULL && address == 0)
8192         return type0;
8193       return to_record_with_fixed_variant_part (type0, valaddr, address,
8194                                                 dval);
8195     }
8196   else
8197     {
8198       TYPE_FIXED_INSTANCE (type0) = 1;
8199       return type0;
8200     }
8201
8202 }
8203
8204 /* An ordinary record type (with fixed-length fields) that describes
8205    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8206    union type.  Any necessary discriminants' values should be in DVAL,
8207    a record value.  That is, this routine selects the appropriate
8208    branch of the union at ADDR according to the discriminant value
8209    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8210    it represents a variant subject to a pragma Unchecked_Union.  */
8211
8212 static struct type *
8213 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8214                               CORE_ADDR address, struct value *dval)
8215 {
8216   int which;
8217   struct type *templ_type;
8218   struct type *var_type;
8219
8220   if (var_type0->code () == TYPE_CODE_PTR)
8221     var_type = TYPE_TARGET_TYPE (var_type0);
8222   else
8223     var_type = var_type0;
8224
8225   templ_type = ada_find_parallel_type (var_type, "___XVU");
8226
8227   if (templ_type != NULL)
8228     var_type = templ_type;
8229
8230   if (is_unchecked_variant (var_type, value_type (dval)))
8231       return var_type0;
8232   which = ada_which_variant_applies (var_type, dval);
8233
8234   if (which < 0)
8235     return empty_record (var_type);
8236   else if (is_dynamic_field (var_type, which))
8237     return to_fixed_record_type
8238       (TYPE_TARGET_TYPE (var_type->field (which).type ()),
8239        valaddr, address, dval);
8240   else if (variant_field_index (var_type->field (which).type ()) >= 0)
8241     return
8242       to_fixed_record_type
8243       (var_type->field (which).type (), valaddr, address, dval);
8244   else
8245     return var_type->field (which).type ();
8246 }
8247
8248 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8249    ENCODING_TYPE, a type following the GNAT conventions for discrete
8250    type encodings, only carries redundant information.  */
8251
8252 static int
8253 ada_is_redundant_range_encoding (struct type *range_type,
8254                                  struct type *encoding_type)
8255 {
8256   const char *bounds_str;
8257   int n;
8258   LONGEST lo, hi;
8259
8260   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8261
8262   if (get_base_type (range_type)->code ()
8263       != get_base_type (encoding_type)->code ())
8264     {
8265       /* The compiler probably used a simple base type to describe
8266          the range type instead of the range's actual base type,
8267          expecting us to get the real base type from the encoding
8268          anyway.  In this situation, the encoding cannot be ignored
8269          as redundant.  */
8270       return 0;
8271     }
8272
8273   if (is_dynamic_type (range_type))
8274     return 0;
8275
8276   if (encoding_type->name () == NULL)
8277     return 0;
8278
8279   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8280   if (bounds_str == NULL)
8281     return 0;
8282
8283   n = 8; /* Skip "___XDLU_".  */
8284   if (!ada_scan_number (bounds_str, n, &lo, &n))
8285     return 0;
8286   if (range_type->bounds ()->low.const_val () != lo)
8287     return 0;
8288
8289   n += 2; /* Skip the "__" separator between the two bounds.  */
8290   if (!ada_scan_number (bounds_str, n, &hi, &n))
8291     return 0;
8292   if (range_type->bounds ()->high.const_val () != hi)
8293     return 0;
8294
8295   return 1;
8296 }
8297
8298 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8299    a type following the GNAT encoding for describing array type
8300    indices, only carries redundant information.  */
8301
8302 static int
8303 ada_is_redundant_index_type_desc (struct type *array_type,
8304                                   struct type *desc_type)
8305 {
8306   struct type *this_layer = check_typedef (array_type);
8307   int i;
8308
8309   for (i = 0; i < desc_type->num_fields (); i++)
8310     {
8311       if (!ada_is_redundant_range_encoding (this_layer->index_type (),
8312                                             desc_type->field (i).type ()))
8313         return 0;
8314       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8315     }
8316
8317   return 1;
8318 }
8319
8320 /* Assuming that TYPE0 is an array type describing the type of a value
8321    at ADDR, and that DVAL describes a record containing any
8322    discriminants used in TYPE0, returns a type for the value that
8323    contains no dynamic components (that is, no components whose sizes
8324    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8325    true, gives an error message if the resulting type's size is over
8326    varsize_limit.  */
8327
8328 static struct type *
8329 to_fixed_array_type (struct type *type0, struct value *dval,
8330                      int ignore_too_big)
8331 {
8332   struct type *index_type_desc;
8333   struct type *result;
8334   int constrained_packed_array_p;
8335   static const char *xa_suffix = "___XA";
8336
8337   type0 = ada_check_typedef (type0);
8338   if (TYPE_FIXED_INSTANCE (type0))
8339     return type0;
8340
8341   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8342   if (constrained_packed_array_p)
8343     type0 = decode_constrained_packed_array_type (type0);
8344
8345   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8346
8347   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8348      encoding suffixed with 'P' may still be generated.  If so,
8349      it should be used to find the XA type.  */
8350
8351   if (index_type_desc == NULL)
8352     {
8353       const char *type_name = ada_type_name (type0);
8354
8355       if (type_name != NULL)
8356         {
8357           const int len = strlen (type_name);
8358           char *name = (char *) alloca (len + strlen (xa_suffix));
8359
8360           if (type_name[len - 1] == 'P')
8361             {
8362               strcpy (name, type_name);
8363               strcpy (name + len - 1, xa_suffix);
8364               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8365             }
8366         }
8367     }
8368
8369   ada_fixup_array_indexes_type (index_type_desc);
8370   if (index_type_desc != NULL
8371       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8372     {
8373       /* Ignore this ___XA parallel type, as it does not bring any
8374          useful information.  This allows us to avoid creating fixed
8375          versions of the array's index types, which would be identical
8376          to the original ones.  This, in turn, can also help avoid
8377          the creation of fixed versions of the array itself.  */
8378       index_type_desc = NULL;
8379     }
8380
8381   if (index_type_desc == NULL)
8382     {
8383       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8384
8385       /* NOTE: elt_type---the fixed version of elt_type0---should never
8386          depend on the contents of the array in properly constructed
8387          debugging data.  */
8388       /* Create a fixed version of the array element type.
8389          We're not providing the address of an element here,
8390          and thus the actual object value cannot be inspected to do
8391          the conversion.  This should not be a problem, since arrays of
8392          unconstrained objects are not allowed.  In particular, all
8393          the elements of an array of a tagged type should all be of
8394          the same type specified in the debugging info.  No need to
8395          consult the object tag.  */
8396       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8397
8398       /* Make sure we always create a new array type when dealing with
8399          packed array types, since we're going to fix-up the array
8400          type length and element bitsize a little further down.  */
8401       if (elt_type0 == elt_type && !constrained_packed_array_p)
8402         result = type0;
8403       else
8404         result = create_array_type (alloc_type_copy (type0),
8405                                     elt_type, type0->index_type ());
8406     }
8407   else
8408     {
8409       int i;
8410       struct type *elt_type0;
8411
8412       elt_type0 = type0;
8413       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8414         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8415
8416       /* NOTE: result---the fixed version of elt_type0---should never
8417          depend on the contents of the array in properly constructed
8418          debugging data.  */
8419       /* Create a fixed version of the array element type.
8420          We're not providing the address of an element here,
8421          and thus the actual object value cannot be inspected to do
8422          the conversion.  This should not be a problem, since arrays of
8423          unconstrained objects are not allowed.  In particular, all
8424          the elements of an array of a tagged type should all be of
8425          the same type specified in the debugging info.  No need to
8426          consult the object tag.  */
8427       result =
8428         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8429
8430       elt_type0 = type0;
8431       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8432         {
8433           struct type *range_type =
8434             to_fixed_range_type (index_type_desc->field (i).type (), dval);
8435
8436           result = create_array_type (alloc_type_copy (elt_type0),
8437                                       result, range_type);
8438           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8439         }
8440       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8441         error (_("array type with dynamic size is larger than varsize-limit"));
8442     }
8443
8444   /* We want to preserve the type name.  This can be useful when
8445      trying to get the type name of a value that has already been
8446      printed (for instance, if the user did "print VAR; whatis $".  */
8447   result->set_name (type0->name ());
8448
8449   if (constrained_packed_array_p)
8450     {
8451       /* So far, the resulting type has been created as if the original
8452          type was a regular (non-packed) array type.  As a result, the
8453          bitsize of the array elements needs to be set again, and the array
8454          length needs to be recomputed based on that bitsize.  */
8455       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8456       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8457
8458       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8459       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8460       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8461         TYPE_LENGTH (result)++;
8462     }
8463
8464   TYPE_FIXED_INSTANCE (result) = 1;
8465   return result;
8466 }
8467
8468
8469 /* A standard type (containing no dynamically sized components)
8470    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8471    DVAL describes a record containing any discriminants used in TYPE0,
8472    and may be NULL if there are none, or if the object of type TYPE at
8473    ADDRESS or in VALADDR contains these discriminants.
8474    
8475    If CHECK_TAG is not null, in the case of tagged types, this function
8476    attempts to locate the object's tag and use it to compute the actual
8477    type.  However, when ADDRESS is null, we cannot use it to determine the
8478    location of the tag, and therefore compute the tagged type's actual type.
8479    So we return the tagged type without consulting the tag.  */
8480    
8481 static struct type *
8482 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8483                    CORE_ADDR address, struct value *dval, int check_tag)
8484 {
8485   type = ada_check_typedef (type);
8486
8487   /* Only un-fixed types need to be handled here.  */
8488   if (!HAVE_GNAT_AUX_INFO (type))
8489     return type;
8490
8491   switch (type->code ())
8492     {
8493     default:
8494       return type;
8495     case TYPE_CODE_STRUCT:
8496       {
8497         struct type *static_type = to_static_fixed_type (type);
8498         struct type *fixed_record_type =
8499           to_fixed_record_type (type, valaddr, address, NULL);
8500
8501         /* If STATIC_TYPE is a tagged type and we know the object's address,
8502            then we can determine its tag, and compute the object's actual
8503            type from there.  Note that we have to use the fixed record
8504            type (the parent part of the record may have dynamic fields
8505            and the way the location of _tag is expressed may depend on
8506            them).  */
8507
8508         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8509           {
8510             struct value *tag =
8511               value_tag_from_contents_and_address
8512               (fixed_record_type,
8513                valaddr,
8514                address);
8515             struct type *real_type = type_from_tag (tag);
8516             struct value *obj =
8517               value_from_contents_and_address (fixed_record_type,
8518                                                valaddr,
8519                                                address);
8520             fixed_record_type = value_type (obj);
8521             if (real_type != NULL)
8522               return to_fixed_record_type
8523                 (real_type, NULL,
8524                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8525           }
8526
8527         /* Check to see if there is a parallel ___XVZ variable.
8528            If there is, then it provides the actual size of our type.  */
8529         else if (ada_type_name (fixed_record_type) != NULL)
8530           {
8531             const char *name = ada_type_name (fixed_record_type);
8532             char *xvz_name
8533               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8534             bool xvz_found = false;
8535             LONGEST size;
8536
8537             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8538             try
8539               {
8540                 xvz_found = get_int_var_value (xvz_name, size);
8541               }
8542             catch (const gdb_exception_error &except)
8543               {
8544                 /* We found the variable, but somehow failed to read
8545                    its value.  Rethrow the same error, but with a little
8546                    bit more information, to help the user understand
8547                    what went wrong (Eg: the variable might have been
8548                    optimized out).  */
8549                 throw_error (except.error,
8550                              _("unable to read value of %s (%s)"),
8551                              xvz_name, except.what ());
8552               }
8553
8554             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8555               {
8556                 fixed_record_type = copy_type (fixed_record_type);
8557                 TYPE_LENGTH (fixed_record_type) = size;
8558
8559                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8560                    observed this when the debugging info is STABS, and
8561                    apparently it is something that is hard to fix.
8562
8563                    In practice, we don't need the actual type definition
8564                    at all, because the presence of the XVZ variable allows us
8565                    to assume that there must be a XVS type as well, which we
8566                    should be able to use later, when we need the actual type
8567                    definition.
8568
8569                    In the meantime, pretend that the "fixed" type we are
8570                    returning is NOT a stub, because this can cause trouble
8571                    when using this type to create new types targeting it.
8572                    Indeed, the associated creation routines often check
8573                    whether the target type is a stub and will try to replace
8574                    it, thus using a type with the wrong size.  This, in turn,
8575                    might cause the new type to have the wrong size too.
8576                    Consider the case of an array, for instance, where the size
8577                    of the array is computed from the number of elements in
8578                    our array multiplied by the size of its element.  */
8579                 TYPE_STUB (fixed_record_type) = 0;
8580               }
8581           }
8582         return fixed_record_type;
8583       }
8584     case TYPE_CODE_ARRAY:
8585       return to_fixed_array_type (type, dval, 1);
8586     case TYPE_CODE_UNION:
8587       if (dval == NULL)
8588         return type;
8589       else
8590         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8591     }
8592 }
8593
8594 /* The same as ada_to_fixed_type_1, except that it preserves the type
8595    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8596
8597    The typedef layer needs be preserved in order to differentiate between
8598    arrays and array pointers when both types are implemented using the same
8599    fat pointer.  In the array pointer case, the pointer is encoded as
8600    a typedef of the pointer type.  For instance, considering:
8601
8602           type String_Access is access String;
8603           S1 : String_Access := null;
8604
8605    To the debugger, S1 is defined as a typedef of type String.  But
8606    to the user, it is a pointer.  So if the user tries to print S1,
8607    we should not dereference the array, but print the array address
8608    instead.
8609
8610    If we didn't preserve the typedef layer, we would lose the fact that
8611    the type is to be presented as a pointer (needs de-reference before
8612    being printed).  And we would also use the source-level type name.  */
8613
8614 struct type *
8615 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8616                    CORE_ADDR address, struct value *dval, int check_tag)
8617
8618 {
8619   struct type *fixed_type =
8620     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8621
8622   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8623       then preserve the typedef layer.
8624
8625       Implementation note: We can only check the main-type portion of
8626       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8627       from TYPE now returns a type that has the same instance flags
8628       as TYPE.  For instance, if TYPE is a "typedef const", and its
8629       target type is a "struct", then the typedef elimination will return
8630       a "const" version of the target type.  See check_typedef for more
8631       details about how the typedef layer elimination is done.
8632
8633       brobecker/2010-11-19: It seems to me that the only case where it is
8634       useful to preserve the typedef layer is when dealing with fat pointers.
8635       Perhaps, we could add a check for that and preserve the typedef layer
8636       only in that situation.  But this seems unnecessary so far, probably
8637       because we call check_typedef/ada_check_typedef pretty much everywhere.
8638       */
8639   if (type->code () == TYPE_CODE_TYPEDEF
8640       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8641           == TYPE_MAIN_TYPE (fixed_type)))
8642     return type;
8643
8644   return fixed_type;
8645 }
8646
8647 /* A standard (static-sized) type corresponding as well as possible to
8648    TYPE0, but based on no runtime data.  */
8649
8650 static struct type *
8651 to_static_fixed_type (struct type *type0)
8652 {
8653   struct type *type;
8654
8655   if (type0 == NULL)
8656     return NULL;
8657
8658   if (TYPE_FIXED_INSTANCE (type0))
8659     return type0;
8660
8661   type0 = ada_check_typedef (type0);
8662
8663   switch (type0->code ())
8664     {
8665     default:
8666       return type0;
8667     case TYPE_CODE_STRUCT:
8668       type = dynamic_template_type (type0);
8669       if (type != NULL)
8670         return template_to_static_fixed_type (type);
8671       else
8672         return template_to_static_fixed_type (type0);
8673     case TYPE_CODE_UNION:
8674       type = ada_find_parallel_type (type0, "___XVU");
8675       if (type != NULL)
8676         return template_to_static_fixed_type (type);
8677       else
8678         return template_to_static_fixed_type (type0);
8679     }
8680 }
8681
8682 /* A static approximation of TYPE with all type wrappers removed.  */
8683
8684 static struct type *
8685 static_unwrap_type (struct type *type)
8686 {
8687   if (ada_is_aligner_type (type))
8688     {
8689       struct type *type1 = ada_check_typedef (type)->field (0).type ();
8690       if (ada_type_name (type1) == NULL)
8691         type1->set_name (ada_type_name (type));
8692
8693       return static_unwrap_type (type1);
8694     }
8695   else
8696     {
8697       struct type *raw_real_type = ada_get_base_type (type);
8698
8699       if (raw_real_type == type)
8700         return type;
8701       else
8702         return to_static_fixed_type (raw_real_type);
8703     }
8704 }
8705
8706 /* In some cases, incomplete and private types require
8707    cross-references that are not resolved as records (for example,
8708       type Foo;
8709       type FooP is access Foo;
8710       V: FooP;
8711       type Foo is array ...;
8712    ).  In these cases, since there is no mechanism for producing
8713    cross-references to such types, we instead substitute for FooP a
8714    stub enumeration type that is nowhere resolved, and whose tag is
8715    the name of the actual type.  Call these types "non-record stubs".  */
8716
8717 /* A type equivalent to TYPE that is not a non-record stub, if one
8718    exists, otherwise TYPE.  */
8719
8720 struct type *
8721 ada_check_typedef (struct type *type)
8722 {
8723   if (type == NULL)
8724     return NULL;
8725
8726   /* If our type is an access to an unconstrained array, which is encoded
8727      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8728      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8729      what allows us to distinguish between fat pointers that represent
8730      array types, and fat pointers that represent array access types
8731      (in both cases, the compiler implements them as fat pointers).  */
8732   if (ada_is_access_to_unconstrained_array (type))
8733     return type;
8734
8735   type = check_typedef (type);
8736   if (type == NULL || type->code () != TYPE_CODE_ENUM
8737       || !TYPE_STUB (type)
8738       || type->name () == NULL)
8739     return type;
8740   else
8741     {
8742       const char *name = type->name ();
8743       struct type *type1 = ada_find_any_type (name);
8744
8745       if (type1 == NULL)
8746         return type;
8747
8748       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8749          stubs pointing to arrays, as we don't create symbols for array
8750          types, only for the typedef-to-array types).  If that's the case,
8751          strip the typedef layer.  */
8752       if (type1->code () == TYPE_CODE_TYPEDEF)
8753         type1 = ada_check_typedef (type1);
8754
8755       return type1;
8756     }
8757 }
8758
8759 /* A value representing the data at VALADDR/ADDRESS as described by
8760    type TYPE0, but with a standard (static-sized) type that correctly
8761    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8762    type, then return VAL0 [this feature is simply to avoid redundant
8763    creation of struct values].  */
8764
8765 static struct value *
8766 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8767                            struct value *val0)
8768 {
8769   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8770
8771   if (type == type0 && val0 != NULL)
8772     return val0;
8773
8774   if (VALUE_LVAL (val0) != lval_memory)
8775     {
8776       /* Our value does not live in memory; it could be a convenience
8777          variable, for instance.  Create a not_lval value using val0's
8778          contents.  */
8779       return value_from_contents (type, value_contents (val0));
8780     }
8781
8782   return value_from_contents_and_address (type, 0, address);
8783 }
8784
8785 /* A value representing VAL, but with a standard (static-sized) type
8786    that correctly describes it.  Does not necessarily create a new
8787    value.  */
8788
8789 struct value *
8790 ada_to_fixed_value (struct value *val)
8791 {
8792   val = unwrap_value (val);
8793   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
8794   return val;
8795 }
8796 \f
8797
8798 /* Attributes */
8799
8800 /* Table mapping attribute numbers to names.
8801    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
8802
8803 static const char *attribute_names[] = {
8804   "<?>",
8805
8806   "first",
8807   "last",
8808   "length",
8809   "image",
8810   "max",
8811   "min",
8812   "modulus",
8813   "pos",
8814   "size",
8815   "tag",
8816   "val",
8817   0
8818 };
8819
8820 static const char *
8821 ada_attribute_name (enum exp_opcode n)
8822 {
8823   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
8824     return attribute_names[n - OP_ATR_FIRST + 1];
8825   else
8826     return attribute_names[0];
8827 }
8828
8829 /* Evaluate the 'POS attribute applied to ARG.  */
8830
8831 static LONGEST
8832 pos_atr (struct value *arg)
8833 {
8834   struct value *val = coerce_ref (arg);
8835   struct type *type = value_type (val);
8836   LONGEST result;
8837
8838   if (!discrete_type_p (type))
8839     error (_("'POS only defined on discrete types"));
8840
8841   if (!discrete_position (type, value_as_long (val), &result))
8842     error (_("enumeration value is invalid: can't find 'POS"));
8843
8844   return result;
8845 }
8846
8847 static struct value *
8848 value_pos_atr (struct type *type, struct value *arg)
8849 {
8850   return value_from_longest (type, pos_atr (arg));
8851 }
8852
8853 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
8854
8855 static struct value *
8856 val_atr (struct type *type, LONGEST val)
8857 {
8858   gdb_assert (discrete_type_p (type));
8859   if (type->code () == TYPE_CODE_RANGE)
8860     type = TYPE_TARGET_TYPE (type);
8861   if (type->code () == TYPE_CODE_ENUM)
8862     {
8863       if (val < 0 || val >= type->num_fields ())
8864         error (_("argument to 'VAL out of range"));
8865       val = TYPE_FIELD_ENUMVAL (type, val);
8866     }
8867   return value_from_longest (type, val);
8868 }
8869
8870 static struct value *
8871 value_val_atr (struct type *type, struct value *arg)
8872 {
8873   if (!discrete_type_p (type))
8874     error (_("'VAL only defined on discrete types"));
8875   if (!integer_type_p (value_type (arg)))
8876     error (_("'VAL requires integral argument"));
8877
8878   return val_atr (type, value_as_long (arg));
8879 }
8880 \f
8881
8882                                 /* Evaluation */
8883
8884 /* True if TYPE appears to be an Ada character type.
8885    [At the moment, this is true only for Character and Wide_Character;
8886    It is a heuristic test that could stand improvement].  */
8887
8888 bool
8889 ada_is_character_type (struct type *type)
8890 {
8891   const char *name;
8892
8893   /* If the type code says it's a character, then assume it really is,
8894      and don't check any further.  */
8895   if (type->code () == TYPE_CODE_CHAR)
8896     return true;
8897   
8898   /* Otherwise, assume it's a character type iff it is a discrete type
8899      with a known character type name.  */
8900   name = ada_type_name (type);
8901   return (name != NULL
8902           && (type->code () == TYPE_CODE_INT
8903               || type->code () == TYPE_CODE_RANGE)
8904           && (strcmp (name, "character") == 0
8905               || strcmp (name, "wide_character") == 0
8906               || strcmp (name, "wide_wide_character") == 0
8907               || strcmp (name, "unsigned char") == 0));
8908 }
8909
8910 /* True if TYPE appears to be an Ada string type.  */
8911
8912 bool
8913 ada_is_string_type (struct type *type)
8914 {
8915   type = ada_check_typedef (type);
8916   if (type != NULL
8917       && type->code () != TYPE_CODE_PTR
8918       && (ada_is_simple_array_type (type)
8919           || ada_is_array_descriptor_type (type))
8920       && ada_array_arity (type) == 1)
8921     {
8922       struct type *elttype = ada_array_element_type (type, 1);
8923
8924       return ada_is_character_type (elttype);
8925     }
8926   else
8927     return false;
8928 }
8929
8930 /* The compiler sometimes provides a parallel XVS type for a given
8931    PAD type.  Normally, it is safe to follow the PAD type directly,
8932    but older versions of the compiler have a bug that causes the offset
8933    of its "F" field to be wrong.  Following that field in that case
8934    would lead to incorrect results, but this can be worked around
8935    by ignoring the PAD type and using the associated XVS type instead.
8936
8937    Set to True if the debugger should trust the contents of PAD types.
8938    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
8939 static bool trust_pad_over_xvs = true;
8940
8941 /* True if TYPE is a struct type introduced by the compiler to force the
8942    alignment of a value.  Such types have a single field with a
8943    distinctive name.  */
8944
8945 int
8946 ada_is_aligner_type (struct type *type)
8947 {
8948   type = ada_check_typedef (type);
8949
8950   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
8951     return 0;
8952
8953   return (type->code () == TYPE_CODE_STRUCT
8954           && type->num_fields () == 1
8955           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
8956 }
8957
8958 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
8959    the parallel type.  */
8960
8961 struct type *
8962 ada_get_base_type (struct type *raw_type)
8963 {
8964   struct type *real_type_namer;
8965   struct type *raw_real_type;
8966
8967   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
8968     return raw_type;
8969
8970   if (ada_is_aligner_type (raw_type))
8971     /* The encoding specifies that we should always use the aligner type.
8972        So, even if this aligner type has an associated XVS type, we should
8973        simply ignore it.
8974
8975        According to the compiler gurus, an XVS type parallel to an aligner
8976        type may exist because of a stabs limitation.  In stabs, aligner
8977        types are empty because the field has a variable-sized type, and
8978        thus cannot actually be used as an aligner type.  As a result,
8979        we need the associated parallel XVS type to decode the type.
8980        Since the policy in the compiler is to not change the internal
8981        representation based on the debugging info format, we sometimes
8982        end up having a redundant XVS type parallel to the aligner type.  */
8983     return raw_type;
8984
8985   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
8986   if (real_type_namer == NULL
8987       || real_type_namer->code () != TYPE_CODE_STRUCT
8988       || real_type_namer->num_fields () != 1)
8989     return raw_type;
8990
8991   if (real_type_namer->field (0).type ()->code () != TYPE_CODE_REF)
8992     {
8993       /* This is an older encoding form where the base type needs to be
8994          looked up by name.  We prefer the newer encoding because it is
8995          more efficient.  */
8996       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
8997       if (raw_real_type == NULL)
8998         return raw_type;
8999       else
9000         return raw_real_type;
9001     }
9002
9003   /* The field in our XVS type is a reference to the base type.  */
9004   return TYPE_TARGET_TYPE (real_type_namer->field (0).type ());
9005 }
9006
9007 /* The type of value designated by TYPE, with all aligners removed.  */
9008
9009 struct type *
9010 ada_aligned_type (struct type *type)
9011 {
9012   if (ada_is_aligner_type (type))
9013     return ada_aligned_type (type->field (0).type ());
9014   else
9015     return ada_get_base_type (type);
9016 }
9017
9018
9019 /* The address of the aligned value in an object at address VALADDR
9020    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9021
9022 const gdb_byte *
9023 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9024 {
9025   if (ada_is_aligner_type (type))
9026     return ada_aligned_value_addr (type->field (0).type (),
9027                                    valaddr +
9028                                    TYPE_FIELD_BITPOS (type,
9029                                                       0) / TARGET_CHAR_BIT);
9030   else
9031     return valaddr;
9032 }
9033
9034
9035
9036 /* The printed representation of an enumeration literal with encoded
9037    name NAME.  The value is good to the next call of ada_enum_name.  */
9038 const char *
9039 ada_enum_name (const char *name)
9040 {
9041   static char *result;
9042   static size_t result_len = 0;
9043   const char *tmp;
9044
9045   /* First, unqualify the enumeration name:
9046      1. Search for the last '.' character.  If we find one, then skip
9047      all the preceding characters, the unqualified name starts
9048      right after that dot.
9049      2. Otherwise, we may be debugging on a target where the compiler
9050      translates dots into "__".  Search forward for double underscores,
9051      but stop searching when we hit an overloading suffix, which is
9052      of the form "__" followed by digits.  */
9053
9054   tmp = strrchr (name, '.');
9055   if (tmp != NULL)
9056     name = tmp + 1;
9057   else
9058     {
9059       while ((tmp = strstr (name, "__")) != NULL)
9060         {
9061           if (isdigit (tmp[2]))
9062             break;
9063           else
9064             name = tmp + 2;
9065         }
9066     }
9067
9068   if (name[0] == 'Q')
9069     {
9070       int v;
9071
9072       if (name[1] == 'U' || name[1] == 'W')
9073         {
9074           if (sscanf (name + 2, "%x", &v) != 1)
9075             return name;
9076         }
9077       else if (((name[1] >= '0' && name[1] <= '9')
9078                 || (name[1] >= 'a' && name[1] <= 'z'))
9079                && name[2] == '\0')
9080         {
9081           GROW_VECT (result, result_len, 4);
9082           xsnprintf (result, result_len, "'%c'", name[1]);
9083           return result;
9084         }
9085       else
9086         return name;
9087
9088       GROW_VECT (result, result_len, 16);
9089       if (isascii (v) && isprint (v))
9090         xsnprintf (result, result_len, "'%c'", v);
9091       else if (name[1] == 'U')
9092         xsnprintf (result, result_len, "[\"%02x\"]", v);
9093       else
9094         xsnprintf (result, result_len, "[\"%04x\"]", v);
9095
9096       return result;
9097     }
9098   else
9099     {
9100       tmp = strstr (name, "__");
9101       if (tmp == NULL)
9102         tmp = strstr (name, "$");
9103       if (tmp != NULL)
9104         {
9105           GROW_VECT (result, result_len, tmp - name + 1);
9106           strncpy (result, name, tmp - name);
9107           result[tmp - name] = '\0';
9108           return result;
9109         }
9110
9111       return name;
9112     }
9113 }
9114
9115 /* Evaluate the subexpression of EXP starting at *POS as for
9116    evaluate_type, updating *POS to point just past the evaluated
9117    expression.  */
9118
9119 static struct value *
9120 evaluate_subexp_type (struct expression *exp, int *pos)
9121 {
9122   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9123 }
9124
9125 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9126    value it wraps.  */
9127
9128 static struct value *
9129 unwrap_value (struct value *val)
9130 {
9131   struct type *type = ada_check_typedef (value_type (val));
9132
9133   if (ada_is_aligner_type (type))
9134     {
9135       struct value *v = ada_value_struct_elt (val, "F", 0);
9136       struct type *val_type = ada_check_typedef (value_type (v));
9137
9138       if (ada_type_name (val_type) == NULL)
9139         val_type->set_name (ada_type_name (type));
9140
9141       return unwrap_value (v);
9142     }
9143   else
9144     {
9145       struct type *raw_real_type =
9146         ada_check_typedef (ada_get_base_type (type));
9147
9148       /* If there is no parallel XVS or XVE type, then the value is
9149          already unwrapped.  Return it without further modification.  */
9150       if ((type == raw_real_type)
9151           && ada_find_parallel_type (type, "___XVE") == NULL)
9152         return val;
9153
9154       return
9155         coerce_unspec_val_to_type
9156         (val, ada_to_fixed_type (raw_real_type, 0,
9157                                  value_address (val),
9158                                  NULL, 1));
9159     }
9160 }
9161
9162 static struct value *
9163 cast_from_fixed (struct type *type, struct value *arg)
9164 {
9165   struct value *scale = ada_scaling_factor (value_type (arg));
9166   arg = value_cast (value_type (scale), arg);
9167
9168   arg = value_binop (arg, scale, BINOP_MUL);
9169   return value_cast (type, arg);
9170 }
9171
9172 static struct value *
9173 cast_to_fixed (struct type *type, struct value *arg)
9174 {
9175   if (type == value_type (arg))
9176     return arg;
9177
9178   struct value *scale = ada_scaling_factor (type);
9179   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9180     arg = cast_from_fixed (value_type (scale), arg);
9181   else
9182     arg = value_cast (value_type (scale), arg);
9183
9184   arg = value_binop (arg, scale, BINOP_DIV);
9185   return value_cast (type, arg);
9186 }
9187
9188 /* Given two array types T1 and T2, return nonzero iff both arrays
9189    contain the same number of elements.  */
9190
9191 static int
9192 ada_same_array_size_p (struct type *t1, struct type *t2)
9193 {
9194   LONGEST lo1, hi1, lo2, hi2;
9195
9196   /* Get the array bounds in order to verify that the size of
9197      the two arrays match.  */
9198   if (!get_array_bounds (t1, &lo1, &hi1)
9199       || !get_array_bounds (t2, &lo2, &hi2))
9200     error (_("unable to determine array bounds"));
9201
9202   /* To make things easier for size comparison, normalize a bit
9203      the case of empty arrays by making sure that the difference
9204      between upper bound and lower bound is always -1.  */
9205   if (lo1 > hi1)
9206     hi1 = lo1 - 1;
9207   if (lo2 > hi2)
9208     hi2 = lo2 - 1;
9209
9210   return (hi1 - lo1 == hi2 - lo2);
9211 }
9212
9213 /* Assuming that VAL is an array of integrals, and TYPE represents
9214    an array with the same number of elements, but with wider integral
9215    elements, return an array "casted" to TYPE.  In practice, this
9216    means that the returned array is built by casting each element
9217    of the original array into TYPE's (wider) element type.  */
9218
9219 static struct value *
9220 ada_promote_array_of_integrals (struct type *type, struct value *val)
9221 {
9222   struct type *elt_type = TYPE_TARGET_TYPE (type);
9223   LONGEST lo, hi;
9224   struct value *res;
9225   LONGEST i;
9226
9227   /* Verify that both val and type are arrays of scalars, and
9228      that the size of val's elements is smaller than the size
9229      of type's element.  */
9230   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9231   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9232   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9233   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9234   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9235               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9236
9237   if (!get_array_bounds (type, &lo, &hi))
9238     error (_("unable to determine array bounds"));
9239
9240   res = allocate_value (type);
9241
9242   /* Promote each array element.  */
9243   for (i = 0; i < hi - lo + 1; i++)
9244     {
9245       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9246
9247       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9248               value_contents_all (elt), TYPE_LENGTH (elt_type));
9249     }
9250
9251   return res;
9252 }
9253
9254 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9255    return the converted value.  */
9256
9257 static struct value *
9258 coerce_for_assign (struct type *type, struct value *val)
9259 {
9260   struct type *type2 = value_type (val);
9261
9262   if (type == type2)
9263     return val;
9264
9265   type2 = ada_check_typedef (type2);
9266   type = ada_check_typedef (type);
9267
9268   if (type2->code () == TYPE_CODE_PTR
9269       && type->code () == TYPE_CODE_ARRAY)
9270     {
9271       val = ada_value_ind (val);
9272       type2 = value_type (val);
9273     }
9274
9275   if (type2->code () == TYPE_CODE_ARRAY
9276       && type->code () == TYPE_CODE_ARRAY)
9277     {
9278       if (!ada_same_array_size_p (type, type2))
9279         error (_("cannot assign arrays of different length"));
9280
9281       if (is_integral_type (TYPE_TARGET_TYPE (type))
9282           && is_integral_type (TYPE_TARGET_TYPE (type2))
9283           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9284                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9285         {
9286           /* Allow implicit promotion of the array elements to
9287              a wider type.  */
9288           return ada_promote_array_of_integrals (type, val);
9289         }
9290
9291       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9292           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9293         error (_("Incompatible types in assignment"));
9294       deprecated_set_value_type (val, type);
9295     }
9296   return val;
9297 }
9298
9299 static struct value *
9300 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9301 {
9302   struct value *val;
9303   struct type *type1, *type2;
9304   LONGEST v, v1, v2;
9305
9306   arg1 = coerce_ref (arg1);
9307   arg2 = coerce_ref (arg2);
9308   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9309   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9310
9311   if (type1->code () != TYPE_CODE_INT
9312       || type2->code () != TYPE_CODE_INT)
9313     return value_binop (arg1, arg2, op);
9314
9315   switch (op)
9316     {
9317     case BINOP_MOD:
9318     case BINOP_DIV:
9319     case BINOP_REM:
9320       break;
9321     default:
9322       return value_binop (arg1, arg2, op);
9323     }
9324
9325   v2 = value_as_long (arg2);
9326   if (v2 == 0)
9327     error (_("second operand of %s must not be zero."), op_string (op));
9328
9329   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9330     return value_binop (arg1, arg2, op);
9331
9332   v1 = value_as_long (arg1);
9333   switch (op)
9334     {
9335     case BINOP_DIV:
9336       v = v1 / v2;
9337       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9338         v += v > 0 ? -1 : 1;
9339       break;
9340     case BINOP_REM:
9341       v = v1 % v2;
9342       if (v * v1 < 0)
9343         v -= v2;
9344       break;
9345     default:
9346       /* Should not reach this point.  */
9347       v = 0;
9348     }
9349
9350   val = allocate_value (type1);
9351   store_unsigned_integer (value_contents_raw (val),
9352                           TYPE_LENGTH (value_type (val)),
9353                           type_byte_order (type1), v);
9354   return val;
9355 }
9356
9357 static int
9358 ada_value_equal (struct value *arg1, struct value *arg2)
9359 {
9360   if (ada_is_direct_array_type (value_type (arg1))
9361       || ada_is_direct_array_type (value_type (arg2)))
9362     {
9363       struct type *arg1_type, *arg2_type;
9364
9365       /* Automatically dereference any array reference before
9366          we attempt to perform the comparison.  */
9367       arg1 = ada_coerce_ref (arg1);
9368       arg2 = ada_coerce_ref (arg2);
9369
9370       arg1 = ada_coerce_to_simple_array (arg1);
9371       arg2 = ada_coerce_to_simple_array (arg2);
9372
9373       arg1_type = ada_check_typedef (value_type (arg1));
9374       arg2_type = ada_check_typedef (value_type (arg2));
9375
9376       if (arg1_type->code () != TYPE_CODE_ARRAY
9377           || arg2_type->code () != TYPE_CODE_ARRAY)
9378         error (_("Attempt to compare array with non-array"));
9379       /* FIXME: The following works only for types whose
9380          representations use all bits (no padding or undefined bits)
9381          and do not have user-defined equality.  */
9382       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9383               && memcmp (value_contents (arg1), value_contents (arg2),
9384                          TYPE_LENGTH (arg1_type)) == 0);
9385     }
9386   return value_equal (arg1, arg2);
9387 }
9388
9389 /* Total number of component associations in the aggregate starting at
9390    index PC in EXP.  Assumes that index PC is the start of an
9391    OP_AGGREGATE.  */
9392
9393 static int
9394 num_component_specs (struct expression *exp, int pc)
9395 {
9396   int n, m, i;
9397
9398   m = exp->elts[pc + 1].longconst;
9399   pc += 3;
9400   n = 0;
9401   for (i = 0; i < m; i += 1)
9402     {
9403       switch (exp->elts[pc].opcode) 
9404         {
9405         default:
9406           n += 1;
9407           break;
9408         case OP_CHOICES:
9409           n += exp->elts[pc + 1].longconst;
9410           break;
9411         }
9412       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9413     }
9414   return n;
9415 }
9416
9417 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9418    component of LHS (a simple array or a record), updating *POS past
9419    the expression, assuming that LHS is contained in CONTAINER.  Does
9420    not modify the inferior's memory, nor does it modify LHS (unless
9421    LHS == CONTAINER).  */
9422
9423 static void
9424 assign_component (struct value *container, struct value *lhs, LONGEST index,
9425                   struct expression *exp, int *pos)
9426 {
9427   struct value *mark = value_mark ();
9428   struct value *elt;
9429   struct type *lhs_type = check_typedef (value_type (lhs));
9430
9431   if (lhs_type->code () == TYPE_CODE_ARRAY)
9432     {
9433       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9434       struct value *index_val = value_from_longest (index_type, index);
9435
9436       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9437     }
9438   else
9439     {
9440       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9441       elt = ada_to_fixed_value (elt);
9442     }
9443
9444   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9445     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9446   else
9447     value_assign_to_component (container, elt, 
9448                                ada_evaluate_subexp (NULL, exp, pos, 
9449                                                     EVAL_NORMAL));
9450
9451   value_free_to_mark (mark);
9452 }
9453
9454 /* Assuming that LHS represents an lvalue having a record or array
9455    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9456    of that aggregate's value to LHS, advancing *POS past the
9457    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9458    lvalue containing LHS (possibly LHS itself).  Does not modify
9459    the inferior's memory, nor does it modify the contents of 
9460    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9461
9462 static struct value *
9463 assign_aggregate (struct value *container, 
9464                   struct value *lhs, struct expression *exp, 
9465                   int *pos, enum noside noside)
9466 {
9467   struct type *lhs_type;
9468   int n = exp->elts[*pos+1].longconst;
9469   LONGEST low_index, high_index;
9470   int num_specs;
9471   LONGEST *indices;
9472   int max_indices, num_indices;
9473   int i;
9474
9475   *pos += 3;
9476   if (noside != EVAL_NORMAL)
9477     {
9478       for (i = 0; i < n; i += 1)
9479         ada_evaluate_subexp (NULL, exp, pos, noside);
9480       return container;
9481     }
9482
9483   container = ada_coerce_ref (container);
9484   if (ada_is_direct_array_type (value_type (container)))
9485     container = ada_coerce_to_simple_array (container);
9486   lhs = ada_coerce_ref (lhs);
9487   if (!deprecated_value_modifiable (lhs))
9488     error (_("Left operand of assignment is not a modifiable lvalue."));
9489
9490   lhs_type = check_typedef (value_type (lhs));
9491   if (ada_is_direct_array_type (lhs_type))
9492     {
9493       lhs = ada_coerce_to_simple_array (lhs);
9494       lhs_type = check_typedef (value_type (lhs));
9495       low_index = lhs_type->index_type ()->bounds ()->low.const_val ();
9496       high_index = lhs_type->index_type ()->bounds ()->high.const_val ();
9497     }
9498   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9499     {
9500       low_index = 0;
9501       high_index = num_visible_fields (lhs_type) - 1;
9502     }
9503   else
9504     error (_("Left-hand side must be array or record."));
9505
9506   num_specs = num_component_specs (exp, *pos - 3);
9507   max_indices = 4 * num_specs + 4;
9508   indices = XALLOCAVEC (LONGEST, max_indices);
9509   indices[0] = indices[1] = low_index - 1;
9510   indices[2] = indices[3] = high_index + 1;
9511   num_indices = 4;
9512
9513   for (i = 0; i < n; i += 1)
9514     {
9515       switch (exp->elts[*pos].opcode)
9516         {
9517           case OP_CHOICES:
9518             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9519                                            &num_indices, max_indices,
9520                                            low_index, high_index);
9521             break;
9522           case OP_POSITIONAL:
9523             aggregate_assign_positional (container, lhs, exp, pos, indices,
9524                                          &num_indices, max_indices,
9525                                          low_index, high_index);
9526             break;
9527           case OP_OTHERS:
9528             if (i != n-1)
9529               error (_("Misplaced 'others' clause"));
9530             aggregate_assign_others (container, lhs, exp, pos, indices, 
9531                                      num_indices, low_index, high_index);
9532             break;
9533           default:
9534             error (_("Internal error: bad aggregate clause"));
9535         }
9536     }
9537
9538   return container;
9539 }
9540               
9541 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9542    construct at *POS, updating *POS past the construct, given that
9543    the positions are relative to lower bound LOW, where HIGH is the 
9544    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9545    updating *NUM_INDICES as needed.  CONTAINER is as for
9546    assign_aggregate.  */
9547 static void
9548 aggregate_assign_positional (struct value *container,
9549                              struct value *lhs, struct expression *exp,
9550                              int *pos, LONGEST *indices, int *num_indices,
9551                              int max_indices, LONGEST low, LONGEST high) 
9552 {
9553   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9554   
9555   if (ind - 1 == high)
9556     warning (_("Extra components in aggregate ignored."));
9557   if (ind <= high)
9558     {
9559       add_component_interval (ind, ind, indices, num_indices, max_indices);
9560       *pos += 3;
9561       assign_component (container, lhs, ind, exp, pos);
9562     }
9563   else
9564     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9565 }
9566
9567 /* Assign into the components of LHS indexed by the OP_CHOICES
9568    construct at *POS, updating *POS past the construct, given that
9569    the allowable indices are LOW..HIGH.  Record the indices assigned
9570    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9571    needed.  CONTAINER is as for assign_aggregate.  */
9572 static void
9573 aggregate_assign_from_choices (struct value *container,
9574                                struct value *lhs, struct expression *exp,
9575                                int *pos, LONGEST *indices, int *num_indices,
9576                                int max_indices, LONGEST low, LONGEST high) 
9577 {
9578   int j;
9579   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9580   int choice_pos, expr_pc;
9581   int is_array = ada_is_direct_array_type (value_type (lhs));
9582
9583   choice_pos = *pos += 3;
9584
9585   for (j = 0; j < n_choices; j += 1)
9586     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9587   expr_pc = *pos;
9588   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9589   
9590   for (j = 0; j < n_choices; j += 1)
9591     {
9592       LONGEST lower, upper;
9593       enum exp_opcode op = exp->elts[choice_pos].opcode;
9594
9595       if (op == OP_DISCRETE_RANGE)
9596         {
9597           choice_pos += 1;
9598           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9599                                                       EVAL_NORMAL));
9600           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9601                                                       EVAL_NORMAL));
9602         }
9603       else if (is_array)
9604         {
9605           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9606                                                       EVAL_NORMAL));
9607           upper = lower;
9608         }
9609       else
9610         {
9611           int ind;
9612           const char *name;
9613
9614           switch (op)
9615             {
9616             case OP_NAME:
9617               name = &exp->elts[choice_pos + 2].string;
9618               break;
9619             case OP_VAR_VALUE:
9620               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9621               break;
9622             default:
9623               error (_("Invalid record component association."));
9624             }
9625           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9626           ind = 0;
9627           if (! find_struct_field (name, value_type (lhs), 0, 
9628                                    NULL, NULL, NULL, NULL, &ind))
9629             error (_("Unknown component name: %s."), name);
9630           lower = upper = ind;
9631         }
9632
9633       if (lower <= upper && (lower < low || upper > high))
9634         error (_("Index in component association out of bounds."));
9635
9636       add_component_interval (lower, upper, indices, num_indices,
9637                               max_indices);
9638       while (lower <= upper)
9639         {
9640           int pos1;
9641
9642           pos1 = expr_pc;
9643           assign_component (container, lhs, lower, exp, &pos1);
9644           lower += 1;
9645         }
9646     }
9647 }
9648
9649 /* Assign the value of the expression in the OP_OTHERS construct in
9650    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9651    have not been previously assigned.  The index intervals already assigned
9652    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9653    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9654 static void
9655 aggregate_assign_others (struct value *container,
9656                          struct value *lhs, struct expression *exp,
9657                          int *pos, LONGEST *indices, int num_indices,
9658                          LONGEST low, LONGEST high) 
9659 {
9660   int i;
9661   int expr_pc = *pos + 1;
9662   
9663   for (i = 0; i < num_indices - 2; i += 2)
9664     {
9665       LONGEST ind;
9666
9667       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9668         {
9669           int localpos;
9670
9671           localpos = expr_pc;
9672           assign_component (container, lhs, ind, exp, &localpos);
9673         }
9674     }
9675   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9676 }
9677
9678 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9679    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9680    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9681    MAX_SIZE.  The resulting intervals do not overlap.  */
9682 static void
9683 add_component_interval (LONGEST low, LONGEST high, 
9684                         LONGEST* indices, int *size, int max_size)
9685 {
9686   int i, j;
9687
9688   for (i = 0; i < *size; i += 2) {
9689     if (high >= indices[i] && low <= indices[i + 1])
9690       {
9691         int kh;
9692
9693         for (kh = i + 2; kh < *size; kh += 2)
9694           if (high < indices[kh])
9695             break;
9696         if (low < indices[i])
9697           indices[i] = low;
9698         indices[i + 1] = indices[kh - 1];
9699         if (high > indices[i + 1])
9700           indices[i + 1] = high;
9701         memcpy (indices + i + 2, indices + kh, *size - kh);
9702         *size -= kh - i - 2;
9703         return;
9704       }
9705     else if (high < indices[i])
9706       break;
9707   }
9708         
9709   if (*size == max_size)
9710     error (_("Internal error: miscounted aggregate components."));
9711   *size += 2;
9712   for (j = *size-1; j >= i+2; j -= 1)
9713     indices[j] = indices[j - 2];
9714   indices[i] = low;
9715   indices[i + 1] = high;
9716 }
9717
9718 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9719    is different.  */
9720
9721 static struct value *
9722 ada_value_cast (struct type *type, struct value *arg2)
9723 {
9724   if (type == ada_check_typedef (value_type (arg2)))
9725     return arg2;
9726
9727   if (ada_is_gnat_encoded_fixed_point_type (type))
9728     return cast_to_fixed (type, arg2);
9729
9730   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
9731     return cast_from_fixed (type, arg2);
9732
9733   return value_cast (type, arg2);
9734 }
9735
9736 /*  Evaluating Ada expressions, and printing their result.
9737     ------------------------------------------------------
9738
9739     1. Introduction:
9740     ----------------
9741
9742     We usually evaluate an Ada expression in order to print its value.
9743     We also evaluate an expression in order to print its type, which
9744     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9745     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9746     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9747     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9748     similar.
9749
9750     Evaluating expressions is a little more complicated for Ada entities
9751     than it is for entities in languages such as C.  The main reason for
9752     this is that Ada provides types whose definition might be dynamic.
9753     One example of such types is variant records.  Or another example
9754     would be an array whose bounds can only be known at run time.
9755
9756     The following description is a general guide as to what should be
9757     done (and what should NOT be done) in order to evaluate an expression
9758     involving such types, and when.  This does not cover how the semantic
9759     information is encoded by GNAT as this is covered separatly.  For the
9760     document used as the reference for the GNAT encoding, see exp_dbug.ads
9761     in the GNAT sources.
9762
9763     Ideally, we should embed each part of this description next to its
9764     associated code.  Unfortunately, the amount of code is so vast right
9765     now that it's hard to see whether the code handling a particular
9766     situation might be duplicated or not.  One day, when the code is
9767     cleaned up, this guide might become redundant with the comments
9768     inserted in the code, and we might want to remove it.
9769
9770     2. ``Fixing'' an Entity, the Simple Case:
9771     -----------------------------------------
9772
9773     When evaluating Ada expressions, the tricky issue is that they may
9774     reference entities whose type contents and size are not statically
9775     known.  Consider for instance a variant record:
9776
9777        type Rec (Empty : Boolean := True) is record
9778           case Empty is
9779              when True => null;
9780              when False => Value : Integer;
9781           end case;
9782        end record;
9783        Yes : Rec := (Empty => False, Value => 1);
9784        No  : Rec := (empty => True);
9785
9786     The size and contents of that record depends on the value of the
9787     descriminant (Rec.Empty).  At this point, neither the debugging
9788     information nor the associated type structure in GDB are able to
9789     express such dynamic types.  So what the debugger does is to create
9790     "fixed" versions of the type that applies to the specific object.
9791     We also informally refer to this operation as "fixing" an object,
9792     which means creating its associated fixed type.
9793
9794     Example: when printing the value of variable "Yes" above, its fixed
9795     type would look like this:
9796
9797        type Rec is record
9798           Empty : Boolean;
9799           Value : Integer;
9800        end record;
9801
9802     On the other hand, if we printed the value of "No", its fixed type
9803     would become:
9804
9805        type Rec is record
9806           Empty : Boolean;
9807        end record;
9808
9809     Things become a little more complicated when trying to fix an entity
9810     with a dynamic type that directly contains another dynamic type,
9811     such as an array of variant records, for instance.  There are
9812     two possible cases: Arrays, and records.
9813
9814     3. ``Fixing'' Arrays:
9815     ---------------------
9816
9817     The type structure in GDB describes an array in terms of its bounds,
9818     and the type of its elements.  By design, all elements in the array
9819     have the same type and we cannot represent an array of variant elements
9820     using the current type structure in GDB.  When fixing an array,
9821     we cannot fix the array element, as we would potentially need one
9822     fixed type per element of the array.  As a result, the best we can do
9823     when fixing an array is to produce an array whose bounds and size
9824     are correct (allowing us to read it from memory), but without having
9825     touched its element type.  Fixing each element will be done later,
9826     when (if) necessary.
9827
9828     Arrays are a little simpler to handle than records, because the same
9829     amount of memory is allocated for each element of the array, even if
9830     the amount of space actually used by each element differs from element
9831     to element.  Consider for instance the following array of type Rec:
9832
9833        type Rec_Array is array (1 .. 2) of Rec;
9834
9835     The actual amount of memory occupied by each element might be different
9836     from element to element, depending on the value of their discriminant.
9837     But the amount of space reserved for each element in the array remains
9838     fixed regardless.  So we simply need to compute that size using
9839     the debugging information available, from which we can then determine
9840     the array size (we multiply the number of elements of the array by
9841     the size of each element).
9842
9843     The simplest case is when we have an array of a constrained element
9844     type. For instance, consider the following type declarations:
9845
9846         type Bounded_String (Max_Size : Integer) is
9847            Length : Integer;
9848            Buffer : String (1 .. Max_Size);
9849         end record;
9850         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
9851
9852     In this case, the compiler describes the array as an array of
9853     variable-size elements (identified by its XVS suffix) for which
9854     the size can be read in the parallel XVZ variable.
9855
9856     In the case of an array of an unconstrained element type, the compiler
9857     wraps the array element inside a private PAD type.  This type should not
9858     be shown to the user, and must be "unwrap"'ed before printing.  Note
9859     that we also use the adjective "aligner" in our code to designate
9860     these wrapper types.
9861
9862     In some cases, the size allocated for each element is statically
9863     known.  In that case, the PAD type already has the correct size,
9864     and the array element should remain unfixed.
9865
9866     But there are cases when this size is not statically known.
9867     For instance, assuming that "Five" is an integer variable:
9868
9869         type Dynamic is array (1 .. Five) of Integer;
9870         type Wrapper (Has_Length : Boolean := False) is record
9871            Data : Dynamic;
9872            case Has_Length is
9873               when True => Length : Integer;
9874               when False => null;
9875            end case;
9876         end record;
9877         type Wrapper_Array is array (1 .. 2) of Wrapper;
9878
9879         Hello : Wrapper_Array := (others => (Has_Length => True,
9880                                              Data => (others => 17),
9881                                              Length => 1));
9882
9883
9884     The debugging info would describe variable Hello as being an
9885     array of a PAD type.  The size of that PAD type is not statically
9886     known, but can be determined using a parallel XVZ variable.
9887     In that case, a copy of the PAD type with the correct size should
9888     be used for the fixed array.
9889
9890     3. ``Fixing'' record type objects:
9891     ----------------------------------
9892
9893     Things are slightly different from arrays in the case of dynamic
9894     record types.  In this case, in order to compute the associated
9895     fixed type, we need to determine the size and offset of each of
9896     its components.  This, in turn, requires us to compute the fixed
9897     type of each of these components.
9898
9899     Consider for instance the example:
9900
9901         type Bounded_String (Max_Size : Natural) is record
9902            Str : String (1 .. Max_Size);
9903            Length : Natural;
9904         end record;
9905         My_String : Bounded_String (Max_Size => 10);
9906
9907     In that case, the position of field "Length" depends on the size
9908     of field Str, which itself depends on the value of the Max_Size
9909     discriminant.  In order to fix the type of variable My_String,
9910     we need to fix the type of field Str.  Therefore, fixing a variant
9911     record requires us to fix each of its components.
9912
9913     However, if a component does not have a dynamic size, the component
9914     should not be fixed.  In particular, fields that use a PAD type
9915     should not fixed.  Here is an example where this might happen
9916     (assuming type Rec above):
9917
9918        type Container (Big : Boolean) is record
9919           First : Rec;
9920           After : Integer;
9921           case Big is
9922              when True => Another : Integer;
9923              when False => null;
9924           end case;
9925        end record;
9926        My_Container : Container := (Big => False,
9927                                     First => (Empty => True),
9928                                     After => 42);
9929
9930     In that example, the compiler creates a PAD type for component First,
9931     whose size is constant, and then positions the component After just
9932     right after it.  The offset of component After is therefore constant
9933     in this case.
9934
9935     The debugger computes the position of each field based on an algorithm
9936     that uses, among other things, the actual position and size of the field
9937     preceding it.  Let's now imagine that the user is trying to print
9938     the value of My_Container.  If the type fixing was recursive, we would
9939     end up computing the offset of field After based on the size of the
9940     fixed version of field First.  And since in our example First has
9941     only one actual field, the size of the fixed type is actually smaller
9942     than the amount of space allocated to that field, and thus we would
9943     compute the wrong offset of field After.
9944
9945     To make things more complicated, we need to watch out for dynamic
9946     components of variant records (identified by the ___XVL suffix in
9947     the component name).  Even if the target type is a PAD type, the size
9948     of that type might not be statically known.  So the PAD type needs
9949     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
9950     we might end up with the wrong size for our component.  This can be
9951     observed with the following type declarations:
9952
9953         type Octal is new Integer range 0 .. 7;
9954         type Octal_Array is array (Positive range <>) of Octal;
9955         pragma Pack (Octal_Array);
9956
9957         type Octal_Buffer (Size : Positive) is record
9958            Buffer : Octal_Array (1 .. Size);
9959            Length : Integer;
9960         end record;
9961
9962     In that case, Buffer is a PAD type whose size is unset and needs
9963     to be computed by fixing the unwrapped type.
9964
9965     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
9966     ----------------------------------------------------------
9967
9968     Lastly, when should the sub-elements of an entity that remained unfixed
9969     thus far, be actually fixed?
9970
9971     The answer is: Only when referencing that element.  For instance
9972     when selecting one component of a record, this specific component
9973     should be fixed at that point in time.  Or when printing the value
9974     of a record, each component should be fixed before its value gets
9975     printed.  Similarly for arrays, the element of the array should be
9976     fixed when printing each element of the array, or when extracting
9977     one element out of that array.  On the other hand, fixing should
9978     not be performed on the elements when taking a slice of an array!
9979
9980     Note that one of the side effects of miscomputing the offset and
9981     size of each field is that we end up also miscomputing the size
9982     of the containing type.  This can have adverse results when computing
9983     the value of an entity.  GDB fetches the value of an entity based
9984     on the size of its type, and thus a wrong size causes GDB to fetch
9985     the wrong amount of memory.  In the case where the computed size is
9986     too small, GDB fetches too little data to print the value of our
9987     entity.  Results in this case are unpredictable, as we usually read
9988     past the buffer containing the data =:-o.  */
9989
9990 /* Evaluate a subexpression of EXP, at index *POS, and return a value
9991    for that subexpression cast to TO_TYPE.  Advance *POS over the
9992    subexpression.  */
9993
9994 static value *
9995 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
9996                               enum noside noside, struct type *to_type)
9997 {
9998   int pc = *pos;
9999
10000   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10001       || exp->elts[pc].opcode == OP_VAR_VALUE)
10002     {
10003       (*pos) += 4;
10004
10005       value *val;
10006       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10007         {
10008           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10009             return value_zero (to_type, not_lval);
10010
10011           val = evaluate_var_msym_value (noside,
10012                                          exp->elts[pc + 1].objfile,
10013                                          exp->elts[pc + 2].msymbol);
10014         }
10015       else
10016         val = evaluate_var_value (noside,
10017                                   exp->elts[pc + 1].block,
10018                                   exp->elts[pc + 2].symbol);
10019
10020       if (noside == EVAL_SKIP)
10021         return eval_skip_value (exp);
10022
10023       val = ada_value_cast (to_type, val);
10024
10025       /* Follow the Ada language semantics that do not allow taking
10026          an address of the result of a cast (view conversion in Ada).  */
10027       if (VALUE_LVAL (val) == lval_memory)
10028         {
10029           if (value_lazy (val))
10030             value_fetch_lazy (val);
10031           VALUE_LVAL (val) = not_lval;
10032         }
10033       return val;
10034     }
10035
10036   value *val = evaluate_subexp (to_type, exp, pos, noside);
10037   if (noside == EVAL_SKIP)
10038     return eval_skip_value (exp);
10039   return ada_value_cast (to_type, val);
10040 }
10041
10042 /* Implement the evaluate_exp routine in the exp_descriptor structure
10043    for the Ada language.  */
10044
10045 static struct value *
10046 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10047                      int *pos, enum noside noside)
10048 {
10049   enum exp_opcode op;
10050   int tem;
10051   int pc;
10052   int preeval_pos;
10053   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10054   struct type *type;
10055   int nargs, oplen;
10056   struct value **argvec;
10057
10058   pc = *pos;
10059   *pos += 1;
10060   op = exp->elts[pc].opcode;
10061
10062   switch (op)
10063     {
10064     default:
10065       *pos -= 1;
10066       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10067
10068       if (noside == EVAL_NORMAL)
10069         arg1 = unwrap_value (arg1);
10070
10071       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10072          then we need to perform the conversion manually, because
10073          evaluate_subexp_standard doesn't do it.  This conversion is
10074          necessary in Ada because the different kinds of float/fixed
10075          types in Ada have different representations.
10076
10077          Similarly, we need to perform the conversion from OP_LONG
10078          ourselves.  */
10079       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10080         arg1 = ada_value_cast (expect_type, arg1);
10081
10082       return arg1;
10083
10084     case OP_STRING:
10085       {
10086         struct value *result;
10087
10088         *pos -= 1;
10089         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10090         /* The result type will have code OP_STRING, bashed there from 
10091            OP_ARRAY.  Bash it back.  */
10092         if (value_type (result)->code () == TYPE_CODE_STRING)
10093           value_type (result)->set_code (TYPE_CODE_ARRAY);
10094         return result;
10095       }
10096
10097     case UNOP_CAST:
10098       (*pos) += 2;
10099       type = exp->elts[pc + 1].type;
10100       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10101
10102     case UNOP_QUAL:
10103       (*pos) += 2;
10104       type = exp->elts[pc + 1].type;
10105       return ada_evaluate_subexp (type, exp, pos, noside);
10106
10107     case BINOP_ASSIGN:
10108       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10109       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10110         {
10111           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10112           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10113             return arg1;
10114           return ada_value_assign (arg1, arg1);
10115         }
10116       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10117          except if the lhs of our assignment is a convenience variable.
10118          In the case of assigning to a convenience variable, the lhs
10119          should be exactly the result of the evaluation of the rhs.  */
10120       type = value_type (arg1);
10121       if (VALUE_LVAL (arg1) == lval_internalvar)
10122          type = NULL;
10123       arg2 = evaluate_subexp (type, exp, pos, noside);
10124       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10125         return arg1;
10126       if (VALUE_LVAL (arg1) == lval_internalvar)
10127         {
10128           /* Nothing.  */
10129         }
10130       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10131         arg2 = cast_to_fixed (value_type (arg1), arg2);
10132       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10133         error
10134           (_("Fixed-point values must be assigned to fixed-point variables"));
10135       else
10136         arg2 = coerce_for_assign (value_type (arg1), arg2);
10137       return ada_value_assign (arg1, arg2);
10138
10139     case BINOP_ADD:
10140       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10141       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10142       if (noside == EVAL_SKIP)
10143         goto nosideret;
10144       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10145         return (value_from_longest
10146                  (value_type (arg1),
10147                   value_as_long (arg1) + value_as_long (arg2)));
10148       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10149         return (value_from_longest
10150                  (value_type (arg2),
10151                   value_as_long (arg1) + value_as_long (arg2)));
10152       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10153            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10154           && value_type (arg1) != value_type (arg2))
10155         error (_("Operands of fixed-point addition must have the same type"));
10156       /* Do the addition, and cast the result to the type of the first
10157          argument.  We cannot cast the result to a reference type, so if
10158          ARG1 is a reference type, find its underlying type.  */
10159       type = value_type (arg1);
10160       while (type->code () == TYPE_CODE_REF)
10161         type = TYPE_TARGET_TYPE (type);
10162       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10163       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10164
10165     case BINOP_SUB:
10166       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10167       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10168       if (noside == EVAL_SKIP)
10169         goto nosideret;
10170       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10171         return (value_from_longest
10172                  (value_type (arg1),
10173                   value_as_long (arg1) - value_as_long (arg2)));
10174       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10175         return (value_from_longest
10176                  (value_type (arg2),
10177                   value_as_long (arg1) - value_as_long (arg2)));
10178       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10179            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10180           && value_type (arg1) != value_type (arg2))
10181         error (_("Operands of fixed-point subtraction "
10182                  "must have the same type"));
10183       /* Do the substraction, and cast the result to the type of the first
10184          argument.  We cannot cast the result to a reference type, so if
10185          ARG1 is a reference type, find its underlying type.  */
10186       type = value_type (arg1);
10187       while (type->code () == TYPE_CODE_REF)
10188         type = TYPE_TARGET_TYPE (type);
10189       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10190       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10191
10192     case BINOP_MUL:
10193     case BINOP_DIV:
10194     case BINOP_REM:
10195     case BINOP_MOD:
10196       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10197       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10198       if (noside == EVAL_SKIP)
10199         goto nosideret;
10200       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10201         {
10202           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10203           return value_zero (value_type (arg1), not_lval);
10204         }
10205       else
10206         {
10207           type = builtin_type (exp->gdbarch)->builtin_double;
10208           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10209             arg1 = cast_from_fixed (type, arg1);
10210           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10211             arg2 = cast_from_fixed (type, arg2);
10212           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10213           return ada_value_binop (arg1, arg2, op);
10214         }
10215
10216     case BINOP_EQUAL:
10217     case BINOP_NOTEQUAL:
10218       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10219       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10220       if (noside == EVAL_SKIP)
10221         goto nosideret;
10222       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10223         tem = 0;
10224       else
10225         {
10226           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10227           tem = ada_value_equal (arg1, arg2);
10228         }
10229       if (op == BINOP_NOTEQUAL)
10230         tem = !tem;
10231       type = language_bool_type (exp->language_defn, exp->gdbarch);
10232       return value_from_longest (type, (LONGEST) tem);
10233
10234     case UNOP_NEG:
10235       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10236       if (noside == EVAL_SKIP)
10237         goto nosideret;
10238       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10239         return value_cast (value_type (arg1), value_neg (arg1));
10240       else
10241         {
10242           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10243           return value_neg (arg1);
10244         }
10245
10246     case BINOP_LOGICAL_AND:
10247     case BINOP_LOGICAL_OR:
10248     case UNOP_LOGICAL_NOT:
10249       {
10250         struct value *val;
10251
10252         *pos -= 1;
10253         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10254         type = language_bool_type (exp->language_defn, exp->gdbarch);
10255         return value_cast (type, val);
10256       }
10257
10258     case BINOP_BITWISE_AND:
10259     case BINOP_BITWISE_IOR:
10260     case BINOP_BITWISE_XOR:
10261       {
10262         struct value *val;
10263
10264         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10265         *pos = pc;
10266         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10267
10268         return value_cast (value_type (arg1), val);
10269       }
10270
10271     case OP_VAR_VALUE:
10272       *pos -= 1;
10273
10274       if (noside == EVAL_SKIP)
10275         {
10276           *pos += 4;
10277           goto nosideret;
10278         }
10279
10280       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10281         /* Only encountered when an unresolved symbol occurs in a
10282            context other than a function call, in which case, it is
10283            invalid.  */
10284         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10285                exp->elts[pc + 2].symbol->print_name ());
10286
10287       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10288         {
10289           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10290           /* Check to see if this is a tagged type.  We also need to handle
10291              the case where the type is a reference to a tagged type, but
10292              we have to be careful to exclude pointers to tagged types.
10293              The latter should be shown as usual (as a pointer), whereas
10294              a reference should mostly be transparent to the user.  */
10295           if (ada_is_tagged_type (type, 0)
10296               || (type->code () == TYPE_CODE_REF
10297                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10298             {
10299               /* Tagged types are a little special in the fact that the real
10300                  type is dynamic and can only be determined by inspecting the
10301                  object's tag.  This means that we need to get the object's
10302                  value first (EVAL_NORMAL) and then extract the actual object
10303                  type from its tag.
10304
10305                  Note that we cannot skip the final step where we extract
10306                  the object type from its tag, because the EVAL_NORMAL phase
10307                  results in dynamic components being resolved into fixed ones.
10308                  This can cause problems when trying to print the type
10309                  description of tagged types whose parent has a dynamic size:
10310                  We use the type name of the "_parent" component in order
10311                  to print the name of the ancestor type in the type description.
10312                  If that component had a dynamic size, the resolution into
10313                  a fixed type would result in the loss of that type name,
10314                  thus preventing us from printing the name of the ancestor
10315                  type in the type description.  */
10316               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10317
10318               if (type->code () != TYPE_CODE_REF)
10319                 {
10320                   struct type *actual_type;
10321
10322                   actual_type = type_from_tag (ada_value_tag (arg1));
10323                   if (actual_type == NULL)
10324                     /* If, for some reason, we were unable to determine
10325                        the actual type from the tag, then use the static
10326                        approximation that we just computed as a fallback.
10327                        This can happen if the debugging information is
10328                        incomplete, for instance.  */
10329                     actual_type = type;
10330                   return value_zero (actual_type, not_lval);
10331                 }
10332               else
10333                 {
10334                   /* In the case of a ref, ada_coerce_ref takes care
10335                      of determining the actual type.  But the evaluation
10336                      should return a ref as it should be valid to ask
10337                      for its address; so rebuild a ref after coerce.  */
10338                   arg1 = ada_coerce_ref (arg1);
10339                   return value_ref (arg1, TYPE_CODE_REF);
10340                 }
10341             }
10342
10343           /* Records and unions for which GNAT encodings have been
10344              generated need to be statically fixed as well.
10345              Otherwise, non-static fixing produces a type where
10346              all dynamic properties are removed, which prevents "ptype"
10347              from being able to completely describe the type.
10348              For instance, a case statement in a variant record would be
10349              replaced by the relevant components based on the actual
10350              value of the discriminants.  */
10351           if ((type->code () == TYPE_CODE_STRUCT
10352                && dynamic_template_type (type) != NULL)
10353               || (type->code () == TYPE_CODE_UNION
10354                   && ada_find_parallel_type (type, "___XVU") != NULL))
10355             {
10356               *pos += 4;
10357               return value_zero (to_static_fixed_type (type), not_lval);
10358             }
10359         }
10360
10361       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10362       return ada_to_fixed_value (arg1);
10363
10364     case OP_FUNCALL:
10365       (*pos) += 2;
10366
10367       /* Allocate arg vector, including space for the function to be
10368          called in argvec[0] and a terminating NULL.  */
10369       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10370       argvec = XALLOCAVEC (struct value *, nargs + 2);
10371
10372       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10373           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10374         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10375                exp->elts[pc + 5].symbol->print_name ());
10376       else
10377         {
10378           for (tem = 0; tem <= nargs; tem += 1)
10379             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10380           argvec[tem] = 0;
10381
10382           if (noside == EVAL_SKIP)
10383             goto nosideret;
10384         }
10385
10386       if (ada_is_constrained_packed_array_type
10387           (desc_base_type (value_type (argvec[0]))))
10388         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10389       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10390                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10391         /* This is a packed array that has already been fixed, and
10392            therefore already coerced to a simple array.  Nothing further
10393            to do.  */
10394         ;
10395       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10396         {
10397           /* Make sure we dereference references so that all the code below
10398              feels like it's really handling the referenced value.  Wrapping
10399              types (for alignment) may be there, so make sure we strip them as
10400              well.  */
10401           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10402         }
10403       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10404                && VALUE_LVAL (argvec[0]) == lval_memory)
10405         argvec[0] = value_addr (argvec[0]);
10406
10407       type = ada_check_typedef (value_type (argvec[0]));
10408
10409       /* Ada allows us to implicitly dereference arrays when subscripting
10410          them.  So, if this is an array typedef (encoding use for array
10411          access types encoded as fat pointers), strip it now.  */
10412       if (type->code () == TYPE_CODE_TYPEDEF)
10413         type = ada_typedef_target_type (type);
10414
10415       if (type->code () == TYPE_CODE_PTR)
10416         {
10417           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10418             {
10419             case TYPE_CODE_FUNC:
10420               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10421               break;
10422             case TYPE_CODE_ARRAY:
10423               break;
10424             case TYPE_CODE_STRUCT:
10425               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10426                 argvec[0] = ada_value_ind (argvec[0]);
10427               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10428               break;
10429             default:
10430               error (_("cannot subscript or call something of type `%s'"),
10431                      ada_type_name (value_type (argvec[0])));
10432               break;
10433             }
10434         }
10435
10436       switch (type->code ())
10437         {
10438         case TYPE_CODE_FUNC:
10439           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10440             {
10441               if (TYPE_TARGET_TYPE (type) == NULL)
10442                 error_call_unknown_return_type (NULL);
10443               return allocate_value (TYPE_TARGET_TYPE (type));
10444             }
10445           return call_function_by_hand (argvec[0], NULL,
10446                                         gdb::make_array_view (argvec + 1,
10447                                                               nargs));
10448         case TYPE_CODE_INTERNAL_FUNCTION:
10449           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10450             /* We don't know anything about what the internal
10451                function might return, but we have to return
10452                something.  */
10453             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10454                                not_lval);
10455           else
10456             return call_internal_function (exp->gdbarch, exp->language_defn,
10457                                            argvec[0], nargs, argvec + 1);
10458
10459         case TYPE_CODE_STRUCT:
10460           {
10461             int arity;
10462
10463             arity = ada_array_arity (type);
10464             type = ada_array_element_type (type, nargs);
10465             if (type == NULL)
10466               error (_("cannot subscript or call a record"));
10467             if (arity != nargs)
10468               error (_("wrong number of subscripts; expecting %d"), arity);
10469             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10470               return value_zero (ada_aligned_type (type), lval_memory);
10471             return
10472               unwrap_value (ada_value_subscript
10473                             (argvec[0], nargs, argvec + 1));
10474           }
10475         case TYPE_CODE_ARRAY:
10476           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10477             {
10478               type = ada_array_element_type (type, nargs);
10479               if (type == NULL)
10480                 error (_("element type of array unknown"));
10481               else
10482                 return value_zero (ada_aligned_type (type), lval_memory);
10483             }
10484           return
10485             unwrap_value (ada_value_subscript
10486                           (ada_coerce_to_simple_array (argvec[0]),
10487                            nargs, argvec + 1));
10488         case TYPE_CODE_PTR:     /* Pointer to array */
10489           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10490             {
10491               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10492               type = ada_array_element_type (type, nargs);
10493               if (type == NULL)
10494                 error (_("element type of array unknown"));
10495               else
10496                 return value_zero (ada_aligned_type (type), lval_memory);
10497             }
10498           return
10499             unwrap_value (ada_value_ptr_subscript (argvec[0],
10500                                                    nargs, argvec + 1));
10501
10502         default:
10503           error (_("Attempt to index or call something other than an "
10504                    "array or function"));
10505         }
10506
10507     case TERNOP_SLICE:
10508       {
10509         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10510         struct value *low_bound_val =
10511           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10512         struct value *high_bound_val =
10513           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10514         LONGEST low_bound;
10515         LONGEST high_bound;
10516
10517         low_bound_val = coerce_ref (low_bound_val);
10518         high_bound_val = coerce_ref (high_bound_val);
10519         low_bound = value_as_long (low_bound_val);
10520         high_bound = value_as_long (high_bound_val);
10521
10522         if (noside == EVAL_SKIP)
10523           goto nosideret;
10524
10525         /* If this is a reference to an aligner type, then remove all
10526            the aligners.  */
10527         if (value_type (array)->code () == TYPE_CODE_REF
10528             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10529           TYPE_TARGET_TYPE (value_type (array)) =
10530             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10531
10532         if (ada_is_constrained_packed_array_type (value_type (array)))
10533           error (_("cannot slice a packed array"));
10534
10535         /* If this is a reference to an array or an array lvalue,
10536            convert to a pointer.  */
10537         if (value_type (array)->code () == TYPE_CODE_REF
10538             || (value_type (array)->code () == TYPE_CODE_ARRAY
10539                 && VALUE_LVAL (array) == lval_memory))
10540           array = value_addr (array);
10541
10542         if (noside == EVAL_AVOID_SIDE_EFFECTS
10543             && ada_is_array_descriptor_type (ada_check_typedef
10544                                              (value_type (array))))
10545           return empty_array (ada_type_of_array (array, 0), low_bound,
10546                               high_bound);
10547
10548         array = ada_coerce_to_simple_array_ptr (array);
10549
10550         /* If we have more than one level of pointer indirection,
10551            dereference the value until we get only one level.  */
10552         while (value_type (array)->code () == TYPE_CODE_PTR
10553                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10554                      == TYPE_CODE_PTR))
10555           array = value_ind (array);
10556
10557         /* Make sure we really do have an array type before going further,
10558            to avoid a SEGV when trying to get the index type or the target
10559            type later down the road if the debug info generated by
10560            the compiler is incorrect or incomplete.  */
10561         if (!ada_is_simple_array_type (value_type (array)))
10562           error (_("cannot take slice of non-array"));
10563
10564         if (ada_check_typedef (value_type (array))->code ()
10565             == TYPE_CODE_PTR)
10566           {
10567             struct type *type0 = ada_check_typedef (value_type (array));
10568
10569             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10570               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10571             else
10572               {
10573                 struct type *arr_type0 =
10574                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10575
10576                 return ada_value_slice_from_ptr (array, arr_type0,
10577                                                  longest_to_int (low_bound),
10578                                                  longest_to_int (high_bound));
10579               }
10580           }
10581         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10582           return array;
10583         else if (high_bound < low_bound)
10584           return empty_array (value_type (array), low_bound, high_bound);
10585         else
10586           return ada_value_slice (array, longest_to_int (low_bound),
10587                                   longest_to_int (high_bound));
10588       }
10589
10590     case UNOP_IN_RANGE:
10591       (*pos) += 2;
10592       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10593       type = check_typedef (exp->elts[pc + 1].type);
10594
10595       if (noside == EVAL_SKIP)
10596         goto nosideret;
10597
10598       switch (type->code ())
10599         {
10600         default:
10601           lim_warning (_("Membership test incompletely implemented; "
10602                          "always returns true"));
10603           type = language_bool_type (exp->language_defn, exp->gdbarch);
10604           return value_from_longest (type, (LONGEST) 1);
10605
10606         case TYPE_CODE_RANGE:
10607           arg2 = value_from_longest (type,
10608                                      type->bounds ()->low.const_val ());
10609           arg3 = value_from_longest (type,
10610                                      type->bounds ()->high.const_val ());
10611           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10612           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10613           type = language_bool_type (exp->language_defn, exp->gdbarch);
10614           return
10615             value_from_longest (type,
10616                                 (value_less (arg1, arg3)
10617                                  || value_equal (arg1, arg3))
10618                                 && (value_less (arg2, arg1)
10619                                     || value_equal (arg2, arg1)));
10620         }
10621
10622     case BINOP_IN_BOUNDS:
10623       (*pos) += 2;
10624       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10625       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10626
10627       if (noside == EVAL_SKIP)
10628         goto nosideret;
10629
10630       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10631         {
10632           type = language_bool_type (exp->language_defn, exp->gdbarch);
10633           return value_zero (type, not_lval);
10634         }
10635
10636       tem = longest_to_int (exp->elts[pc + 1].longconst);
10637
10638       type = ada_index_type (value_type (arg2), tem, "range");
10639       if (!type)
10640         type = value_type (arg1);
10641
10642       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10643       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10644
10645       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10646       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10647       type = language_bool_type (exp->language_defn, exp->gdbarch);
10648       return
10649         value_from_longest (type,
10650                             (value_less (arg1, arg3)
10651                              || value_equal (arg1, arg3))
10652                             && (value_less (arg2, arg1)
10653                                 || value_equal (arg2, arg1)));
10654
10655     case TERNOP_IN_RANGE:
10656       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10657       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10658       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10659
10660       if (noside == EVAL_SKIP)
10661         goto nosideret;
10662
10663       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10664       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10665       type = language_bool_type (exp->language_defn, exp->gdbarch);
10666       return
10667         value_from_longest (type,
10668                             (value_less (arg1, arg3)
10669                              || value_equal (arg1, arg3))
10670                             && (value_less (arg2, arg1)
10671                                 || value_equal (arg2, arg1)));
10672
10673     case OP_ATR_FIRST:
10674     case OP_ATR_LAST:
10675     case OP_ATR_LENGTH:
10676       {
10677         struct type *type_arg;
10678
10679         if (exp->elts[*pos].opcode == OP_TYPE)
10680           {
10681             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10682             arg1 = NULL;
10683             type_arg = check_typedef (exp->elts[pc + 2].type);
10684           }
10685         else
10686           {
10687             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10688             type_arg = NULL;
10689           }
10690
10691         if (exp->elts[*pos].opcode != OP_LONG)
10692           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10693         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10694         *pos += 4;
10695
10696         if (noside == EVAL_SKIP)
10697           goto nosideret;
10698         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10699           {
10700             if (type_arg == NULL)
10701               type_arg = value_type (arg1);
10702
10703             if (ada_is_constrained_packed_array_type (type_arg))
10704               type_arg = decode_constrained_packed_array_type (type_arg);
10705
10706             if (!discrete_type_p (type_arg))
10707               {
10708                 switch (op)
10709                   {
10710                   default:          /* Should never happen.  */
10711                     error (_("unexpected attribute encountered"));
10712                   case OP_ATR_FIRST:
10713                   case OP_ATR_LAST:
10714                     type_arg = ada_index_type (type_arg, tem,
10715                                                ada_attribute_name (op));
10716                     break;
10717                   case OP_ATR_LENGTH:
10718                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
10719                     break;
10720                   }
10721               }
10722
10723             return value_zero (type_arg, not_lval);
10724           }
10725         else if (type_arg == NULL)
10726           {
10727             arg1 = ada_coerce_ref (arg1);
10728
10729             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10730               arg1 = ada_coerce_to_simple_array (arg1);
10731
10732             if (op == OP_ATR_LENGTH)
10733               type = builtin_type (exp->gdbarch)->builtin_int;
10734             else
10735               {
10736                 type = ada_index_type (value_type (arg1), tem,
10737                                        ada_attribute_name (op));
10738                 if (type == NULL)
10739                   type = builtin_type (exp->gdbarch)->builtin_int;
10740               }
10741
10742             switch (op)
10743               {
10744               default:          /* Should never happen.  */
10745                 error (_("unexpected attribute encountered"));
10746               case OP_ATR_FIRST:
10747                 return value_from_longest
10748                         (type, ada_array_bound (arg1, tem, 0));
10749               case OP_ATR_LAST:
10750                 return value_from_longest
10751                         (type, ada_array_bound (arg1, tem, 1));
10752               case OP_ATR_LENGTH:
10753                 return value_from_longest
10754                         (type, ada_array_length (arg1, tem));
10755               }
10756           }
10757         else if (discrete_type_p (type_arg))
10758           {
10759             struct type *range_type;
10760             const char *name = ada_type_name (type_arg);
10761
10762             range_type = NULL;
10763             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
10764               range_type = to_fixed_range_type (type_arg, NULL);
10765             if (range_type == NULL)
10766               range_type = type_arg;
10767             switch (op)
10768               {
10769               default:
10770                 error (_("unexpected attribute encountered"));
10771               case OP_ATR_FIRST:
10772                 return value_from_longest 
10773                   (range_type, ada_discrete_type_low_bound (range_type));
10774               case OP_ATR_LAST:
10775                 return value_from_longest
10776                   (range_type, ada_discrete_type_high_bound (range_type));
10777               case OP_ATR_LENGTH:
10778                 error (_("the 'length attribute applies only to array types"));
10779               }
10780           }
10781         else if (type_arg->code () == TYPE_CODE_FLT)
10782           error (_("unimplemented type attribute"));
10783         else
10784           {
10785             LONGEST low, high;
10786
10787             if (ada_is_constrained_packed_array_type (type_arg))
10788               type_arg = decode_constrained_packed_array_type (type_arg);
10789
10790             if (op == OP_ATR_LENGTH)
10791               type = builtin_type (exp->gdbarch)->builtin_int;
10792             else
10793               {
10794                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
10795                 if (type == NULL)
10796                   type = builtin_type (exp->gdbarch)->builtin_int;
10797               }
10798
10799             switch (op)
10800               {
10801               default:
10802                 error (_("unexpected attribute encountered"));
10803               case OP_ATR_FIRST:
10804                 low = ada_array_bound_from_type (type_arg, tem, 0);
10805                 return value_from_longest (type, low);
10806               case OP_ATR_LAST:
10807                 high = ada_array_bound_from_type (type_arg, tem, 1);
10808                 return value_from_longest (type, high);
10809               case OP_ATR_LENGTH:
10810                 low = ada_array_bound_from_type (type_arg, tem, 0);
10811                 high = ada_array_bound_from_type (type_arg, tem, 1);
10812                 return value_from_longest (type, high - low + 1);
10813               }
10814           }
10815       }
10816
10817     case OP_ATR_TAG:
10818       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10819       if (noside == EVAL_SKIP)
10820         goto nosideret;
10821
10822       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10823         return value_zero (ada_tag_type (arg1), not_lval);
10824
10825       return ada_value_tag (arg1);
10826
10827     case OP_ATR_MIN:
10828     case OP_ATR_MAX:
10829       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10830       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10831       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10832       if (noside == EVAL_SKIP)
10833         goto nosideret;
10834       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10835         return value_zero (value_type (arg1), not_lval);
10836       else
10837         {
10838           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10839           return value_binop (arg1, arg2,
10840                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
10841         }
10842
10843     case OP_ATR_MODULUS:
10844       {
10845         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
10846
10847         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10848         if (noside == EVAL_SKIP)
10849           goto nosideret;
10850
10851         if (!ada_is_modular_type (type_arg))
10852           error (_("'modulus must be applied to modular type"));
10853
10854         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
10855                                    ada_modulus (type_arg));
10856       }
10857
10858
10859     case OP_ATR_POS:
10860       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10861       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10862       if (noside == EVAL_SKIP)
10863         goto nosideret;
10864       type = builtin_type (exp->gdbarch)->builtin_int;
10865       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10866         return value_zero (type, not_lval);
10867       else
10868         return value_pos_atr (type, arg1);
10869
10870     case OP_ATR_SIZE:
10871       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10872       type = value_type (arg1);
10873
10874       /* If the argument is a reference, then dereference its type, since
10875          the user is really asking for the size of the actual object,
10876          not the size of the pointer.  */
10877       if (type->code () == TYPE_CODE_REF)
10878         type = TYPE_TARGET_TYPE (type);
10879
10880       if (noside == EVAL_SKIP)
10881         goto nosideret;
10882       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10883         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
10884       else
10885         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
10886                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
10887
10888     case OP_ATR_VAL:
10889       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10890       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10891       type = exp->elts[pc + 2].type;
10892       if (noside == EVAL_SKIP)
10893         goto nosideret;
10894       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10895         return value_zero (type, not_lval);
10896       else
10897         return value_val_atr (type, arg1);
10898
10899     case BINOP_EXP:
10900       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10901       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10902       if (noside == EVAL_SKIP)
10903         goto nosideret;
10904       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10905         return value_zero (value_type (arg1), not_lval);
10906       else
10907         {
10908           /* For integer exponentiation operations,
10909              only promote the first argument.  */
10910           if (is_integral_type (value_type (arg2)))
10911             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10912           else
10913             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10914
10915           return value_binop (arg1, arg2, op);
10916         }
10917
10918     case UNOP_PLUS:
10919       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10920       if (noside == EVAL_SKIP)
10921         goto nosideret;
10922       else
10923         return arg1;
10924
10925     case UNOP_ABS:
10926       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10927       if (noside == EVAL_SKIP)
10928         goto nosideret;
10929       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10930       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
10931         return value_neg (arg1);
10932       else
10933         return arg1;
10934
10935     case UNOP_IND:
10936       preeval_pos = *pos;
10937       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10938       if (noside == EVAL_SKIP)
10939         goto nosideret;
10940       type = ada_check_typedef (value_type (arg1));
10941       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10942         {
10943           if (ada_is_array_descriptor_type (type))
10944             /* GDB allows dereferencing GNAT array descriptors.  */
10945             {
10946               struct type *arrType = ada_type_of_array (arg1, 0);
10947
10948               if (arrType == NULL)
10949                 error (_("Attempt to dereference null array pointer."));
10950               return value_at_lazy (arrType, 0);
10951             }
10952           else if (type->code () == TYPE_CODE_PTR
10953                    || type->code () == TYPE_CODE_REF
10954                    /* In C you can dereference an array to get the 1st elt.  */
10955                    || type->code () == TYPE_CODE_ARRAY)
10956             {
10957             /* As mentioned in the OP_VAR_VALUE case, tagged types can
10958                only be determined by inspecting the object's tag.
10959                This means that we need to evaluate completely the
10960                expression in order to get its type.  */
10961
10962               if ((type->code () == TYPE_CODE_REF
10963                    || type->code () == TYPE_CODE_PTR)
10964                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
10965                 {
10966                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
10967                                           EVAL_NORMAL);
10968                   type = value_type (ada_value_ind (arg1));
10969                 }
10970               else
10971                 {
10972                   type = to_static_fixed_type
10973                     (ada_aligned_type
10974                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
10975                 }
10976               ada_ensure_varsize_limit (type);
10977               return value_zero (type, lval_memory);
10978             }
10979           else if (type->code () == TYPE_CODE_INT)
10980             {
10981               /* GDB allows dereferencing an int.  */
10982               if (expect_type == NULL)
10983                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10984                                    lval_memory);
10985               else
10986                 {
10987                   expect_type = 
10988                     to_static_fixed_type (ada_aligned_type (expect_type));
10989                   return value_zero (expect_type, lval_memory);
10990                 }
10991             }
10992           else
10993             error (_("Attempt to take contents of a non-pointer value."));
10994         }
10995       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
10996       type = ada_check_typedef (value_type (arg1));
10997
10998       if (type->code () == TYPE_CODE_INT)
10999           /* GDB allows dereferencing an int.  If we were given
11000              the expect_type, then use that as the target type.
11001              Otherwise, assume that the target type is an int.  */
11002         {
11003           if (expect_type != NULL)
11004             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11005                                               arg1));
11006           else
11007             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11008                                   (CORE_ADDR) value_as_address (arg1));
11009         }
11010
11011       if (ada_is_array_descriptor_type (type))
11012         /* GDB allows dereferencing GNAT array descriptors.  */
11013         return ada_coerce_to_simple_array (arg1);
11014       else
11015         return ada_value_ind (arg1);
11016
11017     case STRUCTOP_STRUCT:
11018       tem = longest_to_int (exp->elts[pc + 1].longconst);
11019       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11020       preeval_pos = *pos;
11021       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11022       if (noside == EVAL_SKIP)
11023         goto nosideret;
11024       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11025         {
11026           struct type *type1 = value_type (arg1);
11027
11028           if (ada_is_tagged_type (type1, 1))
11029             {
11030               type = ada_lookup_struct_elt_type (type1,
11031                                                  &exp->elts[pc + 2].string,
11032                                                  1, 1);
11033
11034               /* If the field is not found, check if it exists in the
11035                  extension of this object's type. This means that we
11036                  need to evaluate completely the expression.  */
11037
11038               if (type == NULL)
11039                 {
11040                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11041                                           EVAL_NORMAL);
11042                   arg1 = ada_value_struct_elt (arg1,
11043                                                &exp->elts[pc + 2].string,
11044                                                0);
11045                   arg1 = unwrap_value (arg1);
11046                   type = value_type (ada_to_fixed_value (arg1));
11047                 }
11048             }
11049           else
11050             type =
11051               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11052                                           0);
11053
11054           return value_zero (ada_aligned_type (type), lval_memory);
11055         }
11056       else
11057         {
11058           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11059           arg1 = unwrap_value (arg1);
11060           return ada_to_fixed_value (arg1);
11061         }
11062
11063     case OP_TYPE:
11064       /* The value is not supposed to be used.  This is here to make it
11065          easier to accommodate expressions that contain types.  */
11066       (*pos) += 2;
11067       if (noside == EVAL_SKIP)
11068         goto nosideret;
11069       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11070         return allocate_value (exp->elts[pc + 1].type);
11071       else
11072         error (_("Attempt to use a type name as an expression"));
11073
11074     case OP_AGGREGATE:
11075     case OP_CHOICES:
11076     case OP_OTHERS:
11077     case OP_DISCRETE_RANGE:
11078     case OP_POSITIONAL:
11079     case OP_NAME:
11080       if (noside == EVAL_NORMAL)
11081         switch (op) 
11082           {
11083           case OP_NAME:
11084             error (_("Undefined name, ambiguous name, or renaming used in "
11085                      "component association: %s."), &exp->elts[pc+2].string);
11086           case OP_AGGREGATE:
11087             error (_("Aggregates only allowed on the right of an assignment"));
11088           default:
11089             internal_error (__FILE__, __LINE__,
11090                             _("aggregate apparently mangled"));
11091           }
11092
11093       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11094       *pos += oplen - 1;
11095       for (tem = 0; tem < nargs; tem += 1) 
11096         ada_evaluate_subexp (NULL, exp, pos, noside);
11097       goto nosideret;
11098     }
11099
11100 nosideret:
11101   return eval_skip_value (exp);
11102 }
11103 \f
11104
11105                                 /* Fixed point */
11106
11107 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11108    type name that encodes the 'small and 'delta information.
11109    Otherwise, return NULL.  */
11110
11111 static const char *
11112 gnat_encoded_fixed_type_info (struct type *type)
11113 {
11114   const char *name = ada_type_name (type);
11115   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11116
11117   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11118     {
11119       const char *tail = strstr (name, "___XF_");
11120
11121       if (tail == NULL)
11122         return NULL;
11123       else
11124         return tail + 5;
11125     }
11126   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11127     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11128   else
11129     return NULL;
11130 }
11131
11132 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11133
11134 int
11135 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11136 {
11137   return gnat_encoded_fixed_type_info (type) != NULL;
11138 }
11139
11140 /* Return non-zero iff TYPE represents a System.Address type.  */
11141
11142 int
11143 ada_is_system_address_type (struct type *type)
11144 {
11145   return (type->name () && strcmp (type->name (), "system__address") == 0);
11146 }
11147
11148 /* Assuming that TYPE is the representation of an Ada fixed-point
11149    type, return the target floating-point type to be used to represent
11150    of this type during internal computation.  */
11151
11152 static struct type *
11153 ada_scaling_type (struct type *type)
11154 {
11155   return builtin_type (get_type_arch (type))->builtin_long_double;
11156 }
11157
11158 /* Assuming that TYPE is the representation of an Ada fixed-point
11159    type, return its delta, or NULL if the type is malformed and the
11160    delta cannot be determined.  */
11161
11162 struct value *
11163 gnat_encoded_fixed_point_delta (struct type *type)
11164 {
11165   const char *encoding = gnat_encoded_fixed_type_info (type);
11166   struct type *scale_type = ada_scaling_type (type);
11167
11168   long long num, den;
11169
11170   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11171     return nullptr;
11172   else
11173     return value_binop (value_from_longest (scale_type, num),
11174                         value_from_longest (scale_type, den), BINOP_DIV);
11175 }
11176
11177 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11178    the scaling factor ('SMALL value) associated with the type.  */
11179
11180 struct value *
11181 ada_scaling_factor (struct type *type)
11182 {
11183   const char *encoding = gnat_encoded_fixed_type_info (type);
11184   struct type *scale_type = ada_scaling_type (type);
11185
11186   long long num0, den0, num1, den1;
11187   int n;
11188
11189   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11190               &num0, &den0, &num1, &den1);
11191
11192   if (n < 2)
11193     return value_from_longest (scale_type, 1);
11194   else if (n == 4)
11195     return value_binop (value_from_longest (scale_type, num1),
11196                         value_from_longest (scale_type, den1), BINOP_DIV);
11197   else
11198     return value_binop (value_from_longest (scale_type, num0),
11199                         value_from_longest (scale_type, den0), BINOP_DIV);
11200 }
11201
11202 \f
11203
11204                                 /* Range types */
11205
11206 /* Scan STR beginning at position K for a discriminant name, and
11207    return the value of that discriminant field of DVAL in *PX.  If
11208    PNEW_K is not null, put the position of the character beyond the
11209    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11210    not alter *PX and *PNEW_K if unsuccessful.  */
11211
11212 static int
11213 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11214                     int *pnew_k)
11215 {
11216   static char *bound_buffer = NULL;
11217   static size_t bound_buffer_len = 0;
11218   const char *pstart, *pend, *bound;
11219   struct value *bound_val;
11220
11221   if (dval == NULL || str == NULL || str[k] == '\0')
11222     return 0;
11223
11224   pstart = str + k;
11225   pend = strstr (pstart, "__");
11226   if (pend == NULL)
11227     {
11228       bound = pstart;
11229       k += strlen (bound);
11230     }
11231   else
11232     {
11233       int len = pend - pstart;
11234
11235       /* Strip __ and beyond.  */
11236       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11237       strncpy (bound_buffer, pstart, len);
11238       bound_buffer[len] = '\0';
11239
11240       bound = bound_buffer;
11241       k = pend - str;
11242     }
11243
11244   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11245   if (bound_val == NULL)
11246     return 0;
11247
11248   *px = value_as_long (bound_val);
11249   if (pnew_k != NULL)
11250     *pnew_k = k;
11251   return 1;
11252 }
11253
11254 /* Value of variable named NAME in the current environment.  If
11255    no such variable found, then if ERR_MSG is null, returns 0, and
11256    otherwise causes an error with message ERR_MSG.  */
11257
11258 static struct value *
11259 get_var_value (const char *name, const char *err_msg)
11260 {
11261   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11262
11263   std::vector<struct block_symbol> syms;
11264   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11265                                              get_selected_block (0),
11266                                              VAR_DOMAIN, &syms, 1);
11267
11268   if (nsyms != 1)
11269     {
11270       if (err_msg == NULL)
11271         return 0;
11272       else
11273         error (("%s"), err_msg);
11274     }
11275
11276   return value_of_variable (syms[0].symbol, syms[0].block);
11277 }
11278
11279 /* Value of integer variable named NAME in the current environment.
11280    If no such variable is found, returns false.  Otherwise, sets VALUE
11281    to the variable's value and returns true.  */
11282
11283 bool
11284 get_int_var_value (const char *name, LONGEST &value)
11285 {
11286   struct value *var_val = get_var_value (name, 0);
11287
11288   if (var_val == 0)
11289     return false;
11290
11291   value = value_as_long (var_val);
11292   return true;
11293 }
11294
11295
11296 /* Return a range type whose base type is that of the range type named
11297    NAME in the current environment, and whose bounds are calculated
11298    from NAME according to the GNAT range encoding conventions.
11299    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11300    corresponding range type from debug information; fall back to using it
11301    if symbol lookup fails.  If a new type must be created, allocate it
11302    like ORIG_TYPE was.  The bounds information, in general, is encoded
11303    in NAME, the base type given in the named range type.  */
11304
11305 static struct type *
11306 to_fixed_range_type (struct type *raw_type, struct value *dval)
11307 {
11308   const char *name;
11309   struct type *base_type;
11310   const char *subtype_info;
11311
11312   gdb_assert (raw_type != NULL);
11313   gdb_assert (raw_type->name () != NULL);
11314
11315   if (raw_type->code () == TYPE_CODE_RANGE)
11316     base_type = TYPE_TARGET_TYPE (raw_type);
11317   else
11318     base_type = raw_type;
11319
11320   name = raw_type->name ();
11321   subtype_info = strstr (name, "___XD");
11322   if (subtype_info == NULL)
11323     {
11324       LONGEST L = ada_discrete_type_low_bound (raw_type);
11325       LONGEST U = ada_discrete_type_high_bound (raw_type);
11326
11327       if (L < INT_MIN || U > INT_MAX)
11328         return raw_type;
11329       else
11330         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11331                                          L, U);
11332     }
11333   else
11334     {
11335       static char *name_buf = NULL;
11336       static size_t name_len = 0;
11337       int prefix_len = subtype_info - name;
11338       LONGEST L, U;
11339       struct type *type;
11340       const char *bounds_str;
11341       int n;
11342
11343       GROW_VECT (name_buf, name_len, prefix_len + 5);
11344       strncpy (name_buf, name, prefix_len);
11345       name_buf[prefix_len] = '\0';
11346
11347       subtype_info += 5;
11348       bounds_str = strchr (subtype_info, '_');
11349       n = 1;
11350
11351       if (*subtype_info == 'L')
11352         {
11353           if (!ada_scan_number (bounds_str, n, &L, &n)
11354               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11355             return raw_type;
11356           if (bounds_str[n] == '_')
11357             n += 2;
11358           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11359             n += 1;
11360           subtype_info += 1;
11361         }
11362       else
11363         {
11364           strcpy (name_buf + prefix_len, "___L");
11365           if (!get_int_var_value (name_buf, L))
11366             {
11367               lim_warning (_("Unknown lower bound, using 1."));
11368               L = 1;
11369             }
11370         }
11371
11372       if (*subtype_info == 'U')
11373         {
11374           if (!ada_scan_number (bounds_str, n, &U, &n)
11375               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11376             return raw_type;
11377         }
11378       else
11379         {
11380           strcpy (name_buf + prefix_len, "___U");
11381           if (!get_int_var_value (name_buf, U))
11382             {
11383               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11384               U = L;
11385             }
11386         }
11387
11388       type = create_static_range_type (alloc_type_copy (raw_type),
11389                                        base_type, L, U);
11390       /* create_static_range_type alters the resulting type's length
11391          to match the size of the base_type, which is not what we want.
11392          Set it back to the original range type's length.  */
11393       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11394       type->set_name (name);
11395       return type;
11396     }
11397 }
11398
11399 /* True iff NAME is the name of a range type.  */
11400
11401 int
11402 ada_is_range_type_name (const char *name)
11403 {
11404   return (name != NULL && strstr (name, "___XD"));
11405 }
11406 \f
11407
11408                                 /* Modular types */
11409
11410 /* True iff TYPE is an Ada modular type.  */
11411
11412 int
11413 ada_is_modular_type (struct type *type)
11414 {
11415   struct type *subranged_type = get_base_type (type);
11416
11417   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11418           && subranged_type->code () == TYPE_CODE_INT
11419           && TYPE_UNSIGNED (subranged_type));
11420 }
11421
11422 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11423
11424 ULONGEST
11425 ada_modulus (struct type *type)
11426 {
11427   return (ULONGEST) type->bounds ()->high.const_val () + 1;
11428 }
11429 \f
11430
11431 /* Ada exception catchpoint support:
11432    ---------------------------------
11433
11434    We support 3 kinds of exception catchpoints:
11435      . catchpoints on Ada exceptions
11436      . catchpoints on unhandled Ada exceptions
11437      . catchpoints on failed assertions
11438
11439    Exceptions raised during failed assertions, or unhandled exceptions
11440    could perfectly be caught with the general catchpoint on Ada exceptions.
11441    However, we can easily differentiate these two special cases, and having
11442    the option to distinguish these two cases from the rest can be useful
11443    to zero-in on certain situations.
11444
11445    Exception catchpoints are a specialized form of breakpoint,
11446    since they rely on inserting breakpoints inside known routines
11447    of the GNAT runtime.  The implementation therefore uses a standard
11448    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11449    of breakpoint_ops.
11450
11451    Support in the runtime for exception catchpoints have been changed
11452    a few times already, and these changes affect the implementation
11453    of these catchpoints.  In order to be able to support several
11454    variants of the runtime, we use a sniffer that will determine
11455    the runtime variant used by the program being debugged.  */
11456
11457 /* Ada's standard exceptions.
11458
11459    The Ada 83 standard also defined Numeric_Error.  But there so many
11460    situations where it was unclear from the Ada 83 Reference Manual
11461    (RM) whether Constraint_Error or Numeric_Error should be raised,
11462    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11463    Interpretation saying that anytime the RM says that Numeric_Error
11464    should be raised, the implementation may raise Constraint_Error.
11465    Ada 95 went one step further and pretty much removed Numeric_Error
11466    from the list of standard exceptions (it made it a renaming of
11467    Constraint_Error, to help preserve compatibility when compiling
11468    an Ada83 compiler). As such, we do not include Numeric_Error from
11469    this list of standard exceptions.  */
11470
11471 static const char *standard_exc[] = {
11472   "constraint_error",
11473   "program_error",
11474   "storage_error",
11475   "tasking_error"
11476 };
11477
11478 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11479
11480 /* A structure that describes how to support exception catchpoints
11481    for a given executable.  */
11482
11483 struct exception_support_info
11484 {
11485    /* The name of the symbol to break on in order to insert
11486       a catchpoint on exceptions.  */
11487    const char *catch_exception_sym;
11488
11489    /* The name of the symbol to break on in order to insert
11490       a catchpoint on unhandled exceptions.  */
11491    const char *catch_exception_unhandled_sym;
11492
11493    /* The name of the symbol to break on in order to insert
11494       a catchpoint on failed assertions.  */
11495    const char *catch_assert_sym;
11496
11497    /* The name of the symbol to break on in order to insert
11498       a catchpoint on exception handling.  */
11499    const char *catch_handlers_sym;
11500
11501    /* Assuming that the inferior just triggered an unhandled exception
11502       catchpoint, this function is responsible for returning the address
11503       in inferior memory where the name of that exception is stored.
11504       Return zero if the address could not be computed.  */
11505    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11506 };
11507
11508 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11509 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11510
11511 /* The following exception support info structure describes how to
11512    implement exception catchpoints with the latest version of the
11513    Ada runtime (as of 2019-08-??).  */
11514
11515 static const struct exception_support_info default_exception_support_info =
11516 {
11517   "__gnat_debug_raise_exception", /* catch_exception_sym */
11518   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11519   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11520   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11521   ada_unhandled_exception_name_addr
11522 };
11523
11524 /* The following exception support info structure describes how to
11525    implement exception catchpoints with an earlier version of the
11526    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11527
11528 static const struct exception_support_info exception_support_info_v0 =
11529 {
11530   "__gnat_debug_raise_exception", /* catch_exception_sym */
11531   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11532   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11533   "__gnat_begin_handler", /* catch_handlers_sym */
11534   ada_unhandled_exception_name_addr
11535 };
11536
11537 /* The following exception support info structure describes how to
11538    implement exception catchpoints with a slightly older version
11539    of the Ada runtime.  */
11540
11541 static const struct exception_support_info exception_support_info_fallback =
11542 {
11543   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11544   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11545   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11546   "__gnat_begin_handler", /* catch_handlers_sym */
11547   ada_unhandled_exception_name_addr_from_raise
11548 };
11549
11550 /* Return nonzero if we can detect the exception support routines
11551    described in EINFO.
11552
11553    This function errors out if an abnormal situation is detected
11554    (for instance, if we find the exception support routines, but
11555    that support is found to be incomplete).  */
11556
11557 static int
11558 ada_has_this_exception_support (const struct exception_support_info *einfo)
11559 {
11560   struct symbol *sym;
11561
11562   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11563      that should be compiled with debugging information.  As a result, we
11564      expect to find that symbol in the symtabs.  */
11565
11566   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11567   if (sym == NULL)
11568     {
11569       /* Perhaps we did not find our symbol because the Ada runtime was
11570          compiled without debugging info, or simply stripped of it.
11571          It happens on some GNU/Linux distributions for instance, where
11572          users have to install a separate debug package in order to get
11573          the runtime's debugging info.  In that situation, let the user
11574          know why we cannot insert an Ada exception catchpoint.
11575
11576          Note: Just for the purpose of inserting our Ada exception
11577          catchpoint, we could rely purely on the associated minimal symbol.
11578          But we would be operating in degraded mode anyway, since we are
11579          still lacking the debugging info needed later on to extract
11580          the name of the exception being raised (this name is printed in
11581          the catchpoint message, and is also used when trying to catch
11582          a specific exception).  We do not handle this case for now.  */
11583       struct bound_minimal_symbol msym
11584         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11585
11586       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11587         error (_("Your Ada runtime appears to be missing some debugging "
11588                  "information.\nCannot insert Ada exception catchpoint "
11589                  "in this configuration."));
11590
11591       return 0;
11592     }
11593
11594   /* Make sure that the symbol we found corresponds to a function.  */
11595
11596   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11597     {
11598       error (_("Symbol \"%s\" is not a function (class = %d)"),
11599              sym->linkage_name (), SYMBOL_CLASS (sym));
11600       return 0;
11601     }
11602
11603   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11604   if (sym == NULL)
11605     {
11606       struct bound_minimal_symbol msym
11607         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11608
11609       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11610         error (_("Your Ada runtime appears to be missing some debugging "
11611                  "information.\nCannot insert Ada exception catchpoint "
11612                  "in this configuration."));
11613
11614       return 0;
11615     }
11616
11617   /* Make sure that the symbol we found corresponds to a function.  */
11618
11619   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11620     {
11621       error (_("Symbol \"%s\" is not a function (class = %d)"),
11622              sym->linkage_name (), SYMBOL_CLASS (sym));
11623       return 0;
11624     }
11625
11626   return 1;
11627 }
11628
11629 /* Inspect the Ada runtime and determine which exception info structure
11630    should be used to provide support for exception catchpoints.
11631
11632    This function will always set the per-inferior exception_info,
11633    or raise an error.  */
11634
11635 static void
11636 ada_exception_support_info_sniffer (void)
11637 {
11638   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11639
11640   /* If the exception info is already known, then no need to recompute it.  */
11641   if (data->exception_info != NULL)
11642     return;
11643
11644   /* Check the latest (default) exception support info.  */
11645   if (ada_has_this_exception_support (&default_exception_support_info))
11646     {
11647       data->exception_info = &default_exception_support_info;
11648       return;
11649     }
11650
11651   /* Try the v0 exception suport info.  */
11652   if (ada_has_this_exception_support (&exception_support_info_v0))
11653     {
11654       data->exception_info = &exception_support_info_v0;
11655       return;
11656     }
11657
11658   /* Try our fallback exception suport info.  */
11659   if (ada_has_this_exception_support (&exception_support_info_fallback))
11660     {
11661       data->exception_info = &exception_support_info_fallback;
11662       return;
11663     }
11664
11665   /* Sometimes, it is normal for us to not be able to find the routine
11666      we are looking for.  This happens when the program is linked with
11667      the shared version of the GNAT runtime, and the program has not been
11668      started yet.  Inform the user of these two possible causes if
11669      applicable.  */
11670
11671   if (ada_update_initial_language (language_unknown) != language_ada)
11672     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11673
11674   /* If the symbol does not exist, then check that the program is
11675      already started, to make sure that shared libraries have been
11676      loaded.  If it is not started, this may mean that the symbol is
11677      in a shared library.  */
11678
11679   if (inferior_ptid.pid () == 0)
11680     error (_("Unable to insert catchpoint. Try to start the program first."));
11681
11682   /* At this point, we know that we are debugging an Ada program and
11683      that the inferior has been started, but we still are not able to
11684      find the run-time symbols.  That can mean that we are in
11685      configurable run time mode, or that a-except as been optimized
11686      out by the linker...  In any case, at this point it is not worth
11687      supporting this feature.  */
11688
11689   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11690 }
11691
11692 /* True iff FRAME is very likely to be that of a function that is
11693    part of the runtime system.  This is all very heuristic, but is
11694    intended to be used as advice as to what frames are uninteresting
11695    to most users.  */
11696
11697 static int
11698 is_known_support_routine (struct frame_info *frame)
11699 {
11700   enum language func_lang;
11701   int i;
11702   const char *fullname;
11703
11704   /* If this code does not have any debugging information (no symtab),
11705      This cannot be any user code.  */
11706
11707   symtab_and_line sal = find_frame_sal (frame);
11708   if (sal.symtab == NULL)
11709     return 1;
11710
11711   /* If there is a symtab, but the associated source file cannot be
11712      located, then assume this is not user code:  Selecting a frame
11713      for which we cannot display the code would not be very helpful
11714      for the user.  This should also take care of case such as VxWorks
11715      where the kernel has some debugging info provided for a few units.  */
11716
11717   fullname = symtab_to_fullname (sal.symtab);
11718   if (access (fullname, R_OK) != 0)
11719     return 1;
11720
11721   /* Check the unit filename against the Ada runtime file naming.
11722      We also check the name of the objfile against the name of some
11723      known system libraries that sometimes come with debugging info
11724      too.  */
11725
11726   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11727     {
11728       re_comp (known_runtime_file_name_patterns[i]);
11729       if (re_exec (lbasename (sal.symtab->filename)))
11730         return 1;
11731       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11732           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11733         return 1;
11734     }
11735
11736   /* Check whether the function is a GNAT-generated entity.  */
11737
11738   gdb::unique_xmalloc_ptr<char> func_name
11739     = find_frame_funname (frame, &func_lang, NULL);
11740   if (func_name == NULL)
11741     return 1;
11742
11743   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11744     {
11745       re_comp (known_auxiliary_function_name_patterns[i]);
11746       if (re_exec (func_name.get ()))
11747         return 1;
11748     }
11749
11750   return 0;
11751 }
11752
11753 /* Find the first frame that contains debugging information and that is not
11754    part of the Ada run-time, starting from FI and moving upward.  */
11755
11756 void
11757 ada_find_printable_frame (struct frame_info *fi)
11758 {
11759   for (; fi != NULL; fi = get_prev_frame (fi))
11760     {
11761       if (!is_known_support_routine (fi))
11762         {
11763           select_frame (fi);
11764           break;
11765         }
11766     }
11767
11768 }
11769
11770 /* Assuming that the inferior just triggered an unhandled exception
11771    catchpoint, return the address in inferior memory where the name
11772    of the exception is stored.
11773    
11774    Return zero if the address could not be computed.  */
11775
11776 static CORE_ADDR
11777 ada_unhandled_exception_name_addr (void)
11778 {
11779   return parse_and_eval_address ("e.full_name");
11780 }
11781
11782 /* Same as ada_unhandled_exception_name_addr, except that this function
11783    should be used when the inferior uses an older version of the runtime,
11784    where the exception name needs to be extracted from a specific frame
11785    several frames up in the callstack.  */
11786
11787 static CORE_ADDR
11788 ada_unhandled_exception_name_addr_from_raise (void)
11789 {
11790   int frame_level;
11791   struct frame_info *fi;
11792   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11793
11794   /* To determine the name of this exception, we need to select
11795      the frame corresponding to RAISE_SYM_NAME.  This frame is
11796      at least 3 levels up, so we simply skip the first 3 frames
11797      without checking the name of their associated function.  */
11798   fi = get_current_frame ();
11799   for (frame_level = 0; frame_level < 3; frame_level += 1)
11800     if (fi != NULL)
11801       fi = get_prev_frame (fi); 
11802
11803   while (fi != NULL)
11804     {
11805       enum language func_lang;
11806
11807       gdb::unique_xmalloc_ptr<char> func_name
11808         = find_frame_funname (fi, &func_lang, NULL);
11809       if (func_name != NULL)
11810         {
11811           if (strcmp (func_name.get (),
11812                       data->exception_info->catch_exception_sym) == 0)
11813             break; /* We found the frame we were looking for...  */
11814         }
11815       fi = get_prev_frame (fi);
11816     }
11817
11818   if (fi == NULL)
11819     return 0;
11820
11821   select_frame (fi);
11822   return parse_and_eval_address ("id.full_name");
11823 }
11824
11825 /* Assuming the inferior just triggered an Ada exception catchpoint
11826    (of any type), return the address in inferior memory where the name
11827    of the exception is stored, if applicable.
11828
11829    Assumes the selected frame is the current frame.
11830
11831    Return zero if the address could not be computed, or if not relevant.  */
11832
11833 static CORE_ADDR
11834 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
11835                            struct breakpoint *b)
11836 {
11837   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11838
11839   switch (ex)
11840     {
11841       case ada_catch_exception:
11842         return (parse_and_eval_address ("e.full_name"));
11843         break;
11844
11845       case ada_catch_exception_unhandled:
11846         return data->exception_info->unhandled_exception_name_addr ();
11847         break;
11848
11849       case ada_catch_handlers:
11850         return 0;  /* The runtimes does not provide access to the exception
11851                       name.  */
11852         break;
11853
11854       case ada_catch_assert:
11855         return 0;  /* Exception name is not relevant in this case.  */
11856         break;
11857
11858       default:
11859         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
11860         break;
11861     }
11862
11863   return 0; /* Should never be reached.  */
11864 }
11865
11866 /* Assuming the inferior is stopped at an exception catchpoint,
11867    return the message which was associated to the exception, if
11868    available.  Return NULL if the message could not be retrieved.
11869
11870    Note: The exception message can be associated to an exception
11871    either through the use of the Raise_Exception function, or
11872    more simply (Ada 2005 and later), via:
11873
11874        raise Exception_Name with "exception message";
11875
11876    */
11877
11878 static gdb::unique_xmalloc_ptr<char>
11879 ada_exception_message_1 (void)
11880 {
11881   struct value *e_msg_val;
11882   int e_msg_len;
11883
11884   /* For runtimes that support this feature, the exception message
11885      is passed as an unbounded string argument called "message".  */
11886   e_msg_val = parse_and_eval ("message");
11887   if (e_msg_val == NULL)
11888     return NULL; /* Exception message not supported.  */
11889
11890   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
11891   gdb_assert (e_msg_val != NULL);
11892   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
11893
11894   /* If the message string is empty, then treat it as if there was
11895      no exception message.  */
11896   if (e_msg_len <= 0)
11897     return NULL;
11898
11899   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
11900   read_memory (value_address (e_msg_val), (gdb_byte *) e_msg.get (),
11901                e_msg_len);
11902   e_msg.get ()[e_msg_len] = '\0';
11903
11904   return e_msg;
11905 }
11906
11907 /* Same as ada_exception_message_1, except that all exceptions are
11908    contained here (returning NULL instead).  */
11909
11910 static gdb::unique_xmalloc_ptr<char>
11911 ada_exception_message (void)
11912 {
11913   gdb::unique_xmalloc_ptr<char> e_msg;
11914
11915   try
11916     {
11917       e_msg = ada_exception_message_1 ();
11918     }
11919   catch (const gdb_exception_error &e)
11920     {
11921       e_msg.reset (nullptr);
11922     }
11923
11924   return e_msg;
11925 }
11926
11927 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
11928    any error that ada_exception_name_addr_1 might cause to be thrown.
11929    When an error is intercepted, a warning with the error message is printed,
11930    and zero is returned.  */
11931
11932 static CORE_ADDR
11933 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
11934                          struct breakpoint *b)
11935 {
11936   CORE_ADDR result = 0;
11937
11938   try
11939     {
11940       result = ada_exception_name_addr_1 (ex, b);
11941     }
11942
11943   catch (const gdb_exception_error &e)
11944     {
11945       warning (_("failed to get exception name: %s"), e.what ());
11946       return 0;
11947     }
11948
11949   return result;
11950 }
11951
11952 static std::string ada_exception_catchpoint_cond_string
11953   (const char *excep_string,
11954    enum ada_exception_catchpoint_kind ex);
11955
11956 /* Ada catchpoints.
11957
11958    In the case of catchpoints on Ada exceptions, the catchpoint will
11959    stop the target on every exception the program throws.  When a user
11960    specifies the name of a specific exception, we translate this
11961    request into a condition expression (in text form), and then parse
11962    it into an expression stored in each of the catchpoint's locations.
11963    We then use this condition to check whether the exception that was
11964    raised is the one the user is interested in.  If not, then the
11965    target is resumed again.  We store the name of the requested
11966    exception, in order to be able to re-set the condition expression
11967    when symbols change.  */
11968
11969 /* An instance of this type is used to represent an Ada catchpoint
11970    breakpoint location.  */
11971
11972 class ada_catchpoint_location : public bp_location
11973 {
11974 public:
11975   ada_catchpoint_location (breakpoint *owner)
11976     : bp_location (owner, bp_loc_software_breakpoint)
11977   {}
11978
11979   /* The condition that checks whether the exception that was raised
11980      is the specific exception the user specified on catchpoint
11981      creation.  */
11982   expression_up excep_cond_expr;
11983 };
11984
11985 /* An instance of this type is used to represent an Ada catchpoint.  */
11986
11987 struct ada_catchpoint : public breakpoint
11988 {
11989   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
11990     : m_kind (kind)
11991   {
11992   }
11993
11994   /* The name of the specific exception the user specified.  */
11995   std::string excep_string;
11996
11997   /* What kind of catchpoint this is.  */
11998   enum ada_exception_catchpoint_kind m_kind;
11999 };
12000
12001 /* Parse the exception condition string in the context of each of the
12002    catchpoint's locations, and store them for later evaluation.  */
12003
12004 static void
12005 create_excep_cond_exprs (struct ada_catchpoint *c,
12006                          enum ada_exception_catchpoint_kind ex)
12007 {
12008   struct bp_location *bl;
12009
12010   /* Nothing to do if there's no specific exception to catch.  */
12011   if (c->excep_string.empty ())
12012     return;
12013
12014   /* Same if there are no locations... */
12015   if (c->loc == NULL)
12016     return;
12017
12018   /* Compute the condition expression in text form, from the specific
12019      expection we want to catch.  */
12020   std::string cond_string
12021     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12022
12023   /* Iterate over all the catchpoint's locations, and parse an
12024      expression for each.  */
12025   for (bl = c->loc; bl != NULL; bl = bl->next)
12026     {
12027       struct ada_catchpoint_location *ada_loc
12028         = (struct ada_catchpoint_location *) bl;
12029       expression_up exp;
12030
12031       if (!bl->shlib_disabled)
12032         {
12033           const char *s;
12034
12035           s = cond_string.c_str ();
12036           try
12037             {
12038               exp = parse_exp_1 (&s, bl->address,
12039                                  block_for_pc (bl->address),
12040                                  0);
12041             }
12042           catch (const gdb_exception_error &e)
12043             {
12044               warning (_("failed to reevaluate internal exception condition "
12045                          "for catchpoint %d: %s"),
12046                        c->number, e.what ());
12047             }
12048         }
12049
12050       ada_loc->excep_cond_expr = std::move (exp);
12051     }
12052 }
12053
12054 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12055    structure for all exception catchpoint kinds.  */
12056
12057 static struct bp_location *
12058 allocate_location_exception (struct breakpoint *self)
12059 {
12060   return new ada_catchpoint_location (self);
12061 }
12062
12063 /* Implement the RE_SET method in the breakpoint_ops structure for all
12064    exception catchpoint kinds.  */
12065
12066 static void
12067 re_set_exception (struct breakpoint *b)
12068 {
12069   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12070
12071   /* Call the base class's method.  This updates the catchpoint's
12072      locations.  */
12073   bkpt_breakpoint_ops.re_set (b);
12074
12075   /* Reparse the exception conditional expressions.  One for each
12076      location.  */
12077   create_excep_cond_exprs (c, c->m_kind);
12078 }
12079
12080 /* Returns true if we should stop for this breakpoint hit.  If the
12081    user specified a specific exception, we only want to cause a stop
12082    if the program thrown that exception.  */
12083
12084 static int
12085 should_stop_exception (const struct bp_location *bl)
12086 {
12087   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12088   const struct ada_catchpoint_location *ada_loc
12089     = (const struct ada_catchpoint_location *) bl;
12090   int stop;
12091
12092   struct internalvar *var = lookup_internalvar ("_ada_exception");
12093   if (c->m_kind == ada_catch_assert)
12094     clear_internalvar (var);
12095   else
12096     {
12097       try
12098         {
12099           const char *expr;
12100
12101           if (c->m_kind == ada_catch_handlers)
12102             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12103                     ".all.occurrence.id");
12104           else
12105             expr = "e";
12106
12107           struct value *exc = parse_and_eval (expr);
12108           set_internalvar (var, exc);
12109         }
12110       catch (const gdb_exception_error &ex)
12111         {
12112           clear_internalvar (var);
12113         }
12114     }
12115
12116   /* With no specific exception, should always stop.  */
12117   if (c->excep_string.empty ())
12118     return 1;
12119
12120   if (ada_loc->excep_cond_expr == NULL)
12121     {
12122       /* We will have a NULL expression if back when we were creating
12123          the expressions, this location's had failed to parse.  */
12124       return 1;
12125     }
12126
12127   stop = 1;
12128   try
12129     {
12130       struct value *mark;
12131
12132       mark = value_mark ();
12133       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12134       value_free_to_mark (mark);
12135     }
12136   catch (const gdb_exception &ex)
12137     {
12138       exception_fprintf (gdb_stderr, ex,
12139                          _("Error in testing exception condition:\n"));
12140     }
12141
12142   return stop;
12143 }
12144
12145 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12146    for all exception catchpoint kinds.  */
12147
12148 static void
12149 check_status_exception (bpstat bs)
12150 {
12151   bs->stop = should_stop_exception (bs->bp_location_at);
12152 }
12153
12154 /* Implement the PRINT_IT method in the breakpoint_ops structure
12155    for all exception catchpoint kinds.  */
12156
12157 static enum print_stop_action
12158 print_it_exception (bpstat bs)
12159 {
12160   struct ui_out *uiout = current_uiout;
12161   struct breakpoint *b = bs->breakpoint_at;
12162
12163   annotate_catchpoint (b->number);
12164
12165   if (uiout->is_mi_like_p ())
12166     {
12167       uiout->field_string ("reason",
12168                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12169       uiout->field_string ("disp", bpdisp_text (b->disposition));
12170     }
12171
12172   uiout->text (b->disposition == disp_del
12173                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12174   uiout->field_signed ("bkptno", b->number);
12175   uiout->text (", ");
12176
12177   /* ada_exception_name_addr relies on the selected frame being the
12178      current frame.  Need to do this here because this function may be
12179      called more than once when printing a stop, and below, we'll
12180      select the first frame past the Ada run-time (see
12181      ada_find_printable_frame).  */
12182   select_frame (get_current_frame ());
12183
12184   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12185   switch (c->m_kind)
12186     {
12187       case ada_catch_exception:
12188       case ada_catch_exception_unhandled:
12189       case ada_catch_handlers:
12190         {
12191           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12192           char exception_name[256];
12193
12194           if (addr != 0)
12195             {
12196               read_memory (addr, (gdb_byte *) exception_name,
12197                            sizeof (exception_name) - 1);
12198               exception_name [sizeof (exception_name) - 1] = '\0';
12199             }
12200           else
12201             {
12202               /* For some reason, we were unable to read the exception
12203                  name.  This could happen if the Runtime was compiled
12204                  without debugging info, for instance.  In that case,
12205                  just replace the exception name by the generic string
12206                  "exception" - it will read as "an exception" in the
12207                  notification we are about to print.  */
12208               memcpy (exception_name, "exception", sizeof ("exception"));
12209             }
12210           /* In the case of unhandled exception breakpoints, we print
12211              the exception name as "unhandled EXCEPTION_NAME", to make
12212              it clearer to the user which kind of catchpoint just got
12213              hit.  We used ui_out_text to make sure that this extra
12214              info does not pollute the exception name in the MI case.  */
12215           if (c->m_kind == ada_catch_exception_unhandled)
12216             uiout->text ("unhandled ");
12217           uiout->field_string ("exception-name", exception_name);
12218         }
12219         break;
12220       case ada_catch_assert:
12221         /* In this case, the name of the exception is not really
12222            important.  Just print "failed assertion" to make it clearer
12223            that his program just hit an assertion-failure catchpoint.
12224            We used ui_out_text because this info does not belong in
12225            the MI output.  */
12226         uiout->text ("failed assertion");
12227         break;
12228     }
12229
12230   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12231   if (exception_message != NULL)
12232     {
12233       uiout->text (" (");
12234       uiout->field_string ("exception-message", exception_message.get ());
12235       uiout->text (")");
12236     }
12237
12238   uiout->text (" at ");
12239   ada_find_printable_frame (get_current_frame ());
12240
12241   return PRINT_SRC_AND_LOC;
12242 }
12243
12244 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12245    for all exception catchpoint kinds.  */
12246
12247 static void
12248 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12249
12250   struct ui_out *uiout = current_uiout;
12251   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12252   struct value_print_options opts;
12253
12254   get_user_print_options (&opts);
12255
12256   if (opts.addressprint)
12257     uiout->field_skip ("addr");
12258
12259   annotate_field (5);
12260   switch (c->m_kind)
12261     {
12262       case ada_catch_exception:
12263         if (!c->excep_string.empty ())
12264           {
12265             std::string msg = string_printf (_("`%s' Ada exception"),
12266                                              c->excep_string.c_str ());
12267
12268             uiout->field_string ("what", msg);
12269           }
12270         else
12271           uiout->field_string ("what", "all Ada exceptions");
12272         
12273         break;
12274
12275       case ada_catch_exception_unhandled:
12276         uiout->field_string ("what", "unhandled Ada exceptions");
12277         break;
12278       
12279       case ada_catch_handlers:
12280         if (!c->excep_string.empty ())
12281           {
12282             uiout->field_fmt ("what",
12283                               _("`%s' Ada exception handlers"),
12284                               c->excep_string.c_str ());
12285           }
12286         else
12287           uiout->field_string ("what", "all Ada exceptions handlers");
12288         break;
12289
12290       case ada_catch_assert:
12291         uiout->field_string ("what", "failed Ada assertions");
12292         break;
12293
12294       default:
12295         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12296         break;
12297     }
12298 }
12299
12300 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12301    for all exception catchpoint kinds.  */
12302
12303 static void
12304 print_mention_exception (struct breakpoint *b)
12305 {
12306   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12307   struct ui_out *uiout = current_uiout;
12308
12309   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12310                                                  : _("Catchpoint "));
12311   uiout->field_signed ("bkptno", b->number);
12312   uiout->text (": ");
12313
12314   switch (c->m_kind)
12315     {
12316       case ada_catch_exception:
12317         if (!c->excep_string.empty ())
12318           {
12319             std::string info = string_printf (_("`%s' Ada exception"),
12320                                               c->excep_string.c_str ());
12321             uiout->text (info.c_str ());
12322           }
12323         else
12324           uiout->text (_("all Ada exceptions"));
12325         break;
12326
12327       case ada_catch_exception_unhandled:
12328         uiout->text (_("unhandled Ada exceptions"));
12329         break;
12330
12331       case ada_catch_handlers:
12332         if (!c->excep_string.empty ())
12333           {
12334             std::string info
12335               = string_printf (_("`%s' Ada exception handlers"),
12336                                c->excep_string.c_str ());
12337             uiout->text (info.c_str ());
12338           }
12339         else
12340           uiout->text (_("all Ada exceptions handlers"));
12341         break;
12342
12343       case ada_catch_assert:
12344         uiout->text (_("failed Ada assertions"));
12345         break;
12346
12347       default:
12348         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12349         break;
12350     }
12351 }
12352
12353 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12354    for all exception catchpoint kinds.  */
12355
12356 static void
12357 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12358 {
12359   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12360
12361   switch (c->m_kind)
12362     {
12363       case ada_catch_exception:
12364         fprintf_filtered (fp, "catch exception");
12365         if (!c->excep_string.empty ())
12366           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12367         break;
12368
12369       case ada_catch_exception_unhandled:
12370         fprintf_filtered (fp, "catch exception unhandled");
12371         break;
12372
12373       case ada_catch_handlers:
12374         fprintf_filtered (fp, "catch handlers");
12375         break;
12376
12377       case ada_catch_assert:
12378         fprintf_filtered (fp, "catch assert");
12379         break;
12380
12381       default:
12382         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12383     }
12384   print_recreate_thread (b, fp);
12385 }
12386
12387 /* Virtual tables for various breakpoint types.  */
12388 static struct breakpoint_ops catch_exception_breakpoint_ops;
12389 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12390 static struct breakpoint_ops catch_assert_breakpoint_ops;
12391 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12392
12393 /* See ada-lang.h.  */
12394
12395 bool
12396 is_ada_exception_catchpoint (breakpoint *bp)
12397 {
12398   return (bp->ops == &catch_exception_breakpoint_ops
12399           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12400           || bp->ops == &catch_assert_breakpoint_ops
12401           || bp->ops == &catch_handlers_breakpoint_ops);
12402 }
12403
12404 /* Split the arguments specified in a "catch exception" command.  
12405    Set EX to the appropriate catchpoint type.
12406    Set EXCEP_STRING to the name of the specific exception if
12407    specified by the user.
12408    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12409    "catch handlers" command.  False otherwise.
12410    If a condition is found at the end of the arguments, the condition
12411    expression is stored in COND_STRING (memory must be deallocated
12412    after use).  Otherwise COND_STRING is set to NULL.  */
12413
12414 static void
12415 catch_ada_exception_command_split (const char *args,
12416                                    bool is_catch_handlers_cmd,
12417                                    enum ada_exception_catchpoint_kind *ex,
12418                                    std::string *excep_string,
12419                                    std::string *cond_string)
12420 {
12421   std::string exception_name;
12422
12423   exception_name = extract_arg (&args);
12424   if (exception_name == "if")
12425     {
12426       /* This is not an exception name; this is the start of a condition
12427          expression for a catchpoint on all exceptions.  So, "un-get"
12428          this token, and set exception_name to NULL.  */
12429       exception_name.clear ();
12430       args -= 2;
12431     }
12432
12433   /* Check to see if we have a condition.  */
12434
12435   args = skip_spaces (args);
12436   if (startswith (args, "if")
12437       && (isspace (args[2]) || args[2] == '\0'))
12438     {
12439       args += 2;
12440       args = skip_spaces (args);
12441
12442       if (args[0] == '\0')
12443         error (_("Condition missing after `if' keyword"));
12444       *cond_string = args;
12445
12446       args += strlen (args);
12447     }
12448
12449   /* Check that we do not have any more arguments.  Anything else
12450      is unexpected.  */
12451
12452   if (args[0] != '\0')
12453     error (_("Junk at end of expression"));
12454
12455   if (is_catch_handlers_cmd)
12456     {
12457       /* Catch handling of exceptions.  */
12458       *ex = ada_catch_handlers;
12459       *excep_string = exception_name;
12460     }
12461   else if (exception_name.empty ())
12462     {
12463       /* Catch all exceptions.  */
12464       *ex = ada_catch_exception;
12465       excep_string->clear ();
12466     }
12467   else if (exception_name == "unhandled")
12468     {
12469       /* Catch unhandled exceptions.  */
12470       *ex = ada_catch_exception_unhandled;
12471       excep_string->clear ();
12472     }
12473   else
12474     {
12475       /* Catch a specific exception.  */
12476       *ex = ada_catch_exception;
12477       *excep_string = exception_name;
12478     }
12479 }
12480
12481 /* Return the name of the symbol on which we should break in order to
12482    implement a catchpoint of the EX kind.  */
12483
12484 static const char *
12485 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12486 {
12487   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12488
12489   gdb_assert (data->exception_info != NULL);
12490
12491   switch (ex)
12492     {
12493       case ada_catch_exception:
12494         return (data->exception_info->catch_exception_sym);
12495         break;
12496       case ada_catch_exception_unhandled:
12497         return (data->exception_info->catch_exception_unhandled_sym);
12498         break;
12499       case ada_catch_assert:
12500         return (data->exception_info->catch_assert_sym);
12501         break;
12502       case ada_catch_handlers:
12503         return (data->exception_info->catch_handlers_sym);
12504         break;
12505       default:
12506         internal_error (__FILE__, __LINE__,
12507                         _("unexpected catchpoint kind (%d)"), ex);
12508     }
12509 }
12510
12511 /* Return the breakpoint ops "virtual table" used for catchpoints
12512    of the EX kind.  */
12513
12514 static const struct breakpoint_ops *
12515 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12516 {
12517   switch (ex)
12518     {
12519       case ada_catch_exception:
12520         return (&catch_exception_breakpoint_ops);
12521         break;
12522       case ada_catch_exception_unhandled:
12523         return (&catch_exception_unhandled_breakpoint_ops);
12524         break;
12525       case ada_catch_assert:
12526         return (&catch_assert_breakpoint_ops);
12527         break;
12528       case ada_catch_handlers:
12529         return (&catch_handlers_breakpoint_ops);
12530         break;
12531       default:
12532         internal_error (__FILE__, __LINE__,
12533                         _("unexpected catchpoint kind (%d)"), ex);
12534     }
12535 }
12536
12537 /* Return the condition that will be used to match the current exception
12538    being raised with the exception that the user wants to catch.  This
12539    assumes that this condition is used when the inferior just triggered
12540    an exception catchpoint.
12541    EX: the type of catchpoints used for catching Ada exceptions.  */
12542
12543 static std::string
12544 ada_exception_catchpoint_cond_string (const char *excep_string,
12545                                       enum ada_exception_catchpoint_kind ex)
12546 {
12547   int i;
12548   bool is_standard_exc = false;
12549   std::string result;
12550
12551   if (ex == ada_catch_handlers)
12552     {
12553       /* For exception handlers catchpoints, the condition string does
12554          not use the same parameter as for the other exceptions.  */
12555       result = ("long_integer (GNAT_GCC_exception_Access"
12556                 "(gcc_exception).all.occurrence.id)");
12557     }
12558   else
12559     result = "long_integer (e)";
12560
12561   /* The standard exceptions are a special case.  They are defined in
12562      runtime units that have been compiled without debugging info; if
12563      EXCEP_STRING is the not-fully-qualified name of a standard
12564      exception (e.g. "constraint_error") then, during the evaluation
12565      of the condition expression, the symbol lookup on this name would
12566      *not* return this standard exception.  The catchpoint condition
12567      may then be set only on user-defined exceptions which have the
12568      same not-fully-qualified name (e.g. my_package.constraint_error).
12569
12570      To avoid this unexcepted behavior, these standard exceptions are
12571      systematically prefixed by "standard".  This means that "catch
12572      exception constraint_error" is rewritten into "catch exception
12573      standard.constraint_error".
12574
12575      If an exception named constraint_error is defined in another package of
12576      the inferior program, then the only way to specify this exception as a
12577      breakpoint condition is to use its fully-qualified named:
12578      e.g. my_package.constraint_error.  */
12579
12580   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12581     {
12582       if (strcmp (standard_exc [i], excep_string) == 0)
12583         {
12584           is_standard_exc = true;
12585           break;
12586         }
12587     }
12588
12589   result += " = ";
12590
12591   if (is_standard_exc)
12592     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12593   else
12594     string_appendf (result, "long_integer (&%s)", excep_string);
12595
12596   return result;
12597 }
12598
12599 /* Return the symtab_and_line that should be used to insert an exception
12600    catchpoint of the TYPE kind.
12601
12602    ADDR_STRING returns the name of the function where the real
12603    breakpoint that implements the catchpoints is set, depending on the
12604    type of catchpoint we need to create.  */
12605
12606 static struct symtab_and_line
12607 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12608                    std::string *addr_string, const struct breakpoint_ops **ops)
12609 {
12610   const char *sym_name;
12611   struct symbol *sym;
12612
12613   /* First, find out which exception support info to use.  */
12614   ada_exception_support_info_sniffer ();
12615
12616   /* Then lookup the function on which we will break in order to catch
12617      the Ada exceptions requested by the user.  */
12618   sym_name = ada_exception_sym_name (ex);
12619   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12620
12621   if (sym == NULL)
12622     error (_("Catchpoint symbol not found: %s"), sym_name);
12623
12624   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12625     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12626
12627   /* Set ADDR_STRING.  */
12628   *addr_string = sym_name;
12629
12630   /* Set OPS.  */
12631   *ops = ada_exception_breakpoint_ops (ex);
12632
12633   return find_function_start_sal (sym, 1);
12634 }
12635
12636 /* Create an Ada exception catchpoint.
12637
12638    EX_KIND is the kind of exception catchpoint to be created.
12639
12640    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12641    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12642    of the exception to which this catchpoint applies.
12643
12644    COND_STRING, if not empty, is the catchpoint condition.
12645
12646    TEMPFLAG, if nonzero, means that the underlying breakpoint
12647    should be temporary.
12648
12649    FROM_TTY is the usual argument passed to all commands implementations.  */
12650
12651 void
12652 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12653                                  enum ada_exception_catchpoint_kind ex_kind,
12654                                  const std::string &excep_string,
12655                                  const std::string &cond_string,
12656                                  int tempflag,
12657                                  int disabled,
12658                                  int from_tty)
12659 {
12660   std::string addr_string;
12661   const struct breakpoint_ops *ops = NULL;
12662   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12663
12664   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12665   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12666                                  ops, tempflag, disabled, from_tty);
12667   c->excep_string = excep_string;
12668   create_excep_cond_exprs (c.get (), ex_kind);
12669   if (!cond_string.empty ())
12670     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12671   install_breakpoint (0, std::move (c), 1);
12672 }
12673
12674 /* Implement the "catch exception" command.  */
12675
12676 static void
12677 catch_ada_exception_command (const char *arg_entry, int from_tty,
12678                              struct cmd_list_element *command)
12679 {
12680   const char *arg = arg_entry;
12681   struct gdbarch *gdbarch = get_current_arch ();
12682   int tempflag;
12683   enum ada_exception_catchpoint_kind ex_kind;
12684   std::string excep_string;
12685   std::string cond_string;
12686
12687   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12688
12689   if (!arg)
12690     arg = "";
12691   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12692                                      &cond_string);
12693   create_ada_exception_catchpoint (gdbarch, ex_kind,
12694                                    excep_string, cond_string,
12695                                    tempflag, 1 /* enabled */,
12696                                    from_tty);
12697 }
12698
12699 /* Implement the "catch handlers" command.  */
12700
12701 static void
12702 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12703                             struct cmd_list_element *command)
12704 {
12705   const char *arg = arg_entry;
12706   struct gdbarch *gdbarch = get_current_arch ();
12707   int tempflag;
12708   enum ada_exception_catchpoint_kind ex_kind;
12709   std::string excep_string;
12710   std::string cond_string;
12711
12712   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12713
12714   if (!arg)
12715     arg = "";
12716   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12717                                      &cond_string);
12718   create_ada_exception_catchpoint (gdbarch, ex_kind,
12719                                    excep_string, cond_string,
12720                                    tempflag, 1 /* enabled */,
12721                                    from_tty);
12722 }
12723
12724 /* Completion function for the Ada "catch" commands.  */
12725
12726 static void
12727 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12728                      const char *text, const char *word)
12729 {
12730   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12731
12732   for (const ada_exc_info &info : exceptions)
12733     {
12734       if (startswith (info.name, word))
12735         tracker.add_completion (make_unique_xstrdup (info.name));
12736     }
12737 }
12738
12739 /* Split the arguments specified in a "catch assert" command.
12740
12741    ARGS contains the command's arguments (or the empty string if
12742    no arguments were passed).
12743
12744    If ARGS contains a condition, set COND_STRING to that condition
12745    (the memory needs to be deallocated after use).  */
12746
12747 static void
12748 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12749 {
12750   args = skip_spaces (args);
12751
12752   /* Check whether a condition was provided.  */
12753   if (startswith (args, "if")
12754       && (isspace (args[2]) || args[2] == '\0'))
12755     {
12756       args += 2;
12757       args = skip_spaces (args);
12758       if (args[0] == '\0')
12759         error (_("condition missing after `if' keyword"));
12760       cond_string.assign (args);
12761     }
12762
12763   /* Otherwise, there should be no other argument at the end of
12764      the command.  */
12765   else if (args[0] != '\0')
12766     error (_("Junk at end of arguments."));
12767 }
12768
12769 /* Implement the "catch assert" command.  */
12770
12771 static void
12772 catch_assert_command (const char *arg_entry, int from_tty,
12773                       struct cmd_list_element *command)
12774 {
12775   const char *arg = arg_entry;
12776   struct gdbarch *gdbarch = get_current_arch ();
12777   int tempflag;
12778   std::string cond_string;
12779
12780   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12781
12782   if (!arg)
12783     arg = "";
12784   catch_ada_assert_command_split (arg, cond_string);
12785   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12786                                    "", cond_string,
12787                                    tempflag, 1 /* enabled */,
12788                                    from_tty);
12789 }
12790
12791 /* Return non-zero if the symbol SYM is an Ada exception object.  */
12792
12793 static int
12794 ada_is_exception_sym (struct symbol *sym)
12795 {
12796   const char *type_name = SYMBOL_TYPE (sym)->name ();
12797
12798   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
12799           && SYMBOL_CLASS (sym) != LOC_BLOCK
12800           && SYMBOL_CLASS (sym) != LOC_CONST
12801           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
12802           && type_name != NULL && strcmp (type_name, "exception") == 0);
12803 }
12804
12805 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
12806    Ada exception object.  This matches all exceptions except the ones
12807    defined by the Ada language.  */
12808
12809 static int
12810 ada_is_non_standard_exception_sym (struct symbol *sym)
12811 {
12812   int i;
12813
12814   if (!ada_is_exception_sym (sym))
12815     return 0;
12816
12817   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12818     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
12819       return 0;  /* A standard exception.  */
12820
12821   /* Numeric_Error is also a standard exception, so exclude it.
12822      See the STANDARD_EXC description for more details as to why
12823      this exception is not listed in that array.  */
12824   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
12825     return 0;
12826
12827   return 1;
12828 }
12829
12830 /* A helper function for std::sort, comparing two struct ada_exc_info
12831    objects.
12832
12833    The comparison is determined first by exception name, and then
12834    by exception address.  */
12835
12836 bool
12837 ada_exc_info::operator< (const ada_exc_info &other) const
12838 {
12839   int result;
12840
12841   result = strcmp (name, other.name);
12842   if (result < 0)
12843     return true;
12844   if (result == 0 && addr < other.addr)
12845     return true;
12846   return false;
12847 }
12848
12849 bool
12850 ada_exc_info::operator== (const ada_exc_info &other) const
12851 {
12852   return addr == other.addr && strcmp (name, other.name) == 0;
12853 }
12854
12855 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
12856    routine, but keeping the first SKIP elements untouched.
12857
12858    All duplicates are also removed.  */
12859
12860 static void
12861 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
12862                                       int skip)
12863 {
12864   std::sort (exceptions->begin () + skip, exceptions->end ());
12865   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
12866                      exceptions->end ());
12867 }
12868
12869 /* Add all exceptions defined by the Ada standard whose name match
12870    a regular expression.
12871
12872    If PREG is not NULL, then this regexp_t object is used to
12873    perform the symbol name matching.  Otherwise, no name-based
12874    filtering is performed.
12875
12876    EXCEPTIONS is a vector of exceptions to which matching exceptions
12877    gets pushed.  */
12878
12879 static void
12880 ada_add_standard_exceptions (compiled_regex *preg,
12881                              std::vector<ada_exc_info> *exceptions)
12882 {
12883   int i;
12884
12885   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
12886     {
12887       if (preg == NULL
12888           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
12889         {
12890           struct bound_minimal_symbol msymbol
12891             = ada_lookup_simple_minsym (standard_exc[i]);
12892
12893           if (msymbol.minsym != NULL)
12894             {
12895               struct ada_exc_info info
12896                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
12897
12898               exceptions->push_back (info);
12899             }
12900         }
12901     }
12902 }
12903
12904 /* Add all Ada exceptions defined locally and accessible from the given
12905    FRAME.
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_exceptions_from_frame (compiled_regex *preg,
12916                                struct frame_info *frame,
12917                                std::vector<ada_exc_info> *exceptions)
12918 {
12919   const struct block *block = get_frame_block (frame, 0);
12920
12921   while (block != 0)
12922     {
12923       struct block_iterator iter;
12924       struct symbol *sym;
12925
12926       ALL_BLOCK_SYMBOLS (block, iter, sym)
12927         {
12928           switch (SYMBOL_CLASS (sym))
12929             {
12930             case LOC_TYPEDEF:
12931             case LOC_BLOCK:
12932             case LOC_CONST:
12933               break;
12934             default:
12935               if (ada_is_exception_sym (sym))
12936                 {
12937                   struct ada_exc_info info = {sym->print_name (),
12938                                               SYMBOL_VALUE_ADDRESS (sym)};
12939
12940                   exceptions->push_back (info);
12941                 }
12942             }
12943         }
12944       if (BLOCK_FUNCTION (block) != NULL)
12945         break;
12946       block = BLOCK_SUPERBLOCK (block);
12947     }
12948 }
12949
12950 /* Return true if NAME matches PREG or if PREG is NULL.  */
12951
12952 static bool
12953 name_matches_regex (const char *name, compiled_regex *preg)
12954 {
12955   return (preg == NULL
12956           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
12957 }
12958
12959 /* Add all exceptions defined globally whose name name match
12960    a regular expression, excluding standard exceptions.
12961
12962    The reason we exclude standard exceptions is that they need
12963    to be handled separately: Standard exceptions are defined inside
12964    a runtime unit which is normally not compiled with debugging info,
12965    and thus usually do not show up in our symbol search.  However,
12966    if the unit was in fact built with debugging info, we need to
12967    exclude them because they would duplicate the entry we found
12968    during the special loop that specifically searches for those
12969    standard exceptions.
12970
12971    If PREG is not NULL, then this regexp_t object is used to
12972    perform the symbol name matching.  Otherwise, no name-based
12973    filtering is performed.
12974
12975    EXCEPTIONS is a vector of exceptions to which matching exceptions
12976    gets pushed.  */
12977
12978 static void
12979 ada_add_global_exceptions (compiled_regex *preg,
12980                            std::vector<ada_exc_info> *exceptions)
12981 {
12982   /* In Ada, the symbol "search name" is a linkage name, whereas the
12983      regular expression used to do the matching refers to the natural
12984      name.  So match against the decoded name.  */
12985   expand_symtabs_matching (NULL,
12986                            lookup_name_info::match_any (),
12987                            [&] (const char *search_name)
12988                            {
12989                              std::string decoded = ada_decode (search_name);
12990                              return name_matches_regex (decoded.c_str (), preg);
12991                            },
12992                            NULL,
12993                            VARIABLES_DOMAIN);
12994
12995   for (objfile *objfile : current_program_space->objfiles ())
12996     {
12997       for (compunit_symtab *s : objfile->compunits ())
12998         {
12999           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13000           int i;
13001
13002           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13003             {
13004               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13005               struct block_iterator iter;
13006               struct symbol *sym;
13007
13008               ALL_BLOCK_SYMBOLS (b, iter, sym)
13009                 if (ada_is_non_standard_exception_sym (sym)
13010                     && name_matches_regex (sym->natural_name (), preg))
13011                   {
13012                     struct ada_exc_info info
13013                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13014
13015                     exceptions->push_back (info);
13016                   }
13017             }
13018         }
13019     }
13020 }
13021
13022 /* Implements ada_exceptions_list with the regular expression passed
13023    as a regex_t, rather than a string.
13024
13025    If not NULL, PREG is used to filter out exceptions whose names
13026    do not match.  Otherwise, all exceptions are listed.  */
13027
13028 static std::vector<ada_exc_info>
13029 ada_exceptions_list_1 (compiled_regex *preg)
13030 {
13031   std::vector<ada_exc_info> result;
13032   int prev_len;
13033
13034   /* First, list the known standard exceptions.  These exceptions
13035      need to be handled separately, as they are usually defined in
13036      runtime units that have been compiled without debugging info.  */
13037
13038   ada_add_standard_exceptions (preg, &result);
13039
13040   /* Next, find all exceptions whose scope is local and accessible
13041      from the currently selected frame.  */
13042
13043   if (has_stack_frames ())
13044     {
13045       prev_len = result.size ();
13046       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13047                                      &result);
13048       if (result.size () > prev_len)
13049         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13050     }
13051
13052   /* Add all exceptions whose scope is global.  */
13053
13054   prev_len = result.size ();
13055   ada_add_global_exceptions (preg, &result);
13056   if (result.size () > prev_len)
13057     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13058
13059   return result;
13060 }
13061
13062 /* Return a vector of ada_exc_info.
13063
13064    If REGEXP is NULL, all exceptions are included in the result.
13065    Otherwise, it should contain a valid regular expression,
13066    and only the exceptions whose names match that regular expression
13067    are included in the result.
13068
13069    The exceptions are sorted in the following order:
13070      - Standard exceptions (defined by the Ada language), in
13071        alphabetical order;
13072      - Exceptions only visible from the current frame, in
13073        alphabetical order;
13074      - Exceptions whose scope is global, in alphabetical order.  */
13075
13076 std::vector<ada_exc_info>
13077 ada_exceptions_list (const char *regexp)
13078 {
13079   if (regexp == NULL)
13080     return ada_exceptions_list_1 (NULL);
13081
13082   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13083   return ada_exceptions_list_1 (&reg);
13084 }
13085
13086 /* Implement the "info exceptions" command.  */
13087
13088 static void
13089 info_exceptions_command (const char *regexp, int from_tty)
13090 {
13091   struct gdbarch *gdbarch = get_current_arch ();
13092
13093   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13094
13095   if (regexp != NULL)
13096     printf_filtered
13097       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13098   else
13099     printf_filtered (_("All defined Ada exceptions:\n"));
13100
13101   for (const ada_exc_info &info : exceptions)
13102     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13103 }
13104
13105                                 /* Operators */
13106 /* Information about operators given special treatment in functions
13107    below.  */
13108 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13109
13110 #define ADA_OPERATORS \
13111     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13112     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13113     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13114     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13115     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13116     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13117     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13118     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13119     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13120     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13121     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13122     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13123     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13124     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13125     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13126     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13127     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13128     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13129     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13130
13131 static void
13132 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13133                      int *argsp)
13134 {
13135   switch (exp->elts[pc - 1].opcode)
13136     {
13137     default:
13138       operator_length_standard (exp, pc, oplenp, argsp);
13139       break;
13140
13141 #define OP_DEFN(op, len, args, binop) \
13142     case op: *oplenp = len; *argsp = args; break;
13143       ADA_OPERATORS;
13144 #undef OP_DEFN
13145
13146     case OP_AGGREGATE:
13147       *oplenp = 3;
13148       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13149       break;
13150
13151     case OP_CHOICES:
13152       *oplenp = 3;
13153       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13154       break;
13155     }
13156 }
13157
13158 /* Implementation of the exp_descriptor method operator_check.  */
13159
13160 static int
13161 ada_operator_check (struct expression *exp, int pos,
13162                     int (*objfile_func) (struct objfile *objfile, void *data),
13163                     void *data)
13164 {
13165   const union exp_element *const elts = exp->elts;
13166   struct type *type = NULL;
13167
13168   switch (elts[pos].opcode)
13169     {
13170       case UNOP_IN_RANGE:
13171       case UNOP_QUAL:
13172         type = elts[pos + 1].type;
13173         break;
13174
13175       default:
13176         return operator_check_standard (exp, pos, objfile_func, data);
13177     }
13178
13179   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13180
13181   if (type && TYPE_OBJFILE (type)
13182       && (*objfile_func) (TYPE_OBJFILE (type), data))
13183     return 1;
13184
13185   return 0;
13186 }
13187
13188 static const char *
13189 ada_op_name (enum exp_opcode opcode)
13190 {
13191   switch (opcode)
13192     {
13193     default:
13194       return op_name_standard (opcode);
13195
13196 #define OP_DEFN(op, len, args, binop) case op: return #op;
13197       ADA_OPERATORS;
13198 #undef OP_DEFN
13199
13200     case OP_AGGREGATE:
13201       return "OP_AGGREGATE";
13202     case OP_CHOICES:
13203       return "OP_CHOICES";
13204     case OP_NAME:
13205       return "OP_NAME";
13206     }
13207 }
13208
13209 /* As for operator_length, but assumes PC is pointing at the first
13210    element of the operator, and gives meaningful results only for the 
13211    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13212
13213 static void
13214 ada_forward_operator_length (struct expression *exp, int pc,
13215                              int *oplenp, int *argsp)
13216 {
13217   switch (exp->elts[pc].opcode)
13218     {
13219     default:
13220       *oplenp = *argsp = 0;
13221       break;
13222
13223 #define OP_DEFN(op, len, args, binop) \
13224     case op: *oplenp = len; *argsp = args; break;
13225       ADA_OPERATORS;
13226 #undef OP_DEFN
13227
13228     case OP_AGGREGATE:
13229       *oplenp = 3;
13230       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13231       break;
13232
13233     case OP_CHOICES:
13234       *oplenp = 3;
13235       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13236       break;
13237
13238     case OP_STRING:
13239     case OP_NAME:
13240       {
13241         int len = longest_to_int (exp->elts[pc + 1].longconst);
13242
13243         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13244         *argsp = 0;
13245         break;
13246       }
13247     }
13248 }
13249
13250 static int
13251 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13252 {
13253   enum exp_opcode op = exp->elts[elt].opcode;
13254   int oplen, nargs;
13255   int pc = elt;
13256   int i;
13257
13258   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13259
13260   switch (op)
13261     {
13262       /* Ada attributes ('Foo).  */
13263     case OP_ATR_FIRST:
13264     case OP_ATR_LAST:
13265     case OP_ATR_LENGTH:
13266     case OP_ATR_IMAGE:
13267     case OP_ATR_MAX:
13268     case OP_ATR_MIN:
13269     case OP_ATR_MODULUS:
13270     case OP_ATR_POS:
13271     case OP_ATR_SIZE:
13272     case OP_ATR_TAG:
13273     case OP_ATR_VAL:
13274       break;
13275
13276     case UNOP_IN_RANGE:
13277     case UNOP_QUAL:
13278       /* XXX: gdb_sprint_host_address, type_sprint */
13279       fprintf_filtered (stream, _("Type @"));
13280       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13281       fprintf_filtered (stream, " (");
13282       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13283       fprintf_filtered (stream, ")");
13284       break;
13285     case BINOP_IN_BOUNDS:
13286       fprintf_filtered (stream, " (%d)",
13287                         longest_to_int (exp->elts[pc + 2].longconst));
13288       break;
13289     case TERNOP_IN_RANGE:
13290       break;
13291
13292     case OP_AGGREGATE:
13293     case OP_OTHERS:
13294     case OP_DISCRETE_RANGE:
13295     case OP_POSITIONAL:
13296     case OP_CHOICES:
13297       break;
13298
13299     case OP_NAME:
13300     case OP_STRING:
13301       {
13302         char *name = &exp->elts[elt + 2].string;
13303         int len = longest_to_int (exp->elts[elt + 1].longconst);
13304
13305         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13306         break;
13307       }
13308
13309     default:
13310       return dump_subexp_body_standard (exp, stream, elt);
13311     }
13312
13313   elt += oplen;
13314   for (i = 0; i < nargs; i += 1)
13315     elt = dump_subexp (exp, stream, elt);
13316
13317   return elt;
13318 }
13319
13320 /* The Ada extension of print_subexp (q.v.).  */
13321
13322 static void
13323 ada_print_subexp (struct expression *exp, int *pos,
13324                   struct ui_file *stream, enum precedence prec)
13325 {
13326   int oplen, nargs, i;
13327   int pc = *pos;
13328   enum exp_opcode op = exp->elts[pc].opcode;
13329
13330   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13331
13332   *pos += oplen;
13333   switch (op)
13334     {
13335     default:
13336       *pos -= oplen;
13337       print_subexp_standard (exp, pos, stream, prec);
13338       return;
13339
13340     case OP_VAR_VALUE:
13341       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13342       return;
13343
13344     case BINOP_IN_BOUNDS:
13345       /* XXX: sprint_subexp */
13346       print_subexp (exp, pos, stream, PREC_SUFFIX);
13347       fputs_filtered (" in ", stream);
13348       print_subexp (exp, pos, stream, PREC_SUFFIX);
13349       fputs_filtered ("'range", stream);
13350       if (exp->elts[pc + 1].longconst > 1)
13351         fprintf_filtered (stream, "(%ld)",
13352                           (long) exp->elts[pc + 1].longconst);
13353       return;
13354
13355     case TERNOP_IN_RANGE:
13356       if (prec >= PREC_EQUAL)
13357         fputs_filtered ("(", stream);
13358       /* XXX: sprint_subexp */
13359       print_subexp (exp, pos, stream, PREC_SUFFIX);
13360       fputs_filtered (" in ", stream);
13361       print_subexp (exp, pos, stream, PREC_EQUAL);
13362       fputs_filtered (" .. ", stream);
13363       print_subexp (exp, pos, stream, PREC_EQUAL);
13364       if (prec >= PREC_EQUAL)
13365         fputs_filtered (")", stream);
13366       return;
13367
13368     case OP_ATR_FIRST:
13369     case OP_ATR_LAST:
13370     case OP_ATR_LENGTH:
13371     case OP_ATR_IMAGE:
13372     case OP_ATR_MAX:
13373     case OP_ATR_MIN:
13374     case OP_ATR_MODULUS:
13375     case OP_ATR_POS:
13376     case OP_ATR_SIZE:
13377     case OP_ATR_TAG:
13378     case OP_ATR_VAL:
13379       if (exp->elts[*pos].opcode == OP_TYPE)
13380         {
13381           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13382             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13383                            &type_print_raw_options);
13384           *pos += 3;
13385         }
13386       else
13387         print_subexp (exp, pos, stream, PREC_SUFFIX);
13388       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13389       if (nargs > 1)
13390         {
13391           int tem;
13392
13393           for (tem = 1; tem < nargs; tem += 1)
13394             {
13395               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13396               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13397             }
13398           fputs_filtered (")", stream);
13399         }
13400       return;
13401
13402     case UNOP_QUAL:
13403       type_print (exp->elts[pc + 1].type, "", stream, 0);
13404       fputs_filtered ("'(", stream);
13405       print_subexp (exp, pos, stream, PREC_PREFIX);
13406       fputs_filtered (")", stream);
13407       return;
13408
13409     case UNOP_IN_RANGE:
13410       /* XXX: sprint_subexp */
13411       print_subexp (exp, pos, stream, PREC_SUFFIX);
13412       fputs_filtered (" in ", stream);
13413       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13414                      &type_print_raw_options);
13415       return;
13416
13417     case OP_DISCRETE_RANGE:
13418       print_subexp (exp, pos, stream, PREC_SUFFIX);
13419       fputs_filtered ("..", stream);
13420       print_subexp (exp, pos, stream, PREC_SUFFIX);
13421       return;
13422
13423     case OP_OTHERS:
13424       fputs_filtered ("others => ", stream);
13425       print_subexp (exp, pos, stream, PREC_SUFFIX);
13426       return;
13427
13428     case OP_CHOICES:
13429       for (i = 0; i < nargs-1; i += 1)
13430         {
13431           if (i > 0)
13432             fputs_filtered ("|", stream);
13433           print_subexp (exp, pos, stream, PREC_SUFFIX);
13434         }
13435       fputs_filtered (" => ", stream);
13436       print_subexp (exp, pos, stream, PREC_SUFFIX);
13437       return;
13438       
13439     case OP_POSITIONAL:
13440       print_subexp (exp, pos, stream, PREC_SUFFIX);
13441       return;
13442
13443     case OP_AGGREGATE:
13444       fputs_filtered ("(", stream);
13445       for (i = 0; i < nargs; i += 1)
13446         {
13447           if (i > 0)
13448             fputs_filtered (", ", stream);
13449           print_subexp (exp, pos, stream, PREC_SUFFIX);
13450         }
13451       fputs_filtered (")", stream);
13452       return;
13453     }
13454 }
13455
13456 /* Table mapping opcodes into strings for printing operators
13457    and precedences of the operators.  */
13458
13459 static const struct op_print ada_op_print_tab[] = {
13460   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13461   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13462   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13463   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13464   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13465   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13466   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13467   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13468   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13469   {">=", BINOP_GEQ, PREC_ORDER, 0},
13470   {">", BINOP_GTR, PREC_ORDER, 0},
13471   {"<", BINOP_LESS, PREC_ORDER, 0},
13472   {">>", BINOP_RSH, PREC_SHIFT, 0},
13473   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13474   {"+", BINOP_ADD, PREC_ADD, 0},
13475   {"-", BINOP_SUB, PREC_ADD, 0},
13476   {"&", BINOP_CONCAT, PREC_ADD, 0},
13477   {"*", BINOP_MUL, PREC_MUL, 0},
13478   {"/", BINOP_DIV, PREC_MUL, 0},
13479   {"rem", BINOP_REM, PREC_MUL, 0},
13480   {"mod", BINOP_MOD, PREC_MUL, 0},
13481   {"**", BINOP_EXP, PREC_REPEAT, 0},
13482   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13483   {"-", UNOP_NEG, PREC_PREFIX, 0},
13484   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13485   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13486   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13487   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13488   {".all", UNOP_IND, PREC_SUFFIX, 1},
13489   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13490   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13491   {NULL, OP_NULL, PREC_SUFFIX, 0}
13492 };
13493 \f
13494 enum ada_primitive_types {
13495   ada_primitive_type_int,
13496   ada_primitive_type_long,
13497   ada_primitive_type_short,
13498   ada_primitive_type_char,
13499   ada_primitive_type_float,
13500   ada_primitive_type_double,
13501   ada_primitive_type_void,
13502   ada_primitive_type_long_long,
13503   ada_primitive_type_long_double,
13504   ada_primitive_type_natural,
13505   ada_primitive_type_positive,
13506   ada_primitive_type_system_address,
13507   ada_primitive_type_storage_offset,
13508   nr_ada_primitive_types
13509 };
13510
13511 \f
13512                                 /* Language vector */
13513
13514 static const struct exp_descriptor ada_exp_descriptor = {
13515   ada_print_subexp,
13516   ada_operator_length,
13517   ada_operator_check,
13518   ada_op_name,
13519   ada_dump_subexp_body,
13520   ada_evaluate_subexp
13521 };
13522
13523 /* symbol_name_matcher_ftype adapter for wild_match.  */
13524
13525 static bool
13526 do_wild_match (const char *symbol_search_name,
13527                const lookup_name_info &lookup_name,
13528                completion_match_result *comp_match_res)
13529 {
13530   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13531 }
13532
13533 /* symbol_name_matcher_ftype adapter for full_match.  */
13534
13535 static bool
13536 do_full_match (const char *symbol_search_name,
13537                const lookup_name_info &lookup_name,
13538                completion_match_result *comp_match_res)
13539 {
13540   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13541 }
13542
13543 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13544
13545 static bool
13546 do_exact_match (const char *symbol_search_name,
13547                 const lookup_name_info &lookup_name,
13548                 completion_match_result *comp_match_res)
13549 {
13550   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13551 }
13552
13553 /* Build the Ada lookup name for LOOKUP_NAME.  */
13554
13555 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13556 {
13557   gdb::string_view user_name = lookup_name.name ();
13558
13559   if (user_name[0] == '<')
13560     {
13561       if (user_name.back () == '>')
13562         m_encoded_name
13563           = gdb::to_string (user_name.substr (1, user_name.size () - 2));
13564       else
13565         m_encoded_name
13566           = gdb::to_string (user_name.substr (1, user_name.size () - 1));
13567       m_encoded_p = true;
13568       m_verbatim_p = true;
13569       m_wild_match_p = false;
13570       m_standard_p = false;
13571     }
13572   else
13573     {
13574       m_verbatim_p = false;
13575
13576       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13577
13578       if (!m_encoded_p)
13579         {
13580           const char *folded = ada_fold_name (user_name);
13581           const char *encoded = ada_encode_1 (folded, false);
13582           if (encoded != NULL)
13583             m_encoded_name = encoded;
13584           else
13585             m_encoded_name = gdb::to_string (user_name);
13586         }
13587       else
13588         m_encoded_name = gdb::to_string (user_name);
13589
13590       /* Handle the 'package Standard' special case.  See description
13591          of m_standard_p.  */
13592       if (startswith (m_encoded_name.c_str (), "standard__"))
13593         {
13594           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13595           m_standard_p = true;
13596         }
13597       else
13598         m_standard_p = false;
13599
13600       /* If the name contains a ".", then the user is entering a fully
13601          qualified entity name, and the match must not be done in wild
13602          mode.  Similarly, if the user wants to complete what looks
13603          like an encoded name, the match must not be done in wild
13604          mode.  Also, in the standard__ special case always do
13605          non-wild matching.  */
13606       m_wild_match_p
13607         = (lookup_name.match_type () != symbol_name_match_type::FULL
13608            && !m_encoded_p
13609            && !m_standard_p
13610            && user_name.find ('.') == std::string::npos);
13611     }
13612 }
13613
13614 /* symbol_name_matcher_ftype method for Ada.  This only handles
13615    completion mode.  */
13616
13617 static bool
13618 ada_symbol_name_matches (const char *symbol_search_name,
13619                          const lookup_name_info &lookup_name,
13620                          completion_match_result *comp_match_res)
13621 {
13622   return lookup_name.ada ().matches (symbol_search_name,
13623                                      lookup_name.match_type (),
13624                                      comp_match_res);
13625 }
13626
13627 /* A name matcher that matches the symbol name exactly, with
13628    strcmp.  */
13629
13630 static bool
13631 literal_symbol_name_matcher (const char *symbol_search_name,
13632                              const lookup_name_info &lookup_name,
13633                              completion_match_result *comp_match_res)
13634 {
13635   gdb::string_view name_view = lookup_name.name ();
13636
13637   if (lookup_name.completion_mode ()
13638       ? (strncmp (symbol_search_name, name_view.data (),
13639                   name_view.size ()) == 0)
13640       : symbol_search_name == name_view)
13641     {
13642       if (comp_match_res != NULL)
13643         comp_match_res->set_match (symbol_search_name);
13644       return true;
13645     }
13646   else
13647     return false;
13648 }
13649
13650 /* Implement the "get_symbol_name_matcher" language_defn method for
13651    Ada.  */
13652
13653 static symbol_name_matcher_ftype *
13654 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13655 {
13656   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13657     return literal_symbol_name_matcher;
13658
13659   if (lookup_name.completion_mode ())
13660     return ada_symbol_name_matches;
13661   else
13662     {
13663       if (lookup_name.ada ().wild_match_p ())
13664         return do_wild_match;
13665       else if (lookup_name.ada ().verbatim_p ())
13666         return do_exact_match;
13667       else
13668         return do_full_match;
13669     }
13670 }
13671
13672 static const char *ada_extensions[] =
13673 {
13674   ".adb", ".ads", ".a", ".ada", ".dg", NULL
13675 };
13676
13677 /* Constant data that describes the Ada language.  */
13678
13679 extern const struct language_data ada_language_data =
13680 {
13681   "ada",                        /* Language name */
13682   "Ada",
13683   language_ada,
13684   range_check_off,
13685   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13686                                    that's not quite what this means.  */
13687   array_row_major,
13688   macro_expansion_no,
13689   ada_extensions,
13690   &ada_exp_descriptor,
13691   NULL,                         /* name_of_this */
13692   true,                         /* la_store_sym_names_in_linkage_form_p */
13693   ada_op_print_tab,             /* expression operators for printing */
13694   0,                            /* c-style arrays */
13695   1,                            /* String lower bound */
13696   &ada_varobj_ops,
13697   "(...)"                       /* la_struct_too_deep_ellipsis */
13698 };
13699
13700 /* Class representing the Ada language.  */
13701
13702 class ada_language : public language_defn
13703 {
13704 public:
13705   ada_language ()
13706     : language_defn (language_ada, ada_language_data)
13707   { /* Nothing.  */ }
13708
13709   /* Print an array element index using the Ada syntax.  */
13710
13711   void print_array_index (struct type *index_type,
13712                           LONGEST index,
13713                           struct ui_file *stream,
13714                           const value_print_options *options) const override
13715   {
13716     struct value *index_value = val_atr (index_type, index);
13717
13718     LA_VALUE_PRINT (index_value, stream, options);
13719     fprintf_filtered (stream, " => ");
13720   }
13721
13722   /* Implement the "read_var_value" language_defn method for Ada.  */
13723
13724   struct value *read_var_value (struct symbol *var,
13725                                 const struct block *var_block,
13726                                 struct frame_info *frame) const override
13727   {
13728     /* The only case where default_read_var_value is not sufficient
13729        is when VAR is a renaming...  */
13730     if (frame != nullptr)
13731       {
13732         const struct block *frame_block = get_frame_block (frame, NULL);
13733         if (frame_block != nullptr && ada_is_renaming_symbol (var))
13734           return ada_read_renaming_var_value (var, frame_block);
13735       }
13736
13737     /* This is a typical case where we expect the default_read_var_value
13738        function to work.  */
13739     return language_defn::read_var_value (var, var_block, frame);
13740   }
13741
13742   /* See language.h.  */
13743   void language_arch_info (struct gdbarch *gdbarch,
13744                            struct language_arch_info *lai) const override
13745   {
13746     const struct builtin_type *builtin = builtin_type (gdbarch);
13747
13748     lai->primitive_type_vector
13749       = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13750                                 struct type *);
13751
13752     lai->primitive_type_vector [ada_primitive_type_int]
13753       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13754                            0, "integer");
13755     lai->primitive_type_vector [ada_primitive_type_long]
13756       = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13757                            0, "long_integer");
13758     lai->primitive_type_vector [ada_primitive_type_short]
13759       = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13760                            0, "short_integer");
13761     lai->string_char_type
13762       = lai->primitive_type_vector [ada_primitive_type_char]
13763       = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13764     lai->primitive_type_vector [ada_primitive_type_float]
13765       = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13766                          "float", gdbarch_float_format (gdbarch));
13767     lai->primitive_type_vector [ada_primitive_type_double]
13768       = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13769                          "long_float", gdbarch_double_format (gdbarch));
13770     lai->primitive_type_vector [ada_primitive_type_long_long]
13771       = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13772                            0, "long_long_integer");
13773     lai->primitive_type_vector [ada_primitive_type_long_double]
13774       = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13775                          "long_long_float", gdbarch_long_double_format (gdbarch));
13776     lai->primitive_type_vector [ada_primitive_type_natural]
13777       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13778                            0, "natural");
13779     lai->primitive_type_vector [ada_primitive_type_positive]
13780       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13781                            0, "positive");
13782     lai->primitive_type_vector [ada_primitive_type_void]
13783       = builtin->builtin_void;
13784
13785     lai->primitive_type_vector [ada_primitive_type_system_address]
13786       = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13787                                         "void"));
13788     lai->primitive_type_vector [ada_primitive_type_system_address]
13789       ->set_name ("system__address");
13790
13791     /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13792        type.  This is a signed integral type whose size is the same as
13793        the size of addresses.  */
13794     {
13795       unsigned int addr_length = TYPE_LENGTH
13796         (lai->primitive_type_vector [ada_primitive_type_system_address]);
13797
13798       lai->primitive_type_vector [ada_primitive_type_storage_offset]
13799         = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13800                              "storage_offset");
13801     }
13802
13803     lai->bool_type_symbol = NULL;
13804     lai->bool_type_default = builtin->builtin_bool;
13805   }
13806
13807   /* See language.h.  */
13808
13809   bool iterate_over_symbols
13810         (const struct block *block, const lookup_name_info &name,
13811          domain_enum domain,
13812          gdb::function_view<symbol_found_callback_ftype> callback) const override
13813   {
13814     std::vector<struct block_symbol> results;
13815
13816     ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
13817     for (block_symbol &sym : results)
13818       {
13819         if (!callback (&sym))
13820           return false;
13821       }
13822
13823     return true;
13824   }
13825
13826   /* See language.h.  */
13827   bool sniff_from_mangled_name (const char *mangled,
13828                                 char **out) const override
13829   {
13830     std::string demangled = ada_decode (mangled);
13831
13832     *out = NULL;
13833
13834     if (demangled != mangled && demangled[0] != '<')
13835       {
13836         /* Set the gsymbol language to Ada, but still return 0.
13837            Two reasons for that:
13838
13839            1. For Ada, we prefer computing the symbol's decoded name
13840            on the fly rather than pre-compute it, in order to save
13841            memory (Ada projects are typically very large).
13842
13843            2. There are some areas in the definition of the GNAT
13844            encoding where, with a bit of bad luck, we might be able
13845            to decode a non-Ada symbol, generating an incorrect
13846            demangled name (Eg: names ending with "TB" for instance
13847            are identified as task bodies and so stripped from
13848            the decoded name returned).
13849
13850            Returning true, here, but not setting *DEMANGLED, helps us get
13851            a little bit of the best of both worlds.  Because we're last,
13852            we should not affect any of the other languages that were
13853            able to demangle the symbol before us; we get to correctly
13854            tag Ada symbols as such; and even if we incorrectly tagged a
13855            non-Ada symbol, which should be rare, any routing through the
13856            Ada language should be transparent (Ada tries to behave much
13857            like C/C++ with non-Ada symbols).  */
13858         return true;
13859       }
13860
13861     return false;
13862   }
13863
13864   /* See language.h.  */
13865
13866   char *demangle (const char *mangled, int options) const override
13867   {
13868     return ada_la_decode (mangled, options);
13869   }
13870
13871   /* See language.h.  */
13872
13873   void print_type (struct type *type, const char *varstring,
13874                    struct ui_file *stream, int show, int level,
13875                    const struct type_print_options *flags) const override
13876   {
13877     ada_print_type (type, varstring, stream, show, level, flags);
13878   }
13879
13880   /* See language.h.  */
13881
13882   const char *word_break_characters (void) const override
13883   {
13884     return ada_completer_word_break_characters;
13885   }
13886
13887   /* See language.h.  */
13888
13889   void collect_symbol_completion_matches (completion_tracker &tracker,
13890                                           complete_symbol_mode mode,
13891                                           symbol_name_match_type name_match_type,
13892                                           const char *text, const char *word,
13893                                           enum type_code code) const override
13894   {
13895     struct symbol *sym;
13896     const struct block *b, *surrounding_static_block = 0;
13897     struct block_iterator iter;
13898
13899     gdb_assert (code == TYPE_CODE_UNDEF);
13900
13901     lookup_name_info lookup_name (text, name_match_type, true);
13902
13903     /* First, look at the partial symtab symbols.  */
13904     expand_symtabs_matching (NULL,
13905                              lookup_name,
13906                              NULL,
13907                              NULL,
13908                              ALL_DOMAIN);
13909
13910     /* At this point scan through the misc symbol vectors and add each
13911        symbol you find to the list.  Eventually we want to ignore
13912        anything that isn't a text symbol (everything else will be
13913        handled by the psymtab code above).  */
13914
13915     for (objfile *objfile : current_program_space->objfiles ())
13916       {
13917         for (minimal_symbol *msymbol : objfile->msymbols ())
13918           {
13919             QUIT;
13920
13921             if (completion_skip_symbol (mode, msymbol))
13922               continue;
13923
13924             language symbol_language = msymbol->language ();
13925
13926             /* Ada minimal symbols won't have their language set to Ada.  If
13927                we let completion_list_add_name compare using the
13928                default/C-like matcher, then when completing e.g., symbols in a
13929                package named "pck", we'd match internal Ada symbols like
13930                "pckS", which are invalid in an Ada expression, unless you wrap
13931                them in '<' '>' to request a verbatim match.
13932
13933                Unfortunately, some Ada encoded names successfully demangle as
13934                C++ symbols (using an old mangling scheme), such as "name__2Xn"
13935                -> "Xn::name(void)" and thus some Ada minimal symbols end up
13936                with the wrong language set.  Paper over that issue here.  */
13937             if (symbol_language == language_auto
13938                 || symbol_language == language_cplus)
13939               symbol_language = language_ada;
13940
13941             completion_list_add_name (tracker,
13942                                       symbol_language,
13943                                       msymbol->linkage_name (),
13944                                       lookup_name, text, word);
13945           }
13946       }
13947
13948     /* Search upwards from currently selected frame (so that we can
13949        complete on local vars.  */
13950
13951     for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
13952       {
13953         if (!BLOCK_SUPERBLOCK (b))
13954           surrounding_static_block = b;   /* For elmin of dups */
13955
13956         ALL_BLOCK_SYMBOLS (b, iter, sym)
13957           {
13958             if (completion_skip_symbol (mode, sym))
13959               continue;
13960
13961             completion_list_add_name (tracker,
13962                                       sym->language (),
13963                                       sym->linkage_name (),
13964                                       lookup_name, text, word);
13965           }
13966       }
13967
13968     /* Go through the symtabs and check the externs and statics for
13969        symbols which match.  */
13970
13971     for (objfile *objfile : current_program_space->objfiles ())
13972       {
13973         for (compunit_symtab *s : objfile->compunits ())
13974           {
13975             QUIT;
13976             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
13977             ALL_BLOCK_SYMBOLS (b, iter, sym)
13978               {
13979                 if (completion_skip_symbol (mode, sym))
13980                   continue;
13981
13982                 completion_list_add_name (tracker,
13983                                           sym->language (),
13984                                           sym->linkage_name (),
13985                                           lookup_name, text, word);
13986               }
13987           }
13988       }
13989
13990     for (objfile *objfile : current_program_space->objfiles ())
13991       {
13992         for (compunit_symtab *s : objfile->compunits ())
13993           {
13994             QUIT;
13995             b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
13996             /* Don't do this block twice.  */
13997             if (b == surrounding_static_block)
13998               continue;
13999             ALL_BLOCK_SYMBOLS (b, iter, sym)
14000               {
14001                 if (completion_skip_symbol (mode, sym))
14002                   continue;
14003
14004                 completion_list_add_name (tracker,
14005                                           sym->language (),
14006                                           sym->linkage_name (),
14007                                           lookup_name, text, word);
14008               }
14009           }
14010       }
14011   }
14012
14013   /* See language.h.  */
14014
14015   gdb::unique_xmalloc_ptr<char> watch_location_expression
14016         (struct type *type, CORE_ADDR addr) const override
14017   {
14018     type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
14019     std::string name = type_to_string (type);
14020     return gdb::unique_xmalloc_ptr<char>
14021       (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
14022   }
14023
14024   /* See language.h.  */
14025
14026   void value_print (struct value *val, struct ui_file *stream,
14027                     const struct value_print_options *options) const override
14028   {
14029     return ada_value_print (val, stream, options);
14030   }
14031
14032   /* See language.h.  */
14033
14034   void value_print_inner
14035         (struct value *val, struct ui_file *stream, int recurse,
14036          const struct value_print_options *options) const override
14037   {
14038     return ada_value_print_inner (val, stream, recurse, options);
14039   }
14040
14041   /* See language.h.  */
14042
14043   struct block_symbol lookup_symbol_nonlocal
14044         (const char *name, const struct block *block,
14045          const domain_enum domain) const override
14046   {
14047     struct block_symbol sym;
14048
14049     sym = ada_lookup_symbol (name, block_static_block (block), domain);
14050     if (sym.symbol != NULL)
14051       return sym;
14052
14053     /* If we haven't found a match at this point, try the primitive
14054        types.  In other languages, this search is performed before
14055        searching for global symbols in order to short-circuit that
14056        global-symbol search if it happens that the name corresponds
14057        to a primitive type.  But we cannot do the same in Ada, because
14058        it is perfectly legitimate for a program to declare a type which
14059        has the same name as a standard type.  If looking up a type in
14060        that situation, we have traditionally ignored the primitive type
14061        in favor of user-defined types.  This is why, unlike most other
14062        languages, we search the primitive types this late and only after
14063        having searched the global symbols without success.  */
14064
14065     if (domain == VAR_DOMAIN)
14066       {
14067         struct gdbarch *gdbarch;
14068
14069         if (block == NULL)
14070           gdbarch = target_gdbarch ();
14071         else
14072           gdbarch = block_gdbarch (block);
14073         sym.symbol
14074           = language_lookup_primitive_type_as_symbol (this, gdbarch, name);
14075         if (sym.symbol != NULL)
14076           return sym;
14077       }
14078
14079     return {};
14080   }
14081
14082   /* See language.h.  */
14083
14084   int parser (struct parser_state *ps) const override
14085   {
14086     warnings_issued = 0;
14087     return ada_parse (ps);
14088   }
14089
14090   /* See language.h.
14091
14092      Same as evaluate_type (*EXP), but resolves ambiguous symbol references
14093      (marked by OP_VAR_VALUE nodes in which the symbol has an undefined
14094      namespace) and converts operators that are user-defined into
14095      appropriate function calls.  If CONTEXT_TYPE is non-null, it provides
14096      a preferred result type [at the moment, only type void has any
14097      effect---causing procedures to be preferred over functions in calls].
14098      A null CONTEXT_TYPE indicates that a non-void return type is
14099      preferred.  May change (expand) *EXP.  */
14100
14101   void post_parser (expression_up *expp, int void_context_p, int completing,
14102                     innermost_block_tracker *tracker) const override
14103   {
14104     struct type *context_type = NULL;
14105     int pc = 0;
14106
14107     if (void_context_p)
14108       context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
14109
14110     resolve_subexp (expp, &pc, 1, context_type, completing, tracker);
14111   }
14112
14113   /* See language.h.  */
14114
14115   void emitchar (int ch, struct type *chtype,
14116                  struct ui_file *stream, int quoter) const override
14117   {
14118     ada_emit_char (ch, chtype, stream, quoter, 1);
14119   }
14120
14121   /* See language.h.  */
14122
14123   void printchar (int ch, struct type *chtype,
14124                   struct ui_file *stream) const override
14125   {
14126     ada_printchar (ch, chtype, stream);
14127   }
14128
14129   /* See language.h.  */
14130
14131   void printstr (struct ui_file *stream, struct type *elttype,
14132                  const gdb_byte *string, unsigned int length,
14133                  const char *encoding, int force_ellipses,
14134                  const struct value_print_options *options) const override
14135   {
14136     ada_printstr (stream, elttype, string, length, encoding,
14137                   force_ellipses, options);
14138   }
14139
14140   /* See language.h.  */
14141
14142   void print_typedef (struct type *type, struct symbol *new_symbol,
14143                       struct ui_file *stream) const override
14144   {
14145     ada_print_typedef (type, new_symbol, stream);
14146   }
14147
14148   /* See language.h.  */
14149
14150   bool is_string_type_p (struct type *type) const override
14151   {
14152     return ada_is_string_type (type);
14153   }
14154
14155
14156 protected:
14157   /* See language.h.  */
14158
14159   symbol_name_matcher_ftype *get_symbol_name_matcher_inner
14160         (const lookup_name_info &lookup_name) const override
14161   {
14162     return ada_get_symbol_name_matcher (lookup_name);
14163   }
14164 };
14165
14166 /* Single instance of the Ada language class.  */
14167
14168 static ada_language ada_language_defn;
14169
14170 /* Command-list for the "set/show ada" prefix command.  */
14171 static struct cmd_list_element *set_ada_list;
14172 static struct cmd_list_element *show_ada_list;
14173
14174 static void
14175 initialize_ada_catchpoint_ops (void)
14176 {
14177   struct breakpoint_ops *ops;
14178
14179   initialize_breakpoint_ops ();
14180
14181   ops = &catch_exception_breakpoint_ops;
14182   *ops = bkpt_breakpoint_ops;
14183   ops->allocate_location = allocate_location_exception;
14184   ops->re_set = re_set_exception;
14185   ops->check_status = check_status_exception;
14186   ops->print_it = print_it_exception;
14187   ops->print_one = print_one_exception;
14188   ops->print_mention = print_mention_exception;
14189   ops->print_recreate = print_recreate_exception;
14190
14191   ops = &catch_exception_unhandled_breakpoint_ops;
14192   *ops = bkpt_breakpoint_ops;
14193   ops->allocate_location = allocate_location_exception;
14194   ops->re_set = re_set_exception;
14195   ops->check_status = check_status_exception;
14196   ops->print_it = print_it_exception;
14197   ops->print_one = print_one_exception;
14198   ops->print_mention = print_mention_exception;
14199   ops->print_recreate = print_recreate_exception;
14200
14201   ops = &catch_assert_breakpoint_ops;
14202   *ops = bkpt_breakpoint_ops;
14203   ops->allocate_location = allocate_location_exception;
14204   ops->re_set = re_set_exception;
14205   ops->check_status = check_status_exception;
14206   ops->print_it = print_it_exception;
14207   ops->print_one = print_one_exception;
14208   ops->print_mention = print_mention_exception;
14209   ops->print_recreate = print_recreate_exception;
14210
14211   ops = &catch_handlers_breakpoint_ops;
14212   *ops = bkpt_breakpoint_ops;
14213   ops->allocate_location = allocate_location_exception;
14214   ops->re_set = re_set_exception;
14215   ops->check_status = check_status_exception;
14216   ops->print_it = print_it_exception;
14217   ops->print_one = print_one_exception;
14218   ops->print_mention = print_mention_exception;
14219   ops->print_recreate = print_recreate_exception;
14220 }
14221
14222 /* This module's 'new_objfile' observer.  */
14223
14224 static void
14225 ada_new_objfile_observer (struct objfile *objfile)
14226 {
14227   ada_clear_symbol_cache ();
14228 }
14229
14230 /* This module's 'free_objfile' observer.  */
14231
14232 static void
14233 ada_free_objfile_observer (struct objfile *objfile)
14234 {
14235   ada_clear_symbol_cache ();
14236 }
14237
14238 void _initialize_ada_language ();
14239 void
14240 _initialize_ada_language ()
14241 {
14242   initialize_ada_catchpoint_ops ();
14243
14244   add_basic_prefix_cmd ("ada", no_class,
14245                         _("Prefix command for changing Ada-specific settings."),
14246                         &set_ada_list, "set ada ", 0, &setlist);
14247
14248   add_show_prefix_cmd ("ada", no_class,
14249                        _("Generic command for showing Ada-specific settings."),
14250                        &show_ada_list, "show ada ", 0, &showlist);
14251
14252   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14253                            &trust_pad_over_xvs, _("\
14254 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14255 Show whether an optimization trusting PAD types over XVS types is activated."),
14256                            _("\
14257 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14258 should normally trust the contents of PAD types, but certain older versions\n\
14259 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14260 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14261 work around this bug.  It is always safe to turn this option \"off\", but\n\
14262 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14263 this option to \"off\" unless necessary."),
14264                             NULL, NULL, &set_ada_list, &show_ada_list);
14265
14266   add_setshow_boolean_cmd ("print-signatures", class_vars,
14267                            &print_signatures, _("\
14268 Enable or disable the output of formal and return types for functions in the \
14269 overloads selection menu."), _("\
14270 Show whether the output of formal and return types for functions in the \
14271 overloads selection menu is activated."),
14272                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14273
14274   add_catch_command ("exception", _("\
14275 Catch Ada exceptions, when raised.\n\
14276 Usage: catch exception [ARG] [if CONDITION]\n\
14277 Without any argument, stop when any Ada exception is raised.\n\
14278 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14279 being raised does not have a handler (and will therefore lead to the task's\n\
14280 termination).\n\
14281 Otherwise, the catchpoint only stops when the name of the exception being\n\
14282 raised is the same as ARG.\n\
14283 CONDITION is a boolean expression that is evaluated to see whether the\n\
14284 exception should cause a stop."),
14285                      catch_ada_exception_command,
14286                      catch_ada_completer,
14287                      CATCH_PERMANENT,
14288                      CATCH_TEMPORARY);
14289
14290   add_catch_command ("handlers", _("\
14291 Catch Ada exceptions, when handled.\n\
14292 Usage: catch handlers [ARG] [if CONDITION]\n\
14293 Without any argument, stop when any Ada exception is handled.\n\
14294 With an argument, catch only exceptions with the given name.\n\
14295 CONDITION is a boolean expression that is evaluated to see whether the\n\
14296 exception should cause a stop."),
14297                      catch_ada_handlers_command,
14298                      catch_ada_completer,
14299                      CATCH_PERMANENT,
14300                      CATCH_TEMPORARY);
14301   add_catch_command ("assert", _("\
14302 Catch failed Ada assertions, when raised.\n\
14303 Usage: catch assert [if CONDITION]\n\
14304 CONDITION is a boolean expression that is evaluated to see whether the\n\
14305 exception should cause a stop."),
14306                      catch_assert_command,
14307                      NULL,
14308                      CATCH_PERMANENT,
14309                      CATCH_TEMPORARY);
14310
14311   varsize_limit = 65536;
14312   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14313                             &varsize_limit, _("\
14314 Set the maximum number of bytes allowed in a variable-size object."), _("\
14315 Show the maximum number of bytes allowed in a variable-size object."), _("\
14316 Attempts to access an object whose size is not a compile-time constant\n\
14317 and exceeds this limit will cause an error."),
14318                             NULL, NULL, &setlist, &showlist);
14319
14320   add_info ("exceptions", info_exceptions_command,
14321             _("\
14322 List all Ada exception names.\n\
14323 Usage: info exceptions [REGEXP]\n\
14324 If a regular expression is passed as an argument, only those matching\n\
14325 the regular expression are listed."));
14326
14327   add_basic_prefix_cmd ("ada", class_maintenance,
14328                         _("Set Ada maintenance-related variables."),
14329                         &maint_set_ada_cmdlist, "maintenance set ada ",
14330                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14331
14332   add_show_prefix_cmd ("ada", class_maintenance,
14333                        _("Show Ada maintenance-related variables."),
14334                        &maint_show_ada_cmdlist, "maintenance show ada ",
14335                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14336
14337   add_setshow_boolean_cmd
14338     ("ignore-descriptive-types", class_maintenance,
14339      &ada_ignore_descriptive_types_p,
14340      _("Set whether descriptive types generated by GNAT should be ignored."),
14341      _("Show whether descriptive types generated by GNAT should be ignored."),
14342      _("\
14343 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14344 DWARF attribute."),
14345      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14346
14347   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14348                                            NULL, xcalloc, xfree);
14349
14350   /* The ada-lang observers.  */
14351   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14352   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14353   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14354 }
This page took 0.8327 seconds and 2 git commands to generate.