]> Git Repo - binutils.git/blob - gdb/ada-lang.c
762c124a654dae0339a179e729ea6e815e7970be
[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 static const char *
492 ada_get_gdb_completer_word_break_characters (void)
493 {
494   return ada_completer_word_break_characters;
495 }
496
497 /* la_watch_location_expression for Ada.  */
498
499 static gdb::unique_xmalloc_ptr<char>
500 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
501 {
502   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
503   std::string name = type_to_string (type);
504   return gdb::unique_xmalloc_ptr<char>
505     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
506 }
507
508 /* Assuming V points to an array of S objects,  make sure that it contains at
509    least M objects, updating V and S as necessary.  */
510
511 #define GROW_VECT(v, s, m)                                    \
512    if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
513
514 /* Assuming VECT points to an array of *SIZE objects of size
515    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
516    updating *SIZE as necessary and returning the (new) array.  */
517
518 static void *
519 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
520 {
521   if (*size < min_size)
522     {
523       *size *= 2;
524       if (*size < min_size)
525         *size = min_size;
526       vect = xrealloc (vect, *size * element_size);
527     }
528   return vect;
529 }
530
531 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
532    suffix of FIELD_NAME beginning "___".  */
533
534 static int
535 field_name_match (const char *field_name, const char *target)
536 {
537   int len = strlen (target);
538
539   return
540     (strncmp (field_name, target, len) == 0
541      && (field_name[len] == '\0'
542          || (startswith (field_name + len, "___")
543              && strcmp (field_name + strlen (field_name) - 6,
544                         "___XVN") != 0)));
545 }
546
547
548 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
549    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
550    and return its index.  This function also handles fields whose name
551    have ___ suffixes because the compiler sometimes alters their name
552    by adding such a suffix to represent fields with certain constraints.
553    If the field could not be found, return a negative number if
554    MAYBE_MISSING is set.  Otherwise raise an error.  */
555
556 int
557 ada_get_field_index (const struct type *type, const char *field_name,
558                      int maybe_missing)
559 {
560   int fieldno;
561   struct type *struct_type = check_typedef ((struct type *) type);
562
563   for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
564     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
565       return fieldno;
566
567   if (!maybe_missing)
568     error (_("Unable to find field %s in struct %s.  Aborting"),
569            field_name, struct_type->name ());
570
571   return -1;
572 }
573
574 /* The length of the prefix of NAME prior to any "___" suffix.  */
575
576 int
577 ada_name_prefix_len (const char *name)
578 {
579   if (name == NULL)
580     return 0;
581   else
582     {
583       const char *p = strstr (name, "___");
584
585       if (p == NULL)
586         return strlen (name);
587       else
588         return p - name;
589     }
590 }
591
592 /* Return non-zero if SUFFIX is a suffix of STR.
593    Return zero if STR is null.  */
594
595 static int
596 is_suffix (const char *str, const char *suffix)
597 {
598   int len1, len2;
599
600   if (str == NULL)
601     return 0;
602   len1 = strlen (str);
603   len2 = strlen (suffix);
604   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
605 }
606
607 /* The contents of value VAL, treated as a value of type TYPE.  The
608    result is an lval in memory if VAL is.  */
609
610 static struct value *
611 coerce_unspec_val_to_type (struct value *val, struct type *type)
612 {
613   type = ada_check_typedef (type);
614   if (value_type (val) == type)
615     return val;
616   else
617     {
618       struct value *result;
619
620       /* Make sure that the object size is not unreasonable before
621          trying to allocate some memory for it.  */
622       ada_ensure_varsize_limit (type);
623
624       if (value_lazy (val)
625           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
626         result = allocate_value_lazy (type);
627       else
628         {
629           result = allocate_value (type);
630           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
631         }
632       set_value_component_location (result, val);
633       set_value_bitsize (result, value_bitsize (val));
634       set_value_bitpos (result, value_bitpos (val));
635       if (VALUE_LVAL (result) == lval_memory)
636         set_value_address (result, value_address (val));
637       return result;
638     }
639 }
640
641 static const gdb_byte *
642 cond_offset_host (const gdb_byte *valaddr, long offset)
643 {
644   if (valaddr == NULL)
645     return NULL;
646   else
647     return valaddr + offset;
648 }
649
650 static CORE_ADDR
651 cond_offset_target (CORE_ADDR address, long offset)
652 {
653   if (address == 0)
654     return 0;
655   else
656     return address + offset;
657 }
658
659 /* Issue a warning (as for the definition of warning in utils.c, but
660    with exactly one argument rather than ...), unless the limit on the
661    number of warnings has passed during the evaluation of the current
662    expression.  */
663
664 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
665    provided by "complaint".  */
666 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
667
668 static void
669 lim_warning (const char *format, ...)
670 {
671   va_list args;
672
673   va_start (args, format);
674   warnings_issued += 1;
675   if (warnings_issued <= warning_limit)
676     vwarning (format, args);
677
678   va_end (args);
679 }
680
681 /* Issue an error if the size of an object of type T is unreasonable,
682    i.e. if it would be a bad idea to allocate a value of this type in
683    GDB.  */
684
685 void
686 ada_ensure_varsize_limit (const struct type *type)
687 {
688   if (TYPE_LENGTH (type) > varsize_limit)
689     error (_("object size is larger than varsize-limit"));
690 }
691
692 /* Maximum value of a SIZE-byte signed integer type.  */
693 static LONGEST
694 max_of_size (int size)
695 {
696   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
697
698   return top_bit | (top_bit - 1);
699 }
700
701 /* Minimum value of a SIZE-byte signed integer type.  */
702 static LONGEST
703 min_of_size (int size)
704 {
705   return -max_of_size (size) - 1;
706 }
707
708 /* Maximum value of a SIZE-byte unsigned integer type.  */
709 static ULONGEST
710 umax_of_size (int size)
711 {
712   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
713
714   return top_bit | (top_bit - 1);
715 }
716
717 /* Maximum value of integral type T, as a signed quantity.  */
718 static LONGEST
719 max_of_type (struct type *t)
720 {
721   if (TYPE_UNSIGNED (t))
722     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
723   else
724     return max_of_size (TYPE_LENGTH (t));
725 }
726
727 /* Minimum value of integral type T, as a signed quantity.  */
728 static LONGEST
729 min_of_type (struct type *t)
730 {
731   if (TYPE_UNSIGNED (t)) 
732     return 0;
733   else
734     return min_of_size (TYPE_LENGTH (t));
735 }
736
737 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
738 LONGEST
739 ada_discrete_type_high_bound (struct type *type)
740 {
741   type = resolve_dynamic_type (type, {}, 0);
742   switch (type->code ())
743     {
744     case TYPE_CODE_RANGE:
745       return TYPE_HIGH_BOUND (type);
746     case TYPE_CODE_ENUM:
747       return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
748     case TYPE_CODE_BOOL:
749       return 1;
750     case TYPE_CODE_CHAR:
751     case TYPE_CODE_INT:
752       return max_of_type (type);
753     default:
754       error (_("Unexpected type in ada_discrete_type_high_bound."));
755     }
756 }
757
758 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
759 LONGEST
760 ada_discrete_type_low_bound (struct type *type)
761 {
762   type = resolve_dynamic_type (type, {}, 0);
763   switch (type->code ())
764     {
765     case TYPE_CODE_RANGE:
766       return TYPE_LOW_BOUND (type);
767     case TYPE_CODE_ENUM:
768       return TYPE_FIELD_ENUMVAL (type, 0);
769     case TYPE_CODE_BOOL:
770       return 0;
771     case TYPE_CODE_CHAR:
772     case TYPE_CODE_INT:
773       return min_of_type (type);
774     default:
775       error (_("Unexpected type in ada_discrete_type_low_bound."));
776     }
777 }
778
779 /* The identity on non-range types.  For range types, the underlying
780    non-range scalar type.  */
781
782 static struct type *
783 get_base_type (struct type *type)
784 {
785   while (type != NULL && type->code () == TYPE_CODE_RANGE)
786     {
787       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
788         return type;
789       type = TYPE_TARGET_TYPE (type);
790     }
791   return type;
792 }
793
794 /* Return a decoded version of the given VALUE.  This means returning
795    a value whose type is obtained by applying all the GNAT-specific
796    encodings, making the resulting type a static but standard description
797    of the initial type.  */
798
799 struct value *
800 ada_get_decoded_value (struct value *value)
801 {
802   struct type *type = ada_check_typedef (value_type (value));
803
804   if (ada_is_array_descriptor_type (type)
805       || (ada_is_constrained_packed_array_type (type)
806           && type->code () != TYPE_CODE_PTR))
807     {
808       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
809         value = ada_coerce_to_simple_array_ptr (value);
810       else
811         value = ada_coerce_to_simple_array (value);
812     }
813   else
814     value = ada_to_fixed_value (value);
815
816   return value;
817 }
818
819 /* Same as ada_get_decoded_value, but with the given TYPE.
820    Because there is no associated actual value for this type,
821    the resulting type might be a best-effort approximation in
822    the case of dynamic types.  */
823
824 struct type *
825 ada_get_decoded_type (struct type *type)
826 {
827   type = to_static_fixed_type (type);
828   if (ada_is_constrained_packed_array_type (type))
829     type = ada_coerce_to_simple_array_type (type);
830   return type;
831 }
832
833 \f
834
835                                 /* Language Selection */
836
837 /* If the main program is in Ada, return language_ada, otherwise return LANG
838    (the main program is in Ada iif the adainit symbol is found).  */
839
840 static enum language
841 ada_update_initial_language (enum language lang)
842 {
843   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
844     return language_ada;
845
846   return lang;
847 }
848
849 /* If the main procedure is written in Ada, then return its name.
850    The result is good until the next call.  Return NULL if the main
851    procedure doesn't appear to be in Ada.  */
852
853 char *
854 ada_main_name (void)
855 {
856   struct bound_minimal_symbol msym;
857   static gdb::unique_xmalloc_ptr<char> main_program_name;
858
859   /* For Ada, the name of the main procedure is stored in a specific
860      string constant, generated by the binder.  Look for that symbol,
861      extract its address, and then read that string.  If we didn't find
862      that string, then most probably the main procedure is not written
863      in Ada.  */
864   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
865
866   if (msym.minsym != NULL)
867     {
868       CORE_ADDR main_program_name_addr;
869       int err_code;
870
871       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
872       if (main_program_name_addr == 0)
873         error (_("Invalid address for Ada main program name."));
874
875       target_read_string (main_program_name_addr, &main_program_name,
876                           1024, &err_code);
877
878       if (err_code != 0)
879         return NULL;
880       return main_program_name.get ();
881     }
882
883   /* The main procedure doesn't seem to be in Ada.  */
884   return NULL;
885 }
886 \f
887                                 /* Symbols */
888
889 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
890    of NULLs.  */
891
892 const struct ada_opname_map ada_opname_table[] = {
893   {"Oadd", "\"+\"", BINOP_ADD},
894   {"Osubtract", "\"-\"", BINOP_SUB},
895   {"Omultiply", "\"*\"", BINOP_MUL},
896   {"Odivide", "\"/\"", BINOP_DIV},
897   {"Omod", "\"mod\"", BINOP_MOD},
898   {"Orem", "\"rem\"", BINOP_REM},
899   {"Oexpon", "\"**\"", BINOP_EXP},
900   {"Olt", "\"<\"", BINOP_LESS},
901   {"Ole", "\"<=\"", BINOP_LEQ},
902   {"Ogt", "\">\"", BINOP_GTR},
903   {"Oge", "\">=\"", BINOP_GEQ},
904   {"Oeq", "\"=\"", BINOP_EQUAL},
905   {"One", "\"/=\"", BINOP_NOTEQUAL},
906   {"Oand", "\"and\"", BINOP_BITWISE_AND},
907   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
908   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
909   {"Oconcat", "\"&\"", BINOP_CONCAT},
910   {"Oabs", "\"abs\"", UNOP_ABS},
911   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
912   {"Oadd", "\"+\"", UNOP_PLUS},
913   {"Osubtract", "\"-\"", UNOP_NEG},
914   {NULL, NULL}
915 };
916
917 /* The "encoded" form of DECODED, according to GNAT conventions.  The
918    result is valid until the next call to ada_encode.  If
919    THROW_ERRORS, throw an error if invalid operator name is found.
920    Otherwise, return NULL in that case.  */
921
922 static char *
923 ada_encode_1 (const char *decoded, bool throw_errors)
924 {
925   static char *encoding_buffer = NULL;
926   static size_t encoding_buffer_size = 0;
927   const char *p;
928   int k;
929
930   if (decoded == NULL)
931     return NULL;
932
933   GROW_VECT (encoding_buffer, encoding_buffer_size,
934              2 * strlen (decoded) + 10);
935
936   k = 0;
937   for (p = decoded; *p != '\0'; p += 1)
938     {
939       if (*p == '.')
940         {
941           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
942           k += 2;
943         }
944       else if (*p == '"')
945         {
946           const struct ada_opname_map *mapping;
947
948           for (mapping = ada_opname_table;
949                mapping->encoded != NULL
950                && !startswith (p, mapping->decoded); mapping += 1)
951             ;
952           if (mapping->encoded == NULL)
953             {
954               if (throw_errors)
955                 error (_("invalid Ada operator name: %s"), p);
956               else
957                 return NULL;
958             }
959           strcpy (encoding_buffer + k, mapping->encoded);
960           k += strlen (mapping->encoded);
961           break;
962         }
963       else
964         {
965           encoding_buffer[k] = *p;
966           k += 1;
967         }
968     }
969
970   encoding_buffer[k] = '\0';
971   return encoding_buffer;
972 }
973
974 /* The "encoded" form of DECODED, according to GNAT conventions.
975    The result is valid until the next call to ada_encode.  */
976
977 char *
978 ada_encode (const char *decoded)
979 {
980   return ada_encode_1 (decoded, true);
981 }
982
983 /* Return NAME folded to lower case, or, if surrounded by single
984    quotes, unfolded, but with the quotes stripped away.  Result good
985    to next call.  */
986
987 static char *
988 ada_fold_name (gdb::string_view name)
989 {
990   static char *fold_buffer = NULL;
991   static size_t fold_buffer_size = 0;
992
993   int len = name.size ();
994   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
995
996   if (name[0] == '\'')
997     {
998       strncpy (fold_buffer, name.data () + 1, len - 2);
999       fold_buffer[len - 2] = '\000';
1000     }
1001   else
1002     {
1003       int i;
1004
1005       for (i = 0; i <= len; i += 1)
1006         fold_buffer[i] = tolower (name[i]);
1007     }
1008
1009   return fold_buffer;
1010 }
1011
1012 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1013
1014 static int
1015 is_lower_alphanum (const char c)
1016 {
1017   return (isdigit (c) || (isalpha (c) && islower (c)));
1018 }
1019
1020 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1021    This function saves in LEN the length of that same symbol name but
1022    without either of these suffixes:
1023      . .{DIGIT}+
1024      . ${DIGIT}+
1025      . ___{DIGIT}+
1026      . __{DIGIT}+.
1027
1028    These are suffixes introduced by the compiler for entities such as
1029    nested subprogram for instance, in order to avoid name clashes.
1030    They do not serve any purpose for the debugger.  */
1031
1032 static void
1033 ada_remove_trailing_digits (const char *encoded, int *len)
1034 {
1035   if (*len > 1 && isdigit (encoded[*len - 1]))
1036     {
1037       int i = *len - 2;
1038
1039       while (i > 0 && isdigit (encoded[i]))
1040         i--;
1041       if (i >= 0 && encoded[i] == '.')
1042         *len = i;
1043       else if (i >= 0 && encoded[i] == '$')
1044         *len = i;
1045       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1046         *len = i - 2;
1047       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1048         *len = i - 1;
1049     }
1050 }
1051
1052 /* Remove the suffix introduced by the compiler for protected object
1053    subprograms.  */
1054
1055 static void
1056 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1057 {
1058   /* Remove trailing N.  */
1059
1060   /* Protected entry subprograms are broken into two
1061      separate subprograms: The first one is unprotected, and has
1062      a 'N' suffix; the second is the protected version, and has
1063      the 'P' suffix.  The second calls the first one after handling
1064      the protection.  Since the P subprograms are internally generated,
1065      we leave these names undecoded, giving the user a clue that this
1066      entity is internal.  */
1067
1068   if (*len > 1
1069       && encoded[*len - 1] == 'N'
1070       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1071     *len = *len - 1;
1072 }
1073
1074 /* If ENCODED follows the GNAT entity encoding conventions, then return
1075    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1076    replaced by ENCODED.  */
1077
1078 std::string
1079 ada_decode (const char *encoded)
1080 {
1081   int i, j;
1082   int len0;
1083   const char *p;
1084   int at_start_name;
1085   std::string decoded;
1086
1087   /* With function descriptors on PPC64, the value of a symbol named
1088      ".FN", if it exists, is the entry point of the function "FN".  */
1089   if (encoded[0] == '.')
1090     encoded += 1;
1091
1092   /* The name of the Ada main procedure starts with "_ada_".
1093      This prefix is not part of the decoded name, so skip this part
1094      if we see this prefix.  */
1095   if (startswith (encoded, "_ada_"))
1096     encoded += 5;
1097
1098   /* If the name starts with '_', then it is not a properly encoded
1099      name, so do not attempt to decode it.  Similarly, if the name
1100      starts with '<', the name should not be decoded.  */
1101   if (encoded[0] == '_' || encoded[0] == '<')
1102     goto Suppress;
1103
1104   len0 = strlen (encoded);
1105
1106   ada_remove_trailing_digits (encoded, &len0);
1107   ada_remove_po_subprogram_suffix (encoded, &len0);
1108
1109   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1110      the suffix is located before the current "end" of ENCODED.  We want
1111      to avoid re-matching parts of ENCODED that have previously been
1112      marked as discarded (by decrementing LEN0).  */
1113   p = strstr (encoded, "___");
1114   if (p != NULL && p - encoded < len0 - 3)
1115     {
1116       if (p[3] == 'X')
1117         len0 = p - encoded;
1118       else
1119         goto Suppress;
1120     }
1121
1122   /* Remove any trailing TKB suffix.  It tells us that this symbol
1123      is for the body of a task, but that information does not actually
1124      appear in the decoded name.  */
1125
1126   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1127     len0 -= 3;
1128
1129   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1130      from the TKB suffix because it is used for non-anonymous task
1131      bodies.  */
1132
1133   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1134     len0 -= 2;
1135
1136   /* Remove trailing "B" suffixes.  */
1137   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1138
1139   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1140     len0 -= 1;
1141
1142   /* Make decoded big enough for possible expansion by operator name.  */
1143
1144   decoded.resize (2 * len0 + 1, 'X');
1145
1146   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1147
1148   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1149     {
1150       i = len0 - 2;
1151       while ((i >= 0 && isdigit (encoded[i]))
1152              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1153         i -= 1;
1154       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1155         len0 = i - 1;
1156       else if (encoded[i] == '$')
1157         len0 = i;
1158     }
1159
1160   /* The first few characters that are not alphabetic are not part
1161      of any encoding we use, so we can copy them over verbatim.  */
1162
1163   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1164     decoded[j] = encoded[i];
1165
1166   at_start_name = 1;
1167   while (i < len0)
1168     {
1169       /* Is this a symbol function?  */
1170       if (at_start_name && encoded[i] == 'O')
1171         {
1172           int k;
1173
1174           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1175             {
1176               int op_len = strlen (ada_opname_table[k].encoded);
1177               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1178                             op_len - 1) == 0)
1179                   && !isalnum (encoded[i + op_len]))
1180                 {
1181                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1182                   at_start_name = 0;
1183                   i += op_len;
1184                   j += strlen (ada_opname_table[k].decoded);
1185                   break;
1186                 }
1187             }
1188           if (ada_opname_table[k].encoded != NULL)
1189             continue;
1190         }
1191       at_start_name = 0;
1192
1193       /* Replace "TK__" with "__", which will eventually be translated
1194          into "." (just below).  */
1195
1196       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1197         i += 2;
1198
1199       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1200          be translated into "." (just below).  These are internal names
1201          generated for anonymous blocks inside which our symbol is nested.  */
1202
1203       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1204           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1205           && isdigit (encoded [i+4]))
1206         {
1207           int k = i + 5;
1208           
1209           while (k < len0 && isdigit (encoded[k]))
1210             k++;  /* Skip any extra digit.  */
1211
1212           /* Double-check that the "__B_{DIGITS}+" sequence we found
1213              is indeed followed by "__".  */
1214           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1215             i = k;
1216         }
1217
1218       /* Remove _E{DIGITS}+[sb] */
1219
1220       /* Just as for protected object subprograms, there are 2 categories
1221          of subprograms created by the compiler for each entry.  The first
1222          one implements the actual entry code, and has a suffix following
1223          the convention above; the second one implements the barrier and
1224          uses the same convention as above, except that the 'E' is replaced
1225          by a 'B'.
1226
1227          Just as above, we do not decode the name of barrier functions
1228          to give the user a clue that the code he is debugging has been
1229          internally generated.  */
1230
1231       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1232           && isdigit (encoded[i+2]))
1233         {
1234           int k = i + 3;
1235
1236           while (k < len0 && isdigit (encoded[k]))
1237             k++;
1238
1239           if (k < len0
1240               && (encoded[k] == 'b' || encoded[k] == 's'))
1241             {
1242               k++;
1243               /* Just as an extra precaution, make sure that if this
1244                  suffix is followed by anything else, it is a '_'.
1245                  Otherwise, we matched this sequence by accident.  */
1246               if (k == len0
1247                   || (k < len0 && encoded[k] == '_'))
1248                 i = k;
1249             }
1250         }
1251
1252       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1253          the GNAT front-end in protected object subprograms.  */
1254
1255       if (i < len0 + 3
1256           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1257         {
1258           /* Backtrack a bit up until we reach either the begining of
1259              the encoded name, or "__".  Make sure that we only find
1260              digits or lowercase characters.  */
1261           const char *ptr = encoded + i - 1;
1262
1263           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1264             ptr--;
1265           if (ptr < encoded
1266               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1267             i++;
1268         }
1269
1270       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1271         {
1272           /* This is a X[bn]* sequence not separated from the previous
1273              part of the name with a non-alpha-numeric character (in other
1274              words, immediately following an alpha-numeric character), then
1275              verify that it is placed at the end of the encoded name.  If
1276              not, then the encoding is not valid and we should abort the
1277              decoding.  Otherwise, just skip it, it is used in body-nested
1278              package names.  */
1279           do
1280             i += 1;
1281           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1282           if (i < len0)
1283             goto Suppress;
1284         }
1285       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1286         {
1287          /* Replace '__' by '.'.  */
1288           decoded[j] = '.';
1289           at_start_name = 1;
1290           i += 2;
1291           j += 1;
1292         }
1293       else
1294         {
1295           /* It's a character part of the decoded name, so just copy it
1296              over.  */
1297           decoded[j] = encoded[i];
1298           i += 1;
1299           j += 1;
1300         }
1301     }
1302   decoded.resize (j);
1303
1304   /* Decoded names should never contain any uppercase character.
1305      Double-check this, and abort the decoding if we find one.  */
1306
1307   for (i = 0; i < decoded.length(); ++i)
1308     if (isupper (decoded[i]) || decoded[i] == ' ')
1309       goto Suppress;
1310
1311   return decoded;
1312
1313 Suppress:
1314   if (encoded[0] == '<')
1315     decoded = encoded;
1316   else
1317     decoded = '<' + std::string(encoded) + '>';
1318   return decoded;
1319
1320 }
1321
1322 /* Table for keeping permanent unique copies of decoded names.  Once
1323    allocated, names in this table are never released.  While this is a
1324    storage leak, it should not be significant unless there are massive
1325    changes in the set of decoded names in successive versions of a 
1326    symbol table loaded during a single session.  */
1327 static struct htab *decoded_names_store;
1328
1329 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1330    in the language-specific part of GSYMBOL, if it has not been
1331    previously computed.  Tries to save the decoded name in the same
1332    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1333    in any case, the decoded symbol has a lifetime at least that of
1334    GSYMBOL).
1335    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1336    const, but nevertheless modified to a semantically equivalent form
1337    when a decoded name is cached in it.  */
1338
1339 const char *
1340 ada_decode_symbol (const struct general_symbol_info *arg)
1341 {
1342   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1343   const char **resultp =
1344     &gsymbol->language_specific.demangled_name;
1345
1346   if (!gsymbol->ada_mangled)
1347     {
1348       std::string decoded = ada_decode (gsymbol->linkage_name ());
1349       struct obstack *obstack = gsymbol->language_specific.obstack;
1350
1351       gsymbol->ada_mangled = 1;
1352
1353       if (obstack != NULL)
1354         *resultp = obstack_strdup (obstack, decoded.c_str ());
1355       else
1356         {
1357           /* Sometimes, we can't find a corresponding objfile, in
1358              which case, we put the result on the heap.  Since we only
1359              decode when needed, we hope this usually does not cause a
1360              significant memory leak (FIXME).  */
1361
1362           char **slot = (char **) htab_find_slot (decoded_names_store,
1363                                                   decoded.c_str (), INSERT);
1364
1365           if (*slot == NULL)
1366             *slot = xstrdup (decoded.c_str ());
1367           *resultp = *slot;
1368         }
1369     }
1370
1371   return *resultp;
1372 }
1373
1374 static char *
1375 ada_la_decode (const char *encoded, int options)
1376 {
1377   return xstrdup (ada_decode (encoded).c_str ());
1378 }
1379
1380 /* Implement la_sniff_from_mangled_name for Ada.  */
1381
1382 static int
1383 ada_sniff_from_mangled_name (const char *mangled, char **out)
1384 {
1385   std::string demangled = ada_decode (mangled);
1386
1387   *out = NULL;
1388
1389   if (demangled != mangled && demangled[0] != '<')
1390     {
1391       /* Set the gsymbol language to Ada, but still return 0.
1392          Two reasons for that:
1393
1394          1. For Ada, we prefer computing the symbol's decoded name
1395          on the fly rather than pre-compute it, in order to save
1396          memory (Ada projects are typically very large).
1397
1398          2. There are some areas in the definition of the GNAT
1399          encoding where, with a bit of bad luck, we might be able
1400          to decode a non-Ada symbol, generating an incorrect
1401          demangled name (Eg: names ending with "TB" for instance
1402          are identified as task bodies and so stripped from
1403          the decoded name returned).
1404
1405          Returning 1, here, but not setting *DEMANGLED, helps us get a
1406          little bit of the best of both worlds.  Because we're last,
1407          we should not affect any of the other languages that were
1408          able to demangle the symbol before us; we get to correctly
1409          tag Ada symbols as such; and even if we incorrectly tagged a
1410          non-Ada symbol, which should be rare, any routing through the
1411          Ada language should be transparent (Ada tries to behave much
1412          like C/C++ with non-Ada symbols).  */
1413       return 1;
1414     }
1415
1416   return 0;
1417 }
1418
1419 \f
1420
1421                                 /* Arrays */
1422
1423 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1424    generated by the GNAT compiler to describe the index type used
1425    for each dimension of an array, check whether it follows the latest
1426    known encoding.  If not, fix it up to conform to the latest encoding.
1427    Otherwise, do nothing.  This function also does nothing if
1428    INDEX_DESC_TYPE is NULL.
1429
1430    The GNAT encoding used to describe the array index type evolved a bit.
1431    Initially, the information would be provided through the name of each
1432    field of the structure type only, while the type of these fields was
1433    described as unspecified and irrelevant.  The debugger was then expected
1434    to perform a global type lookup using the name of that field in order
1435    to get access to the full index type description.  Because these global
1436    lookups can be very expensive, the encoding was later enhanced to make
1437    the global lookup unnecessary by defining the field type as being
1438    the full index type description.
1439
1440    The purpose of this routine is to allow us to support older versions
1441    of the compiler by detecting the use of the older encoding, and by
1442    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1443    we essentially replace each field's meaningless type by the associated
1444    index subtype).  */
1445
1446 void
1447 ada_fixup_array_indexes_type (struct type *index_desc_type)
1448 {
1449   int i;
1450
1451   if (index_desc_type == NULL)
1452     return;
1453   gdb_assert (index_desc_type->num_fields () > 0);
1454
1455   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1456      to check one field only, no need to check them all).  If not, return
1457      now.
1458
1459      If our INDEX_DESC_TYPE was generated using the older encoding,
1460      the field type should be a meaningless integer type whose name
1461      is not equal to the field name.  */
1462   if (TYPE_FIELD_TYPE (index_desc_type, 0)->name () != NULL
1463       && strcmp (TYPE_FIELD_TYPE (index_desc_type, 0)->name (),
1464                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1465     return;
1466
1467   /* Fixup each field of INDEX_DESC_TYPE.  */
1468   for (i = 0; i < index_desc_type->num_fields (); i++)
1469    {
1470      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1471      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1472
1473      if (raw_type)
1474        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1475    }
1476 }
1477
1478 /* The desc_* routines return primitive portions of array descriptors
1479    (fat pointers).  */
1480
1481 /* The descriptor or array type, if any, indicated by TYPE; removes
1482    level of indirection, if needed.  */
1483
1484 static struct type *
1485 desc_base_type (struct type *type)
1486 {
1487   if (type == NULL)
1488     return NULL;
1489   type = ada_check_typedef (type);
1490   if (type->code () == TYPE_CODE_TYPEDEF)
1491     type = ada_typedef_target_type (type);
1492
1493   if (type != NULL
1494       && (type->code () == TYPE_CODE_PTR
1495           || type->code () == TYPE_CODE_REF))
1496     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1497   else
1498     return type;
1499 }
1500
1501 /* True iff TYPE indicates a "thin" array pointer type.  */
1502
1503 static int
1504 is_thin_pntr (struct type *type)
1505 {
1506   return
1507     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1508     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1509 }
1510
1511 /* The descriptor type for thin pointer type TYPE.  */
1512
1513 static struct type *
1514 thin_descriptor_type (struct type *type)
1515 {
1516   struct type *base_type = desc_base_type (type);
1517
1518   if (base_type == NULL)
1519     return NULL;
1520   if (is_suffix (ada_type_name (base_type), "___XVE"))
1521     return base_type;
1522   else
1523     {
1524       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1525
1526       if (alt_type == NULL)
1527         return base_type;
1528       else
1529         return alt_type;
1530     }
1531 }
1532
1533 /* A pointer to the array data for thin-pointer value VAL.  */
1534
1535 static struct value *
1536 thin_data_pntr (struct value *val)
1537 {
1538   struct type *type = ada_check_typedef (value_type (val));
1539   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1540
1541   data_type = lookup_pointer_type (data_type);
1542
1543   if (type->code () == TYPE_CODE_PTR)
1544     return value_cast (data_type, value_copy (val));
1545   else
1546     return value_from_longest (data_type, value_address (val));
1547 }
1548
1549 /* True iff TYPE indicates a "thick" array pointer type.  */
1550
1551 static int
1552 is_thick_pntr (struct type *type)
1553 {
1554   type = desc_base_type (type);
1555   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1556           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1557 }
1558
1559 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1560    pointer to one, the type of its bounds data; otherwise, NULL.  */
1561
1562 static struct type *
1563 desc_bounds_type (struct type *type)
1564 {
1565   struct type *r;
1566
1567   type = desc_base_type (type);
1568
1569   if (type == NULL)
1570     return NULL;
1571   else if (is_thin_pntr (type))
1572     {
1573       type = thin_descriptor_type (type);
1574       if (type == NULL)
1575         return NULL;
1576       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1577       if (r != NULL)
1578         return ada_check_typedef (r);
1579     }
1580   else if (type->code () == TYPE_CODE_STRUCT)
1581     {
1582       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1583       if (r != NULL)
1584         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1585     }
1586   return NULL;
1587 }
1588
1589 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1590    one, a pointer to its bounds data.   Otherwise NULL.  */
1591
1592 static struct value *
1593 desc_bounds (struct value *arr)
1594 {
1595   struct type *type = ada_check_typedef (value_type (arr));
1596
1597   if (is_thin_pntr (type))
1598     {
1599       struct type *bounds_type =
1600         desc_bounds_type (thin_descriptor_type (type));
1601       LONGEST addr;
1602
1603       if (bounds_type == NULL)
1604         error (_("Bad GNAT array descriptor"));
1605
1606       /* NOTE: The following calculation is not really kosher, but
1607          since desc_type is an XVE-encoded type (and shouldn't be),
1608          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1609       if (type->code () == TYPE_CODE_PTR)
1610         addr = value_as_long (arr);
1611       else
1612         addr = value_address (arr);
1613
1614       return
1615         value_from_longest (lookup_pointer_type (bounds_type),
1616                             addr - TYPE_LENGTH (bounds_type));
1617     }
1618
1619   else if (is_thick_pntr (type))
1620     {
1621       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1622                                                _("Bad GNAT array descriptor"));
1623       struct type *p_bounds_type = value_type (p_bounds);
1624
1625       if (p_bounds_type
1626           && p_bounds_type->code () == TYPE_CODE_PTR)
1627         {
1628           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1629
1630           if (TYPE_STUB (target_type))
1631             p_bounds = value_cast (lookup_pointer_type
1632                                    (ada_check_typedef (target_type)),
1633                                    p_bounds);
1634         }
1635       else
1636         error (_("Bad GNAT array descriptor"));
1637
1638       return p_bounds;
1639     }
1640   else
1641     return NULL;
1642 }
1643
1644 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1645    position of the field containing the address of the bounds data.  */
1646
1647 static int
1648 fat_pntr_bounds_bitpos (struct type *type)
1649 {
1650   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1651 }
1652
1653 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1654    size of the field containing the address of the bounds data.  */
1655
1656 static int
1657 fat_pntr_bounds_bitsize (struct type *type)
1658 {
1659   type = desc_base_type (type);
1660
1661   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1662     return TYPE_FIELD_BITSIZE (type, 1);
1663   else
1664     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1665 }
1666
1667 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1668    pointer to one, the type of its array data (a array-with-no-bounds type);
1669    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1670    data.  */
1671
1672 static struct type *
1673 desc_data_target_type (struct type *type)
1674 {
1675   type = desc_base_type (type);
1676
1677   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1678   if (is_thin_pntr (type))
1679     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1680   else if (is_thick_pntr (type))
1681     {
1682       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1683
1684       if (data_type
1685           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1686         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1687     }
1688
1689   return NULL;
1690 }
1691
1692 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1693    its array data.  */
1694
1695 static struct value *
1696 desc_data (struct value *arr)
1697 {
1698   struct type *type = value_type (arr);
1699
1700   if (is_thin_pntr (type))
1701     return thin_data_pntr (arr);
1702   else if (is_thick_pntr (type))
1703     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1704                              _("Bad GNAT array descriptor"));
1705   else
1706     return NULL;
1707 }
1708
1709
1710 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1711    position of the field containing the address of the data.  */
1712
1713 static int
1714 fat_pntr_data_bitpos (struct type *type)
1715 {
1716   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1717 }
1718
1719 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1720    size of the field containing the address of the data.  */
1721
1722 static int
1723 fat_pntr_data_bitsize (struct type *type)
1724 {
1725   type = desc_base_type (type);
1726
1727   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1728     return TYPE_FIELD_BITSIZE (type, 0);
1729   else
1730     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1731 }
1732
1733 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1734    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1735    bound, if WHICH is 1.  The first bound is I=1.  */
1736
1737 static struct value *
1738 desc_one_bound (struct value *bounds, int i, int which)
1739 {
1740   char bound_name[20];
1741   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1742              which ? 'U' : 'L', i - 1);
1743   return value_struct_elt (&bounds, NULL, bound_name, NULL,
1744                            _("Bad GNAT array descriptor bounds"));
1745 }
1746
1747 /* If BOUNDS is an array-bounds structure type, return the bit position
1748    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1749    bound, if WHICH is 1.  The first bound is I=1.  */
1750
1751 static int
1752 desc_bound_bitpos (struct type *type, int i, int which)
1753 {
1754   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1755 }
1756
1757 /* If BOUNDS is an array-bounds structure type, return the bit field size
1758    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1759    bound, if WHICH is 1.  The first bound is I=1.  */
1760
1761 static int
1762 desc_bound_bitsize (struct type *type, int i, int which)
1763 {
1764   type = desc_base_type (type);
1765
1766   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1767     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1768   else
1769     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1770 }
1771
1772 /* If TYPE is the type of an array-bounds structure, the type of its
1773    Ith bound (numbering from 1).  Otherwise, NULL.  */
1774
1775 static struct type *
1776 desc_index_type (struct type *type, int i)
1777 {
1778   type = desc_base_type (type);
1779
1780   if (type->code () == TYPE_CODE_STRUCT)
1781     {
1782       char bound_name[20];
1783       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1784       return lookup_struct_elt_type (type, bound_name, 1);
1785     }
1786   else
1787     return NULL;
1788 }
1789
1790 /* The number of index positions in the array-bounds type TYPE.
1791    Return 0 if TYPE is NULL.  */
1792
1793 static int
1794 desc_arity (struct type *type)
1795 {
1796   type = desc_base_type (type);
1797
1798   if (type != NULL)
1799     return type->num_fields () / 2;
1800   return 0;
1801 }
1802
1803 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1804    an array descriptor type (representing an unconstrained array
1805    type).  */
1806
1807 static int
1808 ada_is_direct_array_type (struct type *type)
1809 {
1810   if (type == NULL)
1811     return 0;
1812   type = ada_check_typedef (type);
1813   return (type->code () == TYPE_CODE_ARRAY
1814           || ada_is_array_descriptor_type (type));
1815 }
1816
1817 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1818  * to one.  */
1819
1820 static int
1821 ada_is_array_type (struct type *type)
1822 {
1823   while (type != NULL
1824          && (type->code () == TYPE_CODE_PTR
1825              || type->code () == TYPE_CODE_REF))
1826     type = TYPE_TARGET_TYPE (type);
1827   return ada_is_direct_array_type (type);
1828 }
1829
1830 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1831
1832 int
1833 ada_is_simple_array_type (struct type *type)
1834 {
1835   if (type == NULL)
1836     return 0;
1837   type = ada_check_typedef (type);
1838   return (type->code () == TYPE_CODE_ARRAY
1839           || (type->code () == TYPE_CODE_PTR
1840               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1841                   == TYPE_CODE_ARRAY)));
1842 }
1843
1844 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1845
1846 int
1847 ada_is_array_descriptor_type (struct type *type)
1848 {
1849   struct type *data_type = desc_data_target_type (type);
1850
1851   if (type == NULL)
1852     return 0;
1853   type = ada_check_typedef (type);
1854   return (data_type != NULL
1855           && data_type->code () == TYPE_CODE_ARRAY
1856           && desc_arity (desc_bounds_type (type)) > 0);
1857 }
1858
1859 /* Non-zero iff type is a partially mal-formed GNAT array
1860    descriptor.  FIXME: This is to compensate for some problems with
1861    debugging output from GNAT.  Re-examine periodically to see if it
1862    is still needed.  */
1863
1864 int
1865 ada_is_bogus_array_descriptor (struct type *type)
1866 {
1867   return
1868     type != NULL
1869     && type->code () == TYPE_CODE_STRUCT
1870     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1871         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1872     && !ada_is_array_descriptor_type (type);
1873 }
1874
1875
1876 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1877    (fat pointer) returns the type of the array data described---specifically,
1878    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1879    in from the descriptor; otherwise, they are left unspecified.  If
1880    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1881    returns NULL.  The result is simply the type of ARR if ARR is not
1882    a descriptor.  */
1883
1884 static struct type *
1885 ada_type_of_array (struct value *arr, int bounds)
1886 {
1887   if (ada_is_constrained_packed_array_type (value_type (arr)))
1888     return decode_constrained_packed_array_type (value_type (arr));
1889
1890   if (!ada_is_array_descriptor_type (value_type (arr)))
1891     return value_type (arr);
1892
1893   if (!bounds)
1894     {
1895       struct type *array_type =
1896         ada_check_typedef (desc_data_target_type (value_type (arr)));
1897
1898       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1899         TYPE_FIELD_BITSIZE (array_type, 0) =
1900           decode_packed_array_bitsize (value_type (arr));
1901       
1902       return array_type;
1903     }
1904   else
1905     {
1906       struct type *elt_type;
1907       int arity;
1908       struct value *descriptor;
1909
1910       elt_type = ada_array_element_type (value_type (arr), -1);
1911       arity = ada_array_arity (value_type (arr));
1912
1913       if (elt_type == NULL || arity == 0)
1914         return ada_check_typedef (value_type (arr));
1915
1916       descriptor = desc_bounds (arr);
1917       if (value_as_long (descriptor) == 0)
1918         return NULL;
1919       while (arity > 0)
1920         {
1921           struct type *range_type = alloc_type_copy (value_type (arr));
1922           struct type *array_type = alloc_type_copy (value_type (arr));
1923           struct value *low = desc_one_bound (descriptor, arity, 0);
1924           struct value *high = desc_one_bound (descriptor, arity, 1);
1925
1926           arity -= 1;
1927           create_static_range_type (range_type, value_type (low),
1928                                     longest_to_int (value_as_long (low)),
1929                                     longest_to_int (value_as_long (high)));
1930           elt_type = create_array_type (array_type, elt_type, range_type);
1931
1932           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1933             {
1934               /* We need to store the element packed bitsize, as well as
1935                  recompute the array size, because it was previously
1936                  computed based on the unpacked element size.  */
1937               LONGEST lo = value_as_long (low);
1938               LONGEST hi = value_as_long (high);
1939
1940               TYPE_FIELD_BITSIZE (elt_type, 0) =
1941                 decode_packed_array_bitsize (value_type (arr));
1942               /* If the array has no element, then the size is already
1943                  zero, and does not need to be recomputed.  */
1944               if (lo < hi)
1945                 {
1946                   int array_bitsize =
1947                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1948
1949                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1950                 }
1951             }
1952         }
1953
1954       return lookup_pointer_type (elt_type);
1955     }
1956 }
1957
1958 /* If ARR does not represent an array, returns ARR unchanged.
1959    Otherwise, returns either a standard GDB array with bounds set
1960    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1961    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1962
1963 struct value *
1964 ada_coerce_to_simple_array_ptr (struct value *arr)
1965 {
1966   if (ada_is_array_descriptor_type (value_type (arr)))
1967     {
1968       struct type *arrType = ada_type_of_array (arr, 1);
1969
1970       if (arrType == NULL)
1971         return NULL;
1972       return value_cast (arrType, value_copy (desc_data (arr)));
1973     }
1974   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1975     return decode_constrained_packed_array (arr);
1976   else
1977     return arr;
1978 }
1979
1980 /* If ARR does not represent an array, returns ARR unchanged.
1981    Otherwise, returns a standard GDB array describing ARR (which may
1982    be ARR itself if it already is in the proper form).  */
1983
1984 struct value *
1985 ada_coerce_to_simple_array (struct value *arr)
1986 {
1987   if (ada_is_array_descriptor_type (value_type (arr)))
1988     {
1989       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1990
1991       if (arrVal == NULL)
1992         error (_("Bounds unavailable for null array pointer."));
1993       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1994       return value_ind (arrVal);
1995     }
1996   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1997     return decode_constrained_packed_array (arr);
1998   else
1999     return arr;
2000 }
2001
2002 /* If TYPE represents a GNAT array type, return it translated to an
2003    ordinary GDB array type (possibly with BITSIZE fields indicating
2004    packing).  For other types, is the identity.  */
2005
2006 struct type *
2007 ada_coerce_to_simple_array_type (struct type *type)
2008 {
2009   if (ada_is_constrained_packed_array_type (type))
2010     return decode_constrained_packed_array_type (type);
2011
2012   if (ada_is_array_descriptor_type (type))
2013     return ada_check_typedef (desc_data_target_type (type));
2014
2015   return type;
2016 }
2017
2018 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2019
2020 static int
2021 ada_is_packed_array_type  (struct type *type)
2022 {
2023   if (type == NULL)
2024     return 0;
2025   type = desc_base_type (type);
2026   type = ada_check_typedef (type);
2027   return
2028     ada_type_name (type) != NULL
2029     && strstr (ada_type_name (type), "___XP") != NULL;
2030 }
2031
2032 /* Non-zero iff TYPE represents a standard GNAT constrained
2033    packed-array type.  */
2034
2035 int
2036 ada_is_constrained_packed_array_type (struct type *type)
2037 {
2038   return ada_is_packed_array_type (type)
2039     && !ada_is_array_descriptor_type (type);
2040 }
2041
2042 /* Non-zero iff TYPE represents an array descriptor for a
2043    unconstrained packed-array type.  */
2044
2045 static int
2046 ada_is_unconstrained_packed_array_type (struct type *type)
2047 {
2048   return ada_is_packed_array_type (type)
2049     && ada_is_array_descriptor_type (type);
2050 }
2051
2052 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2053    return the size of its elements in bits.  */
2054
2055 static long
2056 decode_packed_array_bitsize (struct type *type)
2057 {
2058   const char *raw_name;
2059   const char *tail;
2060   long bits;
2061
2062   /* Access to arrays implemented as fat pointers are encoded as a typedef
2063      of the fat pointer type.  We need the name of the fat pointer type
2064      to do the decoding, so strip the typedef layer.  */
2065   if (type->code () == TYPE_CODE_TYPEDEF)
2066     type = ada_typedef_target_type (type);
2067
2068   raw_name = ada_type_name (ada_check_typedef (type));
2069   if (!raw_name)
2070     raw_name = ada_type_name (desc_base_type (type));
2071
2072   if (!raw_name)
2073     return 0;
2074
2075   tail = strstr (raw_name, "___XP");
2076   gdb_assert (tail != NULL);
2077
2078   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2079     {
2080       lim_warning
2081         (_("could not understand bit size information on packed array"));
2082       return 0;
2083     }
2084
2085   return bits;
2086 }
2087
2088 /* Given that TYPE is a standard GDB array type with all bounds filled
2089    in, and that the element size of its ultimate scalar constituents
2090    (that is, either its elements, or, if it is an array of arrays, its
2091    elements' elements, etc.) is *ELT_BITS, return an identical type,
2092    but with the bit sizes of its elements (and those of any
2093    constituent arrays) recorded in the BITSIZE components of its
2094    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2095    in bits.
2096
2097    Note that, for arrays whose index type has an XA encoding where
2098    a bound references a record discriminant, getting that discriminant,
2099    and therefore the actual value of that bound, is not possible
2100    because none of the given parameters gives us access to the record.
2101    This function assumes that it is OK in the context where it is being
2102    used to return an array whose bounds are still dynamic and where
2103    the length is arbitrary.  */
2104
2105 static struct type *
2106 constrained_packed_array_type (struct type *type, long *elt_bits)
2107 {
2108   struct type *new_elt_type;
2109   struct type *new_type;
2110   struct type *index_type_desc;
2111   struct type *index_type;
2112   LONGEST low_bound, high_bound;
2113
2114   type = ada_check_typedef (type);
2115   if (type->code () != TYPE_CODE_ARRAY)
2116     return type;
2117
2118   index_type_desc = ada_find_parallel_type (type, "___XA");
2119   if (index_type_desc)
2120     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2121                                       NULL);
2122   else
2123     index_type = TYPE_INDEX_TYPE (type);
2124
2125   new_type = alloc_type_copy (type);
2126   new_elt_type =
2127     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2128                                    elt_bits);
2129   create_array_type (new_type, new_elt_type, index_type);
2130   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2131   new_type->set_name (ada_type_name (type));
2132
2133   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2134        && is_dynamic_type (check_typedef (index_type)))
2135       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2136     low_bound = high_bound = 0;
2137   if (high_bound < low_bound)
2138     *elt_bits = TYPE_LENGTH (new_type) = 0;
2139   else
2140     {
2141       *elt_bits *= (high_bound - low_bound + 1);
2142       TYPE_LENGTH (new_type) =
2143         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2144     }
2145
2146   TYPE_FIXED_INSTANCE (new_type) = 1;
2147   return new_type;
2148 }
2149
2150 /* The array type encoded by TYPE, where
2151    ada_is_constrained_packed_array_type (TYPE).  */
2152
2153 static struct type *
2154 decode_constrained_packed_array_type (struct type *type)
2155 {
2156   const char *raw_name = ada_type_name (ada_check_typedef (type));
2157   char *name;
2158   const char *tail;
2159   struct type *shadow_type;
2160   long bits;
2161
2162   if (!raw_name)
2163     raw_name = ada_type_name (desc_base_type (type));
2164
2165   if (!raw_name)
2166     return NULL;
2167
2168   name = (char *) alloca (strlen (raw_name) + 1);
2169   tail = strstr (raw_name, "___XP");
2170   type = desc_base_type (type);
2171
2172   memcpy (name, raw_name, tail - raw_name);
2173   name[tail - raw_name] = '\000';
2174
2175   shadow_type = ada_find_parallel_type_with_name (type, name);
2176
2177   if (shadow_type == NULL)
2178     {
2179       lim_warning (_("could not find bounds information on packed array"));
2180       return NULL;
2181     }
2182   shadow_type = check_typedef (shadow_type);
2183
2184   if (shadow_type->code () != TYPE_CODE_ARRAY)
2185     {
2186       lim_warning (_("could not understand bounds "
2187                      "information on packed array"));
2188       return NULL;
2189     }
2190
2191   bits = decode_packed_array_bitsize (type);
2192   return constrained_packed_array_type (shadow_type, &bits);
2193 }
2194
2195 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2196    array, returns a simple array that denotes that array.  Its type is a
2197    standard GDB array type except that the BITSIZEs of the array
2198    target types are set to the number of bits in each element, and the
2199    type length is set appropriately.  */
2200
2201 static struct value *
2202 decode_constrained_packed_array (struct value *arr)
2203 {
2204   struct type *type;
2205
2206   /* If our value is a pointer, then dereference it. Likewise if
2207      the value is a reference.  Make sure that this operation does not
2208      cause the target type to be fixed, as this would indirectly cause
2209      this array to be decoded.  The rest of the routine assumes that
2210      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2211      and "value_ind" routines to perform the dereferencing, as opposed
2212      to using "ada_coerce_ref" or "ada_value_ind".  */
2213   arr = coerce_ref (arr);
2214   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2215     arr = value_ind (arr);
2216
2217   type = decode_constrained_packed_array_type (value_type (arr));
2218   if (type == NULL)
2219     {
2220       error (_("can't unpack array"));
2221       return NULL;
2222     }
2223
2224   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2225       && ada_is_modular_type (value_type (arr)))
2226     {
2227        /* This is a (right-justified) modular type representing a packed
2228          array with no wrapper.  In order to interpret the value through
2229          the (left-justified) packed array type we just built, we must
2230          first left-justify it.  */
2231       int bit_size, bit_pos;
2232       ULONGEST mod;
2233
2234       mod = ada_modulus (value_type (arr)) - 1;
2235       bit_size = 0;
2236       while (mod > 0)
2237         {
2238           bit_size += 1;
2239           mod >>= 1;
2240         }
2241       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2242       arr = ada_value_primitive_packed_val (arr, NULL,
2243                                             bit_pos / HOST_CHAR_BIT,
2244                                             bit_pos % HOST_CHAR_BIT,
2245                                             bit_size,
2246                                             type);
2247     }
2248
2249   return coerce_unspec_val_to_type (arr, type);
2250 }
2251
2252
2253 /* The value of the element of packed array ARR at the ARITY indices
2254    given in IND.   ARR must be a simple array.  */
2255
2256 static struct value *
2257 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2258 {
2259   int i;
2260   int bits, elt_off, bit_off;
2261   long elt_total_bit_offset;
2262   struct type *elt_type;
2263   struct value *v;
2264
2265   bits = 0;
2266   elt_total_bit_offset = 0;
2267   elt_type = ada_check_typedef (value_type (arr));
2268   for (i = 0; i < arity; i += 1)
2269     {
2270       if (elt_type->code () != TYPE_CODE_ARRAY
2271           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2272         error
2273           (_("attempt to do packed indexing of "
2274              "something other than a packed array"));
2275       else
2276         {
2277           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2278           LONGEST lowerbound, upperbound;
2279           LONGEST idx;
2280
2281           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2282             {
2283               lim_warning (_("don't know bounds of array"));
2284               lowerbound = upperbound = 0;
2285             }
2286
2287           idx = pos_atr (ind[i]);
2288           if (idx < lowerbound || idx > upperbound)
2289             lim_warning (_("packed array index %ld out of bounds"),
2290                          (long) idx);
2291           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2292           elt_total_bit_offset += (idx - lowerbound) * bits;
2293           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2294         }
2295     }
2296   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2297   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2298
2299   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2300                                       bits, elt_type);
2301   return v;
2302 }
2303
2304 /* Non-zero iff TYPE includes negative integer values.  */
2305
2306 static int
2307 has_negatives (struct type *type)
2308 {
2309   switch (type->code ())
2310     {
2311     default:
2312       return 0;
2313     case TYPE_CODE_INT:
2314       return !TYPE_UNSIGNED (type);
2315     case TYPE_CODE_RANGE:
2316       return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
2317     }
2318 }
2319
2320 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2321    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2322    the unpacked buffer.
2323
2324    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2325    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2326
2327    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2328    zero otherwise.
2329
2330    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2331
2332    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2333
2334 static void
2335 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2336                           gdb_byte *unpacked, int unpacked_len,
2337                           int is_big_endian, int is_signed_type,
2338                           int is_scalar)
2339 {
2340   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2341   int src_idx;                  /* Index into the source area */
2342   int src_bytes_left;           /* Number of source bytes left to process.  */
2343   int srcBitsLeft;              /* Number of source bits left to move */
2344   int unusedLS;                 /* Number of bits in next significant
2345                                    byte of source that are unused */
2346
2347   int unpacked_idx;             /* Index into the unpacked buffer */
2348   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2349
2350   unsigned long accum;          /* Staging area for bits being transferred */
2351   int accumSize;                /* Number of meaningful bits in accum */
2352   unsigned char sign;
2353
2354   /* Transmit bytes from least to most significant; delta is the direction
2355      the indices move.  */
2356   int delta = is_big_endian ? -1 : 1;
2357
2358   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2359      bits from SRC.  .*/
2360   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2361     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2362            bit_size, unpacked_len);
2363
2364   srcBitsLeft = bit_size;
2365   src_bytes_left = src_len;
2366   unpacked_bytes_left = unpacked_len;
2367   sign = 0;
2368
2369   if (is_big_endian)
2370     {
2371       src_idx = src_len - 1;
2372       if (is_signed_type
2373           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2374         sign = ~0;
2375
2376       unusedLS =
2377         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2378         % HOST_CHAR_BIT;
2379
2380       if (is_scalar)
2381         {
2382           accumSize = 0;
2383           unpacked_idx = unpacked_len - 1;
2384         }
2385       else
2386         {
2387           /* Non-scalar values must be aligned at a byte boundary...  */
2388           accumSize =
2389             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2390           /* ... And are placed at the beginning (most-significant) bytes
2391              of the target.  */
2392           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2393           unpacked_bytes_left = unpacked_idx + 1;
2394         }
2395     }
2396   else
2397     {
2398       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2399
2400       src_idx = unpacked_idx = 0;
2401       unusedLS = bit_offset;
2402       accumSize = 0;
2403
2404       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2405         sign = ~0;
2406     }
2407
2408   accum = 0;
2409   while (src_bytes_left > 0)
2410     {
2411       /* Mask for removing bits of the next source byte that are not
2412          part of the value.  */
2413       unsigned int unusedMSMask =
2414         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2415         1;
2416       /* Sign-extend bits for this byte.  */
2417       unsigned int signMask = sign & ~unusedMSMask;
2418
2419       accum |=
2420         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2421       accumSize += HOST_CHAR_BIT - unusedLS;
2422       if (accumSize >= HOST_CHAR_BIT)
2423         {
2424           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2425           accumSize -= HOST_CHAR_BIT;
2426           accum >>= HOST_CHAR_BIT;
2427           unpacked_bytes_left -= 1;
2428           unpacked_idx += delta;
2429         }
2430       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2431       unusedLS = 0;
2432       src_bytes_left -= 1;
2433       src_idx += delta;
2434     }
2435   while (unpacked_bytes_left > 0)
2436     {
2437       accum |= sign << accumSize;
2438       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2439       accumSize -= HOST_CHAR_BIT;
2440       if (accumSize < 0)
2441         accumSize = 0;
2442       accum >>= HOST_CHAR_BIT;
2443       unpacked_bytes_left -= 1;
2444       unpacked_idx += delta;
2445     }
2446 }
2447
2448 /* Create a new value of type TYPE from the contents of OBJ starting
2449    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2450    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2451    assigning through the result will set the field fetched from.
2452    VALADDR is ignored unless OBJ is NULL, in which case,
2453    VALADDR+OFFSET must address the start of storage containing the 
2454    packed value.  The value returned  in this case is never an lval.
2455    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2456
2457 struct value *
2458 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2459                                 long offset, int bit_offset, int bit_size,
2460                                 struct type *type)
2461 {
2462   struct value *v;
2463   const gdb_byte *src;                /* First byte containing data to unpack */
2464   gdb_byte *unpacked;
2465   const int is_scalar = is_scalar_type (type);
2466   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2467   gdb::byte_vector staging;
2468
2469   type = ada_check_typedef (type);
2470
2471   if (obj == NULL)
2472     src = valaddr + offset;
2473   else
2474     src = value_contents (obj) + offset;
2475
2476   if (is_dynamic_type (type))
2477     {
2478       /* The length of TYPE might by dynamic, so we need to resolve
2479          TYPE in order to know its actual size, which we then use
2480          to create the contents buffer of the value we return.
2481          The difficulty is that the data containing our object is
2482          packed, and therefore maybe not at a byte boundary.  So, what
2483          we do, is unpack the data into a byte-aligned buffer, and then
2484          use that buffer as our object's value for resolving the type.  */
2485       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2486       staging.resize (staging_len);
2487
2488       ada_unpack_from_contents (src, bit_offset, bit_size,
2489                                 staging.data (), staging.size (),
2490                                 is_big_endian, has_negatives (type),
2491                                 is_scalar);
2492       type = resolve_dynamic_type (type, staging, 0);
2493       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2494         {
2495           /* This happens when the length of the object is dynamic,
2496              and is actually smaller than the space reserved for it.
2497              For instance, in an array of variant records, the bit_size
2498              we're given is the array stride, which is constant and
2499              normally equal to the maximum size of its element.
2500              But, in reality, each element only actually spans a portion
2501              of that stride.  */
2502           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2503         }
2504     }
2505
2506   if (obj == NULL)
2507     {
2508       v = allocate_value (type);
2509       src = valaddr + offset;
2510     }
2511   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2512     {
2513       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2514       gdb_byte *buf;
2515
2516       v = value_at (type, value_address (obj) + offset);
2517       buf = (gdb_byte *) alloca (src_len);
2518       read_memory (value_address (v), buf, src_len);
2519       src = buf;
2520     }
2521   else
2522     {
2523       v = allocate_value (type);
2524       src = value_contents (obj) + offset;
2525     }
2526
2527   if (obj != NULL)
2528     {
2529       long new_offset = offset;
2530
2531       set_value_component_location (v, obj);
2532       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2533       set_value_bitsize (v, bit_size);
2534       if (value_bitpos (v) >= HOST_CHAR_BIT)
2535         {
2536           ++new_offset;
2537           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2538         }
2539       set_value_offset (v, new_offset);
2540
2541       /* Also set the parent value.  This is needed when trying to
2542          assign a new value (in inferior memory).  */
2543       set_value_parent (v, obj);
2544     }
2545   else
2546     set_value_bitsize (v, bit_size);
2547   unpacked = value_contents_writeable (v);
2548
2549   if (bit_size == 0)
2550     {
2551       memset (unpacked, 0, TYPE_LENGTH (type));
2552       return v;
2553     }
2554
2555   if (staging.size () == TYPE_LENGTH (type))
2556     {
2557       /* Small short-cut: If we've unpacked the data into a buffer
2558          of the same size as TYPE's length, then we can reuse that,
2559          instead of doing the unpacking again.  */
2560       memcpy (unpacked, staging.data (), staging.size ());
2561     }
2562   else
2563     ada_unpack_from_contents (src, bit_offset, bit_size,
2564                               unpacked, TYPE_LENGTH (type),
2565                               is_big_endian, has_negatives (type), is_scalar);
2566
2567   return v;
2568 }
2569
2570 /* Store the contents of FROMVAL into the location of TOVAL.
2571    Return a new value with the location of TOVAL and contents of
2572    FROMVAL.   Handles assignment into packed fields that have
2573    floating-point or non-scalar types.  */
2574
2575 static struct value *
2576 ada_value_assign (struct value *toval, struct value *fromval)
2577 {
2578   struct type *type = value_type (toval);
2579   int bits = value_bitsize (toval);
2580
2581   toval = ada_coerce_ref (toval);
2582   fromval = ada_coerce_ref (fromval);
2583
2584   if (ada_is_direct_array_type (value_type (toval)))
2585     toval = ada_coerce_to_simple_array (toval);
2586   if (ada_is_direct_array_type (value_type (fromval)))
2587     fromval = ada_coerce_to_simple_array (fromval);
2588
2589   if (!deprecated_value_modifiable (toval))
2590     error (_("Left operand of assignment is not a modifiable lvalue."));
2591
2592   if (VALUE_LVAL (toval) == lval_memory
2593       && bits > 0
2594       && (type->code () == TYPE_CODE_FLT
2595           || type->code () == TYPE_CODE_STRUCT))
2596     {
2597       int len = (value_bitpos (toval)
2598                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2599       int from_size;
2600       gdb_byte *buffer = (gdb_byte *) alloca (len);
2601       struct value *val;
2602       CORE_ADDR to_addr = value_address (toval);
2603
2604       if (type->code () == TYPE_CODE_FLT)
2605         fromval = value_cast (type, fromval);
2606
2607       read_memory (to_addr, buffer, len);
2608       from_size = value_bitsize (fromval);
2609       if (from_size == 0)
2610         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2611
2612       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2613       ULONGEST from_offset = 0;
2614       if (is_big_endian && is_scalar_type (value_type (fromval)))
2615         from_offset = from_size - bits;
2616       copy_bitwise (buffer, value_bitpos (toval),
2617                     value_contents (fromval), from_offset,
2618                     bits, is_big_endian);
2619       write_memory_with_notification (to_addr, buffer, len);
2620
2621       val = value_copy (toval);
2622       memcpy (value_contents_raw (val), value_contents (fromval),
2623               TYPE_LENGTH (type));
2624       deprecated_set_value_type (val, type);
2625
2626       return val;
2627     }
2628
2629   return value_assign (toval, fromval);
2630 }
2631
2632
2633 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2634    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2635    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2636    COMPONENT, and not the inferior's memory.  The current contents
2637    of COMPONENT are ignored.
2638
2639    Although not part of the initial design, this function also works
2640    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2641    had a null address, and COMPONENT had an address which is equal to
2642    its offset inside CONTAINER.  */
2643
2644 static void
2645 value_assign_to_component (struct value *container, struct value *component,
2646                            struct value *val)
2647 {
2648   LONGEST offset_in_container =
2649     (LONGEST)  (value_address (component) - value_address (container));
2650   int bit_offset_in_container =
2651     value_bitpos (component) - value_bitpos (container);
2652   int bits;
2653
2654   val = value_cast (value_type (component), val);
2655
2656   if (value_bitsize (component) == 0)
2657     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2658   else
2659     bits = value_bitsize (component);
2660
2661   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2662     {
2663       int src_offset;
2664
2665       if (is_scalar_type (check_typedef (value_type (component))))
2666         src_offset
2667           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2668       else
2669         src_offset = 0;
2670       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2671                     value_bitpos (container) + bit_offset_in_container,
2672                     value_contents (val), src_offset, bits, 1);
2673     }
2674   else
2675     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2676                   value_bitpos (container) + bit_offset_in_container,
2677                   value_contents (val), 0, bits, 0);
2678 }
2679
2680 /* Determine if TYPE is an access to an unconstrained array.  */
2681
2682 bool
2683 ada_is_access_to_unconstrained_array (struct type *type)
2684 {
2685   return (type->code () == TYPE_CODE_TYPEDEF
2686           && is_thick_pntr (ada_typedef_target_type (type)));
2687 }
2688
2689 /* The value of the element of array ARR at the ARITY indices given in IND.
2690    ARR may be either a simple array, GNAT array descriptor, or pointer
2691    thereto.  */
2692
2693 struct value *
2694 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2695 {
2696   int k;
2697   struct value *elt;
2698   struct type *elt_type;
2699
2700   elt = ada_coerce_to_simple_array (arr);
2701
2702   elt_type = ada_check_typedef (value_type (elt));
2703   if (elt_type->code () == TYPE_CODE_ARRAY
2704       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2705     return value_subscript_packed (elt, arity, ind);
2706
2707   for (k = 0; k < arity; k += 1)
2708     {
2709       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2710
2711       if (elt_type->code () != TYPE_CODE_ARRAY)
2712         error (_("too many subscripts (%d expected)"), k);
2713
2714       elt = value_subscript (elt, pos_atr (ind[k]));
2715
2716       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2717           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2718         {
2719           /* The element is a typedef to an unconstrained array,
2720              except that the value_subscript call stripped the
2721              typedef layer.  The typedef layer is GNAT's way to
2722              specify that the element is, at the source level, an
2723              access to the unconstrained array, rather than the
2724              unconstrained array.  So, we need to restore that
2725              typedef layer, which we can do by forcing the element's
2726              type back to its original type. Otherwise, the returned
2727              value is going to be printed as the array, rather
2728              than as an access.  Another symptom of the same issue
2729              would be that an expression trying to dereference the
2730              element would also be improperly rejected.  */
2731           deprecated_set_value_type (elt, saved_elt_type);
2732         }
2733
2734       elt_type = ada_check_typedef (value_type (elt));
2735     }
2736
2737   return elt;
2738 }
2739
2740 /* Assuming ARR is a pointer to a GDB array, the value of the element
2741    of *ARR at the ARITY indices given in IND.
2742    Does not read the entire array into memory.
2743
2744    Note: Unlike what one would expect, this function is used instead of
2745    ada_value_subscript for basically all non-packed array types.  The reason
2746    for this is that a side effect of doing our own pointer arithmetics instead
2747    of relying on value_subscript is that there is no implicit typedef peeling.
2748    This is important for arrays of array accesses, where it allows us to
2749    preserve the fact that the array's element is an array access, where the
2750    access part os encoded in a typedef layer.  */
2751
2752 static struct value *
2753 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2754 {
2755   int k;
2756   struct value *array_ind = ada_value_ind (arr);
2757   struct type *type
2758     = check_typedef (value_enclosing_type (array_ind));
2759
2760   if (type->code () == TYPE_CODE_ARRAY
2761       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2762     return value_subscript_packed (array_ind, arity, ind);
2763
2764   for (k = 0; k < arity; k += 1)
2765     {
2766       LONGEST lwb, upb;
2767
2768       if (type->code () != TYPE_CODE_ARRAY)
2769         error (_("too many subscripts (%d expected)"), k);
2770       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2771                         value_copy (arr));
2772       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2773       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2774       type = TYPE_TARGET_TYPE (type);
2775     }
2776
2777   return value_ind (arr);
2778 }
2779
2780 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2781    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2782    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2783    this array is LOW, as per Ada rules.  */
2784 static struct value *
2785 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2786                           int low, int high)
2787 {
2788   struct type *type0 = ada_check_typedef (type);
2789   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2790   struct type *index_type
2791     = create_static_range_type (NULL, base_index_type, low, high);
2792   struct type *slice_type = create_array_type_with_stride
2793                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2794                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2795                                TYPE_FIELD_BITSIZE (type0, 0));
2796   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2797   LONGEST base_low_pos, low_pos;
2798   CORE_ADDR base;
2799
2800   if (!discrete_position (base_index_type, low, &low_pos)
2801       || !discrete_position (base_index_type, base_low, &base_low_pos))
2802     {
2803       warning (_("unable to get positions in slice, use bounds instead"));
2804       low_pos = low;
2805       base_low_pos = base_low;
2806     }
2807
2808   base = value_as_address (array_ptr)
2809     + ((low_pos - base_low_pos)
2810        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2811   return value_at_lazy (slice_type, base);
2812 }
2813
2814
2815 static struct value *
2816 ada_value_slice (struct value *array, int low, int high)
2817 {
2818   struct type *type = ada_check_typedef (value_type (array));
2819   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2820   struct type *index_type
2821     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2822   struct type *slice_type = create_array_type_with_stride
2823                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2824                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2825                                TYPE_FIELD_BITSIZE (type, 0));
2826   LONGEST low_pos, high_pos;
2827
2828   if (!discrete_position (base_index_type, low, &low_pos)
2829       || !discrete_position (base_index_type, high, &high_pos))
2830     {
2831       warning (_("unable to get positions in slice, use bounds instead"));
2832       low_pos = low;
2833       high_pos = high;
2834     }
2835
2836   return value_cast (slice_type,
2837                      value_slice (array, low, high_pos - low_pos + 1));
2838 }
2839
2840 /* If type is a record type in the form of a standard GNAT array
2841    descriptor, returns the number of dimensions for type.  If arr is a
2842    simple array, returns the number of "array of"s that prefix its
2843    type designation.  Otherwise, returns 0.  */
2844
2845 int
2846 ada_array_arity (struct type *type)
2847 {
2848   int arity;
2849
2850   if (type == NULL)
2851     return 0;
2852
2853   type = desc_base_type (type);
2854
2855   arity = 0;
2856   if (type->code () == TYPE_CODE_STRUCT)
2857     return desc_arity (desc_bounds_type (type));
2858   else
2859     while (type->code () == TYPE_CODE_ARRAY)
2860       {
2861         arity += 1;
2862         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2863       }
2864
2865   return arity;
2866 }
2867
2868 /* If TYPE is a record type in the form of a standard GNAT array
2869    descriptor or a simple array type, returns the element type for
2870    TYPE after indexing by NINDICES indices, or by all indices if
2871    NINDICES is -1.  Otherwise, returns NULL.  */
2872
2873 struct type *
2874 ada_array_element_type (struct type *type, int nindices)
2875 {
2876   type = desc_base_type (type);
2877
2878   if (type->code () == TYPE_CODE_STRUCT)
2879     {
2880       int k;
2881       struct type *p_array_type;
2882
2883       p_array_type = desc_data_target_type (type);
2884
2885       k = ada_array_arity (type);
2886       if (k == 0)
2887         return NULL;
2888
2889       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2890       if (nindices >= 0 && k > nindices)
2891         k = nindices;
2892       while (k > 0 && p_array_type != NULL)
2893         {
2894           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2895           k -= 1;
2896         }
2897       return p_array_type;
2898     }
2899   else if (type->code () == TYPE_CODE_ARRAY)
2900     {
2901       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2902         {
2903           type = TYPE_TARGET_TYPE (type);
2904           nindices -= 1;
2905         }
2906       return type;
2907     }
2908
2909   return NULL;
2910 }
2911
2912 /* The type of nth index in arrays of given type (n numbering from 1).
2913    Does not examine memory.  Throws an error if N is invalid or TYPE
2914    is not an array type.  NAME is the name of the Ada attribute being
2915    evaluated ('range, 'first, 'last, or 'length); it is used in building
2916    the error message.  */
2917
2918 static struct type *
2919 ada_index_type (struct type *type, int n, const char *name)
2920 {
2921   struct type *result_type;
2922
2923   type = desc_base_type (type);
2924
2925   if (n < 0 || n > ada_array_arity (type))
2926     error (_("invalid dimension number to '%s"), name);
2927
2928   if (ada_is_simple_array_type (type))
2929     {
2930       int i;
2931
2932       for (i = 1; i < n; i += 1)
2933         type = TYPE_TARGET_TYPE (type);
2934       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2935       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2936          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2937          perhaps stabsread.c would make more sense.  */
2938       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2939         result_type = NULL;
2940     }
2941   else
2942     {
2943       result_type = desc_index_type (desc_bounds_type (type), n);
2944       if (result_type == NULL)
2945         error (_("attempt to take bound of something that is not an array"));
2946     }
2947
2948   return result_type;
2949 }
2950
2951 /* Given that arr is an array type, returns the lower bound of the
2952    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2953    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2954    array-descriptor type.  It works for other arrays with bounds supplied
2955    by run-time quantities other than discriminants.  */
2956
2957 static LONGEST
2958 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2959 {
2960   struct type *type, *index_type_desc, *index_type;
2961   int i;
2962
2963   gdb_assert (which == 0 || which == 1);
2964
2965   if (ada_is_constrained_packed_array_type (arr_type))
2966     arr_type = decode_constrained_packed_array_type (arr_type);
2967
2968   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2969     return (LONGEST) - which;
2970
2971   if (arr_type->code () == TYPE_CODE_PTR)
2972     type = TYPE_TARGET_TYPE (arr_type);
2973   else
2974     type = arr_type;
2975
2976   if (TYPE_FIXED_INSTANCE (type))
2977     {
2978       /* The array has already been fixed, so we do not need to
2979          check the parallel ___XA type again.  That encoding has
2980          already been applied, so ignore it now.  */
2981       index_type_desc = NULL;
2982     }
2983   else
2984     {
2985       index_type_desc = ada_find_parallel_type (type, "___XA");
2986       ada_fixup_array_indexes_type (index_type_desc);
2987     }
2988
2989   if (index_type_desc != NULL)
2990     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
2991                                       NULL);
2992   else
2993     {
2994       struct type *elt_type = check_typedef (type);
2995
2996       for (i = 1; i < n; i++)
2997         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2998
2999       index_type = TYPE_INDEX_TYPE (elt_type);
3000     }
3001
3002   return
3003     (LONGEST) (which == 0
3004                ? ada_discrete_type_low_bound (index_type)
3005                : ada_discrete_type_high_bound (index_type));
3006 }
3007
3008 /* Given that arr is an array value, returns the lower bound of the
3009    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3010    WHICH is 1.  This routine will also work for arrays with bounds
3011    supplied by run-time quantities other than discriminants.  */
3012
3013 static LONGEST
3014 ada_array_bound (struct value *arr, int n, int which)
3015 {
3016   struct type *arr_type;
3017
3018   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3019     arr = value_ind (arr);
3020   arr_type = value_enclosing_type (arr);
3021
3022   if (ada_is_constrained_packed_array_type (arr_type))
3023     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3024   else if (ada_is_simple_array_type (arr_type))
3025     return ada_array_bound_from_type (arr_type, n, which);
3026   else
3027     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3028 }
3029
3030 /* Given that arr is an array value, returns the length of the
3031    nth index.  This routine will also work for arrays with bounds
3032    supplied by run-time quantities other than discriminants.
3033    Does not work for arrays indexed by enumeration types with representation
3034    clauses at the moment.  */
3035
3036 static LONGEST
3037 ada_array_length (struct value *arr, int n)
3038 {
3039   struct type *arr_type, *index_type;
3040   int low, high;
3041
3042   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3043     arr = value_ind (arr);
3044   arr_type = value_enclosing_type (arr);
3045
3046   if (ada_is_constrained_packed_array_type (arr_type))
3047     return ada_array_length (decode_constrained_packed_array (arr), n);
3048
3049   if (ada_is_simple_array_type (arr_type))
3050     {
3051       low = ada_array_bound_from_type (arr_type, n, 0);
3052       high = ada_array_bound_from_type (arr_type, n, 1);
3053     }
3054   else
3055     {
3056       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3057       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3058     }
3059
3060   arr_type = check_typedef (arr_type);
3061   index_type = ada_index_type (arr_type, n, "length");
3062   if (index_type != NULL)
3063     {
3064       struct type *base_type;
3065       if (index_type->code () == TYPE_CODE_RANGE)
3066         base_type = TYPE_TARGET_TYPE (index_type);
3067       else
3068         base_type = index_type;
3069
3070       low = pos_atr (value_from_longest (base_type, low));
3071       high = pos_atr (value_from_longest (base_type, high));
3072     }
3073   return high - low + 1;
3074 }
3075
3076 /* An array whose type is that of ARR_TYPE (an array type), with
3077    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3078    less than LOW, then LOW-1 is used.  */
3079
3080 static struct value *
3081 empty_array (struct type *arr_type, int low, int high)
3082 {
3083   struct type *arr_type0 = ada_check_typedef (arr_type);
3084   struct type *index_type
3085     = create_static_range_type
3086         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3087          high < low ? low - 1 : high);
3088   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3089
3090   return allocate_value (create_array_type (NULL, elt_type, index_type));
3091 }
3092 \f
3093
3094                                 /* Name resolution */
3095
3096 /* The "decoded" name for the user-definable Ada operator corresponding
3097    to OP.  */
3098
3099 static const char *
3100 ada_decoded_op_name (enum exp_opcode op)
3101 {
3102   int i;
3103
3104   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3105     {
3106       if (ada_opname_table[i].op == op)
3107         return ada_opname_table[i].decoded;
3108     }
3109   error (_("Could not find operator name for opcode"));
3110 }
3111
3112 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3113    in a listing of choices during disambiguation (see sort_choices, below).
3114    The idea is that overloadings of a subprogram name from the
3115    same package should sort in their source order.  We settle for ordering
3116    such symbols by their trailing number (__N  or $N).  */
3117
3118 static int
3119 encoded_ordered_before (const char *N0, const char *N1)
3120 {
3121   if (N1 == NULL)
3122     return 0;
3123   else if (N0 == NULL)
3124     return 1;
3125   else
3126     {
3127       int k0, k1;
3128
3129       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3130         ;
3131       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3132         ;
3133       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3134           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3135         {
3136           int n0, n1;
3137
3138           n0 = k0;
3139           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3140             n0 -= 1;
3141           n1 = k1;
3142           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3143             n1 -= 1;
3144           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3145             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3146         }
3147       return (strcmp (N0, N1) < 0);
3148     }
3149 }
3150
3151 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3152    encoded names.  */
3153
3154 static void
3155 sort_choices (struct block_symbol syms[], int nsyms)
3156 {
3157   int i;
3158
3159   for (i = 1; i < nsyms; i += 1)
3160     {
3161       struct block_symbol sym = syms[i];
3162       int j;
3163
3164       for (j = i - 1; j >= 0; j -= 1)
3165         {
3166           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3167                                       sym.symbol->linkage_name ()))
3168             break;
3169           syms[j + 1] = syms[j];
3170         }
3171       syms[j + 1] = sym;
3172     }
3173 }
3174
3175 /* Whether GDB should display formals and return types for functions in the
3176    overloads selection menu.  */
3177 static bool print_signatures = true;
3178
3179 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3180    all but functions, the signature is just the name of the symbol.  For
3181    functions, this is the name of the function, the list of types for formals
3182    and the return type (if any).  */
3183
3184 static void
3185 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3186                             const struct type_print_options *flags)
3187 {
3188   struct type *type = SYMBOL_TYPE (sym);
3189
3190   fprintf_filtered (stream, "%s", sym->print_name ());
3191   if (!print_signatures
3192       || type == NULL
3193       || type->code () != TYPE_CODE_FUNC)
3194     return;
3195
3196   if (type->num_fields () > 0)
3197     {
3198       int i;
3199
3200       fprintf_filtered (stream, " (");
3201       for (i = 0; i < type->num_fields (); ++i)
3202         {
3203           if (i > 0)
3204             fprintf_filtered (stream, "; ");
3205           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3206                           flags);
3207         }
3208       fprintf_filtered (stream, ")");
3209     }
3210   if (TYPE_TARGET_TYPE (type) != NULL
3211       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3212     {
3213       fprintf_filtered (stream, " return ");
3214       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3215     }
3216 }
3217
3218 /* Read and validate a set of numeric choices from the user in the
3219    range 0 .. N_CHOICES-1.  Place the results in increasing
3220    order in CHOICES[0 .. N-1], and return N.
3221
3222    The user types choices as a sequence of numbers on one line
3223    separated by blanks, encoding them as follows:
3224
3225      + A choice of 0 means to cancel the selection, throwing an error.
3226      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3227      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3228
3229    The user is not allowed to choose more than MAX_RESULTS values.
3230
3231    ANNOTATION_SUFFIX, if present, is used to annotate the input
3232    prompts (for use with the -f switch).  */
3233
3234 static int
3235 get_selections (int *choices, int n_choices, int max_results,
3236                 int is_all_choice, const char *annotation_suffix)
3237 {
3238   const char *args;
3239   const char *prompt;
3240   int n_chosen;
3241   int first_choice = is_all_choice ? 2 : 1;
3242
3243   prompt = getenv ("PS2");
3244   if (prompt == NULL)
3245     prompt = "> ";
3246
3247   args = command_line_input (prompt, annotation_suffix);
3248
3249   if (args == NULL)
3250     error_no_arg (_("one or more choice numbers"));
3251
3252   n_chosen = 0;
3253
3254   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3255      order, as given in args.  Choices are validated.  */
3256   while (1)
3257     {
3258       char *args2;
3259       int choice, j;
3260
3261       args = skip_spaces (args);
3262       if (*args == '\0' && n_chosen == 0)
3263         error_no_arg (_("one or more choice numbers"));
3264       else if (*args == '\0')
3265         break;
3266
3267       choice = strtol (args, &args2, 10);
3268       if (args == args2 || choice < 0
3269           || choice > n_choices + first_choice - 1)
3270         error (_("Argument must be choice number"));
3271       args = args2;
3272
3273       if (choice == 0)
3274         error (_("cancelled"));
3275
3276       if (choice < first_choice)
3277         {
3278           n_chosen = n_choices;
3279           for (j = 0; j < n_choices; j += 1)
3280             choices[j] = j;
3281           break;
3282         }
3283       choice -= first_choice;
3284
3285       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3286         {
3287         }
3288
3289       if (j < 0 || choice != choices[j])
3290         {
3291           int k;
3292
3293           for (k = n_chosen - 1; k > j; k -= 1)
3294             choices[k + 1] = choices[k];
3295           choices[j + 1] = choice;
3296           n_chosen += 1;
3297         }
3298     }
3299
3300   if (n_chosen > max_results)
3301     error (_("Select no more than %d of the above"), max_results);
3302
3303   return n_chosen;
3304 }
3305
3306 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3307    by asking the user (if necessary), returning the number selected,
3308    and setting the first elements of SYMS items.  Error if no symbols
3309    selected.  */
3310
3311 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3312    to be re-integrated one of these days.  */
3313
3314 static int
3315 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3316 {
3317   int i;
3318   int *chosen = XALLOCAVEC (int , nsyms);
3319   int n_chosen;
3320   int first_choice = (max_results == 1) ? 1 : 2;
3321   const char *select_mode = multiple_symbols_select_mode ();
3322
3323   if (max_results < 1)
3324     error (_("Request to select 0 symbols!"));
3325   if (nsyms <= 1)
3326     return nsyms;
3327
3328   if (select_mode == multiple_symbols_cancel)
3329     error (_("\
3330 canceled because the command is ambiguous\n\
3331 See set/show multiple-symbol."));
3332
3333   /* If select_mode is "all", then return all possible symbols.
3334      Only do that if more than one symbol can be selected, of course.
3335      Otherwise, display the menu as usual.  */
3336   if (select_mode == multiple_symbols_all && max_results > 1)
3337     return nsyms;
3338
3339   printf_filtered (_("[0] cancel\n"));
3340   if (max_results > 1)
3341     printf_filtered (_("[1] all\n"));
3342
3343   sort_choices (syms, nsyms);
3344
3345   for (i = 0; i < nsyms; i += 1)
3346     {
3347       if (syms[i].symbol == NULL)
3348         continue;
3349
3350       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3351         {
3352           struct symtab_and_line sal =
3353             find_function_start_sal (syms[i].symbol, 1);
3354
3355           printf_filtered ("[%d] ", i + first_choice);
3356           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3357                                       &type_print_raw_options);
3358           if (sal.symtab == NULL)
3359             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3360                              metadata_style.style ().ptr (), nullptr, sal.line);
3361           else
3362             printf_filtered
3363               (_(" at %ps:%d\n"),
3364                styled_string (file_name_style.style (),
3365                               symtab_to_filename_for_display (sal.symtab)),
3366                sal.line);
3367           continue;
3368         }
3369       else
3370         {
3371           int is_enumeral =
3372             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3373              && SYMBOL_TYPE (syms[i].symbol) != NULL
3374              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3375           struct symtab *symtab = NULL;
3376
3377           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3378             symtab = symbol_symtab (syms[i].symbol);
3379
3380           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3381             {
3382               printf_filtered ("[%d] ", i + first_choice);
3383               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3384                                           &type_print_raw_options);
3385               printf_filtered (_(" at %s:%d\n"),
3386                                symtab_to_filename_for_display (symtab),
3387                                SYMBOL_LINE (syms[i].symbol));
3388             }
3389           else if (is_enumeral
3390                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3391             {
3392               printf_filtered (("[%d] "), i + first_choice);
3393               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3394                               gdb_stdout, -1, 0, &type_print_raw_options);
3395               printf_filtered (_("'(%s) (enumeral)\n"),
3396                                syms[i].symbol->print_name ());
3397             }
3398           else
3399             {
3400               printf_filtered ("[%d] ", i + first_choice);
3401               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3402                                           &type_print_raw_options);
3403
3404               if (symtab != NULL)
3405                 printf_filtered (is_enumeral
3406                                  ? _(" in %s (enumeral)\n")
3407                                  : _(" at %s:?\n"),
3408                                  symtab_to_filename_for_display (symtab));
3409               else
3410                 printf_filtered (is_enumeral
3411                                  ? _(" (enumeral)\n")
3412                                  : _(" at ?\n"));
3413             }
3414         }
3415     }
3416
3417   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3418                              "overload-choice");
3419
3420   for (i = 0; i < n_chosen; i += 1)
3421     syms[i] = syms[chosen[i]];
3422
3423   return n_chosen;
3424 }
3425
3426 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3427    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3428    undefined namespace) and converts operators that are
3429    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3430    non-null, it provides a preferred result type [at the moment, only
3431    type void has any effect---causing procedures to be preferred over
3432    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3433    return type is preferred.  May change (expand) *EXP.  */
3434
3435 static void
3436 resolve (expression_up *expp, int void_context_p, int parse_completion,
3437          innermost_block_tracker *tracker)
3438 {
3439   struct type *context_type = NULL;
3440   int pc = 0;
3441
3442   if (void_context_p)
3443     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3444
3445   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3446 }
3447
3448 /* Resolve the operator of the subexpression beginning at
3449    position *POS of *EXPP.  "Resolving" consists of replacing
3450    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3451    with their resolutions, replacing built-in operators with
3452    function calls to user-defined operators, where appropriate, and,
3453    when DEPROCEDURE_P is non-zero, converting function-valued variables
3454    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3455    are as in ada_resolve, above.  */
3456
3457 static struct value *
3458 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3459                 struct type *context_type, int parse_completion,
3460                 innermost_block_tracker *tracker)
3461 {
3462   int pc = *pos;
3463   int i;
3464   struct expression *exp;       /* Convenience: == *expp.  */
3465   enum exp_opcode op = (*expp)->elts[pc].opcode;
3466   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3467   int nargs;                    /* Number of operands.  */
3468   int oplen;
3469
3470   argvec = NULL;
3471   nargs = 0;
3472   exp = expp->get ();
3473
3474   /* Pass one: resolve operands, saving their types and updating *pos,
3475      if needed.  */
3476   switch (op)
3477     {
3478     case OP_FUNCALL:
3479       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3480           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3481         *pos += 7;
3482       else
3483         {
3484           *pos += 3;
3485           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3486         }
3487       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3488       break;
3489
3490     case UNOP_ADDR:
3491       *pos += 1;
3492       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3493       break;
3494
3495     case UNOP_QUAL:
3496       *pos += 3;
3497       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3498                       parse_completion, tracker);
3499       break;
3500
3501     case OP_ATR_MODULUS:
3502     case OP_ATR_SIZE:
3503     case OP_ATR_TAG:
3504     case OP_ATR_FIRST:
3505     case OP_ATR_LAST:
3506     case OP_ATR_LENGTH:
3507     case OP_ATR_POS:
3508     case OP_ATR_VAL:
3509     case OP_ATR_MIN:
3510     case OP_ATR_MAX:
3511     case TERNOP_IN_RANGE:
3512     case BINOP_IN_BOUNDS:
3513     case UNOP_IN_RANGE:
3514     case OP_AGGREGATE:
3515     case OP_OTHERS:
3516     case OP_CHOICES:
3517     case OP_POSITIONAL:
3518     case OP_DISCRETE_RANGE:
3519     case OP_NAME:
3520       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3521       *pos += oplen;
3522       break;
3523
3524     case BINOP_ASSIGN:
3525       {
3526         struct value *arg1;
3527
3528         *pos += 1;
3529         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3530         if (arg1 == NULL)
3531           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3532         else
3533           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3534                           tracker);
3535         break;
3536       }
3537
3538     case UNOP_CAST:
3539       *pos += 3;
3540       nargs = 1;
3541       break;
3542
3543     case BINOP_ADD:
3544     case BINOP_SUB:
3545     case BINOP_MUL:
3546     case BINOP_DIV:
3547     case BINOP_REM:
3548     case BINOP_MOD:
3549     case BINOP_EXP:
3550     case BINOP_CONCAT:
3551     case BINOP_LOGICAL_AND:
3552     case BINOP_LOGICAL_OR:
3553     case BINOP_BITWISE_AND:
3554     case BINOP_BITWISE_IOR:
3555     case BINOP_BITWISE_XOR:
3556
3557     case BINOP_EQUAL:
3558     case BINOP_NOTEQUAL:
3559     case BINOP_LESS:
3560     case BINOP_GTR:
3561     case BINOP_LEQ:
3562     case BINOP_GEQ:
3563
3564     case BINOP_REPEAT:
3565     case BINOP_SUBSCRIPT:
3566     case BINOP_COMMA:
3567       *pos += 1;
3568       nargs = 2;
3569       break;
3570
3571     case UNOP_NEG:
3572     case UNOP_PLUS:
3573     case UNOP_LOGICAL_NOT:
3574     case UNOP_ABS:
3575     case UNOP_IND:
3576       *pos += 1;
3577       nargs = 1;
3578       break;
3579
3580     case OP_LONG:
3581     case OP_FLOAT:
3582     case OP_VAR_VALUE:
3583     case OP_VAR_MSYM_VALUE:
3584       *pos += 4;
3585       break;
3586
3587     case OP_TYPE:
3588     case OP_BOOL:
3589     case OP_LAST:
3590     case OP_INTERNALVAR:
3591       *pos += 3;
3592       break;
3593
3594     case UNOP_MEMVAL:
3595       *pos += 3;
3596       nargs = 1;
3597       break;
3598
3599     case OP_REGISTER:
3600       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3601       break;
3602
3603     case STRUCTOP_STRUCT:
3604       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3605       nargs = 1;
3606       break;
3607
3608     case TERNOP_SLICE:
3609       *pos += 1;
3610       nargs = 3;
3611       break;
3612
3613     case OP_STRING:
3614       break;
3615
3616     default:
3617       error (_("Unexpected operator during name resolution"));
3618     }
3619
3620   argvec = XALLOCAVEC (struct value *, nargs + 1);
3621   for (i = 0; i < nargs; i += 1)
3622     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3623                                 tracker);
3624   argvec[i] = NULL;
3625   exp = expp->get ();
3626
3627   /* Pass two: perform any resolution on principal operator.  */
3628   switch (op)
3629     {
3630     default:
3631       break;
3632
3633     case OP_VAR_VALUE:
3634       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3635         {
3636           std::vector<struct block_symbol> candidates;
3637           int n_candidates;
3638
3639           n_candidates =
3640             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3641                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3642                                     &candidates);
3643
3644           if (n_candidates > 1)
3645             {
3646               /* Types tend to get re-introduced locally, so if there
3647                  are any local symbols that are not types, first filter
3648                  out all types.  */
3649               int j;
3650               for (j = 0; j < n_candidates; j += 1)
3651                 switch (SYMBOL_CLASS (candidates[j].symbol))
3652                   {
3653                   case LOC_REGISTER:
3654                   case LOC_ARG:
3655                   case LOC_REF_ARG:
3656                   case LOC_REGPARM_ADDR:
3657                   case LOC_LOCAL:
3658                   case LOC_COMPUTED:
3659                     goto FoundNonType;
3660                   default:
3661                     break;
3662                   }
3663             FoundNonType:
3664               if (j < n_candidates)
3665                 {
3666                   j = 0;
3667                   while (j < n_candidates)
3668                     {
3669                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3670                         {
3671                           candidates[j] = candidates[n_candidates - 1];
3672                           n_candidates -= 1;
3673                         }
3674                       else
3675                         j += 1;
3676                     }
3677                 }
3678             }
3679
3680           if (n_candidates == 0)
3681             error (_("No definition found for %s"),
3682                    exp->elts[pc + 2].symbol->print_name ());
3683           else if (n_candidates == 1)
3684             i = 0;
3685           else if (deprocedure_p
3686                    && !is_nonfunction (candidates.data (), n_candidates))
3687             {
3688               i = ada_resolve_function
3689                 (candidates.data (), n_candidates, NULL, 0,
3690                  exp->elts[pc + 2].symbol->linkage_name (),
3691                  context_type, parse_completion);
3692               if (i < 0)
3693                 error (_("Could not find a match for %s"),
3694                        exp->elts[pc + 2].symbol->print_name ());
3695             }
3696           else
3697             {
3698               printf_filtered (_("Multiple matches for %s\n"),
3699                                exp->elts[pc + 2].symbol->print_name ());
3700               user_select_syms (candidates.data (), n_candidates, 1);
3701               i = 0;
3702             }
3703
3704           exp->elts[pc + 1].block = candidates[i].block;
3705           exp->elts[pc + 2].symbol = candidates[i].symbol;
3706           tracker->update (candidates[i]);
3707         }
3708
3709       if (deprocedure_p
3710           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3711               == TYPE_CODE_FUNC))
3712         {
3713           replace_operator_with_call (expp, pc, 0, 4,
3714                                       exp->elts[pc + 2].symbol,
3715                                       exp->elts[pc + 1].block);
3716           exp = expp->get ();
3717         }
3718       break;
3719
3720     case OP_FUNCALL:
3721       {
3722         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3723             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3724           {
3725             std::vector<struct block_symbol> candidates;
3726             int n_candidates;
3727
3728             n_candidates =
3729               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3730                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3731                                       &candidates);
3732
3733             if (n_candidates == 1)
3734               i = 0;
3735             else
3736               {
3737                 i = ada_resolve_function
3738                   (candidates.data (), n_candidates,
3739                    argvec, nargs,
3740                    exp->elts[pc + 5].symbol->linkage_name (),
3741                    context_type, parse_completion);
3742                 if (i < 0)
3743                   error (_("Could not find a match for %s"),
3744                          exp->elts[pc + 5].symbol->print_name ());
3745               }
3746
3747             exp->elts[pc + 4].block = candidates[i].block;
3748             exp->elts[pc + 5].symbol = candidates[i].symbol;
3749             tracker->update (candidates[i]);
3750           }
3751       }
3752       break;
3753     case BINOP_ADD:
3754     case BINOP_SUB:
3755     case BINOP_MUL:
3756     case BINOP_DIV:
3757     case BINOP_REM:
3758     case BINOP_MOD:
3759     case BINOP_CONCAT:
3760     case BINOP_BITWISE_AND:
3761     case BINOP_BITWISE_IOR:
3762     case BINOP_BITWISE_XOR:
3763     case BINOP_EQUAL:
3764     case BINOP_NOTEQUAL:
3765     case BINOP_LESS:
3766     case BINOP_GTR:
3767     case BINOP_LEQ:
3768     case BINOP_GEQ:
3769     case BINOP_EXP:
3770     case UNOP_NEG:
3771     case UNOP_PLUS:
3772     case UNOP_LOGICAL_NOT:
3773     case UNOP_ABS:
3774       if (possible_user_operator_p (op, argvec))
3775         {
3776           std::vector<struct block_symbol> candidates;
3777           int n_candidates;
3778
3779           n_candidates =
3780             ada_lookup_symbol_list (ada_decoded_op_name (op),
3781                                     NULL, VAR_DOMAIN,
3782                                     &candidates);
3783
3784           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3785                                     nargs, ada_decoded_op_name (op), NULL,
3786                                     parse_completion);
3787           if (i < 0)
3788             break;
3789
3790           replace_operator_with_call (expp, pc, nargs, 1,
3791                                       candidates[i].symbol,
3792                                       candidates[i].block);
3793           exp = expp->get ();
3794         }
3795       break;
3796
3797     case OP_TYPE:
3798     case OP_REGISTER:
3799       return NULL;
3800     }
3801
3802   *pos = pc;
3803   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3804     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3805                                     exp->elts[pc + 1].objfile,
3806                                     exp->elts[pc + 2].msymbol);
3807   else
3808     return evaluate_subexp_type (exp, pos);
3809 }
3810
3811 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3812    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3813    a non-pointer.  */
3814 /* The term "match" here is rather loose.  The match is heuristic and
3815    liberal.  */
3816
3817 static int
3818 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3819 {
3820   ftype = ada_check_typedef (ftype);
3821   atype = ada_check_typedef (atype);
3822
3823   if (ftype->code () == TYPE_CODE_REF)
3824     ftype = TYPE_TARGET_TYPE (ftype);
3825   if (atype->code () == TYPE_CODE_REF)
3826     atype = TYPE_TARGET_TYPE (atype);
3827
3828   switch (ftype->code ())
3829     {
3830     default:
3831       return ftype->code () == atype->code ();
3832     case TYPE_CODE_PTR:
3833       if (atype->code () == TYPE_CODE_PTR)
3834         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3835                                TYPE_TARGET_TYPE (atype), 0);
3836       else
3837         return (may_deref
3838                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3839     case TYPE_CODE_INT:
3840     case TYPE_CODE_ENUM:
3841     case TYPE_CODE_RANGE:
3842       switch (atype->code ())
3843         {
3844         case TYPE_CODE_INT:
3845         case TYPE_CODE_ENUM:
3846         case TYPE_CODE_RANGE:
3847           return 1;
3848         default:
3849           return 0;
3850         }
3851
3852     case TYPE_CODE_ARRAY:
3853       return (atype->code () == TYPE_CODE_ARRAY
3854               || ada_is_array_descriptor_type (atype));
3855
3856     case TYPE_CODE_STRUCT:
3857       if (ada_is_array_descriptor_type (ftype))
3858         return (atype->code () == TYPE_CODE_ARRAY
3859                 || ada_is_array_descriptor_type (atype));
3860       else
3861         return (atype->code () == TYPE_CODE_STRUCT
3862                 && !ada_is_array_descriptor_type (atype));
3863
3864     case TYPE_CODE_UNION:
3865     case TYPE_CODE_FLT:
3866       return (atype->code () == ftype->code ());
3867     }
3868 }
3869
3870 /* Return non-zero if the formals of FUNC "sufficiently match" the
3871    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3872    may also be an enumeral, in which case it is treated as a 0-
3873    argument function.  */
3874
3875 static int
3876 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3877 {
3878   int i;
3879   struct type *func_type = SYMBOL_TYPE (func);
3880
3881   if (SYMBOL_CLASS (func) == LOC_CONST
3882       && func_type->code () == TYPE_CODE_ENUM)
3883     return (n_actuals == 0);
3884   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3885     return 0;
3886
3887   if (func_type->num_fields () != n_actuals)
3888     return 0;
3889
3890   for (i = 0; i < n_actuals; i += 1)
3891     {
3892       if (actuals[i] == NULL)
3893         return 0;
3894       else
3895         {
3896           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3897                                                                    i));
3898           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3899
3900           if (!ada_type_match (ftype, atype, 1))
3901             return 0;
3902         }
3903     }
3904   return 1;
3905 }
3906
3907 /* False iff function type FUNC_TYPE definitely does not produce a value
3908    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3909    FUNC_TYPE is not a valid function type with a non-null return type
3910    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3911
3912 static int
3913 return_match (struct type *func_type, struct type *context_type)
3914 {
3915   struct type *return_type;
3916
3917   if (func_type == NULL)
3918     return 1;
3919
3920   if (func_type->code () == TYPE_CODE_FUNC)
3921     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3922   else
3923     return_type = get_base_type (func_type);
3924   if (return_type == NULL)
3925     return 1;
3926
3927   context_type = get_base_type (context_type);
3928
3929   if (return_type->code () == TYPE_CODE_ENUM)
3930     return context_type == NULL || return_type == context_type;
3931   else if (context_type == NULL)
3932     return return_type->code () != TYPE_CODE_VOID;
3933   else
3934     return return_type->code () == context_type->code ();
3935 }
3936
3937
3938 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3939    function (if any) that matches the types of the NARGS arguments in
3940    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3941    that returns that type, then eliminate matches that don't.  If
3942    CONTEXT_TYPE is void and there is at least one match that does not
3943    return void, eliminate all matches that do.
3944
3945    Asks the user if there is more than one match remaining.  Returns -1
3946    if there is no such symbol or none is selected.  NAME is used
3947    solely for messages.  May re-arrange and modify SYMS in
3948    the process; the index returned is for the modified vector.  */
3949
3950 static int
3951 ada_resolve_function (struct block_symbol syms[],
3952                       int nsyms, struct value **args, int nargs,
3953                       const char *name, struct type *context_type,
3954                       int parse_completion)
3955 {
3956   int fallback;
3957   int k;
3958   int m;                        /* Number of hits */
3959
3960   m = 0;
3961   /* In the first pass of the loop, we only accept functions matching
3962      context_type.  If none are found, we add a second pass of the loop
3963      where every function is accepted.  */
3964   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3965     {
3966       for (k = 0; k < nsyms; k += 1)
3967         {
3968           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3969
3970           if (ada_args_match (syms[k].symbol, args, nargs)
3971               && (fallback || return_match (type, context_type)))
3972             {
3973               syms[m] = syms[k];
3974               m += 1;
3975             }
3976         }
3977     }
3978
3979   /* If we got multiple matches, ask the user which one to use.  Don't do this
3980      interactive thing during completion, though, as the purpose of the
3981      completion is providing a list of all possible matches.  Prompting the
3982      user to filter it down would be completely unexpected in this case.  */
3983   if (m == 0)
3984     return -1;
3985   else if (m > 1 && !parse_completion)
3986     {
3987       printf_filtered (_("Multiple matches for %s\n"), name);
3988       user_select_syms (syms, m, 1);
3989       return 0;
3990     }
3991   return 0;
3992 }
3993
3994 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3995    on the function identified by SYM and BLOCK, and taking NARGS
3996    arguments.  Update *EXPP as needed to hold more space.  */
3997
3998 static void
3999 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4000                             int oplen, struct symbol *sym,
4001                             const struct block *block)
4002 {
4003   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4004      symbol, -oplen for operator being replaced).  */
4005   struct expression *newexp = (struct expression *)
4006     xzalloc (sizeof (struct expression)
4007              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4008   struct expression *exp = expp->get ();
4009
4010   newexp->nelts = exp->nelts + 7 - oplen;
4011   newexp->language_defn = exp->language_defn;
4012   newexp->gdbarch = exp->gdbarch;
4013   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4014   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4015           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4016
4017   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4018   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4019
4020   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4021   newexp->elts[pc + 4].block = block;
4022   newexp->elts[pc + 5].symbol = sym;
4023
4024   expp->reset (newexp);
4025 }
4026
4027 /* Type-class predicates */
4028
4029 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4030    or FLOAT).  */
4031
4032 static int
4033 numeric_type_p (struct type *type)
4034 {
4035   if (type == NULL)
4036     return 0;
4037   else
4038     {
4039       switch (type->code ())
4040         {
4041         case TYPE_CODE_INT:
4042         case TYPE_CODE_FLT:
4043           return 1;
4044         case TYPE_CODE_RANGE:
4045           return (type == TYPE_TARGET_TYPE (type)
4046                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4047         default:
4048           return 0;
4049         }
4050     }
4051 }
4052
4053 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4054
4055 static int
4056 integer_type_p (struct type *type)
4057 {
4058   if (type == NULL)
4059     return 0;
4060   else
4061     {
4062       switch (type->code ())
4063         {
4064         case TYPE_CODE_INT:
4065           return 1;
4066         case TYPE_CODE_RANGE:
4067           return (type == TYPE_TARGET_TYPE (type)
4068                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4069         default:
4070           return 0;
4071         }
4072     }
4073 }
4074
4075 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4076
4077 static int
4078 scalar_type_p (struct type *type)
4079 {
4080   if (type == NULL)
4081     return 0;
4082   else
4083     {
4084       switch (type->code ())
4085         {
4086         case TYPE_CODE_INT:
4087         case TYPE_CODE_RANGE:
4088         case TYPE_CODE_ENUM:
4089         case TYPE_CODE_FLT:
4090           return 1;
4091         default:
4092           return 0;
4093         }
4094     }
4095 }
4096
4097 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4098
4099 static int
4100 discrete_type_p (struct type *type)
4101 {
4102   if (type == NULL)
4103     return 0;
4104   else
4105     {
4106       switch (type->code ())
4107         {
4108         case TYPE_CODE_INT:
4109         case TYPE_CODE_RANGE:
4110         case TYPE_CODE_ENUM:
4111         case TYPE_CODE_BOOL:
4112           return 1;
4113         default:
4114           return 0;
4115         }
4116     }
4117 }
4118
4119 /* Returns non-zero if OP with operands in the vector ARGS could be
4120    a user-defined function.  Errs on the side of pre-defined operators
4121    (i.e., result 0).  */
4122
4123 static int
4124 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4125 {
4126   struct type *type0 =
4127     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4128   struct type *type1 =
4129     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4130
4131   if (type0 == NULL)
4132     return 0;
4133
4134   switch (op)
4135     {
4136     default:
4137       return 0;
4138
4139     case BINOP_ADD:
4140     case BINOP_SUB:
4141     case BINOP_MUL:
4142     case BINOP_DIV:
4143       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4144
4145     case BINOP_REM:
4146     case BINOP_MOD:
4147     case BINOP_BITWISE_AND:
4148     case BINOP_BITWISE_IOR:
4149     case BINOP_BITWISE_XOR:
4150       return (!(integer_type_p (type0) && integer_type_p (type1)));
4151
4152     case BINOP_EQUAL:
4153     case BINOP_NOTEQUAL:
4154     case BINOP_LESS:
4155     case BINOP_GTR:
4156     case BINOP_LEQ:
4157     case BINOP_GEQ:
4158       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4159
4160     case BINOP_CONCAT:
4161       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4162
4163     case BINOP_EXP:
4164       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4165
4166     case UNOP_NEG:
4167     case UNOP_PLUS:
4168     case UNOP_LOGICAL_NOT:
4169     case UNOP_ABS:
4170       return (!numeric_type_p (type0));
4171
4172     }
4173 }
4174 \f
4175                                 /* Renaming */
4176
4177 /* NOTES: 
4178
4179    1. In the following, we assume that a renaming type's name may
4180       have an ___XD suffix.  It would be nice if this went away at some
4181       point.
4182    2. We handle both the (old) purely type-based representation of 
4183       renamings and the (new) variable-based encoding.  At some point,
4184       it is devoutly to be hoped that the former goes away 
4185       (FIXME: hilfinger-2007-07-09).
4186    3. Subprogram renamings are not implemented, although the XRS
4187       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4188
4189 /* If SYM encodes a renaming, 
4190
4191        <renaming> renames <renamed entity>,
4192
4193    sets *LEN to the length of the renamed entity's name,
4194    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4195    the string describing the subcomponent selected from the renamed
4196    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4197    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4198    are undefined).  Otherwise, returns a value indicating the category
4199    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4200    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4201    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4202    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4203    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4204    may be NULL, in which case they are not assigned.
4205
4206    [Currently, however, GCC does not generate subprogram renamings.]  */
4207
4208 enum ada_renaming_category
4209 ada_parse_renaming (struct symbol *sym,
4210                     const char **renamed_entity, int *len, 
4211                     const char **renaming_expr)
4212 {
4213   enum ada_renaming_category kind;
4214   const char *info;
4215   const char *suffix;
4216
4217   if (sym == NULL)
4218     return ADA_NOT_RENAMING;
4219   switch (SYMBOL_CLASS (sym)) 
4220     {
4221     default:
4222       return ADA_NOT_RENAMING;
4223     case LOC_LOCAL:
4224     case LOC_STATIC:
4225     case LOC_COMPUTED:
4226     case LOC_OPTIMIZED_OUT:
4227       info = strstr (sym->linkage_name (), "___XR");
4228       if (info == NULL)
4229         return ADA_NOT_RENAMING;
4230       switch (info[5])
4231         {
4232         case '_':
4233           kind = ADA_OBJECT_RENAMING;
4234           info += 6;
4235           break;
4236         case 'E':
4237           kind = ADA_EXCEPTION_RENAMING;
4238           info += 7;
4239           break;
4240         case 'P':
4241           kind = ADA_PACKAGE_RENAMING;
4242           info += 7;
4243           break;
4244         case 'S':
4245           kind = ADA_SUBPROGRAM_RENAMING;
4246           info += 7;
4247           break;
4248         default:
4249           return ADA_NOT_RENAMING;
4250         }
4251     }
4252
4253   if (renamed_entity != NULL)
4254     *renamed_entity = info;
4255   suffix = strstr (info, "___XE");
4256   if (suffix == NULL || suffix == info)
4257     return ADA_NOT_RENAMING;
4258   if (len != NULL)
4259     *len = strlen (info) - strlen (suffix);
4260   suffix += 5;
4261   if (renaming_expr != NULL)
4262     *renaming_expr = suffix;
4263   return kind;
4264 }
4265
4266 /* Compute the value of the given RENAMING_SYM, which is expected to
4267    be a symbol encoding a renaming expression.  BLOCK is the block
4268    used to evaluate the renaming.  */
4269
4270 static struct value *
4271 ada_read_renaming_var_value (struct symbol *renaming_sym,
4272                              const struct block *block)
4273 {
4274   const char *sym_name;
4275
4276   sym_name = renaming_sym->linkage_name ();
4277   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4278   return evaluate_expression (expr.get ());
4279 }
4280 \f
4281
4282                                 /* Evaluation: Function Calls */
4283
4284 /* Return an lvalue containing the value VAL.  This is the identity on
4285    lvalues, and otherwise has the side-effect of allocating memory
4286    in the inferior where a copy of the value contents is copied.  */
4287
4288 static struct value *
4289 ensure_lval (struct value *val)
4290 {
4291   if (VALUE_LVAL (val) == not_lval
4292       || VALUE_LVAL (val) == lval_internalvar)
4293     {
4294       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4295       const CORE_ADDR addr =
4296         value_as_long (value_allocate_space_in_inferior (len));
4297
4298       VALUE_LVAL (val) = lval_memory;
4299       set_value_address (val, addr);
4300       write_memory (addr, value_contents (val), len);
4301     }
4302
4303   return val;
4304 }
4305
4306 /* Given ARG, a value of type (pointer or reference to a)*
4307    structure/union, extract the component named NAME from the ultimate
4308    target structure/union and return it as a value with its
4309    appropriate type.
4310
4311    The routine searches for NAME among all members of the structure itself
4312    and (recursively) among all members of any wrapper members
4313    (e.g., '_parent').
4314
4315    If NO_ERR, then simply return NULL in case of error, rather than
4316    calling error.  */
4317
4318 static struct value *
4319 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4320 {
4321   struct type *t, *t1;
4322   struct value *v;
4323   int check_tag;
4324
4325   v = NULL;
4326   t1 = t = ada_check_typedef (value_type (arg));
4327   if (t->code () == TYPE_CODE_REF)
4328     {
4329       t1 = TYPE_TARGET_TYPE (t);
4330       if (t1 == NULL)
4331         goto BadValue;
4332       t1 = ada_check_typedef (t1);
4333       if (t1->code () == TYPE_CODE_PTR)
4334         {
4335           arg = coerce_ref (arg);
4336           t = t1;
4337         }
4338     }
4339
4340   while (t->code () == TYPE_CODE_PTR)
4341     {
4342       t1 = TYPE_TARGET_TYPE (t);
4343       if (t1 == NULL)
4344         goto BadValue;
4345       t1 = ada_check_typedef (t1);
4346       if (t1->code () == TYPE_CODE_PTR)
4347         {
4348           arg = value_ind (arg);
4349           t = t1;
4350         }
4351       else
4352         break;
4353     }
4354
4355   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4356     goto BadValue;
4357
4358   if (t1 == t)
4359     v = ada_search_struct_field (name, arg, 0, t);
4360   else
4361     {
4362       int bit_offset, bit_size, byte_offset;
4363       struct type *field_type;
4364       CORE_ADDR address;
4365
4366       if (t->code () == TYPE_CODE_PTR)
4367         address = value_address (ada_value_ind (arg));
4368       else
4369         address = value_address (ada_coerce_ref (arg));
4370
4371       /* Check to see if this is a tagged type.  We also need to handle
4372          the case where the type is a reference to a tagged type, but
4373          we have to be careful to exclude pointers to tagged types.
4374          The latter should be shown as usual (as a pointer), whereas
4375          a reference should mostly be transparent to the user.  */
4376
4377       if (ada_is_tagged_type (t1, 0)
4378           || (t1->code () == TYPE_CODE_REF
4379               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4380         {
4381           /* We first try to find the searched field in the current type.
4382              If not found then let's look in the fixed type.  */
4383
4384           if (!find_struct_field (name, t1, 0,
4385                                   &field_type, &byte_offset, &bit_offset,
4386                                   &bit_size, NULL))
4387             check_tag = 1;
4388           else
4389             check_tag = 0;
4390         }
4391       else
4392         check_tag = 0;
4393
4394       /* Convert to fixed type in all cases, so that we have proper
4395          offsets to each field in unconstrained record types.  */
4396       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4397                               address, NULL, check_tag);
4398
4399       if (find_struct_field (name, t1, 0,
4400                              &field_type, &byte_offset, &bit_offset,
4401                              &bit_size, NULL))
4402         {
4403           if (bit_size != 0)
4404             {
4405               if (t->code () == TYPE_CODE_REF)
4406                 arg = ada_coerce_ref (arg);
4407               else
4408                 arg = ada_value_ind (arg);
4409               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4410                                                   bit_offset, bit_size,
4411                                                   field_type);
4412             }
4413           else
4414             v = value_at_lazy (field_type, address + byte_offset);
4415         }
4416     }
4417
4418   if (v != NULL || no_err)
4419     return v;
4420   else
4421     error (_("There is no member named %s."), name);
4422
4423  BadValue:
4424   if (no_err)
4425     return NULL;
4426   else
4427     error (_("Attempt to extract a component of "
4428              "a value that is not a record."));
4429 }
4430
4431 /* Return the value ACTUAL, converted to be an appropriate value for a
4432    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4433    allocating any necessary descriptors (fat pointers), or copies of
4434    values not residing in memory, updating it as needed.  */
4435
4436 struct value *
4437 ada_convert_actual (struct value *actual, struct type *formal_type0)
4438 {
4439   struct type *actual_type = ada_check_typedef (value_type (actual));
4440   struct type *formal_type = ada_check_typedef (formal_type0);
4441   struct type *formal_target =
4442     formal_type->code () == TYPE_CODE_PTR
4443     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4444   struct type *actual_target =
4445     actual_type->code () == TYPE_CODE_PTR
4446     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4447
4448   if (ada_is_array_descriptor_type (formal_target)
4449       && actual_target->code () == TYPE_CODE_ARRAY)
4450     return make_array_descriptor (formal_type, actual);
4451   else if (formal_type->code () == TYPE_CODE_PTR
4452            || formal_type->code () == TYPE_CODE_REF)
4453     {
4454       struct value *result;
4455
4456       if (formal_target->code () == TYPE_CODE_ARRAY
4457           && ada_is_array_descriptor_type (actual_target))
4458         result = desc_data (actual);
4459       else if (formal_type->code () != TYPE_CODE_PTR)
4460         {
4461           if (VALUE_LVAL (actual) != lval_memory)
4462             {
4463               struct value *val;
4464
4465               actual_type = ada_check_typedef (value_type (actual));
4466               val = allocate_value (actual_type);
4467               memcpy ((char *) value_contents_raw (val),
4468                       (char *) value_contents (actual),
4469                       TYPE_LENGTH (actual_type));
4470               actual = ensure_lval (val);
4471             }
4472           result = value_addr (actual);
4473         }
4474       else
4475         return actual;
4476       return value_cast_pointers (formal_type, result, 0);
4477     }
4478   else if (actual_type->code () == TYPE_CODE_PTR)
4479     return ada_value_ind (actual);
4480   else if (ada_is_aligner_type (formal_type))
4481     {
4482       /* We need to turn this parameter into an aligner type
4483          as well.  */
4484       struct value *aligner = allocate_value (formal_type);
4485       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4486
4487       value_assign_to_component (aligner, component, actual);
4488       return aligner;
4489     }
4490
4491   return actual;
4492 }
4493
4494 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4495    type TYPE.  This is usually an inefficient no-op except on some targets
4496    (such as AVR) where the representation of a pointer and an address
4497    differs.  */
4498
4499 static CORE_ADDR
4500 value_pointer (struct value *value, struct type *type)
4501 {
4502   struct gdbarch *gdbarch = get_type_arch (type);
4503   unsigned len = TYPE_LENGTH (type);
4504   gdb_byte *buf = (gdb_byte *) alloca (len);
4505   CORE_ADDR addr;
4506
4507   addr = value_address (value);
4508   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4509   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4510   return addr;
4511 }
4512
4513
4514 /* Push a descriptor of type TYPE for array value ARR on the stack at
4515    *SP, updating *SP to reflect the new descriptor.  Return either
4516    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4517    to-descriptor type rather than a descriptor type), a struct value *
4518    representing a pointer to this descriptor.  */
4519
4520 static struct value *
4521 make_array_descriptor (struct type *type, struct value *arr)
4522 {
4523   struct type *bounds_type = desc_bounds_type (type);
4524   struct type *desc_type = desc_base_type (type);
4525   struct value *descriptor = allocate_value (desc_type);
4526   struct value *bounds = allocate_value (bounds_type);
4527   int i;
4528
4529   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4530        i > 0; i -= 1)
4531     {
4532       modify_field (value_type (bounds), value_contents_writeable (bounds),
4533                     ada_array_bound (arr, i, 0),
4534                     desc_bound_bitpos (bounds_type, i, 0),
4535                     desc_bound_bitsize (bounds_type, i, 0));
4536       modify_field (value_type (bounds), value_contents_writeable (bounds),
4537                     ada_array_bound (arr, i, 1),
4538                     desc_bound_bitpos (bounds_type, i, 1),
4539                     desc_bound_bitsize (bounds_type, i, 1));
4540     }
4541
4542   bounds = ensure_lval (bounds);
4543
4544   modify_field (value_type (descriptor),
4545                 value_contents_writeable (descriptor),
4546                 value_pointer (ensure_lval (arr),
4547                                TYPE_FIELD_TYPE (desc_type, 0)),
4548                 fat_pntr_data_bitpos (desc_type),
4549                 fat_pntr_data_bitsize (desc_type));
4550
4551   modify_field (value_type (descriptor),
4552                 value_contents_writeable (descriptor),
4553                 value_pointer (bounds,
4554                                TYPE_FIELD_TYPE (desc_type, 1)),
4555                 fat_pntr_bounds_bitpos (desc_type),
4556                 fat_pntr_bounds_bitsize (desc_type));
4557
4558   descriptor = ensure_lval (descriptor);
4559
4560   if (type->code () == TYPE_CODE_PTR)
4561     return value_addr (descriptor);
4562   else
4563     return descriptor;
4564 }
4565 \f
4566                                 /* Symbol Cache Module */
4567
4568 /* Performance measurements made as of 2010-01-15 indicate that
4569    this cache does bring some noticeable improvements.  Depending
4570    on the type of entity being printed, the cache can make it as much
4571    as an order of magnitude faster than without it.
4572
4573    The descriptive type DWARF extension has significantly reduced
4574    the need for this cache, at least when DWARF is being used.  However,
4575    even in this case, some expensive name-based symbol searches are still
4576    sometimes necessary - to find an XVZ variable, mostly.  */
4577
4578 /* Initialize the contents of SYM_CACHE.  */
4579
4580 static void
4581 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4582 {
4583   obstack_init (&sym_cache->cache_space);
4584   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4585 }
4586
4587 /* Free the memory used by SYM_CACHE.  */
4588
4589 static void
4590 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4591 {
4592   obstack_free (&sym_cache->cache_space, NULL);
4593   xfree (sym_cache);
4594 }
4595
4596 /* Return the symbol cache associated to the given program space PSPACE.
4597    If not allocated for this PSPACE yet, allocate and initialize one.  */
4598
4599 static struct ada_symbol_cache *
4600 ada_get_symbol_cache (struct program_space *pspace)
4601 {
4602   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4603
4604   if (pspace_data->sym_cache == NULL)
4605     {
4606       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4607       ada_init_symbol_cache (pspace_data->sym_cache);
4608     }
4609
4610   return pspace_data->sym_cache;
4611 }
4612
4613 /* Clear all entries from the symbol cache.  */
4614
4615 static void
4616 ada_clear_symbol_cache (void)
4617 {
4618   struct ada_symbol_cache *sym_cache
4619     = ada_get_symbol_cache (current_program_space);
4620
4621   obstack_free (&sym_cache->cache_space, NULL);
4622   ada_init_symbol_cache (sym_cache);
4623 }
4624
4625 /* Search our cache for an entry matching NAME and DOMAIN.
4626    Return it if found, or NULL otherwise.  */
4627
4628 static struct cache_entry **
4629 find_entry (const char *name, domain_enum domain)
4630 {
4631   struct ada_symbol_cache *sym_cache
4632     = ada_get_symbol_cache (current_program_space);
4633   int h = msymbol_hash (name) % HASH_SIZE;
4634   struct cache_entry **e;
4635
4636   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4637     {
4638       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4639         return e;
4640     }
4641   return NULL;
4642 }
4643
4644 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4645    Return 1 if found, 0 otherwise.
4646
4647    If an entry was found and SYM is not NULL, set *SYM to the entry's
4648    SYM.  Same principle for BLOCK if not NULL.  */
4649
4650 static int
4651 lookup_cached_symbol (const char *name, domain_enum domain,
4652                       struct symbol **sym, const struct block **block)
4653 {
4654   struct cache_entry **e = find_entry (name, domain);
4655
4656   if (e == NULL)
4657     return 0;
4658   if (sym != NULL)
4659     *sym = (*e)->sym;
4660   if (block != NULL)
4661     *block = (*e)->block;
4662   return 1;
4663 }
4664
4665 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4666    in domain DOMAIN, save this result in our symbol cache.  */
4667
4668 static void
4669 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4670               const struct block *block)
4671 {
4672   struct ada_symbol_cache *sym_cache
4673     = ada_get_symbol_cache (current_program_space);
4674   int h;
4675   struct cache_entry *e;
4676
4677   /* Symbols for builtin types don't have a block.
4678      For now don't cache such symbols.  */
4679   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4680     return;
4681
4682   /* If the symbol is a local symbol, then do not cache it, as a search
4683      for that symbol depends on the context.  To determine whether
4684      the symbol is local or not, we check the block where we found it
4685      against the global and static blocks of its associated symtab.  */
4686   if (sym
4687       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4688                             GLOBAL_BLOCK) != block
4689       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4690                             STATIC_BLOCK) != block)
4691     return;
4692
4693   h = msymbol_hash (name) % HASH_SIZE;
4694   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4695   e->next = sym_cache->root[h];
4696   sym_cache->root[h] = e;
4697   e->name = obstack_strdup (&sym_cache->cache_space, name);
4698   e->sym = sym;
4699   e->domain = domain;
4700   e->block = block;
4701 }
4702 \f
4703                                 /* Symbol Lookup */
4704
4705 /* Return the symbol name match type that should be used used when
4706    searching for all symbols matching LOOKUP_NAME.
4707
4708    LOOKUP_NAME is expected to be a symbol name after transformation
4709    for Ada lookups.  */
4710
4711 static symbol_name_match_type
4712 name_match_type_from_name (const char *lookup_name)
4713 {
4714   return (strstr (lookup_name, "__") == NULL
4715           ? symbol_name_match_type::WILD
4716           : symbol_name_match_type::FULL);
4717 }
4718
4719 /* Return the result of a standard (literal, C-like) lookup of NAME in
4720    given DOMAIN, visible from lexical block BLOCK.  */
4721
4722 static struct symbol *
4723 standard_lookup (const char *name, const struct block *block,
4724                  domain_enum domain)
4725 {
4726   /* Initialize it just to avoid a GCC false warning.  */
4727   struct block_symbol sym = {};
4728
4729   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4730     return sym.symbol;
4731   ada_lookup_encoded_symbol (name, block, domain, &sym);
4732   cache_symbol (name, domain, sym.symbol, sym.block);
4733   return sym.symbol;
4734 }
4735
4736
4737 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4738    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4739    since they contend in overloading in the same way.  */
4740 static int
4741 is_nonfunction (struct block_symbol syms[], int n)
4742 {
4743   int i;
4744
4745   for (i = 0; i < n; i += 1)
4746     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4747         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4748             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4749       return 1;
4750
4751   return 0;
4752 }
4753
4754 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4755    struct types.  Otherwise, they may not.  */
4756
4757 static int
4758 equiv_types (struct type *type0, struct type *type1)
4759 {
4760   if (type0 == type1)
4761     return 1;
4762   if (type0 == NULL || type1 == NULL
4763       || type0->code () != type1->code ())
4764     return 0;
4765   if ((type0->code () == TYPE_CODE_STRUCT
4766        || type0->code () == TYPE_CODE_ENUM)
4767       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4768       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4769     return 1;
4770
4771   return 0;
4772 }
4773
4774 /* True iff SYM0 represents the same entity as SYM1, or one that is
4775    no more defined than that of SYM1.  */
4776
4777 static int
4778 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4779 {
4780   if (sym0 == sym1)
4781     return 1;
4782   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4783       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4784     return 0;
4785
4786   switch (SYMBOL_CLASS (sym0))
4787     {
4788     case LOC_UNDEF:
4789       return 1;
4790     case LOC_TYPEDEF:
4791       {
4792         struct type *type0 = SYMBOL_TYPE (sym0);
4793         struct type *type1 = SYMBOL_TYPE (sym1);
4794         const char *name0 = sym0->linkage_name ();
4795         const char *name1 = sym1->linkage_name ();
4796         int len0 = strlen (name0);
4797
4798         return
4799           type0->code () == type1->code ()
4800           && (equiv_types (type0, type1)
4801               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4802                   && startswith (name1 + len0, "___XV")));
4803       }
4804     case LOC_CONST:
4805       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4806         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4807
4808     case LOC_STATIC:
4809       {
4810         const char *name0 = sym0->linkage_name ();
4811         const char *name1 = sym1->linkage_name ();
4812         return (strcmp (name0, name1) == 0
4813                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4814       }
4815
4816     default:
4817       return 0;
4818     }
4819 }
4820
4821 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4822    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4823
4824 static void
4825 add_defn_to_vec (struct obstack *obstackp,
4826                  struct symbol *sym,
4827                  const struct block *block)
4828 {
4829   int i;
4830   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4831
4832   /* Do not try to complete stub types, as the debugger is probably
4833      already scanning all symbols matching a certain name at the
4834      time when this function is called.  Trying to replace the stub
4835      type by its associated full type will cause us to restart a scan
4836      which may lead to an infinite recursion.  Instead, the client
4837      collecting the matching symbols will end up collecting several
4838      matches, with at least one of them complete.  It can then filter
4839      out the stub ones if needed.  */
4840
4841   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4842     {
4843       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4844         return;
4845       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4846         {
4847           prevDefns[i].symbol = sym;
4848           prevDefns[i].block = block;
4849           return;
4850         }
4851     }
4852
4853   {
4854     struct block_symbol info;
4855
4856     info.symbol = sym;
4857     info.block = block;
4858     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4859   }
4860 }
4861
4862 /* Number of block_symbol structures currently collected in current vector in
4863    OBSTACKP.  */
4864
4865 static int
4866 num_defns_collected (struct obstack *obstackp)
4867 {
4868   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4869 }
4870
4871 /* Vector of block_symbol structures currently collected in current vector in
4872    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4873
4874 static struct block_symbol *
4875 defns_collected (struct obstack *obstackp, int finish)
4876 {
4877   if (finish)
4878     return (struct block_symbol *) obstack_finish (obstackp);
4879   else
4880     return (struct block_symbol *) obstack_base (obstackp);
4881 }
4882
4883 /* Return a bound minimal symbol matching NAME according to Ada
4884    decoding rules.  Returns an invalid symbol if there is no such
4885    minimal symbol.  Names prefixed with "standard__" are handled
4886    specially: "standard__" is first stripped off, and only static and
4887    global symbols are searched.  */
4888
4889 struct bound_minimal_symbol
4890 ada_lookup_simple_minsym (const char *name)
4891 {
4892   struct bound_minimal_symbol result;
4893
4894   memset (&result, 0, sizeof (result));
4895
4896   symbol_name_match_type match_type = name_match_type_from_name (name);
4897   lookup_name_info lookup_name (name, match_type);
4898
4899   symbol_name_matcher_ftype *match_name
4900     = ada_get_symbol_name_matcher (lookup_name);
4901
4902   for (objfile *objfile : current_program_space->objfiles ())
4903     {
4904       for (minimal_symbol *msymbol : objfile->msymbols ())
4905         {
4906           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4907               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4908             {
4909               result.minsym = msymbol;
4910               result.objfile = objfile;
4911               break;
4912             }
4913         }
4914     }
4915
4916   return result;
4917 }
4918
4919 /* For all subprograms that statically enclose the subprogram of the
4920    selected frame, add symbols matching identifier NAME in DOMAIN
4921    and their blocks to the list of data in OBSTACKP, as for
4922    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4923    with a wildcard prefix.  */
4924
4925 static void
4926 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4927                                   const lookup_name_info &lookup_name,
4928                                   domain_enum domain)
4929 {
4930 }
4931
4932 /* True if TYPE is definitely an artificial type supplied to a symbol
4933    for which no debugging information was given in the symbol file.  */
4934
4935 static int
4936 is_nondebugging_type (struct type *type)
4937 {
4938   const char *name = ada_type_name (type);
4939
4940   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4941 }
4942
4943 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4944    that are deemed "identical" for practical purposes.
4945
4946    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4947    types and that their number of enumerals is identical (in other
4948    words, type1->num_fields () == type2->num_fields ()).  */
4949
4950 static int
4951 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4952 {
4953   int i;
4954
4955   /* The heuristic we use here is fairly conservative.  We consider
4956      that 2 enumerate types are identical if they have the same
4957      number of enumerals and that all enumerals have the same
4958      underlying value and name.  */
4959
4960   /* All enums in the type should have an identical underlying value.  */
4961   for (i = 0; i < type1->num_fields (); i++)
4962     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4963       return 0;
4964
4965   /* All enumerals should also have the same name (modulo any numerical
4966      suffix).  */
4967   for (i = 0; i < type1->num_fields (); i++)
4968     {
4969       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4970       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4971       int len_1 = strlen (name_1);
4972       int len_2 = strlen (name_2);
4973
4974       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4975       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4976       if (len_1 != len_2
4977           || strncmp (TYPE_FIELD_NAME (type1, i),
4978                       TYPE_FIELD_NAME (type2, i),
4979                       len_1) != 0)
4980         return 0;
4981     }
4982
4983   return 1;
4984 }
4985
4986 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4987    that are deemed "identical" for practical purposes.  Sometimes,
4988    enumerals are not strictly identical, but their types are so similar
4989    that they can be considered identical.
4990
4991    For instance, consider the following code:
4992
4993       type Color is (Black, Red, Green, Blue, White);
4994       type RGB_Color is new Color range Red .. Blue;
4995
4996    Type RGB_Color is a subrange of an implicit type which is a copy
4997    of type Color. If we call that implicit type RGB_ColorB ("B" is
4998    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4999    As a result, when an expression references any of the enumeral
5000    by name (Eg. "print green"), the expression is technically
5001    ambiguous and the user should be asked to disambiguate. But
5002    doing so would only hinder the user, since it wouldn't matter
5003    what choice he makes, the outcome would always be the same.
5004    So, for practical purposes, we consider them as the same.  */
5005
5006 static int
5007 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5008 {
5009   int i;
5010
5011   /* Before performing a thorough comparison check of each type,
5012      we perform a series of inexpensive checks.  We expect that these
5013      checks will quickly fail in the vast majority of cases, and thus
5014      help prevent the unnecessary use of a more expensive comparison.
5015      Said comparison also expects us to make some of these checks
5016      (see ada_identical_enum_types_p).  */
5017
5018   /* Quick check: All symbols should have an enum type.  */
5019   for (i = 0; i < syms.size (); i++)
5020     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
5021       return 0;
5022
5023   /* Quick check: They should all have the same value.  */
5024   for (i = 1; i < syms.size (); i++)
5025     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5026       return 0;
5027
5028   /* Quick check: They should all have the same number of enumerals.  */
5029   for (i = 1; i < syms.size (); i++)
5030     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
5031         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
5032       return 0;
5033
5034   /* All the sanity checks passed, so we might have a set of
5035      identical enumeration types.  Perform a more complete
5036      comparison of the type of each symbol.  */
5037   for (i = 1; i < syms.size (); i++)
5038     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5039                                      SYMBOL_TYPE (syms[0].symbol)))
5040       return 0;
5041
5042   return 1;
5043 }
5044
5045 /* Remove any non-debugging symbols in SYMS that definitely
5046    duplicate other symbols in the list (The only case I know of where
5047    this happens is when object files containing stabs-in-ecoff are
5048    linked with files containing ordinary ecoff debugging symbols (or no
5049    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5050    Returns the number of items in the modified list.  */
5051
5052 static int
5053 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5054 {
5055   int i, j;
5056
5057   /* We should never be called with less than 2 symbols, as there
5058      cannot be any extra symbol in that case.  But it's easy to
5059      handle, since we have nothing to do in that case.  */
5060   if (syms->size () < 2)
5061     return syms->size ();
5062
5063   i = 0;
5064   while (i < syms->size ())
5065     {
5066       int remove_p = 0;
5067
5068       /* If two symbols have the same name and one of them is a stub type,
5069          the get rid of the stub.  */
5070
5071       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5072           && (*syms)[i].symbol->linkage_name () != NULL)
5073         {
5074           for (j = 0; j < syms->size (); j++)
5075             {
5076               if (j != i
5077                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5078                   && (*syms)[j].symbol->linkage_name () != NULL
5079                   && strcmp ((*syms)[i].symbol->linkage_name (),
5080                              (*syms)[j].symbol->linkage_name ()) == 0)
5081                 remove_p = 1;
5082             }
5083         }
5084
5085       /* Two symbols with the same name, same class and same address
5086          should be identical.  */
5087
5088       else if ((*syms)[i].symbol->linkage_name () != NULL
5089           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5090           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5091         {
5092           for (j = 0; j < syms->size (); j += 1)
5093             {
5094               if (i != j
5095                   && (*syms)[j].symbol->linkage_name () != NULL
5096                   && strcmp ((*syms)[i].symbol->linkage_name (),
5097                              (*syms)[j].symbol->linkage_name ()) == 0
5098                   && SYMBOL_CLASS ((*syms)[i].symbol)
5099                        == SYMBOL_CLASS ((*syms)[j].symbol)
5100                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5101                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5102                 remove_p = 1;
5103             }
5104         }
5105       
5106       if (remove_p)
5107         syms->erase (syms->begin () + i);
5108
5109       i += 1;
5110     }
5111
5112   /* If all the remaining symbols are identical enumerals, then
5113      just keep the first one and discard the rest.
5114
5115      Unlike what we did previously, we do not discard any entry
5116      unless they are ALL identical.  This is because the symbol
5117      comparison is not a strict comparison, but rather a practical
5118      comparison.  If all symbols are considered identical, then
5119      we can just go ahead and use the first one and discard the rest.
5120      But if we cannot reduce the list to a single element, we have
5121      to ask the user to disambiguate anyways.  And if we have to
5122      present a multiple-choice menu, it's less confusing if the list
5123      isn't missing some choices that were identical and yet distinct.  */
5124   if (symbols_are_identical_enums (*syms))
5125     syms->resize (1);
5126
5127   return syms->size ();
5128 }
5129
5130 /* Given a type that corresponds to a renaming entity, use the type name
5131    to extract the scope (package name or function name, fully qualified,
5132    and following the GNAT encoding convention) where this renaming has been
5133    defined.  */
5134
5135 static std::string
5136 xget_renaming_scope (struct type *renaming_type)
5137 {
5138   /* The renaming types adhere to the following convention:
5139      <scope>__<rename>___<XR extension>.
5140      So, to extract the scope, we search for the "___XR" extension,
5141      and then backtrack until we find the first "__".  */
5142
5143   const char *name = renaming_type->name ();
5144   const char *suffix = strstr (name, "___XR");
5145   const char *last;
5146
5147   /* Now, backtrack a bit until we find the first "__".  Start looking
5148      at suffix - 3, as the <rename> part is at least one character long.  */
5149
5150   for (last = suffix - 3; last > name; last--)
5151     if (last[0] == '_' && last[1] == '_')
5152       break;
5153
5154   /* Make a copy of scope and return it.  */
5155   return std::string (name, last);
5156 }
5157
5158 /* Return nonzero if NAME corresponds to a package name.  */
5159
5160 static int
5161 is_package_name (const char *name)
5162 {
5163   /* Here, We take advantage of the fact that no symbols are generated
5164      for packages, while symbols are generated for each function.
5165      So the condition for NAME represent a package becomes equivalent
5166      to NAME not existing in our list of symbols.  There is only one
5167      small complication with library-level functions (see below).  */
5168
5169   /* If it is a function that has not been defined at library level,
5170      then we should be able to look it up in the symbols.  */
5171   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5172     return 0;
5173
5174   /* Library-level function names start with "_ada_".  See if function
5175      "_ada_" followed by NAME can be found.  */
5176
5177   /* Do a quick check that NAME does not contain "__", since library-level
5178      functions names cannot contain "__" in them.  */
5179   if (strstr (name, "__") != NULL)
5180     return 0;
5181
5182   std::string fun_name = string_printf ("_ada_%s", name);
5183
5184   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5185 }
5186
5187 /* Return nonzero if SYM corresponds to a renaming entity that is
5188    not visible from FUNCTION_NAME.  */
5189
5190 static int
5191 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5192 {
5193   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5194     return 0;
5195
5196   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5197
5198   /* If the rename has been defined in a package, then it is visible.  */
5199   if (is_package_name (scope.c_str ()))
5200     return 0;
5201
5202   /* Check that the rename is in the current function scope by checking
5203      that its name starts with SCOPE.  */
5204
5205   /* If the function name starts with "_ada_", it means that it is
5206      a library-level function.  Strip this prefix before doing the
5207      comparison, as the encoding for the renaming does not contain
5208      this prefix.  */
5209   if (startswith (function_name, "_ada_"))
5210     function_name += 5;
5211
5212   return !startswith (function_name, scope.c_str ());
5213 }
5214
5215 /* Remove entries from SYMS that corresponds to a renaming entity that
5216    is not visible from the function associated with CURRENT_BLOCK or
5217    that is superfluous due to the presence of more specific renaming
5218    information.  Places surviving symbols in the initial entries of
5219    SYMS and returns the number of surviving symbols.
5220    
5221    Rationale:
5222    First, in cases where an object renaming is implemented as a
5223    reference variable, GNAT may produce both the actual reference
5224    variable and the renaming encoding.  In this case, we discard the
5225    latter.
5226
5227    Second, GNAT emits a type following a specified encoding for each renaming
5228    entity.  Unfortunately, STABS currently does not support the definition
5229    of types that are local to a given lexical block, so all renamings types
5230    are emitted at library level.  As a consequence, if an application
5231    contains two renaming entities using the same name, and a user tries to
5232    print the value of one of these entities, the result of the ada symbol
5233    lookup will also contain the wrong renaming type.
5234
5235    This function partially covers for this limitation by attempting to
5236    remove from the SYMS list renaming symbols that should be visible
5237    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5238    method with the current information available.  The implementation
5239    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5240    
5241       - When the user tries to print a rename in a function while there
5242         is another rename entity defined in a package:  Normally, the
5243         rename in the function has precedence over the rename in the
5244         package, so the latter should be removed from the list.  This is
5245         currently not the case.
5246         
5247       - This function will incorrectly remove valid renames if
5248         the CURRENT_BLOCK corresponds to a function which symbol name
5249         has been changed by an "Export" pragma.  As a consequence,
5250         the user will be unable to print such rename entities.  */
5251
5252 static int
5253 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5254                              const struct block *current_block)
5255 {
5256   struct symbol *current_function;
5257   const char *current_function_name;
5258   int i;
5259   int is_new_style_renaming;
5260
5261   /* If there is both a renaming foo___XR... encoded as a variable and
5262      a simple variable foo in the same block, discard the latter.
5263      First, zero out such symbols, then compress.  */
5264   is_new_style_renaming = 0;
5265   for (i = 0; i < syms->size (); i += 1)
5266     {
5267       struct symbol *sym = (*syms)[i].symbol;
5268       const struct block *block = (*syms)[i].block;
5269       const char *name;
5270       const char *suffix;
5271
5272       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5273         continue;
5274       name = sym->linkage_name ();
5275       suffix = strstr (name, "___XR");
5276
5277       if (suffix != NULL)
5278         {
5279           int name_len = suffix - name;
5280           int j;
5281
5282           is_new_style_renaming = 1;
5283           for (j = 0; j < syms->size (); j += 1)
5284             if (i != j && (*syms)[j].symbol != NULL
5285                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5286                             name_len) == 0
5287                 && block == (*syms)[j].block)
5288               (*syms)[j].symbol = NULL;
5289         }
5290     }
5291   if (is_new_style_renaming)
5292     {
5293       int j, k;
5294
5295       for (j = k = 0; j < syms->size (); j += 1)
5296         if ((*syms)[j].symbol != NULL)
5297             {
5298               (*syms)[k] = (*syms)[j];
5299               k += 1;
5300             }
5301       return k;
5302     }
5303
5304   /* Extract the function name associated to CURRENT_BLOCK.
5305      Abort if unable to do so.  */
5306
5307   if (current_block == NULL)
5308     return syms->size ();
5309
5310   current_function = block_linkage_function (current_block);
5311   if (current_function == NULL)
5312     return syms->size ();
5313
5314   current_function_name = current_function->linkage_name ();
5315   if (current_function_name == NULL)
5316     return syms->size ();
5317
5318   /* Check each of the symbols, and remove it from the list if it is
5319      a type corresponding to a renaming that is out of the scope of
5320      the current block.  */
5321
5322   i = 0;
5323   while (i < syms->size ())
5324     {
5325       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5326           == ADA_OBJECT_RENAMING
5327           && old_renaming_is_invisible ((*syms)[i].symbol,
5328                                         current_function_name))
5329         syms->erase (syms->begin () + i);
5330       else
5331         i += 1;
5332     }
5333
5334   return syms->size ();
5335 }
5336
5337 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5338    whose name and domain match NAME and DOMAIN respectively.
5339    If no match was found, then extend the search to "enclosing"
5340    routines (in other words, if we're inside a nested function,
5341    search the symbols defined inside the enclosing functions).
5342    If WILD_MATCH_P is nonzero, perform the naming matching in
5343    "wild" mode (see function "wild_match" for more info).
5344
5345    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5346
5347 static void
5348 ada_add_local_symbols (struct obstack *obstackp,
5349                        const lookup_name_info &lookup_name,
5350                        const struct block *block, domain_enum domain)
5351 {
5352   int block_depth = 0;
5353
5354   while (block != NULL)
5355     {
5356       block_depth += 1;
5357       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5358
5359       /* If we found a non-function match, assume that's the one.  */
5360       if (is_nonfunction (defns_collected (obstackp, 0),
5361                           num_defns_collected (obstackp)))
5362         return;
5363
5364       block = BLOCK_SUPERBLOCK (block);
5365     }
5366
5367   /* If no luck so far, try to find NAME as a local symbol in some lexically
5368      enclosing subprogram.  */
5369   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5370     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5371 }
5372
5373 /* An object of this type is used as the user_data argument when
5374    calling the map_matching_symbols method.  */
5375
5376 struct match_data
5377 {
5378   struct objfile *objfile;
5379   struct obstack *obstackp;
5380   struct symbol *arg_sym;
5381   int found_sym;
5382 };
5383
5384 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5385    to a list of symbols.  DATA is a pointer to a struct match_data *
5386    containing the obstack that collects the symbol list, the file that SYM
5387    must come from, a flag indicating whether a non-argument symbol has
5388    been found in the current block, and the last argument symbol
5389    passed in SYM within the current block (if any).  When SYM is null,
5390    marking the end of a block, the argument symbol is added if no
5391    other has been found.  */
5392
5393 static bool
5394 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5395                           struct match_data *data)
5396 {
5397   const struct block *block = bsym->block;
5398   struct symbol *sym = bsym->symbol;
5399
5400   if (sym == NULL)
5401     {
5402       if (!data->found_sym && data->arg_sym != NULL) 
5403         add_defn_to_vec (data->obstackp,
5404                          fixup_symbol_section (data->arg_sym, data->objfile),
5405                          block);
5406       data->found_sym = 0;
5407       data->arg_sym = NULL;
5408     }
5409   else 
5410     {
5411       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5412         return true;
5413       else if (SYMBOL_IS_ARGUMENT (sym))
5414         data->arg_sym = sym;
5415       else
5416         {
5417           data->found_sym = 1;
5418           add_defn_to_vec (data->obstackp,
5419                            fixup_symbol_section (sym, data->objfile),
5420                            block);
5421         }
5422     }
5423   return true;
5424 }
5425
5426 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5427    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5428    symbols to OBSTACKP.  Return whether we found such symbols.  */
5429
5430 static int
5431 ada_add_block_renamings (struct obstack *obstackp,
5432                          const struct block *block,
5433                          const lookup_name_info &lookup_name,
5434                          domain_enum domain)
5435 {
5436   struct using_direct *renaming;
5437   int defns_mark = num_defns_collected (obstackp);
5438
5439   symbol_name_matcher_ftype *name_match
5440     = ada_get_symbol_name_matcher (lookup_name);
5441
5442   for (renaming = block_using (block);
5443        renaming != NULL;
5444        renaming = renaming->next)
5445     {
5446       const char *r_name;
5447
5448       /* Avoid infinite recursions: skip this renaming if we are actually
5449          already traversing it.
5450
5451          Currently, symbol lookup in Ada don't use the namespace machinery from
5452          C++/Fortran support: skip namespace imports that use them.  */
5453       if (renaming->searched
5454           || (renaming->import_src != NULL
5455               && renaming->import_src[0] != '\0')
5456           || (renaming->import_dest != NULL
5457               && renaming->import_dest[0] != '\0'))
5458         continue;
5459       renaming->searched = 1;
5460
5461       /* TODO: here, we perform another name-based symbol lookup, which can
5462          pull its own multiple overloads.  In theory, we should be able to do
5463          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5464          not a simple name.  But in order to do this, we would need to enhance
5465          the DWARF reader to associate a symbol to this renaming, instead of a
5466          name.  So, for now, we do something simpler: re-use the C++/Fortran
5467          namespace machinery.  */
5468       r_name = (renaming->alias != NULL
5469                 ? renaming->alias
5470                 : renaming->declaration);
5471       if (name_match (r_name, lookup_name, NULL))
5472         {
5473           lookup_name_info decl_lookup_name (renaming->declaration,
5474                                              lookup_name.match_type ());
5475           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5476                                1, NULL);
5477         }
5478       renaming->searched = 0;
5479     }
5480   return num_defns_collected (obstackp) != defns_mark;
5481 }
5482
5483 /* Implements compare_names, but only applying the comparision using
5484    the given CASING.  */
5485
5486 static int
5487 compare_names_with_case (const char *string1, const char *string2,
5488                          enum case_sensitivity casing)
5489 {
5490   while (*string1 != '\0' && *string2 != '\0')
5491     {
5492       char c1, c2;
5493
5494       if (isspace (*string1) || isspace (*string2))
5495         return strcmp_iw_ordered (string1, string2);
5496
5497       if (casing == case_sensitive_off)
5498         {
5499           c1 = tolower (*string1);
5500           c2 = tolower (*string2);
5501         }
5502       else
5503         {
5504           c1 = *string1;
5505           c2 = *string2;
5506         }
5507       if (c1 != c2)
5508         break;
5509
5510       string1 += 1;
5511       string2 += 1;
5512     }
5513
5514   switch (*string1)
5515     {
5516     case '(':
5517       return strcmp_iw_ordered (string1, string2);
5518     case '_':
5519       if (*string2 == '\0')
5520         {
5521           if (is_name_suffix (string1))
5522             return 0;
5523           else
5524             return 1;
5525         }
5526       /* FALLTHROUGH */
5527     default:
5528       if (*string2 == '(')
5529         return strcmp_iw_ordered (string1, string2);
5530       else
5531         {
5532           if (casing == case_sensitive_off)
5533             return tolower (*string1) - tolower (*string2);
5534           else
5535             return *string1 - *string2;
5536         }
5537     }
5538 }
5539
5540 /* Compare STRING1 to STRING2, with results as for strcmp.
5541    Compatible with strcmp_iw_ordered in that...
5542
5543        strcmp_iw_ordered (STRING1, STRING2) <= 0
5544
5545    ... implies...
5546
5547        compare_names (STRING1, STRING2) <= 0
5548
5549    (they may differ as to what symbols compare equal).  */
5550
5551 static int
5552 compare_names (const char *string1, const char *string2)
5553 {
5554   int result;
5555
5556   /* Similar to what strcmp_iw_ordered does, we need to perform
5557      a case-insensitive comparison first, and only resort to
5558      a second, case-sensitive, comparison if the first one was
5559      not sufficient to differentiate the two strings.  */
5560
5561   result = compare_names_with_case (string1, string2, case_sensitive_off);
5562   if (result == 0)
5563     result = compare_names_with_case (string1, string2, case_sensitive_on);
5564
5565   return result;
5566 }
5567
5568 /* Convenience function to get at the Ada encoded lookup name for
5569    LOOKUP_NAME, as a C string.  */
5570
5571 static const char *
5572 ada_lookup_name (const lookup_name_info &lookup_name)
5573 {
5574   return lookup_name.ada ().lookup_name ().c_str ();
5575 }
5576
5577 /* Add to OBSTACKP all non-local symbols whose name and domain match
5578    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5579    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5580    symbols otherwise.  */
5581
5582 static void
5583 add_nonlocal_symbols (struct obstack *obstackp,
5584                       const lookup_name_info &lookup_name,
5585                       domain_enum domain, int global)
5586 {
5587   struct match_data data;
5588
5589   memset (&data, 0, sizeof data);
5590   data.obstackp = obstackp;
5591
5592   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5593
5594   auto callback = [&] (struct block_symbol *bsym)
5595     {
5596       return aux_add_nonlocal_symbols (bsym, &data);
5597     };
5598
5599   for (objfile *objfile : current_program_space->objfiles ())
5600     {
5601       data.objfile = objfile;
5602
5603       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5604                                              domain, global, callback,
5605                                              (is_wild_match
5606                                               ? NULL : compare_names));
5607
5608       for (compunit_symtab *cu : objfile->compunits ())
5609         {
5610           const struct block *global_block
5611             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5612
5613           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5614                                        domain))
5615             data.found_sym = 1;
5616         }
5617     }
5618
5619   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5620     {
5621       const char *name = ada_lookup_name (lookup_name);
5622       std::string bracket_name = std::string ("<_ada_") + name + '>';
5623       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5624
5625       for (objfile *objfile : current_program_space->objfiles ())
5626         {
5627           data.objfile = objfile;
5628           objfile->sf->qf->map_matching_symbols (objfile, name1,
5629                                                  domain, global, callback,
5630                                                  compare_names);
5631         }
5632     }           
5633 }
5634
5635 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5636    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5637    returning the number of matches.  Add these to OBSTACKP.
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:
5646    "standard__" is first stripped off (by the lookup_name
5647    constructor), and only static and global symbols are searched.
5648
5649    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5650    to lookup global symbols.  */
5651
5652 static void
5653 ada_add_all_symbols (struct obstack *obstackp,
5654                      const struct block *block,
5655                      const lookup_name_info &lookup_name,
5656                      domain_enum domain,
5657                      int full_search,
5658                      int *made_global_lookup_p)
5659 {
5660   struct symbol *sym;
5661
5662   if (made_global_lookup_p)
5663     *made_global_lookup_p = 0;
5664
5665   /* Special case: If the user specifies a symbol name inside package
5666      Standard, do a non-wild matching of the symbol name without
5667      the "standard__" prefix.  This was primarily introduced in order
5668      to allow the user to specifically access the standard exceptions
5669      using, for instance, Standard.Constraint_Error when Constraint_Error
5670      is ambiguous (due to the user defining its own Constraint_Error
5671      entity inside its program).  */
5672   if (lookup_name.ada ().standard_p ())
5673     block = NULL;
5674
5675   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5676
5677   if (block != NULL)
5678     {
5679       if (full_search)
5680         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5681       else
5682         {
5683           /* In the !full_search case we're are being called by
5684              iterate_over_symbols, and we don't want to search
5685              superblocks.  */
5686           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5687         }
5688       if (num_defns_collected (obstackp) > 0 || !full_search)
5689         return;
5690     }
5691
5692   /* No non-global symbols found.  Check our cache to see if we have
5693      already performed this search before.  If we have, then return
5694      the same result.  */
5695
5696   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5697                             domain, &sym, &block))
5698     {
5699       if (sym != NULL)
5700         add_defn_to_vec (obstackp, sym, block);
5701       return;
5702     }
5703
5704   if (made_global_lookup_p)
5705     *made_global_lookup_p = 1;
5706
5707   /* Search symbols from all global blocks.  */
5708  
5709   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5710
5711   /* Now add symbols from all per-file blocks if we've gotten no hits
5712      (not strictly correct, but perhaps better than an error).  */
5713
5714   if (num_defns_collected (obstackp) == 0)
5715     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5716 }
5717
5718 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5719    is non-zero, enclosing scope and in global scopes, returning the number of
5720    matches.
5721    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5722    found and the blocks and symbol tables (if any) in which they were
5723    found.
5724
5725    When full_search is non-zero, any non-function/non-enumeral
5726    symbol match within the nest of blocks whose innermost member is BLOCK,
5727    is the one match returned (no other matches in that or
5728    enclosing blocks is returned).  If there are any matches in or
5729    surrounding BLOCK, then these alone are returned.
5730
5731    Names prefixed with "standard__" are handled specially: "standard__"
5732    is first stripped off, and only static and global symbols are searched.  */
5733
5734 static int
5735 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5736                                const struct block *block,
5737                                domain_enum domain,
5738                                std::vector<struct block_symbol> *results,
5739                                int full_search)
5740 {
5741   int syms_from_global_search;
5742   int ndefns;
5743   auto_obstack obstack;
5744
5745   ada_add_all_symbols (&obstack, block, lookup_name,
5746                        domain, full_search, &syms_from_global_search);
5747
5748   ndefns = num_defns_collected (&obstack);
5749
5750   struct block_symbol *base = defns_collected (&obstack, 1);
5751   for (int i = 0; i < ndefns; ++i)
5752     results->push_back (base[i]);
5753
5754   ndefns = remove_extra_symbols (results);
5755
5756   if (ndefns == 0 && full_search && syms_from_global_search)
5757     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5758
5759   if (ndefns == 1 && full_search && syms_from_global_search)
5760     cache_symbol (ada_lookup_name (lookup_name), domain,
5761                   (*results)[0].symbol, (*results)[0].block);
5762
5763   ndefns = remove_irrelevant_renamings (results, block);
5764
5765   return ndefns;
5766 }
5767
5768 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5769    in global scopes, returning the number of matches, and filling *RESULTS
5770    with (SYM,BLOCK) tuples.
5771
5772    See ada_lookup_symbol_list_worker for further details.  */
5773
5774 int
5775 ada_lookup_symbol_list (const char *name, const struct block *block,
5776                         domain_enum domain,
5777                         std::vector<struct block_symbol> *results)
5778 {
5779   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5780   lookup_name_info lookup_name (name, name_match_type);
5781
5782   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5783 }
5784
5785 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5786    to 1, but choosing the first symbol found if there are multiple
5787    choices.
5788
5789    The result is stored in *INFO, which must be non-NULL.
5790    If no match is found, INFO->SYM is set to NULL.  */
5791
5792 void
5793 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5794                            domain_enum domain,
5795                            struct block_symbol *info)
5796 {
5797   /* Since we already have an encoded name, wrap it in '<>' to force a
5798      verbatim match.  Otherwise, if the name happens to not look like
5799      an encoded name (because it doesn't include a "__"),
5800      ada_lookup_name_info would re-encode/fold it again, and that
5801      would e.g., incorrectly lowercase object renaming names like
5802      "R28b" -> "r28b".  */
5803   std::string verbatim = std::string ("<") + name + '>';
5804
5805   gdb_assert (info != NULL);
5806   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5807 }
5808
5809 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5810    scope and in global scopes, or NULL if none.  NAME is folded and
5811    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5812    choosing the first symbol if there are multiple choices.  */
5813
5814 struct block_symbol
5815 ada_lookup_symbol (const char *name, const struct block *block0,
5816                    domain_enum domain)
5817 {
5818   std::vector<struct block_symbol> candidates;
5819   int n_candidates;
5820
5821   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5822
5823   if (n_candidates == 0)
5824     return {};
5825
5826   block_symbol info = candidates[0];
5827   info.symbol = fixup_symbol_section (info.symbol, NULL);
5828   return info;
5829 }
5830
5831 static struct block_symbol
5832 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5833                             const char *name,
5834                             const struct block *block,
5835                             const domain_enum domain)
5836 {
5837   struct block_symbol sym;
5838
5839   sym = ada_lookup_symbol (name, block_static_block (block), domain);
5840   if (sym.symbol != NULL)
5841     return sym;
5842
5843   /* If we haven't found a match at this point, try the primitive
5844      types.  In other languages, this search is performed before
5845      searching for global symbols in order to short-circuit that
5846      global-symbol search if it happens that the name corresponds
5847      to a primitive type.  But we cannot do the same in Ada, because
5848      it is perfectly legitimate for a program to declare a type which
5849      has the same name as a standard type.  If looking up a type in
5850      that situation, we have traditionally ignored the primitive type
5851      in favor of user-defined types.  This is why, unlike most other
5852      languages, we search the primitive types this late and only after
5853      having searched the global symbols without success.  */
5854
5855   if (domain == VAR_DOMAIN)
5856     {
5857       struct gdbarch *gdbarch;
5858
5859       if (block == NULL)
5860         gdbarch = target_gdbarch ();
5861       else
5862         gdbarch = block_gdbarch (block);
5863       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5864       if (sym.symbol != NULL)
5865         return sym;
5866     }
5867
5868   return {};
5869 }
5870
5871
5872 /* True iff STR is a possible encoded suffix of a normal Ada name
5873    that is to be ignored for matching purposes.  Suffixes of parallel
5874    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5875    are given by any of the regular expressions:
5876
5877    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5878    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5879    TKB              [subprogram suffix for task bodies]
5880    _E[0-9]+[bs]$    [protected object entry suffixes]
5881    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5882
5883    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5884    match is performed.  This sequence is used to differentiate homonyms,
5885    is an optional part of a valid name suffix.  */
5886
5887 static int
5888 is_name_suffix (const char *str)
5889 {
5890   int k;
5891   const char *matching;
5892   const int len = strlen (str);
5893
5894   /* Skip optional leading __[0-9]+.  */
5895
5896   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5897     {
5898       str += 3;
5899       while (isdigit (str[0]))
5900         str += 1;
5901     }
5902   
5903   /* [.$][0-9]+ */
5904
5905   if (str[0] == '.' || str[0] == '$')
5906     {
5907       matching = str + 1;
5908       while (isdigit (matching[0]))
5909         matching += 1;
5910       if (matching[0] == '\0')
5911         return 1;
5912     }
5913
5914   /* ___[0-9]+ */
5915
5916   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5917     {
5918       matching = str + 3;
5919       while (isdigit (matching[0]))
5920         matching += 1;
5921       if (matching[0] == '\0')
5922         return 1;
5923     }
5924
5925   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5926
5927   if (strcmp (str, "TKB") == 0)
5928     return 1;
5929
5930 #if 0
5931   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5932      with a N at the end.  Unfortunately, the compiler uses the same
5933      convention for other internal types it creates.  So treating
5934      all entity names that end with an "N" as a name suffix causes
5935      some regressions.  For instance, consider the case of an enumerated
5936      type.  To support the 'Image attribute, it creates an array whose
5937      name ends with N.
5938      Having a single character like this as a suffix carrying some
5939      information is a bit risky.  Perhaps we should change the encoding
5940      to be something like "_N" instead.  In the meantime, do not do
5941      the following check.  */
5942   /* Protected Object Subprograms */
5943   if (len == 1 && str [0] == 'N')
5944     return 1;
5945 #endif
5946
5947   /* _E[0-9]+[bs]$ */
5948   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5949     {
5950       matching = str + 3;
5951       while (isdigit (matching[0]))
5952         matching += 1;
5953       if ((matching[0] == 'b' || matching[0] == 's')
5954           && matching [1] == '\0')
5955         return 1;
5956     }
5957
5958   /* ??? We should not modify STR directly, as we are doing below.  This
5959      is fine in this case, but may become problematic later if we find
5960      that this alternative did not work, and want to try matching
5961      another one from the begining of STR.  Since we modified it, we
5962      won't be able to find the begining of the string anymore!  */
5963   if (str[0] == 'X')
5964     {
5965       str += 1;
5966       while (str[0] != '_' && str[0] != '\0')
5967         {
5968           if (str[0] != 'n' && str[0] != 'b')
5969             return 0;
5970           str += 1;
5971         }
5972     }
5973
5974   if (str[0] == '\000')
5975     return 1;
5976
5977   if (str[0] == '_')
5978     {
5979       if (str[1] != '_' || str[2] == '\000')
5980         return 0;
5981       if (str[2] == '_')
5982         {
5983           if (strcmp (str + 3, "JM") == 0)
5984             return 1;
5985           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5986              the LJM suffix in favor of the JM one.  But we will
5987              still accept LJM as a valid suffix for a reasonable
5988              amount of time, just to allow ourselves to debug programs
5989              compiled using an older version of GNAT.  */
5990           if (strcmp (str + 3, "LJM") == 0)
5991             return 1;
5992           if (str[3] != 'X')
5993             return 0;
5994           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5995               || str[4] == 'U' || str[4] == 'P')
5996             return 1;
5997           if (str[4] == 'R' && str[5] != 'T')
5998             return 1;
5999           return 0;
6000         }
6001       if (!isdigit (str[2]))
6002         return 0;
6003       for (k = 3; str[k] != '\0'; k += 1)
6004         if (!isdigit (str[k]) && str[k] != '_')
6005           return 0;
6006       return 1;
6007     }
6008   if (str[0] == '$' && isdigit (str[1]))
6009     {
6010       for (k = 2; str[k] != '\0'; k += 1)
6011         if (!isdigit (str[k]) && str[k] != '_')
6012           return 0;
6013       return 1;
6014     }
6015   return 0;
6016 }
6017
6018 /* Return non-zero if the string starting at NAME and ending before
6019    NAME_END contains no capital letters.  */
6020
6021 static int
6022 is_valid_name_for_wild_match (const char *name0)
6023 {
6024   std::string decoded_name = ada_decode (name0);
6025   int i;
6026
6027   /* If the decoded name starts with an angle bracket, it means that
6028      NAME0 does not follow the GNAT encoding format.  It should then
6029      not be allowed as a possible wild match.  */
6030   if (decoded_name[0] == '<')
6031     return 0;
6032
6033   for (i=0; decoded_name[i] != '\0'; i++)
6034     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6035       return 0;
6036
6037   return 1;
6038 }
6039
6040 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6041    that could start a simple name.  Assumes that *NAMEP points into
6042    the string beginning at NAME0.  */
6043
6044 static int
6045 advance_wild_match (const char **namep, const char *name0, int target0)
6046 {
6047   const char *name = *namep;
6048
6049   while (1)
6050     {
6051       int t0, t1;
6052
6053       t0 = *name;
6054       if (t0 == '_')
6055         {
6056           t1 = name[1];
6057           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6058             {
6059               name += 1;
6060               if (name == name0 + 5 && startswith (name0, "_ada"))
6061                 break;
6062               else
6063                 name += 1;
6064             }
6065           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6066                                  || name[2] == target0))
6067             {
6068               name += 2;
6069               break;
6070             }
6071           else
6072             return 0;
6073         }
6074       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6075         name += 1;
6076       else
6077         return 0;
6078     }
6079
6080   *namep = name;
6081   return 1;
6082 }
6083
6084 /* Return true iff NAME encodes a name of the form prefix.PATN.
6085    Ignores any informational suffixes of NAME (i.e., for which
6086    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6087    simple name.  */
6088
6089 static bool
6090 wild_match (const char *name, const char *patn)
6091 {
6092   const char *p;
6093   const char *name0 = name;
6094
6095   while (1)
6096     {
6097       const char *match = name;
6098
6099       if (*name == *patn)
6100         {
6101           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6102             if (*p != *name)
6103               break;
6104           if (*p == '\0' && is_name_suffix (name))
6105             return match == name0 || is_valid_name_for_wild_match (name0);
6106
6107           if (name[-1] == '_')
6108             name -= 1;
6109         }
6110       if (!advance_wild_match (&name, name0, *patn))
6111         return false;
6112     }
6113 }
6114
6115 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6116    any trailing suffixes that encode debugging information or leading
6117    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6118    information that is ignored).  */
6119
6120 static bool
6121 full_match (const char *sym_name, const char *search_name)
6122 {
6123   size_t search_name_len = strlen (search_name);
6124
6125   if (strncmp (sym_name, search_name, search_name_len) == 0
6126       && is_name_suffix (sym_name + search_name_len))
6127     return true;
6128
6129   if (startswith (sym_name, "_ada_")
6130       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6131       && is_name_suffix (sym_name + search_name_len + 5))
6132     return true;
6133
6134   return false;
6135 }
6136
6137 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6138    *defn_symbols, updating the list of symbols in OBSTACKP (if
6139    necessary).  OBJFILE is the section containing BLOCK.  */
6140
6141 static void
6142 ada_add_block_symbols (struct obstack *obstackp,
6143                        const struct block *block,
6144                        const lookup_name_info &lookup_name,
6145                        domain_enum domain, struct objfile *objfile)
6146 {
6147   struct block_iterator iter;
6148   /* A matching argument symbol, if any.  */
6149   struct symbol *arg_sym;
6150   /* Set true when we find a matching non-argument symbol.  */
6151   int found_sym;
6152   struct symbol *sym;
6153
6154   arg_sym = NULL;
6155   found_sym = 0;
6156   for (sym = block_iter_match_first (block, lookup_name, &iter);
6157        sym != NULL;
6158        sym = block_iter_match_next (lookup_name, &iter))
6159     {
6160       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6161         {
6162           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6163             {
6164               if (SYMBOL_IS_ARGUMENT (sym))
6165                 arg_sym = sym;
6166               else
6167                 {
6168                   found_sym = 1;
6169                   add_defn_to_vec (obstackp,
6170                                    fixup_symbol_section (sym, objfile),
6171                                    block);
6172                 }
6173             }
6174         }
6175     }
6176
6177   /* Handle renamings.  */
6178
6179   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6180     found_sym = 1;
6181
6182   if (!found_sym && arg_sym != NULL)
6183     {
6184       add_defn_to_vec (obstackp,
6185                        fixup_symbol_section (arg_sym, objfile),
6186                        block);
6187     }
6188
6189   if (!lookup_name.ada ().wild_match_p ())
6190     {
6191       arg_sym = NULL;
6192       found_sym = 0;
6193       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6194       const char *name = ada_lookup_name.c_str ();
6195       size_t name_len = ada_lookup_name.size ();
6196
6197       ALL_BLOCK_SYMBOLS (block, iter, sym)
6198       {
6199         if (symbol_matches_domain (sym->language (),
6200                                    SYMBOL_DOMAIN (sym), domain))
6201           {
6202             int cmp;
6203
6204             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6205             if (cmp == 0)
6206               {
6207                 cmp = !startswith (sym->linkage_name (), "_ada_");
6208                 if (cmp == 0)
6209                   cmp = strncmp (name, sym->linkage_name () + 5,
6210                                  name_len);
6211               }
6212
6213             if (cmp == 0
6214                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6215               {
6216                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6217                   {
6218                     if (SYMBOL_IS_ARGUMENT (sym))
6219                       arg_sym = sym;
6220                     else
6221                       {
6222                         found_sym = 1;
6223                         add_defn_to_vec (obstackp,
6224                                          fixup_symbol_section (sym, objfile),
6225                                          block);
6226                       }
6227                   }
6228               }
6229           }
6230       }
6231
6232       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6233          They aren't parameters, right?  */
6234       if (!found_sym && arg_sym != NULL)
6235         {
6236           add_defn_to_vec (obstackp,
6237                            fixup_symbol_section (arg_sym, objfile),
6238                            block);
6239         }
6240     }
6241 }
6242 \f
6243
6244                                 /* Symbol Completion */
6245
6246 /* See symtab.h.  */
6247
6248 bool
6249 ada_lookup_name_info::matches
6250   (const char *sym_name,
6251    symbol_name_match_type match_type,
6252    completion_match_result *comp_match_res) const
6253 {
6254   bool match = false;
6255   const char *text = m_encoded_name.c_str ();
6256   size_t text_len = m_encoded_name.size ();
6257
6258   /* First, test against the fully qualified name of the symbol.  */
6259
6260   if (strncmp (sym_name, text, text_len) == 0)
6261     match = true;
6262
6263   std::string decoded_name = ada_decode (sym_name);
6264   if (match && !m_encoded_p)
6265     {
6266       /* One needed check before declaring a positive match is to verify
6267          that iff we are doing a verbatim match, the decoded version
6268          of the symbol name starts with '<'.  Otherwise, this symbol name
6269          is not a suitable completion.  */
6270
6271       bool has_angle_bracket = (decoded_name[0] == '<');
6272       match = (has_angle_bracket == m_verbatim_p);
6273     }
6274
6275   if (match && !m_verbatim_p)
6276     {
6277       /* When doing non-verbatim match, another check that needs to
6278          be done is to verify that the potentially matching symbol name
6279          does not include capital letters, because the ada-mode would
6280          not be able to understand these symbol names without the
6281          angle bracket notation.  */
6282       const char *tmp;
6283
6284       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6285       if (*tmp != '\0')
6286         match = false;
6287     }
6288
6289   /* Second: Try wild matching...  */
6290
6291   if (!match && m_wild_match_p)
6292     {
6293       /* Since we are doing wild matching, this means that TEXT
6294          may represent an unqualified symbol name.  We therefore must
6295          also compare TEXT against the unqualified name of the symbol.  */
6296       sym_name = ada_unqualified_name (decoded_name.c_str ());
6297
6298       if (strncmp (sym_name, text, text_len) == 0)
6299         match = true;
6300     }
6301
6302   /* Finally: If we found a match, prepare the result to return.  */
6303
6304   if (!match)
6305     return false;
6306
6307   if (comp_match_res != NULL)
6308     {
6309       std::string &match_str = comp_match_res->match.storage ();
6310
6311       if (!m_encoded_p)
6312         match_str = ada_decode (sym_name);
6313       else
6314         {
6315           if (m_verbatim_p)
6316             match_str = add_angle_brackets (sym_name);
6317           else
6318             match_str = sym_name;
6319
6320         }
6321
6322       comp_match_res->set_match (match_str.c_str ());
6323     }
6324
6325   return true;
6326 }
6327
6328 /* Add the list of possible symbol names completing TEXT to TRACKER.
6329    WORD is the entire command on which completion is made.  */
6330
6331 static void
6332 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6333                                        complete_symbol_mode mode,
6334                                        symbol_name_match_type name_match_type,
6335                                        const char *text, const char *word,
6336                                        enum type_code code)
6337 {
6338   struct symbol *sym;
6339   const struct block *b, *surrounding_static_block = 0;
6340   struct block_iterator iter;
6341
6342   gdb_assert (code == TYPE_CODE_UNDEF);
6343
6344   lookup_name_info lookup_name (text, name_match_type, true);
6345
6346   /* First, look at the partial symtab symbols.  */
6347   expand_symtabs_matching (NULL,
6348                            lookup_name,
6349                            NULL,
6350                            NULL,
6351                            ALL_DOMAIN);
6352
6353   /* At this point scan through the misc symbol vectors and add each
6354      symbol you find to the list.  Eventually we want to ignore
6355      anything that isn't a text symbol (everything else will be
6356      handled by the psymtab code above).  */
6357
6358   for (objfile *objfile : current_program_space->objfiles ())
6359     {
6360       for (minimal_symbol *msymbol : objfile->msymbols ())
6361         {
6362           QUIT;
6363
6364           if (completion_skip_symbol (mode, msymbol))
6365             continue;
6366
6367           language symbol_language = msymbol->language ();
6368
6369           /* Ada minimal symbols won't have their language set to Ada.  If
6370              we let completion_list_add_name compare using the
6371              default/C-like matcher, then when completing e.g., symbols in a
6372              package named "pck", we'd match internal Ada symbols like
6373              "pckS", which are invalid in an Ada expression, unless you wrap
6374              them in '<' '>' to request a verbatim match.
6375
6376              Unfortunately, some Ada encoded names successfully demangle as
6377              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6378              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6379              with the wrong language set.  Paper over that issue here.  */
6380           if (symbol_language == language_auto
6381               || symbol_language == language_cplus)
6382             symbol_language = language_ada;
6383
6384           completion_list_add_name (tracker,
6385                                     symbol_language,
6386                                     msymbol->linkage_name (),
6387                                     lookup_name, text, word);
6388         }
6389     }
6390
6391   /* Search upwards from currently selected frame (so that we can
6392      complete on local vars.  */
6393
6394   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6395     {
6396       if (!BLOCK_SUPERBLOCK (b))
6397         surrounding_static_block = b;   /* For elmin of dups */
6398
6399       ALL_BLOCK_SYMBOLS (b, iter, sym)
6400       {
6401         if (completion_skip_symbol (mode, sym))
6402           continue;
6403
6404         completion_list_add_name (tracker,
6405                                   sym->language (),
6406                                   sym->linkage_name (),
6407                                   lookup_name, text, word);
6408       }
6409     }
6410
6411   /* Go through the symtabs and check the externs and statics for
6412      symbols which match.  */
6413
6414   for (objfile *objfile : current_program_space->objfiles ())
6415     {
6416       for (compunit_symtab *s : objfile->compunits ())
6417         {
6418           QUIT;
6419           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6420           ALL_BLOCK_SYMBOLS (b, iter, sym)
6421             {
6422               if (completion_skip_symbol (mode, sym))
6423                 continue;
6424
6425               completion_list_add_name (tracker,
6426                                         sym->language (),
6427                                         sym->linkage_name (),
6428                                         lookup_name, text, word);
6429             }
6430         }
6431     }
6432
6433   for (objfile *objfile : current_program_space->objfiles ())
6434     {
6435       for (compunit_symtab *s : objfile->compunits ())
6436         {
6437           QUIT;
6438           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6439           /* Don't do this block twice.  */
6440           if (b == surrounding_static_block)
6441             continue;
6442           ALL_BLOCK_SYMBOLS (b, iter, sym)
6443             {
6444               if (completion_skip_symbol (mode, sym))
6445                 continue;
6446
6447               completion_list_add_name (tracker,
6448                                         sym->language (),
6449                                         sym->linkage_name (),
6450                                         lookup_name, text, word);
6451             }
6452         }
6453     }
6454 }
6455
6456                                 /* Field Access */
6457
6458 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6459    for tagged types.  */
6460
6461 static int
6462 ada_is_dispatch_table_ptr_type (struct type *type)
6463 {
6464   const char *name;
6465
6466   if (type->code () != TYPE_CODE_PTR)
6467     return 0;
6468
6469   name = TYPE_TARGET_TYPE (type)->name ();
6470   if (name == NULL)
6471     return 0;
6472
6473   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6474 }
6475
6476 /* Return non-zero if TYPE is an interface tag.  */
6477
6478 static int
6479 ada_is_interface_tag (struct type *type)
6480 {
6481   const char *name = type->name ();
6482
6483   if (name == NULL)
6484     return 0;
6485
6486   return (strcmp (name, "ada__tags__interface_tag") == 0);
6487 }
6488
6489 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6490    to be invisible to users.  */
6491
6492 int
6493 ada_is_ignored_field (struct type *type, int field_num)
6494 {
6495   if (field_num < 0 || field_num > type->num_fields ())
6496     return 1;
6497
6498   /* Check the name of that field.  */
6499   {
6500     const char *name = TYPE_FIELD_NAME (type, field_num);
6501
6502     /* Anonymous field names should not be printed.
6503        brobecker/2007-02-20: I don't think this can actually happen
6504        but we don't want to print the value of anonymous fields anyway.  */
6505     if (name == NULL)
6506       return 1;
6507
6508     /* Normally, fields whose name start with an underscore ("_")
6509        are fields that have been internally generated by the compiler,
6510        and thus should not be printed.  The "_parent" field is special,
6511        however: This is a field internally generated by the compiler
6512        for tagged types, and it contains the components inherited from
6513        the parent type.  This field should not be printed as is, but
6514        should not be ignored either.  */
6515     if (name[0] == '_' && !startswith (name, "_parent"))
6516       return 1;
6517   }
6518
6519   /* If this is the dispatch table of a tagged type or an interface tag,
6520      then ignore.  */
6521   if (ada_is_tagged_type (type, 1)
6522       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6523           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6524     return 1;
6525
6526   /* Not a special field, so it should not be ignored.  */
6527   return 0;
6528 }
6529
6530 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6531    pointer or reference type whose ultimate target has a tag field.  */
6532
6533 int
6534 ada_is_tagged_type (struct type *type, int refok)
6535 {
6536   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6537 }
6538
6539 /* True iff TYPE represents the type of X'Tag */
6540
6541 int
6542 ada_is_tag_type (struct type *type)
6543 {
6544   type = ada_check_typedef (type);
6545
6546   if (type == NULL || type->code () != TYPE_CODE_PTR)
6547     return 0;
6548   else
6549     {
6550       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6551
6552       return (name != NULL
6553               && strcmp (name, "ada__tags__dispatch_table") == 0);
6554     }
6555 }
6556
6557 /* The type of the tag on VAL.  */
6558
6559 static struct type *
6560 ada_tag_type (struct value *val)
6561 {
6562   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6563 }
6564
6565 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6566    retired at Ada 05).  */
6567
6568 static int
6569 is_ada95_tag (struct value *tag)
6570 {
6571   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6572 }
6573
6574 /* The value of the tag on VAL.  */
6575
6576 static struct value *
6577 ada_value_tag (struct value *val)
6578 {
6579   return ada_value_struct_elt (val, "_tag", 0);
6580 }
6581
6582 /* The value of the tag on the object of type TYPE whose contents are
6583    saved at VALADDR, if it is non-null, or is at memory address
6584    ADDRESS.  */
6585
6586 static struct value *
6587 value_tag_from_contents_and_address (struct type *type,
6588                                      const gdb_byte *valaddr,
6589                                      CORE_ADDR address)
6590 {
6591   int tag_byte_offset;
6592   struct type *tag_type;
6593
6594   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6595                          NULL, NULL, NULL))
6596     {
6597       const gdb_byte *valaddr1 = ((valaddr == NULL)
6598                                   ? NULL
6599                                   : valaddr + tag_byte_offset);
6600       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6601
6602       return value_from_contents_and_address (tag_type, valaddr1, address1);
6603     }
6604   return NULL;
6605 }
6606
6607 static struct type *
6608 type_from_tag (struct value *tag)
6609 {
6610   const char *type_name = ada_tag_name (tag);
6611
6612   if (type_name != NULL)
6613     return ada_find_any_type (ada_encode (type_name));
6614   return NULL;
6615 }
6616
6617 /* Given a value OBJ of a tagged type, return a value of this
6618    type at the base address of the object.  The base address, as
6619    defined in Ada.Tags, it is the address of the primary tag of
6620    the object, and therefore where the field values of its full
6621    view can be fetched.  */
6622
6623 struct value *
6624 ada_tag_value_at_base_address (struct value *obj)
6625 {
6626   struct value *val;
6627   LONGEST offset_to_top = 0;
6628   struct type *ptr_type, *obj_type;
6629   struct value *tag;
6630   CORE_ADDR base_address;
6631
6632   obj_type = value_type (obj);
6633
6634   /* It is the responsability of the caller to deref pointers.  */
6635
6636   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6637     return obj;
6638
6639   tag = ada_value_tag (obj);
6640   if (!tag)
6641     return obj;
6642
6643   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6644
6645   if (is_ada95_tag (tag))
6646     return obj;
6647
6648   ptr_type = language_lookup_primitive_type
6649     (language_def (language_ada), target_gdbarch(), "storage_offset");
6650   ptr_type = lookup_pointer_type (ptr_type);
6651   val = value_cast (ptr_type, tag);
6652   if (!val)
6653     return obj;
6654
6655   /* It is perfectly possible that an exception be raised while
6656      trying to determine the base address, just like for the tag;
6657      see ada_tag_name for more details.  We do not print the error
6658      message for the same reason.  */
6659
6660   try
6661     {
6662       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6663     }
6664
6665   catch (const gdb_exception_error &e)
6666     {
6667       return obj;
6668     }
6669
6670   /* If offset is null, nothing to do.  */
6671
6672   if (offset_to_top == 0)
6673     return obj;
6674
6675   /* -1 is a special case in Ada.Tags; however, what should be done
6676      is not quite clear from the documentation.  So do nothing for
6677      now.  */
6678
6679   if (offset_to_top == -1)
6680     return obj;
6681
6682   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6683      from the base address.  This was however incompatible with
6684      C++ dispatch table: C++ uses a *negative* value to *add*
6685      to the base address.  Ada's convention has therefore been
6686      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6687      use the same convention.  Here, we support both cases by
6688      checking the sign of OFFSET_TO_TOP.  */
6689
6690   if (offset_to_top > 0)
6691     offset_to_top = -offset_to_top;
6692
6693   base_address = value_address (obj) + offset_to_top;
6694   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6695
6696   /* Make sure that we have a proper tag at the new address.
6697      Otherwise, offset_to_top is bogus (which can happen when
6698      the object is not initialized yet).  */
6699
6700   if (!tag)
6701     return obj;
6702
6703   obj_type = type_from_tag (tag);
6704
6705   if (!obj_type)
6706     return obj;
6707
6708   return value_from_contents_and_address (obj_type, NULL, base_address);
6709 }
6710
6711 /* Return the "ada__tags__type_specific_data" type.  */
6712
6713 static struct type *
6714 ada_get_tsd_type (struct inferior *inf)
6715 {
6716   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6717
6718   if (data->tsd_type == 0)
6719     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6720   return data->tsd_type;
6721 }
6722
6723 /* Return the TSD (type-specific data) associated to the given TAG.
6724    TAG is assumed to be the tag of a tagged-type entity.
6725
6726    May return NULL if we are unable to get the TSD.  */
6727
6728 static struct value *
6729 ada_get_tsd_from_tag (struct value *tag)
6730 {
6731   struct value *val;
6732   struct type *type;
6733
6734   /* First option: The TSD is simply stored as a field of our TAG.
6735      Only older versions of GNAT would use this format, but we have
6736      to test it first, because there are no visible markers for
6737      the current approach except the absence of that field.  */
6738
6739   val = ada_value_struct_elt (tag, "tsd", 1);
6740   if (val)
6741     return val;
6742
6743   /* Try the second representation for the dispatch table (in which
6744      there is no explicit 'tsd' field in the referent of the tag pointer,
6745      and instead the tsd pointer is stored just before the dispatch
6746      table.  */
6747
6748   type = ada_get_tsd_type (current_inferior());
6749   if (type == NULL)
6750     return NULL;
6751   type = lookup_pointer_type (lookup_pointer_type (type));
6752   val = value_cast (type, tag);
6753   if (val == NULL)
6754     return NULL;
6755   return value_ind (value_ptradd (val, -1));
6756 }
6757
6758 /* Given the TSD of a tag (type-specific data), return a string
6759    containing the name of the associated type.
6760
6761    The returned value is good until the next call.  May return NULL
6762    if we are unable to determine the tag name.  */
6763
6764 static char *
6765 ada_tag_name_from_tsd (struct value *tsd)
6766 {
6767   static char name[1024];
6768   char *p;
6769   struct value *val;
6770
6771   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6772   if (val == NULL)
6773     return NULL;
6774   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6775   for (p = name; *p != '\0'; p += 1)
6776     if (isalpha (*p))
6777       *p = tolower (*p);
6778   return name;
6779 }
6780
6781 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6782    a C string.
6783
6784    Return NULL if the TAG is not an Ada tag, or if we were unable to
6785    determine the name of that tag.  The result is good until the next
6786    call.  */
6787
6788 const char *
6789 ada_tag_name (struct value *tag)
6790 {
6791   char *name = NULL;
6792
6793   if (!ada_is_tag_type (value_type (tag)))
6794     return NULL;
6795
6796   /* It is perfectly possible that an exception be raised while trying
6797      to determine the TAG's name, even under normal circumstances:
6798      The associated variable may be uninitialized or corrupted, for
6799      instance. We do not let any exception propagate past this point.
6800      instead we return NULL.
6801
6802      We also do not print the error message either (which often is very
6803      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6804      the caller print a more meaningful message if necessary.  */
6805   try
6806     {
6807       struct value *tsd = ada_get_tsd_from_tag (tag);
6808
6809       if (tsd != NULL)
6810         name = ada_tag_name_from_tsd (tsd);
6811     }
6812   catch (const gdb_exception_error &e)
6813     {
6814     }
6815
6816   return name;
6817 }
6818
6819 /* The parent type of TYPE, or NULL if none.  */
6820
6821 struct type *
6822 ada_parent_type (struct type *type)
6823 {
6824   int i;
6825
6826   type = ada_check_typedef (type);
6827
6828   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6829     return NULL;
6830
6831   for (i = 0; i < type->num_fields (); i += 1)
6832     if (ada_is_parent_field (type, i))
6833       {
6834         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6835
6836         /* If the _parent field is a pointer, then dereference it.  */
6837         if (parent_type->code () == TYPE_CODE_PTR)
6838           parent_type = TYPE_TARGET_TYPE (parent_type);
6839         /* If there is a parallel XVS type, get the actual base type.  */
6840         parent_type = ada_get_base_type (parent_type);
6841
6842         return ada_check_typedef (parent_type);
6843       }
6844
6845   return NULL;
6846 }
6847
6848 /* True iff field number FIELD_NUM of structure type TYPE contains the
6849    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6850    a structure type with at least FIELD_NUM+1 fields.  */
6851
6852 int
6853 ada_is_parent_field (struct type *type, int field_num)
6854 {
6855   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6856
6857   return (name != NULL
6858           && (startswith (name, "PARENT")
6859               || startswith (name, "_parent")));
6860 }
6861
6862 /* True iff field number FIELD_NUM of structure type TYPE is a
6863    transparent wrapper field (which should be silently traversed when doing
6864    field selection and flattened when printing).  Assumes TYPE is a
6865    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6866    structures.  */
6867
6868 int
6869 ada_is_wrapper_field (struct type *type, int field_num)
6870 {
6871   const char *name = TYPE_FIELD_NAME (type, field_num);
6872
6873   if (name != NULL && strcmp (name, "RETVAL") == 0)
6874     {
6875       /* This happens in functions with "out" or "in out" parameters
6876          which are passed by copy.  For such functions, GNAT describes
6877          the function's return type as being a struct where the return
6878          value is in a field called RETVAL, and where the other "out"
6879          or "in out" parameters are fields of that struct.  This is not
6880          a wrapper.  */
6881       return 0;
6882     }
6883
6884   return (name != NULL
6885           && (startswith (name, "PARENT")
6886               || strcmp (name, "REP") == 0
6887               || startswith (name, "_parent")
6888               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6889 }
6890
6891 /* True iff field number FIELD_NUM of structure or union type TYPE
6892    is a variant wrapper.  Assumes TYPE is a structure type with at least
6893    FIELD_NUM+1 fields.  */
6894
6895 int
6896 ada_is_variant_part (struct type *type, int field_num)
6897 {
6898   /* Only Ada types are eligible.  */
6899   if (!ADA_TYPE_P (type))
6900     return 0;
6901
6902   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6903
6904   return (field_type->code () == TYPE_CODE_UNION
6905           || (is_dynamic_field (type, field_num)
6906               && (TYPE_TARGET_TYPE (field_type)->code ()
6907                   == TYPE_CODE_UNION)));
6908 }
6909
6910 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6911    whose discriminants are contained in the record type OUTER_TYPE,
6912    returns the type of the controlling discriminant for the variant.
6913    May return NULL if the type could not be found.  */
6914
6915 struct type *
6916 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6917 {
6918   const char *name = ada_variant_discrim_name (var_type);
6919
6920   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6921 }
6922
6923 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6924    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6925    represents a 'when others' clause; otherwise 0.  */
6926
6927 static int
6928 ada_is_others_clause (struct type *type, int field_num)
6929 {
6930   const char *name = TYPE_FIELD_NAME (type, field_num);
6931
6932   return (name != NULL && name[0] == 'O');
6933 }
6934
6935 /* Assuming that TYPE0 is the type of the variant part of a record,
6936    returns the name of the discriminant controlling the variant.
6937    The value is valid until the next call to ada_variant_discrim_name.  */
6938
6939 const char *
6940 ada_variant_discrim_name (struct type *type0)
6941 {
6942   static char *result = NULL;
6943   static size_t result_len = 0;
6944   struct type *type;
6945   const char *name;
6946   const char *discrim_end;
6947   const char *discrim_start;
6948
6949   if (type0->code () == TYPE_CODE_PTR)
6950     type = TYPE_TARGET_TYPE (type0);
6951   else
6952     type = type0;
6953
6954   name = ada_type_name (type);
6955
6956   if (name == NULL || name[0] == '\000')
6957     return "";
6958
6959   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6960        discrim_end -= 1)
6961     {
6962       if (startswith (discrim_end, "___XVN"))
6963         break;
6964     }
6965   if (discrim_end == name)
6966     return "";
6967
6968   for (discrim_start = discrim_end; discrim_start != name + 3;
6969        discrim_start -= 1)
6970     {
6971       if (discrim_start == name + 1)
6972         return "";
6973       if ((discrim_start > name + 3
6974            && startswith (discrim_start - 3, "___"))
6975           || discrim_start[-1] == '.')
6976         break;
6977     }
6978
6979   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6980   strncpy (result, discrim_start, discrim_end - discrim_start);
6981   result[discrim_end - discrim_start] = '\0';
6982   return result;
6983 }
6984
6985 /* Scan STR for a subtype-encoded number, beginning at position K.
6986    Put the position of the character just past the number scanned in
6987    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6988    Return 1 if there was a valid number at the given position, and 0
6989    otherwise.  A "subtype-encoded" number consists of the absolute value
6990    in decimal, followed by the letter 'm' to indicate a negative number.
6991    Assumes 0m does not occur.  */
6992
6993 int
6994 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6995 {
6996   ULONGEST RU;
6997
6998   if (!isdigit (str[k]))
6999     return 0;
7000
7001   /* Do it the hard way so as not to make any assumption about
7002      the relationship of unsigned long (%lu scan format code) and
7003      LONGEST.  */
7004   RU = 0;
7005   while (isdigit (str[k]))
7006     {
7007       RU = RU * 10 + (str[k] - '0');
7008       k += 1;
7009     }
7010
7011   if (str[k] == 'm')
7012     {
7013       if (R != NULL)
7014         *R = (-(LONGEST) (RU - 1)) - 1;
7015       k += 1;
7016     }
7017   else if (R != NULL)
7018     *R = (LONGEST) RU;
7019
7020   /* NOTE on the above: Technically, C does not say what the results of
7021      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7022      number representable as a LONGEST (although either would probably work
7023      in most implementations).  When RU>0, the locution in the then branch
7024      above is always equivalent to the negative of RU.  */
7025
7026   if (new_k != NULL)
7027     *new_k = k;
7028   return 1;
7029 }
7030
7031 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7032    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7033    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7034
7035 static int
7036 ada_in_variant (LONGEST val, struct type *type, int field_num)
7037 {
7038   const char *name = TYPE_FIELD_NAME (type, field_num);
7039   int p;
7040
7041   p = 0;
7042   while (1)
7043     {
7044       switch (name[p])
7045         {
7046         case '\0':
7047           return 0;
7048         case 'S':
7049           {
7050             LONGEST W;
7051
7052             if (!ada_scan_number (name, p + 1, &W, &p))
7053               return 0;
7054             if (val == W)
7055               return 1;
7056             break;
7057           }
7058         case 'R':
7059           {
7060             LONGEST L, U;
7061
7062             if (!ada_scan_number (name, p + 1, &L, &p)
7063                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7064               return 0;
7065             if (val >= L && val <= U)
7066               return 1;
7067             break;
7068           }
7069         case 'O':
7070           return 1;
7071         default:
7072           return 0;
7073         }
7074     }
7075 }
7076
7077 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7078
7079 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7080    ARG_TYPE, extract and return the value of one of its (non-static)
7081    fields.  FIELDNO says which field.   Differs from value_primitive_field
7082    only in that it can handle packed values of arbitrary type.  */
7083
7084 struct value *
7085 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7086                            struct type *arg_type)
7087 {
7088   struct type *type;
7089
7090   arg_type = ada_check_typedef (arg_type);
7091   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7092
7093   /* Handle packed fields.  It might be that the field is not packed
7094      relative to its containing structure, but the structure itself is
7095      packed; in this case we must take the bit-field path.  */
7096   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7097     {
7098       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7099       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7100
7101       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7102                                              offset + bit_pos / 8,
7103                                              bit_pos % 8, bit_size, type);
7104     }
7105   else
7106     return value_primitive_field (arg1, offset, fieldno, arg_type);
7107 }
7108
7109 /* Find field with name NAME in object of type TYPE.  If found, 
7110    set the following for each argument that is non-null:
7111     - *FIELD_TYPE_P to the field's type; 
7112     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7113       an object of that type;
7114     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7115     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7116       0 otherwise;
7117    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7118    fields up to but not including the desired field, or by the total
7119    number of fields if not found.   A NULL value of NAME never
7120    matches; the function just counts visible fields in this case.
7121    
7122    Notice that we need to handle when a tagged record hierarchy
7123    has some components with the same name, like in this scenario:
7124
7125       type Top_T is tagged record
7126          N : Integer := 1;
7127          U : Integer := 974;
7128          A : Integer := 48;
7129       end record;
7130
7131       type Middle_T is new Top.Top_T with record
7132          N : Character := 'a';
7133          C : Integer := 3;
7134       end record;
7135
7136      type Bottom_T is new Middle.Middle_T with record
7137         N : Float := 4.0;
7138         C : Character := '5';
7139         X : Integer := 6;
7140         A : Character := 'J';
7141      end record;
7142
7143    Let's say we now have a variable declared and initialized as follow:
7144
7145      TC : Top_A := new Bottom_T;
7146
7147    And then we use this variable to call this function
7148
7149      procedure Assign (Obj: in out Top_T; TV : Integer);
7150
7151    as follow:
7152
7153       Assign (Top_T (B), 12);
7154
7155    Now, we're in the debugger, and we're inside that procedure
7156    then and we want to print the value of obj.c:
7157
7158    Usually, the tagged record or one of the parent type owns the
7159    component to print and there's no issue but in this particular
7160    case, what does it mean to ask for Obj.C? Since the actual
7161    type for object is type Bottom_T, it could mean two things: type
7162    component C from the Middle_T view, but also component C from
7163    Bottom_T.  So in that "undefined" case, when the component is
7164    not found in the non-resolved type (which includes all the
7165    components of the parent type), then resolve it and see if we
7166    get better luck once expanded.
7167
7168    In the case of homonyms in the derived tagged type, we don't
7169    guaranty anything, and pick the one that's easiest for us
7170    to program.
7171
7172    Returns 1 if found, 0 otherwise.  */
7173
7174 static int
7175 find_struct_field (const char *name, struct type *type, int offset,
7176                    struct type **field_type_p,
7177                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7178                    int *index_p)
7179 {
7180   int i;
7181   int parent_offset = -1;
7182
7183   type = ada_check_typedef (type);
7184
7185   if (field_type_p != NULL)
7186     *field_type_p = NULL;
7187   if (byte_offset_p != NULL)
7188     *byte_offset_p = 0;
7189   if (bit_offset_p != NULL)
7190     *bit_offset_p = 0;
7191   if (bit_size_p != NULL)
7192     *bit_size_p = 0;
7193
7194   for (i = 0; i < type->num_fields (); i += 1)
7195     {
7196       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7197       int fld_offset = offset + bit_pos / 8;
7198       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7199
7200       if (t_field_name == NULL)
7201         continue;
7202
7203       else if (ada_is_parent_field (type, i))
7204         {
7205           /* This is a field pointing us to the parent type of a tagged
7206              type.  As hinted in this function's documentation, we give
7207              preference to fields in the current record first, so what
7208              we do here is just record the index of this field before
7209              we skip it.  If it turns out we couldn't find our field
7210              in the current record, then we'll get back to it and search
7211              inside it whether the field might exist in the parent.  */
7212
7213           parent_offset = i;
7214           continue;
7215         }
7216
7217       else if (name != NULL && field_name_match (t_field_name, name))
7218         {
7219           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7220
7221           if (field_type_p != NULL)
7222             *field_type_p = TYPE_FIELD_TYPE (type, i);
7223           if (byte_offset_p != NULL)
7224             *byte_offset_p = fld_offset;
7225           if (bit_offset_p != NULL)
7226             *bit_offset_p = bit_pos % 8;
7227           if (bit_size_p != NULL)
7228             *bit_size_p = bit_size;
7229           return 1;
7230         }
7231       else if (ada_is_wrapper_field (type, i))
7232         {
7233           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7234                                  field_type_p, byte_offset_p, bit_offset_p,
7235                                  bit_size_p, index_p))
7236             return 1;
7237         }
7238       else if (ada_is_variant_part (type, i))
7239         {
7240           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7241              fixed type?? */
7242           int j;
7243           struct type *field_type
7244             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7245
7246           for (j = 0; j < field_type->num_fields (); j += 1)
7247             {
7248               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7249                                      fld_offset
7250                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7251                                      field_type_p, byte_offset_p,
7252                                      bit_offset_p, bit_size_p, index_p))
7253                 return 1;
7254             }
7255         }
7256       else if (index_p != NULL)
7257         *index_p += 1;
7258     }
7259
7260   /* Field not found so far.  If this is a tagged type which
7261      has a parent, try finding that field in the parent now.  */
7262
7263   if (parent_offset != -1)
7264     {
7265       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7266       int fld_offset = offset + bit_pos / 8;
7267
7268       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7269                              fld_offset, field_type_p, byte_offset_p,
7270                              bit_offset_p, bit_size_p, index_p))
7271         return 1;
7272     }
7273
7274   return 0;
7275 }
7276
7277 /* Number of user-visible fields in record type TYPE.  */
7278
7279 static int
7280 num_visible_fields (struct type *type)
7281 {
7282   int n;
7283
7284   n = 0;
7285   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7286   return n;
7287 }
7288
7289 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7290    and search in it assuming it has (class) type TYPE.
7291    If found, return value, else return NULL.
7292
7293    Searches recursively through wrapper fields (e.g., '_parent').
7294
7295    In the case of homonyms in the tagged types, please refer to the
7296    long explanation in find_struct_field's function documentation.  */
7297
7298 static struct value *
7299 ada_search_struct_field (const char *name, struct value *arg, int offset,
7300                          struct type *type)
7301 {
7302   int i;
7303   int parent_offset = -1;
7304
7305   type = ada_check_typedef (type);
7306   for (i = 0; i < type->num_fields (); i += 1)
7307     {
7308       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7309
7310       if (t_field_name == NULL)
7311         continue;
7312
7313       else if (ada_is_parent_field (type, i))
7314         {
7315           /* This is a field pointing us to the parent type of a tagged
7316              type.  As hinted in this function's documentation, we give
7317              preference to fields in the current record first, so what
7318              we do here is just record the index of this field before
7319              we skip it.  If it turns out we couldn't find our field
7320              in the current record, then we'll get back to it and search
7321              inside it whether the field might exist in the parent.  */
7322
7323           parent_offset = i;
7324           continue;
7325         }
7326
7327       else if (field_name_match (t_field_name, name))
7328         return ada_value_primitive_field (arg, offset, i, type);
7329
7330       else if (ada_is_wrapper_field (type, i))
7331         {
7332           struct value *v =     /* Do not let indent join lines here.  */
7333             ada_search_struct_field (name, arg,
7334                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7335                                      TYPE_FIELD_TYPE (type, i));
7336
7337           if (v != NULL)
7338             return v;
7339         }
7340
7341       else if (ada_is_variant_part (type, i))
7342         {
7343           /* PNH: Do we ever get here?  See find_struct_field.  */
7344           int j;
7345           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7346                                                                         i));
7347           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7348
7349           for (j = 0; j < field_type->num_fields (); j += 1)
7350             {
7351               struct value *v = ada_search_struct_field /* Force line
7352                                                            break.  */
7353                 (name, arg,
7354                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7355                  TYPE_FIELD_TYPE (field_type, j));
7356
7357               if (v != NULL)
7358                 return v;
7359             }
7360         }
7361     }
7362
7363   /* Field not found so far.  If this is a tagged type which
7364      has a parent, try finding that field in the parent now.  */
7365
7366   if (parent_offset != -1)
7367     {
7368       struct value *v = ada_search_struct_field (
7369         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7370         TYPE_FIELD_TYPE (type, parent_offset));
7371
7372       if (v != NULL)
7373         return v;
7374     }
7375
7376   return NULL;
7377 }
7378
7379 static struct value *ada_index_struct_field_1 (int *, struct value *,
7380                                                int, struct type *);
7381
7382
7383 /* Return field #INDEX in ARG, where the index is that returned by
7384  * find_struct_field through its INDEX_P argument.  Adjust the address
7385  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7386  * If found, return value, else return NULL.  */
7387
7388 static struct value *
7389 ada_index_struct_field (int index, struct value *arg, int offset,
7390                         struct type *type)
7391 {
7392   return ada_index_struct_field_1 (&index, arg, offset, type);
7393 }
7394
7395
7396 /* Auxiliary function for ada_index_struct_field.  Like
7397  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7398  * *INDEX_P.  */
7399
7400 static struct value *
7401 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7402                           struct type *type)
7403 {
7404   int i;
7405   type = ada_check_typedef (type);
7406
7407   for (i = 0; i < type->num_fields (); i += 1)
7408     {
7409       if (TYPE_FIELD_NAME (type, i) == NULL)
7410         continue;
7411       else if (ada_is_wrapper_field (type, i))
7412         {
7413           struct value *v =     /* Do not let indent join lines here.  */
7414             ada_index_struct_field_1 (index_p, arg,
7415                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7416                                       TYPE_FIELD_TYPE (type, i));
7417
7418           if (v != NULL)
7419             return v;
7420         }
7421
7422       else if (ada_is_variant_part (type, i))
7423         {
7424           /* PNH: Do we ever get here?  See ada_search_struct_field,
7425              find_struct_field.  */
7426           error (_("Cannot assign this kind of variant record"));
7427         }
7428       else if (*index_p == 0)
7429         return ada_value_primitive_field (arg, offset, i, type);
7430       else
7431         *index_p -= 1;
7432     }
7433   return NULL;
7434 }
7435
7436 /* Return a string representation of type TYPE.  */
7437
7438 static std::string
7439 type_as_string (struct type *type)
7440 {
7441   string_file tmp_stream;
7442
7443   type_print (type, "", &tmp_stream, -1);
7444
7445   return std::move (tmp_stream.string ());
7446 }
7447
7448 /* Given a type TYPE, look up the type of the component of type named NAME.
7449    If DISPP is non-null, add its byte displacement from the beginning of a
7450    structure (pointed to by a value) of type TYPE to *DISPP (does not
7451    work for packed fields).
7452
7453    Matches any field whose name has NAME as a prefix, possibly
7454    followed by "___".
7455
7456    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7457    be a (pointer or reference)+ to a struct or union, and the
7458    ultimate target type will be searched.
7459
7460    Looks recursively into variant clauses and parent types.
7461
7462    In the case of homonyms in the tagged types, please refer to the
7463    long explanation in find_struct_field's function documentation.
7464
7465    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7466    TYPE is not a type of the right kind.  */
7467
7468 static struct type *
7469 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7470                             int noerr)
7471 {
7472   int i;
7473   int parent_offset = -1;
7474
7475   if (name == NULL)
7476     goto BadName;
7477
7478   if (refok && type != NULL)
7479     while (1)
7480       {
7481         type = ada_check_typedef (type);
7482         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7483           break;
7484         type = TYPE_TARGET_TYPE (type);
7485       }
7486
7487   if (type == NULL
7488       || (type->code () != TYPE_CODE_STRUCT
7489           && type->code () != TYPE_CODE_UNION))
7490     {
7491       if (noerr)
7492         return NULL;
7493
7494       error (_("Type %s is not a structure or union type"),
7495              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7496     }
7497
7498   type = to_static_fixed_type (type);
7499
7500   for (i = 0; i < type->num_fields (); i += 1)
7501     {
7502       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7503       struct type *t;
7504
7505       if (t_field_name == NULL)
7506         continue;
7507
7508       else if (ada_is_parent_field (type, i))
7509         {
7510           /* This is a field pointing us to the parent type of a tagged
7511              type.  As hinted in this function's documentation, we give
7512              preference to fields in the current record first, so what
7513              we do here is just record the index of this field before
7514              we skip it.  If it turns out we couldn't find our field
7515              in the current record, then we'll get back to it and search
7516              inside it whether the field might exist in the parent.  */
7517
7518           parent_offset = i;
7519           continue;
7520         }
7521
7522       else if (field_name_match (t_field_name, name))
7523         return TYPE_FIELD_TYPE (type, i);
7524
7525       else if (ada_is_wrapper_field (type, i))
7526         {
7527           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7528                                           0, 1);
7529           if (t != NULL)
7530             return t;
7531         }
7532
7533       else if (ada_is_variant_part (type, i))
7534         {
7535           int j;
7536           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7537                                                                         i));
7538
7539           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7540             {
7541               /* FIXME pnh 2008/01/26: We check for a field that is
7542                  NOT wrapped in a struct, since the compiler sometimes
7543                  generates these for unchecked variant types.  Revisit
7544                  if the compiler changes this practice.  */
7545               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7546
7547               if (v_field_name != NULL 
7548                   && field_name_match (v_field_name, name))
7549                 t = TYPE_FIELD_TYPE (field_type, j);
7550               else
7551                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7552                                                                  j),
7553                                                 name, 0, 1);
7554
7555               if (t != NULL)
7556                 return t;
7557             }
7558         }
7559
7560     }
7561
7562     /* Field not found so far.  If this is a tagged type which
7563        has a parent, try finding that field in the parent now.  */
7564
7565     if (parent_offset != -1)
7566       {
7567         struct type *t;
7568
7569         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7570                                         name, 0, 1);
7571         if (t != NULL)
7572           return t;
7573       }
7574
7575 BadName:
7576   if (!noerr)
7577     {
7578       const char *name_str = name != NULL ? name : _("<null>");
7579
7580       error (_("Type %s has no component named %s"),
7581              type_as_string (type).c_str (), name_str);
7582     }
7583
7584   return NULL;
7585 }
7586
7587 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7588    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7589    represents an unchecked union (that is, the variant part of a
7590    record that is named in an Unchecked_Union pragma).  */
7591
7592 static int
7593 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7594 {
7595   const char *discrim_name = ada_variant_discrim_name (var_type);
7596
7597   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7598 }
7599
7600
7601 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7602    within OUTER, determine which variant clause (field number in VAR_TYPE,
7603    numbering from 0) is applicable.  Returns -1 if none are.  */
7604
7605 int
7606 ada_which_variant_applies (struct type *var_type, struct value *outer)
7607 {
7608   int others_clause;
7609   int i;
7610   const char *discrim_name = ada_variant_discrim_name (var_type);
7611   struct value *discrim;
7612   LONGEST discrim_val;
7613
7614   /* Using plain value_from_contents_and_address here causes problems
7615      because we will end up trying to resolve a type that is currently
7616      being constructed.  */
7617   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7618   if (discrim == NULL)
7619     return -1;
7620   discrim_val = value_as_long (discrim);
7621
7622   others_clause = -1;
7623   for (i = 0; i < var_type->num_fields (); i += 1)
7624     {
7625       if (ada_is_others_clause (var_type, i))
7626         others_clause = i;
7627       else if (ada_in_variant (discrim_val, var_type, i))
7628         return i;
7629     }
7630
7631   return others_clause;
7632 }
7633 \f
7634
7635
7636                                 /* Dynamic-Sized Records */
7637
7638 /* Strategy: The type ostensibly attached to a value with dynamic size
7639    (i.e., a size that is not statically recorded in the debugging
7640    data) does not accurately reflect the size or layout of the value.
7641    Our strategy is to convert these values to values with accurate,
7642    conventional types that are constructed on the fly.  */
7643
7644 /* There is a subtle and tricky problem here.  In general, we cannot
7645    determine the size of dynamic records without its data.  However,
7646    the 'struct value' data structure, which GDB uses to represent
7647    quantities in the inferior process (the target), requires the size
7648    of the type at the time of its allocation in order to reserve space
7649    for GDB's internal copy of the data.  That's why the
7650    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7651    rather than struct value*s.
7652
7653    However, GDB's internal history variables ($1, $2, etc.) are
7654    struct value*s containing internal copies of the data that are not, in
7655    general, the same as the data at their corresponding addresses in
7656    the target.  Fortunately, the types we give to these values are all
7657    conventional, fixed-size types (as per the strategy described
7658    above), so that we don't usually have to perform the
7659    'to_fixed_xxx_type' conversions to look at their values.
7660    Unfortunately, there is one exception: if one of the internal
7661    history variables is an array whose elements are unconstrained
7662    records, then we will need to create distinct fixed types for each
7663    element selected.  */
7664
7665 /* The upshot of all of this is that many routines take a (type, host
7666    address, target address) triple as arguments to represent a value.
7667    The host address, if non-null, is supposed to contain an internal
7668    copy of the relevant data; otherwise, the program is to consult the
7669    target at the target address.  */
7670
7671 /* Assuming that VAL0 represents a pointer value, the result of
7672    dereferencing it.  Differs from value_ind in its treatment of
7673    dynamic-sized types.  */
7674
7675 struct value *
7676 ada_value_ind (struct value *val0)
7677 {
7678   struct value *val = value_ind (val0);
7679
7680   if (ada_is_tagged_type (value_type (val), 0))
7681     val = ada_tag_value_at_base_address (val);
7682
7683   return ada_to_fixed_value (val);
7684 }
7685
7686 /* The value resulting from dereferencing any "reference to"
7687    qualifiers on VAL0.  */
7688
7689 static struct value *
7690 ada_coerce_ref (struct value *val0)
7691 {
7692   if (value_type (val0)->code () == TYPE_CODE_REF)
7693     {
7694       struct value *val = val0;
7695
7696       val = coerce_ref (val);
7697
7698       if (ada_is_tagged_type (value_type (val), 0))
7699         val = ada_tag_value_at_base_address (val);
7700
7701       return ada_to_fixed_value (val);
7702     }
7703   else
7704     return val0;
7705 }
7706
7707 /* Return the bit alignment required for field #F of template type TYPE.  */
7708
7709 static unsigned int
7710 field_alignment (struct type *type, int f)
7711 {
7712   const char *name = TYPE_FIELD_NAME (type, f);
7713   int len;
7714   int align_offset;
7715
7716   /* The field name should never be null, unless the debugging information
7717      is somehow malformed.  In this case, we assume the field does not
7718      require any alignment.  */
7719   if (name == NULL)
7720     return 1;
7721
7722   len = strlen (name);
7723
7724   if (!isdigit (name[len - 1]))
7725     return 1;
7726
7727   if (isdigit (name[len - 2]))
7728     align_offset = len - 2;
7729   else
7730     align_offset = len - 1;
7731
7732   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7733     return TARGET_CHAR_BIT;
7734
7735   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7736 }
7737
7738 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7739
7740 static struct symbol *
7741 ada_find_any_type_symbol (const char *name)
7742 {
7743   struct symbol *sym;
7744
7745   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7746   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7747     return sym;
7748
7749   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7750   return sym;
7751 }
7752
7753 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7754    solely for types defined by debug info, it will not search the GDB
7755    primitive types.  */
7756
7757 static struct type *
7758 ada_find_any_type (const char *name)
7759 {
7760   struct symbol *sym = ada_find_any_type_symbol (name);
7761
7762   if (sym != NULL)
7763     return SYMBOL_TYPE (sym);
7764
7765   return NULL;
7766 }
7767
7768 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7769    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7770    symbol, in which case it is returned.  Otherwise, this looks for
7771    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7772    Return symbol if found, and NULL otherwise.  */
7773
7774 static bool
7775 ada_is_renaming_symbol (struct symbol *name_sym)
7776 {
7777   const char *name = name_sym->linkage_name ();
7778   return strstr (name, "___XR") != NULL;
7779 }
7780
7781 /* Because of GNAT encoding conventions, several GDB symbols may match a
7782    given type name.  If the type denoted by TYPE0 is to be preferred to
7783    that of TYPE1 for purposes of type printing, return non-zero;
7784    otherwise return 0.  */
7785
7786 int
7787 ada_prefer_type (struct type *type0, struct type *type1)
7788 {
7789   if (type1 == NULL)
7790     return 1;
7791   else if (type0 == NULL)
7792     return 0;
7793   else if (type1->code () == TYPE_CODE_VOID)
7794     return 1;
7795   else if (type0->code () == TYPE_CODE_VOID)
7796     return 0;
7797   else if (type1->name () == NULL && type0->name () != NULL)
7798     return 1;
7799   else if (ada_is_constrained_packed_array_type (type0))
7800     return 1;
7801   else if (ada_is_array_descriptor_type (type0)
7802            && !ada_is_array_descriptor_type (type1))
7803     return 1;
7804   else
7805     {
7806       const char *type0_name = type0->name ();
7807       const char *type1_name = type1->name ();
7808
7809       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7810           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7811         return 1;
7812     }
7813   return 0;
7814 }
7815
7816 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7817    null.  */
7818
7819 const char *
7820 ada_type_name (struct type *type)
7821 {
7822   if (type == NULL)
7823     return NULL;
7824   return type->name ();
7825 }
7826
7827 /* Search the list of "descriptive" types associated to TYPE for a type
7828    whose name is NAME.  */
7829
7830 static struct type *
7831 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7832 {
7833   struct type *result, *tmp;
7834
7835   if (ada_ignore_descriptive_types_p)
7836     return NULL;
7837
7838   /* If there no descriptive-type info, then there is no parallel type
7839      to be found.  */
7840   if (!HAVE_GNAT_AUX_INFO (type))
7841     return NULL;
7842
7843   result = TYPE_DESCRIPTIVE_TYPE (type);
7844   while (result != NULL)
7845     {
7846       const char *result_name = ada_type_name (result);
7847
7848       if (result_name == NULL)
7849         {
7850           warning (_("unexpected null name on descriptive type"));
7851           return NULL;
7852         }
7853
7854       /* If the names match, stop.  */
7855       if (strcmp (result_name, name) == 0)
7856         break;
7857
7858       /* Otherwise, look at the next item on the list, if any.  */
7859       if (HAVE_GNAT_AUX_INFO (result))
7860         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7861       else
7862         tmp = NULL;
7863
7864       /* If not found either, try after having resolved the typedef.  */
7865       if (tmp != NULL)
7866         result = tmp;
7867       else
7868         {
7869           result = check_typedef (result);
7870           if (HAVE_GNAT_AUX_INFO (result))
7871             result = TYPE_DESCRIPTIVE_TYPE (result);
7872           else
7873             result = NULL;
7874         }
7875     }
7876
7877   /* If we didn't find a match, see whether this is a packed array.  With
7878      older compilers, the descriptive type information is either absent or
7879      irrelevant when it comes to packed arrays so the above lookup fails.
7880      Fall back to using a parallel lookup by name in this case.  */
7881   if (result == NULL && ada_is_constrained_packed_array_type (type))
7882     return ada_find_any_type (name);
7883
7884   return result;
7885 }
7886
7887 /* Find a parallel type to TYPE with the specified NAME, using the
7888    descriptive type taken from the debugging information, if available,
7889    and otherwise using the (slower) name-based method.  */
7890
7891 static struct type *
7892 ada_find_parallel_type_with_name (struct type *type, const char *name)
7893 {
7894   struct type *result = NULL;
7895
7896   if (HAVE_GNAT_AUX_INFO (type))
7897     result = find_parallel_type_by_descriptive_type (type, name);
7898   else
7899     result = ada_find_any_type (name);
7900
7901   return result;
7902 }
7903
7904 /* Same as above, but specify the name of the parallel type by appending
7905    SUFFIX to the name of TYPE.  */
7906
7907 struct type *
7908 ada_find_parallel_type (struct type *type, const char *suffix)
7909 {
7910   char *name;
7911   const char *type_name = ada_type_name (type);
7912   int len;
7913
7914   if (type_name == NULL)
7915     return NULL;
7916
7917   len = strlen (type_name);
7918
7919   name = (char *) alloca (len + strlen (suffix) + 1);
7920
7921   strcpy (name, type_name);
7922   strcpy (name + len, suffix);
7923
7924   return ada_find_parallel_type_with_name (type, name);
7925 }
7926
7927 /* If TYPE is a variable-size record type, return the corresponding template
7928    type describing its fields.  Otherwise, return NULL.  */
7929
7930 static struct type *
7931 dynamic_template_type (struct type *type)
7932 {
7933   type = ada_check_typedef (type);
7934
7935   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7936       || ada_type_name (type) == NULL)
7937     return NULL;
7938   else
7939     {
7940       int len = strlen (ada_type_name (type));
7941
7942       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7943         return type;
7944       else
7945         return ada_find_parallel_type (type, "___XVE");
7946     }
7947 }
7948
7949 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7950    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7951
7952 static int
7953 is_dynamic_field (struct type *templ_type, int field_num)
7954 {
7955   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7956
7957   return name != NULL
7958     && TYPE_FIELD_TYPE (templ_type, field_num)->code () == TYPE_CODE_PTR
7959     && strstr (name, "___XVL") != NULL;
7960 }
7961
7962 /* The index of the variant field of TYPE, or -1 if TYPE does not
7963    represent a variant record type.  */
7964
7965 static int
7966 variant_field_index (struct type *type)
7967 {
7968   int f;
7969
7970   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7971     return -1;
7972
7973   for (f = 0; f < type->num_fields (); f += 1)
7974     {
7975       if (ada_is_variant_part (type, f))
7976         return f;
7977     }
7978   return -1;
7979 }
7980
7981 /* A record type with no fields.  */
7982
7983 static struct type *
7984 empty_record (struct type *templ)
7985 {
7986   struct type *type = alloc_type_copy (templ);
7987
7988   type->set_code (TYPE_CODE_STRUCT);
7989   INIT_NONE_SPECIFIC (type);
7990   type->set_name ("<empty>");
7991   TYPE_LENGTH (type) = 0;
7992   return type;
7993 }
7994
7995 /* An ordinary record type (with fixed-length fields) that describes
7996    the value of type TYPE at VALADDR or ADDRESS (see comments at
7997    the beginning of this section) VAL according to GNAT conventions.
7998    DVAL0 should describe the (portion of a) record that contains any
7999    necessary discriminants.  It should be NULL if value_type (VAL) is
8000    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8001    variant field (unless unchecked) is replaced by a particular branch
8002    of the variant.
8003
8004    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8005    length are not statically known are discarded.  As a consequence,
8006    VALADDR, ADDRESS and DVAL0 are ignored.
8007
8008    NOTE: Limitations: For now, we assume that dynamic fields and
8009    variants occupy whole numbers of bytes.  However, they need not be
8010    byte-aligned.  */
8011
8012 struct type *
8013 ada_template_to_fixed_record_type_1 (struct type *type,
8014                                      const gdb_byte *valaddr,
8015                                      CORE_ADDR address, struct value *dval0,
8016                                      int keep_dynamic_fields)
8017 {
8018   struct value *mark = value_mark ();
8019   struct value *dval;
8020   struct type *rtype;
8021   int nfields, bit_len;
8022   int variant_field;
8023   long off;
8024   int fld_bit_len;
8025   int f;
8026
8027   /* Compute the number of fields in this record type that are going
8028      to be processed: unless keep_dynamic_fields, this includes only
8029      fields whose position and length are static will be processed.  */
8030   if (keep_dynamic_fields)
8031     nfields = type->num_fields ();
8032   else
8033     {
8034       nfields = 0;
8035       while (nfields < type->num_fields ()
8036              && !ada_is_variant_part (type, nfields)
8037              && !is_dynamic_field (type, nfields))
8038         nfields++;
8039     }
8040
8041   rtype = alloc_type_copy (type);
8042   rtype->set_code (TYPE_CODE_STRUCT);
8043   INIT_NONE_SPECIFIC (rtype);
8044   rtype->set_num_fields (nfields);
8045   rtype->set_fields
8046    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
8047   rtype->set_name (ada_type_name (type));
8048   TYPE_FIXED_INSTANCE (rtype) = 1;
8049
8050   off = 0;
8051   bit_len = 0;
8052   variant_field = -1;
8053
8054   for (f = 0; f < nfields; f += 1)
8055     {
8056       off = align_up (off, field_alignment (type, f))
8057         + TYPE_FIELD_BITPOS (type, f);
8058       SET_FIELD_BITPOS (rtype->field (f), off);
8059       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8060
8061       if (ada_is_variant_part (type, f))
8062         {
8063           variant_field = f;
8064           fld_bit_len = 0;
8065         }
8066       else if (is_dynamic_field (type, f))
8067         {
8068           const gdb_byte *field_valaddr = valaddr;
8069           CORE_ADDR field_address = address;
8070           struct type *field_type =
8071             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8072
8073           if (dval0 == NULL)
8074             {
8075               /* rtype's length is computed based on the run-time
8076                  value of discriminants.  If the discriminants are not
8077                  initialized, the type size may be completely bogus and
8078                  GDB may fail to allocate a value for it.  So check the
8079                  size first before creating the value.  */
8080               ada_ensure_varsize_limit (rtype);
8081               /* Using plain value_from_contents_and_address here
8082                  causes problems because we will end up trying to
8083                  resolve a type that is currently being
8084                  constructed.  */
8085               dval = value_from_contents_and_address_unresolved (rtype,
8086                                                                  valaddr,
8087                                                                  address);
8088               rtype = value_type (dval);
8089             }
8090           else
8091             dval = dval0;
8092
8093           /* If the type referenced by this field is an aligner type, we need
8094              to unwrap that aligner type, because its size might not be set.
8095              Keeping the aligner type would cause us to compute the wrong
8096              size for this field, impacting the offset of the all the fields
8097              that follow this one.  */
8098           if (ada_is_aligner_type (field_type))
8099             {
8100               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8101
8102               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8103               field_address = cond_offset_target (field_address, field_offset);
8104               field_type = ada_aligned_type (field_type);
8105             }
8106
8107           field_valaddr = cond_offset_host (field_valaddr,
8108                                             off / TARGET_CHAR_BIT);
8109           field_address = cond_offset_target (field_address,
8110                                               off / TARGET_CHAR_BIT);
8111
8112           /* Get the fixed type of the field.  Note that, in this case,
8113              we do not want to get the real type out of the tag: if
8114              the current field is the parent part of a tagged record,
8115              we will get the tag of the object.  Clearly wrong: the real
8116              type of the parent is not the real type of the child.  We
8117              would end up in an infinite loop.  */
8118           field_type = ada_get_base_type (field_type);
8119           field_type = ada_to_fixed_type (field_type, field_valaddr,
8120                                           field_address, dval, 0);
8121           /* If the field size is already larger than the maximum
8122              object size, then the record itself will necessarily
8123              be larger than the maximum object size.  We need to make
8124              this check now, because the size might be so ridiculously
8125              large (due to an uninitialized variable in the inferior)
8126              that it would cause an overflow when adding it to the
8127              record size.  */
8128           ada_ensure_varsize_limit (field_type);
8129
8130           TYPE_FIELD_TYPE (rtype, f) = field_type;
8131           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8132           /* The multiplication can potentially overflow.  But because
8133              the field length has been size-checked just above, and
8134              assuming that the maximum size is a reasonable value,
8135              an overflow should not happen in practice.  So rather than
8136              adding overflow recovery code to this already complex code,
8137              we just assume that it's not going to happen.  */
8138           fld_bit_len =
8139             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8140         }
8141       else
8142         {
8143           /* Note: If this field's type is a typedef, it is important
8144              to preserve the typedef layer.
8145
8146              Otherwise, we might be transforming a typedef to a fat
8147              pointer (encoding a pointer to an unconstrained array),
8148              into a basic fat pointer (encoding an unconstrained
8149              array).  As both types are implemented using the same
8150              structure, the typedef is the only clue which allows us
8151              to distinguish between the two options.  Stripping it
8152              would prevent us from printing this field appropriately.  */
8153           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8154           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8155           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8156             fld_bit_len =
8157               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8158           else
8159             {
8160               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8161
8162               /* We need to be careful of typedefs when computing
8163                  the length of our field.  If this is a typedef,
8164                  get the length of the target type, not the length
8165                  of the typedef.  */
8166               if (field_type->code () == TYPE_CODE_TYPEDEF)
8167                 field_type = ada_typedef_target_type (field_type);
8168
8169               fld_bit_len =
8170                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8171             }
8172         }
8173       if (off + fld_bit_len > bit_len)
8174         bit_len = off + fld_bit_len;
8175       off += fld_bit_len;
8176       TYPE_LENGTH (rtype) =
8177         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8178     }
8179
8180   /* We handle the variant part, if any, at the end because of certain
8181      odd cases in which it is re-ordered so as NOT to be the last field of
8182      the record.  This can happen in the presence of representation
8183      clauses.  */
8184   if (variant_field >= 0)
8185     {
8186       struct type *branch_type;
8187
8188       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8189
8190       if (dval0 == NULL)
8191         {
8192           /* Using plain value_from_contents_and_address here causes
8193              problems because we will end up trying to resolve a type
8194              that is currently being constructed.  */
8195           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8196                                                              address);
8197           rtype = value_type (dval);
8198         }
8199       else
8200         dval = dval0;
8201
8202       branch_type =
8203         to_fixed_variant_branch_type
8204         (TYPE_FIELD_TYPE (type, variant_field),
8205          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8206          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8207       if (branch_type == NULL)
8208         {
8209           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
8210             rtype->field (f - 1) = rtype->field (f);
8211           rtype->set_num_fields (rtype->num_fields () - 1);
8212         }
8213       else
8214         {
8215           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8216           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8217           fld_bit_len =
8218             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8219             TARGET_CHAR_BIT;
8220           if (off + fld_bit_len > bit_len)
8221             bit_len = off + fld_bit_len;
8222           TYPE_LENGTH (rtype) =
8223             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8224         }
8225     }
8226
8227   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8228      should contain the alignment of that record, which should be a strictly
8229      positive value.  If null or negative, then something is wrong, most
8230      probably in the debug info.  In that case, we don't round up the size
8231      of the resulting type.  If this record is not part of another structure,
8232      the current RTYPE length might be good enough for our purposes.  */
8233   if (TYPE_LENGTH (type) <= 0)
8234     {
8235       if (rtype->name ())
8236         warning (_("Invalid type size for `%s' detected: %s."),
8237                  rtype->name (), pulongest (TYPE_LENGTH (type)));
8238       else
8239         warning (_("Invalid type size for <unnamed> detected: %s."),
8240                  pulongest (TYPE_LENGTH (type)));
8241     }
8242   else
8243     {
8244       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8245                                       TYPE_LENGTH (type));
8246     }
8247
8248   value_free_to_mark (mark);
8249   if (TYPE_LENGTH (rtype) > varsize_limit)
8250     error (_("record type with dynamic size is larger than varsize-limit"));
8251   return rtype;
8252 }
8253
8254 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8255    of 1.  */
8256
8257 static struct type *
8258 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8259                                CORE_ADDR address, struct value *dval0)
8260 {
8261   return ada_template_to_fixed_record_type_1 (type, valaddr,
8262                                               address, dval0, 1);
8263 }
8264
8265 /* An ordinary record type in which ___XVL-convention fields and
8266    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8267    static approximations, containing all possible fields.  Uses
8268    no runtime values.  Useless for use in values, but that's OK,
8269    since the results are used only for type determinations.   Works on both
8270    structs and unions.  Representation note: to save space, we memorize
8271    the result of this function in the TYPE_TARGET_TYPE of the
8272    template type.  */
8273
8274 static struct type *
8275 template_to_static_fixed_type (struct type *type0)
8276 {
8277   struct type *type;
8278   int nfields;
8279   int f;
8280
8281   /* No need no do anything if the input type is already fixed.  */
8282   if (TYPE_FIXED_INSTANCE (type0))
8283     return type0;
8284
8285   /* Likewise if we already have computed the static approximation.  */
8286   if (TYPE_TARGET_TYPE (type0) != NULL)
8287     return TYPE_TARGET_TYPE (type0);
8288
8289   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8290   type = type0;
8291   nfields = type0->num_fields ();
8292
8293   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8294      recompute all over next time.  */
8295   TYPE_TARGET_TYPE (type0) = type;
8296
8297   for (f = 0; f < nfields; f += 1)
8298     {
8299       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8300       struct type *new_type;
8301
8302       if (is_dynamic_field (type0, f))
8303         {
8304           field_type = ada_check_typedef (field_type);
8305           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8306         }
8307       else
8308         new_type = static_unwrap_type (field_type);
8309
8310       if (new_type != field_type)
8311         {
8312           /* Clone TYPE0 only the first time we get a new field type.  */
8313           if (type == type0)
8314             {
8315               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8316               type->set_code (type0->code ());
8317               INIT_NONE_SPECIFIC (type);
8318               type->set_num_fields (nfields);
8319
8320               field *fields =
8321                 ((struct field *)
8322                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
8323               memcpy (fields, type0->fields (),
8324                       sizeof (struct field) * nfields);
8325               type->set_fields (fields);
8326
8327               type->set_name (ada_type_name (type0));
8328               TYPE_FIXED_INSTANCE (type) = 1;
8329               TYPE_LENGTH (type) = 0;
8330             }
8331           TYPE_FIELD_TYPE (type, f) = new_type;
8332           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8333         }
8334     }
8335
8336   return type;
8337 }
8338
8339 /* Given an object of type TYPE whose contents are at VALADDR and
8340    whose address in memory is ADDRESS, returns a revision of TYPE,
8341    which should be a non-dynamic-sized record, in which the variant
8342    part, if any, is replaced with the appropriate branch.  Looks
8343    for discriminant values in DVAL0, which can be NULL if the record
8344    contains the necessary discriminant values.  */
8345
8346 static struct type *
8347 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8348                                    CORE_ADDR address, struct value *dval0)
8349 {
8350   struct value *mark = value_mark ();
8351   struct value *dval;
8352   struct type *rtype;
8353   struct type *branch_type;
8354   int nfields = type->num_fields ();
8355   int variant_field = variant_field_index (type);
8356
8357   if (variant_field == -1)
8358     return type;
8359
8360   if (dval0 == NULL)
8361     {
8362       dval = value_from_contents_and_address (type, valaddr, address);
8363       type = value_type (dval);
8364     }
8365   else
8366     dval = dval0;
8367
8368   rtype = alloc_type_copy (type);
8369   rtype->set_code (TYPE_CODE_STRUCT);
8370   INIT_NONE_SPECIFIC (rtype);
8371   rtype->set_num_fields (nfields);
8372
8373   field *fields =
8374     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8375   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8376   rtype->set_fields (fields);
8377
8378   rtype->set_name (ada_type_name (type));
8379   TYPE_FIXED_INSTANCE (rtype) = 1;
8380   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8381
8382   branch_type = to_fixed_variant_branch_type
8383     (TYPE_FIELD_TYPE (type, variant_field),
8384      cond_offset_host (valaddr,
8385                        TYPE_FIELD_BITPOS (type, variant_field)
8386                        / TARGET_CHAR_BIT),
8387      cond_offset_target (address,
8388                          TYPE_FIELD_BITPOS (type, variant_field)
8389                          / TARGET_CHAR_BIT), dval);
8390   if (branch_type == NULL)
8391     {
8392       int f;
8393
8394       for (f = variant_field + 1; f < nfields; f += 1)
8395         rtype->field (f - 1) = rtype->field (f);
8396       rtype->set_num_fields (rtype->num_fields () - 1);
8397     }
8398   else
8399     {
8400       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8401       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8402       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8403       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8404     }
8405   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8406
8407   value_free_to_mark (mark);
8408   return rtype;
8409 }
8410
8411 /* An ordinary record type (with fixed-length fields) that describes
8412    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8413    beginning of this section].   Any necessary discriminants' values
8414    should be in DVAL, a record value; it may be NULL if the object
8415    at ADDR itself contains any necessary discriminant values.
8416    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8417    values from the record are needed.  Except in the case that DVAL,
8418    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8419    unchecked) is replaced by a particular branch of the variant.
8420
8421    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8422    is questionable and may be removed.  It can arise during the
8423    processing of an unconstrained-array-of-record type where all the
8424    variant branches have exactly the same size.  This is because in
8425    such cases, the compiler does not bother to use the XVS convention
8426    when encoding the record.  I am currently dubious of this
8427    shortcut and suspect the compiler should be altered.  FIXME.  */
8428
8429 static struct type *
8430 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8431                       CORE_ADDR address, struct value *dval)
8432 {
8433   struct type *templ_type;
8434
8435   if (TYPE_FIXED_INSTANCE (type0))
8436     return type0;
8437
8438   templ_type = dynamic_template_type (type0);
8439
8440   if (templ_type != NULL)
8441     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8442   else if (variant_field_index (type0) >= 0)
8443     {
8444       if (dval == NULL && valaddr == NULL && address == 0)
8445         return type0;
8446       return to_record_with_fixed_variant_part (type0, valaddr, address,
8447                                                 dval);
8448     }
8449   else
8450     {
8451       TYPE_FIXED_INSTANCE (type0) = 1;
8452       return type0;
8453     }
8454
8455 }
8456
8457 /* An ordinary record type (with fixed-length fields) that describes
8458    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8459    union type.  Any necessary discriminants' values should be in DVAL,
8460    a record value.  That is, this routine selects the appropriate
8461    branch of the union at ADDR according to the discriminant value
8462    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8463    it represents a variant subject to a pragma Unchecked_Union.  */
8464
8465 static struct type *
8466 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8467                               CORE_ADDR address, struct value *dval)
8468 {
8469   int which;
8470   struct type *templ_type;
8471   struct type *var_type;
8472
8473   if (var_type0->code () == TYPE_CODE_PTR)
8474     var_type = TYPE_TARGET_TYPE (var_type0);
8475   else
8476     var_type = var_type0;
8477
8478   templ_type = ada_find_parallel_type (var_type, "___XVU");
8479
8480   if (templ_type != NULL)
8481     var_type = templ_type;
8482
8483   if (is_unchecked_variant (var_type, value_type (dval)))
8484       return var_type0;
8485   which = ada_which_variant_applies (var_type, dval);
8486
8487   if (which < 0)
8488     return empty_record (var_type);
8489   else if (is_dynamic_field (var_type, which))
8490     return to_fixed_record_type
8491       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8492        valaddr, address, dval);
8493   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8494     return
8495       to_fixed_record_type
8496       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8497   else
8498     return TYPE_FIELD_TYPE (var_type, which);
8499 }
8500
8501 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8502    ENCODING_TYPE, a type following the GNAT conventions for discrete
8503    type encodings, only carries redundant information.  */
8504
8505 static int
8506 ada_is_redundant_range_encoding (struct type *range_type,
8507                                  struct type *encoding_type)
8508 {
8509   const char *bounds_str;
8510   int n;
8511   LONGEST lo, hi;
8512
8513   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8514
8515   if (get_base_type (range_type)->code ()
8516       != get_base_type (encoding_type)->code ())
8517     {
8518       /* The compiler probably used a simple base type to describe
8519          the range type instead of the range's actual base type,
8520          expecting us to get the real base type from the encoding
8521          anyway.  In this situation, the encoding cannot be ignored
8522          as redundant.  */
8523       return 0;
8524     }
8525
8526   if (is_dynamic_type (range_type))
8527     return 0;
8528
8529   if (encoding_type->name () == NULL)
8530     return 0;
8531
8532   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8533   if (bounds_str == NULL)
8534     return 0;
8535
8536   n = 8; /* Skip "___XDLU_".  */
8537   if (!ada_scan_number (bounds_str, n, &lo, &n))
8538     return 0;
8539   if (TYPE_LOW_BOUND (range_type) != lo)
8540     return 0;
8541
8542   n += 2; /* Skip the "__" separator between the two bounds.  */
8543   if (!ada_scan_number (bounds_str, n, &hi, &n))
8544     return 0;
8545   if (TYPE_HIGH_BOUND (range_type) != hi)
8546     return 0;
8547
8548   return 1;
8549 }
8550
8551 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8552    a type following the GNAT encoding for describing array type
8553    indices, only carries redundant information.  */
8554
8555 static int
8556 ada_is_redundant_index_type_desc (struct type *array_type,
8557                                   struct type *desc_type)
8558 {
8559   struct type *this_layer = check_typedef (array_type);
8560   int i;
8561
8562   for (i = 0; i < desc_type->num_fields (); i++)
8563     {
8564       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8565                                             TYPE_FIELD_TYPE (desc_type, i)))
8566         return 0;
8567       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8568     }
8569
8570   return 1;
8571 }
8572
8573 /* Assuming that TYPE0 is an array type describing the type of a value
8574    at ADDR, and that DVAL describes a record containing any
8575    discriminants used in TYPE0, returns a type for the value that
8576    contains no dynamic components (that is, no components whose sizes
8577    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8578    true, gives an error message if the resulting type's size is over
8579    varsize_limit.  */
8580
8581 static struct type *
8582 to_fixed_array_type (struct type *type0, struct value *dval,
8583                      int ignore_too_big)
8584 {
8585   struct type *index_type_desc;
8586   struct type *result;
8587   int constrained_packed_array_p;
8588   static const char *xa_suffix = "___XA";
8589
8590   type0 = ada_check_typedef (type0);
8591   if (TYPE_FIXED_INSTANCE (type0))
8592     return type0;
8593
8594   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8595   if (constrained_packed_array_p)
8596     type0 = decode_constrained_packed_array_type (type0);
8597
8598   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8599
8600   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8601      encoding suffixed with 'P' may still be generated.  If so,
8602      it should be used to find the XA type.  */
8603
8604   if (index_type_desc == NULL)
8605     {
8606       const char *type_name = ada_type_name (type0);
8607
8608       if (type_name != NULL)
8609         {
8610           const int len = strlen (type_name);
8611           char *name = (char *) alloca (len + strlen (xa_suffix));
8612
8613           if (type_name[len - 1] == 'P')
8614             {
8615               strcpy (name, type_name);
8616               strcpy (name + len - 1, xa_suffix);
8617               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8618             }
8619         }
8620     }
8621
8622   ada_fixup_array_indexes_type (index_type_desc);
8623   if (index_type_desc != NULL
8624       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8625     {
8626       /* Ignore this ___XA parallel type, as it does not bring any
8627          useful information.  This allows us to avoid creating fixed
8628          versions of the array's index types, which would be identical
8629          to the original ones.  This, in turn, can also help avoid
8630          the creation of fixed versions of the array itself.  */
8631       index_type_desc = NULL;
8632     }
8633
8634   if (index_type_desc == NULL)
8635     {
8636       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8637
8638       /* NOTE: elt_type---the fixed version of elt_type0---should never
8639          depend on the contents of the array in properly constructed
8640          debugging data.  */
8641       /* Create a fixed version of the array element type.
8642          We're not providing the address of an element here,
8643          and thus the actual object value cannot be inspected to do
8644          the conversion.  This should not be a problem, since arrays of
8645          unconstrained objects are not allowed.  In particular, all
8646          the elements of an array of a tagged type should all be of
8647          the same type specified in the debugging info.  No need to
8648          consult the object tag.  */
8649       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8650
8651       /* Make sure we always create a new array type when dealing with
8652          packed array types, since we're going to fix-up the array
8653          type length and element bitsize a little further down.  */
8654       if (elt_type0 == elt_type && !constrained_packed_array_p)
8655         result = type0;
8656       else
8657         result = create_array_type (alloc_type_copy (type0),
8658                                     elt_type, TYPE_INDEX_TYPE (type0));
8659     }
8660   else
8661     {
8662       int i;
8663       struct type *elt_type0;
8664
8665       elt_type0 = type0;
8666       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8667         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8668
8669       /* NOTE: result---the fixed version of elt_type0---should never
8670          depend on the contents of the array in properly constructed
8671          debugging data.  */
8672       /* Create a fixed version of the array element type.
8673          We're not providing the address of an element here,
8674          and thus the actual object value cannot be inspected to do
8675          the conversion.  This should not be a problem, since arrays of
8676          unconstrained objects are not allowed.  In particular, all
8677          the elements of an array of a tagged type should all be of
8678          the same type specified in the debugging info.  No need to
8679          consult the object tag.  */
8680       result =
8681         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8682
8683       elt_type0 = type0;
8684       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8685         {
8686           struct type *range_type =
8687             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8688
8689           result = create_array_type (alloc_type_copy (elt_type0),
8690                                       result, range_type);
8691           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8692         }
8693       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8694         error (_("array type with dynamic size is larger than varsize-limit"));
8695     }
8696
8697   /* We want to preserve the type name.  This can be useful when
8698      trying to get the type name of a value that has already been
8699      printed (for instance, if the user did "print VAR; whatis $".  */
8700   result->set_name (type0->name ());
8701
8702   if (constrained_packed_array_p)
8703     {
8704       /* So far, the resulting type has been created as if the original
8705          type was a regular (non-packed) array type.  As a result, the
8706          bitsize of the array elements needs to be set again, and the array
8707          length needs to be recomputed based on that bitsize.  */
8708       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8709       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8710
8711       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8712       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8713       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8714         TYPE_LENGTH (result)++;
8715     }
8716
8717   TYPE_FIXED_INSTANCE (result) = 1;
8718   return result;
8719 }
8720
8721
8722 /* A standard type (containing no dynamically sized components)
8723    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8724    DVAL describes a record containing any discriminants used in TYPE0,
8725    and may be NULL if there are none, or if the object of type TYPE at
8726    ADDRESS or in VALADDR contains these discriminants.
8727    
8728    If CHECK_TAG is not null, in the case of tagged types, this function
8729    attempts to locate the object's tag and use it to compute the actual
8730    type.  However, when ADDRESS is null, we cannot use it to determine the
8731    location of the tag, and therefore compute the tagged type's actual type.
8732    So we return the tagged type without consulting the tag.  */
8733    
8734 static struct type *
8735 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8736                    CORE_ADDR address, struct value *dval, int check_tag)
8737 {
8738   type = ada_check_typedef (type);
8739
8740   /* Only un-fixed types need to be handled here.  */
8741   if (!HAVE_GNAT_AUX_INFO (type))
8742     return type;
8743
8744   switch (type->code ())
8745     {
8746     default:
8747       return type;
8748     case TYPE_CODE_STRUCT:
8749       {
8750         struct type *static_type = to_static_fixed_type (type);
8751         struct type *fixed_record_type =
8752           to_fixed_record_type (type, valaddr, address, NULL);
8753
8754         /* If STATIC_TYPE is a tagged type and we know the object's address,
8755            then we can determine its tag, and compute the object's actual
8756            type from there.  Note that we have to use the fixed record
8757            type (the parent part of the record may have dynamic fields
8758            and the way the location of _tag is expressed may depend on
8759            them).  */
8760
8761         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8762           {
8763             struct value *tag =
8764               value_tag_from_contents_and_address
8765               (fixed_record_type,
8766                valaddr,
8767                address);
8768             struct type *real_type = type_from_tag (tag);
8769             struct value *obj =
8770               value_from_contents_and_address (fixed_record_type,
8771                                                valaddr,
8772                                                address);
8773             fixed_record_type = value_type (obj);
8774             if (real_type != NULL)
8775               return to_fixed_record_type
8776                 (real_type, NULL,
8777                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8778           }
8779
8780         /* Check to see if there is a parallel ___XVZ variable.
8781            If there is, then it provides the actual size of our type.  */
8782         else if (ada_type_name (fixed_record_type) != NULL)
8783           {
8784             const char *name = ada_type_name (fixed_record_type);
8785             char *xvz_name
8786               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8787             bool xvz_found = false;
8788             LONGEST size;
8789
8790             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8791             try
8792               {
8793                 xvz_found = get_int_var_value (xvz_name, size);
8794               }
8795             catch (const gdb_exception_error &except)
8796               {
8797                 /* We found the variable, but somehow failed to read
8798                    its value.  Rethrow the same error, but with a little
8799                    bit more information, to help the user understand
8800                    what went wrong (Eg: the variable might have been
8801                    optimized out).  */
8802                 throw_error (except.error,
8803                              _("unable to read value of %s (%s)"),
8804                              xvz_name, except.what ());
8805               }
8806
8807             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8808               {
8809                 fixed_record_type = copy_type (fixed_record_type);
8810                 TYPE_LENGTH (fixed_record_type) = size;
8811
8812                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8813                    observed this when the debugging info is STABS, and
8814                    apparently it is something that is hard to fix.
8815
8816                    In practice, we don't need the actual type definition
8817                    at all, because the presence of the XVZ variable allows us
8818                    to assume that there must be a XVS type as well, which we
8819                    should be able to use later, when we need the actual type
8820                    definition.
8821
8822                    In the meantime, pretend that the "fixed" type we are
8823                    returning is NOT a stub, because this can cause trouble
8824                    when using this type to create new types targeting it.
8825                    Indeed, the associated creation routines often check
8826                    whether the target type is a stub and will try to replace
8827                    it, thus using a type with the wrong size.  This, in turn,
8828                    might cause the new type to have the wrong size too.
8829                    Consider the case of an array, for instance, where the size
8830                    of the array is computed from the number of elements in
8831                    our array multiplied by the size of its element.  */
8832                 TYPE_STUB (fixed_record_type) = 0;
8833               }
8834           }
8835         return fixed_record_type;
8836       }
8837     case TYPE_CODE_ARRAY:
8838       return to_fixed_array_type (type, dval, 1);
8839     case TYPE_CODE_UNION:
8840       if (dval == NULL)
8841         return type;
8842       else
8843         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8844     }
8845 }
8846
8847 /* The same as ada_to_fixed_type_1, except that it preserves the type
8848    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8849
8850    The typedef layer needs be preserved in order to differentiate between
8851    arrays and array pointers when both types are implemented using the same
8852    fat pointer.  In the array pointer case, the pointer is encoded as
8853    a typedef of the pointer type.  For instance, considering:
8854
8855           type String_Access is access String;
8856           S1 : String_Access := null;
8857
8858    To the debugger, S1 is defined as a typedef of type String.  But
8859    to the user, it is a pointer.  So if the user tries to print S1,
8860    we should not dereference the array, but print the array address
8861    instead.
8862
8863    If we didn't preserve the typedef layer, we would lose the fact that
8864    the type is to be presented as a pointer (needs de-reference before
8865    being printed).  And we would also use the source-level type name.  */
8866
8867 struct type *
8868 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8869                    CORE_ADDR address, struct value *dval, int check_tag)
8870
8871 {
8872   struct type *fixed_type =
8873     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8874
8875   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8876       then preserve the typedef layer.
8877
8878       Implementation note: We can only check the main-type portion of
8879       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8880       from TYPE now returns a type that has the same instance flags
8881       as TYPE.  For instance, if TYPE is a "typedef const", and its
8882       target type is a "struct", then the typedef elimination will return
8883       a "const" version of the target type.  See check_typedef for more
8884       details about how the typedef layer elimination is done.
8885
8886       brobecker/2010-11-19: It seems to me that the only case where it is
8887       useful to preserve the typedef layer is when dealing with fat pointers.
8888       Perhaps, we could add a check for that and preserve the typedef layer
8889       only in that situation.  But this seems unnecessary so far, probably
8890       because we call check_typedef/ada_check_typedef pretty much everywhere.
8891       */
8892   if (type->code () == TYPE_CODE_TYPEDEF
8893       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8894           == TYPE_MAIN_TYPE (fixed_type)))
8895     return type;
8896
8897   return fixed_type;
8898 }
8899
8900 /* A standard (static-sized) type corresponding as well as possible to
8901    TYPE0, but based on no runtime data.  */
8902
8903 static struct type *
8904 to_static_fixed_type (struct type *type0)
8905 {
8906   struct type *type;
8907
8908   if (type0 == NULL)
8909     return NULL;
8910
8911   if (TYPE_FIXED_INSTANCE (type0))
8912     return type0;
8913
8914   type0 = ada_check_typedef (type0);
8915
8916   switch (type0->code ())
8917     {
8918     default:
8919       return type0;
8920     case TYPE_CODE_STRUCT:
8921       type = dynamic_template_type (type0);
8922       if (type != NULL)
8923         return template_to_static_fixed_type (type);
8924       else
8925         return template_to_static_fixed_type (type0);
8926     case TYPE_CODE_UNION:
8927       type = ada_find_parallel_type (type0, "___XVU");
8928       if (type != NULL)
8929         return template_to_static_fixed_type (type);
8930       else
8931         return template_to_static_fixed_type (type0);
8932     }
8933 }
8934
8935 /* A static approximation of TYPE with all type wrappers removed.  */
8936
8937 static struct type *
8938 static_unwrap_type (struct type *type)
8939 {
8940   if (ada_is_aligner_type (type))
8941     {
8942       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8943       if (ada_type_name (type1) == NULL)
8944         type1->set_name (ada_type_name (type));
8945
8946       return static_unwrap_type (type1);
8947     }
8948   else
8949     {
8950       struct type *raw_real_type = ada_get_base_type (type);
8951
8952       if (raw_real_type == type)
8953         return type;
8954       else
8955         return to_static_fixed_type (raw_real_type);
8956     }
8957 }
8958
8959 /* In some cases, incomplete and private types require
8960    cross-references that are not resolved as records (for example,
8961       type Foo;
8962       type FooP is access Foo;
8963       V: FooP;
8964       type Foo is array ...;
8965    ).  In these cases, since there is no mechanism for producing
8966    cross-references to such types, we instead substitute for FooP a
8967    stub enumeration type that is nowhere resolved, and whose tag is
8968    the name of the actual type.  Call these types "non-record stubs".  */
8969
8970 /* A type equivalent to TYPE that is not a non-record stub, if one
8971    exists, otherwise TYPE.  */
8972
8973 struct type *
8974 ada_check_typedef (struct type *type)
8975 {
8976   if (type == NULL)
8977     return NULL;
8978
8979   /* If our type is an access to an unconstrained array, which is encoded
8980      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8981      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8982      what allows us to distinguish between fat pointers that represent
8983      array types, and fat pointers that represent array access types
8984      (in both cases, the compiler implements them as fat pointers).  */
8985   if (ada_is_access_to_unconstrained_array (type))
8986     return type;
8987
8988   type = check_typedef (type);
8989   if (type == NULL || type->code () != TYPE_CODE_ENUM
8990       || !TYPE_STUB (type)
8991       || type->name () == NULL)
8992     return type;
8993   else
8994     {
8995       const char *name = type->name ();
8996       struct type *type1 = ada_find_any_type (name);
8997
8998       if (type1 == NULL)
8999         return type;
9000
9001       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9002          stubs pointing to arrays, as we don't create symbols for array
9003          types, only for the typedef-to-array types).  If that's the case,
9004          strip the typedef layer.  */
9005       if (type1->code () == TYPE_CODE_TYPEDEF)
9006         type1 = ada_check_typedef (type1);
9007
9008       return type1;
9009     }
9010 }
9011
9012 /* A value representing the data at VALADDR/ADDRESS as described by
9013    type TYPE0, but with a standard (static-sized) type that correctly
9014    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9015    type, then return VAL0 [this feature is simply to avoid redundant
9016    creation of struct values].  */
9017
9018 static struct value *
9019 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9020                            struct value *val0)
9021 {
9022   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9023
9024   if (type == type0 && val0 != NULL)
9025     return val0;
9026
9027   if (VALUE_LVAL (val0) != lval_memory)
9028     {
9029       /* Our value does not live in memory; it could be a convenience
9030          variable, for instance.  Create a not_lval value using val0's
9031          contents.  */
9032       return value_from_contents (type, value_contents (val0));
9033     }
9034
9035   return value_from_contents_and_address (type, 0, address);
9036 }
9037
9038 /* A value representing VAL, but with a standard (static-sized) type
9039    that correctly describes it.  Does not necessarily create a new
9040    value.  */
9041
9042 struct value *
9043 ada_to_fixed_value (struct value *val)
9044 {
9045   val = unwrap_value (val);
9046   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9047   return val;
9048 }
9049 \f
9050
9051 /* Attributes */
9052
9053 /* Table mapping attribute numbers to names.
9054    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9055
9056 static const char *attribute_names[] = {
9057   "<?>",
9058
9059   "first",
9060   "last",
9061   "length",
9062   "image",
9063   "max",
9064   "min",
9065   "modulus",
9066   "pos",
9067   "size",
9068   "tag",
9069   "val",
9070   0
9071 };
9072
9073 static const char *
9074 ada_attribute_name (enum exp_opcode n)
9075 {
9076   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9077     return attribute_names[n - OP_ATR_FIRST + 1];
9078   else
9079     return attribute_names[0];
9080 }
9081
9082 /* Evaluate the 'POS attribute applied to ARG.  */
9083
9084 static LONGEST
9085 pos_atr (struct value *arg)
9086 {
9087   struct value *val = coerce_ref (arg);
9088   struct type *type = value_type (val);
9089   LONGEST result;
9090
9091   if (!discrete_type_p (type))
9092     error (_("'POS only defined on discrete types"));
9093
9094   if (!discrete_position (type, value_as_long (val), &result))
9095     error (_("enumeration value is invalid: can't find 'POS"));
9096
9097   return result;
9098 }
9099
9100 static struct value *
9101 value_pos_atr (struct type *type, struct value *arg)
9102 {
9103   return value_from_longest (type, pos_atr (arg));
9104 }
9105
9106 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9107
9108 static struct value *
9109 val_atr (struct type *type, LONGEST val)
9110 {
9111   gdb_assert (discrete_type_p (type));
9112   if (type->code () == TYPE_CODE_RANGE)
9113     type = TYPE_TARGET_TYPE (type);
9114   if (type->code () == TYPE_CODE_ENUM)
9115     {
9116       if (val < 0 || val >= type->num_fields ())
9117         error (_("argument to 'VAL out of range"));
9118       val = TYPE_FIELD_ENUMVAL (type, val);
9119     }
9120   return value_from_longest (type, val);
9121 }
9122
9123 static struct value *
9124 value_val_atr (struct type *type, struct value *arg)
9125 {
9126   if (!discrete_type_p (type))
9127     error (_("'VAL only defined on discrete types"));
9128   if (!integer_type_p (value_type (arg)))
9129     error (_("'VAL requires integral argument"));
9130
9131   return val_atr (type, value_as_long (arg));
9132 }
9133 \f
9134
9135                                 /* Evaluation */
9136
9137 /* True if TYPE appears to be an Ada character type.
9138    [At the moment, this is true only for Character and Wide_Character;
9139    It is a heuristic test that could stand improvement].  */
9140
9141 bool
9142 ada_is_character_type (struct type *type)
9143 {
9144   const char *name;
9145
9146   /* If the type code says it's a character, then assume it really is,
9147      and don't check any further.  */
9148   if (type->code () == TYPE_CODE_CHAR)
9149     return true;
9150   
9151   /* Otherwise, assume it's a character type iff it is a discrete type
9152      with a known character type name.  */
9153   name = ada_type_name (type);
9154   return (name != NULL
9155           && (type->code () == TYPE_CODE_INT
9156               || type->code () == TYPE_CODE_RANGE)
9157           && (strcmp (name, "character") == 0
9158               || strcmp (name, "wide_character") == 0
9159               || strcmp (name, "wide_wide_character") == 0
9160               || strcmp (name, "unsigned char") == 0));
9161 }
9162
9163 /* True if TYPE appears to be an Ada string type.  */
9164
9165 bool
9166 ada_is_string_type (struct type *type)
9167 {
9168   type = ada_check_typedef (type);
9169   if (type != NULL
9170       && type->code () != TYPE_CODE_PTR
9171       && (ada_is_simple_array_type (type)
9172           || ada_is_array_descriptor_type (type))
9173       && ada_array_arity (type) == 1)
9174     {
9175       struct type *elttype = ada_array_element_type (type, 1);
9176
9177       return ada_is_character_type (elttype);
9178     }
9179   else
9180     return false;
9181 }
9182
9183 /* The compiler sometimes provides a parallel XVS type for a given
9184    PAD type.  Normally, it is safe to follow the PAD type directly,
9185    but older versions of the compiler have a bug that causes the offset
9186    of its "F" field to be wrong.  Following that field in that case
9187    would lead to incorrect results, but this can be worked around
9188    by ignoring the PAD type and using the associated XVS type instead.
9189
9190    Set to True if the debugger should trust the contents of PAD types.
9191    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9192 static bool trust_pad_over_xvs = true;
9193
9194 /* True if TYPE is a struct type introduced by the compiler to force the
9195    alignment of a value.  Such types have a single field with a
9196    distinctive name.  */
9197
9198 int
9199 ada_is_aligner_type (struct type *type)
9200 {
9201   type = ada_check_typedef (type);
9202
9203   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9204     return 0;
9205
9206   return (type->code () == TYPE_CODE_STRUCT
9207           && type->num_fields () == 1
9208           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9209 }
9210
9211 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9212    the parallel type.  */
9213
9214 struct type *
9215 ada_get_base_type (struct type *raw_type)
9216 {
9217   struct type *real_type_namer;
9218   struct type *raw_real_type;
9219
9220   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
9221     return raw_type;
9222
9223   if (ada_is_aligner_type (raw_type))
9224     /* The encoding specifies that we should always use the aligner type.
9225        So, even if this aligner type has an associated XVS type, we should
9226        simply ignore it.
9227
9228        According to the compiler gurus, an XVS type parallel to an aligner
9229        type may exist because of a stabs limitation.  In stabs, aligner
9230        types are empty because the field has a variable-sized type, and
9231        thus cannot actually be used as an aligner type.  As a result,
9232        we need the associated parallel XVS type to decode the type.
9233        Since the policy in the compiler is to not change the internal
9234        representation based on the debugging info format, we sometimes
9235        end up having a redundant XVS type parallel to the aligner type.  */
9236     return raw_type;
9237
9238   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9239   if (real_type_namer == NULL
9240       || real_type_namer->code () != TYPE_CODE_STRUCT
9241       || real_type_namer->num_fields () != 1)
9242     return raw_type;
9243
9244   if (TYPE_FIELD_TYPE (real_type_namer, 0)->code () != TYPE_CODE_REF)
9245     {
9246       /* This is an older encoding form where the base type needs to be
9247          looked up by name.  We prefer the newer encoding because it is
9248          more efficient.  */
9249       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9250       if (raw_real_type == NULL)
9251         return raw_type;
9252       else
9253         return raw_real_type;
9254     }
9255
9256   /* The field in our XVS type is a reference to the base type.  */
9257   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9258 }
9259
9260 /* The type of value designated by TYPE, with all aligners removed.  */
9261
9262 struct type *
9263 ada_aligned_type (struct type *type)
9264 {
9265   if (ada_is_aligner_type (type))
9266     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9267   else
9268     return ada_get_base_type (type);
9269 }
9270
9271
9272 /* The address of the aligned value in an object at address VALADDR
9273    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9274
9275 const gdb_byte *
9276 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9277 {
9278   if (ada_is_aligner_type (type))
9279     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9280                                    valaddr +
9281                                    TYPE_FIELD_BITPOS (type,
9282                                                       0) / TARGET_CHAR_BIT);
9283   else
9284     return valaddr;
9285 }
9286
9287
9288
9289 /* The printed representation of an enumeration literal with encoded
9290    name NAME.  The value is good to the next call of ada_enum_name.  */
9291 const char *
9292 ada_enum_name (const char *name)
9293 {
9294   static char *result;
9295   static size_t result_len = 0;
9296   const char *tmp;
9297
9298   /* First, unqualify the enumeration name:
9299      1. Search for the last '.' character.  If we find one, then skip
9300      all the preceding characters, the unqualified name starts
9301      right after that dot.
9302      2. Otherwise, we may be debugging on a target where the compiler
9303      translates dots into "__".  Search forward for double underscores,
9304      but stop searching when we hit an overloading suffix, which is
9305      of the form "__" followed by digits.  */
9306
9307   tmp = strrchr (name, '.');
9308   if (tmp != NULL)
9309     name = tmp + 1;
9310   else
9311     {
9312       while ((tmp = strstr (name, "__")) != NULL)
9313         {
9314           if (isdigit (tmp[2]))
9315             break;
9316           else
9317             name = tmp + 2;
9318         }
9319     }
9320
9321   if (name[0] == 'Q')
9322     {
9323       int v;
9324
9325       if (name[1] == 'U' || name[1] == 'W')
9326         {
9327           if (sscanf (name + 2, "%x", &v) != 1)
9328             return name;
9329         }
9330       else if (((name[1] >= '0' && name[1] <= '9')
9331                 || (name[1] >= 'a' && name[1] <= 'z'))
9332                && name[2] == '\0')
9333         {
9334           GROW_VECT (result, result_len, 4);
9335           xsnprintf (result, result_len, "'%c'", name[1]);
9336           return result;
9337         }
9338       else
9339         return name;
9340
9341       GROW_VECT (result, result_len, 16);
9342       if (isascii (v) && isprint (v))
9343         xsnprintf (result, result_len, "'%c'", v);
9344       else if (name[1] == 'U')
9345         xsnprintf (result, result_len, "[\"%02x\"]", v);
9346       else
9347         xsnprintf (result, result_len, "[\"%04x\"]", v);
9348
9349       return result;
9350     }
9351   else
9352     {
9353       tmp = strstr (name, "__");
9354       if (tmp == NULL)
9355         tmp = strstr (name, "$");
9356       if (tmp != NULL)
9357         {
9358           GROW_VECT (result, result_len, tmp - name + 1);
9359           strncpy (result, name, tmp - name);
9360           result[tmp - name] = '\0';
9361           return result;
9362         }
9363
9364       return name;
9365     }
9366 }
9367
9368 /* Evaluate the subexpression of EXP starting at *POS as for
9369    evaluate_type, updating *POS to point just past the evaluated
9370    expression.  */
9371
9372 static struct value *
9373 evaluate_subexp_type (struct expression *exp, int *pos)
9374 {
9375   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9376 }
9377
9378 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9379    value it wraps.  */
9380
9381 static struct value *
9382 unwrap_value (struct value *val)
9383 {
9384   struct type *type = ada_check_typedef (value_type (val));
9385
9386   if (ada_is_aligner_type (type))
9387     {
9388       struct value *v = ada_value_struct_elt (val, "F", 0);
9389       struct type *val_type = ada_check_typedef (value_type (v));
9390
9391       if (ada_type_name (val_type) == NULL)
9392         val_type->set_name (ada_type_name (type));
9393
9394       return unwrap_value (v);
9395     }
9396   else
9397     {
9398       struct type *raw_real_type =
9399         ada_check_typedef (ada_get_base_type (type));
9400
9401       /* If there is no parallel XVS or XVE type, then the value is
9402          already unwrapped.  Return it without further modification.  */
9403       if ((type == raw_real_type)
9404           && ada_find_parallel_type (type, "___XVE") == NULL)
9405         return val;
9406
9407       return
9408         coerce_unspec_val_to_type
9409         (val, ada_to_fixed_type (raw_real_type, 0,
9410                                  value_address (val),
9411                                  NULL, 1));
9412     }
9413 }
9414
9415 static struct value *
9416 cast_from_fixed (struct type *type, struct value *arg)
9417 {
9418   struct value *scale = ada_scaling_factor (value_type (arg));
9419   arg = value_cast (value_type (scale), arg);
9420
9421   arg = value_binop (arg, scale, BINOP_MUL);
9422   return value_cast (type, arg);
9423 }
9424
9425 static struct value *
9426 cast_to_fixed (struct type *type, struct value *arg)
9427 {
9428   if (type == value_type (arg))
9429     return arg;
9430
9431   struct value *scale = ada_scaling_factor (type);
9432   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9433     arg = cast_from_fixed (value_type (scale), arg);
9434   else
9435     arg = value_cast (value_type (scale), arg);
9436
9437   arg = value_binop (arg, scale, BINOP_DIV);
9438   return value_cast (type, arg);
9439 }
9440
9441 /* Given two array types T1 and T2, return nonzero iff both arrays
9442    contain the same number of elements.  */
9443
9444 static int
9445 ada_same_array_size_p (struct type *t1, struct type *t2)
9446 {
9447   LONGEST lo1, hi1, lo2, hi2;
9448
9449   /* Get the array bounds in order to verify that the size of
9450      the two arrays match.  */
9451   if (!get_array_bounds (t1, &lo1, &hi1)
9452       || !get_array_bounds (t2, &lo2, &hi2))
9453     error (_("unable to determine array bounds"));
9454
9455   /* To make things easier for size comparison, normalize a bit
9456      the case of empty arrays by making sure that the difference
9457      between upper bound and lower bound is always -1.  */
9458   if (lo1 > hi1)
9459     hi1 = lo1 - 1;
9460   if (lo2 > hi2)
9461     hi2 = lo2 - 1;
9462
9463   return (hi1 - lo1 == hi2 - lo2);
9464 }
9465
9466 /* Assuming that VAL is an array of integrals, and TYPE represents
9467    an array with the same number of elements, but with wider integral
9468    elements, return an array "casted" to TYPE.  In practice, this
9469    means that the returned array is built by casting each element
9470    of the original array into TYPE's (wider) element type.  */
9471
9472 static struct value *
9473 ada_promote_array_of_integrals (struct type *type, struct value *val)
9474 {
9475   struct type *elt_type = TYPE_TARGET_TYPE (type);
9476   LONGEST lo, hi;
9477   struct value *res;
9478   LONGEST i;
9479
9480   /* Verify that both val and type are arrays of scalars, and
9481      that the size of val's elements is smaller than the size
9482      of type's element.  */
9483   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9484   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9485   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9486   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9487   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9488               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9489
9490   if (!get_array_bounds (type, &lo, &hi))
9491     error (_("unable to determine array bounds"));
9492
9493   res = allocate_value (type);
9494
9495   /* Promote each array element.  */
9496   for (i = 0; i < hi - lo + 1; i++)
9497     {
9498       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9499
9500       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9501               value_contents_all (elt), TYPE_LENGTH (elt_type));
9502     }
9503
9504   return res;
9505 }
9506
9507 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9508    return the converted value.  */
9509
9510 static struct value *
9511 coerce_for_assign (struct type *type, struct value *val)
9512 {
9513   struct type *type2 = value_type (val);
9514
9515   if (type == type2)
9516     return val;
9517
9518   type2 = ada_check_typedef (type2);
9519   type = ada_check_typedef (type);
9520
9521   if (type2->code () == TYPE_CODE_PTR
9522       && type->code () == TYPE_CODE_ARRAY)
9523     {
9524       val = ada_value_ind (val);
9525       type2 = value_type (val);
9526     }
9527
9528   if (type2->code () == TYPE_CODE_ARRAY
9529       && type->code () == TYPE_CODE_ARRAY)
9530     {
9531       if (!ada_same_array_size_p (type, type2))
9532         error (_("cannot assign arrays of different length"));
9533
9534       if (is_integral_type (TYPE_TARGET_TYPE (type))
9535           && is_integral_type (TYPE_TARGET_TYPE (type2))
9536           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9537                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9538         {
9539           /* Allow implicit promotion of the array elements to
9540              a wider type.  */
9541           return ada_promote_array_of_integrals (type, val);
9542         }
9543
9544       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9545           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9546         error (_("Incompatible types in assignment"));
9547       deprecated_set_value_type (val, type);
9548     }
9549   return val;
9550 }
9551
9552 static struct value *
9553 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9554 {
9555   struct value *val;
9556   struct type *type1, *type2;
9557   LONGEST v, v1, v2;
9558
9559   arg1 = coerce_ref (arg1);
9560   arg2 = coerce_ref (arg2);
9561   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9562   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9563
9564   if (type1->code () != TYPE_CODE_INT
9565       || type2->code () != TYPE_CODE_INT)
9566     return value_binop (arg1, arg2, op);
9567
9568   switch (op)
9569     {
9570     case BINOP_MOD:
9571     case BINOP_DIV:
9572     case BINOP_REM:
9573       break;
9574     default:
9575       return value_binop (arg1, arg2, op);
9576     }
9577
9578   v2 = value_as_long (arg2);
9579   if (v2 == 0)
9580     error (_("second operand of %s must not be zero."), op_string (op));
9581
9582   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9583     return value_binop (arg1, arg2, op);
9584
9585   v1 = value_as_long (arg1);
9586   switch (op)
9587     {
9588     case BINOP_DIV:
9589       v = v1 / v2;
9590       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9591         v += v > 0 ? -1 : 1;
9592       break;
9593     case BINOP_REM:
9594       v = v1 % v2;
9595       if (v * v1 < 0)
9596         v -= v2;
9597       break;
9598     default:
9599       /* Should not reach this point.  */
9600       v = 0;
9601     }
9602
9603   val = allocate_value (type1);
9604   store_unsigned_integer (value_contents_raw (val),
9605                           TYPE_LENGTH (value_type (val)),
9606                           type_byte_order (type1), v);
9607   return val;
9608 }
9609
9610 static int
9611 ada_value_equal (struct value *arg1, struct value *arg2)
9612 {
9613   if (ada_is_direct_array_type (value_type (arg1))
9614       || ada_is_direct_array_type (value_type (arg2)))
9615     {
9616       struct type *arg1_type, *arg2_type;
9617
9618       /* Automatically dereference any array reference before
9619          we attempt to perform the comparison.  */
9620       arg1 = ada_coerce_ref (arg1);
9621       arg2 = ada_coerce_ref (arg2);
9622
9623       arg1 = ada_coerce_to_simple_array (arg1);
9624       arg2 = ada_coerce_to_simple_array (arg2);
9625
9626       arg1_type = ada_check_typedef (value_type (arg1));
9627       arg2_type = ada_check_typedef (value_type (arg2));
9628
9629       if (arg1_type->code () != TYPE_CODE_ARRAY
9630           || arg2_type->code () != TYPE_CODE_ARRAY)
9631         error (_("Attempt to compare array with non-array"));
9632       /* FIXME: The following works only for types whose
9633          representations use all bits (no padding or undefined bits)
9634          and do not have user-defined equality.  */
9635       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9636               && memcmp (value_contents (arg1), value_contents (arg2),
9637                          TYPE_LENGTH (arg1_type)) == 0);
9638     }
9639   return value_equal (arg1, arg2);
9640 }
9641
9642 /* Total number of component associations in the aggregate starting at
9643    index PC in EXP.  Assumes that index PC is the start of an
9644    OP_AGGREGATE.  */
9645
9646 static int
9647 num_component_specs (struct expression *exp, int pc)
9648 {
9649   int n, m, i;
9650
9651   m = exp->elts[pc + 1].longconst;
9652   pc += 3;
9653   n = 0;
9654   for (i = 0; i < m; i += 1)
9655     {
9656       switch (exp->elts[pc].opcode) 
9657         {
9658         default:
9659           n += 1;
9660           break;
9661         case OP_CHOICES:
9662           n += exp->elts[pc + 1].longconst;
9663           break;
9664         }
9665       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9666     }
9667   return n;
9668 }
9669
9670 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9671    component of LHS (a simple array or a record), updating *POS past
9672    the expression, assuming that LHS is contained in CONTAINER.  Does
9673    not modify the inferior's memory, nor does it modify LHS (unless
9674    LHS == CONTAINER).  */
9675
9676 static void
9677 assign_component (struct value *container, struct value *lhs, LONGEST index,
9678                   struct expression *exp, int *pos)
9679 {
9680   struct value *mark = value_mark ();
9681   struct value *elt;
9682   struct type *lhs_type = check_typedef (value_type (lhs));
9683
9684   if (lhs_type->code () == TYPE_CODE_ARRAY)
9685     {
9686       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9687       struct value *index_val = value_from_longest (index_type, index);
9688
9689       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9690     }
9691   else
9692     {
9693       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9694       elt = ada_to_fixed_value (elt);
9695     }
9696
9697   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9698     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9699   else
9700     value_assign_to_component (container, elt, 
9701                                ada_evaluate_subexp (NULL, exp, pos, 
9702                                                     EVAL_NORMAL));
9703
9704   value_free_to_mark (mark);
9705 }
9706
9707 /* Assuming that LHS represents an lvalue having a record or array
9708    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9709    of that aggregate's value to LHS, advancing *POS past the
9710    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9711    lvalue containing LHS (possibly LHS itself).  Does not modify
9712    the inferior's memory, nor does it modify the contents of 
9713    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9714
9715 static struct value *
9716 assign_aggregate (struct value *container, 
9717                   struct value *lhs, struct expression *exp, 
9718                   int *pos, enum noside noside)
9719 {
9720   struct type *lhs_type;
9721   int n = exp->elts[*pos+1].longconst;
9722   LONGEST low_index, high_index;
9723   int num_specs;
9724   LONGEST *indices;
9725   int max_indices, num_indices;
9726   int i;
9727
9728   *pos += 3;
9729   if (noside != EVAL_NORMAL)
9730     {
9731       for (i = 0; i < n; i += 1)
9732         ada_evaluate_subexp (NULL, exp, pos, noside);
9733       return container;
9734     }
9735
9736   container = ada_coerce_ref (container);
9737   if (ada_is_direct_array_type (value_type (container)))
9738     container = ada_coerce_to_simple_array (container);
9739   lhs = ada_coerce_ref (lhs);
9740   if (!deprecated_value_modifiable (lhs))
9741     error (_("Left operand of assignment is not a modifiable lvalue."));
9742
9743   lhs_type = check_typedef (value_type (lhs));
9744   if (ada_is_direct_array_type (lhs_type))
9745     {
9746       lhs = ada_coerce_to_simple_array (lhs);
9747       lhs_type = check_typedef (value_type (lhs));
9748       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9749       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9750     }
9751   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9752     {
9753       low_index = 0;
9754       high_index = num_visible_fields (lhs_type) - 1;
9755     }
9756   else
9757     error (_("Left-hand side must be array or record."));
9758
9759   num_specs = num_component_specs (exp, *pos - 3);
9760   max_indices = 4 * num_specs + 4;
9761   indices = XALLOCAVEC (LONGEST, max_indices);
9762   indices[0] = indices[1] = low_index - 1;
9763   indices[2] = indices[3] = high_index + 1;
9764   num_indices = 4;
9765
9766   for (i = 0; i < n; i += 1)
9767     {
9768       switch (exp->elts[*pos].opcode)
9769         {
9770           case OP_CHOICES:
9771             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9772                                            &num_indices, max_indices,
9773                                            low_index, high_index);
9774             break;
9775           case OP_POSITIONAL:
9776             aggregate_assign_positional (container, lhs, exp, pos, indices,
9777                                          &num_indices, max_indices,
9778                                          low_index, high_index);
9779             break;
9780           case OP_OTHERS:
9781             if (i != n-1)
9782               error (_("Misplaced 'others' clause"));
9783             aggregate_assign_others (container, lhs, exp, pos, indices, 
9784                                      num_indices, low_index, high_index);
9785             break;
9786           default:
9787             error (_("Internal error: bad aggregate clause"));
9788         }
9789     }
9790
9791   return container;
9792 }
9793               
9794 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9795    construct at *POS, updating *POS past the construct, given that
9796    the positions are relative to lower bound LOW, where HIGH is the 
9797    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9798    updating *NUM_INDICES as needed.  CONTAINER is as for
9799    assign_aggregate.  */
9800 static void
9801 aggregate_assign_positional (struct value *container,
9802                              struct value *lhs, struct expression *exp,
9803                              int *pos, LONGEST *indices, int *num_indices,
9804                              int max_indices, LONGEST low, LONGEST high) 
9805 {
9806   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9807   
9808   if (ind - 1 == high)
9809     warning (_("Extra components in aggregate ignored."));
9810   if (ind <= high)
9811     {
9812       add_component_interval (ind, ind, indices, num_indices, max_indices);
9813       *pos += 3;
9814       assign_component (container, lhs, ind, exp, pos);
9815     }
9816   else
9817     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9818 }
9819
9820 /* Assign into the components of LHS indexed by the OP_CHOICES
9821    construct at *POS, updating *POS past the construct, given that
9822    the allowable indices are LOW..HIGH.  Record the indices assigned
9823    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9824    needed.  CONTAINER is as for assign_aggregate.  */
9825 static void
9826 aggregate_assign_from_choices (struct value *container,
9827                                struct value *lhs, struct expression *exp,
9828                                int *pos, LONGEST *indices, int *num_indices,
9829                                int max_indices, LONGEST low, LONGEST high) 
9830 {
9831   int j;
9832   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9833   int choice_pos, expr_pc;
9834   int is_array = ada_is_direct_array_type (value_type (lhs));
9835
9836   choice_pos = *pos += 3;
9837
9838   for (j = 0; j < n_choices; j += 1)
9839     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9840   expr_pc = *pos;
9841   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9842   
9843   for (j = 0; j < n_choices; j += 1)
9844     {
9845       LONGEST lower, upper;
9846       enum exp_opcode op = exp->elts[choice_pos].opcode;
9847
9848       if (op == OP_DISCRETE_RANGE)
9849         {
9850           choice_pos += 1;
9851           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9852                                                       EVAL_NORMAL));
9853           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9854                                                       EVAL_NORMAL));
9855         }
9856       else if (is_array)
9857         {
9858           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9859                                                       EVAL_NORMAL));
9860           upper = lower;
9861         }
9862       else
9863         {
9864           int ind;
9865           const char *name;
9866
9867           switch (op)
9868             {
9869             case OP_NAME:
9870               name = &exp->elts[choice_pos + 2].string;
9871               break;
9872             case OP_VAR_VALUE:
9873               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9874               break;
9875             default:
9876               error (_("Invalid record component association."));
9877             }
9878           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9879           ind = 0;
9880           if (! find_struct_field (name, value_type (lhs), 0, 
9881                                    NULL, NULL, NULL, NULL, &ind))
9882             error (_("Unknown component name: %s."), name);
9883           lower = upper = ind;
9884         }
9885
9886       if (lower <= upper && (lower < low || upper > high))
9887         error (_("Index in component association out of bounds."));
9888
9889       add_component_interval (lower, upper, indices, num_indices,
9890                               max_indices);
9891       while (lower <= upper)
9892         {
9893           int pos1;
9894
9895           pos1 = expr_pc;
9896           assign_component (container, lhs, lower, exp, &pos1);
9897           lower += 1;
9898         }
9899     }
9900 }
9901
9902 /* Assign the value of the expression in the OP_OTHERS construct in
9903    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9904    have not been previously assigned.  The index intervals already assigned
9905    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9906    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9907 static void
9908 aggregate_assign_others (struct value *container,
9909                          struct value *lhs, struct expression *exp,
9910                          int *pos, LONGEST *indices, int num_indices,
9911                          LONGEST low, LONGEST high) 
9912 {
9913   int i;
9914   int expr_pc = *pos + 1;
9915   
9916   for (i = 0; i < num_indices - 2; i += 2)
9917     {
9918       LONGEST ind;
9919
9920       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9921         {
9922           int localpos;
9923
9924           localpos = expr_pc;
9925           assign_component (container, lhs, ind, exp, &localpos);
9926         }
9927     }
9928   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9929 }
9930
9931 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9932    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9933    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9934    MAX_SIZE.  The resulting intervals do not overlap.  */
9935 static void
9936 add_component_interval (LONGEST low, LONGEST high, 
9937                         LONGEST* indices, int *size, int max_size)
9938 {
9939   int i, j;
9940
9941   for (i = 0; i < *size; i += 2) {
9942     if (high >= indices[i] && low <= indices[i + 1])
9943       {
9944         int kh;
9945
9946         for (kh = i + 2; kh < *size; kh += 2)
9947           if (high < indices[kh])
9948             break;
9949         if (low < indices[i])
9950           indices[i] = low;
9951         indices[i + 1] = indices[kh - 1];
9952         if (high > indices[i + 1])
9953           indices[i + 1] = high;
9954         memcpy (indices + i + 2, indices + kh, *size - kh);
9955         *size -= kh - i - 2;
9956         return;
9957       }
9958     else if (high < indices[i])
9959       break;
9960   }
9961         
9962   if (*size == max_size)
9963     error (_("Internal error: miscounted aggregate components."));
9964   *size += 2;
9965   for (j = *size-1; j >= i+2; j -= 1)
9966     indices[j] = indices[j - 2];
9967   indices[i] = low;
9968   indices[i + 1] = high;
9969 }
9970
9971 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9972    is different.  */
9973
9974 static struct value *
9975 ada_value_cast (struct type *type, struct value *arg2)
9976 {
9977   if (type == ada_check_typedef (value_type (arg2)))
9978     return arg2;
9979
9980   if (ada_is_gnat_encoded_fixed_point_type (type))
9981     return cast_to_fixed (type, arg2);
9982
9983   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
9984     return cast_from_fixed (type, arg2);
9985
9986   return value_cast (type, arg2);
9987 }
9988
9989 /*  Evaluating Ada expressions, and printing their result.
9990     ------------------------------------------------------
9991
9992     1. Introduction:
9993     ----------------
9994
9995     We usually evaluate an Ada expression in order to print its value.
9996     We also evaluate an expression in order to print its type, which
9997     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9998     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9999     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10000     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10001     similar.
10002
10003     Evaluating expressions is a little more complicated for Ada entities
10004     than it is for entities in languages such as C.  The main reason for
10005     this is that Ada provides types whose definition might be dynamic.
10006     One example of such types is variant records.  Or another example
10007     would be an array whose bounds can only be known at run time.
10008
10009     The following description is a general guide as to what should be
10010     done (and what should NOT be done) in order to evaluate an expression
10011     involving such types, and when.  This does not cover how the semantic
10012     information is encoded by GNAT as this is covered separatly.  For the
10013     document used as the reference for the GNAT encoding, see exp_dbug.ads
10014     in the GNAT sources.
10015
10016     Ideally, we should embed each part of this description next to its
10017     associated code.  Unfortunately, the amount of code is so vast right
10018     now that it's hard to see whether the code handling a particular
10019     situation might be duplicated or not.  One day, when the code is
10020     cleaned up, this guide might become redundant with the comments
10021     inserted in the code, and we might want to remove it.
10022
10023     2. ``Fixing'' an Entity, the Simple Case:
10024     -----------------------------------------
10025
10026     When evaluating Ada expressions, the tricky issue is that they may
10027     reference entities whose type contents and size are not statically
10028     known.  Consider for instance a variant record:
10029
10030        type Rec (Empty : Boolean := True) is record
10031           case Empty is
10032              when True => null;
10033              when False => Value : Integer;
10034           end case;
10035        end record;
10036        Yes : Rec := (Empty => False, Value => 1);
10037        No  : Rec := (empty => True);
10038
10039     The size and contents of that record depends on the value of the
10040     descriminant (Rec.Empty).  At this point, neither the debugging
10041     information nor the associated type structure in GDB are able to
10042     express such dynamic types.  So what the debugger does is to create
10043     "fixed" versions of the type that applies to the specific object.
10044     We also informally refer to this operation as "fixing" an object,
10045     which means creating its associated fixed type.
10046
10047     Example: when printing the value of variable "Yes" above, its fixed
10048     type would look like this:
10049
10050        type Rec is record
10051           Empty : Boolean;
10052           Value : Integer;
10053        end record;
10054
10055     On the other hand, if we printed the value of "No", its fixed type
10056     would become:
10057
10058        type Rec is record
10059           Empty : Boolean;
10060        end record;
10061
10062     Things become a little more complicated when trying to fix an entity
10063     with a dynamic type that directly contains another dynamic type,
10064     such as an array of variant records, for instance.  There are
10065     two possible cases: Arrays, and records.
10066
10067     3. ``Fixing'' Arrays:
10068     ---------------------
10069
10070     The type structure in GDB describes an array in terms of its bounds,
10071     and the type of its elements.  By design, all elements in the array
10072     have the same type and we cannot represent an array of variant elements
10073     using the current type structure in GDB.  When fixing an array,
10074     we cannot fix the array element, as we would potentially need one
10075     fixed type per element of the array.  As a result, the best we can do
10076     when fixing an array is to produce an array whose bounds and size
10077     are correct (allowing us to read it from memory), but without having
10078     touched its element type.  Fixing each element will be done later,
10079     when (if) necessary.
10080
10081     Arrays are a little simpler to handle than records, because the same
10082     amount of memory is allocated for each element of the array, even if
10083     the amount of space actually used by each element differs from element
10084     to element.  Consider for instance the following array of type Rec:
10085
10086        type Rec_Array is array (1 .. 2) of Rec;
10087
10088     The actual amount of memory occupied by each element might be different
10089     from element to element, depending on the value of their discriminant.
10090     But the amount of space reserved for each element in the array remains
10091     fixed regardless.  So we simply need to compute that size using
10092     the debugging information available, from which we can then determine
10093     the array size (we multiply the number of elements of the array by
10094     the size of each element).
10095
10096     The simplest case is when we have an array of a constrained element
10097     type. For instance, consider the following type declarations:
10098
10099         type Bounded_String (Max_Size : Integer) is
10100            Length : Integer;
10101            Buffer : String (1 .. Max_Size);
10102         end record;
10103         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10104
10105     In this case, the compiler describes the array as an array of
10106     variable-size elements (identified by its XVS suffix) for which
10107     the size can be read in the parallel XVZ variable.
10108
10109     In the case of an array of an unconstrained element type, the compiler
10110     wraps the array element inside a private PAD type.  This type should not
10111     be shown to the user, and must be "unwrap"'ed before printing.  Note
10112     that we also use the adjective "aligner" in our code to designate
10113     these wrapper types.
10114
10115     In some cases, the size allocated for each element is statically
10116     known.  In that case, the PAD type already has the correct size,
10117     and the array element should remain unfixed.
10118
10119     But there are cases when this size is not statically known.
10120     For instance, assuming that "Five" is an integer variable:
10121
10122         type Dynamic is array (1 .. Five) of Integer;
10123         type Wrapper (Has_Length : Boolean := False) is record
10124            Data : Dynamic;
10125            case Has_Length is
10126               when True => Length : Integer;
10127               when False => null;
10128            end case;
10129         end record;
10130         type Wrapper_Array is array (1 .. 2) of Wrapper;
10131
10132         Hello : Wrapper_Array := (others => (Has_Length => True,
10133                                              Data => (others => 17),
10134                                              Length => 1));
10135
10136
10137     The debugging info would describe variable Hello as being an
10138     array of a PAD type.  The size of that PAD type is not statically
10139     known, but can be determined using a parallel XVZ variable.
10140     In that case, a copy of the PAD type with the correct size should
10141     be used for the fixed array.
10142
10143     3. ``Fixing'' record type objects:
10144     ----------------------------------
10145
10146     Things are slightly different from arrays in the case of dynamic
10147     record types.  In this case, in order to compute the associated
10148     fixed type, we need to determine the size and offset of each of
10149     its components.  This, in turn, requires us to compute the fixed
10150     type of each of these components.
10151
10152     Consider for instance the example:
10153
10154         type Bounded_String (Max_Size : Natural) is record
10155            Str : String (1 .. Max_Size);
10156            Length : Natural;
10157         end record;
10158         My_String : Bounded_String (Max_Size => 10);
10159
10160     In that case, the position of field "Length" depends on the size
10161     of field Str, which itself depends on the value of the Max_Size
10162     discriminant.  In order to fix the type of variable My_String,
10163     we need to fix the type of field Str.  Therefore, fixing a variant
10164     record requires us to fix each of its components.
10165
10166     However, if a component does not have a dynamic size, the component
10167     should not be fixed.  In particular, fields that use a PAD type
10168     should not fixed.  Here is an example where this might happen
10169     (assuming type Rec above):
10170
10171        type Container (Big : Boolean) is record
10172           First : Rec;
10173           After : Integer;
10174           case Big is
10175              when True => Another : Integer;
10176              when False => null;
10177           end case;
10178        end record;
10179        My_Container : Container := (Big => False,
10180                                     First => (Empty => True),
10181                                     After => 42);
10182
10183     In that example, the compiler creates a PAD type for component First,
10184     whose size is constant, and then positions the component After just
10185     right after it.  The offset of component After is therefore constant
10186     in this case.
10187
10188     The debugger computes the position of each field based on an algorithm
10189     that uses, among other things, the actual position and size of the field
10190     preceding it.  Let's now imagine that the user is trying to print
10191     the value of My_Container.  If the type fixing was recursive, we would
10192     end up computing the offset of field After based on the size of the
10193     fixed version of field First.  And since in our example First has
10194     only one actual field, the size of the fixed type is actually smaller
10195     than the amount of space allocated to that field, and thus we would
10196     compute the wrong offset of field After.
10197
10198     To make things more complicated, we need to watch out for dynamic
10199     components of variant records (identified by the ___XVL suffix in
10200     the component name).  Even if the target type is a PAD type, the size
10201     of that type might not be statically known.  So the PAD type needs
10202     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10203     we might end up with the wrong size for our component.  This can be
10204     observed with the following type declarations:
10205
10206         type Octal is new Integer range 0 .. 7;
10207         type Octal_Array is array (Positive range <>) of Octal;
10208         pragma Pack (Octal_Array);
10209
10210         type Octal_Buffer (Size : Positive) is record
10211            Buffer : Octal_Array (1 .. Size);
10212            Length : Integer;
10213         end record;
10214
10215     In that case, Buffer is a PAD type whose size is unset and needs
10216     to be computed by fixing the unwrapped type.
10217
10218     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10219     ----------------------------------------------------------
10220
10221     Lastly, when should the sub-elements of an entity that remained unfixed
10222     thus far, be actually fixed?
10223
10224     The answer is: Only when referencing that element.  For instance
10225     when selecting one component of a record, this specific component
10226     should be fixed at that point in time.  Or when printing the value
10227     of a record, each component should be fixed before its value gets
10228     printed.  Similarly for arrays, the element of the array should be
10229     fixed when printing each element of the array, or when extracting
10230     one element out of that array.  On the other hand, fixing should
10231     not be performed on the elements when taking a slice of an array!
10232
10233     Note that one of the side effects of miscomputing the offset and
10234     size of each field is that we end up also miscomputing the size
10235     of the containing type.  This can have adverse results when computing
10236     the value of an entity.  GDB fetches the value of an entity based
10237     on the size of its type, and thus a wrong size causes GDB to fetch
10238     the wrong amount of memory.  In the case where the computed size is
10239     too small, GDB fetches too little data to print the value of our
10240     entity.  Results in this case are unpredictable, as we usually read
10241     past the buffer containing the data =:-o.  */
10242
10243 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10244    for that subexpression cast to TO_TYPE.  Advance *POS over the
10245    subexpression.  */
10246
10247 static value *
10248 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10249                               enum noside noside, struct type *to_type)
10250 {
10251   int pc = *pos;
10252
10253   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10254       || exp->elts[pc].opcode == OP_VAR_VALUE)
10255     {
10256       (*pos) += 4;
10257
10258       value *val;
10259       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10260         {
10261           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10262             return value_zero (to_type, not_lval);
10263
10264           val = evaluate_var_msym_value (noside,
10265                                          exp->elts[pc + 1].objfile,
10266                                          exp->elts[pc + 2].msymbol);
10267         }
10268       else
10269         val = evaluate_var_value (noside,
10270                                   exp->elts[pc + 1].block,
10271                                   exp->elts[pc + 2].symbol);
10272
10273       if (noside == EVAL_SKIP)
10274         return eval_skip_value (exp);
10275
10276       val = ada_value_cast (to_type, val);
10277
10278       /* Follow the Ada language semantics that do not allow taking
10279          an address of the result of a cast (view conversion in Ada).  */
10280       if (VALUE_LVAL (val) == lval_memory)
10281         {
10282           if (value_lazy (val))
10283             value_fetch_lazy (val);
10284           VALUE_LVAL (val) = not_lval;
10285         }
10286       return val;
10287     }
10288
10289   value *val = evaluate_subexp (to_type, exp, pos, noside);
10290   if (noside == EVAL_SKIP)
10291     return eval_skip_value (exp);
10292   return ada_value_cast (to_type, val);
10293 }
10294
10295 /* Implement the evaluate_exp routine in the exp_descriptor structure
10296    for the Ada language.  */
10297
10298 static struct value *
10299 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10300                      int *pos, enum noside noside)
10301 {
10302   enum exp_opcode op;
10303   int tem;
10304   int pc;
10305   int preeval_pos;
10306   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10307   struct type *type;
10308   int nargs, oplen;
10309   struct value **argvec;
10310
10311   pc = *pos;
10312   *pos += 1;
10313   op = exp->elts[pc].opcode;
10314
10315   switch (op)
10316     {
10317     default:
10318       *pos -= 1;
10319       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10320
10321       if (noside == EVAL_NORMAL)
10322         arg1 = unwrap_value (arg1);
10323
10324       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10325          then we need to perform the conversion manually, because
10326          evaluate_subexp_standard doesn't do it.  This conversion is
10327          necessary in Ada because the different kinds of float/fixed
10328          types in Ada have different representations.
10329
10330          Similarly, we need to perform the conversion from OP_LONG
10331          ourselves.  */
10332       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10333         arg1 = ada_value_cast (expect_type, arg1);
10334
10335       return arg1;
10336
10337     case OP_STRING:
10338       {
10339         struct value *result;
10340
10341         *pos -= 1;
10342         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10343         /* The result type will have code OP_STRING, bashed there from 
10344            OP_ARRAY.  Bash it back.  */
10345         if (value_type (result)->code () == TYPE_CODE_STRING)
10346           value_type (result)->set_code (TYPE_CODE_ARRAY);
10347         return result;
10348       }
10349
10350     case UNOP_CAST:
10351       (*pos) += 2;
10352       type = exp->elts[pc + 1].type;
10353       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10354
10355     case UNOP_QUAL:
10356       (*pos) += 2;
10357       type = exp->elts[pc + 1].type;
10358       return ada_evaluate_subexp (type, exp, pos, noside);
10359
10360     case BINOP_ASSIGN:
10361       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10362       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10363         {
10364           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10365           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10366             return arg1;
10367           return ada_value_assign (arg1, arg1);
10368         }
10369       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10370          except if the lhs of our assignment is a convenience variable.
10371          In the case of assigning to a convenience variable, the lhs
10372          should be exactly the result of the evaluation of the rhs.  */
10373       type = value_type (arg1);
10374       if (VALUE_LVAL (arg1) == lval_internalvar)
10375          type = NULL;
10376       arg2 = evaluate_subexp (type, exp, pos, noside);
10377       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10378         return arg1;
10379       if (VALUE_LVAL (arg1) == lval_internalvar)
10380         {
10381           /* Nothing.  */
10382         }
10383       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10384         arg2 = cast_to_fixed (value_type (arg1), arg2);
10385       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10386         error
10387           (_("Fixed-point values must be assigned to fixed-point variables"));
10388       else
10389         arg2 = coerce_for_assign (value_type (arg1), arg2);
10390       return ada_value_assign (arg1, arg2);
10391
10392     case BINOP_ADD:
10393       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10394       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10395       if (noside == EVAL_SKIP)
10396         goto nosideret;
10397       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10398         return (value_from_longest
10399                  (value_type (arg1),
10400                   value_as_long (arg1) + value_as_long (arg2)));
10401       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10402         return (value_from_longest
10403                  (value_type (arg2),
10404                   value_as_long (arg1) + value_as_long (arg2)));
10405       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10406            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10407           && value_type (arg1) != value_type (arg2))
10408         error (_("Operands of fixed-point addition must have the same type"));
10409       /* Do the addition, and cast the result to the type of the first
10410          argument.  We cannot cast the result to a reference type, so if
10411          ARG1 is a reference type, find its underlying type.  */
10412       type = value_type (arg1);
10413       while (type->code () == TYPE_CODE_REF)
10414         type = TYPE_TARGET_TYPE (type);
10415       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10416       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10417
10418     case BINOP_SUB:
10419       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10420       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10421       if (noside == EVAL_SKIP)
10422         goto nosideret;
10423       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10424         return (value_from_longest
10425                  (value_type (arg1),
10426                   value_as_long (arg1) - value_as_long (arg2)));
10427       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10428         return (value_from_longest
10429                  (value_type (arg2),
10430                   value_as_long (arg1) - value_as_long (arg2)));
10431       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10432            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10433           && value_type (arg1) != value_type (arg2))
10434         error (_("Operands of fixed-point subtraction "
10435                  "must have the same type"));
10436       /* Do the substraction, and cast the result to the type of the first
10437          argument.  We cannot cast the result to a reference type, so if
10438          ARG1 is a reference type, find its underlying type.  */
10439       type = value_type (arg1);
10440       while (type->code () == TYPE_CODE_REF)
10441         type = TYPE_TARGET_TYPE (type);
10442       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10443       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10444
10445     case BINOP_MUL:
10446     case BINOP_DIV:
10447     case BINOP_REM:
10448     case BINOP_MOD:
10449       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10450       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10451       if (noside == EVAL_SKIP)
10452         goto nosideret;
10453       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10454         {
10455           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10456           return value_zero (value_type (arg1), not_lval);
10457         }
10458       else
10459         {
10460           type = builtin_type (exp->gdbarch)->builtin_double;
10461           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10462             arg1 = cast_from_fixed (type, arg1);
10463           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10464             arg2 = cast_from_fixed (type, arg2);
10465           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10466           return ada_value_binop (arg1, arg2, op);
10467         }
10468
10469     case BINOP_EQUAL:
10470     case BINOP_NOTEQUAL:
10471       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10472       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10473       if (noside == EVAL_SKIP)
10474         goto nosideret;
10475       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10476         tem = 0;
10477       else
10478         {
10479           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10480           tem = ada_value_equal (arg1, arg2);
10481         }
10482       if (op == BINOP_NOTEQUAL)
10483         tem = !tem;
10484       type = language_bool_type (exp->language_defn, exp->gdbarch);
10485       return value_from_longest (type, (LONGEST) tem);
10486
10487     case UNOP_NEG:
10488       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10489       if (noside == EVAL_SKIP)
10490         goto nosideret;
10491       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10492         return value_cast (value_type (arg1), value_neg (arg1));
10493       else
10494         {
10495           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10496           return value_neg (arg1);
10497         }
10498
10499     case BINOP_LOGICAL_AND:
10500     case BINOP_LOGICAL_OR:
10501     case UNOP_LOGICAL_NOT:
10502       {
10503         struct value *val;
10504
10505         *pos -= 1;
10506         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10507         type = language_bool_type (exp->language_defn, exp->gdbarch);
10508         return value_cast (type, val);
10509       }
10510
10511     case BINOP_BITWISE_AND:
10512     case BINOP_BITWISE_IOR:
10513     case BINOP_BITWISE_XOR:
10514       {
10515         struct value *val;
10516
10517         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10518         *pos = pc;
10519         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10520
10521         return value_cast (value_type (arg1), val);
10522       }
10523
10524     case OP_VAR_VALUE:
10525       *pos -= 1;
10526
10527       if (noside == EVAL_SKIP)
10528         {
10529           *pos += 4;
10530           goto nosideret;
10531         }
10532
10533       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10534         /* Only encountered when an unresolved symbol occurs in a
10535            context other than a function call, in which case, it is
10536            invalid.  */
10537         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10538                exp->elts[pc + 2].symbol->print_name ());
10539
10540       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10541         {
10542           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10543           /* Check to see if this is a tagged type.  We also need to handle
10544              the case where the type is a reference to a tagged type, but
10545              we have to be careful to exclude pointers to tagged types.
10546              The latter should be shown as usual (as a pointer), whereas
10547              a reference should mostly be transparent to the user.  */
10548           if (ada_is_tagged_type (type, 0)
10549               || (type->code () == TYPE_CODE_REF
10550                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10551             {
10552               /* Tagged types are a little special in the fact that the real
10553                  type is dynamic and can only be determined by inspecting the
10554                  object's tag.  This means that we need to get the object's
10555                  value first (EVAL_NORMAL) and then extract the actual object
10556                  type from its tag.
10557
10558                  Note that we cannot skip the final step where we extract
10559                  the object type from its tag, because the EVAL_NORMAL phase
10560                  results in dynamic components being resolved into fixed ones.
10561                  This can cause problems when trying to print the type
10562                  description of tagged types whose parent has a dynamic size:
10563                  We use the type name of the "_parent" component in order
10564                  to print the name of the ancestor type in the type description.
10565                  If that component had a dynamic size, the resolution into
10566                  a fixed type would result in the loss of that type name,
10567                  thus preventing us from printing the name of the ancestor
10568                  type in the type description.  */
10569               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10570
10571               if (type->code () != TYPE_CODE_REF)
10572                 {
10573                   struct type *actual_type;
10574
10575                   actual_type = type_from_tag (ada_value_tag (arg1));
10576                   if (actual_type == NULL)
10577                     /* If, for some reason, we were unable to determine
10578                        the actual type from the tag, then use the static
10579                        approximation that we just computed as a fallback.
10580                        This can happen if the debugging information is
10581                        incomplete, for instance.  */
10582                     actual_type = type;
10583                   return value_zero (actual_type, not_lval);
10584                 }
10585               else
10586                 {
10587                   /* In the case of a ref, ada_coerce_ref takes care
10588                      of determining the actual type.  But the evaluation
10589                      should return a ref as it should be valid to ask
10590                      for its address; so rebuild a ref after coerce.  */
10591                   arg1 = ada_coerce_ref (arg1);
10592                   return value_ref (arg1, TYPE_CODE_REF);
10593                 }
10594             }
10595
10596           /* Records and unions for which GNAT encodings have been
10597              generated need to be statically fixed as well.
10598              Otherwise, non-static fixing produces a type where
10599              all dynamic properties are removed, which prevents "ptype"
10600              from being able to completely describe the type.
10601              For instance, a case statement in a variant record would be
10602              replaced by the relevant components based on the actual
10603              value of the discriminants.  */
10604           if ((type->code () == TYPE_CODE_STRUCT
10605                && dynamic_template_type (type) != NULL)
10606               || (type->code () == TYPE_CODE_UNION
10607                   && ada_find_parallel_type (type, "___XVU") != NULL))
10608             {
10609               *pos += 4;
10610               return value_zero (to_static_fixed_type (type), not_lval);
10611             }
10612         }
10613
10614       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10615       return ada_to_fixed_value (arg1);
10616
10617     case OP_FUNCALL:
10618       (*pos) += 2;
10619
10620       /* Allocate arg vector, including space for the function to be
10621          called in argvec[0] and a terminating NULL.  */
10622       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10623       argvec = XALLOCAVEC (struct value *, nargs + 2);
10624
10625       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10626           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10627         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10628                exp->elts[pc + 5].symbol->print_name ());
10629       else
10630         {
10631           for (tem = 0; tem <= nargs; tem += 1)
10632             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10633           argvec[tem] = 0;
10634
10635           if (noside == EVAL_SKIP)
10636             goto nosideret;
10637         }
10638
10639       if (ada_is_constrained_packed_array_type
10640           (desc_base_type (value_type (argvec[0]))))
10641         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10642       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10643                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10644         /* This is a packed array that has already been fixed, and
10645            therefore already coerced to a simple array.  Nothing further
10646            to do.  */
10647         ;
10648       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10649         {
10650           /* Make sure we dereference references so that all the code below
10651              feels like it's really handling the referenced value.  Wrapping
10652              types (for alignment) may be there, so make sure we strip them as
10653              well.  */
10654           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10655         }
10656       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10657                && VALUE_LVAL (argvec[0]) == lval_memory)
10658         argvec[0] = value_addr (argvec[0]);
10659
10660       type = ada_check_typedef (value_type (argvec[0]));
10661
10662       /* Ada allows us to implicitly dereference arrays when subscripting
10663          them.  So, if this is an array typedef (encoding use for array
10664          access types encoded as fat pointers), strip it now.  */
10665       if (type->code () == TYPE_CODE_TYPEDEF)
10666         type = ada_typedef_target_type (type);
10667
10668       if (type->code () == TYPE_CODE_PTR)
10669         {
10670           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10671             {
10672             case TYPE_CODE_FUNC:
10673               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10674               break;
10675             case TYPE_CODE_ARRAY:
10676               break;
10677             case TYPE_CODE_STRUCT:
10678               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10679                 argvec[0] = ada_value_ind (argvec[0]);
10680               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10681               break;
10682             default:
10683               error (_("cannot subscript or call something of type `%s'"),
10684                      ada_type_name (value_type (argvec[0])));
10685               break;
10686             }
10687         }
10688
10689       switch (type->code ())
10690         {
10691         case TYPE_CODE_FUNC:
10692           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10693             {
10694               if (TYPE_TARGET_TYPE (type) == NULL)
10695                 error_call_unknown_return_type (NULL);
10696               return allocate_value (TYPE_TARGET_TYPE (type));
10697             }
10698           return call_function_by_hand (argvec[0], NULL,
10699                                         gdb::make_array_view (argvec + 1,
10700                                                               nargs));
10701         case TYPE_CODE_INTERNAL_FUNCTION:
10702           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10703             /* We don't know anything about what the internal
10704                function might return, but we have to return
10705                something.  */
10706             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10707                                not_lval);
10708           else
10709             return call_internal_function (exp->gdbarch, exp->language_defn,
10710                                            argvec[0], nargs, argvec + 1);
10711
10712         case TYPE_CODE_STRUCT:
10713           {
10714             int arity;
10715
10716             arity = ada_array_arity (type);
10717             type = ada_array_element_type (type, nargs);
10718             if (type == NULL)
10719               error (_("cannot subscript or call a record"));
10720             if (arity != nargs)
10721               error (_("wrong number of subscripts; expecting %d"), arity);
10722             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10723               return value_zero (ada_aligned_type (type), lval_memory);
10724             return
10725               unwrap_value (ada_value_subscript
10726                             (argvec[0], nargs, argvec + 1));
10727           }
10728         case TYPE_CODE_ARRAY:
10729           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10730             {
10731               type = ada_array_element_type (type, nargs);
10732               if (type == NULL)
10733                 error (_("element type of array unknown"));
10734               else
10735                 return value_zero (ada_aligned_type (type), lval_memory);
10736             }
10737           return
10738             unwrap_value (ada_value_subscript
10739                           (ada_coerce_to_simple_array (argvec[0]),
10740                            nargs, argvec + 1));
10741         case TYPE_CODE_PTR:     /* Pointer to array */
10742           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10743             {
10744               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10745               type = ada_array_element_type (type, nargs);
10746               if (type == NULL)
10747                 error (_("element type of array unknown"));
10748               else
10749                 return value_zero (ada_aligned_type (type), lval_memory);
10750             }
10751           return
10752             unwrap_value (ada_value_ptr_subscript (argvec[0],
10753                                                    nargs, argvec + 1));
10754
10755         default:
10756           error (_("Attempt to index or call something other than an "
10757                    "array or function"));
10758         }
10759
10760     case TERNOP_SLICE:
10761       {
10762         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10763         struct value *low_bound_val =
10764           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10765         struct value *high_bound_val =
10766           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10767         LONGEST low_bound;
10768         LONGEST high_bound;
10769
10770         low_bound_val = coerce_ref (low_bound_val);
10771         high_bound_val = coerce_ref (high_bound_val);
10772         low_bound = value_as_long (low_bound_val);
10773         high_bound = value_as_long (high_bound_val);
10774
10775         if (noside == EVAL_SKIP)
10776           goto nosideret;
10777
10778         /* If this is a reference to an aligner type, then remove all
10779            the aligners.  */
10780         if (value_type (array)->code () == TYPE_CODE_REF
10781             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10782           TYPE_TARGET_TYPE (value_type (array)) =
10783             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10784
10785         if (ada_is_constrained_packed_array_type (value_type (array)))
10786           error (_("cannot slice a packed array"));
10787
10788         /* If this is a reference to an array or an array lvalue,
10789            convert to a pointer.  */
10790         if (value_type (array)->code () == TYPE_CODE_REF
10791             || (value_type (array)->code () == TYPE_CODE_ARRAY
10792                 && VALUE_LVAL (array) == lval_memory))
10793           array = value_addr (array);
10794
10795         if (noside == EVAL_AVOID_SIDE_EFFECTS
10796             && ada_is_array_descriptor_type (ada_check_typedef
10797                                              (value_type (array))))
10798           return empty_array (ada_type_of_array (array, 0), low_bound,
10799                               high_bound);
10800
10801         array = ada_coerce_to_simple_array_ptr (array);
10802
10803         /* If we have more than one level of pointer indirection,
10804            dereference the value until we get only one level.  */
10805         while (value_type (array)->code () == TYPE_CODE_PTR
10806                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10807                      == TYPE_CODE_PTR))
10808           array = value_ind (array);
10809
10810         /* Make sure we really do have an array type before going further,
10811            to avoid a SEGV when trying to get the index type or the target
10812            type later down the road if the debug info generated by
10813            the compiler is incorrect or incomplete.  */
10814         if (!ada_is_simple_array_type (value_type (array)))
10815           error (_("cannot take slice of non-array"));
10816
10817         if (ada_check_typedef (value_type (array))->code ()
10818             == TYPE_CODE_PTR)
10819           {
10820             struct type *type0 = ada_check_typedef (value_type (array));
10821
10822             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10823               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10824             else
10825               {
10826                 struct type *arr_type0 =
10827                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10828
10829                 return ada_value_slice_from_ptr (array, arr_type0,
10830                                                  longest_to_int (low_bound),
10831                                                  longest_to_int (high_bound));
10832               }
10833           }
10834         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10835           return array;
10836         else if (high_bound < low_bound)
10837           return empty_array (value_type (array), low_bound, high_bound);
10838         else
10839           return ada_value_slice (array, longest_to_int (low_bound),
10840                                   longest_to_int (high_bound));
10841       }
10842
10843     case UNOP_IN_RANGE:
10844       (*pos) += 2;
10845       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10846       type = check_typedef (exp->elts[pc + 1].type);
10847
10848       if (noside == EVAL_SKIP)
10849         goto nosideret;
10850
10851       switch (type->code ())
10852         {
10853         default:
10854           lim_warning (_("Membership test incompletely implemented; "
10855                          "always returns true"));
10856           type = language_bool_type (exp->language_defn, exp->gdbarch);
10857           return value_from_longest (type, (LONGEST) 1);
10858
10859         case TYPE_CODE_RANGE:
10860           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10861           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10862           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10863           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10864           type = language_bool_type (exp->language_defn, exp->gdbarch);
10865           return
10866             value_from_longest (type,
10867                                 (value_less (arg1, arg3)
10868                                  || value_equal (arg1, arg3))
10869                                 && (value_less (arg2, arg1)
10870                                     || value_equal (arg2, arg1)));
10871         }
10872
10873     case BINOP_IN_BOUNDS:
10874       (*pos) += 2;
10875       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10876       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10877
10878       if (noside == EVAL_SKIP)
10879         goto nosideret;
10880
10881       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10882         {
10883           type = language_bool_type (exp->language_defn, exp->gdbarch);
10884           return value_zero (type, not_lval);
10885         }
10886
10887       tem = longest_to_int (exp->elts[pc + 1].longconst);
10888
10889       type = ada_index_type (value_type (arg2), tem, "range");
10890       if (!type)
10891         type = value_type (arg1);
10892
10893       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10894       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10895
10896       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10897       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10898       type = language_bool_type (exp->language_defn, exp->gdbarch);
10899       return
10900         value_from_longest (type,
10901                             (value_less (arg1, arg3)
10902                              || value_equal (arg1, arg3))
10903                             && (value_less (arg2, arg1)
10904                                 || value_equal (arg2, arg1)));
10905
10906     case TERNOP_IN_RANGE:
10907       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10908       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10909       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10910
10911       if (noside == EVAL_SKIP)
10912         goto nosideret;
10913
10914       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10915       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10916       type = language_bool_type (exp->language_defn, exp->gdbarch);
10917       return
10918         value_from_longest (type,
10919                             (value_less (arg1, arg3)
10920                              || value_equal (arg1, arg3))
10921                             && (value_less (arg2, arg1)
10922                                 || value_equal (arg2, arg1)));
10923
10924     case OP_ATR_FIRST:
10925     case OP_ATR_LAST:
10926     case OP_ATR_LENGTH:
10927       {
10928         struct type *type_arg;
10929
10930         if (exp->elts[*pos].opcode == OP_TYPE)
10931           {
10932             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10933             arg1 = NULL;
10934             type_arg = check_typedef (exp->elts[pc + 2].type);
10935           }
10936         else
10937           {
10938             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10939             type_arg = NULL;
10940           }
10941
10942         if (exp->elts[*pos].opcode != OP_LONG)
10943           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10944         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10945         *pos += 4;
10946
10947         if (noside == EVAL_SKIP)
10948           goto nosideret;
10949         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10950           {
10951             if (type_arg == NULL)
10952               type_arg = value_type (arg1);
10953
10954             if (ada_is_constrained_packed_array_type (type_arg))
10955               type_arg = decode_constrained_packed_array_type (type_arg);
10956
10957             if (!discrete_type_p (type_arg))
10958               {
10959                 switch (op)
10960                   {
10961                   default:          /* Should never happen.  */
10962                     error (_("unexpected attribute encountered"));
10963                   case OP_ATR_FIRST:
10964                   case OP_ATR_LAST:
10965                     type_arg = ada_index_type (type_arg, tem,
10966                                                ada_attribute_name (op));
10967                     break;
10968                   case OP_ATR_LENGTH:
10969                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
10970                     break;
10971                   }
10972               }
10973
10974             return value_zero (type_arg, not_lval);
10975           }
10976         else if (type_arg == NULL)
10977           {
10978             arg1 = ada_coerce_ref (arg1);
10979
10980             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10981               arg1 = ada_coerce_to_simple_array (arg1);
10982
10983             if (op == OP_ATR_LENGTH)
10984               type = builtin_type (exp->gdbarch)->builtin_int;
10985             else
10986               {
10987                 type = ada_index_type (value_type (arg1), tem,
10988                                        ada_attribute_name (op));
10989                 if (type == NULL)
10990                   type = builtin_type (exp->gdbarch)->builtin_int;
10991               }
10992
10993             switch (op)
10994               {
10995               default:          /* Should never happen.  */
10996                 error (_("unexpected attribute encountered"));
10997               case OP_ATR_FIRST:
10998                 return value_from_longest
10999                         (type, ada_array_bound (arg1, tem, 0));
11000               case OP_ATR_LAST:
11001                 return value_from_longest
11002                         (type, ada_array_bound (arg1, tem, 1));
11003               case OP_ATR_LENGTH:
11004                 return value_from_longest
11005                         (type, ada_array_length (arg1, tem));
11006               }
11007           }
11008         else if (discrete_type_p (type_arg))
11009           {
11010             struct type *range_type;
11011             const char *name = ada_type_name (type_arg);
11012
11013             range_type = NULL;
11014             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
11015               range_type = to_fixed_range_type (type_arg, NULL);
11016             if (range_type == NULL)
11017               range_type = type_arg;
11018             switch (op)
11019               {
11020               default:
11021                 error (_("unexpected attribute encountered"));
11022               case OP_ATR_FIRST:
11023                 return value_from_longest 
11024                   (range_type, ada_discrete_type_low_bound (range_type));
11025               case OP_ATR_LAST:
11026                 return value_from_longest
11027                   (range_type, ada_discrete_type_high_bound (range_type));
11028               case OP_ATR_LENGTH:
11029                 error (_("the 'length attribute applies only to array types"));
11030               }
11031           }
11032         else if (type_arg->code () == TYPE_CODE_FLT)
11033           error (_("unimplemented type attribute"));
11034         else
11035           {
11036             LONGEST low, high;
11037
11038             if (ada_is_constrained_packed_array_type (type_arg))
11039               type_arg = decode_constrained_packed_array_type (type_arg);
11040
11041             if (op == OP_ATR_LENGTH)
11042               type = builtin_type (exp->gdbarch)->builtin_int;
11043             else
11044               {
11045                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11046                 if (type == NULL)
11047                   type = builtin_type (exp->gdbarch)->builtin_int;
11048               }
11049
11050             switch (op)
11051               {
11052               default:
11053                 error (_("unexpected attribute encountered"));
11054               case OP_ATR_FIRST:
11055                 low = ada_array_bound_from_type (type_arg, tem, 0);
11056                 return value_from_longest (type, low);
11057               case OP_ATR_LAST:
11058                 high = ada_array_bound_from_type (type_arg, tem, 1);
11059                 return value_from_longest (type, high);
11060               case OP_ATR_LENGTH:
11061                 low = ada_array_bound_from_type (type_arg, tem, 0);
11062                 high = ada_array_bound_from_type (type_arg, tem, 1);
11063                 return value_from_longest (type, high - low + 1);
11064               }
11065           }
11066       }
11067
11068     case OP_ATR_TAG:
11069       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11070       if (noside == EVAL_SKIP)
11071         goto nosideret;
11072
11073       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11074         return value_zero (ada_tag_type (arg1), not_lval);
11075
11076       return ada_value_tag (arg1);
11077
11078     case OP_ATR_MIN:
11079     case OP_ATR_MAX:
11080       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11081       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11082       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11083       if (noside == EVAL_SKIP)
11084         goto nosideret;
11085       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11086         return value_zero (value_type (arg1), not_lval);
11087       else
11088         {
11089           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11090           return value_binop (arg1, arg2,
11091                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11092         }
11093
11094     case OP_ATR_MODULUS:
11095       {
11096         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11097
11098         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11099         if (noside == EVAL_SKIP)
11100           goto nosideret;
11101
11102         if (!ada_is_modular_type (type_arg))
11103           error (_("'modulus must be applied to modular type"));
11104
11105         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11106                                    ada_modulus (type_arg));
11107       }
11108
11109
11110     case OP_ATR_POS:
11111       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11112       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11113       if (noside == EVAL_SKIP)
11114         goto nosideret;
11115       type = builtin_type (exp->gdbarch)->builtin_int;
11116       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11117         return value_zero (type, not_lval);
11118       else
11119         return value_pos_atr (type, arg1);
11120
11121     case OP_ATR_SIZE:
11122       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11123       type = value_type (arg1);
11124
11125       /* If the argument is a reference, then dereference its type, since
11126          the user is really asking for the size of the actual object,
11127          not the size of the pointer.  */
11128       if (type->code () == TYPE_CODE_REF)
11129         type = TYPE_TARGET_TYPE (type);
11130
11131       if (noside == EVAL_SKIP)
11132         goto nosideret;
11133       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11134         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11135       else
11136         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11137                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11138
11139     case OP_ATR_VAL:
11140       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11141       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11142       type = exp->elts[pc + 2].type;
11143       if (noside == EVAL_SKIP)
11144         goto nosideret;
11145       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11146         return value_zero (type, not_lval);
11147       else
11148         return value_val_atr (type, arg1);
11149
11150     case BINOP_EXP:
11151       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11152       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11153       if (noside == EVAL_SKIP)
11154         goto nosideret;
11155       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11156         return value_zero (value_type (arg1), not_lval);
11157       else
11158         {
11159           /* For integer exponentiation operations,
11160              only promote the first argument.  */
11161           if (is_integral_type (value_type (arg2)))
11162             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11163           else
11164             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11165
11166           return value_binop (arg1, arg2, op);
11167         }
11168
11169     case UNOP_PLUS:
11170       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11171       if (noside == EVAL_SKIP)
11172         goto nosideret;
11173       else
11174         return arg1;
11175
11176     case UNOP_ABS:
11177       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11178       if (noside == EVAL_SKIP)
11179         goto nosideret;
11180       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11181       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11182         return value_neg (arg1);
11183       else
11184         return arg1;
11185
11186     case UNOP_IND:
11187       preeval_pos = *pos;
11188       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11189       if (noside == EVAL_SKIP)
11190         goto nosideret;
11191       type = ada_check_typedef (value_type (arg1));
11192       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11193         {
11194           if (ada_is_array_descriptor_type (type))
11195             /* GDB allows dereferencing GNAT array descriptors.  */
11196             {
11197               struct type *arrType = ada_type_of_array (arg1, 0);
11198
11199               if (arrType == NULL)
11200                 error (_("Attempt to dereference null array pointer."));
11201               return value_at_lazy (arrType, 0);
11202             }
11203           else if (type->code () == TYPE_CODE_PTR
11204                    || type->code () == TYPE_CODE_REF
11205                    /* In C you can dereference an array to get the 1st elt.  */
11206                    || type->code () == TYPE_CODE_ARRAY)
11207             {
11208             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11209                only be determined by inspecting the object's tag.
11210                This means that we need to evaluate completely the
11211                expression in order to get its type.  */
11212
11213               if ((type->code () == TYPE_CODE_REF
11214                    || type->code () == TYPE_CODE_PTR)
11215                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11216                 {
11217                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11218                                           EVAL_NORMAL);
11219                   type = value_type (ada_value_ind (arg1));
11220                 }
11221               else
11222                 {
11223                   type = to_static_fixed_type
11224                     (ada_aligned_type
11225                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11226                 }
11227               ada_ensure_varsize_limit (type);
11228               return value_zero (type, lval_memory);
11229             }
11230           else if (type->code () == TYPE_CODE_INT)
11231             {
11232               /* GDB allows dereferencing an int.  */
11233               if (expect_type == NULL)
11234                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11235                                    lval_memory);
11236               else
11237                 {
11238                   expect_type = 
11239                     to_static_fixed_type (ada_aligned_type (expect_type));
11240                   return value_zero (expect_type, lval_memory);
11241                 }
11242             }
11243           else
11244             error (_("Attempt to take contents of a non-pointer value."));
11245         }
11246       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11247       type = ada_check_typedef (value_type (arg1));
11248
11249       if (type->code () == TYPE_CODE_INT)
11250           /* GDB allows dereferencing an int.  If we were given
11251              the expect_type, then use that as the target type.
11252              Otherwise, assume that the target type is an int.  */
11253         {
11254           if (expect_type != NULL)
11255             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11256                                               arg1));
11257           else
11258             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11259                                   (CORE_ADDR) value_as_address (arg1));
11260         }
11261
11262       if (ada_is_array_descriptor_type (type))
11263         /* GDB allows dereferencing GNAT array descriptors.  */
11264         return ada_coerce_to_simple_array (arg1);
11265       else
11266         return ada_value_ind (arg1);
11267
11268     case STRUCTOP_STRUCT:
11269       tem = longest_to_int (exp->elts[pc + 1].longconst);
11270       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11271       preeval_pos = *pos;
11272       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11273       if (noside == EVAL_SKIP)
11274         goto nosideret;
11275       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11276         {
11277           struct type *type1 = value_type (arg1);
11278
11279           if (ada_is_tagged_type (type1, 1))
11280             {
11281               type = ada_lookup_struct_elt_type (type1,
11282                                                  &exp->elts[pc + 2].string,
11283                                                  1, 1);
11284
11285               /* If the field is not found, check if it exists in the
11286                  extension of this object's type. This means that we
11287                  need to evaluate completely the expression.  */
11288
11289               if (type == NULL)
11290                 {
11291                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11292                                           EVAL_NORMAL);
11293                   arg1 = ada_value_struct_elt (arg1,
11294                                                &exp->elts[pc + 2].string,
11295                                                0);
11296                   arg1 = unwrap_value (arg1);
11297                   type = value_type (ada_to_fixed_value (arg1));
11298                 }
11299             }
11300           else
11301             type =
11302               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11303                                           0);
11304
11305           return value_zero (ada_aligned_type (type), lval_memory);
11306         }
11307       else
11308         {
11309           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11310           arg1 = unwrap_value (arg1);
11311           return ada_to_fixed_value (arg1);
11312         }
11313
11314     case OP_TYPE:
11315       /* The value is not supposed to be used.  This is here to make it
11316          easier to accommodate expressions that contain types.  */
11317       (*pos) += 2;
11318       if (noside == EVAL_SKIP)
11319         goto nosideret;
11320       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11321         return allocate_value (exp->elts[pc + 1].type);
11322       else
11323         error (_("Attempt to use a type name as an expression"));
11324
11325     case OP_AGGREGATE:
11326     case OP_CHOICES:
11327     case OP_OTHERS:
11328     case OP_DISCRETE_RANGE:
11329     case OP_POSITIONAL:
11330     case OP_NAME:
11331       if (noside == EVAL_NORMAL)
11332         switch (op) 
11333           {
11334           case OP_NAME:
11335             error (_("Undefined name, ambiguous name, or renaming used in "
11336                      "component association: %s."), &exp->elts[pc+2].string);
11337           case OP_AGGREGATE:
11338             error (_("Aggregates only allowed on the right of an assignment"));
11339           default:
11340             internal_error (__FILE__, __LINE__,
11341                             _("aggregate apparently mangled"));
11342           }
11343
11344       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11345       *pos += oplen - 1;
11346       for (tem = 0; tem < nargs; tem += 1) 
11347         ada_evaluate_subexp (NULL, exp, pos, noside);
11348       goto nosideret;
11349     }
11350
11351 nosideret:
11352   return eval_skip_value (exp);
11353 }
11354 \f
11355
11356                                 /* Fixed point */
11357
11358 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11359    type name that encodes the 'small and 'delta information.
11360    Otherwise, return NULL.  */
11361
11362 static const char *
11363 gnat_encoded_fixed_type_info (struct type *type)
11364 {
11365   const char *name = ada_type_name (type);
11366   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11367
11368   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11369     {
11370       const char *tail = strstr (name, "___XF_");
11371
11372       if (tail == NULL)
11373         return NULL;
11374       else
11375         return tail + 5;
11376     }
11377   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11378     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11379   else
11380     return NULL;
11381 }
11382
11383 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11384
11385 int
11386 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11387 {
11388   return gnat_encoded_fixed_type_info (type) != NULL;
11389 }
11390
11391 /* Return non-zero iff TYPE represents a System.Address type.  */
11392
11393 int
11394 ada_is_system_address_type (struct type *type)
11395 {
11396   return (type->name () && strcmp (type->name (), "system__address") == 0);
11397 }
11398
11399 /* Assuming that TYPE is the representation of an Ada fixed-point
11400    type, return the target floating-point type to be used to represent
11401    of this type during internal computation.  */
11402
11403 static struct type *
11404 ada_scaling_type (struct type *type)
11405 {
11406   return builtin_type (get_type_arch (type))->builtin_long_double;
11407 }
11408
11409 /* Assuming that TYPE is the representation of an Ada fixed-point
11410    type, return its delta, or NULL if the type is malformed and the
11411    delta cannot be determined.  */
11412
11413 struct value *
11414 gnat_encoded_fixed_point_delta (struct type *type)
11415 {
11416   const char *encoding = gnat_encoded_fixed_type_info (type);
11417   struct type *scale_type = ada_scaling_type (type);
11418
11419   long long num, den;
11420
11421   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11422     return nullptr;
11423   else
11424     return value_binop (value_from_longest (scale_type, num),
11425                         value_from_longest (scale_type, den), BINOP_DIV);
11426 }
11427
11428 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11429    the scaling factor ('SMALL value) associated with the type.  */
11430
11431 struct value *
11432 ada_scaling_factor (struct type *type)
11433 {
11434   const char *encoding = gnat_encoded_fixed_type_info (type);
11435   struct type *scale_type = ada_scaling_type (type);
11436
11437   long long num0, den0, num1, den1;
11438   int n;
11439
11440   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11441               &num0, &den0, &num1, &den1);
11442
11443   if (n < 2)
11444     return value_from_longest (scale_type, 1);
11445   else if (n == 4)
11446     return value_binop (value_from_longest (scale_type, num1),
11447                         value_from_longest (scale_type, den1), BINOP_DIV);
11448   else
11449     return value_binop (value_from_longest (scale_type, num0),
11450                         value_from_longest (scale_type, den0), BINOP_DIV);
11451 }
11452
11453 \f
11454
11455                                 /* Range types */
11456
11457 /* Scan STR beginning at position K for a discriminant name, and
11458    return the value of that discriminant field of DVAL in *PX.  If
11459    PNEW_K is not null, put the position of the character beyond the
11460    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11461    not alter *PX and *PNEW_K if unsuccessful.  */
11462
11463 static int
11464 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11465                     int *pnew_k)
11466 {
11467   static char *bound_buffer = NULL;
11468   static size_t bound_buffer_len = 0;
11469   const char *pstart, *pend, *bound;
11470   struct value *bound_val;
11471
11472   if (dval == NULL || str == NULL || str[k] == '\0')
11473     return 0;
11474
11475   pstart = str + k;
11476   pend = strstr (pstart, "__");
11477   if (pend == NULL)
11478     {
11479       bound = pstart;
11480       k += strlen (bound);
11481     }
11482   else
11483     {
11484       int len = pend - pstart;
11485
11486       /* Strip __ and beyond.  */
11487       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11488       strncpy (bound_buffer, pstart, len);
11489       bound_buffer[len] = '\0';
11490
11491       bound = bound_buffer;
11492       k = pend - str;
11493     }
11494
11495   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11496   if (bound_val == NULL)
11497     return 0;
11498
11499   *px = value_as_long (bound_val);
11500   if (pnew_k != NULL)
11501     *pnew_k = k;
11502   return 1;
11503 }
11504
11505 /* Value of variable named NAME in the current environment.  If
11506    no such variable found, then if ERR_MSG is null, returns 0, and
11507    otherwise causes an error with message ERR_MSG.  */
11508
11509 static struct value *
11510 get_var_value (const char *name, const char *err_msg)
11511 {
11512   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11513
11514   std::vector<struct block_symbol> syms;
11515   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11516                                              get_selected_block (0),
11517                                              VAR_DOMAIN, &syms, 1);
11518
11519   if (nsyms != 1)
11520     {
11521       if (err_msg == NULL)
11522         return 0;
11523       else
11524         error (("%s"), err_msg);
11525     }
11526
11527   return value_of_variable (syms[0].symbol, syms[0].block);
11528 }
11529
11530 /* Value of integer variable named NAME in the current environment.
11531    If no such variable is found, returns false.  Otherwise, sets VALUE
11532    to the variable's value and returns true.  */
11533
11534 bool
11535 get_int_var_value (const char *name, LONGEST &value)
11536 {
11537   struct value *var_val = get_var_value (name, 0);
11538
11539   if (var_val == 0)
11540     return false;
11541
11542   value = value_as_long (var_val);
11543   return true;
11544 }
11545
11546
11547 /* Return a range type whose base type is that of the range type named
11548    NAME in the current environment, and whose bounds are calculated
11549    from NAME according to the GNAT range encoding conventions.
11550    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11551    corresponding range type from debug information; fall back to using it
11552    if symbol lookup fails.  If a new type must be created, allocate it
11553    like ORIG_TYPE was.  The bounds information, in general, is encoded
11554    in NAME, the base type given in the named range type.  */
11555
11556 static struct type *
11557 to_fixed_range_type (struct type *raw_type, struct value *dval)
11558 {
11559   const char *name;
11560   struct type *base_type;
11561   const char *subtype_info;
11562
11563   gdb_assert (raw_type != NULL);
11564   gdb_assert (raw_type->name () != NULL);
11565
11566   if (raw_type->code () == TYPE_CODE_RANGE)
11567     base_type = TYPE_TARGET_TYPE (raw_type);
11568   else
11569     base_type = raw_type;
11570
11571   name = raw_type->name ();
11572   subtype_info = strstr (name, "___XD");
11573   if (subtype_info == NULL)
11574     {
11575       LONGEST L = ada_discrete_type_low_bound (raw_type);
11576       LONGEST U = ada_discrete_type_high_bound (raw_type);
11577
11578       if (L < INT_MIN || U > INT_MAX)
11579         return raw_type;
11580       else
11581         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11582                                          L, U);
11583     }
11584   else
11585     {
11586       static char *name_buf = NULL;
11587       static size_t name_len = 0;
11588       int prefix_len = subtype_info - name;
11589       LONGEST L, U;
11590       struct type *type;
11591       const char *bounds_str;
11592       int n;
11593
11594       GROW_VECT (name_buf, name_len, prefix_len + 5);
11595       strncpy (name_buf, name, prefix_len);
11596       name_buf[prefix_len] = '\0';
11597
11598       subtype_info += 5;
11599       bounds_str = strchr (subtype_info, '_');
11600       n = 1;
11601
11602       if (*subtype_info == 'L')
11603         {
11604           if (!ada_scan_number (bounds_str, n, &L, &n)
11605               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11606             return raw_type;
11607           if (bounds_str[n] == '_')
11608             n += 2;
11609           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11610             n += 1;
11611           subtype_info += 1;
11612         }
11613       else
11614         {
11615           strcpy (name_buf + prefix_len, "___L");
11616           if (!get_int_var_value (name_buf, L))
11617             {
11618               lim_warning (_("Unknown lower bound, using 1."));
11619               L = 1;
11620             }
11621         }
11622
11623       if (*subtype_info == 'U')
11624         {
11625           if (!ada_scan_number (bounds_str, n, &U, &n)
11626               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11627             return raw_type;
11628         }
11629       else
11630         {
11631           strcpy (name_buf + prefix_len, "___U");
11632           if (!get_int_var_value (name_buf, U))
11633             {
11634               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11635               U = L;
11636             }
11637         }
11638
11639       type = create_static_range_type (alloc_type_copy (raw_type),
11640                                        base_type, L, U);
11641       /* create_static_range_type alters the resulting type's length
11642          to match the size of the base_type, which is not what we want.
11643          Set it back to the original range type's length.  */
11644       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11645       type->set_name (name);
11646       return type;
11647     }
11648 }
11649
11650 /* True iff NAME is the name of a range type.  */
11651
11652 int
11653 ada_is_range_type_name (const char *name)
11654 {
11655   return (name != NULL && strstr (name, "___XD"));
11656 }
11657 \f
11658
11659                                 /* Modular types */
11660
11661 /* True iff TYPE is an Ada modular type.  */
11662
11663 int
11664 ada_is_modular_type (struct type *type)
11665 {
11666   struct type *subranged_type = get_base_type (type);
11667
11668   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11669           && subranged_type->code () == TYPE_CODE_INT
11670           && TYPE_UNSIGNED (subranged_type));
11671 }
11672
11673 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11674
11675 ULONGEST
11676 ada_modulus (struct type *type)
11677 {
11678   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11679 }
11680 \f
11681
11682 /* Ada exception catchpoint support:
11683    ---------------------------------
11684
11685    We support 3 kinds of exception catchpoints:
11686      . catchpoints on Ada exceptions
11687      . catchpoints on unhandled Ada exceptions
11688      . catchpoints on failed assertions
11689
11690    Exceptions raised during failed assertions, or unhandled exceptions
11691    could perfectly be caught with the general catchpoint on Ada exceptions.
11692    However, we can easily differentiate these two special cases, and having
11693    the option to distinguish these two cases from the rest can be useful
11694    to zero-in on certain situations.
11695
11696    Exception catchpoints are a specialized form of breakpoint,
11697    since they rely on inserting breakpoints inside known routines
11698    of the GNAT runtime.  The implementation therefore uses a standard
11699    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11700    of breakpoint_ops.
11701
11702    Support in the runtime for exception catchpoints have been changed
11703    a few times already, and these changes affect the implementation
11704    of these catchpoints.  In order to be able to support several
11705    variants of the runtime, we use a sniffer that will determine
11706    the runtime variant used by the program being debugged.  */
11707
11708 /* Ada's standard exceptions.
11709
11710    The Ada 83 standard also defined Numeric_Error.  But there so many
11711    situations where it was unclear from the Ada 83 Reference Manual
11712    (RM) whether Constraint_Error or Numeric_Error should be raised,
11713    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11714    Interpretation saying that anytime the RM says that Numeric_Error
11715    should be raised, the implementation may raise Constraint_Error.
11716    Ada 95 went one step further and pretty much removed Numeric_Error
11717    from the list of standard exceptions (it made it a renaming of
11718    Constraint_Error, to help preserve compatibility when compiling
11719    an Ada83 compiler). As such, we do not include Numeric_Error from
11720    this list of standard exceptions.  */
11721
11722 static const char *standard_exc[] = {
11723   "constraint_error",
11724   "program_error",
11725   "storage_error",
11726   "tasking_error"
11727 };
11728
11729 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11730
11731 /* A structure that describes how to support exception catchpoints
11732    for a given executable.  */
11733
11734 struct exception_support_info
11735 {
11736    /* The name of the symbol to break on in order to insert
11737       a catchpoint on exceptions.  */
11738    const char *catch_exception_sym;
11739
11740    /* The name of the symbol to break on in order to insert
11741       a catchpoint on unhandled exceptions.  */
11742    const char *catch_exception_unhandled_sym;
11743
11744    /* The name of the symbol to break on in order to insert
11745       a catchpoint on failed assertions.  */
11746    const char *catch_assert_sym;
11747
11748    /* The name of the symbol to break on in order to insert
11749       a catchpoint on exception handling.  */
11750    const char *catch_handlers_sym;
11751
11752    /* Assuming that the inferior just triggered an unhandled exception
11753       catchpoint, this function is responsible for returning the address
11754       in inferior memory where the name of that exception is stored.
11755       Return zero if the address could not be computed.  */
11756    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11757 };
11758
11759 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11760 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11761
11762 /* The following exception support info structure describes how to
11763    implement exception catchpoints with the latest version of the
11764    Ada runtime (as of 2019-08-??).  */
11765
11766 static const struct exception_support_info default_exception_support_info =
11767 {
11768   "__gnat_debug_raise_exception", /* catch_exception_sym */
11769   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11770   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11771   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11772   ada_unhandled_exception_name_addr
11773 };
11774
11775 /* The following exception support info structure describes how to
11776    implement exception catchpoints with an earlier version of the
11777    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11778
11779 static const struct exception_support_info exception_support_info_v0 =
11780 {
11781   "__gnat_debug_raise_exception", /* catch_exception_sym */
11782   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11783   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11784   "__gnat_begin_handler", /* catch_handlers_sym */
11785   ada_unhandled_exception_name_addr
11786 };
11787
11788 /* The following exception support info structure describes how to
11789    implement exception catchpoints with a slightly older version
11790    of the Ada runtime.  */
11791
11792 static const struct exception_support_info exception_support_info_fallback =
11793 {
11794   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11795   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11796   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11797   "__gnat_begin_handler", /* catch_handlers_sym */
11798   ada_unhandled_exception_name_addr_from_raise
11799 };
11800
11801 /* Return nonzero if we can detect the exception support routines
11802    described in EINFO.
11803
11804    This function errors out if an abnormal situation is detected
11805    (for instance, if we find the exception support routines, but
11806    that support is found to be incomplete).  */
11807
11808 static int
11809 ada_has_this_exception_support (const struct exception_support_info *einfo)
11810 {
11811   struct symbol *sym;
11812
11813   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11814      that should be compiled with debugging information.  As a result, we
11815      expect to find that symbol in the symtabs.  */
11816
11817   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11818   if (sym == NULL)
11819     {
11820       /* Perhaps we did not find our symbol because the Ada runtime was
11821          compiled without debugging info, or simply stripped of it.
11822          It happens on some GNU/Linux distributions for instance, where
11823          users have to install a separate debug package in order to get
11824          the runtime's debugging info.  In that situation, let the user
11825          know why we cannot insert an Ada exception catchpoint.
11826
11827          Note: Just for the purpose of inserting our Ada exception
11828          catchpoint, we could rely purely on the associated minimal symbol.
11829          But we would be operating in degraded mode anyway, since we are
11830          still lacking the debugging info needed later on to extract
11831          the name of the exception being raised (this name is printed in
11832          the catchpoint message, and is also used when trying to catch
11833          a specific exception).  We do not handle this case for now.  */
11834       struct bound_minimal_symbol msym
11835         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11836
11837       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11838         error (_("Your Ada runtime appears to be missing some debugging "
11839                  "information.\nCannot insert Ada exception catchpoint "
11840                  "in this configuration."));
11841
11842       return 0;
11843     }
11844
11845   /* Make sure that the symbol we found corresponds to a function.  */
11846
11847   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11848     {
11849       error (_("Symbol \"%s\" is not a function (class = %d)"),
11850              sym->linkage_name (), SYMBOL_CLASS (sym));
11851       return 0;
11852     }
11853
11854   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11855   if (sym == NULL)
11856     {
11857       struct bound_minimal_symbol msym
11858         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11859
11860       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11861         error (_("Your Ada runtime appears to be missing some debugging "
11862                  "information.\nCannot insert Ada exception catchpoint "
11863                  "in this configuration."));
11864
11865       return 0;
11866     }
11867
11868   /* Make sure that the symbol we found corresponds to a function.  */
11869
11870   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11871     {
11872       error (_("Symbol \"%s\" is not a function (class = %d)"),
11873              sym->linkage_name (), SYMBOL_CLASS (sym));
11874       return 0;
11875     }
11876
11877   return 1;
11878 }
11879
11880 /* Inspect the Ada runtime and determine which exception info structure
11881    should be used to provide support for exception catchpoints.
11882
11883    This function will always set the per-inferior exception_info,
11884    or raise an error.  */
11885
11886 static void
11887 ada_exception_support_info_sniffer (void)
11888 {
11889   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11890
11891   /* If the exception info is already known, then no need to recompute it.  */
11892   if (data->exception_info != NULL)
11893     return;
11894
11895   /* Check the latest (default) exception support info.  */
11896   if (ada_has_this_exception_support (&default_exception_support_info))
11897     {
11898       data->exception_info = &default_exception_support_info;
11899       return;
11900     }
11901
11902   /* Try the v0 exception suport info.  */
11903   if (ada_has_this_exception_support (&exception_support_info_v0))
11904     {
11905       data->exception_info = &exception_support_info_v0;
11906       return;
11907     }
11908
11909   /* Try our fallback exception suport info.  */
11910   if (ada_has_this_exception_support (&exception_support_info_fallback))
11911     {
11912       data->exception_info = &exception_support_info_fallback;
11913       return;
11914     }
11915
11916   /* Sometimes, it is normal for us to not be able to find the routine
11917      we are looking for.  This happens when the program is linked with
11918      the shared version of the GNAT runtime, and the program has not been
11919      started yet.  Inform the user of these two possible causes if
11920      applicable.  */
11921
11922   if (ada_update_initial_language (language_unknown) != language_ada)
11923     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11924
11925   /* If the symbol does not exist, then check that the program is
11926      already started, to make sure that shared libraries have been
11927      loaded.  If it is not started, this may mean that the symbol is
11928      in a shared library.  */
11929
11930   if (inferior_ptid.pid () == 0)
11931     error (_("Unable to insert catchpoint. Try to start the program first."));
11932
11933   /* At this point, we know that we are debugging an Ada program and
11934      that the inferior has been started, but we still are not able to
11935      find the run-time symbols.  That can mean that we are in
11936      configurable run time mode, or that a-except as been optimized
11937      out by the linker...  In any case, at this point it is not worth
11938      supporting this feature.  */
11939
11940   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11941 }
11942
11943 /* True iff FRAME is very likely to be that of a function that is
11944    part of the runtime system.  This is all very heuristic, but is
11945    intended to be used as advice as to what frames are uninteresting
11946    to most users.  */
11947
11948 static int
11949 is_known_support_routine (struct frame_info *frame)
11950 {
11951   enum language func_lang;
11952   int i;
11953   const char *fullname;
11954
11955   /* If this code does not have any debugging information (no symtab),
11956      This cannot be any user code.  */
11957
11958   symtab_and_line sal = find_frame_sal (frame);
11959   if (sal.symtab == NULL)
11960     return 1;
11961
11962   /* If there is a symtab, but the associated source file cannot be
11963      located, then assume this is not user code:  Selecting a frame
11964      for which we cannot display the code would not be very helpful
11965      for the user.  This should also take care of case such as VxWorks
11966      where the kernel has some debugging info provided for a few units.  */
11967
11968   fullname = symtab_to_fullname (sal.symtab);
11969   if (access (fullname, R_OK) != 0)
11970     return 1;
11971
11972   /* Check the unit filename against the Ada runtime file naming.
11973      We also check the name of the objfile against the name of some
11974      known system libraries that sometimes come with debugging info
11975      too.  */
11976
11977   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11978     {
11979       re_comp (known_runtime_file_name_patterns[i]);
11980       if (re_exec (lbasename (sal.symtab->filename)))
11981         return 1;
11982       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11983           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11984         return 1;
11985     }
11986
11987   /* Check whether the function is a GNAT-generated entity.  */
11988
11989   gdb::unique_xmalloc_ptr<char> func_name
11990     = find_frame_funname (frame, &func_lang, NULL);
11991   if (func_name == NULL)
11992     return 1;
11993
11994   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11995     {
11996       re_comp (known_auxiliary_function_name_patterns[i]);
11997       if (re_exec (func_name.get ()))
11998         return 1;
11999     }
12000
12001   return 0;
12002 }
12003
12004 /* Find the first frame that contains debugging information and that is not
12005    part of the Ada run-time, starting from FI and moving upward.  */
12006
12007 void
12008 ada_find_printable_frame (struct frame_info *fi)
12009 {
12010   for (; fi != NULL; fi = get_prev_frame (fi))
12011     {
12012       if (!is_known_support_routine (fi))
12013         {
12014           select_frame (fi);
12015           break;
12016         }
12017     }
12018
12019 }
12020
12021 /* Assuming that the inferior just triggered an unhandled exception
12022    catchpoint, return the address in inferior memory where the name
12023    of the exception is stored.
12024    
12025    Return zero if the address could not be computed.  */
12026
12027 static CORE_ADDR
12028 ada_unhandled_exception_name_addr (void)
12029 {
12030   return parse_and_eval_address ("e.full_name");
12031 }
12032
12033 /* Same as ada_unhandled_exception_name_addr, except that this function
12034    should be used when the inferior uses an older version of the runtime,
12035    where the exception name needs to be extracted from a specific frame
12036    several frames up in the callstack.  */
12037
12038 static CORE_ADDR
12039 ada_unhandled_exception_name_addr_from_raise (void)
12040 {
12041   int frame_level;
12042   struct frame_info *fi;
12043   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12044
12045   /* To determine the name of this exception, we need to select
12046      the frame corresponding to RAISE_SYM_NAME.  This frame is
12047      at least 3 levels up, so we simply skip the first 3 frames
12048      without checking the name of their associated function.  */
12049   fi = get_current_frame ();
12050   for (frame_level = 0; frame_level < 3; frame_level += 1)
12051     if (fi != NULL)
12052       fi = get_prev_frame (fi); 
12053
12054   while (fi != NULL)
12055     {
12056       enum language func_lang;
12057
12058       gdb::unique_xmalloc_ptr<char> func_name
12059         = find_frame_funname (fi, &func_lang, NULL);
12060       if (func_name != NULL)
12061         {
12062           if (strcmp (func_name.get (),
12063                       data->exception_info->catch_exception_sym) == 0)
12064             break; /* We found the frame we were looking for...  */
12065         }
12066       fi = get_prev_frame (fi);
12067     }
12068
12069   if (fi == NULL)
12070     return 0;
12071
12072   select_frame (fi);
12073   return parse_and_eval_address ("id.full_name");
12074 }
12075
12076 /* Assuming the inferior just triggered an Ada exception catchpoint
12077    (of any type), return the address in inferior memory where the name
12078    of the exception is stored, if applicable.
12079
12080    Assumes the selected frame is the current frame.
12081
12082    Return zero if the address could not be computed, or if not relevant.  */
12083
12084 static CORE_ADDR
12085 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12086                            struct breakpoint *b)
12087 {
12088   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12089
12090   switch (ex)
12091     {
12092       case ada_catch_exception:
12093         return (parse_and_eval_address ("e.full_name"));
12094         break;
12095
12096       case ada_catch_exception_unhandled:
12097         return data->exception_info->unhandled_exception_name_addr ();
12098         break;
12099
12100       case ada_catch_handlers:
12101         return 0;  /* The runtimes does not provide access to the exception
12102                       name.  */
12103         break;
12104
12105       case ada_catch_assert:
12106         return 0;  /* Exception name is not relevant in this case.  */
12107         break;
12108
12109       default:
12110         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12111         break;
12112     }
12113
12114   return 0; /* Should never be reached.  */
12115 }
12116
12117 /* Assuming the inferior is stopped at an exception catchpoint,
12118    return the message which was associated to the exception, if
12119    available.  Return NULL if the message could not be retrieved.
12120
12121    Note: The exception message can be associated to an exception
12122    either through the use of the Raise_Exception function, or
12123    more simply (Ada 2005 and later), via:
12124
12125        raise Exception_Name with "exception message";
12126
12127    */
12128
12129 static gdb::unique_xmalloc_ptr<char>
12130 ada_exception_message_1 (void)
12131 {
12132   struct value *e_msg_val;
12133   int e_msg_len;
12134
12135   /* For runtimes that support this feature, the exception message
12136      is passed as an unbounded string argument called "message".  */
12137   e_msg_val = parse_and_eval ("message");
12138   if (e_msg_val == NULL)
12139     return NULL; /* Exception message not supported.  */
12140
12141   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12142   gdb_assert (e_msg_val != NULL);
12143   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12144
12145   /* If the message string is empty, then treat it as if there was
12146      no exception message.  */
12147   if (e_msg_len <= 0)
12148     return NULL;
12149
12150   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12151   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12152   e_msg.get ()[e_msg_len] = '\0';
12153
12154   return e_msg;
12155 }
12156
12157 /* Same as ada_exception_message_1, except that all exceptions are
12158    contained here (returning NULL instead).  */
12159
12160 static gdb::unique_xmalloc_ptr<char>
12161 ada_exception_message (void)
12162 {
12163   gdb::unique_xmalloc_ptr<char> e_msg;
12164
12165   try
12166     {
12167       e_msg = ada_exception_message_1 ();
12168     }
12169   catch (const gdb_exception_error &e)
12170     {
12171       e_msg.reset (nullptr);
12172     }
12173
12174   return e_msg;
12175 }
12176
12177 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12178    any error that ada_exception_name_addr_1 might cause to be thrown.
12179    When an error is intercepted, a warning with the error message is printed,
12180    and zero is returned.  */
12181
12182 static CORE_ADDR
12183 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12184                          struct breakpoint *b)
12185 {
12186   CORE_ADDR result = 0;
12187
12188   try
12189     {
12190       result = ada_exception_name_addr_1 (ex, b);
12191     }
12192
12193   catch (const gdb_exception_error &e)
12194     {
12195       warning (_("failed to get exception name: %s"), e.what ());
12196       return 0;
12197     }
12198
12199   return result;
12200 }
12201
12202 static std::string ada_exception_catchpoint_cond_string
12203   (const char *excep_string,
12204    enum ada_exception_catchpoint_kind ex);
12205
12206 /* Ada catchpoints.
12207
12208    In the case of catchpoints on Ada exceptions, the catchpoint will
12209    stop the target on every exception the program throws.  When a user
12210    specifies the name of a specific exception, we translate this
12211    request into a condition expression (in text form), and then parse
12212    it into an expression stored in each of the catchpoint's locations.
12213    We then use this condition to check whether the exception that was
12214    raised is the one the user is interested in.  If not, then the
12215    target is resumed again.  We store the name of the requested
12216    exception, in order to be able to re-set the condition expression
12217    when symbols change.  */
12218
12219 /* An instance of this type is used to represent an Ada catchpoint
12220    breakpoint location.  */
12221
12222 class ada_catchpoint_location : public bp_location
12223 {
12224 public:
12225   ada_catchpoint_location (breakpoint *owner)
12226     : bp_location (owner, bp_loc_software_breakpoint)
12227   {}
12228
12229   /* The condition that checks whether the exception that was raised
12230      is the specific exception the user specified on catchpoint
12231      creation.  */
12232   expression_up excep_cond_expr;
12233 };
12234
12235 /* An instance of this type is used to represent an Ada catchpoint.  */
12236
12237 struct ada_catchpoint : public breakpoint
12238 {
12239   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12240     : m_kind (kind)
12241   {
12242   }
12243
12244   /* The name of the specific exception the user specified.  */
12245   std::string excep_string;
12246
12247   /* What kind of catchpoint this is.  */
12248   enum ada_exception_catchpoint_kind m_kind;
12249 };
12250
12251 /* Parse the exception condition string in the context of each of the
12252    catchpoint's locations, and store them for later evaluation.  */
12253
12254 static void
12255 create_excep_cond_exprs (struct ada_catchpoint *c,
12256                          enum ada_exception_catchpoint_kind ex)
12257 {
12258   struct bp_location *bl;
12259
12260   /* Nothing to do if there's no specific exception to catch.  */
12261   if (c->excep_string.empty ())
12262     return;
12263
12264   /* Same if there are no locations... */
12265   if (c->loc == NULL)
12266     return;
12267
12268   /* Compute the condition expression in text form, from the specific
12269      expection we want to catch.  */
12270   std::string cond_string
12271     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12272
12273   /* Iterate over all the catchpoint's locations, and parse an
12274      expression for each.  */
12275   for (bl = c->loc; bl != NULL; bl = bl->next)
12276     {
12277       struct ada_catchpoint_location *ada_loc
12278         = (struct ada_catchpoint_location *) bl;
12279       expression_up exp;
12280
12281       if (!bl->shlib_disabled)
12282         {
12283           const char *s;
12284
12285           s = cond_string.c_str ();
12286           try
12287             {
12288               exp = parse_exp_1 (&s, bl->address,
12289                                  block_for_pc (bl->address),
12290                                  0);
12291             }
12292           catch (const gdb_exception_error &e)
12293             {
12294               warning (_("failed to reevaluate internal exception condition "
12295                          "for catchpoint %d: %s"),
12296                        c->number, e.what ());
12297             }
12298         }
12299
12300       ada_loc->excep_cond_expr = std::move (exp);
12301     }
12302 }
12303
12304 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12305    structure for all exception catchpoint kinds.  */
12306
12307 static struct bp_location *
12308 allocate_location_exception (struct breakpoint *self)
12309 {
12310   return new ada_catchpoint_location (self);
12311 }
12312
12313 /* Implement the RE_SET method in the breakpoint_ops structure for all
12314    exception catchpoint kinds.  */
12315
12316 static void
12317 re_set_exception (struct breakpoint *b)
12318 {
12319   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12320
12321   /* Call the base class's method.  This updates the catchpoint's
12322      locations.  */
12323   bkpt_breakpoint_ops.re_set (b);
12324
12325   /* Reparse the exception conditional expressions.  One for each
12326      location.  */
12327   create_excep_cond_exprs (c, c->m_kind);
12328 }
12329
12330 /* Returns true if we should stop for this breakpoint hit.  If the
12331    user specified a specific exception, we only want to cause a stop
12332    if the program thrown that exception.  */
12333
12334 static int
12335 should_stop_exception (const struct bp_location *bl)
12336 {
12337   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12338   const struct ada_catchpoint_location *ada_loc
12339     = (const struct ada_catchpoint_location *) bl;
12340   int stop;
12341
12342   struct internalvar *var = lookup_internalvar ("_ada_exception");
12343   if (c->m_kind == ada_catch_assert)
12344     clear_internalvar (var);
12345   else
12346     {
12347       try
12348         {
12349           const char *expr;
12350
12351           if (c->m_kind == ada_catch_handlers)
12352             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12353                     ".all.occurrence.id");
12354           else
12355             expr = "e";
12356
12357           struct value *exc = parse_and_eval (expr);
12358           set_internalvar (var, exc);
12359         }
12360       catch (const gdb_exception_error &ex)
12361         {
12362           clear_internalvar (var);
12363         }
12364     }
12365
12366   /* With no specific exception, should always stop.  */
12367   if (c->excep_string.empty ())
12368     return 1;
12369
12370   if (ada_loc->excep_cond_expr == NULL)
12371     {
12372       /* We will have a NULL expression if back when we were creating
12373          the expressions, this location's had failed to parse.  */
12374       return 1;
12375     }
12376
12377   stop = 1;
12378   try
12379     {
12380       struct value *mark;
12381
12382       mark = value_mark ();
12383       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12384       value_free_to_mark (mark);
12385     }
12386   catch (const gdb_exception &ex)
12387     {
12388       exception_fprintf (gdb_stderr, ex,
12389                          _("Error in testing exception condition:\n"));
12390     }
12391
12392   return stop;
12393 }
12394
12395 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12396    for all exception catchpoint kinds.  */
12397
12398 static void
12399 check_status_exception (bpstat bs)
12400 {
12401   bs->stop = should_stop_exception (bs->bp_location_at);
12402 }
12403
12404 /* Implement the PRINT_IT method in the breakpoint_ops structure
12405    for all exception catchpoint kinds.  */
12406
12407 static enum print_stop_action
12408 print_it_exception (bpstat bs)
12409 {
12410   struct ui_out *uiout = current_uiout;
12411   struct breakpoint *b = bs->breakpoint_at;
12412
12413   annotate_catchpoint (b->number);
12414
12415   if (uiout->is_mi_like_p ())
12416     {
12417       uiout->field_string ("reason",
12418                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12419       uiout->field_string ("disp", bpdisp_text (b->disposition));
12420     }
12421
12422   uiout->text (b->disposition == disp_del
12423                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12424   uiout->field_signed ("bkptno", b->number);
12425   uiout->text (", ");
12426
12427   /* ada_exception_name_addr relies on the selected frame being the
12428      current frame.  Need to do this here because this function may be
12429      called more than once when printing a stop, and below, we'll
12430      select the first frame past the Ada run-time (see
12431      ada_find_printable_frame).  */
12432   select_frame (get_current_frame ());
12433
12434   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12435   switch (c->m_kind)
12436     {
12437       case ada_catch_exception:
12438       case ada_catch_exception_unhandled:
12439       case ada_catch_handlers:
12440         {
12441           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12442           char exception_name[256];
12443
12444           if (addr != 0)
12445             {
12446               read_memory (addr, (gdb_byte *) exception_name,
12447                            sizeof (exception_name) - 1);
12448               exception_name [sizeof (exception_name) - 1] = '\0';
12449             }
12450           else
12451             {
12452               /* For some reason, we were unable to read the exception
12453                  name.  This could happen if the Runtime was compiled
12454                  without debugging info, for instance.  In that case,
12455                  just replace the exception name by the generic string
12456                  "exception" - it will read as "an exception" in the
12457                  notification we are about to print.  */
12458               memcpy (exception_name, "exception", sizeof ("exception"));
12459             }
12460           /* In the case of unhandled exception breakpoints, we print
12461              the exception name as "unhandled EXCEPTION_NAME", to make
12462              it clearer to the user which kind of catchpoint just got
12463              hit.  We used ui_out_text to make sure that this extra
12464              info does not pollute the exception name in the MI case.  */
12465           if (c->m_kind == ada_catch_exception_unhandled)
12466             uiout->text ("unhandled ");
12467           uiout->field_string ("exception-name", exception_name);
12468         }
12469         break;
12470       case ada_catch_assert:
12471         /* In this case, the name of the exception is not really
12472            important.  Just print "failed assertion" to make it clearer
12473            that his program just hit an assertion-failure catchpoint.
12474            We used ui_out_text because this info does not belong in
12475            the MI output.  */
12476         uiout->text ("failed assertion");
12477         break;
12478     }
12479
12480   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12481   if (exception_message != NULL)
12482     {
12483       uiout->text (" (");
12484       uiout->field_string ("exception-message", exception_message.get ());
12485       uiout->text (")");
12486     }
12487
12488   uiout->text (" at ");
12489   ada_find_printable_frame (get_current_frame ());
12490
12491   return PRINT_SRC_AND_LOC;
12492 }
12493
12494 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12495    for all exception catchpoint kinds.  */
12496
12497 static void
12498 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12499
12500   struct ui_out *uiout = current_uiout;
12501   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12502   struct value_print_options opts;
12503
12504   get_user_print_options (&opts);
12505
12506   if (opts.addressprint)
12507     uiout->field_skip ("addr");
12508
12509   annotate_field (5);
12510   switch (c->m_kind)
12511     {
12512       case ada_catch_exception:
12513         if (!c->excep_string.empty ())
12514           {
12515             std::string msg = string_printf (_("`%s' Ada exception"),
12516                                              c->excep_string.c_str ());
12517
12518             uiout->field_string ("what", msg);
12519           }
12520         else
12521           uiout->field_string ("what", "all Ada exceptions");
12522         
12523         break;
12524
12525       case ada_catch_exception_unhandled:
12526         uiout->field_string ("what", "unhandled Ada exceptions");
12527         break;
12528       
12529       case ada_catch_handlers:
12530         if (!c->excep_string.empty ())
12531           {
12532             uiout->field_fmt ("what",
12533                               _("`%s' Ada exception handlers"),
12534                               c->excep_string.c_str ());
12535           }
12536         else
12537           uiout->field_string ("what", "all Ada exceptions handlers");
12538         break;
12539
12540       case ada_catch_assert:
12541         uiout->field_string ("what", "failed Ada assertions");
12542         break;
12543
12544       default:
12545         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12546         break;
12547     }
12548 }
12549
12550 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12551    for all exception catchpoint kinds.  */
12552
12553 static void
12554 print_mention_exception (struct breakpoint *b)
12555 {
12556   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12557   struct ui_out *uiout = current_uiout;
12558
12559   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12560                                                  : _("Catchpoint "));
12561   uiout->field_signed ("bkptno", b->number);
12562   uiout->text (": ");
12563
12564   switch (c->m_kind)
12565     {
12566       case ada_catch_exception:
12567         if (!c->excep_string.empty ())
12568           {
12569             std::string info = string_printf (_("`%s' Ada exception"),
12570                                               c->excep_string.c_str ());
12571             uiout->text (info.c_str ());
12572           }
12573         else
12574           uiout->text (_("all Ada exceptions"));
12575         break;
12576
12577       case ada_catch_exception_unhandled:
12578         uiout->text (_("unhandled Ada exceptions"));
12579         break;
12580
12581       case ada_catch_handlers:
12582         if (!c->excep_string.empty ())
12583           {
12584             std::string info
12585               = string_printf (_("`%s' Ada exception handlers"),
12586                                c->excep_string.c_str ());
12587             uiout->text (info.c_str ());
12588           }
12589         else
12590           uiout->text (_("all Ada exceptions handlers"));
12591         break;
12592
12593       case ada_catch_assert:
12594         uiout->text (_("failed Ada assertions"));
12595         break;
12596
12597       default:
12598         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12599         break;
12600     }
12601 }
12602
12603 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12604    for all exception catchpoint kinds.  */
12605
12606 static void
12607 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12608 {
12609   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12610
12611   switch (c->m_kind)
12612     {
12613       case ada_catch_exception:
12614         fprintf_filtered (fp, "catch exception");
12615         if (!c->excep_string.empty ())
12616           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12617         break;
12618
12619       case ada_catch_exception_unhandled:
12620         fprintf_filtered (fp, "catch exception unhandled");
12621         break;
12622
12623       case ada_catch_handlers:
12624         fprintf_filtered (fp, "catch handlers");
12625         break;
12626
12627       case ada_catch_assert:
12628         fprintf_filtered (fp, "catch assert");
12629         break;
12630
12631       default:
12632         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12633     }
12634   print_recreate_thread (b, fp);
12635 }
12636
12637 /* Virtual tables for various breakpoint types.  */
12638 static struct breakpoint_ops catch_exception_breakpoint_ops;
12639 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12640 static struct breakpoint_ops catch_assert_breakpoint_ops;
12641 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12642
12643 /* See ada-lang.h.  */
12644
12645 bool
12646 is_ada_exception_catchpoint (breakpoint *bp)
12647 {
12648   return (bp->ops == &catch_exception_breakpoint_ops
12649           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12650           || bp->ops == &catch_assert_breakpoint_ops
12651           || bp->ops == &catch_handlers_breakpoint_ops);
12652 }
12653
12654 /* Split the arguments specified in a "catch exception" command.  
12655    Set EX to the appropriate catchpoint type.
12656    Set EXCEP_STRING to the name of the specific exception if
12657    specified by the user.
12658    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12659    "catch handlers" command.  False otherwise.
12660    If a condition is found at the end of the arguments, the condition
12661    expression is stored in COND_STRING (memory must be deallocated
12662    after use).  Otherwise COND_STRING is set to NULL.  */
12663
12664 static void
12665 catch_ada_exception_command_split (const char *args,
12666                                    bool is_catch_handlers_cmd,
12667                                    enum ada_exception_catchpoint_kind *ex,
12668                                    std::string *excep_string,
12669                                    std::string *cond_string)
12670 {
12671   std::string exception_name;
12672
12673   exception_name = extract_arg (&args);
12674   if (exception_name == "if")
12675     {
12676       /* This is not an exception name; this is the start of a condition
12677          expression for a catchpoint on all exceptions.  So, "un-get"
12678          this token, and set exception_name to NULL.  */
12679       exception_name.clear ();
12680       args -= 2;
12681     }
12682
12683   /* Check to see if we have a condition.  */
12684
12685   args = skip_spaces (args);
12686   if (startswith (args, "if")
12687       && (isspace (args[2]) || args[2] == '\0'))
12688     {
12689       args += 2;
12690       args = skip_spaces (args);
12691
12692       if (args[0] == '\0')
12693         error (_("Condition missing after `if' keyword"));
12694       *cond_string = args;
12695
12696       args += strlen (args);
12697     }
12698
12699   /* Check that we do not have any more arguments.  Anything else
12700      is unexpected.  */
12701
12702   if (args[0] != '\0')
12703     error (_("Junk at end of expression"));
12704
12705   if (is_catch_handlers_cmd)
12706     {
12707       /* Catch handling of exceptions.  */
12708       *ex = ada_catch_handlers;
12709       *excep_string = exception_name;
12710     }
12711   else if (exception_name.empty ())
12712     {
12713       /* Catch all exceptions.  */
12714       *ex = ada_catch_exception;
12715       excep_string->clear ();
12716     }
12717   else if (exception_name == "unhandled")
12718     {
12719       /* Catch unhandled exceptions.  */
12720       *ex = ada_catch_exception_unhandled;
12721       excep_string->clear ();
12722     }
12723   else
12724     {
12725       /* Catch a specific exception.  */
12726       *ex = ada_catch_exception;
12727       *excep_string = exception_name;
12728     }
12729 }
12730
12731 /* Return the name of the symbol on which we should break in order to
12732    implement a catchpoint of the EX kind.  */
12733
12734 static const char *
12735 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12736 {
12737   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12738
12739   gdb_assert (data->exception_info != NULL);
12740
12741   switch (ex)
12742     {
12743       case ada_catch_exception:
12744         return (data->exception_info->catch_exception_sym);
12745         break;
12746       case ada_catch_exception_unhandled:
12747         return (data->exception_info->catch_exception_unhandled_sym);
12748         break;
12749       case ada_catch_assert:
12750         return (data->exception_info->catch_assert_sym);
12751         break;
12752       case ada_catch_handlers:
12753         return (data->exception_info->catch_handlers_sym);
12754         break;
12755       default:
12756         internal_error (__FILE__, __LINE__,
12757                         _("unexpected catchpoint kind (%d)"), ex);
12758     }
12759 }
12760
12761 /* Return the breakpoint ops "virtual table" used for catchpoints
12762    of the EX kind.  */
12763
12764 static const struct breakpoint_ops *
12765 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12766 {
12767   switch (ex)
12768     {
12769       case ada_catch_exception:
12770         return (&catch_exception_breakpoint_ops);
12771         break;
12772       case ada_catch_exception_unhandled:
12773         return (&catch_exception_unhandled_breakpoint_ops);
12774         break;
12775       case ada_catch_assert:
12776         return (&catch_assert_breakpoint_ops);
12777         break;
12778       case ada_catch_handlers:
12779         return (&catch_handlers_breakpoint_ops);
12780         break;
12781       default:
12782         internal_error (__FILE__, __LINE__,
12783                         _("unexpected catchpoint kind (%d)"), ex);
12784     }
12785 }
12786
12787 /* Return the condition that will be used to match the current exception
12788    being raised with the exception that the user wants to catch.  This
12789    assumes that this condition is used when the inferior just triggered
12790    an exception catchpoint.
12791    EX: the type of catchpoints used for catching Ada exceptions.  */
12792
12793 static std::string
12794 ada_exception_catchpoint_cond_string (const char *excep_string,
12795                                       enum ada_exception_catchpoint_kind ex)
12796 {
12797   int i;
12798   bool is_standard_exc = false;
12799   std::string result;
12800
12801   if (ex == ada_catch_handlers)
12802     {
12803       /* For exception handlers catchpoints, the condition string does
12804          not use the same parameter as for the other exceptions.  */
12805       result = ("long_integer (GNAT_GCC_exception_Access"
12806                 "(gcc_exception).all.occurrence.id)");
12807     }
12808   else
12809     result = "long_integer (e)";
12810
12811   /* The standard exceptions are a special case.  They are defined in
12812      runtime units that have been compiled without debugging info; if
12813      EXCEP_STRING is the not-fully-qualified name of a standard
12814      exception (e.g. "constraint_error") then, during the evaluation
12815      of the condition expression, the symbol lookup on this name would
12816      *not* return this standard exception.  The catchpoint condition
12817      may then be set only on user-defined exceptions which have the
12818      same not-fully-qualified name (e.g. my_package.constraint_error).
12819
12820      To avoid this unexcepted behavior, these standard exceptions are
12821      systematically prefixed by "standard".  This means that "catch
12822      exception constraint_error" is rewritten into "catch exception
12823      standard.constraint_error".
12824
12825      If an exception named constraint_error is defined in another package of
12826      the inferior program, then the only way to specify this exception as a
12827      breakpoint condition is to use its fully-qualified named:
12828      e.g. my_package.constraint_error.  */
12829
12830   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12831     {
12832       if (strcmp (standard_exc [i], excep_string) == 0)
12833         {
12834           is_standard_exc = true;
12835           break;
12836         }
12837     }
12838
12839   result += " = ";
12840
12841   if (is_standard_exc)
12842     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12843   else
12844     string_appendf (result, "long_integer (&%s)", excep_string);
12845
12846   return result;
12847 }
12848
12849 /* Return the symtab_and_line that should be used to insert an exception
12850    catchpoint of the TYPE kind.
12851
12852    ADDR_STRING returns the name of the function where the real
12853    breakpoint that implements the catchpoints is set, depending on the
12854    type of catchpoint we need to create.  */
12855
12856 static struct symtab_and_line
12857 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12858                    std::string *addr_string, const struct breakpoint_ops **ops)
12859 {
12860   const char *sym_name;
12861   struct symbol *sym;
12862
12863   /* First, find out which exception support info to use.  */
12864   ada_exception_support_info_sniffer ();
12865
12866   /* Then lookup the function on which we will break in order to catch
12867      the Ada exceptions requested by the user.  */
12868   sym_name = ada_exception_sym_name (ex);
12869   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12870
12871   if (sym == NULL)
12872     error (_("Catchpoint symbol not found: %s"), sym_name);
12873
12874   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12875     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12876
12877   /* Set ADDR_STRING.  */
12878   *addr_string = sym_name;
12879
12880   /* Set OPS.  */
12881   *ops = ada_exception_breakpoint_ops (ex);
12882
12883   return find_function_start_sal (sym, 1);
12884 }
12885
12886 /* Create an Ada exception catchpoint.
12887
12888    EX_KIND is the kind of exception catchpoint to be created.
12889
12890    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12891    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12892    of the exception to which this catchpoint applies.
12893
12894    COND_STRING, if not empty, is the catchpoint condition.
12895
12896    TEMPFLAG, if nonzero, means that the underlying breakpoint
12897    should be temporary.
12898
12899    FROM_TTY is the usual argument passed to all commands implementations.  */
12900
12901 void
12902 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12903                                  enum ada_exception_catchpoint_kind ex_kind,
12904                                  const std::string &excep_string,
12905                                  const std::string &cond_string,
12906                                  int tempflag,
12907                                  int disabled,
12908                                  int from_tty)
12909 {
12910   std::string addr_string;
12911   const struct breakpoint_ops *ops = NULL;
12912   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12913
12914   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12915   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12916                                  ops, tempflag, disabled, from_tty);
12917   c->excep_string = excep_string;
12918   create_excep_cond_exprs (c.get (), ex_kind);
12919   if (!cond_string.empty ())
12920     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12921   install_breakpoint (0, std::move (c), 1);
12922 }
12923
12924 /* Implement the "catch exception" command.  */
12925
12926 static void
12927 catch_ada_exception_command (const char *arg_entry, int from_tty,
12928                              struct cmd_list_element *command)
12929 {
12930   const char *arg = arg_entry;
12931   struct gdbarch *gdbarch = get_current_arch ();
12932   int tempflag;
12933   enum ada_exception_catchpoint_kind ex_kind;
12934   std::string excep_string;
12935   std::string cond_string;
12936
12937   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12938
12939   if (!arg)
12940     arg = "";
12941   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12942                                      &cond_string);
12943   create_ada_exception_catchpoint (gdbarch, ex_kind,
12944                                    excep_string, cond_string,
12945                                    tempflag, 1 /* enabled */,
12946                                    from_tty);
12947 }
12948
12949 /* Implement the "catch handlers" command.  */
12950
12951 static void
12952 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12953                             struct cmd_list_element *command)
12954 {
12955   const char *arg = arg_entry;
12956   struct gdbarch *gdbarch = get_current_arch ();
12957   int tempflag;
12958   enum ada_exception_catchpoint_kind ex_kind;
12959   std::string excep_string;
12960   std::string cond_string;
12961
12962   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12963
12964   if (!arg)
12965     arg = "";
12966   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12967                                      &cond_string);
12968   create_ada_exception_catchpoint (gdbarch, ex_kind,
12969                                    excep_string, cond_string,
12970                                    tempflag, 1 /* enabled */,
12971                                    from_tty);
12972 }
12973
12974 /* Completion function for the Ada "catch" commands.  */
12975
12976 static void
12977 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12978                      const char *text, const char *word)
12979 {
12980   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12981
12982   for (const ada_exc_info &info : exceptions)
12983     {
12984       if (startswith (info.name, word))
12985         tracker.add_completion (make_unique_xstrdup (info.name));
12986     }
12987 }
12988
12989 /* Split the arguments specified in a "catch assert" command.
12990
12991    ARGS contains the command's arguments (or the empty string if
12992    no arguments were passed).
12993
12994    If ARGS contains a condition, set COND_STRING to that condition
12995    (the memory needs to be deallocated after use).  */
12996
12997 static void
12998 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12999 {
13000   args = skip_spaces (args);
13001
13002   /* Check whether a condition was provided.  */
13003   if (startswith (args, "if")
13004       && (isspace (args[2]) || args[2] == '\0'))
13005     {
13006       args += 2;
13007       args = skip_spaces (args);
13008       if (args[0] == '\0')
13009         error (_("condition missing after `if' keyword"));
13010       cond_string.assign (args);
13011     }
13012
13013   /* Otherwise, there should be no other argument at the end of
13014      the command.  */
13015   else if (args[0] != '\0')
13016     error (_("Junk at end of arguments."));
13017 }
13018
13019 /* Implement the "catch assert" command.  */
13020
13021 static void
13022 catch_assert_command (const char *arg_entry, int from_tty,
13023                       struct cmd_list_element *command)
13024 {
13025   const char *arg = arg_entry;
13026   struct gdbarch *gdbarch = get_current_arch ();
13027   int tempflag;
13028   std::string cond_string;
13029
13030   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13031
13032   if (!arg)
13033     arg = "";
13034   catch_ada_assert_command_split (arg, cond_string);
13035   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13036                                    "", cond_string,
13037                                    tempflag, 1 /* enabled */,
13038                                    from_tty);
13039 }
13040
13041 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13042
13043 static int
13044 ada_is_exception_sym (struct symbol *sym)
13045 {
13046   const char *type_name = SYMBOL_TYPE (sym)->name ();
13047
13048   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13049           && SYMBOL_CLASS (sym) != LOC_BLOCK
13050           && SYMBOL_CLASS (sym) != LOC_CONST
13051           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13052           && type_name != NULL && strcmp (type_name, "exception") == 0);
13053 }
13054
13055 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13056    Ada exception object.  This matches all exceptions except the ones
13057    defined by the Ada language.  */
13058
13059 static int
13060 ada_is_non_standard_exception_sym (struct symbol *sym)
13061 {
13062   int i;
13063
13064   if (!ada_is_exception_sym (sym))
13065     return 0;
13066
13067   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13068     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
13069       return 0;  /* A standard exception.  */
13070
13071   /* Numeric_Error is also a standard exception, so exclude it.
13072      See the STANDARD_EXC description for more details as to why
13073      this exception is not listed in that array.  */
13074   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
13075     return 0;
13076
13077   return 1;
13078 }
13079
13080 /* A helper function for std::sort, comparing two struct ada_exc_info
13081    objects.
13082
13083    The comparison is determined first by exception name, and then
13084    by exception address.  */
13085
13086 bool
13087 ada_exc_info::operator< (const ada_exc_info &other) const
13088 {
13089   int result;
13090
13091   result = strcmp (name, other.name);
13092   if (result < 0)
13093     return true;
13094   if (result == 0 && addr < other.addr)
13095     return true;
13096   return false;
13097 }
13098
13099 bool
13100 ada_exc_info::operator== (const ada_exc_info &other) const
13101 {
13102   return addr == other.addr && strcmp (name, other.name) == 0;
13103 }
13104
13105 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13106    routine, but keeping the first SKIP elements untouched.
13107
13108    All duplicates are also removed.  */
13109
13110 static void
13111 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13112                                       int skip)
13113 {
13114   std::sort (exceptions->begin () + skip, exceptions->end ());
13115   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13116                      exceptions->end ());
13117 }
13118
13119 /* Add all exceptions defined by the Ada standard whose name match
13120    a regular expression.
13121
13122    If PREG is not NULL, then this regexp_t object is used to
13123    perform the symbol name matching.  Otherwise, no name-based
13124    filtering is performed.
13125
13126    EXCEPTIONS is a vector of exceptions to which matching exceptions
13127    gets pushed.  */
13128
13129 static void
13130 ada_add_standard_exceptions (compiled_regex *preg,
13131                              std::vector<ada_exc_info> *exceptions)
13132 {
13133   int i;
13134
13135   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13136     {
13137       if (preg == NULL
13138           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13139         {
13140           struct bound_minimal_symbol msymbol
13141             = ada_lookup_simple_minsym (standard_exc[i]);
13142
13143           if (msymbol.minsym != NULL)
13144             {
13145               struct ada_exc_info info
13146                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13147
13148               exceptions->push_back (info);
13149             }
13150         }
13151     }
13152 }
13153
13154 /* Add all Ada exceptions defined locally and accessible from the given
13155    FRAME.
13156
13157    If PREG is not NULL, then this regexp_t object is used to
13158    perform the symbol name matching.  Otherwise, no name-based
13159    filtering is performed.
13160
13161    EXCEPTIONS is a vector of exceptions to which matching exceptions
13162    gets pushed.  */
13163
13164 static void
13165 ada_add_exceptions_from_frame (compiled_regex *preg,
13166                                struct frame_info *frame,
13167                                std::vector<ada_exc_info> *exceptions)
13168 {
13169   const struct block *block = get_frame_block (frame, 0);
13170
13171   while (block != 0)
13172     {
13173       struct block_iterator iter;
13174       struct symbol *sym;
13175
13176       ALL_BLOCK_SYMBOLS (block, iter, sym)
13177         {
13178           switch (SYMBOL_CLASS (sym))
13179             {
13180             case LOC_TYPEDEF:
13181             case LOC_BLOCK:
13182             case LOC_CONST:
13183               break;
13184             default:
13185               if (ada_is_exception_sym (sym))
13186                 {
13187                   struct ada_exc_info info = {sym->print_name (),
13188                                               SYMBOL_VALUE_ADDRESS (sym)};
13189
13190                   exceptions->push_back (info);
13191                 }
13192             }
13193         }
13194       if (BLOCK_FUNCTION (block) != NULL)
13195         break;
13196       block = BLOCK_SUPERBLOCK (block);
13197     }
13198 }
13199
13200 /* Return true if NAME matches PREG or if PREG is NULL.  */
13201
13202 static bool
13203 name_matches_regex (const char *name, compiled_regex *preg)
13204 {
13205   return (preg == NULL
13206           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
13207 }
13208
13209 /* Add all exceptions defined globally whose name name match
13210    a regular expression, excluding standard exceptions.
13211
13212    The reason we exclude standard exceptions is that they need
13213    to be handled separately: Standard exceptions are defined inside
13214    a runtime unit which is normally not compiled with debugging info,
13215    and thus usually do not show up in our symbol search.  However,
13216    if the unit was in fact built with debugging info, we need to
13217    exclude them because they would duplicate the entry we found
13218    during the special loop that specifically searches for those
13219    standard exceptions.
13220
13221    If PREG is not NULL, then this regexp_t object is used to
13222    perform the symbol name matching.  Otherwise, no name-based
13223    filtering is performed.
13224
13225    EXCEPTIONS is a vector of exceptions to which matching exceptions
13226    gets pushed.  */
13227
13228 static void
13229 ada_add_global_exceptions (compiled_regex *preg,
13230                            std::vector<ada_exc_info> *exceptions)
13231 {
13232   /* In Ada, the symbol "search name" is a linkage name, whereas the
13233      regular expression used to do the matching refers to the natural
13234      name.  So match against the decoded name.  */
13235   expand_symtabs_matching (NULL,
13236                            lookup_name_info::match_any (),
13237                            [&] (const char *search_name)
13238                            {
13239                              std::string decoded = ada_decode (search_name);
13240                              return name_matches_regex (decoded.c_str (), preg);
13241                            },
13242                            NULL,
13243                            VARIABLES_DOMAIN);
13244
13245   for (objfile *objfile : current_program_space->objfiles ())
13246     {
13247       for (compunit_symtab *s : objfile->compunits ())
13248         {
13249           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13250           int i;
13251
13252           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13253             {
13254               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13255               struct block_iterator iter;
13256               struct symbol *sym;
13257
13258               ALL_BLOCK_SYMBOLS (b, iter, sym)
13259                 if (ada_is_non_standard_exception_sym (sym)
13260                     && name_matches_regex (sym->natural_name (), preg))
13261                   {
13262                     struct ada_exc_info info
13263                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13264
13265                     exceptions->push_back (info);
13266                   }
13267             }
13268         }
13269     }
13270 }
13271
13272 /* Implements ada_exceptions_list with the regular expression passed
13273    as a regex_t, rather than a string.
13274
13275    If not NULL, PREG is used to filter out exceptions whose names
13276    do not match.  Otherwise, all exceptions are listed.  */
13277
13278 static std::vector<ada_exc_info>
13279 ada_exceptions_list_1 (compiled_regex *preg)
13280 {
13281   std::vector<ada_exc_info> result;
13282   int prev_len;
13283
13284   /* First, list the known standard exceptions.  These exceptions
13285      need to be handled separately, as they are usually defined in
13286      runtime units that have been compiled without debugging info.  */
13287
13288   ada_add_standard_exceptions (preg, &result);
13289
13290   /* Next, find all exceptions whose scope is local and accessible
13291      from the currently selected frame.  */
13292
13293   if (has_stack_frames ())
13294     {
13295       prev_len = result.size ();
13296       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13297                                      &result);
13298       if (result.size () > prev_len)
13299         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13300     }
13301
13302   /* Add all exceptions whose scope is global.  */
13303
13304   prev_len = result.size ();
13305   ada_add_global_exceptions (preg, &result);
13306   if (result.size () > prev_len)
13307     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13308
13309   return result;
13310 }
13311
13312 /* Return a vector of ada_exc_info.
13313
13314    If REGEXP is NULL, all exceptions are included in the result.
13315    Otherwise, it should contain a valid regular expression,
13316    and only the exceptions whose names match that regular expression
13317    are included in the result.
13318
13319    The exceptions are sorted in the following order:
13320      - Standard exceptions (defined by the Ada language), in
13321        alphabetical order;
13322      - Exceptions only visible from the current frame, in
13323        alphabetical order;
13324      - Exceptions whose scope is global, in alphabetical order.  */
13325
13326 std::vector<ada_exc_info>
13327 ada_exceptions_list (const char *regexp)
13328 {
13329   if (regexp == NULL)
13330     return ada_exceptions_list_1 (NULL);
13331
13332   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13333   return ada_exceptions_list_1 (&reg);
13334 }
13335
13336 /* Implement the "info exceptions" command.  */
13337
13338 static void
13339 info_exceptions_command (const char *regexp, int from_tty)
13340 {
13341   struct gdbarch *gdbarch = get_current_arch ();
13342
13343   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13344
13345   if (regexp != NULL)
13346     printf_filtered
13347       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13348   else
13349     printf_filtered (_("All defined Ada exceptions:\n"));
13350
13351   for (const ada_exc_info &info : exceptions)
13352     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13353 }
13354
13355                                 /* Operators */
13356 /* Information about operators given special treatment in functions
13357    below.  */
13358 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13359
13360 #define ADA_OPERATORS \
13361     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13362     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13363     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13364     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13365     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13366     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13367     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13368     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13369     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13370     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13371     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13372     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13373     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13374     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13375     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13376     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13377     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13378     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13379     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13380
13381 static void
13382 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13383                      int *argsp)
13384 {
13385   switch (exp->elts[pc - 1].opcode)
13386     {
13387     default:
13388       operator_length_standard (exp, pc, oplenp, argsp);
13389       break;
13390
13391 #define OP_DEFN(op, len, args, binop) \
13392     case op: *oplenp = len; *argsp = args; break;
13393       ADA_OPERATORS;
13394 #undef OP_DEFN
13395
13396     case OP_AGGREGATE:
13397       *oplenp = 3;
13398       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13399       break;
13400
13401     case OP_CHOICES:
13402       *oplenp = 3;
13403       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13404       break;
13405     }
13406 }
13407
13408 /* Implementation of the exp_descriptor method operator_check.  */
13409
13410 static int
13411 ada_operator_check (struct expression *exp, int pos,
13412                     int (*objfile_func) (struct objfile *objfile, void *data),
13413                     void *data)
13414 {
13415   const union exp_element *const elts = exp->elts;
13416   struct type *type = NULL;
13417
13418   switch (elts[pos].opcode)
13419     {
13420       case UNOP_IN_RANGE:
13421       case UNOP_QUAL:
13422         type = elts[pos + 1].type;
13423         break;
13424
13425       default:
13426         return operator_check_standard (exp, pos, objfile_func, data);
13427     }
13428
13429   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13430
13431   if (type && TYPE_OBJFILE (type)
13432       && (*objfile_func) (TYPE_OBJFILE (type), data))
13433     return 1;
13434
13435   return 0;
13436 }
13437
13438 static const char *
13439 ada_op_name (enum exp_opcode opcode)
13440 {
13441   switch (opcode)
13442     {
13443     default:
13444       return op_name_standard (opcode);
13445
13446 #define OP_DEFN(op, len, args, binop) case op: return #op;
13447       ADA_OPERATORS;
13448 #undef OP_DEFN
13449
13450     case OP_AGGREGATE:
13451       return "OP_AGGREGATE";
13452     case OP_CHOICES:
13453       return "OP_CHOICES";
13454     case OP_NAME:
13455       return "OP_NAME";
13456     }
13457 }
13458
13459 /* As for operator_length, but assumes PC is pointing at the first
13460    element of the operator, and gives meaningful results only for the 
13461    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13462
13463 static void
13464 ada_forward_operator_length (struct expression *exp, int pc,
13465                              int *oplenp, int *argsp)
13466 {
13467   switch (exp->elts[pc].opcode)
13468     {
13469     default:
13470       *oplenp = *argsp = 0;
13471       break;
13472
13473 #define OP_DEFN(op, len, args, binop) \
13474     case op: *oplenp = len; *argsp = args; break;
13475       ADA_OPERATORS;
13476 #undef OP_DEFN
13477
13478     case OP_AGGREGATE:
13479       *oplenp = 3;
13480       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13481       break;
13482
13483     case OP_CHOICES:
13484       *oplenp = 3;
13485       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13486       break;
13487
13488     case OP_STRING:
13489     case OP_NAME:
13490       {
13491         int len = longest_to_int (exp->elts[pc + 1].longconst);
13492
13493         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13494         *argsp = 0;
13495         break;
13496       }
13497     }
13498 }
13499
13500 static int
13501 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13502 {
13503   enum exp_opcode op = exp->elts[elt].opcode;
13504   int oplen, nargs;
13505   int pc = elt;
13506   int i;
13507
13508   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13509
13510   switch (op)
13511     {
13512       /* Ada attributes ('Foo).  */
13513     case OP_ATR_FIRST:
13514     case OP_ATR_LAST:
13515     case OP_ATR_LENGTH:
13516     case OP_ATR_IMAGE:
13517     case OP_ATR_MAX:
13518     case OP_ATR_MIN:
13519     case OP_ATR_MODULUS:
13520     case OP_ATR_POS:
13521     case OP_ATR_SIZE:
13522     case OP_ATR_TAG:
13523     case OP_ATR_VAL:
13524       break;
13525
13526     case UNOP_IN_RANGE:
13527     case UNOP_QUAL:
13528       /* XXX: gdb_sprint_host_address, type_sprint */
13529       fprintf_filtered (stream, _("Type @"));
13530       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13531       fprintf_filtered (stream, " (");
13532       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13533       fprintf_filtered (stream, ")");
13534       break;
13535     case BINOP_IN_BOUNDS:
13536       fprintf_filtered (stream, " (%d)",
13537                         longest_to_int (exp->elts[pc + 2].longconst));
13538       break;
13539     case TERNOP_IN_RANGE:
13540       break;
13541
13542     case OP_AGGREGATE:
13543     case OP_OTHERS:
13544     case OP_DISCRETE_RANGE:
13545     case OP_POSITIONAL:
13546     case OP_CHOICES:
13547       break;
13548
13549     case OP_NAME:
13550     case OP_STRING:
13551       {
13552         char *name = &exp->elts[elt + 2].string;
13553         int len = longest_to_int (exp->elts[elt + 1].longconst);
13554
13555         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13556         break;
13557       }
13558
13559     default:
13560       return dump_subexp_body_standard (exp, stream, elt);
13561     }
13562
13563   elt += oplen;
13564   for (i = 0; i < nargs; i += 1)
13565     elt = dump_subexp (exp, stream, elt);
13566
13567   return elt;
13568 }
13569
13570 /* The Ada extension of print_subexp (q.v.).  */
13571
13572 static void
13573 ada_print_subexp (struct expression *exp, int *pos,
13574                   struct ui_file *stream, enum precedence prec)
13575 {
13576   int oplen, nargs, i;
13577   int pc = *pos;
13578   enum exp_opcode op = exp->elts[pc].opcode;
13579
13580   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13581
13582   *pos += oplen;
13583   switch (op)
13584     {
13585     default:
13586       *pos -= oplen;
13587       print_subexp_standard (exp, pos, stream, prec);
13588       return;
13589
13590     case OP_VAR_VALUE:
13591       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13592       return;
13593
13594     case BINOP_IN_BOUNDS:
13595       /* XXX: sprint_subexp */
13596       print_subexp (exp, pos, stream, PREC_SUFFIX);
13597       fputs_filtered (" in ", stream);
13598       print_subexp (exp, pos, stream, PREC_SUFFIX);
13599       fputs_filtered ("'range", stream);
13600       if (exp->elts[pc + 1].longconst > 1)
13601         fprintf_filtered (stream, "(%ld)",
13602                           (long) exp->elts[pc + 1].longconst);
13603       return;
13604
13605     case TERNOP_IN_RANGE:
13606       if (prec >= PREC_EQUAL)
13607         fputs_filtered ("(", stream);
13608       /* XXX: sprint_subexp */
13609       print_subexp (exp, pos, stream, PREC_SUFFIX);
13610       fputs_filtered (" in ", stream);
13611       print_subexp (exp, pos, stream, PREC_EQUAL);
13612       fputs_filtered (" .. ", stream);
13613       print_subexp (exp, pos, stream, PREC_EQUAL);
13614       if (prec >= PREC_EQUAL)
13615         fputs_filtered (")", stream);
13616       return;
13617
13618     case OP_ATR_FIRST:
13619     case OP_ATR_LAST:
13620     case OP_ATR_LENGTH:
13621     case OP_ATR_IMAGE:
13622     case OP_ATR_MAX:
13623     case OP_ATR_MIN:
13624     case OP_ATR_MODULUS:
13625     case OP_ATR_POS:
13626     case OP_ATR_SIZE:
13627     case OP_ATR_TAG:
13628     case OP_ATR_VAL:
13629       if (exp->elts[*pos].opcode == OP_TYPE)
13630         {
13631           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13632             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13633                            &type_print_raw_options);
13634           *pos += 3;
13635         }
13636       else
13637         print_subexp (exp, pos, stream, PREC_SUFFIX);
13638       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13639       if (nargs > 1)
13640         {
13641           int tem;
13642
13643           for (tem = 1; tem < nargs; tem += 1)
13644             {
13645               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13646               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13647             }
13648           fputs_filtered (")", stream);
13649         }
13650       return;
13651
13652     case UNOP_QUAL:
13653       type_print (exp->elts[pc + 1].type, "", stream, 0);
13654       fputs_filtered ("'(", stream);
13655       print_subexp (exp, pos, stream, PREC_PREFIX);
13656       fputs_filtered (")", stream);
13657       return;
13658
13659     case UNOP_IN_RANGE:
13660       /* XXX: sprint_subexp */
13661       print_subexp (exp, pos, stream, PREC_SUFFIX);
13662       fputs_filtered (" in ", stream);
13663       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13664                      &type_print_raw_options);
13665       return;
13666
13667     case OP_DISCRETE_RANGE:
13668       print_subexp (exp, pos, stream, PREC_SUFFIX);
13669       fputs_filtered ("..", stream);
13670       print_subexp (exp, pos, stream, PREC_SUFFIX);
13671       return;
13672
13673     case OP_OTHERS:
13674       fputs_filtered ("others => ", stream);
13675       print_subexp (exp, pos, stream, PREC_SUFFIX);
13676       return;
13677
13678     case OP_CHOICES:
13679       for (i = 0; i < nargs-1; i += 1)
13680         {
13681           if (i > 0)
13682             fputs_filtered ("|", stream);
13683           print_subexp (exp, pos, stream, PREC_SUFFIX);
13684         }
13685       fputs_filtered (" => ", stream);
13686       print_subexp (exp, pos, stream, PREC_SUFFIX);
13687       return;
13688       
13689     case OP_POSITIONAL:
13690       print_subexp (exp, pos, stream, PREC_SUFFIX);
13691       return;
13692
13693     case OP_AGGREGATE:
13694       fputs_filtered ("(", stream);
13695       for (i = 0; i < nargs; i += 1)
13696         {
13697           if (i > 0)
13698             fputs_filtered (", ", stream);
13699           print_subexp (exp, pos, stream, PREC_SUFFIX);
13700         }
13701       fputs_filtered (")", stream);
13702       return;
13703     }
13704 }
13705
13706 /* Table mapping opcodes into strings for printing operators
13707    and precedences of the operators.  */
13708
13709 static const struct op_print ada_op_print_tab[] = {
13710   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13711   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13712   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13713   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13714   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13715   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13716   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13717   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13718   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13719   {">=", BINOP_GEQ, PREC_ORDER, 0},
13720   {">", BINOP_GTR, PREC_ORDER, 0},
13721   {"<", BINOP_LESS, PREC_ORDER, 0},
13722   {">>", BINOP_RSH, PREC_SHIFT, 0},
13723   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13724   {"+", BINOP_ADD, PREC_ADD, 0},
13725   {"-", BINOP_SUB, PREC_ADD, 0},
13726   {"&", BINOP_CONCAT, PREC_ADD, 0},
13727   {"*", BINOP_MUL, PREC_MUL, 0},
13728   {"/", BINOP_DIV, PREC_MUL, 0},
13729   {"rem", BINOP_REM, PREC_MUL, 0},
13730   {"mod", BINOP_MOD, PREC_MUL, 0},
13731   {"**", BINOP_EXP, PREC_REPEAT, 0},
13732   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13733   {"-", UNOP_NEG, PREC_PREFIX, 0},
13734   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13735   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13736   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13737   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13738   {".all", UNOP_IND, PREC_SUFFIX, 1},
13739   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13740   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13741   {NULL, OP_NULL, PREC_SUFFIX, 0}
13742 };
13743 \f
13744 enum ada_primitive_types {
13745   ada_primitive_type_int,
13746   ada_primitive_type_long,
13747   ada_primitive_type_short,
13748   ada_primitive_type_char,
13749   ada_primitive_type_float,
13750   ada_primitive_type_double,
13751   ada_primitive_type_void,
13752   ada_primitive_type_long_long,
13753   ada_primitive_type_long_double,
13754   ada_primitive_type_natural,
13755   ada_primitive_type_positive,
13756   ada_primitive_type_system_address,
13757   ada_primitive_type_storage_offset,
13758   nr_ada_primitive_types
13759 };
13760
13761 \f
13762                                 /* Language vector */
13763
13764 /* Not really used, but needed in the ada_language_defn.  */
13765
13766 static void
13767 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13768 {
13769   ada_emit_char (c, type, stream, quoter, 1);
13770 }
13771
13772 static int
13773 parse (struct parser_state *ps)
13774 {
13775   warnings_issued = 0;
13776   return ada_parse (ps);
13777 }
13778
13779 static const struct exp_descriptor ada_exp_descriptor = {
13780   ada_print_subexp,
13781   ada_operator_length,
13782   ada_operator_check,
13783   ada_op_name,
13784   ada_dump_subexp_body,
13785   ada_evaluate_subexp
13786 };
13787
13788 /* symbol_name_matcher_ftype adapter for wild_match.  */
13789
13790 static bool
13791 do_wild_match (const char *symbol_search_name,
13792                const lookup_name_info &lookup_name,
13793                completion_match_result *comp_match_res)
13794 {
13795   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13796 }
13797
13798 /* symbol_name_matcher_ftype adapter for full_match.  */
13799
13800 static bool
13801 do_full_match (const char *symbol_search_name,
13802                const lookup_name_info &lookup_name,
13803                completion_match_result *comp_match_res)
13804 {
13805   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13806 }
13807
13808 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13809
13810 static bool
13811 do_exact_match (const char *symbol_search_name,
13812                 const lookup_name_info &lookup_name,
13813                 completion_match_result *comp_match_res)
13814 {
13815   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13816 }
13817
13818 /* Build the Ada lookup name for LOOKUP_NAME.  */
13819
13820 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13821 {
13822   gdb::string_view user_name = lookup_name.name ();
13823
13824   if (user_name[0] == '<')
13825     {
13826       if (user_name.back () == '>')
13827         m_encoded_name
13828           = user_name.substr (1, user_name.size () - 2).to_string ();
13829       else
13830         m_encoded_name
13831           = user_name.substr (1, user_name.size () - 1).to_string ();
13832       m_encoded_p = true;
13833       m_verbatim_p = true;
13834       m_wild_match_p = false;
13835       m_standard_p = false;
13836     }
13837   else
13838     {
13839       m_verbatim_p = false;
13840
13841       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13842
13843       if (!m_encoded_p)
13844         {
13845           const char *folded = ada_fold_name (user_name);
13846           const char *encoded = ada_encode_1 (folded, false);
13847           if (encoded != NULL)
13848             m_encoded_name = encoded;
13849           else
13850             m_encoded_name = user_name.to_string ();
13851         }
13852       else
13853         m_encoded_name = user_name.to_string ();
13854
13855       /* Handle the 'package Standard' special case.  See description
13856          of m_standard_p.  */
13857       if (startswith (m_encoded_name.c_str (), "standard__"))
13858         {
13859           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13860           m_standard_p = true;
13861         }
13862       else
13863         m_standard_p = false;
13864
13865       /* If the name contains a ".", then the user is entering a fully
13866          qualified entity name, and the match must not be done in wild
13867          mode.  Similarly, if the user wants to complete what looks
13868          like an encoded name, the match must not be done in wild
13869          mode.  Also, in the standard__ special case always do
13870          non-wild matching.  */
13871       m_wild_match_p
13872         = (lookup_name.match_type () != symbol_name_match_type::FULL
13873            && !m_encoded_p
13874            && !m_standard_p
13875            && user_name.find ('.') == std::string::npos);
13876     }
13877 }
13878
13879 /* symbol_name_matcher_ftype method for Ada.  This only handles
13880    completion mode.  */
13881
13882 static bool
13883 ada_symbol_name_matches (const char *symbol_search_name,
13884                          const lookup_name_info &lookup_name,
13885                          completion_match_result *comp_match_res)
13886 {
13887   return lookup_name.ada ().matches (symbol_search_name,
13888                                      lookup_name.match_type (),
13889                                      comp_match_res);
13890 }
13891
13892 /* A name matcher that matches the symbol name exactly, with
13893    strcmp.  */
13894
13895 static bool
13896 literal_symbol_name_matcher (const char *symbol_search_name,
13897                              const lookup_name_info &lookup_name,
13898                              completion_match_result *comp_match_res)
13899 {
13900   gdb::string_view name_view = lookup_name.name ();
13901
13902   if (lookup_name.completion_mode ()
13903       ? (strncmp (symbol_search_name, name_view.data (),
13904                   name_view.size ()) == 0)
13905       : symbol_search_name == name_view)
13906     {
13907       if (comp_match_res != NULL)
13908         comp_match_res->set_match (symbol_search_name);
13909       return true;
13910     }
13911   else
13912     return false;
13913 }
13914
13915 /* Implement the "la_get_symbol_name_matcher" language_defn method for
13916    Ada.  */
13917
13918 static symbol_name_matcher_ftype *
13919 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13920 {
13921   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13922     return literal_symbol_name_matcher;
13923
13924   if (lookup_name.completion_mode ())
13925     return ada_symbol_name_matches;
13926   else
13927     {
13928       if (lookup_name.ada ().wild_match_p ())
13929         return do_wild_match;
13930       else if (lookup_name.ada ().verbatim_p ())
13931         return do_exact_match;
13932       else
13933         return do_full_match;
13934     }
13935 }
13936
13937 static const char *ada_extensions[] =
13938 {
13939   ".adb", ".ads", ".a", ".ada", ".dg", NULL
13940 };
13941
13942 /* Constant data that describes the Ada language.  */
13943
13944 extern const struct language_data ada_language_data =
13945 {
13946   "ada",                        /* Language name */
13947   "Ada",
13948   language_ada,
13949   range_check_off,
13950   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13951                                    that's not quite what this means.  */
13952   array_row_major,
13953   macro_expansion_no,
13954   ada_extensions,
13955   &ada_exp_descriptor,
13956   parse,
13957   resolve,
13958   ada_printchar,                /* Print a character constant */
13959   ada_printstr,                 /* Function to print string constant */
13960   emit_char,                    /* Function to print single char (not used) */
13961   ada_print_type,               /* Print a type using appropriate syntax */
13962   ada_print_typedef,            /* Print a typedef using appropriate syntax */
13963   ada_value_print_inner,        /* la_value_print_inner */
13964   ada_value_print,              /* Print a top-level value */
13965   NULL,                         /* Language specific skip_trampoline */
13966   NULL,                         /* name_of_this */
13967   true,                         /* la_store_sym_names_in_linkage_form_p */
13968   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
13969   ada_la_decode,                /* Language specific symbol demangler */
13970   ada_sniff_from_mangled_name,
13971   NULL,                         /* Language specific
13972                                    class_name_from_physname */
13973   ada_op_print_tab,             /* expression operators for printing */
13974   0,                            /* c-style arrays */
13975   1,                            /* String lower bound */
13976   ada_get_gdb_completer_word_break_characters,
13977   ada_collect_symbol_completion_matches,
13978   ada_watch_location_expression,
13979   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
13980   default_search_name_hash,
13981   &ada_varobj_ops,
13982   NULL,
13983   NULL,
13984   ada_is_string_type,
13985   "(...)"                       /* la_struct_too_deep_ellipsis */
13986 };
13987
13988 /* Class representing the Ada language.  */
13989
13990 class ada_language : public language_defn
13991 {
13992 public:
13993   ada_language ()
13994     : language_defn (language_ada, ada_language_data)
13995   { /* Nothing.  */ }
13996
13997   /* Print an array element index using the Ada syntax.  */
13998
13999   void print_array_index (struct type *index_type,
14000                           LONGEST index,
14001                           struct ui_file *stream,
14002                           const value_print_options *options) const override
14003   {
14004     struct value *index_value = val_atr (index_type, index);
14005
14006     LA_VALUE_PRINT (index_value, stream, options);
14007     fprintf_filtered (stream, " => ");
14008   }
14009
14010   /* Implement the "read_var_value" language_defn method for Ada.  */
14011
14012   struct value *read_var_value (struct symbol *var,
14013                                 const struct block *var_block,
14014                                 struct frame_info *frame) const override
14015   {
14016     /* The only case where default_read_var_value is not sufficient
14017        is when VAR is a renaming...  */
14018     if (frame != nullptr)
14019       {
14020         const struct block *frame_block = get_frame_block (frame, NULL);
14021         if (frame_block != nullptr && ada_is_renaming_symbol (var))
14022           return ada_read_renaming_var_value (var, frame_block);
14023       }
14024
14025     /* This is a typical case where we expect the default_read_var_value
14026        function to work.  */
14027     return language_defn::read_var_value (var, var_block, frame);
14028   }
14029
14030   /* See language.h.  */
14031   void language_arch_info (struct gdbarch *gdbarch,
14032                            struct language_arch_info *lai) const override
14033   {
14034     const struct builtin_type *builtin = builtin_type (gdbarch);
14035
14036     lai->primitive_type_vector
14037       = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14038                                 struct type *);
14039
14040     lai->primitive_type_vector [ada_primitive_type_int]
14041       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14042                            0, "integer");
14043     lai->primitive_type_vector [ada_primitive_type_long]
14044       = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14045                            0, "long_integer");
14046     lai->primitive_type_vector [ada_primitive_type_short]
14047       = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14048                            0, "short_integer");
14049     lai->string_char_type
14050       = lai->primitive_type_vector [ada_primitive_type_char]
14051       = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14052     lai->primitive_type_vector [ada_primitive_type_float]
14053       = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14054                          "float", gdbarch_float_format (gdbarch));
14055     lai->primitive_type_vector [ada_primitive_type_double]
14056       = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14057                          "long_float", gdbarch_double_format (gdbarch));
14058     lai->primitive_type_vector [ada_primitive_type_long_long]
14059       = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14060                            0, "long_long_integer");
14061     lai->primitive_type_vector [ada_primitive_type_long_double]
14062       = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14063                          "long_long_float", gdbarch_long_double_format (gdbarch));
14064     lai->primitive_type_vector [ada_primitive_type_natural]
14065       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14066                            0, "natural");
14067     lai->primitive_type_vector [ada_primitive_type_positive]
14068       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14069                            0, "positive");
14070     lai->primitive_type_vector [ada_primitive_type_void]
14071       = builtin->builtin_void;
14072
14073     lai->primitive_type_vector [ada_primitive_type_system_address]
14074       = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14075                                         "void"));
14076     lai->primitive_type_vector [ada_primitive_type_system_address]
14077       ->set_name ("system__address");
14078
14079     /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14080        type.  This is a signed integral type whose size is the same as
14081        the size of addresses.  */
14082     {
14083       unsigned int addr_length = TYPE_LENGTH
14084         (lai->primitive_type_vector [ada_primitive_type_system_address]);
14085
14086       lai->primitive_type_vector [ada_primitive_type_storage_offset]
14087         = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14088                              "storage_offset");
14089     }
14090
14091     lai->bool_type_symbol = NULL;
14092     lai->bool_type_default = builtin->builtin_bool;
14093   }
14094
14095   /* See language.h.  */
14096
14097   bool iterate_over_symbols
14098         (const struct block *block, const lookup_name_info &name,
14099          domain_enum domain,
14100          gdb::function_view<symbol_found_callback_ftype> callback) const override
14101   {
14102     std::vector<struct block_symbol> results;
14103
14104     ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
14105     for (block_symbol &sym : results)
14106       {
14107         if (!callback (&sym))
14108           return false;
14109       }
14110
14111     return true;
14112   }
14113 };
14114
14115 /* Single instance of the Ada language class.  */
14116
14117 static ada_language ada_language_defn;
14118
14119 /* Command-list for the "set/show ada" prefix command.  */
14120 static struct cmd_list_element *set_ada_list;
14121 static struct cmd_list_element *show_ada_list;
14122
14123 static void
14124 initialize_ada_catchpoint_ops (void)
14125 {
14126   struct breakpoint_ops *ops;
14127
14128   initialize_breakpoint_ops ();
14129
14130   ops = &catch_exception_breakpoint_ops;
14131   *ops = bkpt_breakpoint_ops;
14132   ops->allocate_location = allocate_location_exception;
14133   ops->re_set = re_set_exception;
14134   ops->check_status = check_status_exception;
14135   ops->print_it = print_it_exception;
14136   ops->print_one = print_one_exception;
14137   ops->print_mention = print_mention_exception;
14138   ops->print_recreate = print_recreate_exception;
14139
14140   ops = &catch_exception_unhandled_breakpoint_ops;
14141   *ops = bkpt_breakpoint_ops;
14142   ops->allocate_location = allocate_location_exception;
14143   ops->re_set = re_set_exception;
14144   ops->check_status = check_status_exception;
14145   ops->print_it = print_it_exception;
14146   ops->print_one = print_one_exception;
14147   ops->print_mention = print_mention_exception;
14148   ops->print_recreate = print_recreate_exception;
14149
14150   ops = &catch_assert_breakpoint_ops;
14151   *ops = bkpt_breakpoint_ops;
14152   ops->allocate_location = allocate_location_exception;
14153   ops->re_set = re_set_exception;
14154   ops->check_status = check_status_exception;
14155   ops->print_it = print_it_exception;
14156   ops->print_one = print_one_exception;
14157   ops->print_mention = print_mention_exception;
14158   ops->print_recreate = print_recreate_exception;
14159
14160   ops = &catch_handlers_breakpoint_ops;
14161   *ops = bkpt_breakpoint_ops;
14162   ops->allocate_location = allocate_location_exception;
14163   ops->re_set = re_set_exception;
14164   ops->check_status = check_status_exception;
14165   ops->print_it = print_it_exception;
14166   ops->print_one = print_one_exception;
14167   ops->print_mention = print_mention_exception;
14168   ops->print_recreate = print_recreate_exception;
14169 }
14170
14171 /* This module's 'new_objfile' observer.  */
14172
14173 static void
14174 ada_new_objfile_observer (struct objfile *objfile)
14175 {
14176   ada_clear_symbol_cache ();
14177 }
14178
14179 /* This module's 'free_objfile' observer.  */
14180
14181 static void
14182 ada_free_objfile_observer (struct objfile *objfile)
14183 {
14184   ada_clear_symbol_cache ();
14185 }
14186
14187 void _initialize_ada_language ();
14188 void
14189 _initialize_ada_language ()
14190 {
14191   initialize_ada_catchpoint_ops ();
14192
14193   add_basic_prefix_cmd ("ada", no_class,
14194                         _("Prefix command for changing Ada-specific settings."),
14195                         &set_ada_list, "set ada ", 0, &setlist);
14196
14197   add_show_prefix_cmd ("ada", no_class,
14198                        _("Generic command for showing Ada-specific settings."),
14199                        &show_ada_list, "show ada ", 0, &showlist);
14200
14201   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14202                            &trust_pad_over_xvs, _("\
14203 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14204 Show whether an optimization trusting PAD types over XVS types is activated."),
14205                            _("\
14206 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14207 should normally trust the contents of PAD types, but certain older versions\n\
14208 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14209 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14210 work around this bug.  It is always safe to turn this option \"off\", but\n\
14211 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14212 this option to \"off\" unless necessary."),
14213                             NULL, NULL, &set_ada_list, &show_ada_list);
14214
14215   add_setshow_boolean_cmd ("print-signatures", class_vars,
14216                            &print_signatures, _("\
14217 Enable or disable the output of formal and return types for functions in the \
14218 overloads selection menu."), _("\
14219 Show whether the output of formal and return types for functions in the \
14220 overloads selection menu is activated."),
14221                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14222
14223   add_catch_command ("exception", _("\
14224 Catch Ada exceptions, when raised.\n\
14225 Usage: catch exception [ARG] [if CONDITION]\n\
14226 Without any argument, stop when any Ada exception is raised.\n\
14227 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14228 being raised does not have a handler (and will therefore lead to the task's\n\
14229 termination).\n\
14230 Otherwise, the catchpoint only stops when the name of the exception being\n\
14231 raised is the same as ARG.\n\
14232 CONDITION is a boolean expression that is evaluated to see whether the\n\
14233 exception should cause a stop."),
14234                      catch_ada_exception_command,
14235                      catch_ada_completer,
14236                      CATCH_PERMANENT,
14237                      CATCH_TEMPORARY);
14238
14239   add_catch_command ("handlers", _("\
14240 Catch Ada exceptions, when handled.\n\
14241 Usage: catch handlers [ARG] [if CONDITION]\n\
14242 Without any argument, stop when any Ada exception is handled.\n\
14243 With an argument, catch only exceptions with the given name.\n\
14244 CONDITION is a boolean expression that is evaluated to see whether the\n\
14245 exception should cause a stop."),
14246                      catch_ada_handlers_command,
14247                      catch_ada_completer,
14248                      CATCH_PERMANENT,
14249                      CATCH_TEMPORARY);
14250   add_catch_command ("assert", _("\
14251 Catch failed Ada assertions, when raised.\n\
14252 Usage: catch assert [if CONDITION]\n\
14253 CONDITION is a boolean expression that is evaluated to see whether the\n\
14254 exception should cause a stop."),
14255                      catch_assert_command,
14256                      NULL,
14257                      CATCH_PERMANENT,
14258                      CATCH_TEMPORARY);
14259
14260   varsize_limit = 65536;
14261   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14262                             &varsize_limit, _("\
14263 Set the maximum number of bytes allowed in a variable-size object."), _("\
14264 Show the maximum number of bytes allowed in a variable-size object."), _("\
14265 Attempts to access an object whose size is not a compile-time constant\n\
14266 and exceeds this limit will cause an error."),
14267                             NULL, NULL, &setlist, &showlist);
14268
14269   add_info ("exceptions", info_exceptions_command,
14270             _("\
14271 List all Ada exception names.\n\
14272 Usage: info exceptions [REGEXP]\n\
14273 If a regular expression is passed as an argument, only those matching\n\
14274 the regular expression are listed."));
14275
14276   add_basic_prefix_cmd ("ada", class_maintenance,
14277                         _("Set Ada maintenance-related variables."),
14278                         &maint_set_ada_cmdlist, "maintenance set ada ",
14279                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14280
14281   add_show_prefix_cmd ("ada", class_maintenance,
14282                        _("Show Ada maintenance-related variables."),
14283                        &maint_show_ada_cmdlist, "maintenance show ada ",
14284                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14285
14286   add_setshow_boolean_cmd
14287     ("ignore-descriptive-types", class_maintenance,
14288      &ada_ignore_descriptive_types_p,
14289      _("Set whether descriptive types generated by GNAT should be ignored."),
14290      _("Show whether descriptive types generated by GNAT should be ignored."),
14291      _("\
14292 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14293 DWARF attribute."),
14294      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14295
14296   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14297                                            NULL, xcalloc, xfree);
14298
14299   /* The ada-lang observers.  */
14300   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14301   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14302   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14303 }
This page took 0.863001 seconds and 2 git commands to generate.