]> Git Repo - binutils.git/blob - gdb/ada-lang.c
gdb: add type::name / type::set_name
[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 *value_val_atr (struct type *, struct value *);
200
201 static struct symbol *standard_lookup (const char *, const struct block *,
202                                        domain_enum);
203
204 static struct value *ada_search_struct_field (const char *, struct value *, int,
205                                               struct type *);
206
207 static int find_struct_field (const char *, struct type *, int,
208                               struct type **, int *, int *, int *, int *);
209
210 static int ada_resolve_function (struct block_symbol *, int,
211                                  struct value **, int, const char *,
212                                  struct type *, int);
213
214 static int ada_is_direct_array_type (struct type *);
215
216 static void ada_language_arch_info (struct gdbarch *,
217                                     struct language_arch_info *);
218
219 static struct value *ada_index_struct_field (int, struct value *, int,
220                                              struct type *);
221
222 static struct value *assign_aggregate (struct value *, struct value *, 
223                                        struct expression *,
224                                        int *, enum noside);
225
226 static void aggregate_assign_from_choices (struct value *, struct value *, 
227                                            struct expression *,
228                                            int *, LONGEST *, int *,
229                                            int, LONGEST, LONGEST);
230
231 static void aggregate_assign_positional (struct value *, struct value *,
232                                          struct expression *,
233                                          int *, LONGEST *, int *, int,
234                                          LONGEST, LONGEST);
235
236
237 static void aggregate_assign_others (struct value *, struct value *,
238                                      struct expression *,
239                                      int *, LONGEST *, int, LONGEST, LONGEST);
240
241
242 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
243
244
245 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
246                                           int *, enum noside);
247
248 static void ada_forward_operator_length (struct expression *, int, int *,
249                                          int *);
250
251 static struct type *ada_find_any_type (const char *name);
252
253 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
254   (const lookup_name_info &lookup_name);
255
256 \f
257
258 /* The result of a symbol lookup to be stored in our symbol cache.  */
259
260 struct cache_entry
261 {
262   /* The name used to perform the lookup.  */
263   const char *name;
264   /* The namespace used during the lookup.  */
265   domain_enum domain;
266   /* The symbol returned by the lookup, or NULL if no matching symbol
267      was found.  */
268   struct symbol *sym;
269   /* The block where the symbol was found, or NULL if no matching
270      symbol was found.  */
271   const struct block *block;
272   /* A pointer to the next entry with the same hash.  */
273   struct cache_entry *next;
274 };
275
276 /* The Ada symbol cache, used to store the result of Ada-mode symbol
277    lookups in the course of executing the user's commands.
278
279    The cache is implemented using a simple, fixed-sized hash.
280    The size is fixed on the grounds that there are not likely to be
281    all that many symbols looked up during any given session, regardless
282    of the size of the symbol table.  If we decide to go to a resizable
283    table, let's just use the stuff from libiberty instead.  */
284
285 #define HASH_SIZE 1009
286
287 struct ada_symbol_cache
288 {
289   /* An obstack used to store the entries in our cache.  */
290   struct obstack cache_space;
291
292   /* The root of the hash table used to implement our symbol cache.  */
293   struct cache_entry *root[HASH_SIZE];
294 };
295
296 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
297
298 /* Maximum-sized dynamic type.  */
299 static unsigned int varsize_limit;
300
301 static const char ada_completer_word_break_characters[] =
302 #ifdef VMS
303   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
304 #else
305   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
306 #endif
307
308 /* The name of the symbol to use to get the name of the main subprogram.  */
309 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
310   = "__gnat_ada_main_program_name";
311
312 /* Limit on the number of warnings to raise per expression evaluation.  */
313 static int warning_limit = 2;
314
315 /* Number of warning messages issued; reset to 0 by cleanups after
316    expression evaluation.  */
317 static int warnings_issued = 0;
318
319 static const char *known_runtime_file_name_patterns[] = {
320   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
321 };
322
323 static const char *known_auxiliary_function_name_patterns[] = {
324   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
325 };
326
327 /* Maintenance-related settings for this module.  */
328
329 static struct cmd_list_element *maint_set_ada_cmdlist;
330 static struct cmd_list_element *maint_show_ada_cmdlist;
331
332 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
333
334 static bool ada_ignore_descriptive_types_p = false;
335
336                         /* Inferior-specific data.  */
337
338 /* Per-inferior data for this module.  */
339
340 struct ada_inferior_data
341 {
342   /* The ada__tags__type_specific_data type, which is used when decoding
343      tagged types.  With older versions of GNAT, this type was directly
344      accessible through a component ("tsd") in the object tag.  But this
345      is no longer the case, so we cache it for each inferior.  */
346   struct type *tsd_type = nullptr;
347
348   /* The exception_support_info data.  This data is used to determine
349      how to implement support for Ada exception catchpoints in a given
350      inferior.  */
351   const struct exception_support_info *exception_info = nullptr;
352 };
353
354 /* Our key to this module's inferior data.  */
355 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
356
357 /* Return our inferior data for the given inferior (INF).
358
359    This function always returns a valid pointer to an allocated
360    ada_inferior_data structure.  If INF's inferior data has not
361    been previously set, this functions creates a new one with all
362    fields set to zero, sets INF's inferior to it, and then returns
363    a pointer to that newly allocated ada_inferior_data.  */
364
365 static struct ada_inferior_data *
366 get_ada_inferior_data (struct inferior *inf)
367 {
368   struct ada_inferior_data *data;
369
370   data = ada_inferior_data.get (inf);
371   if (data == NULL)
372     data = ada_inferior_data.emplace (inf);
373
374   return data;
375 }
376
377 /* Perform all necessary cleanups regarding our module's inferior data
378    that is required after the inferior INF just exited.  */
379
380 static void
381 ada_inferior_exit (struct inferior *inf)
382 {
383   ada_inferior_data.clear (inf);
384 }
385
386
387                         /* program-space-specific data.  */
388
389 /* This module's per-program-space data.  */
390 struct ada_pspace_data
391 {
392   ~ada_pspace_data ()
393   {
394     if (sym_cache != NULL)
395       ada_free_symbol_cache (sym_cache);
396   }
397
398   /* The Ada symbol cache.  */
399   struct ada_symbol_cache *sym_cache = nullptr;
400 };
401
402 /* Key to our per-program-space data.  */
403 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
404
405 /* Return this module's data for the given program space (PSPACE).
406    If not is found, add a zero'ed one now.
407
408    This function always returns a valid object.  */
409
410 static struct ada_pspace_data *
411 get_ada_pspace_data (struct program_space *pspace)
412 {
413   struct ada_pspace_data *data;
414
415   data = ada_pspace_data_handle.get (pspace);
416   if (data == NULL)
417     data = ada_pspace_data_handle.emplace (pspace);
418
419   return data;
420 }
421
422                         /* Utilities */
423
424 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
425    all typedef layers have been peeled.  Otherwise, return TYPE.
426
427    Normally, we really expect a typedef type to only have 1 typedef layer.
428    In other words, we really expect the target type of a typedef type to be
429    a non-typedef type.  This is particularly true for Ada units, because
430    the language does not have a typedef vs not-typedef distinction.
431    In that respect, the Ada compiler has been trying to eliminate as many
432    typedef definitions in the debugging information, since they generally
433    do not bring any extra information (we still use typedef under certain
434    circumstances related mostly to the GNAT encoding).
435
436    Unfortunately, we have seen situations where the debugging information
437    generated by the compiler leads to such multiple typedef layers.  For
438    instance, consider the following example with stabs:
439
440      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
441      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
442
443    This is an error in the debugging information which causes type
444    pck__float_array___XUP to be defined twice, and the second time,
445    it is defined as a typedef of a typedef.
446
447    This is on the fringe of legality as far as debugging information is
448    concerned, and certainly unexpected.  But it is easy to handle these
449    situations correctly, so we can afford to be lenient in this case.  */
450
451 static struct type *
452 ada_typedef_target_type (struct type *type)
453 {
454   while (type->code () == TYPE_CODE_TYPEDEF)
455     type = TYPE_TARGET_TYPE (type);
456   return type;
457 }
458
459 /* Given DECODED_NAME a string holding a symbol name in its
460    decoded form (ie using the Ada dotted notation), returns
461    its unqualified name.  */
462
463 static const char *
464 ada_unqualified_name (const char *decoded_name)
465 {
466   const char *result;
467   
468   /* If the decoded name starts with '<', it means that the encoded
469      name does not follow standard naming conventions, and thus that
470      it is not your typical Ada symbol name.  Trying to unqualify it
471      is therefore pointless and possibly erroneous.  */
472   if (decoded_name[0] == '<')
473     return decoded_name;
474
475   result = strrchr (decoded_name, '.');
476   if (result != NULL)
477     result++;                   /* Skip the dot...  */
478   else
479     result = decoded_name;
480
481   return result;
482 }
483
484 /* Return a string starting with '<', followed by STR, and '>'.  */
485
486 static std::string
487 add_angle_brackets (const char *str)
488 {
489   return string_printf ("<%s>", str);
490 }
491
492 static const char *
493 ada_get_gdb_completer_word_break_characters (void)
494 {
495   return ada_completer_word_break_characters;
496 }
497
498 /* Print an array element index using the Ada syntax.  */
499
500 static void
501 ada_print_array_index (struct value *index_value, struct ui_file *stream,
502                        const struct value_print_options *options)
503 {
504   LA_VALUE_PRINT (index_value, stream, options);
505   fprintf_filtered (stream, " => ");
506 }
507
508 /* la_watch_location_expression for Ada.  */
509
510 static gdb::unique_xmalloc_ptr<char>
511 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
512 {
513   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
514   std::string name = type_to_string (type);
515   return gdb::unique_xmalloc_ptr<char>
516     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
517 }
518
519 /* Assuming V points to an array of S objects,  make sure that it contains at
520    least M objects, updating V and S as necessary.  */
521
522 #define GROW_VECT(v, s, m)                                    \
523    if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
524
525 /* Assuming VECT points to an array of *SIZE objects of size
526    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
527    updating *SIZE as necessary and returning the (new) array.  */
528
529 static void *
530 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
531 {
532   if (*size < min_size)
533     {
534       *size *= 2;
535       if (*size < min_size)
536         *size = min_size;
537       vect = xrealloc (vect, *size * element_size);
538     }
539   return vect;
540 }
541
542 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
543    suffix of FIELD_NAME beginning "___".  */
544
545 static int
546 field_name_match (const char *field_name, const char *target)
547 {
548   int len = strlen (target);
549
550   return
551     (strncmp (field_name, target, len) == 0
552      && (field_name[len] == '\0'
553          || (startswith (field_name + len, "___")
554              && strcmp (field_name + strlen (field_name) - 6,
555                         "___XVN") != 0)));
556 }
557
558
559 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
560    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
561    and return its index.  This function also handles fields whose name
562    have ___ suffixes because the compiler sometimes alters their name
563    by adding such a suffix to represent fields with certain constraints.
564    If the field could not be found, return a negative number if
565    MAYBE_MISSING is set.  Otherwise raise an error.  */
566
567 int
568 ada_get_field_index (const struct type *type, const char *field_name,
569                      int maybe_missing)
570 {
571   int fieldno;
572   struct type *struct_type = check_typedef ((struct type *) type);
573
574   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
575     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
576       return fieldno;
577
578   if (!maybe_missing)
579     error (_("Unable to find field %s in struct %s.  Aborting"),
580            field_name, TYPE_NAME (struct_type));
581
582   return -1;
583 }
584
585 /* The length of the prefix of NAME prior to any "___" suffix.  */
586
587 int
588 ada_name_prefix_len (const char *name)
589 {
590   if (name == NULL)
591     return 0;
592   else
593     {
594       const char *p = strstr (name, "___");
595
596       if (p == NULL)
597         return strlen (name);
598       else
599         return p - name;
600     }
601 }
602
603 /* Return non-zero if SUFFIX is a suffix of STR.
604    Return zero if STR is null.  */
605
606 static int
607 is_suffix (const char *str, const char *suffix)
608 {
609   int len1, len2;
610
611   if (str == NULL)
612     return 0;
613   len1 = strlen (str);
614   len2 = strlen (suffix);
615   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
616 }
617
618 /* The contents of value VAL, treated as a value of type TYPE.  The
619    result is an lval in memory if VAL is.  */
620
621 static struct value *
622 coerce_unspec_val_to_type (struct value *val, struct type *type)
623 {
624   type = ada_check_typedef (type);
625   if (value_type (val) == type)
626     return val;
627   else
628     {
629       struct value *result;
630
631       /* Make sure that the object size is not unreasonable before
632          trying to allocate some memory for it.  */
633       ada_ensure_varsize_limit (type);
634
635       if (value_lazy (val)
636           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
637         result = allocate_value_lazy (type);
638       else
639         {
640           result = allocate_value (type);
641           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
642         }
643       set_value_component_location (result, val);
644       set_value_bitsize (result, value_bitsize (val));
645       set_value_bitpos (result, value_bitpos (val));
646       if (VALUE_LVAL (result) == lval_memory)
647         set_value_address (result, value_address (val));
648       return result;
649     }
650 }
651
652 static const gdb_byte *
653 cond_offset_host (const gdb_byte *valaddr, long offset)
654 {
655   if (valaddr == NULL)
656     return NULL;
657   else
658     return valaddr + offset;
659 }
660
661 static CORE_ADDR
662 cond_offset_target (CORE_ADDR address, long offset)
663 {
664   if (address == 0)
665     return 0;
666   else
667     return address + offset;
668 }
669
670 /* Issue a warning (as for the definition of warning in utils.c, but
671    with exactly one argument rather than ...), unless the limit on the
672    number of warnings has passed during the evaluation of the current
673    expression.  */
674
675 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
676    provided by "complaint".  */
677 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
678
679 static void
680 lim_warning (const char *format, ...)
681 {
682   va_list args;
683
684   va_start (args, format);
685   warnings_issued += 1;
686   if (warnings_issued <= warning_limit)
687     vwarning (format, args);
688
689   va_end (args);
690 }
691
692 /* Issue an error if the size of an object of type T is unreasonable,
693    i.e. if it would be a bad idea to allocate a value of this type in
694    GDB.  */
695
696 void
697 ada_ensure_varsize_limit (const struct type *type)
698 {
699   if (TYPE_LENGTH (type) > varsize_limit)
700     error (_("object size is larger than varsize-limit"));
701 }
702
703 /* Maximum value of a SIZE-byte signed integer type.  */
704 static LONGEST
705 max_of_size (int size)
706 {
707   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
708
709   return top_bit | (top_bit - 1);
710 }
711
712 /* Minimum value of a SIZE-byte signed integer type.  */
713 static LONGEST
714 min_of_size (int size)
715 {
716   return -max_of_size (size) - 1;
717 }
718
719 /* Maximum value of a SIZE-byte unsigned integer type.  */
720 static ULONGEST
721 umax_of_size (int size)
722 {
723   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
724
725   return top_bit | (top_bit - 1);
726 }
727
728 /* Maximum value of integral type T, as a signed quantity.  */
729 static LONGEST
730 max_of_type (struct type *t)
731 {
732   if (TYPE_UNSIGNED (t))
733     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
734   else
735     return max_of_size (TYPE_LENGTH (t));
736 }
737
738 /* Minimum value of integral type T, as a signed quantity.  */
739 static LONGEST
740 min_of_type (struct type *t)
741 {
742   if (TYPE_UNSIGNED (t)) 
743     return 0;
744   else
745     return min_of_size (TYPE_LENGTH (t));
746 }
747
748 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
749 LONGEST
750 ada_discrete_type_high_bound (struct type *type)
751 {
752   type = resolve_dynamic_type (type, {}, 0);
753   switch (type->code ())
754     {
755     case TYPE_CODE_RANGE:
756       return TYPE_HIGH_BOUND (type);
757     case TYPE_CODE_ENUM:
758       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
759     case TYPE_CODE_BOOL:
760       return 1;
761     case TYPE_CODE_CHAR:
762     case TYPE_CODE_INT:
763       return max_of_type (type);
764     default:
765       error (_("Unexpected type in ada_discrete_type_high_bound."));
766     }
767 }
768
769 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
770 LONGEST
771 ada_discrete_type_low_bound (struct type *type)
772 {
773   type = resolve_dynamic_type (type, {}, 0);
774   switch (type->code ())
775     {
776     case TYPE_CODE_RANGE:
777       return TYPE_LOW_BOUND (type);
778     case TYPE_CODE_ENUM:
779       return TYPE_FIELD_ENUMVAL (type, 0);
780     case TYPE_CODE_BOOL:
781       return 0;
782     case TYPE_CODE_CHAR:
783     case TYPE_CODE_INT:
784       return min_of_type (type);
785     default:
786       error (_("Unexpected type in ada_discrete_type_low_bound."));
787     }
788 }
789
790 /* The identity on non-range types.  For range types, the underlying
791    non-range scalar type.  */
792
793 static struct type *
794 get_base_type (struct type *type)
795 {
796   while (type != NULL && type->code () == TYPE_CODE_RANGE)
797     {
798       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
799         return type;
800       type = TYPE_TARGET_TYPE (type);
801     }
802   return type;
803 }
804
805 /* Return a decoded version of the given VALUE.  This means returning
806    a value whose type is obtained by applying all the GNAT-specific
807    encodings, making the resulting type a static but standard description
808    of the initial type.  */
809
810 struct value *
811 ada_get_decoded_value (struct value *value)
812 {
813   struct type *type = ada_check_typedef (value_type (value));
814
815   if (ada_is_array_descriptor_type (type)
816       || (ada_is_constrained_packed_array_type (type)
817           && type->code () != TYPE_CODE_PTR))
818     {
819       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
820         value = ada_coerce_to_simple_array_ptr (value);
821       else
822         value = ada_coerce_to_simple_array (value);
823     }
824   else
825     value = ada_to_fixed_value (value);
826
827   return value;
828 }
829
830 /* Same as ada_get_decoded_value, but with the given TYPE.
831    Because there is no associated actual value for this type,
832    the resulting type might be a best-effort approximation in
833    the case of dynamic types.  */
834
835 struct type *
836 ada_get_decoded_type (struct type *type)
837 {
838   type = to_static_fixed_type (type);
839   if (ada_is_constrained_packed_array_type (type))
840     type = ada_coerce_to_simple_array_type (type);
841   return type;
842 }
843
844 \f
845
846                                 /* Language Selection */
847
848 /* If the main program is in Ada, return language_ada, otherwise return LANG
849    (the main program is in Ada iif the adainit symbol is found).  */
850
851 static enum language
852 ada_update_initial_language (enum language lang)
853 {
854   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
855     return language_ada;
856
857   return lang;
858 }
859
860 /* If the main procedure is written in Ada, then return its name.
861    The result is good until the next call.  Return NULL if the main
862    procedure doesn't appear to be in Ada.  */
863
864 char *
865 ada_main_name (void)
866 {
867   struct bound_minimal_symbol msym;
868   static gdb::unique_xmalloc_ptr<char> main_program_name;
869
870   /* For Ada, the name of the main procedure is stored in a specific
871      string constant, generated by the binder.  Look for that symbol,
872      extract its address, and then read that string.  If we didn't find
873      that string, then most probably the main procedure is not written
874      in Ada.  */
875   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
876
877   if (msym.minsym != NULL)
878     {
879       CORE_ADDR main_program_name_addr;
880       int err_code;
881
882       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
883       if (main_program_name_addr == 0)
884         error (_("Invalid address for Ada main program name."));
885
886       target_read_string (main_program_name_addr, &main_program_name,
887                           1024, &err_code);
888
889       if (err_code != 0)
890         return NULL;
891       return main_program_name.get ();
892     }
893
894   /* The main procedure doesn't seem to be in Ada.  */
895   return NULL;
896 }
897 \f
898                                 /* Symbols */
899
900 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
901    of NULLs.  */
902
903 const struct ada_opname_map ada_opname_table[] = {
904   {"Oadd", "\"+\"", BINOP_ADD},
905   {"Osubtract", "\"-\"", BINOP_SUB},
906   {"Omultiply", "\"*\"", BINOP_MUL},
907   {"Odivide", "\"/\"", BINOP_DIV},
908   {"Omod", "\"mod\"", BINOP_MOD},
909   {"Orem", "\"rem\"", BINOP_REM},
910   {"Oexpon", "\"**\"", BINOP_EXP},
911   {"Olt", "\"<\"", BINOP_LESS},
912   {"Ole", "\"<=\"", BINOP_LEQ},
913   {"Ogt", "\">\"", BINOP_GTR},
914   {"Oge", "\">=\"", BINOP_GEQ},
915   {"Oeq", "\"=\"", BINOP_EQUAL},
916   {"One", "\"/=\"", BINOP_NOTEQUAL},
917   {"Oand", "\"and\"", BINOP_BITWISE_AND},
918   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
919   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
920   {"Oconcat", "\"&\"", BINOP_CONCAT},
921   {"Oabs", "\"abs\"", UNOP_ABS},
922   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
923   {"Oadd", "\"+\"", UNOP_PLUS},
924   {"Osubtract", "\"-\"", UNOP_NEG},
925   {NULL, NULL}
926 };
927
928 /* The "encoded" form of DECODED, according to GNAT conventions.  The
929    result is valid until the next call to ada_encode.  If
930    THROW_ERRORS, throw an error if invalid operator name is found.
931    Otherwise, return NULL in that case.  */
932
933 static char *
934 ada_encode_1 (const char *decoded, bool throw_errors)
935 {
936   static char *encoding_buffer = NULL;
937   static size_t encoding_buffer_size = 0;
938   const char *p;
939   int k;
940
941   if (decoded == NULL)
942     return NULL;
943
944   GROW_VECT (encoding_buffer, encoding_buffer_size,
945              2 * strlen (decoded) + 10);
946
947   k = 0;
948   for (p = decoded; *p != '\0'; p += 1)
949     {
950       if (*p == '.')
951         {
952           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
953           k += 2;
954         }
955       else if (*p == '"')
956         {
957           const struct ada_opname_map *mapping;
958
959           for (mapping = ada_opname_table;
960                mapping->encoded != NULL
961                && !startswith (p, mapping->decoded); mapping += 1)
962             ;
963           if (mapping->encoded == NULL)
964             {
965               if (throw_errors)
966                 error (_("invalid Ada operator name: %s"), p);
967               else
968                 return NULL;
969             }
970           strcpy (encoding_buffer + k, mapping->encoded);
971           k += strlen (mapping->encoded);
972           break;
973         }
974       else
975         {
976           encoding_buffer[k] = *p;
977           k += 1;
978         }
979     }
980
981   encoding_buffer[k] = '\0';
982   return encoding_buffer;
983 }
984
985 /* The "encoded" form of DECODED, according to GNAT conventions.
986    The result is valid until the next call to ada_encode.  */
987
988 char *
989 ada_encode (const char *decoded)
990 {
991   return ada_encode_1 (decoded, true);
992 }
993
994 /* Return NAME folded to lower case, or, if surrounded by single
995    quotes, unfolded, but with the quotes stripped away.  Result good
996    to next call.  */
997
998 static char *
999 ada_fold_name (gdb::string_view name)
1000 {
1001   static char *fold_buffer = NULL;
1002   static size_t fold_buffer_size = 0;
1003
1004   int len = name.size ();
1005   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1006
1007   if (name[0] == '\'')
1008     {
1009       strncpy (fold_buffer, name.data () + 1, len - 2);
1010       fold_buffer[len - 2] = '\000';
1011     }
1012   else
1013     {
1014       int i;
1015
1016       for (i = 0; i <= len; i += 1)
1017         fold_buffer[i] = tolower (name[i]);
1018     }
1019
1020   return fold_buffer;
1021 }
1022
1023 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1024
1025 static int
1026 is_lower_alphanum (const char c)
1027 {
1028   return (isdigit (c) || (isalpha (c) && islower (c)));
1029 }
1030
1031 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1032    This function saves in LEN the length of that same symbol name but
1033    without either of these suffixes:
1034      . .{DIGIT}+
1035      . ${DIGIT}+
1036      . ___{DIGIT}+
1037      . __{DIGIT}+.
1038
1039    These are suffixes introduced by the compiler for entities such as
1040    nested subprogram for instance, in order to avoid name clashes.
1041    They do not serve any purpose for the debugger.  */
1042
1043 static void
1044 ada_remove_trailing_digits (const char *encoded, int *len)
1045 {
1046   if (*len > 1 && isdigit (encoded[*len - 1]))
1047     {
1048       int i = *len - 2;
1049
1050       while (i > 0 && isdigit (encoded[i]))
1051         i--;
1052       if (i >= 0 && encoded[i] == '.')
1053         *len = i;
1054       else if (i >= 0 && encoded[i] == '$')
1055         *len = i;
1056       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1057         *len = i - 2;
1058       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1059         *len = i - 1;
1060     }
1061 }
1062
1063 /* Remove the suffix introduced by the compiler for protected object
1064    subprograms.  */
1065
1066 static void
1067 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1068 {
1069   /* Remove trailing N.  */
1070
1071   /* Protected entry subprograms are broken into two
1072      separate subprograms: The first one is unprotected, and has
1073      a 'N' suffix; the second is the protected version, and has
1074      the 'P' suffix.  The second calls the first one after handling
1075      the protection.  Since the P subprograms are internally generated,
1076      we leave these names undecoded, giving the user a clue that this
1077      entity is internal.  */
1078
1079   if (*len > 1
1080       && encoded[*len - 1] == 'N'
1081       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1082     *len = *len - 1;
1083 }
1084
1085 /* If ENCODED follows the GNAT entity encoding conventions, then return
1086    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1087    replaced by ENCODED.  */
1088
1089 std::string
1090 ada_decode (const char *encoded)
1091 {
1092   int i, j;
1093   int len0;
1094   const char *p;
1095   int at_start_name;
1096   std::string decoded;
1097
1098   /* With function descriptors on PPC64, the value of a symbol named
1099      ".FN", if it exists, is the entry point of the function "FN".  */
1100   if (encoded[0] == '.')
1101     encoded += 1;
1102
1103   /* The name of the Ada main procedure starts with "_ada_".
1104      This prefix is not part of the decoded name, so skip this part
1105      if we see this prefix.  */
1106   if (startswith (encoded, "_ada_"))
1107     encoded += 5;
1108
1109   /* If the name starts with '_', then it is not a properly encoded
1110      name, so do not attempt to decode it.  Similarly, if the name
1111      starts with '<', the name should not be decoded.  */
1112   if (encoded[0] == '_' || encoded[0] == '<')
1113     goto Suppress;
1114
1115   len0 = strlen (encoded);
1116
1117   ada_remove_trailing_digits (encoded, &len0);
1118   ada_remove_po_subprogram_suffix (encoded, &len0);
1119
1120   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1121      the suffix is located before the current "end" of ENCODED.  We want
1122      to avoid re-matching parts of ENCODED that have previously been
1123      marked as discarded (by decrementing LEN0).  */
1124   p = strstr (encoded, "___");
1125   if (p != NULL && p - encoded < len0 - 3)
1126     {
1127       if (p[3] == 'X')
1128         len0 = p - encoded;
1129       else
1130         goto Suppress;
1131     }
1132
1133   /* Remove any trailing TKB suffix.  It tells us that this symbol
1134      is for the body of a task, but that information does not actually
1135      appear in the decoded name.  */
1136
1137   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1138     len0 -= 3;
1139
1140   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1141      from the TKB suffix because it is used for non-anonymous task
1142      bodies.  */
1143
1144   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1145     len0 -= 2;
1146
1147   /* Remove trailing "B" suffixes.  */
1148   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1149
1150   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1151     len0 -= 1;
1152
1153   /* Make decoded big enough for possible expansion by operator name.  */
1154
1155   decoded.resize (2 * len0 + 1, 'X');
1156
1157   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1158
1159   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1160     {
1161       i = len0 - 2;
1162       while ((i >= 0 && isdigit (encoded[i]))
1163              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1164         i -= 1;
1165       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1166         len0 = i - 1;
1167       else if (encoded[i] == '$')
1168         len0 = i;
1169     }
1170
1171   /* The first few characters that are not alphabetic are not part
1172      of any encoding we use, so we can copy them over verbatim.  */
1173
1174   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1175     decoded[j] = encoded[i];
1176
1177   at_start_name = 1;
1178   while (i < len0)
1179     {
1180       /* Is this a symbol function?  */
1181       if (at_start_name && encoded[i] == 'O')
1182         {
1183           int k;
1184
1185           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1186             {
1187               int op_len = strlen (ada_opname_table[k].encoded);
1188               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1189                             op_len - 1) == 0)
1190                   && !isalnum (encoded[i + op_len]))
1191                 {
1192                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1193                   at_start_name = 0;
1194                   i += op_len;
1195                   j += strlen (ada_opname_table[k].decoded);
1196                   break;
1197                 }
1198             }
1199           if (ada_opname_table[k].encoded != NULL)
1200             continue;
1201         }
1202       at_start_name = 0;
1203
1204       /* Replace "TK__" with "__", which will eventually be translated
1205          into "." (just below).  */
1206
1207       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1208         i += 2;
1209
1210       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1211          be translated into "." (just below).  These are internal names
1212          generated for anonymous blocks inside which our symbol is nested.  */
1213
1214       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1215           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1216           && isdigit (encoded [i+4]))
1217         {
1218           int k = i + 5;
1219           
1220           while (k < len0 && isdigit (encoded[k]))
1221             k++;  /* Skip any extra digit.  */
1222
1223           /* Double-check that the "__B_{DIGITS}+" sequence we found
1224              is indeed followed by "__".  */
1225           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1226             i = k;
1227         }
1228
1229       /* Remove _E{DIGITS}+[sb] */
1230
1231       /* Just as for protected object subprograms, there are 2 categories
1232          of subprograms created by the compiler for each entry.  The first
1233          one implements the actual entry code, and has a suffix following
1234          the convention above; the second one implements the barrier and
1235          uses the same convention as above, except that the 'E' is replaced
1236          by a 'B'.
1237
1238          Just as above, we do not decode the name of barrier functions
1239          to give the user a clue that the code he is debugging has been
1240          internally generated.  */
1241
1242       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1243           && isdigit (encoded[i+2]))
1244         {
1245           int k = i + 3;
1246
1247           while (k < len0 && isdigit (encoded[k]))
1248             k++;
1249
1250           if (k < len0
1251               && (encoded[k] == 'b' || encoded[k] == 's'))
1252             {
1253               k++;
1254               /* Just as an extra precaution, make sure that if this
1255                  suffix is followed by anything else, it is a '_'.
1256                  Otherwise, we matched this sequence by accident.  */
1257               if (k == len0
1258                   || (k < len0 && encoded[k] == '_'))
1259                 i = k;
1260             }
1261         }
1262
1263       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1264          the GNAT front-end in protected object subprograms.  */
1265
1266       if (i < len0 + 3
1267           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1268         {
1269           /* Backtrack a bit up until we reach either the begining of
1270              the encoded name, or "__".  Make sure that we only find
1271              digits or lowercase characters.  */
1272           const char *ptr = encoded + i - 1;
1273
1274           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1275             ptr--;
1276           if (ptr < encoded
1277               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1278             i++;
1279         }
1280
1281       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1282         {
1283           /* This is a X[bn]* sequence not separated from the previous
1284              part of the name with a non-alpha-numeric character (in other
1285              words, immediately following an alpha-numeric character), then
1286              verify that it is placed at the end of the encoded name.  If
1287              not, then the encoding is not valid and we should abort the
1288              decoding.  Otherwise, just skip it, it is used in body-nested
1289              package names.  */
1290           do
1291             i += 1;
1292           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1293           if (i < len0)
1294             goto Suppress;
1295         }
1296       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1297         {
1298          /* Replace '__' by '.'.  */
1299           decoded[j] = '.';
1300           at_start_name = 1;
1301           i += 2;
1302           j += 1;
1303         }
1304       else
1305         {
1306           /* It's a character part of the decoded name, so just copy it
1307              over.  */
1308           decoded[j] = encoded[i];
1309           i += 1;
1310           j += 1;
1311         }
1312     }
1313   decoded.resize (j);
1314
1315   /* Decoded names should never contain any uppercase character.
1316      Double-check this, and abort the decoding if we find one.  */
1317
1318   for (i = 0; i < decoded.length(); ++i)
1319     if (isupper (decoded[i]) || decoded[i] == ' ')
1320       goto Suppress;
1321
1322   return decoded;
1323
1324 Suppress:
1325   if (encoded[0] == '<')
1326     decoded = encoded;
1327   else
1328     decoded = '<' + std::string(encoded) + '>';
1329   return decoded;
1330
1331 }
1332
1333 /* Table for keeping permanent unique copies of decoded names.  Once
1334    allocated, names in this table are never released.  While this is a
1335    storage leak, it should not be significant unless there are massive
1336    changes in the set of decoded names in successive versions of a 
1337    symbol table loaded during a single session.  */
1338 static struct htab *decoded_names_store;
1339
1340 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1341    in the language-specific part of GSYMBOL, if it has not been
1342    previously computed.  Tries to save the decoded name in the same
1343    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1344    in any case, the decoded symbol has a lifetime at least that of
1345    GSYMBOL).
1346    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1347    const, but nevertheless modified to a semantically equivalent form
1348    when a decoded name is cached in it.  */
1349
1350 const char *
1351 ada_decode_symbol (const struct general_symbol_info *arg)
1352 {
1353   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1354   const char **resultp =
1355     &gsymbol->language_specific.demangled_name;
1356
1357   if (!gsymbol->ada_mangled)
1358     {
1359       std::string decoded = ada_decode (gsymbol->linkage_name ());
1360       struct obstack *obstack = gsymbol->language_specific.obstack;
1361
1362       gsymbol->ada_mangled = 1;
1363
1364       if (obstack != NULL)
1365         *resultp = obstack_strdup (obstack, decoded.c_str ());
1366       else
1367         {
1368           /* Sometimes, we can't find a corresponding objfile, in
1369              which case, we put the result on the heap.  Since we only
1370              decode when needed, we hope this usually does not cause a
1371              significant memory leak (FIXME).  */
1372
1373           char **slot = (char **) htab_find_slot (decoded_names_store,
1374                                                   decoded.c_str (), INSERT);
1375
1376           if (*slot == NULL)
1377             *slot = xstrdup (decoded.c_str ());
1378           *resultp = *slot;
1379         }
1380     }
1381
1382   return *resultp;
1383 }
1384
1385 static char *
1386 ada_la_decode (const char *encoded, int options)
1387 {
1388   return xstrdup (ada_decode (encoded).c_str ());
1389 }
1390
1391 /* Implement la_sniff_from_mangled_name for Ada.  */
1392
1393 static int
1394 ada_sniff_from_mangled_name (const char *mangled, char **out)
1395 {
1396   std::string demangled = ada_decode (mangled);
1397
1398   *out = NULL;
1399
1400   if (demangled != mangled && demangled[0] != '<')
1401     {
1402       /* Set the gsymbol language to Ada, but still return 0.
1403          Two reasons for that:
1404
1405          1. For Ada, we prefer computing the symbol's decoded name
1406          on the fly rather than pre-compute it, in order to save
1407          memory (Ada projects are typically very large).
1408
1409          2. There are some areas in the definition of the GNAT
1410          encoding where, with a bit of bad luck, we might be able
1411          to decode a non-Ada symbol, generating an incorrect
1412          demangled name (Eg: names ending with "TB" for instance
1413          are identified as task bodies and so stripped from
1414          the decoded name returned).
1415
1416          Returning 1, here, but not setting *DEMANGLED, helps us get a
1417          little bit of the best of both worlds.  Because we're last,
1418          we should not affect any of the other languages that were
1419          able to demangle the symbol before us; we get to correctly
1420          tag Ada symbols as such; and even if we incorrectly tagged a
1421          non-Ada symbol, which should be rare, any routing through the
1422          Ada language should be transparent (Ada tries to behave much
1423          like C/C++ with non-Ada symbols).  */
1424       return 1;
1425     }
1426
1427   return 0;
1428 }
1429
1430 \f
1431
1432                                 /* Arrays */
1433
1434 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1435    generated by the GNAT compiler to describe the index type used
1436    for each dimension of an array, check whether it follows the latest
1437    known encoding.  If not, fix it up to conform to the latest encoding.
1438    Otherwise, do nothing.  This function also does nothing if
1439    INDEX_DESC_TYPE is NULL.
1440
1441    The GNAT encoding used to describe the array index type evolved a bit.
1442    Initially, the information would be provided through the name of each
1443    field of the structure type only, while the type of these fields was
1444    described as unspecified and irrelevant.  The debugger was then expected
1445    to perform a global type lookup using the name of that field in order
1446    to get access to the full index type description.  Because these global
1447    lookups can be very expensive, the encoding was later enhanced to make
1448    the global lookup unnecessary by defining the field type as being
1449    the full index type description.
1450
1451    The purpose of this routine is to allow us to support older versions
1452    of the compiler by detecting the use of the older encoding, and by
1453    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1454    we essentially replace each field's meaningless type by the associated
1455    index subtype).  */
1456
1457 void
1458 ada_fixup_array_indexes_type (struct type *index_desc_type)
1459 {
1460   int i;
1461
1462   if (index_desc_type == NULL)
1463     return;
1464   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1465
1466   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1467      to check one field only, no need to check them all).  If not, return
1468      now.
1469
1470      If our INDEX_DESC_TYPE was generated using the older encoding,
1471      the field type should be a meaningless integer type whose name
1472      is not equal to the field name.  */
1473   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1474       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1475                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1476     return;
1477
1478   /* Fixup each field of INDEX_DESC_TYPE.  */
1479   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1480    {
1481      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1482      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1483
1484      if (raw_type)
1485        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1486    }
1487 }
1488
1489 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1490
1491 static const char *bound_name[] = {
1492   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1493   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1494 };
1495
1496 /* Maximum number of array dimensions we are prepared to handle.  */
1497
1498 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1499
1500
1501 /* The desc_* routines return primitive portions of array descriptors
1502    (fat pointers).  */
1503
1504 /* The descriptor or array type, if any, indicated by TYPE; removes
1505    level of indirection, if needed.  */
1506
1507 static struct type *
1508 desc_base_type (struct type *type)
1509 {
1510   if (type == NULL)
1511     return NULL;
1512   type = ada_check_typedef (type);
1513   if (type->code () == TYPE_CODE_TYPEDEF)
1514     type = ada_typedef_target_type (type);
1515
1516   if (type != NULL
1517       && (type->code () == TYPE_CODE_PTR
1518           || type->code () == TYPE_CODE_REF))
1519     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1520   else
1521     return type;
1522 }
1523
1524 /* True iff TYPE indicates a "thin" array pointer type.  */
1525
1526 static int
1527 is_thin_pntr (struct type *type)
1528 {
1529   return
1530     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1531     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1532 }
1533
1534 /* The descriptor type for thin pointer type TYPE.  */
1535
1536 static struct type *
1537 thin_descriptor_type (struct type *type)
1538 {
1539   struct type *base_type = desc_base_type (type);
1540
1541   if (base_type == NULL)
1542     return NULL;
1543   if (is_suffix (ada_type_name (base_type), "___XVE"))
1544     return base_type;
1545   else
1546     {
1547       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1548
1549       if (alt_type == NULL)
1550         return base_type;
1551       else
1552         return alt_type;
1553     }
1554 }
1555
1556 /* A pointer to the array data for thin-pointer value VAL.  */
1557
1558 static struct value *
1559 thin_data_pntr (struct value *val)
1560 {
1561   struct type *type = ada_check_typedef (value_type (val));
1562   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1563
1564   data_type = lookup_pointer_type (data_type);
1565
1566   if (type->code () == TYPE_CODE_PTR)
1567     return value_cast (data_type, value_copy (val));
1568   else
1569     return value_from_longest (data_type, value_address (val));
1570 }
1571
1572 /* True iff TYPE indicates a "thick" array pointer type.  */
1573
1574 static int
1575 is_thick_pntr (struct type *type)
1576 {
1577   type = desc_base_type (type);
1578   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1579           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1580 }
1581
1582 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1583    pointer to one, the type of its bounds data; otherwise, NULL.  */
1584
1585 static struct type *
1586 desc_bounds_type (struct type *type)
1587 {
1588   struct type *r;
1589
1590   type = desc_base_type (type);
1591
1592   if (type == NULL)
1593     return NULL;
1594   else if (is_thin_pntr (type))
1595     {
1596       type = thin_descriptor_type (type);
1597       if (type == NULL)
1598         return NULL;
1599       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1600       if (r != NULL)
1601         return ada_check_typedef (r);
1602     }
1603   else if (type->code () == TYPE_CODE_STRUCT)
1604     {
1605       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1606       if (r != NULL)
1607         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1608     }
1609   return NULL;
1610 }
1611
1612 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1613    one, a pointer to its bounds data.   Otherwise NULL.  */
1614
1615 static struct value *
1616 desc_bounds (struct value *arr)
1617 {
1618   struct type *type = ada_check_typedef (value_type (arr));
1619
1620   if (is_thin_pntr (type))
1621     {
1622       struct type *bounds_type =
1623         desc_bounds_type (thin_descriptor_type (type));
1624       LONGEST addr;
1625
1626       if (bounds_type == NULL)
1627         error (_("Bad GNAT array descriptor"));
1628
1629       /* NOTE: The following calculation is not really kosher, but
1630          since desc_type is an XVE-encoded type (and shouldn't be),
1631          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1632       if (type->code () == TYPE_CODE_PTR)
1633         addr = value_as_long (arr);
1634       else
1635         addr = value_address (arr);
1636
1637       return
1638         value_from_longest (lookup_pointer_type (bounds_type),
1639                             addr - TYPE_LENGTH (bounds_type));
1640     }
1641
1642   else if (is_thick_pntr (type))
1643     {
1644       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1645                                                _("Bad GNAT array descriptor"));
1646       struct type *p_bounds_type = value_type (p_bounds);
1647
1648       if (p_bounds_type
1649           && p_bounds_type->code () == TYPE_CODE_PTR)
1650         {
1651           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1652
1653           if (TYPE_STUB (target_type))
1654             p_bounds = value_cast (lookup_pointer_type
1655                                    (ada_check_typedef (target_type)),
1656                                    p_bounds);
1657         }
1658       else
1659         error (_("Bad GNAT array descriptor"));
1660
1661       return p_bounds;
1662     }
1663   else
1664     return NULL;
1665 }
1666
1667 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1668    position of the field containing the address of the bounds data.  */
1669
1670 static int
1671 fat_pntr_bounds_bitpos (struct type *type)
1672 {
1673   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1674 }
1675
1676 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1677    size of the field containing the address of the bounds data.  */
1678
1679 static int
1680 fat_pntr_bounds_bitsize (struct type *type)
1681 {
1682   type = desc_base_type (type);
1683
1684   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1685     return TYPE_FIELD_BITSIZE (type, 1);
1686   else
1687     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1688 }
1689
1690 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1691    pointer to one, the type of its array data (a array-with-no-bounds type);
1692    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1693    data.  */
1694
1695 static struct type *
1696 desc_data_target_type (struct type *type)
1697 {
1698   type = desc_base_type (type);
1699
1700   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1701   if (is_thin_pntr (type))
1702     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1703   else if (is_thick_pntr (type))
1704     {
1705       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1706
1707       if (data_type
1708           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1709         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1710     }
1711
1712   return NULL;
1713 }
1714
1715 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1716    its array data.  */
1717
1718 static struct value *
1719 desc_data (struct value *arr)
1720 {
1721   struct type *type = value_type (arr);
1722
1723   if (is_thin_pntr (type))
1724     return thin_data_pntr (arr);
1725   else if (is_thick_pntr (type))
1726     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1727                              _("Bad GNAT array descriptor"));
1728   else
1729     return NULL;
1730 }
1731
1732
1733 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1734    position of the field containing the address of the data.  */
1735
1736 static int
1737 fat_pntr_data_bitpos (struct type *type)
1738 {
1739   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1740 }
1741
1742 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1743    size of the field containing the address of the data.  */
1744
1745 static int
1746 fat_pntr_data_bitsize (struct type *type)
1747 {
1748   type = desc_base_type (type);
1749
1750   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1751     return TYPE_FIELD_BITSIZE (type, 0);
1752   else
1753     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1754 }
1755
1756 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1757    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1758    bound, if WHICH is 1.  The first bound is I=1.  */
1759
1760 static struct value *
1761 desc_one_bound (struct value *bounds, int i, int which)
1762 {
1763   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1764                            _("Bad GNAT array descriptor bounds"));
1765 }
1766
1767 /* If BOUNDS is an array-bounds structure type, return the bit position
1768    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1769    bound, if WHICH is 1.  The first bound is I=1.  */
1770
1771 static int
1772 desc_bound_bitpos (struct type *type, int i, int which)
1773 {
1774   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1775 }
1776
1777 /* If BOUNDS is an array-bounds structure type, return the bit field size
1778    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1779    bound, if WHICH is 1.  The first bound is I=1.  */
1780
1781 static int
1782 desc_bound_bitsize (struct type *type, int i, int which)
1783 {
1784   type = desc_base_type (type);
1785
1786   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1787     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1788   else
1789     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1790 }
1791
1792 /* If TYPE is the type of an array-bounds structure, the type of its
1793    Ith bound (numbering from 1).  Otherwise, NULL.  */
1794
1795 static struct type *
1796 desc_index_type (struct type *type, int i)
1797 {
1798   type = desc_base_type (type);
1799
1800   if (type->code () == TYPE_CODE_STRUCT)
1801     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1802   else
1803     return NULL;
1804 }
1805
1806 /* The number of index positions in the array-bounds type TYPE.
1807    Return 0 if TYPE is NULL.  */
1808
1809 static int
1810 desc_arity (struct type *type)
1811 {
1812   type = desc_base_type (type);
1813
1814   if (type != NULL)
1815     return TYPE_NFIELDS (type) / 2;
1816   return 0;
1817 }
1818
1819 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1820    an array descriptor type (representing an unconstrained array
1821    type).  */
1822
1823 static int
1824 ada_is_direct_array_type (struct type *type)
1825 {
1826   if (type == NULL)
1827     return 0;
1828   type = ada_check_typedef (type);
1829   return (type->code () == TYPE_CODE_ARRAY
1830           || ada_is_array_descriptor_type (type));
1831 }
1832
1833 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1834  * to one.  */
1835
1836 static int
1837 ada_is_array_type (struct type *type)
1838 {
1839   while (type != NULL
1840          && (type->code () == TYPE_CODE_PTR
1841              || type->code () == TYPE_CODE_REF))
1842     type = TYPE_TARGET_TYPE (type);
1843   return ada_is_direct_array_type (type);
1844 }
1845
1846 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1847
1848 int
1849 ada_is_simple_array_type (struct type *type)
1850 {
1851   if (type == NULL)
1852     return 0;
1853   type = ada_check_typedef (type);
1854   return (type->code () == TYPE_CODE_ARRAY
1855           || (type->code () == TYPE_CODE_PTR
1856               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1857                   == TYPE_CODE_ARRAY)));
1858 }
1859
1860 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1861
1862 int
1863 ada_is_array_descriptor_type (struct type *type)
1864 {
1865   struct type *data_type = desc_data_target_type (type);
1866
1867   if (type == NULL)
1868     return 0;
1869   type = ada_check_typedef (type);
1870   return (data_type != NULL
1871           && data_type->code () == TYPE_CODE_ARRAY
1872           && desc_arity (desc_bounds_type (type)) > 0);
1873 }
1874
1875 /* Non-zero iff type is a partially mal-formed GNAT array
1876    descriptor.  FIXME: This is to compensate for some problems with
1877    debugging output from GNAT.  Re-examine periodically to see if it
1878    is still needed.  */
1879
1880 int
1881 ada_is_bogus_array_descriptor (struct type *type)
1882 {
1883   return
1884     type != NULL
1885     && type->code () == TYPE_CODE_STRUCT
1886     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1887         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1888     && !ada_is_array_descriptor_type (type);
1889 }
1890
1891
1892 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1893    (fat pointer) returns the type of the array data described---specifically,
1894    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1895    in from the descriptor; otherwise, they are left unspecified.  If
1896    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1897    returns NULL.  The result is simply the type of ARR if ARR is not
1898    a descriptor.  */
1899
1900 static struct type *
1901 ada_type_of_array (struct value *arr, int bounds)
1902 {
1903   if (ada_is_constrained_packed_array_type (value_type (arr)))
1904     return decode_constrained_packed_array_type (value_type (arr));
1905
1906   if (!ada_is_array_descriptor_type (value_type (arr)))
1907     return value_type (arr);
1908
1909   if (!bounds)
1910     {
1911       struct type *array_type =
1912         ada_check_typedef (desc_data_target_type (value_type (arr)));
1913
1914       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1915         TYPE_FIELD_BITSIZE (array_type, 0) =
1916           decode_packed_array_bitsize (value_type (arr));
1917       
1918       return array_type;
1919     }
1920   else
1921     {
1922       struct type *elt_type;
1923       int arity;
1924       struct value *descriptor;
1925
1926       elt_type = ada_array_element_type (value_type (arr), -1);
1927       arity = ada_array_arity (value_type (arr));
1928
1929       if (elt_type == NULL || arity == 0)
1930         return ada_check_typedef (value_type (arr));
1931
1932       descriptor = desc_bounds (arr);
1933       if (value_as_long (descriptor) == 0)
1934         return NULL;
1935       while (arity > 0)
1936         {
1937           struct type *range_type = alloc_type_copy (value_type (arr));
1938           struct type *array_type = alloc_type_copy (value_type (arr));
1939           struct value *low = desc_one_bound (descriptor, arity, 0);
1940           struct value *high = desc_one_bound (descriptor, arity, 1);
1941
1942           arity -= 1;
1943           create_static_range_type (range_type, value_type (low),
1944                                     longest_to_int (value_as_long (low)),
1945                                     longest_to_int (value_as_long (high)));
1946           elt_type = create_array_type (array_type, elt_type, range_type);
1947
1948           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1949             {
1950               /* We need to store the element packed bitsize, as well as
1951                  recompute the array size, because it was previously
1952                  computed based on the unpacked element size.  */
1953               LONGEST lo = value_as_long (low);
1954               LONGEST hi = value_as_long (high);
1955
1956               TYPE_FIELD_BITSIZE (elt_type, 0) =
1957                 decode_packed_array_bitsize (value_type (arr));
1958               /* If the array has no element, then the size is already
1959                  zero, and does not need to be recomputed.  */
1960               if (lo < hi)
1961                 {
1962                   int array_bitsize =
1963                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1964
1965                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1966                 }
1967             }
1968         }
1969
1970       return lookup_pointer_type (elt_type);
1971     }
1972 }
1973
1974 /* If ARR does not represent an array, returns ARR unchanged.
1975    Otherwise, returns either a standard GDB array with bounds set
1976    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1977    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1978
1979 struct value *
1980 ada_coerce_to_simple_array_ptr (struct value *arr)
1981 {
1982   if (ada_is_array_descriptor_type (value_type (arr)))
1983     {
1984       struct type *arrType = ada_type_of_array (arr, 1);
1985
1986       if (arrType == NULL)
1987         return NULL;
1988       return value_cast (arrType, value_copy (desc_data (arr)));
1989     }
1990   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1991     return decode_constrained_packed_array (arr);
1992   else
1993     return arr;
1994 }
1995
1996 /* If ARR does not represent an array, returns ARR unchanged.
1997    Otherwise, returns a standard GDB array describing ARR (which may
1998    be ARR itself if it already is in the proper form).  */
1999
2000 struct value *
2001 ada_coerce_to_simple_array (struct value *arr)
2002 {
2003   if (ada_is_array_descriptor_type (value_type (arr)))
2004     {
2005       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2006
2007       if (arrVal == NULL)
2008         error (_("Bounds unavailable for null array pointer."));
2009       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2010       return value_ind (arrVal);
2011     }
2012   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2013     return decode_constrained_packed_array (arr);
2014   else
2015     return arr;
2016 }
2017
2018 /* If TYPE represents a GNAT array type, return it translated to an
2019    ordinary GDB array type (possibly with BITSIZE fields indicating
2020    packing).  For other types, is the identity.  */
2021
2022 struct type *
2023 ada_coerce_to_simple_array_type (struct type *type)
2024 {
2025   if (ada_is_constrained_packed_array_type (type))
2026     return decode_constrained_packed_array_type (type);
2027
2028   if (ada_is_array_descriptor_type (type))
2029     return ada_check_typedef (desc_data_target_type (type));
2030
2031   return type;
2032 }
2033
2034 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2035
2036 static int
2037 ada_is_packed_array_type  (struct type *type)
2038 {
2039   if (type == NULL)
2040     return 0;
2041   type = desc_base_type (type);
2042   type = ada_check_typedef (type);
2043   return
2044     ada_type_name (type) != NULL
2045     && strstr (ada_type_name (type), "___XP") != NULL;
2046 }
2047
2048 /* Non-zero iff TYPE represents a standard GNAT constrained
2049    packed-array type.  */
2050
2051 int
2052 ada_is_constrained_packed_array_type (struct type *type)
2053 {
2054   return ada_is_packed_array_type (type)
2055     && !ada_is_array_descriptor_type (type);
2056 }
2057
2058 /* Non-zero iff TYPE represents an array descriptor for a
2059    unconstrained packed-array type.  */
2060
2061 static int
2062 ada_is_unconstrained_packed_array_type (struct type *type)
2063 {
2064   return ada_is_packed_array_type (type)
2065     && ada_is_array_descriptor_type (type);
2066 }
2067
2068 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2069    return the size of its elements in bits.  */
2070
2071 static long
2072 decode_packed_array_bitsize (struct type *type)
2073 {
2074   const char *raw_name;
2075   const char *tail;
2076   long bits;
2077
2078   /* Access to arrays implemented as fat pointers are encoded as a typedef
2079      of the fat pointer type.  We need the name of the fat pointer type
2080      to do the decoding, so strip the typedef layer.  */
2081   if (type->code () == TYPE_CODE_TYPEDEF)
2082     type = ada_typedef_target_type (type);
2083
2084   raw_name = ada_type_name (ada_check_typedef (type));
2085   if (!raw_name)
2086     raw_name = ada_type_name (desc_base_type (type));
2087
2088   if (!raw_name)
2089     return 0;
2090
2091   tail = strstr (raw_name, "___XP");
2092   gdb_assert (tail != NULL);
2093
2094   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2095     {
2096       lim_warning
2097         (_("could not understand bit size information on packed array"));
2098       return 0;
2099     }
2100
2101   return bits;
2102 }
2103
2104 /* Given that TYPE is a standard GDB array type with all bounds filled
2105    in, and that the element size of its ultimate scalar constituents
2106    (that is, either its elements, or, if it is an array of arrays, its
2107    elements' elements, etc.) is *ELT_BITS, return an identical type,
2108    but with the bit sizes of its elements (and those of any
2109    constituent arrays) recorded in the BITSIZE components of its
2110    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2111    in bits.
2112
2113    Note that, for arrays whose index type has an XA encoding where
2114    a bound references a record discriminant, getting that discriminant,
2115    and therefore the actual value of that bound, is not possible
2116    because none of the given parameters gives us access to the record.
2117    This function assumes that it is OK in the context where it is being
2118    used to return an array whose bounds are still dynamic and where
2119    the length is arbitrary.  */
2120
2121 static struct type *
2122 constrained_packed_array_type (struct type *type, long *elt_bits)
2123 {
2124   struct type *new_elt_type;
2125   struct type *new_type;
2126   struct type *index_type_desc;
2127   struct type *index_type;
2128   LONGEST low_bound, high_bound;
2129
2130   type = ada_check_typedef (type);
2131   if (type->code () != TYPE_CODE_ARRAY)
2132     return type;
2133
2134   index_type_desc = ada_find_parallel_type (type, "___XA");
2135   if (index_type_desc)
2136     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2137                                       NULL);
2138   else
2139     index_type = TYPE_INDEX_TYPE (type);
2140
2141   new_type = alloc_type_copy (type);
2142   new_elt_type =
2143     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2144                                    elt_bits);
2145   create_array_type (new_type, new_elt_type, index_type);
2146   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2147   new_type->set_name (ada_type_name (type));
2148
2149   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2150        && is_dynamic_type (check_typedef (index_type)))
2151       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2152     low_bound = high_bound = 0;
2153   if (high_bound < low_bound)
2154     *elt_bits = TYPE_LENGTH (new_type) = 0;
2155   else
2156     {
2157       *elt_bits *= (high_bound - low_bound + 1);
2158       TYPE_LENGTH (new_type) =
2159         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2160     }
2161
2162   TYPE_FIXED_INSTANCE (new_type) = 1;
2163   return new_type;
2164 }
2165
2166 /* The array type encoded by TYPE, where
2167    ada_is_constrained_packed_array_type (TYPE).  */
2168
2169 static struct type *
2170 decode_constrained_packed_array_type (struct type *type)
2171 {
2172   const char *raw_name = ada_type_name (ada_check_typedef (type));
2173   char *name;
2174   const char *tail;
2175   struct type *shadow_type;
2176   long bits;
2177
2178   if (!raw_name)
2179     raw_name = ada_type_name (desc_base_type (type));
2180
2181   if (!raw_name)
2182     return NULL;
2183
2184   name = (char *) alloca (strlen (raw_name) + 1);
2185   tail = strstr (raw_name, "___XP");
2186   type = desc_base_type (type);
2187
2188   memcpy (name, raw_name, tail - raw_name);
2189   name[tail - raw_name] = '\000';
2190
2191   shadow_type = ada_find_parallel_type_with_name (type, name);
2192
2193   if (shadow_type == NULL)
2194     {
2195       lim_warning (_("could not find bounds information on packed array"));
2196       return NULL;
2197     }
2198   shadow_type = check_typedef (shadow_type);
2199
2200   if (shadow_type->code () != TYPE_CODE_ARRAY)
2201     {
2202       lim_warning (_("could not understand bounds "
2203                      "information on packed array"));
2204       return NULL;
2205     }
2206
2207   bits = decode_packed_array_bitsize (type);
2208   return constrained_packed_array_type (shadow_type, &bits);
2209 }
2210
2211 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2212    array, returns a simple array that denotes that array.  Its type is a
2213    standard GDB array type except that the BITSIZEs of the array
2214    target types are set to the number of bits in each element, and the
2215    type length is set appropriately.  */
2216
2217 static struct value *
2218 decode_constrained_packed_array (struct value *arr)
2219 {
2220   struct type *type;
2221
2222   /* If our value is a pointer, then dereference it. Likewise if
2223      the value is a reference.  Make sure that this operation does not
2224      cause the target type to be fixed, as this would indirectly cause
2225      this array to be decoded.  The rest of the routine assumes that
2226      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2227      and "value_ind" routines to perform the dereferencing, as opposed
2228      to using "ada_coerce_ref" or "ada_value_ind".  */
2229   arr = coerce_ref (arr);
2230   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2231     arr = value_ind (arr);
2232
2233   type = decode_constrained_packed_array_type (value_type (arr));
2234   if (type == NULL)
2235     {
2236       error (_("can't unpack array"));
2237       return NULL;
2238     }
2239
2240   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2241       && ada_is_modular_type (value_type (arr)))
2242     {
2243        /* This is a (right-justified) modular type representing a packed
2244          array with no wrapper.  In order to interpret the value through
2245          the (left-justified) packed array type we just built, we must
2246          first left-justify it.  */
2247       int bit_size, bit_pos;
2248       ULONGEST mod;
2249
2250       mod = ada_modulus (value_type (arr)) - 1;
2251       bit_size = 0;
2252       while (mod > 0)
2253         {
2254           bit_size += 1;
2255           mod >>= 1;
2256         }
2257       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2258       arr = ada_value_primitive_packed_val (arr, NULL,
2259                                             bit_pos / HOST_CHAR_BIT,
2260                                             bit_pos % HOST_CHAR_BIT,
2261                                             bit_size,
2262                                             type);
2263     }
2264
2265   return coerce_unspec_val_to_type (arr, type);
2266 }
2267
2268
2269 /* The value of the element of packed array ARR at the ARITY indices
2270    given in IND.   ARR must be a simple array.  */
2271
2272 static struct value *
2273 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2274 {
2275   int i;
2276   int bits, elt_off, bit_off;
2277   long elt_total_bit_offset;
2278   struct type *elt_type;
2279   struct value *v;
2280
2281   bits = 0;
2282   elt_total_bit_offset = 0;
2283   elt_type = ada_check_typedef (value_type (arr));
2284   for (i = 0; i < arity; i += 1)
2285     {
2286       if (elt_type->code () != TYPE_CODE_ARRAY
2287           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2288         error
2289           (_("attempt to do packed indexing of "
2290              "something other than a packed array"));
2291       else
2292         {
2293           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2294           LONGEST lowerbound, upperbound;
2295           LONGEST idx;
2296
2297           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2298             {
2299               lim_warning (_("don't know bounds of array"));
2300               lowerbound = upperbound = 0;
2301             }
2302
2303           idx = pos_atr (ind[i]);
2304           if (idx < lowerbound || idx > upperbound)
2305             lim_warning (_("packed array index %ld out of bounds"),
2306                          (long) idx);
2307           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2308           elt_total_bit_offset += (idx - lowerbound) * bits;
2309           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2310         }
2311     }
2312   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2313   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2314
2315   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2316                                       bits, elt_type);
2317   return v;
2318 }
2319
2320 /* Non-zero iff TYPE includes negative integer values.  */
2321
2322 static int
2323 has_negatives (struct type *type)
2324 {
2325   switch (type->code ())
2326     {
2327     default:
2328       return 0;
2329     case TYPE_CODE_INT:
2330       return !TYPE_UNSIGNED (type);
2331     case TYPE_CODE_RANGE:
2332       return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
2333     }
2334 }
2335
2336 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2337    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2338    the unpacked buffer.
2339
2340    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2341    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2342
2343    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2344    zero otherwise.
2345
2346    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2347
2348    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2349
2350 static void
2351 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2352                           gdb_byte *unpacked, int unpacked_len,
2353                           int is_big_endian, int is_signed_type,
2354                           int is_scalar)
2355 {
2356   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2357   int src_idx;                  /* Index into the source area */
2358   int src_bytes_left;           /* Number of source bytes left to process.  */
2359   int srcBitsLeft;              /* Number of source bits left to move */
2360   int unusedLS;                 /* Number of bits in next significant
2361                                    byte of source that are unused */
2362
2363   int unpacked_idx;             /* Index into the unpacked buffer */
2364   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2365
2366   unsigned long accum;          /* Staging area for bits being transferred */
2367   int accumSize;                /* Number of meaningful bits in accum */
2368   unsigned char sign;
2369
2370   /* Transmit bytes from least to most significant; delta is the direction
2371      the indices move.  */
2372   int delta = is_big_endian ? -1 : 1;
2373
2374   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2375      bits from SRC.  .*/
2376   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2377     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2378            bit_size, unpacked_len);
2379
2380   srcBitsLeft = bit_size;
2381   src_bytes_left = src_len;
2382   unpacked_bytes_left = unpacked_len;
2383   sign = 0;
2384
2385   if (is_big_endian)
2386     {
2387       src_idx = src_len - 1;
2388       if (is_signed_type
2389           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2390         sign = ~0;
2391
2392       unusedLS =
2393         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2394         % HOST_CHAR_BIT;
2395
2396       if (is_scalar)
2397         {
2398           accumSize = 0;
2399           unpacked_idx = unpacked_len - 1;
2400         }
2401       else
2402         {
2403           /* Non-scalar values must be aligned at a byte boundary...  */
2404           accumSize =
2405             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2406           /* ... And are placed at the beginning (most-significant) bytes
2407              of the target.  */
2408           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2409           unpacked_bytes_left = unpacked_idx + 1;
2410         }
2411     }
2412   else
2413     {
2414       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2415
2416       src_idx = unpacked_idx = 0;
2417       unusedLS = bit_offset;
2418       accumSize = 0;
2419
2420       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2421         sign = ~0;
2422     }
2423
2424   accum = 0;
2425   while (src_bytes_left > 0)
2426     {
2427       /* Mask for removing bits of the next source byte that are not
2428          part of the value.  */
2429       unsigned int unusedMSMask =
2430         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2431         1;
2432       /* Sign-extend bits for this byte.  */
2433       unsigned int signMask = sign & ~unusedMSMask;
2434
2435       accum |=
2436         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2437       accumSize += HOST_CHAR_BIT - unusedLS;
2438       if (accumSize >= HOST_CHAR_BIT)
2439         {
2440           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2441           accumSize -= HOST_CHAR_BIT;
2442           accum >>= HOST_CHAR_BIT;
2443           unpacked_bytes_left -= 1;
2444           unpacked_idx += delta;
2445         }
2446       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2447       unusedLS = 0;
2448       src_bytes_left -= 1;
2449       src_idx += delta;
2450     }
2451   while (unpacked_bytes_left > 0)
2452     {
2453       accum |= sign << accumSize;
2454       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2455       accumSize -= HOST_CHAR_BIT;
2456       if (accumSize < 0)
2457         accumSize = 0;
2458       accum >>= HOST_CHAR_BIT;
2459       unpacked_bytes_left -= 1;
2460       unpacked_idx += delta;
2461     }
2462 }
2463
2464 /* Create a new value of type TYPE from the contents of OBJ starting
2465    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2466    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2467    assigning through the result will set the field fetched from.
2468    VALADDR is ignored unless OBJ is NULL, in which case,
2469    VALADDR+OFFSET must address the start of storage containing the 
2470    packed value.  The value returned  in this case is never an lval.
2471    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2472
2473 struct value *
2474 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2475                                 long offset, int bit_offset, int bit_size,
2476                                 struct type *type)
2477 {
2478   struct value *v;
2479   const gdb_byte *src;                /* First byte containing data to unpack */
2480   gdb_byte *unpacked;
2481   const int is_scalar = is_scalar_type (type);
2482   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2483   gdb::byte_vector staging;
2484
2485   type = ada_check_typedef (type);
2486
2487   if (obj == NULL)
2488     src = valaddr + offset;
2489   else
2490     src = value_contents (obj) + offset;
2491
2492   if (is_dynamic_type (type))
2493     {
2494       /* The length of TYPE might by dynamic, so we need to resolve
2495          TYPE in order to know its actual size, which we then use
2496          to create the contents buffer of the value we return.
2497          The difficulty is that the data containing our object is
2498          packed, and therefore maybe not at a byte boundary.  So, what
2499          we do, is unpack the data into a byte-aligned buffer, and then
2500          use that buffer as our object's value for resolving the type.  */
2501       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2502       staging.resize (staging_len);
2503
2504       ada_unpack_from_contents (src, bit_offset, bit_size,
2505                                 staging.data (), staging.size (),
2506                                 is_big_endian, has_negatives (type),
2507                                 is_scalar);
2508       type = resolve_dynamic_type (type, staging, 0);
2509       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2510         {
2511           /* This happens when the length of the object is dynamic,
2512              and is actually smaller than the space reserved for it.
2513              For instance, in an array of variant records, the bit_size
2514              we're given is the array stride, which is constant and
2515              normally equal to the maximum size of its element.
2516              But, in reality, each element only actually spans a portion
2517              of that stride.  */
2518           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2519         }
2520     }
2521
2522   if (obj == NULL)
2523     {
2524       v = allocate_value (type);
2525       src = valaddr + offset;
2526     }
2527   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2528     {
2529       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2530       gdb_byte *buf;
2531
2532       v = value_at (type, value_address (obj) + offset);
2533       buf = (gdb_byte *) alloca (src_len);
2534       read_memory (value_address (v), buf, src_len);
2535       src = buf;
2536     }
2537   else
2538     {
2539       v = allocate_value (type);
2540       src = value_contents (obj) + offset;
2541     }
2542
2543   if (obj != NULL)
2544     {
2545       long new_offset = offset;
2546
2547       set_value_component_location (v, obj);
2548       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2549       set_value_bitsize (v, bit_size);
2550       if (value_bitpos (v) >= HOST_CHAR_BIT)
2551         {
2552           ++new_offset;
2553           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2554         }
2555       set_value_offset (v, new_offset);
2556
2557       /* Also set the parent value.  This is needed when trying to
2558          assign a new value (in inferior memory).  */
2559       set_value_parent (v, obj);
2560     }
2561   else
2562     set_value_bitsize (v, bit_size);
2563   unpacked = value_contents_writeable (v);
2564
2565   if (bit_size == 0)
2566     {
2567       memset (unpacked, 0, TYPE_LENGTH (type));
2568       return v;
2569     }
2570
2571   if (staging.size () == TYPE_LENGTH (type))
2572     {
2573       /* Small short-cut: If we've unpacked the data into a buffer
2574          of the same size as TYPE's length, then we can reuse that,
2575          instead of doing the unpacking again.  */
2576       memcpy (unpacked, staging.data (), staging.size ());
2577     }
2578   else
2579     ada_unpack_from_contents (src, bit_offset, bit_size,
2580                               unpacked, TYPE_LENGTH (type),
2581                               is_big_endian, has_negatives (type), is_scalar);
2582
2583   return v;
2584 }
2585
2586 /* Store the contents of FROMVAL into the location of TOVAL.
2587    Return a new value with the location of TOVAL and contents of
2588    FROMVAL.   Handles assignment into packed fields that have
2589    floating-point or non-scalar types.  */
2590
2591 static struct value *
2592 ada_value_assign (struct value *toval, struct value *fromval)
2593 {
2594   struct type *type = value_type (toval);
2595   int bits = value_bitsize (toval);
2596
2597   toval = ada_coerce_ref (toval);
2598   fromval = ada_coerce_ref (fromval);
2599
2600   if (ada_is_direct_array_type (value_type (toval)))
2601     toval = ada_coerce_to_simple_array (toval);
2602   if (ada_is_direct_array_type (value_type (fromval)))
2603     fromval = ada_coerce_to_simple_array (fromval);
2604
2605   if (!deprecated_value_modifiable (toval))
2606     error (_("Left operand of assignment is not a modifiable lvalue."));
2607
2608   if (VALUE_LVAL (toval) == lval_memory
2609       && bits > 0
2610       && (type->code () == TYPE_CODE_FLT
2611           || type->code () == TYPE_CODE_STRUCT))
2612     {
2613       int len = (value_bitpos (toval)
2614                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2615       int from_size;
2616       gdb_byte *buffer = (gdb_byte *) alloca (len);
2617       struct value *val;
2618       CORE_ADDR to_addr = value_address (toval);
2619
2620       if (type->code () == TYPE_CODE_FLT)
2621         fromval = value_cast (type, fromval);
2622
2623       read_memory (to_addr, buffer, len);
2624       from_size = value_bitsize (fromval);
2625       if (from_size == 0)
2626         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2627
2628       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2629       ULONGEST from_offset = 0;
2630       if (is_big_endian && is_scalar_type (value_type (fromval)))
2631         from_offset = from_size - bits;
2632       copy_bitwise (buffer, value_bitpos (toval),
2633                     value_contents (fromval), from_offset,
2634                     bits, is_big_endian);
2635       write_memory_with_notification (to_addr, buffer, len);
2636
2637       val = value_copy (toval);
2638       memcpy (value_contents_raw (val), value_contents (fromval),
2639               TYPE_LENGTH (type));
2640       deprecated_set_value_type (val, type);
2641
2642       return val;
2643     }
2644
2645   return value_assign (toval, fromval);
2646 }
2647
2648
2649 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2650    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2651    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2652    COMPONENT, and not the inferior's memory.  The current contents
2653    of COMPONENT are ignored.
2654
2655    Although not part of the initial design, this function also works
2656    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2657    had a null address, and COMPONENT had an address which is equal to
2658    its offset inside CONTAINER.  */
2659
2660 static void
2661 value_assign_to_component (struct value *container, struct value *component,
2662                            struct value *val)
2663 {
2664   LONGEST offset_in_container =
2665     (LONGEST)  (value_address (component) - value_address (container));
2666   int bit_offset_in_container =
2667     value_bitpos (component) - value_bitpos (container);
2668   int bits;
2669
2670   val = value_cast (value_type (component), val);
2671
2672   if (value_bitsize (component) == 0)
2673     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2674   else
2675     bits = value_bitsize (component);
2676
2677   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2678     {
2679       int src_offset;
2680
2681       if (is_scalar_type (check_typedef (value_type (component))))
2682         src_offset
2683           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2684       else
2685         src_offset = 0;
2686       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2687                     value_bitpos (container) + bit_offset_in_container,
2688                     value_contents (val), src_offset, bits, 1);
2689     }
2690   else
2691     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2692                   value_bitpos (container) + bit_offset_in_container,
2693                   value_contents (val), 0, bits, 0);
2694 }
2695
2696 /* Determine if TYPE is an access to an unconstrained array.  */
2697
2698 bool
2699 ada_is_access_to_unconstrained_array (struct type *type)
2700 {
2701   return (type->code () == TYPE_CODE_TYPEDEF
2702           && is_thick_pntr (ada_typedef_target_type (type)));
2703 }
2704
2705 /* The value of the element of array ARR at the ARITY indices given in IND.
2706    ARR may be either a simple array, GNAT array descriptor, or pointer
2707    thereto.  */
2708
2709 struct value *
2710 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2711 {
2712   int k;
2713   struct value *elt;
2714   struct type *elt_type;
2715
2716   elt = ada_coerce_to_simple_array (arr);
2717
2718   elt_type = ada_check_typedef (value_type (elt));
2719   if (elt_type->code () == TYPE_CODE_ARRAY
2720       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2721     return value_subscript_packed (elt, arity, ind);
2722
2723   for (k = 0; k < arity; k += 1)
2724     {
2725       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2726
2727       if (elt_type->code () != TYPE_CODE_ARRAY)
2728         error (_("too many subscripts (%d expected)"), k);
2729
2730       elt = value_subscript (elt, pos_atr (ind[k]));
2731
2732       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2733           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2734         {
2735           /* The element is a typedef to an unconstrained array,
2736              except that the value_subscript call stripped the
2737              typedef layer.  The typedef layer is GNAT's way to
2738              specify that the element is, at the source level, an
2739              access to the unconstrained array, rather than the
2740              unconstrained array.  So, we need to restore that
2741              typedef layer, which we can do by forcing the element's
2742              type back to its original type. Otherwise, the returned
2743              value is going to be printed as the array, rather
2744              than as an access.  Another symptom of the same issue
2745              would be that an expression trying to dereference the
2746              element would also be improperly rejected.  */
2747           deprecated_set_value_type (elt, saved_elt_type);
2748         }
2749
2750       elt_type = ada_check_typedef (value_type (elt));
2751     }
2752
2753   return elt;
2754 }
2755
2756 /* Assuming ARR is a pointer to a GDB array, the value of the element
2757    of *ARR at the ARITY indices given in IND.
2758    Does not read the entire array into memory.
2759
2760    Note: Unlike what one would expect, this function is used instead of
2761    ada_value_subscript for basically all non-packed array types.  The reason
2762    for this is that a side effect of doing our own pointer arithmetics instead
2763    of relying on value_subscript is that there is no implicit typedef peeling.
2764    This is important for arrays of array accesses, where it allows us to
2765    preserve the fact that the array's element is an array access, where the
2766    access part os encoded in a typedef layer.  */
2767
2768 static struct value *
2769 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2770 {
2771   int k;
2772   struct value *array_ind = ada_value_ind (arr);
2773   struct type *type
2774     = check_typedef (value_enclosing_type (array_ind));
2775
2776   if (type->code () == TYPE_CODE_ARRAY
2777       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2778     return value_subscript_packed (array_ind, arity, ind);
2779
2780   for (k = 0; k < arity; k += 1)
2781     {
2782       LONGEST lwb, upb;
2783       struct value *lwb_value;
2784
2785       if (type->code () != TYPE_CODE_ARRAY)
2786         error (_("too many subscripts (%d expected)"), k);
2787       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2788                         value_copy (arr));
2789       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2790       lwb_value = value_from_longest (value_type (ind[k]), lwb);
2791       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2792       type = TYPE_TARGET_TYPE (type);
2793     }
2794
2795   return value_ind (arr);
2796 }
2797
2798 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2799    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2800    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2801    this array is LOW, as per Ada rules.  */
2802 static struct value *
2803 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2804                           int low, int high)
2805 {
2806   struct type *type0 = ada_check_typedef (type);
2807   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2808   struct type *index_type
2809     = create_static_range_type (NULL, base_index_type, low, high);
2810   struct type *slice_type = create_array_type_with_stride
2811                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2812                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2813                                TYPE_FIELD_BITSIZE (type0, 0));
2814   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2815   LONGEST base_low_pos, low_pos;
2816   CORE_ADDR base;
2817
2818   if (!discrete_position (base_index_type, low, &low_pos)
2819       || !discrete_position (base_index_type, base_low, &base_low_pos))
2820     {
2821       warning (_("unable to get positions in slice, use bounds instead"));
2822       low_pos = low;
2823       base_low_pos = base_low;
2824     }
2825
2826   base = value_as_address (array_ptr)
2827     + ((low_pos - base_low_pos)
2828        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2829   return value_at_lazy (slice_type, base);
2830 }
2831
2832
2833 static struct value *
2834 ada_value_slice (struct value *array, int low, int high)
2835 {
2836   struct type *type = ada_check_typedef (value_type (array));
2837   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2838   struct type *index_type
2839     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2840   struct type *slice_type = create_array_type_with_stride
2841                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2842                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2843                                TYPE_FIELD_BITSIZE (type, 0));
2844   LONGEST low_pos, high_pos;
2845
2846   if (!discrete_position (base_index_type, low, &low_pos)
2847       || !discrete_position (base_index_type, high, &high_pos))
2848     {
2849       warning (_("unable to get positions in slice, use bounds instead"));
2850       low_pos = low;
2851       high_pos = high;
2852     }
2853
2854   return value_cast (slice_type,
2855                      value_slice (array, low, high_pos - low_pos + 1));
2856 }
2857
2858 /* If type is a record type in the form of a standard GNAT array
2859    descriptor, returns the number of dimensions for type.  If arr is a
2860    simple array, returns the number of "array of"s that prefix its
2861    type designation.  Otherwise, returns 0.  */
2862
2863 int
2864 ada_array_arity (struct type *type)
2865 {
2866   int arity;
2867
2868   if (type == NULL)
2869     return 0;
2870
2871   type = desc_base_type (type);
2872
2873   arity = 0;
2874   if (type->code () == TYPE_CODE_STRUCT)
2875     return desc_arity (desc_bounds_type (type));
2876   else
2877     while (type->code () == TYPE_CODE_ARRAY)
2878       {
2879         arity += 1;
2880         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2881       }
2882
2883   return arity;
2884 }
2885
2886 /* If TYPE is a record type in the form of a standard GNAT array
2887    descriptor or a simple array type, returns the element type for
2888    TYPE after indexing by NINDICES indices, or by all indices if
2889    NINDICES is -1.  Otherwise, returns NULL.  */
2890
2891 struct type *
2892 ada_array_element_type (struct type *type, int nindices)
2893 {
2894   type = desc_base_type (type);
2895
2896   if (type->code () == TYPE_CODE_STRUCT)
2897     {
2898       int k;
2899       struct type *p_array_type;
2900
2901       p_array_type = desc_data_target_type (type);
2902
2903       k = ada_array_arity (type);
2904       if (k == 0)
2905         return NULL;
2906
2907       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2908       if (nindices >= 0 && k > nindices)
2909         k = nindices;
2910       while (k > 0 && p_array_type != NULL)
2911         {
2912           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2913           k -= 1;
2914         }
2915       return p_array_type;
2916     }
2917   else if (type->code () == TYPE_CODE_ARRAY)
2918     {
2919       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2920         {
2921           type = TYPE_TARGET_TYPE (type);
2922           nindices -= 1;
2923         }
2924       return type;
2925     }
2926
2927   return NULL;
2928 }
2929
2930 /* The type of nth index in arrays of given type (n numbering from 1).
2931    Does not examine memory.  Throws an error if N is invalid or TYPE
2932    is not an array type.  NAME is the name of the Ada attribute being
2933    evaluated ('range, 'first, 'last, or 'length); it is used in building
2934    the error message.  */
2935
2936 static struct type *
2937 ada_index_type (struct type *type, int n, const char *name)
2938 {
2939   struct type *result_type;
2940
2941   type = desc_base_type (type);
2942
2943   if (n < 0 || n > ada_array_arity (type))
2944     error (_("invalid dimension number to '%s"), name);
2945
2946   if (ada_is_simple_array_type (type))
2947     {
2948       int i;
2949
2950       for (i = 1; i < n; i += 1)
2951         type = TYPE_TARGET_TYPE (type);
2952       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2953       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2954          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2955          perhaps stabsread.c would make more sense.  */
2956       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2957         result_type = NULL;
2958     }
2959   else
2960     {
2961       result_type = desc_index_type (desc_bounds_type (type), n);
2962       if (result_type == NULL)
2963         error (_("attempt to take bound of something that is not an array"));
2964     }
2965
2966   return result_type;
2967 }
2968
2969 /* Given that arr is an array type, returns the lower bound of the
2970    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2971    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2972    array-descriptor type.  It works for other arrays with bounds supplied
2973    by run-time quantities other than discriminants.  */
2974
2975 static LONGEST
2976 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2977 {
2978   struct type *type, *index_type_desc, *index_type;
2979   int i;
2980
2981   gdb_assert (which == 0 || which == 1);
2982
2983   if (ada_is_constrained_packed_array_type (arr_type))
2984     arr_type = decode_constrained_packed_array_type (arr_type);
2985
2986   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2987     return (LONGEST) - which;
2988
2989   if (arr_type->code () == TYPE_CODE_PTR)
2990     type = TYPE_TARGET_TYPE (arr_type);
2991   else
2992     type = arr_type;
2993
2994   if (TYPE_FIXED_INSTANCE (type))
2995     {
2996       /* The array has already been fixed, so we do not need to
2997          check the parallel ___XA type again.  That encoding has
2998          already been applied, so ignore it now.  */
2999       index_type_desc = NULL;
3000     }
3001   else
3002     {
3003       index_type_desc = ada_find_parallel_type (type, "___XA");
3004       ada_fixup_array_indexes_type (index_type_desc);
3005     }
3006
3007   if (index_type_desc != NULL)
3008     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3009                                       NULL);
3010   else
3011     {
3012       struct type *elt_type = check_typedef (type);
3013
3014       for (i = 1; i < n; i++)
3015         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3016
3017       index_type = TYPE_INDEX_TYPE (elt_type);
3018     }
3019
3020   return
3021     (LONGEST) (which == 0
3022                ? ada_discrete_type_low_bound (index_type)
3023                : ada_discrete_type_high_bound (index_type));
3024 }
3025
3026 /* Given that arr is an array value, returns the lower bound of the
3027    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3028    WHICH is 1.  This routine will also work for arrays with bounds
3029    supplied by run-time quantities other than discriminants.  */
3030
3031 static LONGEST
3032 ada_array_bound (struct value *arr, int n, int which)
3033 {
3034   struct type *arr_type;
3035
3036   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3037     arr = value_ind (arr);
3038   arr_type = value_enclosing_type (arr);
3039
3040   if (ada_is_constrained_packed_array_type (arr_type))
3041     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3042   else if (ada_is_simple_array_type (arr_type))
3043     return ada_array_bound_from_type (arr_type, n, which);
3044   else
3045     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3046 }
3047
3048 /* Given that arr is an array value, returns the length of the
3049    nth index.  This routine will also work for arrays with bounds
3050    supplied by run-time quantities other than discriminants.
3051    Does not work for arrays indexed by enumeration types with representation
3052    clauses at the moment.  */
3053
3054 static LONGEST
3055 ada_array_length (struct value *arr, int n)
3056 {
3057   struct type *arr_type, *index_type;
3058   int low, high;
3059
3060   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3061     arr = value_ind (arr);
3062   arr_type = value_enclosing_type (arr);
3063
3064   if (ada_is_constrained_packed_array_type (arr_type))
3065     return ada_array_length (decode_constrained_packed_array (arr), n);
3066
3067   if (ada_is_simple_array_type (arr_type))
3068     {
3069       low = ada_array_bound_from_type (arr_type, n, 0);
3070       high = ada_array_bound_from_type (arr_type, n, 1);
3071     }
3072   else
3073     {
3074       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3075       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3076     }
3077
3078   arr_type = check_typedef (arr_type);
3079   index_type = ada_index_type (arr_type, n, "length");
3080   if (index_type != NULL)
3081     {
3082       struct type *base_type;
3083       if (index_type->code () == TYPE_CODE_RANGE)
3084         base_type = TYPE_TARGET_TYPE (index_type);
3085       else
3086         base_type = index_type;
3087
3088       low = pos_atr (value_from_longest (base_type, low));
3089       high = pos_atr (value_from_longest (base_type, high));
3090     }
3091   return high - low + 1;
3092 }
3093
3094 /* An array whose type is that of ARR_TYPE (an array type), with
3095    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3096    less than LOW, then LOW-1 is used.  */
3097
3098 static struct value *
3099 empty_array (struct type *arr_type, int low, int high)
3100 {
3101   struct type *arr_type0 = ada_check_typedef (arr_type);
3102   struct type *index_type
3103     = create_static_range_type
3104         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3105          high < low ? low - 1 : high);
3106   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3107
3108   return allocate_value (create_array_type (NULL, elt_type, index_type));
3109 }
3110 \f
3111
3112                                 /* Name resolution */
3113
3114 /* The "decoded" name for the user-definable Ada operator corresponding
3115    to OP.  */
3116
3117 static const char *
3118 ada_decoded_op_name (enum exp_opcode op)
3119 {
3120   int i;
3121
3122   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3123     {
3124       if (ada_opname_table[i].op == op)
3125         return ada_opname_table[i].decoded;
3126     }
3127   error (_("Could not find operator name for opcode"));
3128 }
3129
3130 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3131    in a listing of choices during disambiguation (see sort_choices, below).
3132    The idea is that overloadings of a subprogram name from the
3133    same package should sort in their source order.  We settle for ordering
3134    such symbols by their trailing number (__N  or $N).  */
3135
3136 static int
3137 encoded_ordered_before (const char *N0, const char *N1)
3138 {
3139   if (N1 == NULL)
3140     return 0;
3141   else if (N0 == NULL)
3142     return 1;
3143   else
3144     {
3145       int k0, k1;
3146
3147       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3148         ;
3149       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3150         ;
3151       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3152           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3153         {
3154           int n0, n1;
3155
3156           n0 = k0;
3157           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3158             n0 -= 1;
3159           n1 = k1;
3160           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3161             n1 -= 1;
3162           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3163             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3164         }
3165       return (strcmp (N0, N1) < 0);
3166     }
3167 }
3168
3169 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3170    encoded names.  */
3171
3172 static void
3173 sort_choices (struct block_symbol syms[], int nsyms)
3174 {
3175   int i;
3176
3177   for (i = 1; i < nsyms; i += 1)
3178     {
3179       struct block_symbol sym = syms[i];
3180       int j;
3181
3182       for (j = i - 1; j >= 0; j -= 1)
3183         {
3184           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3185                                       sym.symbol->linkage_name ()))
3186             break;
3187           syms[j + 1] = syms[j];
3188         }
3189       syms[j + 1] = sym;
3190     }
3191 }
3192
3193 /* Whether GDB should display formals and return types for functions in the
3194    overloads selection menu.  */
3195 static bool print_signatures = true;
3196
3197 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3198    all but functions, the signature is just the name of the symbol.  For
3199    functions, this is the name of the function, the list of types for formals
3200    and the return type (if any).  */
3201
3202 static void
3203 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3204                             const struct type_print_options *flags)
3205 {
3206   struct type *type = SYMBOL_TYPE (sym);
3207
3208   fprintf_filtered (stream, "%s", sym->print_name ());
3209   if (!print_signatures
3210       || type == NULL
3211       || type->code () != TYPE_CODE_FUNC)
3212     return;
3213
3214   if (TYPE_NFIELDS (type) > 0)
3215     {
3216       int i;
3217
3218       fprintf_filtered (stream, " (");
3219       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3220         {
3221           if (i > 0)
3222             fprintf_filtered (stream, "; ");
3223           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3224                           flags);
3225         }
3226       fprintf_filtered (stream, ")");
3227     }
3228   if (TYPE_TARGET_TYPE (type) != NULL
3229       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3230     {
3231       fprintf_filtered (stream, " return ");
3232       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3233     }
3234 }
3235
3236 /* Read and validate a set of numeric choices from the user in the
3237    range 0 .. N_CHOICES-1.  Place the results in increasing
3238    order in CHOICES[0 .. N-1], and return N.
3239
3240    The user types choices as a sequence of numbers on one line
3241    separated by blanks, encoding them as follows:
3242
3243      + A choice of 0 means to cancel the selection, throwing an error.
3244      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3245      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3246
3247    The user is not allowed to choose more than MAX_RESULTS values.
3248
3249    ANNOTATION_SUFFIX, if present, is used to annotate the input
3250    prompts (for use with the -f switch).  */
3251
3252 static int
3253 get_selections (int *choices, int n_choices, int max_results,
3254                 int is_all_choice, const char *annotation_suffix)
3255 {
3256   const char *args;
3257   const char *prompt;
3258   int n_chosen;
3259   int first_choice = is_all_choice ? 2 : 1;
3260
3261   prompt = getenv ("PS2");
3262   if (prompt == NULL)
3263     prompt = "> ";
3264
3265   args = command_line_input (prompt, annotation_suffix);
3266
3267   if (args == NULL)
3268     error_no_arg (_("one or more choice numbers"));
3269
3270   n_chosen = 0;
3271
3272   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3273      order, as given in args.  Choices are validated.  */
3274   while (1)
3275     {
3276       char *args2;
3277       int choice, j;
3278
3279       args = skip_spaces (args);
3280       if (*args == '\0' && n_chosen == 0)
3281         error_no_arg (_("one or more choice numbers"));
3282       else if (*args == '\0')
3283         break;
3284
3285       choice = strtol (args, &args2, 10);
3286       if (args == args2 || choice < 0
3287           || choice > n_choices + first_choice - 1)
3288         error (_("Argument must be choice number"));
3289       args = args2;
3290
3291       if (choice == 0)
3292         error (_("cancelled"));
3293
3294       if (choice < first_choice)
3295         {
3296           n_chosen = n_choices;
3297           for (j = 0; j < n_choices; j += 1)
3298             choices[j] = j;
3299           break;
3300         }
3301       choice -= first_choice;
3302
3303       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3304         {
3305         }
3306
3307       if (j < 0 || choice != choices[j])
3308         {
3309           int k;
3310
3311           for (k = n_chosen - 1; k > j; k -= 1)
3312             choices[k + 1] = choices[k];
3313           choices[j + 1] = choice;
3314           n_chosen += 1;
3315         }
3316     }
3317
3318   if (n_chosen > max_results)
3319     error (_("Select no more than %d of the above"), max_results);
3320
3321   return n_chosen;
3322 }
3323
3324 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3325    by asking the user (if necessary), returning the number selected,
3326    and setting the first elements of SYMS items.  Error if no symbols
3327    selected.  */
3328
3329 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3330    to be re-integrated one of these days.  */
3331
3332 static int
3333 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3334 {
3335   int i;
3336   int *chosen = XALLOCAVEC (int , nsyms);
3337   int n_chosen;
3338   int first_choice = (max_results == 1) ? 1 : 2;
3339   const char *select_mode = multiple_symbols_select_mode ();
3340
3341   if (max_results < 1)
3342     error (_("Request to select 0 symbols!"));
3343   if (nsyms <= 1)
3344     return nsyms;
3345
3346   if (select_mode == multiple_symbols_cancel)
3347     error (_("\
3348 canceled because the command is ambiguous\n\
3349 See set/show multiple-symbol."));
3350
3351   /* If select_mode is "all", then return all possible symbols.
3352      Only do that if more than one symbol can be selected, of course.
3353      Otherwise, display the menu as usual.  */
3354   if (select_mode == multiple_symbols_all && max_results > 1)
3355     return nsyms;
3356
3357   printf_filtered (_("[0] cancel\n"));
3358   if (max_results > 1)
3359     printf_filtered (_("[1] all\n"));
3360
3361   sort_choices (syms, nsyms);
3362
3363   for (i = 0; i < nsyms; i += 1)
3364     {
3365       if (syms[i].symbol == NULL)
3366         continue;
3367
3368       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3369         {
3370           struct symtab_and_line sal =
3371             find_function_start_sal (syms[i].symbol, 1);
3372
3373           printf_filtered ("[%d] ", i + first_choice);
3374           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3375                                       &type_print_raw_options);
3376           if (sal.symtab == NULL)
3377             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3378                              metadata_style.style ().ptr (), nullptr, sal.line);
3379           else
3380             printf_filtered
3381               (_(" at %ps:%d\n"),
3382                styled_string (file_name_style.style (),
3383                               symtab_to_filename_for_display (sal.symtab)),
3384                sal.line);
3385           continue;
3386         }
3387       else
3388         {
3389           int is_enumeral =
3390             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3391              && SYMBOL_TYPE (syms[i].symbol) != NULL
3392              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3393           struct symtab *symtab = NULL;
3394
3395           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3396             symtab = symbol_symtab (syms[i].symbol);
3397
3398           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3399             {
3400               printf_filtered ("[%d] ", i + first_choice);
3401               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3402                                           &type_print_raw_options);
3403               printf_filtered (_(" at %s:%d\n"),
3404                                symtab_to_filename_for_display (symtab),
3405                                SYMBOL_LINE (syms[i].symbol));
3406             }
3407           else if (is_enumeral
3408                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3409             {
3410               printf_filtered (("[%d] "), i + first_choice);
3411               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3412                               gdb_stdout, -1, 0, &type_print_raw_options);
3413               printf_filtered (_("'(%s) (enumeral)\n"),
3414                                syms[i].symbol->print_name ());
3415             }
3416           else
3417             {
3418               printf_filtered ("[%d] ", i + first_choice);
3419               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3420                                           &type_print_raw_options);
3421
3422               if (symtab != NULL)
3423                 printf_filtered (is_enumeral
3424                                  ? _(" in %s (enumeral)\n")
3425                                  : _(" at %s:?\n"),
3426                                  symtab_to_filename_for_display (symtab));
3427               else
3428                 printf_filtered (is_enumeral
3429                                  ? _(" (enumeral)\n")
3430                                  : _(" at ?\n"));
3431             }
3432         }
3433     }
3434
3435   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3436                              "overload-choice");
3437
3438   for (i = 0; i < n_chosen; i += 1)
3439     syms[i] = syms[chosen[i]];
3440
3441   return n_chosen;
3442 }
3443
3444 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3445    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3446    undefined namespace) and converts operators that are
3447    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3448    non-null, it provides a preferred result type [at the moment, only
3449    type void has any effect---causing procedures to be preferred over
3450    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3451    return type is preferred.  May change (expand) *EXP.  */
3452
3453 static void
3454 resolve (expression_up *expp, int void_context_p, int parse_completion,
3455          innermost_block_tracker *tracker)
3456 {
3457   struct type *context_type = NULL;
3458   int pc = 0;
3459
3460   if (void_context_p)
3461     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3462
3463   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3464 }
3465
3466 /* Resolve the operator of the subexpression beginning at
3467    position *POS of *EXPP.  "Resolving" consists of replacing
3468    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3469    with their resolutions, replacing built-in operators with
3470    function calls to user-defined operators, where appropriate, and,
3471    when DEPROCEDURE_P is non-zero, converting function-valued variables
3472    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3473    are as in ada_resolve, above.  */
3474
3475 static struct value *
3476 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3477                 struct type *context_type, int parse_completion,
3478                 innermost_block_tracker *tracker)
3479 {
3480   int pc = *pos;
3481   int i;
3482   struct expression *exp;       /* Convenience: == *expp.  */
3483   enum exp_opcode op = (*expp)->elts[pc].opcode;
3484   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3485   int nargs;                    /* Number of operands.  */
3486   int oplen;
3487
3488   argvec = NULL;
3489   nargs = 0;
3490   exp = expp->get ();
3491
3492   /* Pass one: resolve operands, saving their types and updating *pos,
3493      if needed.  */
3494   switch (op)
3495     {
3496     case OP_FUNCALL:
3497       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3498           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3499         *pos += 7;
3500       else
3501         {
3502           *pos += 3;
3503           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3504         }
3505       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3506       break;
3507
3508     case UNOP_ADDR:
3509       *pos += 1;
3510       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3511       break;
3512
3513     case UNOP_QUAL:
3514       *pos += 3;
3515       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3516                       parse_completion, tracker);
3517       break;
3518
3519     case OP_ATR_MODULUS:
3520     case OP_ATR_SIZE:
3521     case OP_ATR_TAG:
3522     case OP_ATR_FIRST:
3523     case OP_ATR_LAST:
3524     case OP_ATR_LENGTH:
3525     case OP_ATR_POS:
3526     case OP_ATR_VAL:
3527     case OP_ATR_MIN:
3528     case OP_ATR_MAX:
3529     case TERNOP_IN_RANGE:
3530     case BINOP_IN_BOUNDS:
3531     case UNOP_IN_RANGE:
3532     case OP_AGGREGATE:
3533     case OP_OTHERS:
3534     case OP_CHOICES:
3535     case OP_POSITIONAL:
3536     case OP_DISCRETE_RANGE:
3537     case OP_NAME:
3538       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3539       *pos += oplen;
3540       break;
3541
3542     case BINOP_ASSIGN:
3543       {
3544         struct value *arg1;
3545
3546         *pos += 1;
3547         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3548         if (arg1 == NULL)
3549           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3550         else
3551           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3552                           tracker);
3553         break;
3554       }
3555
3556     case UNOP_CAST:
3557       *pos += 3;
3558       nargs = 1;
3559       break;
3560
3561     case BINOP_ADD:
3562     case BINOP_SUB:
3563     case BINOP_MUL:
3564     case BINOP_DIV:
3565     case BINOP_REM:
3566     case BINOP_MOD:
3567     case BINOP_EXP:
3568     case BINOP_CONCAT:
3569     case BINOP_LOGICAL_AND:
3570     case BINOP_LOGICAL_OR:
3571     case BINOP_BITWISE_AND:
3572     case BINOP_BITWISE_IOR:
3573     case BINOP_BITWISE_XOR:
3574
3575     case BINOP_EQUAL:
3576     case BINOP_NOTEQUAL:
3577     case BINOP_LESS:
3578     case BINOP_GTR:
3579     case BINOP_LEQ:
3580     case BINOP_GEQ:
3581
3582     case BINOP_REPEAT:
3583     case BINOP_SUBSCRIPT:
3584     case BINOP_COMMA:
3585       *pos += 1;
3586       nargs = 2;
3587       break;
3588
3589     case UNOP_NEG:
3590     case UNOP_PLUS:
3591     case UNOP_LOGICAL_NOT:
3592     case UNOP_ABS:
3593     case UNOP_IND:
3594       *pos += 1;
3595       nargs = 1;
3596       break;
3597
3598     case OP_LONG:
3599     case OP_FLOAT:
3600     case OP_VAR_VALUE:
3601     case OP_VAR_MSYM_VALUE:
3602       *pos += 4;
3603       break;
3604
3605     case OP_TYPE:
3606     case OP_BOOL:
3607     case OP_LAST:
3608     case OP_INTERNALVAR:
3609       *pos += 3;
3610       break;
3611
3612     case UNOP_MEMVAL:
3613       *pos += 3;
3614       nargs = 1;
3615       break;
3616
3617     case OP_REGISTER:
3618       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3619       break;
3620
3621     case STRUCTOP_STRUCT:
3622       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3623       nargs = 1;
3624       break;
3625
3626     case TERNOP_SLICE:
3627       *pos += 1;
3628       nargs = 3;
3629       break;
3630
3631     case OP_STRING:
3632       break;
3633
3634     default:
3635       error (_("Unexpected operator during name resolution"));
3636     }
3637
3638   argvec = XALLOCAVEC (struct value *, nargs + 1);
3639   for (i = 0; i < nargs; i += 1)
3640     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3641                                 tracker);
3642   argvec[i] = NULL;
3643   exp = expp->get ();
3644
3645   /* Pass two: perform any resolution on principal operator.  */
3646   switch (op)
3647     {
3648     default:
3649       break;
3650
3651     case OP_VAR_VALUE:
3652       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3653         {
3654           std::vector<struct block_symbol> candidates;
3655           int n_candidates;
3656
3657           n_candidates =
3658             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3659                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3660                                     &candidates);
3661
3662           if (n_candidates > 1)
3663             {
3664               /* Types tend to get re-introduced locally, so if there
3665                  are any local symbols that are not types, first filter
3666                  out all types.  */
3667               int j;
3668               for (j = 0; j < n_candidates; j += 1)
3669                 switch (SYMBOL_CLASS (candidates[j].symbol))
3670                   {
3671                   case LOC_REGISTER:
3672                   case LOC_ARG:
3673                   case LOC_REF_ARG:
3674                   case LOC_REGPARM_ADDR:
3675                   case LOC_LOCAL:
3676                   case LOC_COMPUTED:
3677                     goto FoundNonType;
3678                   default:
3679                     break;
3680                   }
3681             FoundNonType:
3682               if (j < n_candidates)
3683                 {
3684                   j = 0;
3685                   while (j < n_candidates)
3686                     {
3687                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3688                         {
3689                           candidates[j] = candidates[n_candidates - 1];
3690                           n_candidates -= 1;
3691                         }
3692                       else
3693                         j += 1;
3694                     }
3695                 }
3696             }
3697
3698           if (n_candidates == 0)
3699             error (_("No definition found for %s"),
3700                    exp->elts[pc + 2].symbol->print_name ());
3701           else if (n_candidates == 1)
3702             i = 0;
3703           else if (deprocedure_p
3704                    && !is_nonfunction (candidates.data (), n_candidates))
3705             {
3706               i = ada_resolve_function
3707                 (candidates.data (), n_candidates, NULL, 0,
3708                  exp->elts[pc + 2].symbol->linkage_name (),
3709                  context_type, parse_completion);
3710               if (i < 0)
3711                 error (_("Could not find a match for %s"),
3712                        exp->elts[pc + 2].symbol->print_name ());
3713             }
3714           else
3715             {
3716               printf_filtered (_("Multiple matches for %s\n"),
3717                                exp->elts[pc + 2].symbol->print_name ());
3718               user_select_syms (candidates.data (), n_candidates, 1);
3719               i = 0;
3720             }
3721
3722           exp->elts[pc + 1].block = candidates[i].block;
3723           exp->elts[pc + 2].symbol = candidates[i].symbol;
3724           tracker->update (candidates[i]);
3725         }
3726
3727       if (deprocedure_p
3728           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3729               == TYPE_CODE_FUNC))
3730         {
3731           replace_operator_with_call (expp, pc, 0, 4,
3732                                       exp->elts[pc + 2].symbol,
3733                                       exp->elts[pc + 1].block);
3734           exp = expp->get ();
3735         }
3736       break;
3737
3738     case OP_FUNCALL:
3739       {
3740         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3741             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3742           {
3743             std::vector<struct block_symbol> candidates;
3744             int n_candidates;
3745
3746             n_candidates =
3747               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3748                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3749                                       &candidates);
3750
3751             if (n_candidates == 1)
3752               i = 0;
3753             else
3754               {
3755                 i = ada_resolve_function
3756                   (candidates.data (), n_candidates,
3757                    argvec, nargs,
3758                    exp->elts[pc + 5].symbol->linkage_name (),
3759                    context_type, parse_completion);
3760                 if (i < 0)
3761                   error (_("Could not find a match for %s"),
3762                          exp->elts[pc + 5].symbol->print_name ());
3763               }
3764
3765             exp->elts[pc + 4].block = candidates[i].block;
3766             exp->elts[pc + 5].symbol = candidates[i].symbol;
3767             tracker->update (candidates[i]);
3768           }
3769       }
3770       break;
3771     case BINOP_ADD:
3772     case BINOP_SUB:
3773     case BINOP_MUL:
3774     case BINOP_DIV:
3775     case BINOP_REM:
3776     case BINOP_MOD:
3777     case BINOP_CONCAT:
3778     case BINOP_BITWISE_AND:
3779     case BINOP_BITWISE_IOR:
3780     case BINOP_BITWISE_XOR:
3781     case BINOP_EQUAL:
3782     case BINOP_NOTEQUAL:
3783     case BINOP_LESS:
3784     case BINOP_GTR:
3785     case BINOP_LEQ:
3786     case BINOP_GEQ:
3787     case BINOP_EXP:
3788     case UNOP_NEG:
3789     case UNOP_PLUS:
3790     case UNOP_LOGICAL_NOT:
3791     case UNOP_ABS:
3792       if (possible_user_operator_p (op, argvec))
3793         {
3794           std::vector<struct block_symbol> candidates;
3795           int n_candidates;
3796
3797           n_candidates =
3798             ada_lookup_symbol_list (ada_decoded_op_name (op),
3799                                     NULL, VAR_DOMAIN,
3800                                     &candidates);
3801
3802           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3803                                     nargs, ada_decoded_op_name (op), NULL,
3804                                     parse_completion);
3805           if (i < 0)
3806             break;
3807
3808           replace_operator_with_call (expp, pc, nargs, 1,
3809                                       candidates[i].symbol,
3810                                       candidates[i].block);
3811           exp = expp->get ();
3812         }
3813       break;
3814
3815     case OP_TYPE:
3816     case OP_REGISTER:
3817       return NULL;
3818     }
3819
3820   *pos = pc;
3821   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3822     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3823                                     exp->elts[pc + 1].objfile,
3824                                     exp->elts[pc + 2].msymbol);
3825   else
3826     return evaluate_subexp_type (exp, pos);
3827 }
3828
3829 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3830    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3831    a non-pointer.  */
3832 /* The term "match" here is rather loose.  The match is heuristic and
3833    liberal.  */
3834
3835 static int
3836 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3837 {
3838   ftype = ada_check_typedef (ftype);
3839   atype = ada_check_typedef (atype);
3840
3841   if (ftype->code () == TYPE_CODE_REF)
3842     ftype = TYPE_TARGET_TYPE (ftype);
3843   if (atype->code () == TYPE_CODE_REF)
3844     atype = TYPE_TARGET_TYPE (atype);
3845
3846   switch (ftype->code ())
3847     {
3848     default:
3849       return ftype->code () == atype->code ();
3850     case TYPE_CODE_PTR:
3851       if (atype->code () == TYPE_CODE_PTR)
3852         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3853                                TYPE_TARGET_TYPE (atype), 0);
3854       else
3855         return (may_deref
3856                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3857     case TYPE_CODE_INT:
3858     case TYPE_CODE_ENUM:
3859     case TYPE_CODE_RANGE:
3860       switch (atype->code ())
3861         {
3862         case TYPE_CODE_INT:
3863         case TYPE_CODE_ENUM:
3864         case TYPE_CODE_RANGE:
3865           return 1;
3866         default:
3867           return 0;
3868         }
3869
3870     case TYPE_CODE_ARRAY:
3871       return (atype->code () == TYPE_CODE_ARRAY
3872               || ada_is_array_descriptor_type (atype));
3873
3874     case TYPE_CODE_STRUCT:
3875       if (ada_is_array_descriptor_type (ftype))
3876         return (atype->code () == TYPE_CODE_ARRAY
3877                 || ada_is_array_descriptor_type (atype));
3878       else
3879         return (atype->code () == TYPE_CODE_STRUCT
3880                 && !ada_is_array_descriptor_type (atype));
3881
3882     case TYPE_CODE_UNION:
3883     case TYPE_CODE_FLT:
3884       return (atype->code () == ftype->code ());
3885     }
3886 }
3887
3888 /* Return non-zero if the formals of FUNC "sufficiently match" the
3889    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3890    may also be an enumeral, in which case it is treated as a 0-
3891    argument function.  */
3892
3893 static int
3894 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3895 {
3896   int i;
3897   struct type *func_type = SYMBOL_TYPE (func);
3898
3899   if (SYMBOL_CLASS (func) == LOC_CONST
3900       && func_type->code () == TYPE_CODE_ENUM)
3901     return (n_actuals == 0);
3902   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3903     return 0;
3904
3905   if (TYPE_NFIELDS (func_type) != n_actuals)
3906     return 0;
3907
3908   for (i = 0; i < n_actuals; i += 1)
3909     {
3910       if (actuals[i] == NULL)
3911         return 0;
3912       else
3913         {
3914           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3915                                                                    i));
3916           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3917
3918           if (!ada_type_match (ftype, atype, 1))
3919             return 0;
3920         }
3921     }
3922   return 1;
3923 }
3924
3925 /* False iff function type FUNC_TYPE definitely does not produce a value
3926    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3927    FUNC_TYPE is not a valid function type with a non-null return type
3928    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3929
3930 static int
3931 return_match (struct type *func_type, struct type *context_type)
3932 {
3933   struct type *return_type;
3934
3935   if (func_type == NULL)
3936     return 1;
3937
3938   if (func_type->code () == TYPE_CODE_FUNC)
3939     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3940   else
3941     return_type = get_base_type (func_type);
3942   if (return_type == NULL)
3943     return 1;
3944
3945   context_type = get_base_type (context_type);
3946
3947   if (return_type->code () == TYPE_CODE_ENUM)
3948     return context_type == NULL || return_type == context_type;
3949   else if (context_type == NULL)
3950     return return_type->code () != TYPE_CODE_VOID;
3951   else
3952     return return_type->code () == context_type->code ();
3953 }
3954
3955
3956 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3957    function (if any) that matches the types of the NARGS arguments in
3958    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3959    that returns that type, then eliminate matches that don't.  If
3960    CONTEXT_TYPE is void and there is at least one match that does not
3961    return void, eliminate all matches that do.
3962
3963    Asks the user if there is more than one match remaining.  Returns -1
3964    if there is no such symbol or none is selected.  NAME is used
3965    solely for messages.  May re-arrange and modify SYMS in
3966    the process; the index returned is for the modified vector.  */
3967
3968 static int
3969 ada_resolve_function (struct block_symbol syms[],
3970                       int nsyms, struct value **args, int nargs,
3971                       const char *name, struct type *context_type,
3972                       int parse_completion)
3973 {
3974   int fallback;
3975   int k;
3976   int m;                        /* Number of hits */
3977
3978   m = 0;
3979   /* In the first pass of the loop, we only accept functions matching
3980      context_type.  If none are found, we add a second pass of the loop
3981      where every function is accepted.  */
3982   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3983     {
3984       for (k = 0; k < nsyms; k += 1)
3985         {
3986           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3987
3988           if (ada_args_match (syms[k].symbol, args, nargs)
3989               && (fallback || return_match (type, context_type)))
3990             {
3991               syms[m] = syms[k];
3992               m += 1;
3993             }
3994         }
3995     }
3996
3997   /* If we got multiple matches, ask the user which one to use.  Don't do this
3998      interactive thing during completion, though, as the purpose of the
3999      completion is providing a list of all possible matches.  Prompting the
4000      user to filter it down would be completely unexpected in this case.  */
4001   if (m == 0)
4002     return -1;
4003   else if (m > 1 && !parse_completion)
4004     {
4005       printf_filtered (_("Multiple matches for %s\n"), name);
4006       user_select_syms (syms, m, 1);
4007       return 0;
4008     }
4009   return 0;
4010 }
4011
4012 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4013    on the function identified by SYM and BLOCK, and taking NARGS
4014    arguments.  Update *EXPP as needed to hold more space.  */
4015
4016 static void
4017 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4018                             int oplen, struct symbol *sym,
4019                             const struct block *block)
4020 {
4021   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4022      symbol, -oplen for operator being replaced).  */
4023   struct expression *newexp = (struct expression *)
4024     xzalloc (sizeof (struct expression)
4025              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4026   struct expression *exp = expp->get ();
4027
4028   newexp->nelts = exp->nelts + 7 - oplen;
4029   newexp->language_defn = exp->language_defn;
4030   newexp->gdbarch = exp->gdbarch;
4031   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4032   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4033           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4034
4035   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4036   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4037
4038   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4039   newexp->elts[pc + 4].block = block;
4040   newexp->elts[pc + 5].symbol = sym;
4041
4042   expp->reset (newexp);
4043 }
4044
4045 /* Type-class predicates */
4046
4047 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4048    or FLOAT).  */
4049
4050 static int
4051 numeric_type_p (struct type *type)
4052 {
4053   if (type == NULL)
4054     return 0;
4055   else
4056     {
4057       switch (type->code ())
4058         {
4059         case TYPE_CODE_INT:
4060         case TYPE_CODE_FLT:
4061           return 1;
4062         case TYPE_CODE_RANGE:
4063           return (type == TYPE_TARGET_TYPE (type)
4064                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4065         default:
4066           return 0;
4067         }
4068     }
4069 }
4070
4071 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4072
4073 static int
4074 integer_type_p (struct type *type)
4075 {
4076   if (type == NULL)
4077     return 0;
4078   else
4079     {
4080       switch (type->code ())
4081         {
4082         case TYPE_CODE_INT:
4083           return 1;
4084         case TYPE_CODE_RANGE:
4085           return (type == TYPE_TARGET_TYPE (type)
4086                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4087         default:
4088           return 0;
4089         }
4090     }
4091 }
4092
4093 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4094
4095 static int
4096 scalar_type_p (struct type *type)
4097 {
4098   if (type == NULL)
4099     return 0;
4100   else
4101     {
4102       switch (type->code ())
4103         {
4104         case TYPE_CODE_INT:
4105         case TYPE_CODE_RANGE:
4106         case TYPE_CODE_ENUM:
4107         case TYPE_CODE_FLT:
4108           return 1;
4109         default:
4110           return 0;
4111         }
4112     }
4113 }
4114
4115 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4116
4117 static int
4118 discrete_type_p (struct type *type)
4119 {
4120   if (type == NULL)
4121     return 0;
4122   else
4123     {
4124       switch (type->code ())
4125         {
4126         case TYPE_CODE_INT:
4127         case TYPE_CODE_RANGE:
4128         case TYPE_CODE_ENUM:
4129         case TYPE_CODE_BOOL:
4130           return 1;
4131         default:
4132           return 0;
4133         }
4134     }
4135 }
4136
4137 /* Returns non-zero if OP with operands in the vector ARGS could be
4138    a user-defined function.  Errs on the side of pre-defined operators
4139    (i.e., result 0).  */
4140
4141 static int
4142 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4143 {
4144   struct type *type0 =
4145     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4146   struct type *type1 =
4147     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4148
4149   if (type0 == NULL)
4150     return 0;
4151
4152   switch (op)
4153     {
4154     default:
4155       return 0;
4156
4157     case BINOP_ADD:
4158     case BINOP_SUB:
4159     case BINOP_MUL:
4160     case BINOP_DIV:
4161       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4162
4163     case BINOP_REM:
4164     case BINOP_MOD:
4165     case BINOP_BITWISE_AND:
4166     case BINOP_BITWISE_IOR:
4167     case BINOP_BITWISE_XOR:
4168       return (!(integer_type_p (type0) && integer_type_p (type1)));
4169
4170     case BINOP_EQUAL:
4171     case BINOP_NOTEQUAL:
4172     case BINOP_LESS:
4173     case BINOP_GTR:
4174     case BINOP_LEQ:
4175     case BINOP_GEQ:
4176       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4177
4178     case BINOP_CONCAT:
4179       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4180
4181     case BINOP_EXP:
4182       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4183
4184     case UNOP_NEG:
4185     case UNOP_PLUS:
4186     case UNOP_LOGICAL_NOT:
4187     case UNOP_ABS:
4188       return (!numeric_type_p (type0));
4189
4190     }
4191 }
4192 \f
4193                                 /* Renaming */
4194
4195 /* NOTES: 
4196
4197    1. In the following, we assume that a renaming type's name may
4198       have an ___XD suffix.  It would be nice if this went away at some
4199       point.
4200    2. We handle both the (old) purely type-based representation of 
4201       renamings and the (new) variable-based encoding.  At some point,
4202       it is devoutly to be hoped that the former goes away 
4203       (FIXME: hilfinger-2007-07-09).
4204    3. Subprogram renamings are not implemented, although the XRS
4205       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4206
4207 /* If SYM encodes a renaming, 
4208
4209        <renaming> renames <renamed entity>,
4210
4211    sets *LEN to the length of the renamed entity's name,
4212    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4213    the string describing the subcomponent selected from the renamed
4214    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4215    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4216    are undefined).  Otherwise, returns a value indicating the category
4217    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4218    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4219    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4220    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4221    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4222    may be NULL, in which case they are not assigned.
4223
4224    [Currently, however, GCC does not generate subprogram renamings.]  */
4225
4226 enum ada_renaming_category
4227 ada_parse_renaming (struct symbol *sym,
4228                     const char **renamed_entity, int *len, 
4229                     const char **renaming_expr)
4230 {
4231   enum ada_renaming_category kind;
4232   const char *info;
4233   const char *suffix;
4234
4235   if (sym == NULL)
4236     return ADA_NOT_RENAMING;
4237   switch (SYMBOL_CLASS (sym)) 
4238     {
4239     default:
4240       return ADA_NOT_RENAMING;
4241     case LOC_LOCAL:
4242     case LOC_STATIC:
4243     case LOC_COMPUTED:
4244     case LOC_OPTIMIZED_OUT:
4245       info = strstr (sym->linkage_name (), "___XR");
4246       if (info == NULL)
4247         return ADA_NOT_RENAMING;
4248       switch (info[5])
4249         {
4250         case '_':
4251           kind = ADA_OBJECT_RENAMING;
4252           info += 6;
4253           break;
4254         case 'E':
4255           kind = ADA_EXCEPTION_RENAMING;
4256           info += 7;
4257           break;
4258         case 'P':
4259           kind = ADA_PACKAGE_RENAMING;
4260           info += 7;
4261           break;
4262         case 'S':
4263           kind = ADA_SUBPROGRAM_RENAMING;
4264           info += 7;
4265           break;
4266         default:
4267           return ADA_NOT_RENAMING;
4268         }
4269     }
4270
4271   if (renamed_entity != NULL)
4272     *renamed_entity = info;
4273   suffix = strstr (info, "___XE");
4274   if (suffix == NULL || suffix == info)
4275     return ADA_NOT_RENAMING;
4276   if (len != NULL)
4277     *len = strlen (info) - strlen (suffix);
4278   suffix += 5;
4279   if (renaming_expr != NULL)
4280     *renaming_expr = suffix;
4281   return kind;
4282 }
4283
4284 /* Compute the value of the given RENAMING_SYM, which is expected to
4285    be a symbol encoding a renaming expression.  BLOCK is the block
4286    used to evaluate the renaming.  */
4287
4288 static struct value *
4289 ada_read_renaming_var_value (struct symbol *renaming_sym,
4290                              const struct block *block)
4291 {
4292   const char *sym_name;
4293
4294   sym_name = renaming_sym->linkage_name ();
4295   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4296   return evaluate_expression (expr.get ());
4297 }
4298 \f
4299
4300                                 /* Evaluation: Function Calls */
4301
4302 /* Return an lvalue containing the value VAL.  This is the identity on
4303    lvalues, and otherwise has the side-effect of allocating memory
4304    in the inferior where a copy of the value contents is copied.  */
4305
4306 static struct value *
4307 ensure_lval (struct value *val)
4308 {
4309   if (VALUE_LVAL (val) == not_lval
4310       || VALUE_LVAL (val) == lval_internalvar)
4311     {
4312       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4313       const CORE_ADDR addr =
4314         value_as_long (value_allocate_space_in_inferior (len));
4315
4316       VALUE_LVAL (val) = lval_memory;
4317       set_value_address (val, addr);
4318       write_memory (addr, value_contents (val), len);
4319     }
4320
4321   return val;
4322 }
4323
4324 /* Given ARG, a value of type (pointer or reference to a)*
4325    structure/union, extract the component named NAME from the ultimate
4326    target structure/union and return it as a value with its
4327    appropriate type.
4328
4329    The routine searches for NAME among all members of the structure itself
4330    and (recursively) among all members of any wrapper members
4331    (e.g., '_parent').
4332
4333    If NO_ERR, then simply return NULL in case of error, rather than
4334    calling error.  */
4335
4336 static struct value *
4337 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4338 {
4339   struct type *t, *t1;
4340   struct value *v;
4341   int check_tag;
4342
4343   v = NULL;
4344   t1 = t = ada_check_typedef (value_type (arg));
4345   if (t->code () == TYPE_CODE_REF)
4346     {
4347       t1 = TYPE_TARGET_TYPE (t);
4348       if (t1 == NULL)
4349         goto BadValue;
4350       t1 = ada_check_typedef (t1);
4351       if (t1->code () == TYPE_CODE_PTR)
4352         {
4353           arg = coerce_ref (arg);
4354           t = t1;
4355         }
4356     }
4357
4358   while (t->code () == TYPE_CODE_PTR)
4359     {
4360       t1 = TYPE_TARGET_TYPE (t);
4361       if (t1 == NULL)
4362         goto BadValue;
4363       t1 = ada_check_typedef (t1);
4364       if (t1->code () == TYPE_CODE_PTR)
4365         {
4366           arg = value_ind (arg);
4367           t = t1;
4368         }
4369       else
4370         break;
4371     }
4372
4373   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4374     goto BadValue;
4375
4376   if (t1 == t)
4377     v = ada_search_struct_field (name, arg, 0, t);
4378   else
4379     {
4380       int bit_offset, bit_size, byte_offset;
4381       struct type *field_type;
4382       CORE_ADDR address;
4383
4384       if (t->code () == TYPE_CODE_PTR)
4385         address = value_address (ada_value_ind (arg));
4386       else
4387         address = value_address (ada_coerce_ref (arg));
4388
4389       /* Check to see if this is a tagged type.  We also need to handle
4390          the case where the type is a reference to a tagged type, but
4391          we have to be careful to exclude pointers to tagged types.
4392          The latter should be shown as usual (as a pointer), whereas
4393          a reference should mostly be transparent to the user.  */
4394
4395       if (ada_is_tagged_type (t1, 0)
4396           || (t1->code () == TYPE_CODE_REF
4397               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4398         {
4399           /* We first try to find the searched field in the current type.
4400              If not found then let's look in the fixed type.  */
4401
4402           if (!find_struct_field (name, t1, 0,
4403                                   &field_type, &byte_offset, &bit_offset,
4404                                   &bit_size, NULL))
4405             check_tag = 1;
4406           else
4407             check_tag = 0;
4408         }
4409       else
4410         check_tag = 0;
4411
4412       /* Convert to fixed type in all cases, so that we have proper
4413          offsets to each field in unconstrained record types.  */
4414       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4415                               address, NULL, check_tag);
4416
4417       if (find_struct_field (name, t1, 0,
4418                              &field_type, &byte_offset, &bit_offset,
4419                              &bit_size, NULL))
4420         {
4421           if (bit_size != 0)
4422             {
4423               if (t->code () == TYPE_CODE_REF)
4424                 arg = ada_coerce_ref (arg);
4425               else
4426                 arg = ada_value_ind (arg);
4427               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4428                                                   bit_offset, bit_size,
4429                                                   field_type);
4430             }
4431           else
4432             v = value_at_lazy (field_type, address + byte_offset);
4433         }
4434     }
4435
4436   if (v != NULL || no_err)
4437     return v;
4438   else
4439     error (_("There is no member named %s."), name);
4440
4441  BadValue:
4442   if (no_err)
4443     return NULL;
4444   else
4445     error (_("Attempt to extract a component of "
4446              "a value that is not a record."));
4447 }
4448
4449 /* Return the value ACTUAL, converted to be an appropriate value for a
4450    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4451    allocating any necessary descriptors (fat pointers), or copies of
4452    values not residing in memory, updating it as needed.  */
4453
4454 struct value *
4455 ada_convert_actual (struct value *actual, struct type *formal_type0)
4456 {
4457   struct type *actual_type = ada_check_typedef (value_type (actual));
4458   struct type *formal_type = ada_check_typedef (formal_type0);
4459   struct type *formal_target =
4460     formal_type->code () == TYPE_CODE_PTR
4461     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4462   struct type *actual_target =
4463     actual_type->code () == TYPE_CODE_PTR
4464     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4465
4466   if (ada_is_array_descriptor_type (formal_target)
4467       && actual_target->code () == TYPE_CODE_ARRAY)
4468     return make_array_descriptor (formal_type, actual);
4469   else if (formal_type->code () == TYPE_CODE_PTR
4470            || formal_type->code () == TYPE_CODE_REF)
4471     {
4472       struct value *result;
4473
4474       if (formal_target->code () == TYPE_CODE_ARRAY
4475           && ada_is_array_descriptor_type (actual_target))
4476         result = desc_data (actual);
4477       else if (formal_type->code () != TYPE_CODE_PTR)
4478         {
4479           if (VALUE_LVAL (actual) != lval_memory)
4480             {
4481               struct value *val;
4482
4483               actual_type = ada_check_typedef (value_type (actual));
4484               val = allocate_value (actual_type);
4485               memcpy ((char *) value_contents_raw (val),
4486                       (char *) value_contents (actual),
4487                       TYPE_LENGTH (actual_type));
4488               actual = ensure_lval (val);
4489             }
4490           result = value_addr (actual);
4491         }
4492       else
4493         return actual;
4494       return value_cast_pointers (formal_type, result, 0);
4495     }
4496   else if (actual_type->code () == TYPE_CODE_PTR)
4497     return ada_value_ind (actual);
4498   else if (ada_is_aligner_type (formal_type))
4499     {
4500       /* We need to turn this parameter into an aligner type
4501          as well.  */
4502       struct value *aligner = allocate_value (formal_type);
4503       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4504
4505       value_assign_to_component (aligner, component, actual);
4506       return aligner;
4507     }
4508
4509   return actual;
4510 }
4511
4512 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4513    type TYPE.  This is usually an inefficient no-op except on some targets
4514    (such as AVR) where the representation of a pointer and an address
4515    differs.  */
4516
4517 static CORE_ADDR
4518 value_pointer (struct value *value, struct type *type)
4519 {
4520   struct gdbarch *gdbarch = get_type_arch (type);
4521   unsigned len = TYPE_LENGTH (type);
4522   gdb_byte *buf = (gdb_byte *) alloca (len);
4523   CORE_ADDR addr;
4524
4525   addr = value_address (value);
4526   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4527   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4528   return addr;
4529 }
4530
4531
4532 /* Push a descriptor of type TYPE for array value ARR on the stack at
4533    *SP, updating *SP to reflect the new descriptor.  Return either
4534    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4535    to-descriptor type rather than a descriptor type), a struct value *
4536    representing a pointer to this descriptor.  */
4537
4538 static struct value *
4539 make_array_descriptor (struct type *type, struct value *arr)
4540 {
4541   struct type *bounds_type = desc_bounds_type (type);
4542   struct type *desc_type = desc_base_type (type);
4543   struct value *descriptor = allocate_value (desc_type);
4544   struct value *bounds = allocate_value (bounds_type);
4545   int i;
4546
4547   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4548        i > 0; i -= 1)
4549     {
4550       modify_field (value_type (bounds), value_contents_writeable (bounds),
4551                     ada_array_bound (arr, i, 0),
4552                     desc_bound_bitpos (bounds_type, i, 0),
4553                     desc_bound_bitsize (bounds_type, i, 0));
4554       modify_field (value_type (bounds), value_contents_writeable (bounds),
4555                     ada_array_bound (arr, i, 1),
4556                     desc_bound_bitpos (bounds_type, i, 1),
4557                     desc_bound_bitsize (bounds_type, i, 1));
4558     }
4559
4560   bounds = ensure_lval (bounds);
4561
4562   modify_field (value_type (descriptor),
4563                 value_contents_writeable (descriptor),
4564                 value_pointer (ensure_lval (arr),
4565                                TYPE_FIELD_TYPE (desc_type, 0)),
4566                 fat_pntr_data_bitpos (desc_type),
4567                 fat_pntr_data_bitsize (desc_type));
4568
4569   modify_field (value_type (descriptor),
4570                 value_contents_writeable (descriptor),
4571                 value_pointer (bounds,
4572                                TYPE_FIELD_TYPE (desc_type, 1)),
4573                 fat_pntr_bounds_bitpos (desc_type),
4574                 fat_pntr_bounds_bitsize (desc_type));
4575
4576   descriptor = ensure_lval (descriptor);
4577
4578   if (type->code () == TYPE_CODE_PTR)
4579     return value_addr (descriptor);
4580   else
4581     return descriptor;
4582 }
4583 \f
4584                                 /* Symbol Cache Module */
4585
4586 /* Performance measurements made as of 2010-01-15 indicate that
4587    this cache does bring some noticeable improvements.  Depending
4588    on the type of entity being printed, the cache can make it as much
4589    as an order of magnitude faster than without it.
4590
4591    The descriptive type DWARF extension has significantly reduced
4592    the need for this cache, at least when DWARF is being used.  However,
4593    even in this case, some expensive name-based symbol searches are still
4594    sometimes necessary - to find an XVZ variable, mostly.  */
4595
4596 /* Initialize the contents of SYM_CACHE.  */
4597
4598 static void
4599 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4600 {
4601   obstack_init (&sym_cache->cache_space);
4602   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4603 }
4604
4605 /* Free the memory used by SYM_CACHE.  */
4606
4607 static void
4608 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4609 {
4610   obstack_free (&sym_cache->cache_space, NULL);
4611   xfree (sym_cache);
4612 }
4613
4614 /* Return the symbol cache associated to the given program space PSPACE.
4615    If not allocated for this PSPACE yet, allocate and initialize one.  */
4616
4617 static struct ada_symbol_cache *
4618 ada_get_symbol_cache (struct program_space *pspace)
4619 {
4620   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4621
4622   if (pspace_data->sym_cache == NULL)
4623     {
4624       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4625       ada_init_symbol_cache (pspace_data->sym_cache);
4626     }
4627
4628   return pspace_data->sym_cache;
4629 }
4630
4631 /* Clear all entries from the symbol cache.  */
4632
4633 static void
4634 ada_clear_symbol_cache (void)
4635 {
4636   struct ada_symbol_cache *sym_cache
4637     = ada_get_symbol_cache (current_program_space);
4638
4639   obstack_free (&sym_cache->cache_space, NULL);
4640   ada_init_symbol_cache (sym_cache);
4641 }
4642
4643 /* Search our cache for an entry matching NAME and DOMAIN.
4644    Return it if found, or NULL otherwise.  */
4645
4646 static struct cache_entry **
4647 find_entry (const char *name, domain_enum domain)
4648 {
4649   struct ada_symbol_cache *sym_cache
4650     = ada_get_symbol_cache (current_program_space);
4651   int h = msymbol_hash (name) % HASH_SIZE;
4652   struct cache_entry **e;
4653
4654   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4655     {
4656       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4657         return e;
4658     }
4659   return NULL;
4660 }
4661
4662 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4663    Return 1 if found, 0 otherwise.
4664
4665    If an entry was found and SYM is not NULL, set *SYM to the entry's
4666    SYM.  Same principle for BLOCK if not NULL.  */
4667
4668 static int
4669 lookup_cached_symbol (const char *name, domain_enum domain,
4670                       struct symbol **sym, const struct block **block)
4671 {
4672   struct cache_entry **e = find_entry (name, domain);
4673
4674   if (e == NULL)
4675     return 0;
4676   if (sym != NULL)
4677     *sym = (*e)->sym;
4678   if (block != NULL)
4679     *block = (*e)->block;
4680   return 1;
4681 }
4682
4683 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4684    in domain DOMAIN, save this result in our symbol cache.  */
4685
4686 static void
4687 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4688               const struct block *block)
4689 {
4690   struct ada_symbol_cache *sym_cache
4691     = ada_get_symbol_cache (current_program_space);
4692   int h;
4693   struct cache_entry *e;
4694
4695   /* Symbols for builtin types don't have a block.
4696      For now don't cache such symbols.  */
4697   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4698     return;
4699
4700   /* If the symbol is a local symbol, then do not cache it, as a search
4701      for that symbol depends on the context.  To determine whether
4702      the symbol is local or not, we check the block where we found it
4703      against the global and static blocks of its associated symtab.  */
4704   if (sym
4705       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4706                             GLOBAL_BLOCK) != block
4707       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4708                             STATIC_BLOCK) != block)
4709     return;
4710
4711   h = msymbol_hash (name) % HASH_SIZE;
4712   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4713   e->next = sym_cache->root[h];
4714   sym_cache->root[h] = e;
4715   e->name = obstack_strdup (&sym_cache->cache_space, name);
4716   e->sym = sym;
4717   e->domain = domain;
4718   e->block = block;
4719 }
4720 \f
4721                                 /* Symbol Lookup */
4722
4723 /* Return the symbol name match type that should be used used when
4724    searching for all symbols matching LOOKUP_NAME.
4725
4726    LOOKUP_NAME is expected to be a symbol name after transformation
4727    for Ada lookups.  */
4728
4729 static symbol_name_match_type
4730 name_match_type_from_name (const char *lookup_name)
4731 {
4732   return (strstr (lookup_name, "__") == NULL
4733           ? symbol_name_match_type::WILD
4734           : symbol_name_match_type::FULL);
4735 }
4736
4737 /* Return the result of a standard (literal, C-like) lookup of NAME in
4738    given DOMAIN, visible from lexical block BLOCK.  */
4739
4740 static struct symbol *
4741 standard_lookup (const char *name, const struct block *block,
4742                  domain_enum domain)
4743 {
4744   /* Initialize it just to avoid a GCC false warning.  */
4745   struct block_symbol sym = {};
4746
4747   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4748     return sym.symbol;
4749   ada_lookup_encoded_symbol (name, block, domain, &sym);
4750   cache_symbol (name, domain, sym.symbol, sym.block);
4751   return sym.symbol;
4752 }
4753
4754
4755 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4756    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4757    since they contend in overloading in the same way.  */
4758 static int
4759 is_nonfunction (struct block_symbol syms[], int n)
4760 {
4761   int i;
4762
4763   for (i = 0; i < n; i += 1)
4764     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4765         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4766             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4767       return 1;
4768
4769   return 0;
4770 }
4771
4772 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4773    struct types.  Otherwise, they may not.  */
4774
4775 static int
4776 equiv_types (struct type *type0, struct type *type1)
4777 {
4778   if (type0 == type1)
4779     return 1;
4780   if (type0 == NULL || type1 == NULL
4781       || type0->code () != type1->code ())
4782     return 0;
4783   if ((type0->code () == TYPE_CODE_STRUCT
4784        || type0->code () == TYPE_CODE_ENUM)
4785       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4786       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4787     return 1;
4788
4789   return 0;
4790 }
4791
4792 /* True iff SYM0 represents the same entity as SYM1, or one that is
4793    no more defined than that of SYM1.  */
4794
4795 static int
4796 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4797 {
4798   if (sym0 == sym1)
4799     return 1;
4800   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4801       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4802     return 0;
4803
4804   switch (SYMBOL_CLASS (sym0))
4805     {
4806     case LOC_UNDEF:
4807       return 1;
4808     case LOC_TYPEDEF:
4809       {
4810         struct type *type0 = SYMBOL_TYPE (sym0);
4811         struct type *type1 = SYMBOL_TYPE (sym1);
4812         const char *name0 = sym0->linkage_name ();
4813         const char *name1 = sym1->linkage_name ();
4814         int len0 = strlen (name0);
4815
4816         return
4817           type0->code () == type1->code ()
4818           && (equiv_types (type0, type1)
4819               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4820                   && startswith (name1 + len0, "___XV")));
4821       }
4822     case LOC_CONST:
4823       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4824         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4825
4826     case LOC_STATIC:
4827       {
4828         const char *name0 = sym0->linkage_name ();
4829         const char *name1 = sym1->linkage_name ();
4830         return (strcmp (name0, name1) == 0
4831                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4832       }
4833
4834     default:
4835       return 0;
4836     }
4837 }
4838
4839 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4840    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4841
4842 static void
4843 add_defn_to_vec (struct obstack *obstackp,
4844                  struct symbol *sym,
4845                  const struct block *block)
4846 {
4847   int i;
4848   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4849
4850   /* Do not try to complete stub types, as the debugger is probably
4851      already scanning all symbols matching a certain name at the
4852      time when this function is called.  Trying to replace the stub
4853      type by its associated full type will cause us to restart a scan
4854      which may lead to an infinite recursion.  Instead, the client
4855      collecting the matching symbols will end up collecting several
4856      matches, with at least one of them complete.  It can then filter
4857      out the stub ones if needed.  */
4858
4859   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4860     {
4861       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4862         return;
4863       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4864         {
4865           prevDefns[i].symbol = sym;
4866           prevDefns[i].block = block;
4867           return;
4868         }
4869     }
4870
4871   {
4872     struct block_symbol info;
4873
4874     info.symbol = sym;
4875     info.block = block;
4876     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4877   }
4878 }
4879
4880 /* Number of block_symbol structures currently collected in current vector in
4881    OBSTACKP.  */
4882
4883 static int
4884 num_defns_collected (struct obstack *obstackp)
4885 {
4886   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4887 }
4888
4889 /* Vector of block_symbol structures currently collected in current vector in
4890    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4891
4892 static struct block_symbol *
4893 defns_collected (struct obstack *obstackp, int finish)
4894 {
4895   if (finish)
4896     return (struct block_symbol *) obstack_finish (obstackp);
4897   else
4898     return (struct block_symbol *) obstack_base (obstackp);
4899 }
4900
4901 /* Return a bound minimal symbol matching NAME according to Ada
4902    decoding rules.  Returns an invalid symbol if there is no such
4903    minimal symbol.  Names prefixed with "standard__" are handled
4904    specially: "standard__" is first stripped off, and only static and
4905    global symbols are searched.  */
4906
4907 struct bound_minimal_symbol
4908 ada_lookup_simple_minsym (const char *name)
4909 {
4910   struct bound_minimal_symbol result;
4911
4912   memset (&result, 0, sizeof (result));
4913
4914   symbol_name_match_type match_type = name_match_type_from_name (name);
4915   lookup_name_info lookup_name (name, match_type);
4916
4917   symbol_name_matcher_ftype *match_name
4918     = ada_get_symbol_name_matcher (lookup_name);
4919
4920   for (objfile *objfile : current_program_space->objfiles ())
4921     {
4922       for (minimal_symbol *msymbol : objfile->msymbols ())
4923         {
4924           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4925               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4926             {
4927               result.minsym = msymbol;
4928               result.objfile = objfile;
4929               break;
4930             }
4931         }
4932     }
4933
4934   return result;
4935 }
4936
4937 /* For all subprograms that statically enclose the subprogram of the
4938    selected frame, add symbols matching identifier NAME in DOMAIN
4939    and their blocks to the list of data in OBSTACKP, as for
4940    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4941    with a wildcard prefix.  */
4942
4943 static void
4944 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4945                                   const lookup_name_info &lookup_name,
4946                                   domain_enum domain)
4947 {
4948 }
4949
4950 /* True if TYPE is definitely an artificial type supplied to a symbol
4951    for which no debugging information was given in the symbol file.  */
4952
4953 static int
4954 is_nondebugging_type (struct type *type)
4955 {
4956   const char *name = ada_type_name (type);
4957
4958   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4959 }
4960
4961 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4962    that are deemed "identical" for practical purposes.
4963
4964    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4965    types and that their number of enumerals is identical (in other
4966    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4967
4968 static int
4969 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4970 {
4971   int i;
4972
4973   /* The heuristic we use here is fairly conservative.  We consider
4974      that 2 enumerate types are identical if they have the same
4975      number of enumerals and that all enumerals have the same
4976      underlying value and name.  */
4977
4978   /* All enums in the type should have an identical underlying value.  */
4979   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4980     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4981       return 0;
4982
4983   /* All enumerals should also have the same name (modulo any numerical
4984      suffix).  */
4985   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4986     {
4987       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4988       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4989       int len_1 = strlen (name_1);
4990       int len_2 = strlen (name_2);
4991
4992       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4993       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4994       if (len_1 != len_2
4995           || strncmp (TYPE_FIELD_NAME (type1, i),
4996                       TYPE_FIELD_NAME (type2, i),
4997                       len_1) != 0)
4998         return 0;
4999     }
5000
5001   return 1;
5002 }
5003
5004 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5005    that are deemed "identical" for practical purposes.  Sometimes,
5006    enumerals are not strictly identical, but their types are so similar
5007    that they can be considered identical.
5008
5009    For instance, consider the following code:
5010
5011       type Color is (Black, Red, Green, Blue, White);
5012       type RGB_Color is new Color range Red .. Blue;
5013
5014    Type RGB_Color is a subrange of an implicit type which is a copy
5015    of type Color. If we call that implicit type RGB_ColorB ("B" is
5016    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5017    As a result, when an expression references any of the enumeral
5018    by name (Eg. "print green"), the expression is technically
5019    ambiguous and the user should be asked to disambiguate. But
5020    doing so would only hinder the user, since it wouldn't matter
5021    what choice he makes, the outcome would always be the same.
5022    So, for practical purposes, we consider them as the same.  */
5023
5024 static int
5025 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5026 {
5027   int i;
5028
5029   /* Before performing a thorough comparison check of each type,
5030      we perform a series of inexpensive checks.  We expect that these
5031      checks will quickly fail in the vast majority of cases, and thus
5032      help prevent the unnecessary use of a more expensive comparison.
5033      Said comparison also expects us to make some of these checks
5034      (see ada_identical_enum_types_p).  */
5035
5036   /* Quick check: All symbols should have an enum type.  */
5037   for (i = 0; i < syms.size (); i++)
5038     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
5039       return 0;
5040
5041   /* Quick check: They should all have the same value.  */
5042   for (i = 1; i < syms.size (); i++)
5043     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5044       return 0;
5045
5046   /* Quick check: They should all have the same number of enumerals.  */
5047   for (i = 1; i < syms.size (); i++)
5048     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5049         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5050       return 0;
5051
5052   /* All the sanity checks passed, so we might have a set of
5053      identical enumeration types.  Perform a more complete
5054      comparison of the type of each symbol.  */
5055   for (i = 1; i < syms.size (); i++)
5056     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5057                                      SYMBOL_TYPE (syms[0].symbol)))
5058       return 0;
5059
5060   return 1;
5061 }
5062
5063 /* Remove any non-debugging symbols in SYMS that definitely
5064    duplicate other symbols in the list (The only case I know of where
5065    this happens is when object files containing stabs-in-ecoff are
5066    linked with files containing ordinary ecoff debugging symbols (or no
5067    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5068    Returns the number of items in the modified list.  */
5069
5070 static int
5071 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5072 {
5073   int i, j;
5074
5075   /* We should never be called with less than 2 symbols, as there
5076      cannot be any extra symbol in that case.  But it's easy to
5077      handle, since we have nothing to do in that case.  */
5078   if (syms->size () < 2)
5079     return syms->size ();
5080
5081   i = 0;
5082   while (i < syms->size ())
5083     {
5084       int remove_p = 0;
5085
5086       /* If two symbols have the same name and one of them is a stub type,
5087          the get rid of the stub.  */
5088
5089       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5090           && (*syms)[i].symbol->linkage_name () != NULL)
5091         {
5092           for (j = 0; j < syms->size (); j++)
5093             {
5094               if (j != i
5095                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5096                   && (*syms)[j].symbol->linkage_name () != NULL
5097                   && strcmp ((*syms)[i].symbol->linkage_name (),
5098                              (*syms)[j].symbol->linkage_name ()) == 0)
5099                 remove_p = 1;
5100             }
5101         }
5102
5103       /* Two symbols with the same name, same class and same address
5104          should be identical.  */
5105
5106       else if ((*syms)[i].symbol->linkage_name () != NULL
5107           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5108           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5109         {
5110           for (j = 0; j < syms->size (); j += 1)
5111             {
5112               if (i != j
5113                   && (*syms)[j].symbol->linkage_name () != NULL
5114                   && strcmp ((*syms)[i].symbol->linkage_name (),
5115                              (*syms)[j].symbol->linkage_name ()) == 0
5116                   && SYMBOL_CLASS ((*syms)[i].symbol)
5117                        == SYMBOL_CLASS ((*syms)[j].symbol)
5118                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5119                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5120                 remove_p = 1;
5121             }
5122         }
5123       
5124       if (remove_p)
5125         syms->erase (syms->begin () + i);
5126
5127       i += 1;
5128     }
5129
5130   /* If all the remaining symbols are identical enumerals, then
5131      just keep the first one and discard the rest.
5132
5133      Unlike what we did previously, we do not discard any entry
5134      unless they are ALL identical.  This is because the symbol
5135      comparison is not a strict comparison, but rather a practical
5136      comparison.  If all symbols are considered identical, then
5137      we can just go ahead and use the first one and discard the rest.
5138      But if we cannot reduce the list to a single element, we have
5139      to ask the user to disambiguate anyways.  And if we have to
5140      present a multiple-choice menu, it's less confusing if the list
5141      isn't missing some choices that were identical and yet distinct.  */
5142   if (symbols_are_identical_enums (*syms))
5143     syms->resize (1);
5144
5145   return syms->size ();
5146 }
5147
5148 /* Given a type that corresponds to a renaming entity, use the type name
5149    to extract the scope (package name or function name, fully qualified,
5150    and following the GNAT encoding convention) where this renaming has been
5151    defined.  */
5152
5153 static std::string
5154 xget_renaming_scope (struct type *renaming_type)
5155 {
5156   /* The renaming types adhere to the following convention:
5157      <scope>__<rename>___<XR extension>.
5158      So, to extract the scope, we search for the "___XR" extension,
5159      and then backtrack until we find the first "__".  */
5160
5161   const char *name = TYPE_NAME (renaming_type);
5162   const char *suffix = strstr (name, "___XR");
5163   const char *last;
5164
5165   /* Now, backtrack a bit until we find the first "__".  Start looking
5166      at suffix - 3, as the <rename> part is at least one character long.  */
5167
5168   for (last = suffix - 3; last > name; last--)
5169     if (last[0] == '_' && last[1] == '_')
5170       break;
5171
5172   /* Make a copy of scope and return it.  */
5173   return std::string (name, last);
5174 }
5175
5176 /* Return nonzero if NAME corresponds to a package name.  */
5177
5178 static int
5179 is_package_name (const char *name)
5180 {
5181   /* Here, We take advantage of the fact that no symbols are generated
5182      for packages, while symbols are generated for each function.
5183      So the condition for NAME represent a package becomes equivalent
5184      to NAME not existing in our list of symbols.  There is only one
5185      small complication with library-level functions (see below).  */
5186
5187   /* If it is a function that has not been defined at library level,
5188      then we should be able to look it up in the symbols.  */
5189   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5190     return 0;
5191
5192   /* Library-level function names start with "_ada_".  See if function
5193      "_ada_" followed by NAME can be found.  */
5194
5195   /* Do a quick check that NAME does not contain "__", since library-level
5196      functions names cannot contain "__" in them.  */
5197   if (strstr (name, "__") != NULL)
5198     return 0;
5199
5200   std::string fun_name = string_printf ("_ada_%s", name);
5201
5202   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5203 }
5204
5205 /* Return nonzero if SYM corresponds to a renaming entity that is
5206    not visible from FUNCTION_NAME.  */
5207
5208 static int
5209 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5210 {
5211   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5212     return 0;
5213
5214   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5215
5216   /* If the rename has been defined in a package, then it is visible.  */
5217   if (is_package_name (scope.c_str ()))
5218     return 0;
5219
5220   /* Check that the rename is in the current function scope by checking
5221      that its name starts with SCOPE.  */
5222
5223   /* If the function name starts with "_ada_", it means that it is
5224      a library-level function.  Strip this prefix before doing the
5225      comparison, as the encoding for the renaming does not contain
5226      this prefix.  */
5227   if (startswith (function_name, "_ada_"))
5228     function_name += 5;
5229
5230   return !startswith (function_name, scope.c_str ());
5231 }
5232
5233 /* Remove entries from SYMS that corresponds to a renaming entity that
5234    is not visible from the function associated with CURRENT_BLOCK or
5235    that is superfluous due to the presence of more specific renaming
5236    information.  Places surviving symbols in the initial entries of
5237    SYMS and returns the number of surviving symbols.
5238    
5239    Rationale:
5240    First, in cases where an object renaming is implemented as a
5241    reference variable, GNAT may produce both the actual reference
5242    variable and the renaming encoding.  In this case, we discard the
5243    latter.
5244
5245    Second, GNAT emits a type following a specified encoding for each renaming
5246    entity.  Unfortunately, STABS currently does not support the definition
5247    of types that are local to a given lexical block, so all renamings types
5248    are emitted at library level.  As a consequence, if an application
5249    contains two renaming entities using the same name, and a user tries to
5250    print the value of one of these entities, the result of the ada symbol
5251    lookup will also contain the wrong renaming type.
5252
5253    This function partially covers for this limitation by attempting to
5254    remove from the SYMS list renaming symbols that should be visible
5255    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5256    method with the current information available.  The implementation
5257    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5258    
5259       - When the user tries to print a rename in a function while there
5260         is another rename entity defined in a package:  Normally, the
5261         rename in the function has precedence over the rename in the
5262         package, so the latter should be removed from the list.  This is
5263         currently not the case.
5264         
5265       - This function will incorrectly remove valid renames if
5266         the CURRENT_BLOCK corresponds to a function which symbol name
5267         has been changed by an "Export" pragma.  As a consequence,
5268         the user will be unable to print such rename entities.  */
5269
5270 static int
5271 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5272                              const struct block *current_block)
5273 {
5274   struct symbol *current_function;
5275   const char *current_function_name;
5276   int i;
5277   int is_new_style_renaming;
5278
5279   /* If there is both a renaming foo___XR... encoded as a variable and
5280      a simple variable foo in the same block, discard the latter.
5281      First, zero out such symbols, then compress.  */
5282   is_new_style_renaming = 0;
5283   for (i = 0; i < syms->size (); i += 1)
5284     {
5285       struct symbol *sym = (*syms)[i].symbol;
5286       const struct block *block = (*syms)[i].block;
5287       const char *name;
5288       const char *suffix;
5289
5290       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5291         continue;
5292       name = sym->linkage_name ();
5293       suffix = strstr (name, "___XR");
5294
5295       if (suffix != NULL)
5296         {
5297           int name_len = suffix - name;
5298           int j;
5299
5300           is_new_style_renaming = 1;
5301           for (j = 0; j < syms->size (); j += 1)
5302             if (i != j && (*syms)[j].symbol != NULL
5303                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5304                             name_len) == 0
5305                 && block == (*syms)[j].block)
5306               (*syms)[j].symbol = NULL;
5307         }
5308     }
5309   if (is_new_style_renaming)
5310     {
5311       int j, k;
5312
5313       for (j = k = 0; j < syms->size (); j += 1)
5314         if ((*syms)[j].symbol != NULL)
5315             {
5316               (*syms)[k] = (*syms)[j];
5317               k += 1;
5318             }
5319       return k;
5320     }
5321
5322   /* Extract the function name associated to CURRENT_BLOCK.
5323      Abort if unable to do so.  */
5324
5325   if (current_block == NULL)
5326     return syms->size ();
5327
5328   current_function = block_linkage_function (current_block);
5329   if (current_function == NULL)
5330     return syms->size ();
5331
5332   current_function_name = current_function->linkage_name ();
5333   if (current_function_name == NULL)
5334     return syms->size ();
5335
5336   /* Check each of the symbols, and remove it from the list if it is
5337      a type corresponding to a renaming that is out of the scope of
5338      the current block.  */
5339
5340   i = 0;
5341   while (i < syms->size ())
5342     {
5343       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5344           == ADA_OBJECT_RENAMING
5345           && old_renaming_is_invisible ((*syms)[i].symbol,
5346                                         current_function_name))
5347         syms->erase (syms->begin () + i);
5348       else
5349         i += 1;
5350     }
5351
5352   return syms->size ();
5353 }
5354
5355 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5356    whose name and domain match NAME and DOMAIN respectively.
5357    If no match was found, then extend the search to "enclosing"
5358    routines (in other words, if we're inside a nested function,
5359    search the symbols defined inside the enclosing functions).
5360    If WILD_MATCH_P is nonzero, perform the naming matching in
5361    "wild" mode (see function "wild_match" for more info).
5362
5363    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5364
5365 static void
5366 ada_add_local_symbols (struct obstack *obstackp,
5367                        const lookup_name_info &lookup_name,
5368                        const struct block *block, domain_enum domain)
5369 {
5370   int block_depth = 0;
5371
5372   while (block != NULL)
5373     {
5374       block_depth += 1;
5375       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5376
5377       /* If we found a non-function match, assume that's the one.  */
5378       if (is_nonfunction (defns_collected (obstackp, 0),
5379                           num_defns_collected (obstackp)))
5380         return;
5381
5382       block = BLOCK_SUPERBLOCK (block);
5383     }
5384
5385   /* If no luck so far, try to find NAME as a local symbol in some lexically
5386      enclosing subprogram.  */
5387   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5388     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5389 }
5390
5391 /* An object of this type is used as the user_data argument when
5392    calling the map_matching_symbols method.  */
5393
5394 struct match_data
5395 {
5396   struct objfile *objfile;
5397   struct obstack *obstackp;
5398   struct symbol *arg_sym;
5399   int found_sym;
5400 };
5401
5402 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5403    to a list of symbols.  DATA is a pointer to a struct match_data *
5404    containing the obstack that collects the symbol list, the file that SYM
5405    must come from, a flag indicating whether a non-argument symbol has
5406    been found in the current block, and the last argument symbol
5407    passed in SYM within the current block (if any).  When SYM is null,
5408    marking the end of a block, the argument symbol is added if no
5409    other has been found.  */
5410
5411 static bool
5412 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5413                           struct match_data *data)
5414 {
5415   const struct block *block = bsym->block;
5416   struct symbol *sym = bsym->symbol;
5417
5418   if (sym == NULL)
5419     {
5420       if (!data->found_sym && data->arg_sym != NULL) 
5421         add_defn_to_vec (data->obstackp,
5422                          fixup_symbol_section (data->arg_sym, data->objfile),
5423                          block);
5424       data->found_sym = 0;
5425       data->arg_sym = NULL;
5426     }
5427   else 
5428     {
5429       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5430         return true;
5431       else if (SYMBOL_IS_ARGUMENT (sym))
5432         data->arg_sym = sym;
5433       else
5434         {
5435           data->found_sym = 1;
5436           add_defn_to_vec (data->obstackp,
5437                            fixup_symbol_section (sym, data->objfile),
5438                            block);
5439         }
5440     }
5441   return true;
5442 }
5443
5444 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5445    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5446    symbols to OBSTACKP.  Return whether we found such symbols.  */
5447
5448 static int
5449 ada_add_block_renamings (struct obstack *obstackp,
5450                          const struct block *block,
5451                          const lookup_name_info &lookup_name,
5452                          domain_enum domain)
5453 {
5454   struct using_direct *renaming;
5455   int defns_mark = num_defns_collected (obstackp);
5456
5457   symbol_name_matcher_ftype *name_match
5458     = ada_get_symbol_name_matcher (lookup_name);
5459
5460   for (renaming = block_using (block);
5461        renaming != NULL;
5462        renaming = renaming->next)
5463     {
5464       const char *r_name;
5465
5466       /* Avoid infinite recursions: skip this renaming if we are actually
5467          already traversing it.
5468
5469          Currently, symbol lookup in Ada don't use the namespace machinery from
5470          C++/Fortran support: skip namespace imports that use them.  */
5471       if (renaming->searched
5472           || (renaming->import_src != NULL
5473               && renaming->import_src[0] != '\0')
5474           || (renaming->import_dest != NULL
5475               && renaming->import_dest[0] != '\0'))
5476         continue;
5477       renaming->searched = 1;
5478
5479       /* TODO: here, we perform another name-based symbol lookup, which can
5480          pull its own multiple overloads.  In theory, we should be able to do
5481          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5482          not a simple name.  But in order to do this, we would need to enhance
5483          the DWARF reader to associate a symbol to this renaming, instead of a
5484          name.  So, for now, we do something simpler: re-use the C++/Fortran
5485          namespace machinery.  */
5486       r_name = (renaming->alias != NULL
5487                 ? renaming->alias
5488                 : renaming->declaration);
5489       if (name_match (r_name, lookup_name, NULL))
5490         {
5491           lookup_name_info decl_lookup_name (renaming->declaration,
5492                                              lookup_name.match_type ());
5493           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5494                                1, NULL);
5495         }
5496       renaming->searched = 0;
5497     }
5498   return num_defns_collected (obstackp) != defns_mark;
5499 }
5500
5501 /* Implements compare_names, but only applying the comparision using
5502    the given CASING.  */
5503
5504 static int
5505 compare_names_with_case (const char *string1, const char *string2,
5506                          enum case_sensitivity casing)
5507 {
5508   while (*string1 != '\0' && *string2 != '\0')
5509     {
5510       char c1, c2;
5511
5512       if (isspace (*string1) || isspace (*string2))
5513         return strcmp_iw_ordered (string1, string2);
5514
5515       if (casing == case_sensitive_off)
5516         {
5517           c1 = tolower (*string1);
5518           c2 = tolower (*string2);
5519         }
5520       else
5521         {
5522           c1 = *string1;
5523           c2 = *string2;
5524         }
5525       if (c1 != c2)
5526         break;
5527
5528       string1 += 1;
5529       string2 += 1;
5530     }
5531
5532   switch (*string1)
5533     {
5534     case '(':
5535       return strcmp_iw_ordered (string1, string2);
5536     case '_':
5537       if (*string2 == '\0')
5538         {
5539           if (is_name_suffix (string1))
5540             return 0;
5541           else
5542             return 1;
5543         }
5544       /* FALLTHROUGH */
5545     default:
5546       if (*string2 == '(')
5547         return strcmp_iw_ordered (string1, string2);
5548       else
5549         {
5550           if (casing == case_sensitive_off)
5551             return tolower (*string1) - tolower (*string2);
5552           else
5553             return *string1 - *string2;
5554         }
5555     }
5556 }
5557
5558 /* Compare STRING1 to STRING2, with results as for strcmp.
5559    Compatible with strcmp_iw_ordered in that...
5560
5561        strcmp_iw_ordered (STRING1, STRING2) <= 0
5562
5563    ... implies...
5564
5565        compare_names (STRING1, STRING2) <= 0
5566
5567    (they may differ as to what symbols compare equal).  */
5568
5569 static int
5570 compare_names (const char *string1, const char *string2)
5571 {
5572   int result;
5573
5574   /* Similar to what strcmp_iw_ordered does, we need to perform
5575      a case-insensitive comparison first, and only resort to
5576      a second, case-sensitive, comparison if the first one was
5577      not sufficient to differentiate the two strings.  */
5578
5579   result = compare_names_with_case (string1, string2, case_sensitive_off);
5580   if (result == 0)
5581     result = compare_names_with_case (string1, string2, case_sensitive_on);
5582
5583   return result;
5584 }
5585
5586 /* Convenience function to get at the Ada encoded lookup name for
5587    LOOKUP_NAME, as a C string.  */
5588
5589 static const char *
5590 ada_lookup_name (const lookup_name_info &lookup_name)
5591 {
5592   return lookup_name.ada ().lookup_name ().c_str ();
5593 }
5594
5595 /* Add to OBSTACKP all non-local symbols whose name and domain match
5596    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5597    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5598    symbols otherwise.  */
5599
5600 static void
5601 add_nonlocal_symbols (struct obstack *obstackp,
5602                       const lookup_name_info &lookup_name,
5603                       domain_enum domain, int global)
5604 {
5605   struct match_data data;
5606
5607   memset (&data, 0, sizeof data);
5608   data.obstackp = obstackp;
5609
5610   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5611
5612   auto callback = [&] (struct block_symbol *bsym)
5613     {
5614       return aux_add_nonlocal_symbols (bsym, &data);
5615     };
5616
5617   for (objfile *objfile : current_program_space->objfiles ())
5618     {
5619       data.objfile = objfile;
5620
5621       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5622                                              domain, global, callback,
5623                                              (is_wild_match
5624                                               ? NULL : compare_names));
5625
5626       for (compunit_symtab *cu : objfile->compunits ())
5627         {
5628           const struct block *global_block
5629             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5630
5631           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5632                                        domain))
5633             data.found_sym = 1;
5634         }
5635     }
5636
5637   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5638     {
5639       const char *name = ada_lookup_name (lookup_name);
5640       std::string bracket_name = std::string ("<_ada_") + name + '>';
5641       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5642
5643       for (objfile *objfile : current_program_space->objfiles ())
5644         {
5645           data.objfile = objfile;
5646           objfile->sf->qf->map_matching_symbols (objfile, name1,
5647                                                  domain, global, callback,
5648                                                  compare_names);
5649         }
5650     }           
5651 }
5652
5653 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5654    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5655    returning the number of matches.  Add these to OBSTACKP.
5656
5657    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5658    symbol match within the nest of blocks whose innermost member is BLOCK,
5659    is the one match returned (no other matches in that or
5660    enclosing blocks is returned).  If there are any matches in or
5661    surrounding BLOCK, then these alone are returned.
5662
5663    Names prefixed with "standard__" are handled specially:
5664    "standard__" is first stripped off (by the lookup_name
5665    constructor), and only static and global symbols are searched.
5666
5667    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5668    to lookup global symbols.  */
5669
5670 static void
5671 ada_add_all_symbols (struct obstack *obstackp,
5672                      const struct block *block,
5673                      const lookup_name_info &lookup_name,
5674                      domain_enum domain,
5675                      int full_search,
5676                      int *made_global_lookup_p)
5677 {
5678   struct symbol *sym;
5679
5680   if (made_global_lookup_p)
5681     *made_global_lookup_p = 0;
5682
5683   /* Special case: If the user specifies a symbol name inside package
5684      Standard, do a non-wild matching of the symbol name without
5685      the "standard__" prefix.  This was primarily introduced in order
5686      to allow the user to specifically access the standard exceptions
5687      using, for instance, Standard.Constraint_Error when Constraint_Error
5688      is ambiguous (due to the user defining its own Constraint_Error
5689      entity inside its program).  */
5690   if (lookup_name.ada ().standard_p ())
5691     block = NULL;
5692
5693   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5694
5695   if (block != NULL)
5696     {
5697       if (full_search)
5698         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5699       else
5700         {
5701           /* In the !full_search case we're are being called by
5702              ada_iterate_over_symbols, and we don't want to search
5703              superblocks.  */
5704           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5705         }
5706       if (num_defns_collected (obstackp) > 0 || !full_search)
5707         return;
5708     }
5709
5710   /* No non-global symbols found.  Check our cache to see if we have
5711      already performed this search before.  If we have, then return
5712      the same result.  */
5713
5714   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5715                             domain, &sym, &block))
5716     {
5717       if (sym != NULL)
5718         add_defn_to_vec (obstackp, sym, block);
5719       return;
5720     }
5721
5722   if (made_global_lookup_p)
5723     *made_global_lookup_p = 1;
5724
5725   /* Search symbols from all global blocks.  */
5726  
5727   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5728
5729   /* Now add symbols from all per-file blocks if we've gotten no hits
5730      (not strictly correct, but perhaps better than an error).  */
5731
5732   if (num_defns_collected (obstackp) == 0)
5733     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5734 }
5735
5736 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5737    is non-zero, enclosing scope and in global scopes, returning the number of
5738    matches.
5739    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5740    found and the blocks and symbol tables (if any) in which they were
5741    found.
5742
5743    When full_search is non-zero, any non-function/non-enumeral
5744    symbol match within the nest of blocks whose innermost member is BLOCK,
5745    is the one match returned (no other matches in that or
5746    enclosing blocks is returned).  If there are any matches in or
5747    surrounding BLOCK, then these alone are returned.
5748
5749    Names prefixed with "standard__" are handled specially: "standard__"
5750    is first stripped off, and only static and global symbols are searched.  */
5751
5752 static int
5753 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5754                                const struct block *block,
5755                                domain_enum domain,
5756                                std::vector<struct block_symbol> *results,
5757                                int full_search)
5758 {
5759   int syms_from_global_search;
5760   int ndefns;
5761   auto_obstack obstack;
5762
5763   ada_add_all_symbols (&obstack, block, lookup_name,
5764                        domain, full_search, &syms_from_global_search);
5765
5766   ndefns = num_defns_collected (&obstack);
5767
5768   struct block_symbol *base = defns_collected (&obstack, 1);
5769   for (int i = 0; i < ndefns; ++i)
5770     results->push_back (base[i]);
5771
5772   ndefns = remove_extra_symbols (results);
5773
5774   if (ndefns == 0 && full_search && syms_from_global_search)
5775     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5776
5777   if (ndefns == 1 && full_search && syms_from_global_search)
5778     cache_symbol (ada_lookup_name (lookup_name), domain,
5779                   (*results)[0].symbol, (*results)[0].block);
5780
5781   ndefns = remove_irrelevant_renamings (results, block);
5782
5783   return ndefns;
5784 }
5785
5786 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5787    in global scopes, returning the number of matches, and filling *RESULTS
5788    with (SYM,BLOCK) tuples.
5789
5790    See ada_lookup_symbol_list_worker for further details.  */
5791
5792 int
5793 ada_lookup_symbol_list (const char *name, const struct block *block,
5794                         domain_enum domain,
5795                         std::vector<struct block_symbol> *results)
5796 {
5797   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5798   lookup_name_info lookup_name (name, name_match_type);
5799
5800   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5801 }
5802
5803 /* Implementation of the la_iterate_over_symbols method.  */
5804
5805 static bool
5806 ada_iterate_over_symbols
5807   (const struct block *block, const lookup_name_info &name,
5808    domain_enum domain,
5809    gdb::function_view<symbol_found_callback_ftype> callback)
5810 {
5811   int ndefs, i;
5812   std::vector<struct block_symbol> results;
5813
5814   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5815
5816   for (i = 0; i < ndefs; ++i)
5817     {
5818       if (!callback (&results[i]))
5819         return false;
5820     }
5821
5822   return true;
5823 }
5824
5825 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5826    to 1, but choosing the first symbol found if there are multiple
5827    choices.
5828
5829    The result is stored in *INFO, which must be non-NULL.
5830    If no match is found, INFO->SYM is set to NULL.  */
5831
5832 void
5833 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5834                            domain_enum domain,
5835                            struct block_symbol *info)
5836 {
5837   /* Since we already have an encoded name, wrap it in '<>' to force a
5838      verbatim match.  Otherwise, if the name happens to not look like
5839      an encoded name (because it doesn't include a "__"),
5840      ada_lookup_name_info would re-encode/fold it again, and that
5841      would e.g., incorrectly lowercase object renaming names like
5842      "R28b" -> "r28b".  */
5843   std::string verbatim = std::string ("<") + name + '>';
5844
5845   gdb_assert (info != NULL);
5846   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5847 }
5848
5849 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5850    scope and in global scopes, or NULL if none.  NAME is folded and
5851    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5852    choosing the first symbol if there are multiple choices.  */
5853
5854 struct block_symbol
5855 ada_lookup_symbol (const char *name, const struct block *block0,
5856                    domain_enum domain)
5857 {
5858   std::vector<struct block_symbol> candidates;
5859   int n_candidates;
5860
5861   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5862
5863   if (n_candidates == 0)
5864     return {};
5865
5866   block_symbol info = candidates[0];
5867   info.symbol = fixup_symbol_section (info.symbol, NULL);
5868   return info;
5869 }
5870
5871 static struct block_symbol
5872 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5873                             const char *name,
5874                             const struct block *block,
5875                             const domain_enum domain)
5876 {
5877   struct block_symbol sym;
5878
5879   sym = ada_lookup_symbol (name, block_static_block (block), domain);
5880   if (sym.symbol != NULL)
5881     return sym;
5882
5883   /* If we haven't found a match at this point, try the primitive
5884      types.  In other languages, this search is performed before
5885      searching for global symbols in order to short-circuit that
5886      global-symbol search if it happens that the name corresponds
5887      to a primitive type.  But we cannot do the same in Ada, because
5888      it is perfectly legitimate for a program to declare a type which
5889      has the same name as a standard type.  If looking up a type in
5890      that situation, we have traditionally ignored the primitive type
5891      in favor of user-defined types.  This is why, unlike most other
5892      languages, we search the primitive types this late and only after
5893      having searched the global symbols without success.  */
5894
5895   if (domain == VAR_DOMAIN)
5896     {
5897       struct gdbarch *gdbarch;
5898
5899       if (block == NULL)
5900         gdbarch = target_gdbarch ();
5901       else
5902         gdbarch = block_gdbarch (block);
5903       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5904       if (sym.symbol != NULL)
5905         return sym;
5906     }
5907
5908   return {};
5909 }
5910
5911
5912 /* True iff STR is a possible encoded suffix of a normal Ada name
5913    that is to be ignored for matching purposes.  Suffixes of parallel
5914    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5915    are given by any of the regular expressions:
5916
5917    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5918    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5919    TKB              [subprogram suffix for task bodies]
5920    _E[0-9]+[bs]$    [protected object entry suffixes]
5921    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5922
5923    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5924    match is performed.  This sequence is used to differentiate homonyms,
5925    is an optional part of a valid name suffix.  */
5926
5927 static int
5928 is_name_suffix (const char *str)
5929 {
5930   int k;
5931   const char *matching;
5932   const int len = strlen (str);
5933
5934   /* Skip optional leading __[0-9]+.  */
5935
5936   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5937     {
5938       str += 3;
5939       while (isdigit (str[0]))
5940         str += 1;
5941     }
5942   
5943   /* [.$][0-9]+ */
5944
5945   if (str[0] == '.' || str[0] == '$')
5946     {
5947       matching = str + 1;
5948       while (isdigit (matching[0]))
5949         matching += 1;
5950       if (matching[0] == '\0')
5951         return 1;
5952     }
5953
5954   /* ___[0-9]+ */
5955
5956   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5957     {
5958       matching = str + 3;
5959       while (isdigit (matching[0]))
5960         matching += 1;
5961       if (matching[0] == '\0')
5962         return 1;
5963     }
5964
5965   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5966
5967   if (strcmp (str, "TKB") == 0)
5968     return 1;
5969
5970 #if 0
5971   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5972      with a N at the end.  Unfortunately, the compiler uses the same
5973      convention for other internal types it creates.  So treating
5974      all entity names that end with an "N" as a name suffix causes
5975      some regressions.  For instance, consider the case of an enumerated
5976      type.  To support the 'Image attribute, it creates an array whose
5977      name ends with N.
5978      Having a single character like this as a suffix carrying some
5979      information is a bit risky.  Perhaps we should change the encoding
5980      to be something like "_N" instead.  In the meantime, do not do
5981      the following check.  */
5982   /* Protected Object Subprograms */
5983   if (len == 1 && str [0] == 'N')
5984     return 1;
5985 #endif
5986
5987   /* _E[0-9]+[bs]$ */
5988   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5989     {
5990       matching = str + 3;
5991       while (isdigit (matching[0]))
5992         matching += 1;
5993       if ((matching[0] == 'b' || matching[0] == 's')
5994           && matching [1] == '\0')
5995         return 1;
5996     }
5997
5998   /* ??? We should not modify STR directly, as we are doing below.  This
5999      is fine in this case, but may become problematic later if we find
6000      that this alternative did not work, and want to try matching
6001      another one from the begining of STR.  Since we modified it, we
6002      won't be able to find the begining of the string anymore!  */
6003   if (str[0] == 'X')
6004     {
6005       str += 1;
6006       while (str[0] != '_' && str[0] != '\0')
6007         {
6008           if (str[0] != 'n' && str[0] != 'b')
6009             return 0;
6010           str += 1;
6011         }
6012     }
6013
6014   if (str[0] == '\000')
6015     return 1;
6016
6017   if (str[0] == '_')
6018     {
6019       if (str[1] != '_' || str[2] == '\000')
6020         return 0;
6021       if (str[2] == '_')
6022         {
6023           if (strcmp (str + 3, "JM") == 0)
6024             return 1;
6025           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6026              the LJM suffix in favor of the JM one.  But we will
6027              still accept LJM as a valid suffix for a reasonable
6028              amount of time, just to allow ourselves to debug programs
6029              compiled using an older version of GNAT.  */
6030           if (strcmp (str + 3, "LJM") == 0)
6031             return 1;
6032           if (str[3] != 'X')
6033             return 0;
6034           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6035               || str[4] == 'U' || str[4] == 'P')
6036             return 1;
6037           if (str[4] == 'R' && str[5] != 'T')
6038             return 1;
6039           return 0;
6040         }
6041       if (!isdigit (str[2]))
6042         return 0;
6043       for (k = 3; str[k] != '\0'; k += 1)
6044         if (!isdigit (str[k]) && str[k] != '_')
6045           return 0;
6046       return 1;
6047     }
6048   if (str[0] == '$' && isdigit (str[1]))
6049     {
6050       for (k = 2; str[k] != '\0'; k += 1)
6051         if (!isdigit (str[k]) && str[k] != '_')
6052           return 0;
6053       return 1;
6054     }
6055   return 0;
6056 }
6057
6058 /* Return non-zero if the string starting at NAME and ending before
6059    NAME_END contains no capital letters.  */
6060
6061 static int
6062 is_valid_name_for_wild_match (const char *name0)
6063 {
6064   std::string decoded_name = ada_decode (name0);
6065   int i;
6066
6067   /* If the decoded name starts with an angle bracket, it means that
6068      NAME0 does not follow the GNAT encoding format.  It should then
6069      not be allowed as a possible wild match.  */
6070   if (decoded_name[0] == '<')
6071     return 0;
6072
6073   for (i=0; decoded_name[i] != '\0'; i++)
6074     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6075       return 0;
6076
6077   return 1;
6078 }
6079
6080 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6081    that could start a simple name.  Assumes that *NAMEP points into
6082    the string beginning at NAME0.  */
6083
6084 static int
6085 advance_wild_match (const char **namep, const char *name0, int target0)
6086 {
6087   const char *name = *namep;
6088
6089   while (1)
6090     {
6091       int t0, t1;
6092
6093       t0 = *name;
6094       if (t0 == '_')
6095         {
6096           t1 = name[1];
6097           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6098             {
6099               name += 1;
6100               if (name == name0 + 5 && startswith (name0, "_ada"))
6101                 break;
6102               else
6103                 name += 1;
6104             }
6105           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6106                                  || name[2] == target0))
6107             {
6108               name += 2;
6109               break;
6110             }
6111           else
6112             return 0;
6113         }
6114       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6115         name += 1;
6116       else
6117         return 0;
6118     }
6119
6120   *namep = name;
6121   return 1;
6122 }
6123
6124 /* Return true iff NAME encodes a name of the form prefix.PATN.
6125    Ignores any informational suffixes of NAME (i.e., for which
6126    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6127    simple name.  */
6128
6129 static bool
6130 wild_match (const char *name, const char *patn)
6131 {
6132   const char *p;
6133   const char *name0 = name;
6134
6135   while (1)
6136     {
6137       const char *match = name;
6138
6139       if (*name == *patn)
6140         {
6141           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6142             if (*p != *name)
6143               break;
6144           if (*p == '\0' && is_name_suffix (name))
6145             return match == name0 || is_valid_name_for_wild_match (name0);
6146
6147           if (name[-1] == '_')
6148             name -= 1;
6149         }
6150       if (!advance_wild_match (&name, name0, *patn))
6151         return false;
6152     }
6153 }
6154
6155 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6156    any trailing suffixes that encode debugging information or leading
6157    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6158    information that is ignored).  */
6159
6160 static bool
6161 full_match (const char *sym_name, const char *search_name)
6162 {
6163   size_t search_name_len = strlen (search_name);
6164
6165   if (strncmp (sym_name, search_name, search_name_len) == 0
6166       && is_name_suffix (sym_name + search_name_len))
6167     return true;
6168
6169   if (startswith (sym_name, "_ada_")
6170       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6171       && is_name_suffix (sym_name + search_name_len + 5))
6172     return true;
6173
6174   return false;
6175 }
6176
6177 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6178    *defn_symbols, updating the list of symbols in OBSTACKP (if
6179    necessary).  OBJFILE is the section containing BLOCK.  */
6180
6181 static void
6182 ada_add_block_symbols (struct obstack *obstackp,
6183                        const struct block *block,
6184                        const lookup_name_info &lookup_name,
6185                        domain_enum domain, struct objfile *objfile)
6186 {
6187   struct block_iterator iter;
6188   /* A matching argument symbol, if any.  */
6189   struct symbol *arg_sym;
6190   /* Set true when we find a matching non-argument symbol.  */
6191   int found_sym;
6192   struct symbol *sym;
6193
6194   arg_sym = NULL;
6195   found_sym = 0;
6196   for (sym = block_iter_match_first (block, lookup_name, &iter);
6197        sym != NULL;
6198        sym = block_iter_match_next (lookup_name, &iter))
6199     {
6200       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6201         {
6202           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6203             {
6204               if (SYMBOL_IS_ARGUMENT (sym))
6205                 arg_sym = sym;
6206               else
6207                 {
6208                   found_sym = 1;
6209                   add_defn_to_vec (obstackp,
6210                                    fixup_symbol_section (sym, objfile),
6211                                    block);
6212                 }
6213             }
6214         }
6215     }
6216
6217   /* Handle renamings.  */
6218
6219   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6220     found_sym = 1;
6221
6222   if (!found_sym && arg_sym != NULL)
6223     {
6224       add_defn_to_vec (obstackp,
6225                        fixup_symbol_section (arg_sym, objfile),
6226                        block);
6227     }
6228
6229   if (!lookup_name.ada ().wild_match_p ())
6230     {
6231       arg_sym = NULL;
6232       found_sym = 0;
6233       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6234       const char *name = ada_lookup_name.c_str ();
6235       size_t name_len = ada_lookup_name.size ();
6236
6237       ALL_BLOCK_SYMBOLS (block, iter, sym)
6238       {
6239         if (symbol_matches_domain (sym->language (),
6240                                    SYMBOL_DOMAIN (sym), domain))
6241           {
6242             int cmp;
6243
6244             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6245             if (cmp == 0)
6246               {
6247                 cmp = !startswith (sym->linkage_name (), "_ada_");
6248                 if (cmp == 0)
6249                   cmp = strncmp (name, sym->linkage_name () + 5,
6250                                  name_len);
6251               }
6252
6253             if (cmp == 0
6254                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6255               {
6256                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6257                   {
6258                     if (SYMBOL_IS_ARGUMENT (sym))
6259                       arg_sym = sym;
6260                     else
6261                       {
6262                         found_sym = 1;
6263                         add_defn_to_vec (obstackp,
6264                                          fixup_symbol_section (sym, objfile),
6265                                          block);
6266                       }
6267                   }
6268               }
6269           }
6270       }
6271
6272       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6273          They aren't parameters, right?  */
6274       if (!found_sym && arg_sym != NULL)
6275         {
6276           add_defn_to_vec (obstackp,
6277                            fixup_symbol_section (arg_sym, objfile),
6278                            block);
6279         }
6280     }
6281 }
6282 \f
6283
6284                                 /* Symbol Completion */
6285
6286 /* See symtab.h.  */
6287
6288 bool
6289 ada_lookup_name_info::matches
6290   (const char *sym_name,
6291    symbol_name_match_type match_type,
6292    completion_match_result *comp_match_res) const
6293 {
6294   bool match = false;
6295   const char *text = m_encoded_name.c_str ();
6296   size_t text_len = m_encoded_name.size ();
6297
6298   /* First, test against the fully qualified name of the symbol.  */
6299
6300   if (strncmp (sym_name, text, text_len) == 0)
6301     match = true;
6302
6303   std::string decoded_name = ada_decode (sym_name);
6304   if (match && !m_encoded_p)
6305     {
6306       /* One needed check before declaring a positive match is to verify
6307          that iff we are doing a verbatim match, the decoded version
6308          of the symbol name starts with '<'.  Otherwise, this symbol name
6309          is not a suitable completion.  */
6310
6311       bool has_angle_bracket = (decoded_name[0] == '<');
6312       match = (has_angle_bracket == m_verbatim_p);
6313     }
6314
6315   if (match && !m_verbatim_p)
6316     {
6317       /* When doing non-verbatim match, another check that needs to
6318          be done is to verify that the potentially matching symbol name
6319          does not include capital letters, because the ada-mode would
6320          not be able to understand these symbol names without the
6321          angle bracket notation.  */
6322       const char *tmp;
6323
6324       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6325       if (*tmp != '\0')
6326         match = false;
6327     }
6328
6329   /* Second: Try wild matching...  */
6330
6331   if (!match && m_wild_match_p)
6332     {
6333       /* Since we are doing wild matching, this means that TEXT
6334          may represent an unqualified symbol name.  We therefore must
6335          also compare TEXT against the unqualified name of the symbol.  */
6336       sym_name = ada_unqualified_name (decoded_name.c_str ());
6337
6338       if (strncmp (sym_name, text, text_len) == 0)
6339         match = true;
6340     }
6341
6342   /* Finally: If we found a match, prepare the result to return.  */
6343
6344   if (!match)
6345     return false;
6346
6347   if (comp_match_res != NULL)
6348     {
6349       std::string &match_str = comp_match_res->match.storage ();
6350
6351       if (!m_encoded_p)
6352         match_str = ada_decode (sym_name);
6353       else
6354         {
6355           if (m_verbatim_p)
6356             match_str = add_angle_brackets (sym_name);
6357           else
6358             match_str = sym_name;
6359
6360         }
6361
6362       comp_match_res->set_match (match_str.c_str ());
6363     }
6364
6365   return true;
6366 }
6367
6368 /* Add the list of possible symbol names completing TEXT to TRACKER.
6369    WORD is the entire command on which completion is made.  */
6370
6371 static void
6372 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6373                                        complete_symbol_mode mode,
6374                                        symbol_name_match_type name_match_type,
6375                                        const char *text, const char *word,
6376                                        enum type_code code)
6377 {
6378   struct symbol *sym;
6379   const struct block *b, *surrounding_static_block = 0;
6380   struct block_iterator iter;
6381
6382   gdb_assert (code == TYPE_CODE_UNDEF);
6383
6384   lookup_name_info lookup_name (text, name_match_type, true);
6385
6386   /* First, look at the partial symtab symbols.  */
6387   expand_symtabs_matching (NULL,
6388                            lookup_name,
6389                            NULL,
6390                            NULL,
6391                            ALL_DOMAIN);
6392
6393   /* At this point scan through the misc symbol vectors and add each
6394      symbol you find to the list.  Eventually we want to ignore
6395      anything that isn't a text symbol (everything else will be
6396      handled by the psymtab code above).  */
6397
6398   for (objfile *objfile : current_program_space->objfiles ())
6399     {
6400       for (minimal_symbol *msymbol : objfile->msymbols ())
6401         {
6402           QUIT;
6403
6404           if (completion_skip_symbol (mode, msymbol))
6405             continue;
6406
6407           language symbol_language = msymbol->language ();
6408
6409           /* Ada minimal symbols won't have their language set to Ada.  If
6410              we let completion_list_add_name compare using the
6411              default/C-like matcher, then when completing e.g., symbols in a
6412              package named "pck", we'd match internal Ada symbols like
6413              "pckS", which are invalid in an Ada expression, unless you wrap
6414              them in '<' '>' to request a verbatim match.
6415
6416              Unfortunately, some Ada encoded names successfully demangle as
6417              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6418              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6419              with the wrong language set.  Paper over that issue here.  */
6420           if (symbol_language == language_auto
6421               || symbol_language == language_cplus)
6422             symbol_language = language_ada;
6423
6424           completion_list_add_name (tracker,
6425                                     symbol_language,
6426                                     msymbol->linkage_name (),
6427                                     lookup_name, text, word);
6428         }
6429     }
6430
6431   /* Search upwards from currently selected frame (so that we can
6432      complete on local vars.  */
6433
6434   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6435     {
6436       if (!BLOCK_SUPERBLOCK (b))
6437         surrounding_static_block = b;   /* For elmin of dups */
6438
6439       ALL_BLOCK_SYMBOLS (b, iter, sym)
6440       {
6441         if (completion_skip_symbol (mode, sym))
6442           continue;
6443
6444         completion_list_add_name (tracker,
6445                                   sym->language (),
6446                                   sym->linkage_name (),
6447                                   lookup_name, text, word);
6448       }
6449     }
6450
6451   /* Go through the symtabs and check the externs and statics for
6452      symbols which match.  */
6453
6454   for (objfile *objfile : current_program_space->objfiles ())
6455     {
6456       for (compunit_symtab *s : objfile->compunits ())
6457         {
6458           QUIT;
6459           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6460           ALL_BLOCK_SYMBOLS (b, iter, sym)
6461             {
6462               if (completion_skip_symbol (mode, sym))
6463                 continue;
6464
6465               completion_list_add_name (tracker,
6466                                         sym->language (),
6467                                         sym->linkage_name (),
6468                                         lookup_name, text, word);
6469             }
6470         }
6471     }
6472
6473   for (objfile *objfile : current_program_space->objfiles ())
6474     {
6475       for (compunit_symtab *s : objfile->compunits ())
6476         {
6477           QUIT;
6478           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6479           /* Don't do this block twice.  */
6480           if (b == surrounding_static_block)
6481             continue;
6482           ALL_BLOCK_SYMBOLS (b, iter, sym)
6483             {
6484               if (completion_skip_symbol (mode, sym))
6485                 continue;
6486
6487               completion_list_add_name (tracker,
6488                                         sym->language (),
6489                                         sym->linkage_name (),
6490                                         lookup_name, text, word);
6491             }
6492         }
6493     }
6494 }
6495
6496                                 /* Field Access */
6497
6498 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6499    for tagged types.  */
6500
6501 static int
6502 ada_is_dispatch_table_ptr_type (struct type *type)
6503 {
6504   const char *name;
6505
6506   if (type->code () != TYPE_CODE_PTR)
6507     return 0;
6508
6509   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6510   if (name == NULL)
6511     return 0;
6512
6513   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6514 }
6515
6516 /* Return non-zero if TYPE is an interface tag.  */
6517
6518 static int
6519 ada_is_interface_tag (struct type *type)
6520 {
6521   const char *name = TYPE_NAME (type);
6522
6523   if (name == NULL)
6524     return 0;
6525
6526   return (strcmp (name, "ada__tags__interface_tag") == 0);
6527 }
6528
6529 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6530    to be invisible to users.  */
6531
6532 int
6533 ada_is_ignored_field (struct type *type, int field_num)
6534 {
6535   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6536     return 1;
6537
6538   /* Check the name of that field.  */
6539   {
6540     const char *name = TYPE_FIELD_NAME (type, field_num);
6541
6542     /* Anonymous field names should not be printed.
6543        brobecker/2007-02-20: I don't think this can actually happen
6544        but we don't want to print the value of anonymous fields anyway.  */
6545     if (name == NULL)
6546       return 1;
6547
6548     /* Normally, fields whose name start with an underscore ("_")
6549        are fields that have been internally generated by the compiler,
6550        and thus should not be printed.  The "_parent" field is special,
6551        however: This is a field internally generated by the compiler
6552        for tagged types, and it contains the components inherited from
6553        the parent type.  This field should not be printed as is, but
6554        should not be ignored either.  */
6555     if (name[0] == '_' && !startswith (name, "_parent"))
6556       return 1;
6557   }
6558
6559   /* If this is the dispatch table of a tagged type or an interface tag,
6560      then ignore.  */
6561   if (ada_is_tagged_type (type, 1)
6562       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6563           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6564     return 1;
6565
6566   /* Not a special field, so it should not be ignored.  */
6567   return 0;
6568 }
6569
6570 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6571    pointer or reference type whose ultimate target has a tag field.  */
6572
6573 int
6574 ada_is_tagged_type (struct type *type, int refok)
6575 {
6576   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6577 }
6578
6579 /* True iff TYPE represents the type of X'Tag */
6580
6581 int
6582 ada_is_tag_type (struct type *type)
6583 {
6584   type = ada_check_typedef (type);
6585
6586   if (type == NULL || type->code () != TYPE_CODE_PTR)
6587     return 0;
6588   else
6589     {
6590       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6591
6592       return (name != NULL
6593               && strcmp (name, "ada__tags__dispatch_table") == 0);
6594     }
6595 }
6596
6597 /* The type of the tag on VAL.  */
6598
6599 static struct type *
6600 ada_tag_type (struct value *val)
6601 {
6602   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6603 }
6604
6605 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6606    retired at Ada 05).  */
6607
6608 static int
6609 is_ada95_tag (struct value *tag)
6610 {
6611   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6612 }
6613
6614 /* The value of the tag on VAL.  */
6615
6616 static struct value *
6617 ada_value_tag (struct value *val)
6618 {
6619   return ada_value_struct_elt (val, "_tag", 0);
6620 }
6621
6622 /* The value of the tag on the object of type TYPE whose contents are
6623    saved at VALADDR, if it is non-null, or is at memory address
6624    ADDRESS.  */
6625
6626 static struct value *
6627 value_tag_from_contents_and_address (struct type *type,
6628                                      const gdb_byte *valaddr,
6629                                      CORE_ADDR address)
6630 {
6631   int tag_byte_offset;
6632   struct type *tag_type;
6633
6634   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6635                          NULL, NULL, NULL))
6636     {
6637       const gdb_byte *valaddr1 = ((valaddr == NULL)
6638                                   ? NULL
6639                                   : valaddr + tag_byte_offset);
6640       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6641
6642       return value_from_contents_and_address (tag_type, valaddr1, address1);
6643     }
6644   return NULL;
6645 }
6646
6647 static struct type *
6648 type_from_tag (struct value *tag)
6649 {
6650   const char *type_name = ada_tag_name (tag);
6651
6652   if (type_name != NULL)
6653     return ada_find_any_type (ada_encode (type_name));
6654   return NULL;
6655 }
6656
6657 /* Given a value OBJ of a tagged type, return a value of this
6658    type at the base address of the object.  The base address, as
6659    defined in Ada.Tags, it is the address of the primary tag of
6660    the object, and therefore where the field values of its full
6661    view can be fetched.  */
6662
6663 struct value *
6664 ada_tag_value_at_base_address (struct value *obj)
6665 {
6666   struct value *val;
6667   LONGEST offset_to_top = 0;
6668   struct type *ptr_type, *obj_type;
6669   struct value *tag;
6670   CORE_ADDR base_address;
6671
6672   obj_type = value_type (obj);
6673
6674   /* It is the responsability of the caller to deref pointers.  */
6675
6676   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6677     return obj;
6678
6679   tag = ada_value_tag (obj);
6680   if (!tag)
6681     return obj;
6682
6683   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6684
6685   if (is_ada95_tag (tag))
6686     return obj;
6687
6688   ptr_type = language_lookup_primitive_type
6689     (language_def (language_ada), target_gdbarch(), "storage_offset");
6690   ptr_type = lookup_pointer_type (ptr_type);
6691   val = value_cast (ptr_type, tag);
6692   if (!val)
6693     return obj;
6694
6695   /* It is perfectly possible that an exception be raised while
6696      trying to determine the base address, just like for the tag;
6697      see ada_tag_name for more details.  We do not print the error
6698      message for the same reason.  */
6699
6700   try
6701     {
6702       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6703     }
6704
6705   catch (const gdb_exception_error &e)
6706     {
6707       return obj;
6708     }
6709
6710   /* If offset is null, nothing to do.  */
6711
6712   if (offset_to_top == 0)
6713     return obj;
6714
6715   /* -1 is a special case in Ada.Tags; however, what should be done
6716      is not quite clear from the documentation.  So do nothing for
6717      now.  */
6718
6719   if (offset_to_top == -1)
6720     return obj;
6721
6722   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6723      from the base address.  This was however incompatible with
6724      C++ dispatch table: C++ uses a *negative* value to *add*
6725      to the base address.  Ada's convention has therefore been
6726      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6727      use the same convention.  Here, we support both cases by
6728      checking the sign of OFFSET_TO_TOP.  */
6729
6730   if (offset_to_top > 0)
6731     offset_to_top = -offset_to_top;
6732
6733   base_address = value_address (obj) + offset_to_top;
6734   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6735
6736   /* Make sure that we have a proper tag at the new address.
6737      Otherwise, offset_to_top is bogus (which can happen when
6738      the object is not initialized yet).  */
6739
6740   if (!tag)
6741     return obj;
6742
6743   obj_type = type_from_tag (tag);
6744
6745   if (!obj_type)
6746     return obj;
6747
6748   return value_from_contents_and_address (obj_type, NULL, base_address);
6749 }
6750
6751 /* Return the "ada__tags__type_specific_data" type.  */
6752
6753 static struct type *
6754 ada_get_tsd_type (struct inferior *inf)
6755 {
6756   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6757
6758   if (data->tsd_type == 0)
6759     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6760   return data->tsd_type;
6761 }
6762
6763 /* Return the TSD (type-specific data) associated to the given TAG.
6764    TAG is assumed to be the tag of a tagged-type entity.
6765
6766    May return NULL if we are unable to get the TSD.  */
6767
6768 static struct value *
6769 ada_get_tsd_from_tag (struct value *tag)
6770 {
6771   struct value *val;
6772   struct type *type;
6773
6774   /* First option: The TSD is simply stored as a field of our TAG.
6775      Only older versions of GNAT would use this format, but we have
6776      to test it first, because there are no visible markers for
6777      the current approach except the absence of that field.  */
6778
6779   val = ada_value_struct_elt (tag, "tsd", 1);
6780   if (val)
6781     return val;
6782
6783   /* Try the second representation for the dispatch table (in which
6784      there is no explicit 'tsd' field in the referent of the tag pointer,
6785      and instead the tsd pointer is stored just before the dispatch
6786      table.  */
6787
6788   type = ada_get_tsd_type (current_inferior());
6789   if (type == NULL)
6790     return NULL;
6791   type = lookup_pointer_type (lookup_pointer_type (type));
6792   val = value_cast (type, tag);
6793   if (val == NULL)
6794     return NULL;
6795   return value_ind (value_ptradd (val, -1));
6796 }
6797
6798 /* Given the TSD of a tag (type-specific data), return a string
6799    containing the name of the associated type.
6800
6801    The returned value is good until the next call.  May return NULL
6802    if we are unable to determine the tag name.  */
6803
6804 static char *
6805 ada_tag_name_from_tsd (struct value *tsd)
6806 {
6807   static char name[1024];
6808   char *p;
6809   struct value *val;
6810
6811   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6812   if (val == NULL)
6813     return NULL;
6814   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6815   for (p = name; *p != '\0'; p += 1)
6816     if (isalpha (*p))
6817       *p = tolower (*p);
6818   return name;
6819 }
6820
6821 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6822    a C string.
6823
6824    Return NULL if the TAG is not an Ada tag, or if we were unable to
6825    determine the name of that tag.  The result is good until the next
6826    call.  */
6827
6828 const char *
6829 ada_tag_name (struct value *tag)
6830 {
6831   char *name = NULL;
6832
6833   if (!ada_is_tag_type (value_type (tag)))
6834     return NULL;
6835
6836   /* It is perfectly possible that an exception be raised while trying
6837      to determine the TAG's name, even under normal circumstances:
6838      The associated variable may be uninitialized or corrupted, for
6839      instance. We do not let any exception propagate past this point.
6840      instead we return NULL.
6841
6842      We also do not print the error message either (which often is very
6843      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6844      the caller print a more meaningful message if necessary.  */
6845   try
6846     {
6847       struct value *tsd = ada_get_tsd_from_tag (tag);
6848
6849       if (tsd != NULL)
6850         name = ada_tag_name_from_tsd (tsd);
6851     }
6852   catch (const gdb_exception_error &e)
6853     {
6854     }
6855
6856   return name;
6857 }
6858
6859 /* The parent type of TYPE, or NULL if none.  */
6860
6861 struct type *
6862 ada_parent_type (struct type *type)
6863 {
6864   int i;
6865
6866   type = ada_check_typedef (type);
6867
6868   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6869     return NULL;
6870
6871   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6872     if (ada_is_parent_field (type, i))
6873       {
6874         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6875
6876         /* If the _parent field is a pointer, then dereference it.  */
6877         if (parent_type->code () == TYPE_CODE_PTR)
6878           parent_type = TYPE_TARGET_TYPE (parent_type);
6879         /* If there is a parallel XVS type, get the actual base type.  */
6880         parent_type = ada_get_base_type (parent_type);
6881
6882         return ada_check_typedef (parent_type);
6883       }
6884
6885   return NULL;
6886 }
6887
6888 /* True iff field number FIELD_NUM of structure type TYPE contains the
6889    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6890    a structure type with at least FIELD_NUM+1 fields.  */
6891
6892 int
6893 ada_is_parent_field (struct type *type, int field_num)
6894 {
6895   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6896
6897   return (name != NULL
6898           && (startswith (name, "PARENT")
6899               || startswith (name, "_parent")));
6900 }
6901
6902 /* True iff field number FIELD_NUM of structure type TYPE is a
6903    transparent wrapper field (which should be silently traversed when doing
6904    field selection and flattened when printing).  Assumes TYPE is a
6905    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6906    structures.  */
6907
6908 int
6909 ada_is_wrapper_field (struct type *type, int field_num)
6910 {
6911   const char *name = TYPE_FIELD_NAME (type, field_num);
6912
6913   if (name != NULL && strcmp (name, "RETVAL") == 0)
6914     {
6915       /* This happens in functions with "out" or "in out" parameters
6916          which are passed by copy.  For such functions, GNAT describes
6917          the function's return type as being a struct where the return
6918          value is in a field called RETVAL, and where the other "out"
6919          or "in out" parameters are fields of that struct.  This is not
6920          a wrapper.  */
6921       return 0;
6922     }
6923
6924   return (name != NULL
6925           && (startswith (name, "PARENT")
6926               || strcmp (name, "REP") == 0
6927               || startswith (name, "_parent")
6928               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6929 }
6930
6931 /* True iff field number FIELD_NUM of structure or union type TYPE
6932    is a variant wrapper.  Assumes TYPE is a structure type with at least
6933    FIELD_NUM+1 fields.  */
6934
6935 int
6936 ada_is_variant_part (struct type *type, int field_num)
6937 {
6938   /* Only Ada types are eligible.  */
6939   if (!ADA_TYPE_P (type))
6940     return 0;
6941
6942   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6943
6944   return (field_type->code () == TYPE_CODE_UNION
6945           || (is_dynamic_field (type, field_num)
6946               && (TYPE_TARGET_TYPE (field_type)->code ()
6947                   == TYPE_CODE_UNION)));
6948 }
6949
6950 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6951    whose discriminants are contained in the record type OUTER_TYPE,
6952    returns the type of the controlling discriminant for the variant.
6953    May return NULL if the type could not be found.  */
6954
6955 struct type *
6956 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6957 {
6958   const char *name = ada_variant_discrim_name (var_type);
6959
6960   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6961 }
6962
6963 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6964    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6965    represents a 'when others' clause; otherwise 0.  */
6966
6967 static int
6968 ada_is_others_clause (struct type *type, int field_num)
6969 {
6970   const char *name = TYPE_FIELD_NAME (type, field_num);
6971
6972   return (name != NULL && name[0] == 'O');
6973 }
6974
6975 /* Assuming that TYPE0 is the type of the variant part of a record,
6976    returns the name of the discriminant controlling the variant.
6977    The value is valid until the next call to ada_variant_discrim_name.  */
6978
6979 const char *
6980 ada_variant_discrim_name (struct type *type0)
6981 {
6982   static char *result = NULL;
6983   static size_t result_len = 0;
6984   struct type *type;
6985   const char *name;
6986   const char *discrim_end;
6987   const char *discrim_start;
6988
6989   if (type0->code () == TYPE_CODE_PTR)
6990     type = TYPE_TARGET_TYPE (type0);
6991   else
6992     type = type0;
6993
6994   name = ada_type_name (type);
6995
6996   if (name == NULL || name[0] == '\000')
6997     return "";
6998
6999   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7000        discrim_end -= 1)
7001     {
7002       if (startswith (discrim_end, "___XVN"))
7003         break;
7004     }
7005   if (discrim_end == name)
7006     return "";
7007
7008   for (discrim_start = discrim_end; discrim_start != name + 3;
7009        discrim_start -= 1)
7010     {
7011       if (discrim_start == name + 1)
7012         return "";
7013       if ((discrim_start > name + 3
7014            && startswith (discrim_start - 3, "___"))
7015           || discrim_start[-1] == '.')
7016         break;
7017     }
7018
7019   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7020   strncpy (result, discrim_start, discrim_end - discrim_start);
7021   result[discrim_end - discrim_start] = '\0';
7022   return result;
7023 }
7024
7025 /* Scan STR for a subtype-encoded number, beginning at position K.
7026    Put the position of the character just past the number scanned in
7027    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7028    Return 1 if there was a valid number at the given position, and 0
7029    otherwise.  A "subtype-encoded" number consists of the absolute value
7030    in decimal, followed by the letter 'm' to indicate a negative number.
7031    Assumes 0m does not occur.  */
7032
7033 int
7034 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7035 {
7036   ULONGEST RU;
7037
7038   if (!isdigit (str[k]))
7039     return 0;
7040
7041   /* Do it the hard way so as not to make any assumption about
7042      the relationship of unsigned long (%lu scan format code) and
7043      LONGEST.  */
7044   RU = 0;
7045   while (isdigit (str[k]))
7046     {
7047       RU = RU * 10 + (str[k] - '0');
7048       k += 1;
7049     }
7050
7051   if (str[k] == 'm')
7052     {
7053       if (R != NULL)
7054         *R = (-(LONGEST) (RU - 1)) - 1;
7055       k += 1;
7056     }
7057   else if (R != NULL)
7058     *R = (LONGEST) RU;
7059
7060   /* NOTE on the above: Technically, C does not say what the results of
7061      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7062      number representable as a LONGEST (although either would probably work
7063      in most implementations).  When RU>0, the locution in the then branch
7064      above is always equivalent to the negative of RU.  */
7065
7066   if (new_k != NULL)
7067     *new_k = k;
7068   return 1;
7069 }
7070
7071 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7072    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7073    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7074
7075 static int
7076 ada_in_variant (LONGEST val, struct type *type, int field_num)
7077 {
7078   const char *name = TYPE_FIELD_NAME (type, field_num);
7079   int p;
7080
7081   p = 0;
7082   while (1)
7083     {
7084       switch (name[p])
7085         {
7086         case '\0':
7087           return 0;
7088         case 'S':
7089           {
7090             LONGEST W;
7091
7092             if (!ada_scan_number (name, p + 1, &W, &p))
7093               return 0;
7094             if (val == W)
7095               return 1;
7096             break;
7097           }
7098         case 'R':
7099           {
7100             LONGEST L, U;
7101
7102             if (!ada_scan_number (name, p + 1, &L, &p)
7103                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7104               return 0;
7105             if (val >= L && val <= U)
7106               return 1;
7107             break;
7108           }
7109         case 'O':
7110           return 1;
7111         default:
7112           return 0;
7113         }
7114     }
7115 }
7116
7117 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7118
7119 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7120    ARG_TYPE, extract and return the value of one of its (non-static)
7121    fields.  FIELDNO says which field.   Differs from value_primitive_field
7122    only in that it can handle packed values of arbitrary type.  */
7123
7124 struct value *
7125 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7126                            struct type *arg_type)
7127 {
7128   struct type *type;
7129
7130   arg_type = ada_check_typedef (arg_type);
7131   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7132
7133   /* Handle packed fields.  It might be that the field is not packed
7134      relative to its containing structure, but the structure itself is
7135      packed; in this case we must take the bit-field path.  */
7136   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7137     {
7138       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7139       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7140
7141       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7142                                              offset + bit_pos / 8,
7143                                              bit_pos % 8, bit_size, type);
7144     }
7145   else
7146     return value_primitive_field (arg1, offset, fieldno, arg_type);
7147 }
7148
7149 /* Find field with name NAME in object of type TYPE.  If found, 
7150    set the following for each argument that is non-null:
7151     - *FIELD_TYPE_P to the field's type; 
7152     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7153       an object of that type;
7154     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7155     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7156       0 otherwise;
7157    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7158    fields up to but not including the desired field, or by the total
7159    number of fields if not found.   A NULL value of NAME never
7160    matches; the function just counts visible fields in this case.
7161    
7162    Notice that we need to handle when a tagged record hierarchy
7163    has some components with the same name, like in this scenario:
7164
7165       type Top_T is tagged record
7166          N : Integer := 1;
7167          U : Integer := 974;
7168          A : Integer := 48;
7169       end record;
7170
7171       type Middle_T is new Top.Top_T with record
7172          N : Character := 'a';
7173          C : Integer := 3;
7174       end record;
7175
7176      type Bottom_T is new Middle.Middle_T with record
7177         N : Float := 4.0;
7178         C : Character := '5';
7179         X : Integer := 6;
7180         A : Character := 'J';
7181      end record;
7182
7183    Let's say we now have a variable declared and initialized as follow:
7184
7185      TC : Top_A := new Bottom_T;
7186
7187    And then we use this variable to call this function
7188
7189      procedure Assign (Obj: in out Top_T; TV : Integer);
7190
7191    as follow:
7192
7193       Assign (Top_T (B), 12);
7194
7195    Now, we're in the debugger, and we're inside that procedure
7196    then and we want to print the value of obj.c:
7197
7198    Usually, the tagged record or one of the parent type owns the
7199    component to print and there's no issue but in this particular
7200    case, what does it mean to ask for Obj.C? Since the actual
7201    type for object is type Bottom_T, it could mean two things: type
7202    component C from the Middle_T view, but also component C from
7203    Bottom_T.  So in that "undefined" case, when the component is
7204    not found in the non-resolved type (which includes all the
7205    components of the parent type), then resolve it and see if we
7206    get better luck once expanded.
7207
7208    In the case of homonyms in the derived tagged type, we don't
7209    guaranty anything, and pick the one that's easiest for us
7210    to program.
7211
7212    Returns 1 if found, 0 otherwise.  */
7213
7214 static int
7215 find_struct_field (const char *name, struct type *type, int offset,
7216                    struct type **field_type_p,
7217                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7218                    int *index_p)
7219 {
7220   int i;
7221   int parent_offset = -1;
7222
7223   type = ada_check_typedef (type);
7224
7225   if (field_type_p != NULL)
7226     *field_type_p = NULL;
7227   if (byte_offset_p != NULL)
7228     *byte_offset_p = 0;
7229   if (bit_offset_p != NULL)
7230     *bit_offset_p = 0;
7231   if (bit_size_p != NULL)
7232     *bit_size_p = 0;
7233
7234   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7235     {
7236       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7237       int fld_offset = offset + bit_pos / 8;
7238       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7239
7240       if (t_field_name == NULL)
7241         continue;
7242
7243       else if (ada_is_parent_field (type, i))
7244         {
7245           /* This is a field pointing us to the parent type of a tagged
7246              type.  As hinted in this function's documentation, we give
7247              preference to fields in the current record first, so what
7248              we do here is just record the index of this field before
7249              we skip it.  If it turns out we couldn't find our field
7250              in the current record, then we'll get back to it and search
7251              inside it whether the field might exist in the parent.  */
7252
7253           parent_offset = i;
7254           continue;
7255         }
7256
7257       else if (name != NULL && field_name_match (t_field_name, name))
7258         {
7259           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7260
7261           if (field_type_p != NULL)
7262             *field_type_p = TYPE_FIELD_TYPE (type, i);
7263           if (byte_offset_p != NULL)
7264             *byte_offset_p = fld_offset;
7265           if (bit_offset_p != NULL)
7266             *bit_offset_p = bit_pos % 8;
7267           if (bit_size_p != NULL)
7268             *bit_size_p = bit_size;
7269           return 1;
7270         }
7271       else if (ada_is_wrapper_field (type, i))
7272         {
7273           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7274                                  field_type_p, byte_offset_p, bit_offset_p,
7275                                  bit_size_p, index_p))
7276             return 1;
7277         }
7278       else if (ada_is_variant_part (type, i))
7279         {
7280           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7281              fixed type?? */
7282           int j;
7283           struct type *field_type
7284             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7285
7286           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7287             {
7288               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7289                                      fld_offset
7290                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7291                                      field_type_p, byte_offset_p,
7292                                      bit_offset_p, bit_size_p, index_p))
7293                 return 1;
7294             }
7295         }
7296       else if (index_p != NULL)
7297         *index_p += 1;
7298     }
7299
7300   /* Field not found so far.  If this is a tagged type which
7301      has a parent, try finding that field in the parent now.  */
7302
7303   if (parent_offset != -1)
7304     {
7305       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7306       int fld_offset = offset + bit_pos / 8;
7307
7308       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7309                              fld_offset, field_type_p, byte_offset_p,
7310                              bit_offset_p, bit_size_p, index_p))
7311         return 1;
7312     }
7313
7314   return 0;
7315 }
7316
7317 /* Number of user-visible fields in record type TYPE.  */
7318
7319 static int
7320 num_visible_fields (struct type *type)
7321 {
7322   int n;
7323
7324   n = 0;
7325   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7326   return n;
7327 }
7328
7329 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7330    and search in it assuming it has (class) type TYPE.
7331    If found, return value, else return NULL.
7332
7333    Searches recursively through wrapper fields (e.g., '_parent').
7334
7335    In the case of homonyms in the tagged types, please refer to the
7336    long explanation in find_struct_field's function documentation.  */
7337
7338 static struct value *
7339 ada_search_struct_field (const char *name, struct value *arg, int offset,
7340                          struct type *type)
7341 {
7342   int i;
7343   int parent_offset = -1;
7344
7345   type = ada_check_typedef (type);
7346   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7347     {
7348       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7349
7350       if (t_field_name == NULL)
7351         continue;
7352
7353       else if (ada_is_parent_field (type, i))
7354         {
7355           /* This is a field pointing us to the parent type of a tagged
7356              type.  As hinted in this function's documentation, we give
7357              preference to fields in the current record first, so what
7358              we do here is just record the index of this field before
7359              we skip it.  If it turns out we couldn't find our field
7360              in the current record, then we'll get back to it and search
7361              inside it whether the field might exist in the parent.  */
7362
7363           parent_offset = i;
7364           continue;
7365         }
7366
7367       else if (field_name_match (t_field_name, name))
7368         return ada_value_primitive_field (arg, offset, i, type);
7369
7370       else if (ada_is_wrapper_field (type, i))
7371         {
7372           struct value *v =     /* Do not let indent join lines here.  */
7373             ada_search_struct_field (name, arg,
7374                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7375                                      TYPE_FIELD_TYPE (type, i));
7376
7377           if (v != NULL)
7378             return v;
7379         }
7380
7381       else if (ada_is_variant_part (type, i))
7382         {
7383           /* PNH: Do we ever get here?  See find_struct_field.  */
7384           int j;
7385           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7386                                                                         i));
7387           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7388
7389           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7390             {
7391               struct value *v = ada_search_struct_field /* Force line
7392                                                            break.  */
7393                 (name, arg,
7394                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7395                  TYPE_FIELD_TYPE (field_type, j));
7396
7397               if (v != NULL)
7398                 return v;
7399             }
7400         }
7401     }
7402
7403   /* Field not found so far.  If this is a tagged type which
7404      has a parent, try finding that field in the parent now.  */
7405
7406   if (parent_offset != -1)
7407     {
7408       struct value *v = ada_search_struct_field (
7409         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7410         TYPE_FIELD_TYPE (type, parent_offset));
7411
7412       if (v != NULL)
7413         return v;
7414     }
7415
7416   return NULL;
7417 }
7418
7419 static struct value *ada_index_struct_field_1 (int *, struct value *,
7420                                                int, struct type *);
7421
7422
7423 /* Return field #INDEX in ARG, where the index is that returned by
7424  * find_struct_field through its INDEX_P argument.  Adjust the address
7425  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7426  * If found, return value, else return NULL.  */
7427
7428 static struct value *
7429 ada_index_struct_field (int index, struct value *arg, int offset,
7430                         struct type *type)
7431 {
7432   return ada_index_struct_field_1 (&index, arg, offset, type);
7433 }
7434
7435
7436 /* Auxiliary function for ada_index_struct_field.  Like
7437  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7438  * *INDEX_P.  */
7439
7440 static struct value *
7441 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7442                           struct type *type)
7443 {
7444   int i;
7445   type = ada_check_typedef (type);
7446
7447   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7448     {
7449       if (TYPE_FIELD_NAME (type, i) == NULL)
7450         continue;
7451       else if (ada_is_wrapper_field (type, i))
7452         {
7453           struct value *v =     /* Do not let indent join lines here.  */
7454             ada_index_struct_field_1 (index_p, arg,
7455                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7456                                       TYPE_FIELD_TYPE (type, i));
7457
7458           if (v != NULL)
7459             return v;
7460         }
7461
7462       else if (ada_is_variant_part (type, i))
7463         {
7464           /* PNH: Do we ever get here?  See ada_search_struct_field,
7465              find_struct_field.  */
7466           error (_("Cannot assign this kind of variant record"));
7467         }
7468       else if (*index_p == 0)
7469         return ada_value_primitive_field (arg, offset, i, type);
7470       else
7471         *index_p -= 1;
7472     }
7473   return NULL;
7474 }
7475
7476 /* Return a string representation of type TYPE.  */
7477
7478 static std::string
7479 type_as_string (struct type *type)
7480 {
7481   string_file tmp_stream;
7482
7483   type_print (type, "", &tmp_stream, -1);
7484
7485   return std::move (tmp_stream.string ());
7486 }
7487
7488 /* Given a type TYPE, look up the type of the component of type named NAME.
7489    If DISPP is non-null, add its byte displacement from the beginning of a
7490    structure (pointed to by a value) of type TYPE to *DISPP (does not
7491    work for packed fields).
7492
7493    Matches any field whose name has NAME as a prefix, possibly
7494    followed by "___".
7495
7496    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7497    be a (pointer or reference)+ to a struct or union, and the
7498    ultimate target type will be searched.
7499
7500    Looks recursively into variant clauses and parent types.
7501
7502    In the case of homonyms in the tagged types, please refer to the
7503    long explanation in find_struct_field's function documentation.
7504
7505    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7506    TYPE is not a type of the right kind.  */
7507
7508 static struct type *
7509 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7510                             int noerr)
7511 {
7512   int i;
7513   int parent_offset = -1;
7514
7515   if (name == NULL)
7516     goto BadName;
7517
7518   if (refok && type != NULL)
7519     while (1)
7520       {
7521         type = ada_check_typedef (type);
7522         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7523           break;
7524         type = TYPE_TARGET_TYPE (type);
7525       }
7526
7527   if (type == NULL
7528       || (type->code () != TYPE_CODE_STRUCT
7529           && type->code () != TYPE_CODE_UNION))
7530     {
7531       if (noerr)
7532         return NULL;
7533
7534       error (_("Type %s is not a structure or union type"),
7535              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7536     }
7537
7538   type = to_static_fixed_type (type);
7539
7540   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7541     {
7542       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7543       struct type *t;
7544
7545       if (t_field_name == NULL)
7546         continue;
7547
7548       else if (ada_is_parent_field (type, i))
7549         {
7550           /* This is a field pointing us to the parent type of a tagged
7551              type.  As hinted in this function's documentation, we give
7552              preference to fields in the current record first, so what
7553              we do here is just record the index of this field before
7554              we skip it.  If it turns out we couldn't find our field
7555              in the current record, then we'll get back to it and search
7556              inside it whether the field might exist in the parent.  */
7557
7558           parent_offset = i;
7559           continue;
7560         }
7561
7562       else if (field_name_match (t_field_name, name))
7563         return TYPE_FIELD_TYPE (type, i);
7564
7565       else if (ada_is_wrapper_field (type, i))
7566         {
7567           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7568                                           0, 1);
7569           if (t != NULL)
7570             return t;
7571         }
7572
7573       else if (ada_is_variant_part (type, i))
7574         {
7575           int j;
7576           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7577                                                                         i));
7578
7579           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7580             {
7581               /* FIXME pnh 2008/01/26: We check for a field that is
7582                  NOT wrapped in a struct, since the compiler sometimes
7583                  generates these for unchecked variant types.  Revisit
7584                  if the compiler changes this practice.  */
7585               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7586
7587               if (v_field_name != NULL 
7588                   && field_name_match (v_field_name, name))
7589                 t = TYPE_FIELD_TYPE (field_type, j);
7590               else
7591                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7592                                                                  j),
7593                                                 name, 0, 1);
7594
7595               if (t != NULL)
7596                 return t;
7597             }
7598         }
7599
7600     }
7601
7602     /* Field not found so far.  If this is a tagged type which
7603        has a parent, try finding that field in the parent now.  */
7604
7605     if (parent_offset != -1)
7606       {
7607         struct type *t;
7608
7609         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7610                                         name, 0, 1);
7611         if (t != NULL)
7612           return t;
7613       }
7614
7615 BadName:
7616   if (!noerr)
7617     {
7618       const char *name_str = name != NULL ? name : _("<null>");
7619
7620       error (_("Type %s has no component named %s"),
7621              type_as_string (type).c_str (), name_str);
7622     }
7623
7624   return NULL;
7625 }
7626
7627 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7628    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7629    represents an unchecked union (that is, the variant part of a
7630    record that is named in an Unchecked_Union pragma).  */
7631
7632 static int
7633 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7634 {
7635   const char *discrim_name = ada_variant_discrim_name (var_type);
7636
7637   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7638 }
7639
7640
7641 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7642    within OUTER, determine which variant clause (field number in VAR_TYPE,
7643    numbering from 0) is applicable.  Returns -1 if none are.  */
7644
7645 int
7646 ada_which_variant_applies (struct type *var_type, struct value *outer)
7647 {
7648   int others_clause;
7649   int i;
7650   const char *discrim_name = ada_variant_discrim_name (var_type);
7651   struct value *discrim;
7652   LONGEST discrim_val;
7653
7654   /* Using plain value_from_contents_and_address here causes problems
7655      because we will end up trying to resolve a type that is currently
7656      being constructed.  */
7657   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7658   if (discrim == NULL)
7659     return -1;
7660   discrim_val = value_as_long (discrim);
7661
7662   others_clause = -1;
7663   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7664     {
7665       if (ada_is_others_clause (var_type, i))
7666         others_clause = i;
7667       else if (ada_in_variant (discrim_val, var_type, i))
7668         return i;
7669     }
7670
7671   return others_clause;
7672 }
7673 \f
7674
7675
7676                                 /* Dynamic-Sized Records */
7677
7678 /* Strategy: The type ostensibly attached to a value with dynamic size
7679    (i.e., a size that is not statically recorded in the debugging
7680    data) does not accurately reflect the size or layout of the value.
7681    Our strategy is to convert these values to values with accurate,
7682    conventional types that are constructed on the fly.  */
7683
7684 /* There is a subtle and tricky problem here.  In general, we cannot
7685    determine the size of dynamic records without its data.  However,
7686    the 'struct value' data structure, which GDB uses to represent
7687    quantities in the inferior process (the target), requires the size
7688    of the type at the time of its allocation in order to reserve space
7689    for GDB's internal copy of the data.  That's why the
7690    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7691    rather than struct value*s.
7692
7693    However, GDB's internal history variables ($1, $2, etc.) are
7694    struct value*s containing internal copies of the data that are not, in
7695    general, the same as the data at their corresponding addresses in
7696    the target.  Fortunately, the types we give to these values are all
7697    conventional, fixed-size types (as per the strategy described
7698    above), so that we don't usually have to perform the
7699    'to_fixed_xxx_type' conversions to look at their values.
7700    Unfortunately, there is one exception: if one of the internal
7701    history variables is an array whose elements are unconstrained
7702    records, then we will need to create distinct fixed types for each
7703    element selected.  */
7704
7705 /* The upshot of all of this is that many routines take a (type, host
7706    address, target address) triple as arguments to represent a value.
7707    The host address, if non-null, is supposed to contain an internal
7708    copy of the relevant data; otherwise, the program is to consult the
7709    target at the target address.  */
7710
7711 /* Assuming that VAL0 represents a pointer value, the result of
7712    dereferencing it.  Differs from value_ind in its treatment of
7713    dynamic-sized types.  */
7714
7715 struct value *
7716 ada_value_ind (struct value *val0)
7717 {
7718   struct value *val = value_ind (val0);
7719
7720   if (ada_is_tagged_type (value_type (val), 0))
7721     val = ada_tag_value_at_base_address (val);
7722
7723   return ada_to_fixed_value (val);
7724 }
7725
7726 /* The value resulting from dereferencing any "reference to"
7727    qualifiers on VAL0.  */
7728
7729 static struct value *
7730 ada_coerce_ref (struct value *val0)
7731 {
7732   if (value_type (val0)->code () == TYPE_CODE_REF)
7733     {
7734       struct value *val = val0;
7735
7736       val = coerce_ref (val);
7737
7738       if (ada_is_tagged_type (value_type (val), 0))
7739         val = ada_tag_value_at_base_address (val);
7740
7741       return ada_to_fixed_value (val);
7742     }
7743   else
7744     return val0;
7745 }
7746
7747 /* Return the bit alignment required for field #F of template type TYPE.  */
7748
7749 static unsigned int
7750 field_alignment (struct type *type, int f)
7751 {
7752   const char *name = TYPE_FIELD_NAME (type, f);
7753   int len;
7754   int align_offset;
7755
7756   /* The field name should never be null, unless the debugging information
7757      is somehow malformed.  In this case, we assume the field does not
7758      require any alignment.  */
7759   if (name == NULL)
7760     return 1;
7761
7762   len = strlen (name);
7763
7764   if (!isdigit (name[len - 1]))
7765     return 1;
7766
7767   if (isdigit (name[len - 2]))
7768     align_offset = len - 2;
7769   else
7770     align_offset = len - 1;
7771
7772   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7773     return TARGET_CHAR_BIT;
7774
7775   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7776 }
7777
7778 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7779
7780 static struct symbol *
7781 ada_find_any_type_symbol (const char *name)
7782 {
7783   struct symbol *sym;
7784
7785   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7786   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7787     return sym;
7788
7789   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7790   return sym;
7791 }
7792
7793 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7794    solely for types defined by debug info, it will not search the GDB
7795    primitive types.  */
7796
7797 static struct type *
7798 ada_find_any_type (const char *name)
7799 {
7800   struct symbol *sym = ada_find_any_type_symbol (name);
7801
7802   if (sym != NULL)
7803     return SYMBOL_TYPE (sym);
7804
7805   return NULL;
7806 }
7807
7808 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7809    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7810    symbol, in which case it is returned.  Otherwise, this looks for
7811    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7812    Return symbol if found, and NULL otherwise.  */
7813
7814 static bool
7815 ada_is_renaming_symbol (struct symbol *name_sym)
7816 {
7817   const char *name = name_sym->linkage_name ();
7818   return strstr (name, "___XR") != NULL;
7819 }
7820
7821 /* Because of GNAT encoding conventions, several GDB symbols may match a
7822    given type name.  If the type denoted by TYPE0 is to be preferred to
7823    that of TYPE1 for purposes of type printing, return non-zero;
7824    otherwise return 0.  */
7825
7826 int
7827 ada_prefer_type (struct type *type0, struct type *type1)
7828 {
7829   if (type1 == NULL)
7830     return 1;
7831   else if (type0 == NULL)
7832     return 0;
7833   else if (type1->code () == TYPE_CODE_VOID)
7834     return 1;
7835   else if (type0->code () == TYPE_CODE_VOID)
7836     return 0;
7837   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7838     return 1;
7839   else if (ada_is_constrained_packed_array_type (type0))
7840     return 1;
7841   else if (ada_is_array_descriptor_type (type0)
7842            && !ada_is_array_descriptor_type (type1))
7843     return 1;
7844   else
7845     {
7846       const char *type0_name = TYPE_NAME (type0);
7847       const char *type1_name = TYPE_NAME (type1);
7848
7849       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7850           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7851         return 1;
7852     }
7853   return 0;
7854 }
7855
7856 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7857    null.  */
7858
7859 const char *
7860 ada_type_name (struct type *type)
7861 {
7862   if (type == NULL)
7863     return NULL;
7864   return TYPE_NAME (type);
7865 }
7866
7867 /* Search the list of "descriptive" types associated to TYPE for a type
7868    whose name is NAME.  */
7869
7870 static struct type *
7871 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7872 {
7873   struct type *result, *tmp;
7874
7875   if (ada_ignore_descriptive_types_p)
7876     return NULL;
7877
7878   /* If there no descriptive-type info, then there is no parallel type
7879      to be found.  */
7880   if (!HAVE_GNAT_AUX_INFO (type))
7881     return NULL;
7882
7883   result = TYPE_DESCRIPTIVE_TYPE (type);
7884   while (result != NULL)
7885     {
7886       const char *result_name = ada_type_name (result);
7887
7888       if (result_name == NULL)
7889         {
7890           warning (_("unexpected null name on descriptive type"));
7891           return NULL;
7892         }
7893
7894       /* If the names match, stop.  */
7895       if (strcmp (result_name, name) == 0)
7896         break;
7897
7898       /* Otherwise, look at the next item on the list, if any.  */
7899       if (HAVE_GNAT_AUX_INFO (result))
7900         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7901       else
7902         tmp = NULL;
7903
7904       /* If not found either, try after having resolved the typedef.  */
7905       if (tmp != NULL)
7906         result = tmp;
7907       else
7908         {
7909           result = check_typedef (result);
7910           if (HAVE_GNAT_AUX_INFO (result))
7911             result = TYPE_DESCRIPTIVE_TYPE (result);
7912           else
7913             result = NULL;
7914         }
7915     }
7916
7917   /* If we didn't find a match, see whether this is a packed array.  With
7918      older compilers, the descriptive type information is either absent or
7919      irrelevant when it comes to packed arrays so the above lookup fails.
7920      Fall back to using a parallel lookup by name in this case.  */
7921   if (result == NULL && ada_is_constrained_packed_array_type (type))
7922     return ada_find_any_type (name);
7923
7924   return result;
7925 }
7926
7927 /* Find a parallel type to TYPE with the specified NAME, using the
7928    descriptive type taken from the debugging information, if available,
7929    and otherwise using the (slower) name-based method.  */
7930
7931 static struct type *
7932 ada_find_parallel_type_with_name (struct type *type, const char *name)
7933 {
7934   struct type *result = NULL;
7935
7936   if (HAVE_GNAT_AUX_INFO (type))
7937     result = find_parallel_type_by_descriptive_type (type, name);
7938   else
7939     result = ada_find_any_type (name);
7940
7941   return result;
7942 }
7943
7944 /* Same as above, but specify the name of the parallel type by appending
7945    SUFFIX to the name of TYPE.  */
7946
7947 struct type *
7948 ada_find_parallel_type (struct type *type, const char *suffix)
7949 {
7950   char *name;
7951   const char *type_name = ada_type_name (type);
7952   int len;
7953
7954   if (type_name == NULL)
7955     return NULL;
7956
7957   len = strlen (type_name);
7958
7959   name = (char *) alloca (len + strlen (suffix) + 1);
7960
7961   strcpy (name, type_name);
7962   strcpy (name + len, suffix);
7963
7964   return ada_find_parallel_type_with_name (type, name);
7965 }
7966
7967 /* If TYPE is a variable-size record type, return the corresponding template
7968    type describing its fields.  Otherwise, return NULL.  */
7969
7970 static struct type *
7971 dynamic_template_type (struct type *type)
7972 {
7973   type = ada_check_typedef (type);
7974
7975   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7976       || ada_type_name (type) == NULL)
7977     return NULL;
7978   else
7979     {
7980       int len = strlen (ada_type_name (type));
7981
7982       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7983         return type;
7984       else
7985         return ada_find_parallel_type (type, "___XVE");
7986     }
7987 }
7988
7989 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7990    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7991
7992 static int
7993 is_dynamic_field (struct type *templ_type, int field_num)
7994 {
7995   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7996
7997   return name != NULL
7998     && TYPE_FIELD_TYPE (templ_type, field_num)->code () == TYPE_CODE_PTR
7999     && strstr (name, "___XVL") != NULL;
8000 }
8001
8002 /* The index of the variant field of TYPE, or -1 if TYPE does not
8003    represent a variant record type.  */
8004
8005 static int
8006 variant_field_index (struct type *type)
8007 {
8008   int f;
8009
8010   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
8011     return -1;
8012
8013   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8014     {
8015       if (ada_is_variant_part (type, f))
8016         return f;
8017     }
8018   return -1;
8019 }
8020
8021 /* A record type with no fields.  */
8022
8023 static struct type *
8024 empty_record (struct type *templ)
8025 {
8026   struct type *type = alloc_type_copy (templ);
8027
8028   type->set_code (TYPE_CODE_STRUCT);
8029   TYPE_NFIELDS (type) = 0;
8030   TYPE_FIELDS (type) = NULL;
8031   INIT_NONE_SPECIFIC (type);
8032   type->set_name ("<empty>");
8033   TYPE_LENGTH (type) = 0;
8034   return type;
8035 }
8036
8037 /* An ordinary record type (with fixed-length fields) that describes
8038    the value of type TYPE at VALADDR or ADDRESS (see comments at
8039    the beginning of this section) VAL according to GNAT conventions.
8040    DVAL0 should describe the (portion of a) record that contains any
8041    necessary discriminants.  It should be NULL if value_type (VAL) is
8042    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8043    variant field (unless unchecked) is replaced by a particular branch
8044    of the variant.
8045
8046    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8047    length are not statically known are discarded.  As a consequence,
8048    VALADDR, ADDRESS and DVAL0 are ignored.
8049
8050    NOTE: Limitations: For now, we assume that dynamic fields and
8051    variants occupy whole numbers of bytes.  However, they need not be
8052    byte-aligned.  */
8053
8054 struct type *
8055 ada_template_to_fixed_record_type_1 (struct type *type,
8056                                      const gdb_byte *valaddr,
8057                                      CORE_ADDR address, struct value *dval0,
8058                                      int keep_dynamic_fields)
8059 {
8060   struct value *mark = value_mark ();
8061   struct value *dval;
8062   struct type *rtype;
8063   int nfields, bit_len;
8064   int variant_field;
8065   long off;
8066   int fld_bit_len;
8067   int f;
8068
8069   /* Compute the number of fields in this record type that are going
8070      to be processed: unless keep_dynamic_fields, this includes only
8071      fields whose position and length are static will be processed.  */
8072   if (keep_dynamic_fields)
8073     nfields = TYPE_NFIELDS (type);
8074   else
8075     {
8076       nfields = 0;
8077       while (nfields < TYPE_NFIELDS (type)
8078              && !ada_is_variant_part (type, nfields)
8079              && !is_dynamic_field (type, nfields))
8080         nfields++;
8081     }
8082
8083   rtype = alloc_type_copy (type);
8084   rtype->set_code (TYPE_CODE_STRUCT);
8085   INIT_NONE_SPECIFIC (rtype);
8086   TYPE_NFIELDS (rtype) = nfields;
8087   TYPE_FIELDS (rtype) = (struct field *)
8088     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8089   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8090   rtype->set_name (ada_type_name (type));
8091   TYPE_FIXED_INSTANCE (rtype) = 1;
8092
8093   off = 0;
8094   bit_len = 0;
8095   variant_field = -1;
8096
8097   for (f = 0; f < nfields; f += 1)
8098     {
8099       off = align_up (off, field_alignment (type, f))
8100         + TYPE_FIELD_BITPOS (type, f);
8101       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8102       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8103
8104       if (ada_is_variant_part (type, f))
8105         {
8106           variant_field = f;
8107           fld_bit_len = 0;
8108         }
8109       else if (is_dynamic_field (type, f))
8110         {
8111           const gdb_byte *field_valaddr = valaddr;
8112           CORE_ADDR field_address = address;
8113           struct type *field_type =
8114             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8115
8116           if (dval0 == NULL)
8117             {
8118               /* rtype's length is computed based on the run-time
8119                  value of discriminants.  If the discriminants are not
8120                  initialized, the type size may be completely bogus and
8121                  GDB may fail to allocate a value for it.  So check the
8122                  size first before creating the value.  */
8123               ada_ensure_varsize_limit (rtype);
8124               /* Using plain value_from_contents_and_address here
8125                  causes problems because we will end up trying to
8126                  resolve a type that is currently being
8127                  constructed.  */
8128               dval = value_from_contents_and_address_unresolved (rtype,
8129                                                                  valaddr,
8130                                                                  address);
8131               rtype = value_type (dval);
8132             }
8133           else
8134             dval = dval0;
8135
8136           /* If the type referenced by this field is an aligner type, we need
8137              to unwrap that aligner type, because its size might not be set.
8138              Keeping the aligner type would cause us to compute the wrong
8139              size for this field, impacting the offset of the all the fields
8140              that follow this one.  */
8141           if (ada_is_aligner_type (field_type))
8142             {
8143               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8144
8145               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8146               field_address = cond_offset_target (field_address, field_offset);
8147               field_type = ada_aligned_type (field_type);
8148             }
8149
8150           field_valaddr = cond_offset_host (field_valaddr,
8151                                             off / TARGET_CHAR_BIT);
8152           field_address = cond_offset_target (field_address,
8153                                               off / TARGET_CHAR_BIT);
8154
8155           /* Get the fixed type of the field.  Note that, in this case,
8156              we do not want to get the real type out of the tag: if
8157              the current field is the parent part of a tagged record,
8158              we will get the tag of the object.  Clearly wrong: the real
8159              type of the parent is not the real type of the child.  We
8160              would end up in an infinite loop.  */
8161           field_type = ada_get_base_type (field_type);
8162           field_type = ada_to_fixed_type (field_type, field_valaddr,
8163                                           field_address, dval, 0);
8164           /* If the field size is already larger than the maximum
8165              object size, then the record itself will necessarily
8166              be larger than the maximum object size.  We need to make
8167              this check now, because the size might be so ridiculously
8168              large (due to an uninitialized variable in the inferior)
8169              that it would cause an overflow when adding it to the
8170              record size.  */
8171           ada_ensure_varsize_limit (field_type);
8172
8173           TYPE_FIELD_TYPE (rtype, f) = field_type;
8174           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8175           /* The multiplication can potentially overflow.  But because
8176              the field length has been size-checked just above, and
8177              assuming that the maximum size is a reasonable value,
8178              an overflow should not happen in practice.  So rather than
8179              adding overflow recovery code to this already complex code,
8180              we just assume that it's not going to happen.  */
8181           fld_bit_len =
8182             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8183         }
8184       else
8185         {
8186           /* Note: If this field's type is a typedef, it is important
8187              to preserve the typedef layer.
8188
8189              Otherwise, we might be transforming a typedef to a fat
8190              pointer (encoding a pointer to an unconstrained array),
8191              into a basic fat pointer (encoding an unconstrained
8192              array).  As both types are implemented using the same
8193              structure, the typedef is the only clue which allows us
8194              to distinguish between the two options.  Stripping it
8195              would prevent us from printing this field appropriately.  */
8196           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8197           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8198           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8199             fld_bit_len =
8200               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8201           else
8202             {
8203               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8204
8205               /* We need to be careful of typedefs when computing
8206                  the length of our field.  If this is a typedef,
8207                  get the length of the target type, not the length
8208                  of the typedef.  */
8209               if (field_type->code () == TYPE_CODE_TYPEDEF)
8210                 field_type = ada_typedef_target_type (field_type);
8211
8212               fld_bit_len =
8213                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8214             }
8215         }
8216       if (off + fld_bit_len > bit_len)
8217         bit_len = off + fld_bit_len;
8218       off += fld_bit_len;
8219       TYPE_LENGTH (rtype) =
8220         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8221     }
8222
8223   /* We handle the variant part, if any, at the end because of certain
8224      odd cases in which it is re-ordered so as NOT to be the last field of
8225      the record.  This can happen in the presence of representation
8226      clauses.  */
8227   if (variant_field >= 0)
8228     {
8229       struct type *branch_type;
8230
8231       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8232
8233       if (dval0 == NULL)
8234         {
8235           /* Using plain value_from_contents_and_address here causes
8236              problems because we will end up trying to resolve a type
8237              that is currently being constructed.  */
8238           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8239                                                              address);
8240           rtype = value_type (dval);
8241         }
8242       else
8243         dval = dval0;
8244
8245       branch_type =
8246         to_fixed_variant_branch_type
8247         (TYPE_FIELD_TYPE (type, variant_field),
8248          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8249          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8250       if (branch_type == NULL)
8251         {
8252           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8253             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8254           TYPE_NFIELDS (rtype) -= 1;
8255         }
8256       else
8257         {
8258           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8259           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8260           fld_bit_len =
8261             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8262             TARGET_CHAR_BIT;
8263           if (off + fld_bit_len > bit_len)
8264             bit_len = off + fld_bit_len;
8265           TYPE_LENGTH (rtype) =
8266             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8267         }
8268     }
8269
8270   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8271      should contain the alignment of that record, which should be a strictly
8272      positive value.  If null or negative, then something is wrong, most
8273      probably in the debug info.  In that case, we don't round up the size
8274      of the resulting type.  If this record is not part of another structure,
8275      the current RTYPE length might be good enough for our purposes.  */
8276   if (TYPE_LENGTH (type) <= 0)
8277     {
8278       if (TYPE_NAME (rtype))
8279         warning (_("Invalid type size for `%s' detected: %s."),
8280                  TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
8281       else
8282         warning (_("Invalid type size for <unnamed> detected: %s."),
8283                  pulongest (TYPE_LENGTH (type)));
8284     }
8285   else
8286     {
8287       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8288                                       TYPE_LENGTH (type));
8289     }
8290
8291   value_free_to_mark (mark);
8292   if (TYPE_LENGTH (rtype) > varsize_limit)
8293     error (_("record type with dynamic size is larger than varsize-limit"));
8294   return rtype;
8295 }
8296
8297 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8298    of 1.  */
8299
8300 static struct type *
8301 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8302                                CORE_ADDR address, struct value *dval0)
8303 {
8304   return ada_template_to_fixed_record_type_1 (type, valaddr,
8305                                               address, dval0, 1);
8306 }
8307
8308 /* An ordinary record type in which ___XVL-convention fields and
8309    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8310    static approximations, containing all possible fields.  Uses
8311    no runtime values.  Useless for use in values, but that's OK,
8312    since the results are used only for type determinations.   Works on both
8313    structs and unions.  Representation note: to save space, we memorize
8314    the result of this function in the TYPE_TARGET_TYPE of the
8315    template type.  */
8316
8317 static struct type *
8318 template_to_static_fixed_type (struct type *type0)
8319 {
8320   struct type *type;
8321   int nfields;
8322   int f;
8323
8324   /* No need no do anything if the input type is already fixed.  */
8325   if (TYPE_FIXED_INSTANCE (type0))
8326     return type0;
8327
8328   /* Likewise if we already have computed the static approximation.  */
8329   if (TYPE_TARGET_TYPE (type0) != NULL)
8330     return TYPE_TARGET_TYPE (type0);
8331
8332   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8333   type = type0;
8334   nfields = TYPE_NFIELDS (type0);
8335
8336   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8337      recompute all over next time.  */
8338   TYPE_TARGET_TYPE (type0) = type;
8339
8340   for (f = 0; f < nfields; f += 1)
8341     {
8342       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8343       struct type *new_type;
8344
8345       if (is_dynamic_field (type0, f))
8346         {
8347           field_type = ada_check_typedef (field_type);
8348           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8349         }
8350       else
8351         new_type = static_unwrap_type (field_type);
8352
8353       if (new_type != field_type)
8354         {
8355           /* Clone TYPE0 only the first time we get a new field type.  */
8356           if (type == type0)
8357             {
8358               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8359               type->set_code (type0->code ());
8360               INIT_NONE_SPECIFIC (type);
8361               TYPE_NFIELDS (type) = nfields;
8362               TYPE_FIELDS (type) = (struct field *)
8363                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8364               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8365                       sizeof (struct field) * nfields);
8366               type->set_name (ada_type_name (type0));
8367               TYPE_FIXED_INSTANCE (type) = 1;
8368               TYPE_LENGTH (type) = 0;
8369             }
8370           TYPE_FIELD_TYPE (type, f) = new_type;
8371           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8372         }
8373     }
8374
8375   return type;
8376 }
8377
8378 /* Given an object of type TYPE whose contents are at VALADDR and
8379    whose address in memory is ADDRESS, returns a revision of TYPE,
8380    which should be a non-dynamic-sized record, in which the variant
8381    part, if any, is replaced with the appropriate branch.  Looks
8382    for discriminant values in DVAL0, which can be NULL if the record
8383    contains the necessary discriminant values.  */
8384
8385 static struct type *
8386 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8387                                    CORE_ADDR address, struct value *dval0)
8388 {
8389   struct value *mark = value_mark ();
8390   struct value *dval;
8391   struct type *rtype;
8392   struct type *branch_type;
8393   int nfields = TYPE_NFIELDS (type);
8394   int variant_field = variant_field_index (type);
8395
8396   if (variant_field == -1)
8397     return type;
8398
8399   if (dval0 == NULL)
8400     {
8401       dval = value_from_contents_and_address (type, valaddr, address);
8402       type = value_type (dval);
8403     }
8404   else
8405     dval = dval0;
8406
8407   rtype = alloc_type_copy (type);
8408   rtype->set_code (TYPE_CODE_STRUCT);
8409   INIT_NONE_SPECIFIC (rtype);
8410   TYPE_NFIELDS (rtype) = nfields;
8411   TYPE_FIELDS (rtype) =
8412     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8413   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8414           sizeof (struct field) * nfields);
8415   rtype->set_name (ada_type_name (type));
8416   TYPE_FIXED_INSTANCE (rtype) = 1;
8417   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8418
8419   branch_type = to_fixed_variant_branch_type
8420     (TYPE_FIELD_TYPE (type, variant_field),
8421      cond_offset_host (valaddr,
8422                        TYPE_FIELD_BITPOS (type, variant_field)
8423                        / TARGET_CHAR_BIT),
8424      cond_offset_target (address,
8425                          TYPE_FIELD_BITPOS (type, variant_field)
8426                          / TARGET_CHAR_BIT), dval);
8427   if (branch_type == NULL)
8428     {
8429       int f;
8430
8431       for (f = variant_field + 1; f < nfields; f += 1)
8432         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8433       TYPE_NFIELDS (rtype) -= 1;
8434     }
8435   else
8436     {
8437       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8438       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8439       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8440       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8441     }
8442   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8443
8444   value_free_to_mark (mark);
8445   return rtype;
8446 }
8447
8448 /* An ordinary record type (with fixed-length fields) that describes
8449    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8450    beginning of this section].   Any necessary discriminants' values
8451    should be in DVAL, a record value; it may be NULL if the object
8452    at ADDR itself contains any necessary discriminant values.
8453    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8454    values from the record are needed.  Except in the case that DVAL,
8455    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8456    unchecked) is replaced by a particular branch of the variant.
8457
8458    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8459    is questionable and may be removed.  It can arise during the
8460    processing of an unconstrained-array-of-record type where all the
8461    variant branches have exactly the same size.  This is because in
8462    such cases, the compiler does not bother to use the XVS convention
8463    when encoding the record.  I am currently dubious of this
8464    shortcut and suspect the compiler should be altered.  FIXME.  */
8465
8466 static struct type *
8467 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8468                       CORE_ADDR address, struct value *dval)
8469 {
8470   struct type *templ_type;
8471
8472   if (TYPE_FIXED_INSTANCE (type0))
8473     return type0;
8474
8475   templ_type = dynamic_template_type (type0);
8476
8477   if (templ_type != NULL)
8478     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8479   else if (variant_field_index (type0) >= 0)
8480     {
8481       if (dval == NULL && valaddr == NULL && address == 0)
8482         return type0;
8483       return to_record_with_fixed_variant_part (type0, valaddr, address,
8484                                                 dval);
8485     }
8486   else
8487     {
8488       TYPE_FIXED_INSTANCE (type0) = 1;
8489       return type0;
8490     }
8491
8492 }
8493
8494 /* An ordinary record type (with fixed-length fields) that describes
8495    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8496    union type.  Any necessary discriminants' values should be in DVAL,
8497    a record value.  That is, this routine selects the appropriate
8498    branch of the union at ADDR according to the discriminant value
8499    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8500    it represents a variant subject to a pragma Unchecked_Union.  */
8501
8502 static struct type *
8503 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8504                               CORE_ADDR address, struct value *dval)
8505 {
8506   int which;
8507   struct type *templ_type;
8508   struct type *var_type;
8509
8510   if (var_type0->code () == TYPE_CODE_PTR)
8511     var_type = TYPE_TARGET_TYPE (var_type0);
8512   else
8513     var_type = var_type0;
8514
8515   templ_type = ada_find_parallel_type (var_type, "___XVU");
8516
8517   if (templ_type != NULL)
8518     var_type = templ_type;
8519
8520   if (is_unchecked_variant (var_type, value_type (dval)))
8521       return var_type0;
8522   which = ada_which_variant_applies (var_type, dval);
8523
8524   if (which < 0)
8525     return empty_record (var_type);
8526   else if (is_dynamic_field (var_type, which))
8527     return to_fixed_record_type
8528       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8529        valaddr, address, dval);
8530   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8531     return
8532       to_fixed_record_type
8533       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8534   else
8535     return TYPE_FIELD_TYPE (var_type, which);
8536 }
8537
8538 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8539    ENCODING_TYPE, a type following the GNAT conventions for discrete
8540    type encodings, only carries redundant information.  */
8541
8542 static int
8543 ada_is_redundant_range_encoding (struct type *range_type,
8544                                  struct type *encoding_type)
8545 {
8546   const char *bounds_str;
8547   int n;
8548   LONGEST lo, hi;
8549
8550   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8551
8552   if (get_base_type (range_type)->code ()
8553       != get_base_type (encoding_type)->code ())
8554     {
8555       /* The compiler probably used a simple base type to describe
8556          the range type instead of the range's actual base type,
8557          expecting us to get the real base type from the encoding
8558          anyway.  In this situation, the encoding cannot be ignored
8559          as redundant.  */
8560       return 0;
8561     }
8562
8563   if (is_dynamic_type (range_type))
8564     return 0;
8565
8566   if (TYPE_NAME (encoding_type) == NULL)
8567     return 0;
8568
8569   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8570   if (bounds_str == NULL)
8571     return 0;
8572
8573   n = 8; /* Skip "___XDLU_".  */
8574   if (!ada_scan_number (bounds_str, n, &lo, &n))
8575     return 0;
8576   if (TYPE_LOW_BOUND (range_type) != lo)
8577     return 0;
8578
8579   n += 2; /* Skip the "__" separator between the two bounds.  */
8580   if (!ada_scan_number (bounds_str, n, &hi, &n))
8581     return 0;
8582   if (TYPE_HIGH_BOUND (range_type) != hi)
8583     return 0;
8584
8585   return 1;
8586 }
8587
8588 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8589    a type following the GNAT encoding for describing array type
8590    indices, only carries redundant information.  */
8591
8592 static int
8593 ada_is_redundant_index_type_desc (struct type *array_type,
8594                                   struct type *desc_type)
8595 {
8596   struct type *this_layer = check_typedef (array_type);
8597   int i;
8598
8599   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8600     {
8601       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8602                                             TYPE_FIELD_TYPE (desc_type, i)))
8603         return 0;
8604       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8605     }
8606
8607   return 1;
8608 }
8609
8610 /* Assuming that TYPE0 is an array type describing the type of a value
8611    at ADDR, and that DVAL describes a record containing any
8612    discriminants used in TYPE0, returns a type for the value that
8613    contains no dynamic components (that is, no components whose sizes
8614    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8615    true, gives an error message if the resulting type's size is over
8616    varsize_limit.  */
8617
8618 static struct type *
8619 to_fixed_array_type (struct type *type0, struct value *dval,
8620                      int ignore_too_big)
8621 {
8622   struct type *index_type_desc;
8623   struct type *result;
8624   int constrained_packed_array_p;
8625   static const char *xa_suffix = "___XA";
8626
8627   type0 = ada_check_typedef (type0);
8628   if (TYPE_FIXED_INSTANCE (type0))
8629     return type0;
8630
8631   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8632   if (constrained_packed_array_p)
8633     type0 = decode_constrained_packed_array_type (type0);
8634
8635   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8636
8637   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8638      encoding suffixed with 'P' may still be generated.  If so,
8639      it should be used to find the XA type.  */
8640
8641   if (index_type_desc == NULL)
8642     {
8643       const char *type_name = ada_type_name (type0);
8644
8645       if (type_name != NULL)
8646         {
8647           const int len = strlen (type_name);
8648           char *name = (char *) alloca (len + strlen (xa_suffix));
8649
8650           if (type_name[len - 1] == 'P')
8651             {
8652               strcpy (name, type_name);
8653               strcpy (name + len - 1, xa_suffix);
8654               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8655             }
8656         }
8657     }
8658
8659   ada_fixup_array_indexes_type (index_type_desc);
8660   if (index_type_desc != NULL
8661       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8662     {
8663       /* Ignore this ___XA parallel type, as it does not bring any
8664          useful information.  This allows us to avoid creating fixed
8665          versions of the array's index types, which would be identical
8666          to the original ones.  This, in turn, can also help avoid
8667          the creation of fixed versions of the array itself.  */
8668       index_type_desc = NULL;
8669     }
8670
8671   if (index_type_desc == NULL)
8672     {
8673       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8674
8675       /* NOTE: elt_type---the fixed version of elt_type0---should never
8676          depend on the contents of the array in properly constructed
8677          debugging data.  */
8678       /* Create a fixed version of the array element type.
8679          We're not providing the address of an element here,
8680          and thus the actual object value cannot be inspected to do
8681          the conversion.  This should not be a problem, since arrays of
8682          unconstrained objects are not allowed.  In particular, all
8683          the elements of an array of a tagged type should all be of
8684          the same type specified in the debugging info.  No need to
8685          consult the object tag.  */
8686       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8687
8688       /* Make sure we always create a new array type when dealing with
8689          packed array types, since we're going to fix-up the array
8690          type length and element bitsize a little further down.  */
8691       if (elt_type0 == elt_type && !constrained_packed_array_p)
8692         result = type0;
8693       else
8694         result = create_array_type (alloc_type_copy (type0),
8695                                     elt_type, TYPE_INDEX_TYPE (type0));
8696     }
8697   else
8698     {
8699       int i;
8700       struct type *elt_type0;
8701
8702       elt_type0 = type0;
8703       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8704         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8705
8706       /* NOTE: result---the fixed version of elt_type0---should never
8707          depend on the contents of the array in properly constructed
8708          debugging data.  */
8709       /* Create a fixed version of the array element type.
8710          We're not providing the address of an element here,
8711          and thus the actual object value cannot be inspected to do
8712          the conversion.  This should not be a problem, since arrays of
8713          unconstrained objects are not allowed.  In particular, all
8714          the elements of an array of a tagged type should all be of
8715          the same type specified in the debugging info.  No need to
8716          consult the object tag.  */
8717       result =
8718         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8719
8720       elt_type0 = type0;
8721       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8722         {
8723           struct type *range_type =
8724             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8725
8726           result = create_array_type (alloc_type_copy (elt_type0),
8727                                       result, range_type);
8728           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8729         }
8730       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8731         error (_("array type with dynamic size is larger than varsize-limit"));
8732     }
8733
8734   /* We want to preserve the type name.  This can be useful when
8735      trying to get the type name of a value that has already been
8736      printed (for instance, if the user did "print VAR; whatis $".  */
8737   result->set_name (TYPE_NAME (type0));
8738
8739   if (constrained_packed_array_p)
8740     {
8741       /* So far, the resulting type has been created as if the original
8742          type was a regular (non-packed) array type.  As a result, the
8743          bitsize of the array elements needs to be set again, and the array
8744          length needs to be recomputed based on that bitsize.  */
8745       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8746       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8747
8748       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8749       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8750       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8751         TYPE_LENGTH (result)++;
8752     }
8753
8754   TYPE_FIXED_INSTANCE (result) = 1;
8755   return result;
8756 }
8757
8758
8759 /* A standard type (containing no dynamically sized components)
8760    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8761    DVAL describes a record containing any discriminants used in TYPE0,
8762    and may be NULL if there are none, or if the object of type TYPE at
8763    ADDRESS or in VALADDR contains these discriminants.
8764    
8765    If CHECK_TAG is not null, in the case of tagged types, this function
8766    attempts to locate the object's tag and use it to compute the actual
8767    type.  However, when ADDRESS is null, we cannot use it to determine the
8768    location of the tag, and therefore compute the tagged type's actual type.
8769    So we return the tagged type without consulting the tag.  */
8770    
8771 static struct type *
8772 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8773                    CORE_ADDR address, struct value *dval, int check_tag)
8774 {
8775   type = ada_check_typedef (type);
8776
8777   /* Only un-fixed types need to be handled here.  */
8778   if (!HAVE_GNAT_AUX_INFO (type))
8779     return type;
8780
8781   switch (type->code ())
8782     {
8783     default:
8784       return type;
8785     case TYPE_CODE_STRUCT:
8786       {
8787         struct type *static_type = to_static_fixed_type (type);
8788         struct type *fixed_record_type =
8789           to_fixed_record_type (type, valaddr, address, NULL);
8790
8791         /* If STATIC_TYPE is a tagged type and we know the object's address,
8792            then we can determine its tag, and compute the object's actual
8793            type from there.  Note that we have to use the fixed record
8794            type (the parent part of the record may have dynamic fields
8795            and the way the location of _tag is expressed may depend on
8796            them).  */
8797
8798         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8799           {
8800             struct value *tag =
8801               value_tag_from_contents_and_address
8802               (fixed_record_type,
8803                valaddr,
8804                address);
8805             struct type *real_type = type_from_tag (tag);
8806             struct value *obj =
8807               value_from_contents_and_address (fixed_record_type,
8808                                                valaddr,
8809                                                address);
8810             fixed_record_type = value_type (obj);
8811             if (real_type != NULL)
8812               return to_fixed_record_type
8813                 (real_type, NULL,
8814                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8815           }
8816
8817         /* Check to see if there is a parallel ___XVZ variable.
8818            If there is, then it provides the actual size of our type.  */
8819         else if (ada_type_name (fixed_record_type) != NULL)
8820           {
8821             const char *name = ada_type_name (fixed_record_type);
8822             char *xvz_name
8823               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8824             bool xvz_found = false;
8825             LONGEST size;
8826
8827             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8828             try
8829               {
8830                 xvz_found = get_int_var_value (xvz_name, size);
8831               }
8832             catch (const gdb_exception_error &except)
8833               {
8834                 /* We found the variable, but somehow failed to read
8835                    its value.  Rethrow the same error, but with a little
8836                    bit more information, to help the user understand
8837                    what went wrong (Eg: the variable might have been
8838                    optimized out).  */
8839                 throw_error (except.error,
8840                              _("unable to read value of %s (%s)"),
8841                              xvz_name, except.what ());
8842               }
8843
8844             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8845               {
8846                 fixed_record_type = copy_type (fixed_record_type);
8847                 TYPE_LENGTH (fixed_record_type) = size;
8848
8849                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8850                    observed this when the debugging info is STABS, and
8851                    apparently it is something that is hard to fix.
8852
8853                    In practice, we don't need the actual type definition
8854                    at all, because the presence of the XVZ variable allows us
8855                    to assume that there must be a XVS type as well, which we
8856                    should be able to use later, when we need the actual type
8857                    definition.
8858
8859                    In the meantime, pretend that the "fixed" type we are
8860                    returning is NOT a stub, because this can cause trouble
8861                    when using this type to create new types targeting it.
8862                    Indeed, the associated creation routines often check
8863                    whether the target type is a stub and will try to replace
8864                    it, thus using a type with the wrong size.  This, in turn,
8865                    might cause the new type to have the wrong size too.
8866                    Consider the case of an array, for instance, where the size
8867                    of the array is computed from the number of elements in
8868                    our array multiplied by the size of its element.  */
8869                 TYPE_STUB (fixed_record_type) = 0;
8870               }
8871           }
8872         return fixed_record_type;
8873       }
8874     case TYPE_CODE_ARRAY:
8875       return to_fixed_array_type (type, dval, 1);
8876     case TYPE_CODE_UNION:
8877       if (dval == NULL)
8878         return type;
8879       else
8880         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8881     }
8882 }
8883
8884 /* The same as ada_to_fixed_type_1, except that it preserves the type
8885    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8886
8887    The typedef layer needs be preserved in order to differentiate between
8888    arrays and array pointers when both types are implemented using the same
8889    fat pointer.  In the array pointer case, the pointer is encoded as
8890    a typedef of the pointer type.  For instance, considering:
8891
8892           type String_Access is access String;
8893           S1 : String_Access := null;
8894
8895    To the debugger, S1 is defined as a typedef of type String.  But
8896    to the user, it is a pointer.  So if the user tries to print S1,
8897    we should not dereference the array, but print the array address
8898    instead.
8899
8900    If we didn't preserve the typedef layer, we would lose the fact that
8901    the type is to be presented as a pointer (needs de-reference before
8902    being printed).  And we would also use the source-level type name.  */
8903
8904 struct type *
8905 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8906                    CORE_ADDR address, struct value *dval, int check_tag)
8907
8908 {
8909   struct type *fixed_type =
8910     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8911
8912   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8913       then preserve the typedef layer.
8914
8915       Implementation note: We can only check the main-type portion of
8916       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8917       from TYPE now returns a type that has the same instance flags
8918       as TYPE.  For instance, if TYPE is a "typedef const", and its
8919       target type is a "struct", then the typedef elimination will return
8920       a "const" version of the target type.  See check_typedef for more
8921       details about how the typedef layer elimination is done.
8922
8923       brobecker/2010-11-19: It seems to me that the only case where it is
8924       useful to preserve the typedef layer is when dealing with fat pointers.
8925       Perhaps, we could add a check for that and preserve the typedef layer
8926       only in that situation.  But this seems unnecessary so far, probably
8927       because we call check_typedef/ada_check_typedef pretty much everywhere.
8928       */
8929   if (type->code () == TYPE_CODE_TYPEDEF
8930       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8931           == TYPE_MAIN_TYPE (fixed_type)))
8932     return type;
8933
8934   return fixed_type;
8935 }
8936
8937 /* A standard (static-sized) type corresponding as well as possible to
8938    TYPE0, but based on no runtime data.  */
8939
8940 static struct type *
8941 to_static_fixed_type (struct type *type0)
8942 {
8943   struct type *type;
8944
8945   if (type0 == NULL)
8946     return NULL;
8947
8948   if (TYPE_FIXED_INSTANCE (type0))
8949     return type0;
8950
8951   type0 = ada_check_typedef (type0);
8952
8953   switch (type0->code ())
8954     {
8955     default:
8956       return type0;
8957     case TYPE_CODE_STRUCT:
8958       type = dynamic_template_type (type0);
8959       if (type != NULL)
8960         return template_to_static_fixed_type (type);
8961       else
8962         return template_to_static_fixed_type (type0);
8963     case TYPE_CODE_UNION:
8964       type = ada_find_parallel_type (type0, "___XVU");
8965       if (type != NULL)
8966         return template_to_static_fixed_type (type);
8967       else
8968         return template_to_static_fixed_type (type0);
8969     }
8970 }
8971
8972 /* A static approximation of TYPE with all type wrappers removed.  */
8973
8974 static struct type *
8975 static_unwrap_type (struct type *type)
8976 {
8977   if (ada_is_aligner_type (type))
8978     {
8979       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8980       if (ada_type_name (type1) == NULL)
8981         type1->set_name (ada_type_name (type));
8982
8983       return static_unwrap_type (type1);
8984     }
8985   else
8986     {
8987       struct type *raw_real_type = ada_get_base_type (type);
8988
8989       if (raw_real_type == type)
8990         return type;
8991       else
8992         return to_static_fixed_type (raw_real_type);
8993     }
8994 }
8995
8996 /* In some cases, incomplete and private types require
8997    cross-references that are not resolved as records (for example,
8998       type Foo;
8999       type FooP is access Foo;
9000       V: FooP;
9001       type Foo is array ...;
9002    ).  In these cases, since there is no mechanism for producing
9003    cross-references to such types, we instead substitute for FooP a
9004    stub enumeration type that is nowhere resolved, and whose tag is
9005    the name of the actual type.  Call these types "non-record stubs".  */
9006
9007 /* A type equivalent to TYPE that is not a non-record stub, if one
9008    exists, otherwise TYPE.  */
9009
9010 struct type *
9011 ada_check_typedef (struct type *type)
9012 {
9013   if (type == NULL)
9014     return NULL;
9015
9016   /* If our type is an access to an unconstrained array, which is encoded
9017      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9018      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9019      what allows us to distinguish between fat pointers that represent
9020      array types, and fat pointers that represent array access types
9021      (in both cases, the compiler implements them as fat pointers).  */
9022   if (ada_is_access_to_unconstrained_array (type))
9023     return type;
9024
9025   type = check_typedef (type);
9026   if (type == NULL || type->code () != TYPE_CODE_ENUM
9027       || !TYPE_STUB (type)
9028       || TYPE_NAME (type) == NULL)
9029     return type;
9030   else
9031     {
9032       const char *name = TYPE_NAME (type);
9033       struct type *type1 = ada_find_any_type (name);
9034
9035       if (type1 == NULL)
9036         return type;
9037
9038       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9039          stubs pointing to arrays, as we don't create symbols for array
9040          types, only for the typedef-to-array types).  If that's the case,
9041          strip the typedef layer.  */
9042       if (type1->code () == TYPE_CODE_TYPEDEF)
9043         type1 = ada_check_typedef (type1);
9044
9045       return type1;
9046     }
9047 }
9048
9049 /* A value representing the data at VALADDR/ADDRESS as described by
9050    type TYPE0, but with a standard (static-sized) type that correctly
9051    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9052    type, then return VAL0 [this feature is simply to avoid redundant
9053    creation of struct values].  */
9054
9055 static struct value *
9056 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9057                            struct value *val0)
9058 {
9059   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9060
9061   if (type == type0 && val0 != NULL)
9062     return val0;
9063
9064   if (VALUE_LVAL (val0) != lval_memory)
9065     {
9066       /* Our value does not live in memory; it could be a convenience
9067          variable, for instance.  Create a not_lval value using val0's
9068          contents.  */
9069       return value_from_contents (type, value_contents (val0));
9070     }
9071
9072   return value_from_contents_and_address (type, 0, address);
9073 }
9074
9075 /* A value representing VAL, but with a standard (static-sized) type
9076    that correctly describes it.  Does not necessarily create a new
9077    value.  */
9078
9079 struct value *
9080 ada_to_fixed_value (struct value *val)
9081 {
9082   val = unwrap_value (val);
9083   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9084   return val;
9085 }
9086 \f
9087
9088 /* Attributes */
9089
9090 /* Table mapping attribute numbers to names.
9091    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9092
9093 static const char *attribute_names[] = {
9094   "<?>",
9095
9096   "first",
9097   "last",
9098   "length",
9099   "image",
9100   "max",
9101   "min",
9102   "modulus",
9103   "pos",
9104   "size",
9105   "tag",
9106   "val",
9107   0
9108 };
9109
9110 static const char *
9111 ada_attribute_name (enum exp_opcode n)
9112 {
9113   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9114     return attribute_names[n - OP_ATR_FIRST + 1];
9115   else
9116     return attribute_names[0];
9117 }
9118
9119 /* Evaluate the 'POS attribute applied to ARG.  */
9120
9121 static LONGEST
9122 pos_atr (struct value *arg)
9123 {
9124   struct value *val = coerce_ref (arg);
9125   struct type *type = value_type (val);
9126   LONGEST result;
9127
9128   if (!discrete_type_p (type))
9129     error (_("'POS only defined on discrete types"));
9130
9131   if (!discrete_position (type, value_as_long (val), &result))
9132     error (_("enumeration value is invalid: can't find 'POS"));
9133
9134   return result;
9135 }
9136
9137 static struct value *
9138 value_pos_atr (struct type *type, struct value *arg)
9139 {
9140   return value_from_longest (type, pos_atr (arg));
9141 }
9142
9143 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9144
9145 static struct value *
9146 value_val_atr (struct type *type, struct value *arg)
9147 {
9148   if (!discrete_type_p (type))
9149     error (_("'VAL only defined on discrete types"));
9150   if (!integer_type_p (value_type (arg)))
9151     error (_("'VAL requires integral argument"));
9152
9153   if (type->code () == TYPE_CODE_ENUM)
9154     {
9155       long pos = value_as_long (arg);
9156
9157       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9158         error (_("argument to 'VAL out of range"));
9159       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9160     }
9161   else
9162     return value_from_longest (type, value_as_long (arg));
9163 }
9164 \f
9165
9166                                 /* Evaluation */
9167
9168 /* True if TYPE appears to be an Ada character type.
9169    [At the moment, this is true only for Character and Wide_Character;
9170    It is a heuristic test that could stand improvement].  */
9171
9172 bool
9173 ada_is_character_type (struct type *type)
9174 {
9175   const char *name;
9176
9177   /* If the type code says it's a character, then assume it really is,
9178      and don't check any further.  */
9179   if (type->code () == TYPE_CODE_CHAR)
9180     return true;
9181   
9182   /* Otherwise, assume it's a character type iff it is a discrete type
9183      with a known character type name.  */
9184   name = ada_type_name (type);
9185   return (name != NULL
9186           && (type->code () == TYPE_CODE_INT
9187               || type->code () == TYPE_CODE_RANGE)
9188           && (strcmp (name, "character") == 0
9189               || strcmp (name, "wide_character") == 0
9190               || strcmp (name, "wide_wide_character") == 0
9191               || strcmp (name, "unsigned char") == 0));
9192 }
9193
9194 /* True if TYPE appears to be an Ada string type.  */
9195
9196 bool
9197 ada_is_string_type (struct type *type)
9198 {
9199   type = ada_check_typedef (type);
9200   if (type != NULL
9201       && type->code () != TYPE_CODE_PTR
9202       && (ada_is_simple_array_type (type)
9203           || ada_is_array_descriptor_type (type))
9204       && ada_array_arity (type) == 1)
9205     {
9206       struct type *elttype = ada_array_element_type (type, 1);
9207
9208       return ada_is_character_type (elttype);
9209     }
9210   else
9211     return false;
9212 }
9213
9214 /* The compiler sometimes provides a parallel XVS type for a given
9215    PAD type.  Normally, it is safe to follow the PAD type directly,
9216    but older versions of the compiler have a bug that causes the offset
9217    of its "F" field to be wrong.  Following that field in that case
9218    would lead to incorrect results, but this can be worked around
9219    by ignoring the PAD type and using the associated XVS type instead.
9220
9221    Set to True if the debugger should trust the contents of PAD types.
9222    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9223 static bool trust_pad_over_xvs = true;
9224
9225 /* True if TYPE is a struct type introduced by the compiler to force the
9226    alignment of a value.  Such types have a single field with a
9227    distinctive name.  */
9228
9229 int
9230 ada_is_aligner_type (struct type *type)
9231 {
9232   type = ada_check_typedef (type);
9233
9234   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9235     return 0;
9236
9237   return (type->code () == TYPE_CODE_STRUCT
9238           && TYPE_NFIELDS (type) == 1
9239           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9240 }
9241
9242 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9243    the parallel type.  */
9244
9245 struct type *
9246 ada_get_base_type (struct type *raw_type)
9247 {
9248   struct type *real_type_namer;
9249   struct type *raw_real_type;
9250
9251   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
9252     return raw_type;
9253
9254   if (ada_is_aligner_type (raw_type))
9255     /* The encoding specifies that we should always use the aligner type.
9256        So, even if this aligner type has an associated XVS type, we should
9257        simply ignore it.
9258
9259        According to the compiler gurus, an XVS type parallel to an aligner
9260        type may exist because of a stabs limitation.  In stabs, aligner
9261        types are empty because the field has a variable-sized type, and
9262        thus cannot actually be used as an aligner type.  As a result,
9263        we need the associated parallel XVS type to decode the type.
9264        Since the policy in the compiler is to not change the internal
9265        representation based on the debugging info format, we sometimes
9266        end up having a redundant XVS type parallel to the aligner type.  */
9267     return raw_type;
9268
9269   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9270   if (real_type_namer == NULL
9271       || real_type_namer->code () != TYPE_CODE_STRUCT
9272       || TYPE_NFIELDS (real_type_namer) != 1)
9273     return raw_type;
9274
9275   if (TYPE_FIELD_TYPE (real_type_namer, 0)->code () != TYPE_CODE_REF)
9276     {
9277       /* This is an older encoding form where the base type needs to be
9278          looked up by name.  We prefer the newer encoding because it is
9279          more efficient.  */
9280       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9281       if (raw_real_type == NULL)
9282         return raw_type;
9283       else
9284         return raw_real_type;
9285     }
9286
9287   /* The field in our XVS type is a reference to the base type.  */
9288   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9289 }
9290
9291 /* The type of value designated by TYPE, with all aligners removed.  */
9292
9293 struct type *
9294 ada_aligned_type (struct type *type)
9295 {
9296   if (ada_is_aligner_type (type))
9297     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9298   else
9299     return ada_get_base_type (type);
9300 }
9301
9302
9303 /* The address of the aligned value in an object at address VALADDR
9304    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9305
9306 const gdb_byte *
9307 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9308 {
9309   if (ada_is_aligner_type (type))
9310     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9311                                    valaddr +
9312                                    TYPE_FIELD_BITPOS (type,
9313                                                       0) / TARGET_CHAR_BIT);
9314   else
9315     return valaddr;
9316 }
9317
9318
9319
9320 /* The printed representation of an enumeration literal with encoded
9321    name NAME.  The value is good to the next call of ada_enum_name.  */
9322 const char *
9323 ada_enum_name (const char *name)
9324 {
9325   static char *result;
9326   static size_t result_len = 0;
9327   const char *tmp;
9328
9329   /* First, unqualify the enumeration name:
9330      1. Search for the last '.' character.  If we find one, then skip
9331      all the preceding characters, the unqualified name starts
9332      right after that dot.
9333      2. Otherwise, we may be debugging on a target where the compiler
9334      translates dots into "__".  Search forward for double underscores,
9335      but stop searching when we hit an overloading suffix, which is
9336      of the form "__" followed by digits.  */
9337
9338   tmp = strrchr (name, '.');
9339   if (tmp != NULL)
9340     name = tmp + 1;
9341   else
9342     {
9343       while ((tmp = strstr (name, "__")) != NULL)
9344         {
9345           if (isdigit (tmp[2]))
9346             break;
9347           else
9348             name = tmp + 2;
9349         }
9350     }
9351
9352   if (name[0] == 'Q')
9353     {
9354       int v;
9355
9356       if (name[1] == 'U' || name[1] == 'W')
9357         {
9358           if (sscanf (name + 2, "%x", &v) != 1)
9359             return name;
9360         }
9361       else if (((name[1] >= '0' && name[1] <= '9')
9362                 || (name[1] >= 'a' && name[1] <= 'z'))
9363                && name[2] == '\0')
9364         {
9365           GROW_VECT (result, result_len, 4);
9366           xsnprintf (result, result_len, "'%c'", name[1]);
9367           return result;
9368         }
9369       else
9370         return name;
9371
9372       GROW_VECT (result, result_len, 16);
9373       if (isascii (v) && isprint (v))
9374         xsnprintf (result, result_len, "'%c'", v);
9375       else if (name[1] == 'U')
9376         xsnprintf (result, result_len, "[\"%02x\"]", v);
9377       else
9378         xsnprintf (result, result_len, "[\"%04x\"]", v);
9379
9380       return result;
9381     }
9382   else
9383     {
9384       tmp = strstr (name, "__");
9385       if (tmp == NULL)
9386         tmp = strstr (name, "$");
9387       if (tmp != NULL)
9388         {
9389           GROW_VECT (result, result_len, tmp - name + 1);
9390           strncpy (result, name, tmp - name);
9391           result[tmp - name] = '\0';
9392           return result;
9393         }
9394
9395       return name;
9396     }
9397 }
9398
9399 /* Evaluate the subexpression of EXP starting at *POS as for
9400    evaluate_type, updating *POS to point just past the evaluated
9401    expression.  */
9402
9403 static struct value *
9404 evaluate_subexp_type (struct expression *exp, int *pos)
9405 {
9406   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9407 }
9408
9409 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9410    value it wraps.  */
9411
9412 static struct value *
9413 unwrap_value (struct value *val)
9414 {
9415   struct type *type = ada_check_typedef (value_type (val));
9416
9417   if (ada_is_aligner_type (type))
9418     {
9419       struct value *v = ada_value_struct_elt (val, "F", 0);
9420       struct type *val_type = ada_check_typedef (value_type (v));
9421
9422       if (ada_type_name (val_type) == NULL)
9423         val_type->set_name (ada_type_name (type));
9424
9425       return unwrap_value (v);
9426     }
9427   else
9428     {
9429       struct type *raw_real_type =
9430         ada_check_typedef (ada_get_base_type (type));
9431
9432       /* If there is no parallel XVS or XVE type, then the value is
9433          already unwrapped.  Return it without further modification.  */
9434       if ((type == raw_real_type)
9435           && ada_find_parallel_type (type, "___XVE") == NULL)
9436         return val;
9437
9438       return
9439         coerce_unspec_val_to_type
9440         (val, ada_to_fixed_type (raw_real_type, 0,
9441                                  value_address (val),
9442                                  NULL, 1));
9443     }
9444 }
9445
9446 static struct value *
9447 cast_from_fixed (struct type *type, struct value *arg)
9448 {
9449   struct value *scale = ada_scaling_factor (value_type (arg));
9450   arg = value_cast (value_type (scale), arg);
9451
9452   arg = value_binop (arg, scale, BINOP_MUL);
9453   return value_cast (type, arg);
9454 }
9455
9456 static struct value *
9457 cast_to_fixed (struct type *type, struct value *arg)
9458 {
9459   if (type == value_type (arg))
9460     return arg;
9461
9462   struct value *scale = ada_scaling_factor (type);
9463   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9464     arg = cast_from_fixed (value_type (scale), arg);
9465   else
9466     arg = value_cast (value_type (scale), arg);
9467
9468   arg = value_binop (arg, scale, BINOP_DIV);
9469   return value_cast (type, arg);
9470 }
9471
9472 /* Given two array types T1 and T2, return nonzero iff both arrays
9473    contain the same number of elements.  */
9474
9475 static int
9476 ada_same_array_size_p (struct type *t1, struct type *t2)
9477 {
9478   LONGEST lo1, hi1, lo2, hi2;
9479
9480   /* Get the array bounds in order to verify that the size of
9481      the two arrays match.  */
9482   if (!get_array_bounds (t1, &lo1, &hi1)
9483       || !get_array_bounds (t2, &lo2, &hi2))
9484     error (_("unable to determine array bounds"));
9485
9486   /* To make things easier for size comparison, normalize a bit
9487      the case of empty arrays by making sure that the difference
9488      between upper bound and lower bound is always -1.  */
9489   if (lo1 > hi1)
9490     hi1 = lo1 - 1;
9491   if (lo2 > hi2)
9492     hi2 = lo2 - 1;
9493
9494   return (hi1 - lo1 == hi2 - lo2);
9495 }
9496
9497 /* Assuming that VAL is an array of integrals, and TYPE represents
9498    an array with the same number of elements, but with wider integral
9499    elements, return an array "casted" to TYPE.  In practice, this
9500    means that the returned array is built by casting each element
9501    of the original array into TYPE's (wider) element type.  */
9502
9503 static struct value *
9504 ada_promote_array_of_integrals (struct type *type, struct value *val)
9505 {
9506   struct type *elt_type = TYPE_TARGET_TYPE (type);
9507   LONGEST lo, hi;
9508   struct value *res;
9509   LONGEST i;
9510
9511   /* Verify that both val and type are arrays of scalars, and
9512      that the size of val's elements is smaller than the size
9513      of type's element.  */
9514   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9515   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9516   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9517   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9518   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9519               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9520
9521   if (!get_array_bounds (type, &lo, &hi))
9522     error (_("unable to determine array bounds"));
9523
9524   res = allocate_value (type);
9525
9526   /* Promote each array element.  */
9527   for (i = 0; i < hi - lo + 1; i++)
9528     {
9529       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9530
9531       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9532               value_contents_all (elt), TYPE_LENGTH (elt_type));
9533     }
9534
9535   return res;
9536 }
9537
9538 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9539    return the converted value.  */
9540
9541 static struct value *
9542 coerce_for_assign (struct type *type, struct value *val)
9543 {
9544   struct type *type2 = value_type (val);
9545
9546   if (type == type2)
9547     return val;
9548
9549   type2 = ada_check_typedef (type2);
9550   type = ada_check_typedef (type);
9551
9552   if (type2->code () == TYPE_CODE_PTR
9553       && type->code () == TYPE_CODE_ARRAY)
9554     {
9555       val = ada_value_ind (val);
9556       type2 = value_type (val);
9557     }
9558
9559   if (type2->code () == TYPE_CODE_ARRAY
9560       && type->code () == TYPE_CODE_ARRAY)
9561     {
9562       if (!ada_same_array_size_p (type, type2))
9563         error (_("cannot assign arrays of different length"));
9564
9565       if (is_integral_type (TYPE_TARGET_TYPE (type))
9566           && is_integral_type (TYPE_TARGET_TYPE (type2))
9567           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9568                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9569         {
9570           /* Allow implicit promotion of the array elements to
9571              a wider type.  */
9572           return ada_promote_array_of_integrals (type, val);
9573         }
9574
9575       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9576           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9577         error (_("Incompatible types in assignment"));
9578       deprecated_set_value_type (val, type);
9579     }
9580   return val;
9581 }
9582
9583 static struct value *
9584 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9585 {
9586   struct value *val;
9587   struct type *type1, *type2;
9588   LONGEST v, v1, v2;
9589
9590   arg1 = coerce_ref (arg1);
9591   arg2 = coerce_ref (arg2);
9592   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9593   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9594
9595   if (type1->code () != TYPE_CODE_INT
9596       || type2->code () != TYPE_CODE_INT)
9597     return value_binop (arg1, arg2, op);
9598
9599   switch (op)
9600     {
9601     case BINOP_MOD:
9602     case BINOP_DIV:
9603     case BINOP_REM:
9604       break;
9605     default:
9606       return value_binop (arg1, arg2, op);
9607     }
9608
9609   v2 = value_as_long (arg2);
9610   if (v2 == 0)
9611     error (_("second operand of %s must not be zero."), op_string (op));
9612
9613   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9614     return value_binop (arg1, arg2, op);
9615
9616   v1 = value_as_long (arg1);
9617   switch (op)
9618     {
9619     case BINOP_DIV:
9620       v = v1 / v2;
9621       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9622         v += v > 0 ? -1 : 1;
9623       break;
9624     case BINOP_REM:
9625       v = v1 % v2;
9626       if (v * v1 < 0)
9627         v -= v2;
9628       break;
9629     default:
9630       /* Should not reach this point.  */
9631       v = 0;
9632     }
9633
9634   val = allocate_value (type1);
9635   store_unsigned_integer (value_contents_raw (val),
9636                           TYPE_LENGTH (value_type (val)),
9637                           type_byte_order (type1), v);
9638   return val;
9639 }
9640
9641 static int
9642 ada_value_equal (struct value *arg1, struct value *arg2)
9643 {
9644   if (ada_is_direct_array_type (value_type (arg1))
9645       || ada_is_direct_array_type (value_type (arg2)))
9646     {
9647       struct type *arg1_type, *arg2_type;
9648
9649       /* Automatically dereference any array reference before
9650          we attempt to perform the comparison.  */
9651       arg1 = ada_coerce_ref (arg1);
9652       arg2 = ada_coerce_ref (arg2);
9653
9654       arg1 = ada_coerce_to_simple_array (arg1);
9655       arg2 = ada_coerce_to_simple_array (arg2);
9656
9657       arg1_type = ada_check_typedef (value_type (arg1));
9658       arg2_type = ada_check_typedef (value_type (arg2));
9659
9660       if (arg1_type->code () != TYPE_CODE_ARRAY
9661           || arg2_type->code () != TYPE_CODE_ARRAY)
9662         error (_("Attempt to compare array with non-array"));
9663       /* FIXME: The following works only for types whose
9664          representations use all bits (no padding or undefined bits)
9665          and do not have user-defined equality.  */
9666       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9667               && memcmp (value_contents (arg1), value_contents (arg2),
9668                          TYPE_LENGTH (arg1_type)) == 0);
9669     }
9670   return value_equal (arg1, arg2);
9671 }
9672
9673 /* Total number of component associations in the aggregate starting at
9674    index PC in EXP.  Assumes that index PC is the start of an
9675    OP_AGGREGATE.  */
9676
9677 static int
9678 num_component_specs (struct expression *exp, int pc)
9679 {
9680   int n, m, i;
9681
9682   m = exp->elts[pc + 1].longconst;
9683   pc += 3;
9684   n = 0;
9685   for (i = 0; i < m; i += 1)
9686     {
9687       switch (exp->elts[pc].opcode) 
9688         {
9689         default:
9690           n += 1;
9691           break;
9692         case OP_CHOICES:
9693           n += exp->elts[pc + 1].longconst;
9694           break;
9695         }
9696       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9697     }
9698   return n;
9699 }
9700
9701 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9702    component of LHS (a simple array or a record), updating *POS past
9703    the expression, assuming that LHS is contained in CONTAINER.  Does
9704    not modify the inferior's memory, nor does it modify LHS (unless
9705    LHS == CONTAINER).  */
9706
9707 static void
9708 assign_component (struct value *container, struct value *lhs, LONGEST index,
9709                   struct expression *exp, int *pos)
9710 {
9711   struct value *mark = value_mark ();
9712   struct value *elt;
9713   struct type *lhs_type = check_typedef (value_type (lhs));
9714
9715   if (lhs_type->code () == TYPE_CODE_ARRAY)
9716     {
9717       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9718       struct value *index_val = value_from_longest (index_type, index);
9719
9720       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9721     }
9722   else
9723     {
9724       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9725       elt = ada_to_fixed_value (elt);
9726     }
9727
9728   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9729     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9730   else
9731     value_assign_to_component (container, elt, 
9732                                ada_evaluate_subexp (NULL, exp, pos, 
9733                                                     EVAL_NORMAL));
9734
9735   value_free_to_mark (mark);
9736 }
9737
9738 /* Assuming that LHS represents an lvalue having a record or array
9739    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9740    of that aggregate's value to LHS, advancing *POS past the
9741    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9742    lvalue containing LHS (possibly LHS itself).  Does not modify
9743    the inferior's memory, nor does it modify the contents of 
9744    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9745
9746 static struct value *
9747 assign_aggregate (struct value *container, 
9748                   struct value *lhs, struct expression *exp, 
9749                   int *pos, enum noside noside)
9750 {
9751   struct type *lhs_type;
9752   int n = exp->elts[*pos+1].longconst;
9753   LONGEST low_index, high_index;
9754   int num_specs;
9755   LONGEST *indices;
9756   int max_indices, num_indices;
9757   int i;
9758
9759   *pos += 3;
9760   if (noside != EVAL_NORMAL)
9761     {
9762       for (i = 0; i < n; i += 1)
9763         ada_evaluate_subexp (NULL, exp, pos, noside);
9764       return container;
9765     }
9766
9767   container = ada_coerce_ref (container);
9768   if (ada_is_direct_array_type (value_type (container)))
9769     container = ada_coerce_to_simple_array (container);
9770   lhs = ada_coerce_ref (lhs);
9771   if (!deprecated_value_modifiable (lhs))
9772     error (_("Left operand of assignment is not a modifiable lvalue."));
9773
9774   lhs_type = check_typedef (value_type (lhs));
9775   if (ada_is_direct_array_type (lhs_type))
9776     {
9777       lhs = ada_coerce_to_simple_array (lhs);
9778       lhs_type = check_typedef (value_type (lhs));
9779       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9780       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9781     }
9782   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9783     {
9784       low_index = 0;
9785       high_index = num_visible_fields (lhs_type) - 1;
9786     }
9787   else
9788     error (_("Left-hand side must be array or record."));
9789
9790   num_specs = num_component_specs (exp, *pos - 3);
9791   max_indices = 4 * num_specs + 4;
9792   indices = XALLOCAVEC (LONGEST, max_indices);
9793   indices[0] = indices[1] = low_index - 1;
9794   indices[2] = indices[3] = high_index + 1;
9795   num_indices = 4;
9796
9797   for (i = 0; i < n; i += 1)
9798     {
9799       switch (exp->elts[*pos].opcode)
9800         {
9801           case OP_CHOICES:
9802             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9803                                            &num_indices, max_indices,
9804                                            low_index, high_index);
9805             break;
9806           case OP_POSITIONAL:
9807             aggregate_assign_positional (container, lhs, exp, pos, indices,
9808                                          &num_indices, max_indices,
9809                                          low_index, high_index);
9810             break;
9811           case OP_OTHERS:
9812             if (i != n-1)
9813               error (_("Misplaced 'others' clause"));
9814             aggregate_assign_others (container, lhs, exp, pos, indices, 
9815                                      num_indices, low_index, high_index);
9816             break;
9817           default:
9818             error (_("Internal error: bad aggregate clause"));
9819         }
9820     }
9821
9822   return container;
9823 }
9824               
9825 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9826    construct at *POS, updating *POS past the construct, given that
9827    the positions are relative to lower bound LOW, where HIGH is the 
9828    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9829    updating *NUM_INDICES as needed.  CONTAINER is as for
9830    assign_aggregate.  */
9831 static void
9832 aggregate_assign_positional (struct value *container,
9833                              struct value *lhs, struct expression *exp,
9834                              int *pos, LONGEST *indices, int *num_indices,
9835                              int max_indices, LONGEST low, LONGEST high) 
9836 {
9837   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9838   
9839   if (ind - 1 == high)
9840     warning (_("Extra components in aggregate ignored."));
9841   if (ind <= high)
9842     {
9843       add_component_interval (ind, ind, indices, num_indices, max_indices);
9844       *pos += 3;
9845       assign_component (container, lhs, ind, exp, pos);
9846     }
9847   else
9848     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9849 }
9850
9851 /* Assign into the components of LHS indexed by the OP_CHOICES
9852    construct at *POS, updating *POS past the construct, given that
9853    the allowable indices are LOW..HIGH.  Record the indices assigned
9854    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9855    needed.  CONTAINER is as for assign_aggregate.  */
9856 static void
9857 aggregate_assign_from_choices (struct value *container,
9858                                struct value *lhs, struct expression *exp,
9859                                int *pos, LONGEST *indices, int *num_indices,
9860                                int max_indices, LONGEST low, LONGEST high) 
9861 {
9862   int j;
9863   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9864   int choice_pos, expr_pc;
9865   int is_array = ada_is_direct_array_type (value_type (lhs));
9866
9867   choice_pos = *pos += 3;
9868
9869   for (j = 0; j < n_choices; j += 1)
9870     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9871   expr_pc = *pos;
9872   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9873   
9874   for (j = 0; j < n_choices; j += 1)
9875     {
9876       LONGEST lower, upper;
9877       enum exp_opcode op = exp->elts[choice_pos].opcode;
9878
9879       if (op == OP_DISCRETE_RANGE)
9880         {
9881           choice_pos += 1;
9882           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9883                                                       EVAL_NORMAL));
9884           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9885                                                       EVAL_NORMAL));
9886         }
9887       else if (is_array)
9888         {
9889           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9890                                                       EVAL_NORMAL));
9891           upper = lower;
9892         }
9893       else
9894         {
9895           int ind;
9896           const char *name;
9897
9898           switch (op)
9899             {
9900             case OP_NAME:
9901               name = &exp->elts[choice_pos + 2].string;
9902               break;
9903             case OP_VAR_VALUE:
9904               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9905               break;
9906             default:
9907               error (_("Invalid record component association."));
9908             }
9909           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9910           ind = 0;
9911           if (! find_struct_field (name, value_type (lhs), 0, 
9912                                    NULL, NULL, NULL, NULL, &ind))
9913             error (_("Unknown component name: %s."), name);
9914           lower = upper = ind;
9915         }
9916
9917       if (lower <= upper && (lower < low || upper > high))
9918         error (_("Index in component association out of bounds."));
9919
9920       add_component_interval (lower, upper, indices, num_indices,
9921                               max_indices);
9922       while (lower <= upper)
9923         {
9924           int pos1;
9925
9926           pos1 = expr_pc;
9927           assign_component (container, lhs, lower, exp, &pos1);
9928           lower += 1;
9929         }
9930     }
9931 }
9932
9933 /* Assign the value of the expression in the OP_OTHERS construct in
9934    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9935    have not been previously assigned.  The index intervals already assigned
9936    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9937    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9938 static void
9939 aggregate_assign_others (struct value *container,
9940                          struct value *lhs, struct expression *exp,
9941                          int *pos, LONGEST *indices, int num_indices,
9942                          LONGEST low, LONGEST high) 
9943 {
9944   int i;
9945   int expr_pc = *pos + 1;
9946   
9947   for (i = 0; i < num_indices - 2; i += 2)
9948     {
9949       LONGEST ind;
9950
9951       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9952         {
9953           int localpos;
9954
9955           localpos = expr_pc;
9956           assign_component (container, lhs, ind, exp, &localpos);
9957         }
9958     }
9959   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9960 }
9961
9962 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9963    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9964    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9965    MAX_SIZE.  The resulting intervals do not overlap.  */
9966 static void
9967 add_component_interval (LONGEST low, LONGEST high, 
9968                         LONGEST* indices, int *size, int max_size)
9969 {
9970   int i, j;
9971
9972   for (i = 0; i < *size; i += 2) {
9973     if (high >= indices[i] && low <= indices[i + 1])
9974       {
9975         int kh;
9976
9977         for (kh = i + 2; kh < *size; kh += 2)
9978           if (high < indices[kh])
9979             break;
9980         if (low < indices[i])
9981           indices[i] = low;
9982         indices[i + 1] = indices[kh - 1];
9983         if (high > indices[i + 1])
9984           indices[i + 1] = high;
9985         memcpy (indices + i + 2, indices + kh, *size - kh);
9986         *size -= kh - i - 2;
9987         return;
9988       }
9989     else if (high < indices[i])
9990       break;
9991   }
9992         
9993   if (*size == max_size)
9994     error (_("Internal error: miscounted aggregate components."));
9995   *size += 2;
9996   for (j = *size-1; j >= i+2; j -= 1)
9997     indices[j] = indices[j - 2];
9998   indices[i] = low;
9999   indices[i + 1] = high;
10000 }
10001
10002 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10003    is different.  */
10004
10005 static struct value *
10006 ada_value_cast (struct type *type, struct value *arg2)
10007 {
10008   if (type == ada_check_typedef (value_type (arg2)))
10009     return arg2;
10010
10011   if (ada_is_gnat_encoded_fixed_point_type (type))
10012     return cast_to_fixed (type, arg2);
10013
10014   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10015     return cast_from_fixed (type, arg2);
10016
10017   return value_cast (type, arg2);
10018 }
10019
10020 /*  Evaluating Ada expressions, and printing their result.
10021     ------------------------------------------------------
10022
10023     1. Introduction:
10024     ----------------
10025
10026     We usually evaluate an Ada expression in order to print its value.
10027     We also evaluate an expression in order to print its type, which
10028     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10029     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10030     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10031     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10032     similar.
10033
10034     Evaluating expressions is a little more complicated for Ada entities
10035     than it is for entities in languages such as C.  The main reason for
10036     this is that Ada provides types whose definition might be dynamic.
10037     One example of such types is variant records.  Or another example
10038     would be an array whose bounds can only be known at run time.
10039
10040     The following description is a general guide as to what should be
10041     done (and what should NOT be done) in order to evaluate an expression
10042     involving such types, and when.  This does not cover how the semantic
10043     information is encoded by GNAT as this is covered separatly.  For the
10044     document used as the reference for the GNAT encoding, see exp_dbug.ads
10045     in the GNAT sources.
10046
10047     Ideally, we should embed each part of this description next to its
10048     associated code.  Unfortunately, the amount of code is so vast right
10049     now that it's hard to see whether the code handling a particular
10050     situation might be duplicated or not.  One day, when the code is
10051     cleaned up, this guide might become redundant with the comments
10052     inserted in the code, and we might want to remove it.
10053
10054     2. ``Fixing'' an Entity, the Simple Case:
10055     -----------------------------------------
10056
10057     When evaluating Ada expressions, the tricky issue is that they may
10058     reference entities whose type contents and size are not statically
10059     known.  Consider for instance a variant record:
10060
10061        type Rec (Empty : Boolean := True) is record
10062           case Empty is
10063              when True => null;
10064              when False => Value : Integer;
10065           end case;
10066        end record;
10067        Yes : Rec := (Empty => False, Value => 1);
10068        No  : Rec := (empty => True);
10069
10070     The size and contents of that record depends on the value of the
10071     descriminant (Rec.Empty).  At this point, neither the debugging
10072     information nor the associated type structure in GDB are able to
10073     express such dynamic types.  So what the debugger does is to create
10074     "fixed" versions of the type that applies to the specific object.
10075     We also informally refer to this operation as "fixing" an object,
10076     which means creating its associated fixed type.
10077
10078     Example: when printing the value of variable "Yes" above, its fixed
10079     type would look like this:
10080
10081        type Rec is record
10082           Empty : Boolean;
10083           Value : Integer;
10084        end record;
10085
10086     On the other hand, if we printed the value of "No", its fixed type
10087     would become:
10088
10089        type Rec is record
10090           Empty : Boolean;
10091        end record;
10092
10093     Things become a little more complicated when trying to fix an entity
10094     with a dynamic type that directly contains another dynamic type,
10095     such as an array of variant records, for instance.  There are
10096     two possible cases: Arrays, and records.
10097
10098     3. ``Fixing'' Arrays:
10099     ---------------------
10100
10101     The type structure in GDB describes an array in terms of its bounds,
10102     and the type of its elements.  By design, all elements in the array
10103     have the same type and we cannot represent an array of variant elements
10104     using the current type structure in GDB.  When fixing an array,
10105     we cannot fix the array element, as we would potentially need one
10106     fixed type per element of the array.  As a result, the best we can do
10107     when fixing an array is to produce an array whose bounds and size
10108     are correct (allowing us to read it from memory), but without having
10109     touched its element type.  Fixing each element will be done later,
10110     when (if) necessary.
10111
10112     Arrays are a little simpler to handle than records, because the same
10113     amount of memory is allocated for each element of the array, even if
10114     the amount of space actually used by each element differs from element
10115     to element.  Consider for instance the following array of type Rec:
10116
10117        type Rec_Array is array (1 .. 2) of Rec;
10118
10119     The actual amount of memory occupied by each element might be different
10120     from element to element, depending on the value of their discriminant.
10121     But the amount of space reserved for each element in the array remains
10122     fixed regardless.  So we simply need to compute that size using
10123     the debugging information available, from which we can then determine
10124     the array size (we multiply the number of elements of the array by
10125     the size of each element).
10126
10127     The simplest case is when we have an array of a constrained element
10128     type. For instance, consider the following type declarations:
10129
10130         type Bounded_String (Max_Size : Integer) is
10131            Length : Integer;
10132            Buffer : String (1 .. Max_Size);
10133         end record;
10134         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10135
10136     In this case, the compiler describes the array as an array of
10137     variable-size elements (identified by its XVS suffix) for which
10138     the size can be read in the parallel XVZ variable.
10139
10140     In the case of an array of an unconstrained element type, the compiler
10141     wraps the array element inside a private PAD type.  This type should not
10142     be shown to the user, and must be "unwrap"'ed before printing.  Note
10143     that we also use the adjective "aligner" in our code to designate
10144     these wrapper types.
10145
10146     In some cases, the size allocated for each element is statically
10147     known.  In that case, the PAD type already has the correct size,
10148     and the array element should remain unfixed.
10149
10150     But there are cases when this size is not statically known.
10151     For instance, assuming that "Five" is an integer variable:
10152
10153         type Dynamic is array (1 .. Five) of Integer;
10154         type Wrapper (Has_Length : Boolean := False) is record
10155            Data : Dynamic;
10156            case Has_Length is
10157               when True => Length : Integer;
10158               when False => null;
10159            end case;
10160         end record;
10161         type Wrapper_Array is array (1 .. 2) of Wrapper;
10162
10163         Hello : Wrapper_Array := (others => (Has_Length => True,
10164                                              Data => (others => 17),
10165                                              Length => 1));
10166
10167
10168     The debugging info would describe variable Hello as being an
10169     array of a PAD type.  The size of that PAD type is not statically
10170     known, but can be determined using a parallel XVZ variable.
10171     In that case, a copy of the PAD type with the correct size should
10172     be used for the fixed array.
10173
10174     3. ``Fixing'' record type objects:
10175     ----------------------------------
10176
10177     Things are slightly different from arrays in the case of dynamic
10178     record types.  In this case, in order to compute the associated
10179     fixed type, we need to determine the size and offset of each of
10180     its components.  This, in turn, requires us to compute the fixed
10181     type of each of these components.
10182
10183     Consider for instance the example:
10184
10185         type Bounded_String (Max_Size : Natural) is record
10186            Str : String (1 .. Max_Size);
10187            Length : Natural;
10188         end record;
10189         My_String : Bounded_String (Max_Size => 10);
10190
10191     In that case, the position of field "Length" depends on the size
10192     of field Str, which itself depends on the value of the Max_Size
10193     discriminant.  In order to fix the type of variable My_String,
10194     we need to fix the type of field Str.  Therefore, fixing a variant
10195     record requires us to fix each of its components.
10196
10197     However, if a component does not have a dynamic size, the component
10198     should not be fixed.  In particular, fields that use a PAD type
10199     should not fixed.  Here is an example where this might happen
10200     (assuming type Rec above):
10201
10202        type Container (Big : Boolean) is record
10203           First : Rec;
10204           After : Integer;
10205           case Big is
10206              when True => Another : Integer;
10207              when False => null;
10208           end case;
10209        end record;
10210        My_Container : Container := (Big => False,
10211                                     First => (Empty => True),
10212                                     After => 42);
10213
10214     In that example, the compiler creates a PAD type for component First,
10215     whose size is constant, and then positions the component After just
10216     right after it.  The offset of component After is therefore constant
10217     in this case.
10218
10219     The debugger computes the position of each field based on an algorithm
10220     that uses, among other things, the actual position and size of the field
10221     preceding it.  Let's now imagine that the user is trying to print
10222     the value of My_Container.  If the type fixing was recursive, we would
10223     end up computing the offset of field After based on the size of the
10224     fixed version of field First.  And since in our example First has
10225     only one actual field, the size of the fixed type is actually smaller
10226     than the amount of space allocated to that field, and thus we would
10227     compute the wrong offset of field After.
10228
10229     To make things more complicated, we need to watch out for dynamic
10230     components of variant records (identified by the ___XVL suffix in
10231     the component name).  Even if the target type is a PAD type, the size
10232     of that type might not be statically known.  So the PAD type needs
10233     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10234     we might end up with the wrong size for our component.  This can be
10235     observed with the following type declarations:
10236
10237         type Octal is new Integer range 0 .. 7;
10238         type Octal_Array is array (Positive range <>) of Octal;
10239         pragma Pack (Octal_Array);
10240
10241         type Octal_Buffer (Size : Positive) is record
10242            Buffer : Octal_Array (1 .. Size);
10243            Length : Integer;
10244         end record;
10245
10246     In that case, Buffer is a PAD type whose size is unset and needs
10247     to be computed by fixing the unwrapped type.
10248
10249     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10250     ----------------------------------------------------------
10251
10252     Lastly, when should the sub-elements of an entity that remained unfixed
10253     thus far, be actually fixed?
10254
10255     The answer is: Only when referencing that element.  For instance
10256     when selecting one component of a record, this specific component
10257     should be fixed at that point in time.  Or when printing the value
10258     of a record, each component should be fixed before its value gets
10259     printed.  Similarly for arrays, the element of the array should be
10260     fixed when printing each element of the array, or when extracting
10261     one element out of that array.  On the other hand, fixing should
10262     not be performed on the elements when taking a slice of an array!
10263
10264     Note that one of the side effects of miscomputing the offset and
10265     size of each field is that we end up also miscomputing the size
10266     of the containing type.  This can have adverse results when computing
10267     the value of an entity.  GDB fetches the value of an entity based
10268     on the size of its type, and thus a wrong size causes GDB to fetch
10269     the wrong amount of memory.  In the case where the computed size is
10270     too small, GDB fetches too little data to print the value of our
10271     entity.  Results in this case are unpredictable, as we usually read
10272     past the buffer containing the data =:-o.  */
10273
10274 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10275    for that subexpression cast to TO_TYPE.  Advance *POS over the
10276    subexpression.  */
10277
10278 static value *
10279 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10280                               enum noside noside, struct type *to_type)
10281 {
10282   int pc = *pos;
10283
10284   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10285       || exp->elts[pc].opcode == OP_VAR_VALUE)
10286     {
10287       (*pos) += 4;
10288
10289       value *val;
10290       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10291         {
10292           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10293             return value_zero (to_type, not_lval);
10294
10295           val = evaluate_var_msym_value (noside,
10296                                          exp->elts[pc + 1].objfile,
10297                                          exp->elts[pc + 2].msymbol);
10298         }
10299       else
10300         val = evaluate_var_value (noside,
10301                                   exp->elts[pc + 1].block,
10302                                   exp->elts[pc + 2].symbol);
10303
10304       if (noside == EVAL_SKIP)
10305         return eval_skip_value (exp);
10306
10307       val = ada_value_cast (to_type, val);
10308
10309       /* Follow the Ada language semantics that do not allow taking
10310          an address of the result of a cast (view conversion in Ada).  */
10311       if (VALUE_LVAL (val) == lval_memory)
10312         {
10313           if (value_lazy (val))
10314             value_fetch_lazy (val);
10315           VALUE_LVAL (val) = not_lval;
10316         }
10317       return val;
10318     }
10319
10320   value *val = evaluate_subexp (to_type, exp, pos, noside);
10321   if (noside == EVAL_SKIP)
10322     return eval_skip_value (exp);
10323   return ada_value_cast (to_type, val);
10324 }
10325
10326 /* Implement the evaluate_exp routine in the exp_descriptor structure
10327    for the Ada language.  */
10328
10329 static struct value *
10330 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10331                      int *pos, enum noside noside)
10332 {
10333   enum exp_opcode op;
10334   int tem;
10335   int pc;
10336   int preeval_pos;
10337   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10338   struct type *type;
10339   int nargs, oplen;
10340   struct value **argvec;
10341
10342   pc = *pos;
10343   *pos += 1;
10344   op = exp->elts[pc].opcode;
10345
10346   switch (op)
10347     {
10348     default:
10349       *pos -= 1;
10350       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10351
10352       if (noside == EVAL_NORMAL)
10353         arg1 = unwrap_value (arg1);
10354
10355       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10356          then we need to perform the conversion manually, because
10357          evaluate_subexp_standard doesn't do it.  This conversion is
10358          necessary in Ada because the different kinds of float/fixed
10359          types in Ada have different representations.
10360
10361          Similarly, we need to perform the conversion from OP_LONG
10362          ourselves.  */
10363       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10364         arg1 = ada_value_cast (expect_type, arg1);
10365
10366       return arg1;
10367
10368     case OP_STRING:
10369       {
10370         struct value *result;
10371
10372         *pos -= 1;
10373         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10374         /* The result type will have code OP_STRING, bashed there from 
10375            OP_ARRAY.  Bash it back.  */
10376         if (value_type (result)->code () == TYPE_CODE_STRING)
10377           value_type (result)->set_code (TYPE_CODE_ARRAY);
10378         return result;
10379       }
10380
10381     case UNOP_CAST:
10382       (*pos) += 2;
10383       type = exp->elts[pc + 1].type;
10384       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10385
10386     case UNOP_QUAL:
10387       (*pos) += 2;
10388       type = exp->elts[pc + 1].type;
10389       return ada_evaluate_subexp (type, exp, pos, noside);
10390
10391     case BINOP_ASSIGN:
10392       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10393       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10394         {
10395           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10396           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10397             return arg1;
10398           return ada_value_assign (arg1, arg1);
10399         }
10400       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10401          except if the lhs of our assignment is a convenience variable.
10402          In the case of assigning to a convenience variable, the lhs
10403          should be exactly the result of the evaluation of the rhs.  */
10404       type = value_type (arg1);
10405       if (VALUE_LVAL (arg1) == lval_internalvar)
10406          type = NULL;
10407       arg2 = evaluate_subexp (type, exp, pos, noside);
10408       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10409         return arg1;
10410       if (VALUE_LVAL (arg1) == lval_internalvar)
10411         {
10412           /* Nothing.  */
10413         }
10414       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10415         arg2 = cast_to_fixed (value_type (arg1), arg2);
10416       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10417         error
10418           (_("Fixed-point values must be assigned to fixed-point variables"));
10419       else
10420         arg2 = coerce_for_assign (value_type (arg1), arg2);
10421       return ada_value_assign (arg1, arg2);
10422
10423     case BINOP_ADD:
10424       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10425       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10426       if (noside == EVAL_SKIP)
10427         goto nosideret;
10428       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10429         return (value_from_longest
10430                  (value_type (arg1),
10431                   value_as_long (arg1) + value_as_long (arg2)));
10432       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10433         return (value_from_longest
10434                  (value_type (arg2),
10435                   value_as_long (arg1) + value_as_long (arg2)));
10436       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10437            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10438           && value_type (arg1) != value_type (arg2))
10439         error (_("Operands of fixed-point addition must have the same type"));
10440       /* Do the addition, and cast the result to the type of the first
10441          argument.  We cannot cast the result to a reference type, so if
10442          ARG1 is a reference type, find its underlying type.  */
10443       type = value_type (arg1);
10444       while (type->code () == TYPE_CODE_REF)
10445         type = TYPE_TARGET_TYPE (type);
10446       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10447       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10448
10449     case BINOP_SUB:
10450       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10451       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10452       if (noside == EVAL_SKIP)
10453         goto nosideret;
10454       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10455         return (value_from_longest
10456                  (value_type (arg1),
10457                   value_as_long (arg1) - value_as_long (arg2)));
10458       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10459         return (value_from_longest
10460                  (value_type (arg2),
10461                   value_as_long (arg1) - value_as_long (arg2)));
10462       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10463            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10464           && value_type (arg1) != value_type (arg2))
10465         error (_("Operands of fixed-point subtraction "
10466                  "must have the same type"));
10467       /* Do the substraction, and cast the result to the type of the first
10468          argument.  We cannot cast the result to a reference type, so if
10469          ARG1 is a reference type, find its underlying type.  */
10470       type = value_type (arg1);
10471       while (type->code () == TYPE_CODE_REF)
10472         type = TYPE_TARGET_TYPE (type);
10473       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10474       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10475
10476     case BINOP_MUL:
10477     case BINOP_DIV:
10478     case BINOP_REM:
10479     case BINOP_MOD:
10480       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10481       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10482       if (noside == EVAL_SKIP)
10483         goto nosideret;
10484       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10485         {
10486           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10487           return value_zero (value_type (arg1), not_lval);
10488         }
10489       else
10490         {
10491           type = builtin_type (exp->gdbarch)->builtin_double;
10492           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10493             arg1 = cast_from_fixed (type, arg1);
10494           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10495             arg2 = cast_from_fixed (type, arg2);
10496           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10497           return ada_value_binop (arg1, arg2, op);
10498         }
10499
10500     case BINOP_EQUAL:
10501     case BINOP_NOTEQUAL:
10502       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10503       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10504       if (noside == EVAL_SKIP)
10505         goto nosideret;
10506       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10507         tem = 0;
10508       else
10509         {
10510           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10511           tem = ada_value_equal (arg1, arg2);
10512         }
10513       if (op == BINOP_NOTEQUAL)
10514         tem = !tem;
10515       type = language_bool_type (exp->language_defn, exp->gdbarch);
10516       return value_from_longest (type, (LONGEST) tem);
10517
10518     case UNOP_NEG:
10519       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10520       if (noside == EVAL_SKIP)
10521         goto nosideret;
10522       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10523         return value_cast (value_type (arg1), value_neg (arg1));
10524       else
10525         {
10526           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10527           return value_neg (arg1);
10528         }
10529
10530     case BINOP_LOGICAL_AND:
10531     case BINOP_LOGICAL_OR:
10532     case UNOP_LOGICAL_NOT:
10533       {
10534         struct value *val;
10535
10536         *pos -= 1;
10537         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10538         type = language_bool_type (exp->language_defn, exp->gdbarch);
10539         return value_cast (type, val);
10540       }
10541
10542     case BINOP_BITWISE_AND:
10543     case BINOP_BITWISE_IOR:
10544     case BINOP_BITWISE_XOR:
10545       {
10546         struct value *val;
10547
10548         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10549         *pos = pc;
10550         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10551
10552         return value_cast (value_type (arg1), val);
10553       }
10554
10555     case OP_VAR_VALUE:
10556       *pos -= 1;
10557
10558       if (noside == EVAL_SKIP)
10559         {
10560           *pos += 4;
10561           goto nosideret;
10562         }
10563
10564       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10565         /* Only encountered when an unresolved symbol occurs in a
10566            context other than a function call, in which case, it is
10567            invalid.  */
10568         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10569                exp->elts[pc + 2].symbol->print_name ());
10570
10571       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10572         {
10573           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10574           /* Check to see if this is a tagged type.  We also need to handle
10575              the case where the type is a reference to a tagged type, but
10576              we have to be careful to exclude pointers to tagged types.
10577              The latter should be shown as usual (as a pointer), whereas
10578              a reference should mostly be transparent to the user.  */
10579           if (ada_is_tagged_type (type, 0)
10580               || (type->code () == TYPE_CODE_REF
10581                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10582             {
10583               /* Tagged types are a little special in the fact that the real
10584                  type is dynamic and can only be determined by inspecting the
10585                  object's tag.  This means that we need to get the object's
10586                  value first (EVAL_NORMAL) and then extract the actual object
10587                  type from its tag.
10588
10589                  Note that we cannot skip the final step where we extract
10590                  the object type from its tag, because the EVAL_NORMAL phase
10591                  results in dynamic components being resolved into fixed ones.
10592                  This can cause problems when trying to print the type
10593                  description of tagged types whose parent has a dynamic size:
10594                  We use the type name of the "_parent" component in order
10595                  to print the name of the ancestor type in the type description.
10596                  If that component had a dynamic size, the resolution into
10597                  a fixed type would result in the loss of that type name,
10598                  thus preventing us from printing the name of the ancestor
10599                  type in the type description.  */
10600               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10601
10602               if (type->code () != TYPE_CODE_REF)
10603                 {
10604                   struct type *actual_type;
10605
10606                   actual_type = type_from_tag (ada_value_tag (arg1));
10607                   if (actual_type == NULL)
10608                     /* If, for some reason, we were unable to determine
10609                        the actual type from the tag, then use the static
10610                        approximation that we just computed as a fallback.
10611                        This can happen if the debugging information is
10612                        incomplete, for instance.  */
10613                     actual_type = type;
10614                   return value_zero (actual_type, not_lval);
10615                 }
10616               else
10617                 {
10618                   /* In the case of a ref, ada_coerce_ref takes care
10619                      of determining the actual type.  But the evaluation
10620                      should return a ref as it should be valid to ask
10621                      for its address; so rebuild a ref after coerce.  */
10622                   arg1 = ada_coerce_ref (arg1);
10623                   return value_ref (arg1, TYPE_CODE_REF);
10624                 }
10625             }
10626
10627           /* Records and unions for which GNAT encodings have been
10628              generated need to be statically fixed as well.
10629              Otherwise, non-static fixing produces a type where
10630              all dynamic properties are removed, which prevents "ptype"
10631              from being able to completely describe the type.
10632              For instance, a case statement in a variant record would be
10633              replaced by the relevant components based on the actual
10634              value of the discriminants.  */
10635           if ((type->code () == TYPE_CODE_STRUCT
10636                && dynamic_template_type (type) != NULL)
10637               || (type->code () == TYPE_CODE_UNION
10638                   && ada_find_parallel_type (type, "___XVU") != NULL))
10639             {
10640               *pos += 4;
10641               return value_zero (to_static_fixed_type (type), not_lval);
10642             }
10643         }
10644
10645       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10646       return ada_to_fixed_value (arg1);
10647
10648     case OP_FUNCALL:
10649       (*pos) += 2;
10650
10651       /* Allocate arg vector, including space for the function to be
10652          called in argvec[0] and a terminating NULL.  */
10653       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10654       argvec = XALLOCAVEC (struct value *, nargs + 2);
10655
10656       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10657           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10658         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10659                exp->elts[pc + 5].symbol->print_name ());
10660       else
10661         {
10662           for (tem = 0; tem <= nargs; tem += 1)
10663             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10664           argvec[tem] = 0;
10665
10666           if (noside == EVAL_SKIP)
10667             goto nosideret;
10668         }
10669
10670       if (ada_is_constrained_packed_array_type
10671           (desc_base_type (value_type (argvec[0]))))
10672         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10673       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10674                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10675         /* This is a packed array that has already been fixed, and
10676            therefore already coerced to a simple array.  Nothing further
10677            to do.  */
10678         ;
10679       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10680         {
10681           /* Make sure we dereference references so that all the code below
10682              feels like it's really handling the referenced value.  Wrapping
10683              types (for alignment) may be there, so make sure we strip them as
10684              well.  */
10685           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10686         }
10687       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10688                && VALUE_LVAL (argvec[0]) == lval_memory)
10689         argvec[0] = value_addr (argvec[0]);
10690
10691       type = ada_check_typedef (value_type (argvec[0]));
10692
10693       /* Ada allows us to implicitly dereference arrays when subscripting
10694          them.  So, if this is an array typedef (encoding use for array
10695          access types encoded as fat pointers), strip it now.  */
10696       if (type->code () == TYPE_CODE_TYPEDEF)
10697         type = ada_typedef_target_type (type);
10698
10699       if (type->code () == TYPE_CODE_PTR)
10700         {
10701           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10702             {
10703             case TYPE_CODE_FUNC:
10704               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10705               break;
10706             case TYPE_CODE_ARRAY:
10707               break;
10708             case TYPE_CODE_STRUCT:
10709               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10710                 argvec[0] = ada_value_ind (argvec[0]);
10711               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10712               break;
10713             default:
10714               error (_("cannot subscript or call something of type `%s'"),
10715                      ada_type_name (value_type (argvec[0])));
10716               break;
10717             }
10718         }
10719
10720       switch (type->code ())
10721         {
10722         case TYPE_CODE_FUNC:
10723           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10724             {
10725               if (TYPE_TARGET_TYPE (type) == NULL)
10726                 error_call_unknown_return_type (NULL);
10727               return allocate_value (TYPE_TARGET_TYPE (type));
10728             }
10729           return call_function_by_hand (argvec[0], NULL,
10730                                         gdb::make_array_view (argvec + 1,
10731                                                               nargs));
10732         case TYPE_CODE_INTERNAL_FUNCTION:
10733           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10734             /* We don't know anything about what the internal
10735                function might return, but we have to return
10736                something.  */
10737             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10738                                not_lval);
10739           else
10740             return call_internal_function (exp->gdbarch, exp->language_defn,
10741                                            argvec[0], nargs, argvec + 1);
10742
10743         case TYPE_CODE_STRUCT:
10744           {
10745             int arity;
10746
10747             arity = ada_array_arity (type);
10748             type = ada_array_element_type (type, nargs);
10749             if (type == NULL)
10750               error (_("cannot subscript or call a record"));
10751             if (arity != nargs)
10752               error (_("wrong number of subscripts; expecting %d"), arity);
10753             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10754               return value_zero (ada_aligned_type (type), lval_memory);
10755             return
10756               unwrap_value (ada_value_subscript
10757                             (argvec[0], nargs, argvec + 1));
10758           }
10759         case TYPE_CODE_ARRAY:
10760           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10761             {
10762               type = ada_array_element_type (type, nargs);
10763               if (type == NULL)
10764                 error (_("element type of array unknown"));
10765               else
10766                 return value_zero (ada_aligned_type (type), lval_memory);
10767             }
10768           return
10769             unwrap_value (ada_value_subscript
10770                           (ada_coerce_to_simple_array (argvec[0]),
10771                            nargs, argvec + 1));
10772         case TYPE_CODE_PTR:     /* Pointer to array */
10773           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10774             {
10775               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10776               type = ada_array_element_type (type, nargs);
10777               if (type == NULL)
10778                 error (_("element type of array unknown"));
10779               else
10780                 return value_zero (ada_aligned_type (type), lval_memory);
10781             }
10782           return
10783             unwrap_value (ada_value_ptr_subscript (argvec[0],
10784                                                    nargs, argvec + 1));
10785
10786         default:
10787           error (_("Attempt to index or call something other than an "
10788                    "array or function"));
10789         }
10790
10791     case TERNOP_SLICE:
10792       {
10793         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10794         struct value *low_bound_val =
10795           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10796         struct value *high_bound_val =
10797           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10798         LONGEST low_bound;
10799         LONGEST high_bound;
10800
10801         low_bound_val = coerce_ref (low_bound_val);
10802         high_bound_val = coerce_ref (high_bound_val);
10803         low_bound = value_as_long (low_bound_val);
10804         high_bound = value_as_long (high_bound_val);
10805
10806         if (noside == EVAL_SKIP)
10807           goto nosideret;
10808
10809         /* If this is a reference to an aligner type, then remove all
10810            the aligners.  */
10811         if (value_type (array)->code () == TYPE_CODE_REF
10812             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10813           TYPE_TARGET_TYPE (value_type (array)) =
10814             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10815
10816         if (ada_is_constrained_packed_array_type (value_type (array)))
10817           error (_("cannot slice a packed array"));
10818
10819         /* If this is a reference to an array or an array lvalue,
10820            convert to a pointer.  */
10821         if (value_type (array)->code () == TYPE_CODE_REF
10822             || (value_type (array)->code () == TYPE_CODE_ARRAY
10823                 && VALUE_LVAL (array) == lval_memory))
10824           array = value_addr (array);
10825
10826         if (noside == EVAL_AVOID_SIDE_EFFECTS
10827             && ada_is_array_descriptor_type (ada_check_typedef
10828                                              (value_type (array))))
10829           return empty_array (ada_type_of_array (array, 0), low_bound,
10830                               high_bound);
10831
10832         array = ada_coerce_to_simple_array_ptr (array);
10833
10834         /* If we have more than one level of pointer indirection,
10835            dereference the value until we get only one level.  */
10836         while (value_type (array)->code () == TYPE_CODE_PTR
10837                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10838                      == TYPE_CODE_PTR))
10839           array = value_ind (array);
10840
10841         /* Make sure we really do have an array type before going further,
10842            to avoid a SEGV when trying to get the index type or the target
10843            type later down the road if the debug info generated by
10844            the compiler is incorrect or incomplete.  */
10845         if (!ada_is_simple_array_type (value_type (array)))
10846           error (_("cannot take slice of non-array"));
10847
10848         if (ada_check_typedef (value_type (array))->code ()
10849             == TYPE_CODE_PTR)
10850           {
10851             struct type *type0 = ada_check_typedef (value_type (array));
10852
10853             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10854               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10855             else
10856               {
10857                 struct type *arr_type0 =
10858                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10859
10860                 return ada_value_slice_from_ptr (array, arr_type0,
10861                                                  longest_to_int (low_bound),
10862                                                  longest_to_int (high_bound));
10863               }
10864           }
10865         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10866           return array;
10867         else if (high_bound < low_bound)
10868           return empty_array (value_type (array), low_bound, high_bound);
10869         else
10870           return ada_value_slice (array, longest_to_int (low_bound),
10871                                   longest_to_int (high_bound));
10872       }
10873
10874     case UNOP_IN_RANGE:
10875       (*pos) += 2;
10876       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10877       type = check_typedef (exp->elts[pc + 1].type);
10878
10879       if (noside == EVAL_SKIP)
10880         goto nosideret;
10881
10882       switch (type->code ())
10883         {
10884         default:
10885           lim_warning (_("Membership test incompletely implemented; "
10886                          "always returns true"));
10887           type = language_bool_type (exp->language_defn, exp->gdbarch);
10888           return value_from_longest (type, (LONGEST) 1);
10889
10890         case TYPE_CODE_RANGE:
10891           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10892           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10893           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10894           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10895           type = language_bool_type (exp->language_defn, exp->gdbarch);
10896           return
10897             value_from_longest (type,
10898                                 (value_less (arg1, arg3)
10899                                  || value_equal (arg1, arg3))
10900                                 && (value_less (arg2, arg1)
10901                                     || value_equal (arg2, arg1)));
10902         }
10903
10904     case BINOP_IN_BOUNDS:
10905       (*pos) += 2;
10906       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10907       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10908
10909       if (noside == EVAL_SKIP)
10910         goto nosideret;
10911
10912       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10913         {
10914           type = language_bool_type (exp->language_defn, exp->gdbarch);
10915           return value_zero (type, not_lval);
10916         }
10917
10918       tem = longest_to_int (exp->elts[pc + 1].longconst);
10919
10920       type = ada_index_type (value_type (arg2), tem, "range");
10921       if (!type)
10922         type = value_type (arg1);
10923
10924       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10925       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10926
10927       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10928       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10929       type = language_bool_type (exp->language_defn, exp->gdbarch);
10930       return
10931         value_from_longest (type,
10932                             (value_less (arg1, arg3)
10933                              || value_equal (arg1, arg3))
10934                             && (value_less (arg2, arg1)
10935                                 || value_equal (arg2, arg1)));
10936
10937     case TERNOP_IN_RANGE:
10938       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10939       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10940       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10941
10942       if (noside == EVAL_SKIP)
10943         goto nosideret;
10944
10945       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10946       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10947       type = language_bool_type (exp->language_defn, exp->gdbarch);
10948       return
10949         value_from_longest (type,
10950                             (value_less (arg1, arg3)
10951                              || value_equal (arg1, arg3))
10952                             && (value_less (arg2, arg1)
10953                                 || value_equal (arg2, arg1)));
10954
10955     case OP_ATR_FIRST:
10956     case OP_ATR_LAST:
10957     case OP_ATR_LENGTH:
10958       {
10959         struct type *type_arg;
10960
10961         if (exp->elts[*pos].opcode == OP_TYPE)
10962           {
10963             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10964             arg1 = NULL;
10965             type_arg = check_typedef (exp->elts[pc + 2].type);
10966           }
10967         else
10968           {
10969             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10970             type_arg = NULL;
10971           }
10972
10973         if (exp->elts[*pos].opcode != OP_LONG)
10974           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10975         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10976         *pos += 4;
10977
10978         if (noside == EVAL_SKIP)
10979           goto nosideret;
10980         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10981           {
10982             if (type_arg == NULL)
10983               type_arg = value_type (arg1);
10984
10985             if (ada_is_constrained_packed_array_type (type_arg))
10986               type_arg = decode_constrained_packed_array_type (type_arg);
10987
10988             if (!discrete_type_p (type_arg))
10989               {
10990                 switch (op)
10991                   {
10992                   default:          /* Should never happen.  */
10993                     error (_("unexpected attribute encountered"));
10994                   case OP_ATR_FIRST:
10995                   case OP_ATR_LAST:
10996                     type_arg = ada_index_type (type_arg, tem,
10997                                                ada_attribute_name (op));
10998                     break;
10999                   case OP_ATR_LENGTH:
11000                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
11001                     break;
11002                   }
11003               }
11004
11005             return value_zero (type_arg, not_lval);
11006           }
11007         else if (type_arg == NULL)
11008           {
11009             arg1 = ada_coerce_ref (arg1);
11010
11011             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11012               arg1 = ada_coerce_to_simple_array (arg1);
11013
11014             if (op == OP_ATR_LENGTH)
11015               type = builtin_type (exp->gdbarch)->builtin_int;
11016             else
11017               {
11018                 type = ada_index_type (value_type (arg1), tem,
11019                                        ada_attribute_name (op));
11020                 if (type == NULL)
11021                   type = builtin_type (exp->gdbarch)->builtin_int;
11022               }
11023
11024             switch (op)
11025               {
11026               default:          /* Should never happen.  */
11027                 error (_("unexpected attribute encountered"));
11028               case OP_ATR_FIRST:
11029                 return value_from_longest
11030                         (type, ada_array_bound (arg1, tem, 0));
11031               case OP_ATR_LAST:
11032                 return value_from_longest
11033                         (type, ada_array_bound (arg1, tem, 1));
11034               case OP_ATR_LENGTH:
11035                 return value_from_longest
11036                         (type, ada_array_length (arg1, tem));
11037               }
11038           }
11039         else if (discrete_type_p (type_arg))
11040           {
11041             struct type *range_type;
11042             const char *name = ada_type_name (type_arg);
11043
11044             range_type = NULL;
11045             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
11046               range_type = to_fixed_range_type (type_arg, NULL);
11047             if (range_type == NULL)
11048               range_type = type_arg;
11049             switch (op)
11050               {
11051               default:
11052                 error (_("unexpected attribute encountered"));
11053               case OP_ATR_FIRST:
11054                 return value_from_longest 
11055                   (range_type, ada_discrete_type_low_bound (range_type));
11056               case OP_ATR_LAST:
11057                 return value_from_longest
11058                   (range_type, ada_discrete_type_high_bound (range_type));
11059               case OP_ATR_LENGTH:
11060                 error (_("the 'length attribute applies only to array types"));
11061               }
11062           }
11063         else if (type_arg->code () == TYPE_CODE_FLT)
11064           error (_("unimplemented type attribute"));
11065         else
11066           {
11067             LONGEST low, high;
11068
11069             if (ada_is_constrained_packed_array_type (type_arg))
11070               type_arg = decode_constrained_packed_array_type (type_arg);
11071
11072             if (op == OP_ATR_LENGTH)
11073               type = builtin_type (exp->gdbarch)->builtin_int;
11074             else
11075               {
11076                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11077                 if (type == NULL)
11078                   type = builtin_type (exp->gdbarch)->builtin_int;
11079               }
11080
11081             switch (op)
11082               {
11083               default:
11084                 error (_("unexpected attribute encountered"));
11085               case OP_ATR_FIRST:
11086                 low = ada_array_bound_from_type (type_arg, tem, 0);
11087                 return value_from_longest (type, low);
11088               case OP_ATR_LAST:
11089                 high = ada_array_bound_from_type (type_arg, tem, 1);
11090                 return value_from_longest (type, high);
11091               case OP_ATR_LENGTH:
11092                 low = ada_array_bound_from_type (type_arg, tem, 0);
11093                 high = ada_array_bound_from_type (type_arg, tem, 1);
11094                 return value_from_longest (type, high - low + 1);
11095               }
11096           }
11097       }
11098
11099     case OP_ATR_TAG:
11100       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11101       if (noside == EVAL_SKIP)
11102         goto nosideret;
11103
11104       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11105         return value_zero (ada_tag_type (arg1), not_lval);
11106
11107       return ada_value_tag (arg1);
11108
11109     case OP_ATR_MIN:
11110     case OP_ATR_MAX:
11111       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11112       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11113       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11114       if (noside == EVAL_SKIP)
11115         goto nosideret;
11116       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11117         return value_zero (value_type (arg1), not_lval);
11118       else
11119         {
11120           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11121           return value_binop (arg1, arg2,
11122                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11123         }
11124
11125     case OP_ATR_MODULUS:
11126       {
11127         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11128
11129         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11130         if (noside == EVAL_SKIP)
11131           goto nosideret;
11132
11133         if (!ada_is_modular_type (type_arg))
11134           error (_("'modulus must be applied to modular type"));
11135
11136         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11137                                    ada_modulus (type_arg));
11138       }
11139
11140
11141     case OP_ATR_POS:
11142       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11143       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11144       if (noside == EVAL_SKIP)
11145         goto nosideret;
11146       type = builtin_type (exp->gdbarch)->builtin_int;
11147       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11148         return value_zero (type, not_lval);
11149       else
11150         return value_pos_atr (type, arg1);
11151
11152     case OP_ATR_SIZE:
11153       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11154       type = value_type (arg1);
11155
11156       /* If the argument is a reference, then dereference its type, since
11157          the user is really asking for the size of the actual object,
11158          not the size of the pointer.  */
11159       if (type->code () == TYPE_CODE_REF)
11160         type = TYPE_TARGET_TYPE (type);
11161
11162       if (noside == EVAL_SKIP)
11163         goto nosideret;
11164       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11165         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11166       else
11167         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11168                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11169
11170     case OP_ATR_VAL:
11171       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11172       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11173       type = exp->elts[pc + 2].type;
11174       if (noside == EVAL_SKIP)
11175         goto nosideret;
11176       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11177         return value_zero (type, not_lval);
11178       else
11179         return value_val_atr (type, arg1);
11180
11181     case BINOP_EXP:
11182       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11183       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11184       if (noside == EVAL_SKIP)
11185         goto nosideret;
11186       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11187         return value_zero (value_type (arg1), not_lval);
11188       else
11189         {
11190           /* For integer exponentiation operations,
11191              only promote the first argument.  */
11192           if (is_integral_type (value_type (arg2)))
11193             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11194           else
11195             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11196
11197           return value_binop (arg1, arg2, op);
11198         }
11199
11200     case UNOP_PLUS:
11201       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11202       if (noside == EVAL_SKIP)
11203         goto nosideret;
11204       else
11205         return arg1;
11206
11207     case UNOP_ABS:
11208       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11209       if (noside == EVAL_SKIP)
11210         goto nosideret;
11211       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11212       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11213         return value_neg (arg1);
11214       else
11215         return arg1;
11216
11217     case UNOP_IND:
11218       preeval_pos = *pos;
11219       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11220       if (noside == EVAL_SKIP)
11221         goto nosideret;
11222       type = ada_check_typedef (value_type (arg1));
11223       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11224         {
11225           if (ada_is_array_descriptor_type (type))
11226             /* GDB allows dereferencing GNAT array descriptors.  */
11227             {
11228               struct type *arrType = ada_type_of_array (arg1, 0);
11229
11230               if (arrType == NULL)
11231                 error (_("Attempt to dereference null array pointer."));
11232               return value_at_lazy (arrType, 0);
11233             }
11234           else if (type->code () == TYPE_CODE_PTR
11235                    || type->code () == TYPE_CODE_REF
11236                    /* In C you can dereference an array to get the 1st elt.  */
11237                    || type->code () == TYPE_CODE_ARRAY)
11238             {
11239             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11240                only be determined by inspecting the object's tag.
11241                This means that we need to evaluate completely the
11242                expression in order to get its type.  */
11243
11244               if ((type->code () == TYPE_CODE_REF
11245                    || type->code () == TYPE_CODE_PTR)
11246                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11247                 {
11248                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11249                                           EVAL_NORMAL);
11250                   type = value_type (ada_value_ind (arg1));
11251                 }
11252               else
11253                 {
11254                   type = to_static_fixed_type
11255                     (ada_aligned_type
11256                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11257                 }
11258               ada_ensure_varsize_limit (type);
11259               return value_zero (type, lval_memory);
11260             }
11261           else if (type->code () == TYPE_CODE_INT)
11262             {
11263               /* GDB allows dereferencing an int.  */
11264               if (expect_type == NULL)
11265                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11266                                    lval_memory);
11267               else
11268                 {
11269                   expect_type = 
11270                     to_static_fixed_type (ada_aligned_type (expect_type));
11271                   return value_zero (expect_type, lval_memory);
11272                 }
11273             }
11274           else
11275             error (_("Attempt to take contents of a non-pointer value."));
11276         }
11277       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11278       type = ada_check_typedef (value_type (arg1));
11279
11280       if (type->code () == TYPE_CODE_INT)
11281           /* GDB allows dereferencing an int.  If we were given
11282              the expect_type, then use that as the target type.
11283              Otherwise, assume that the target type is an int.  */
11284         {
11285           if (expect_type != NULL)
11286             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11287                                               arg1));
11288           else
11289             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11290                                   (CORE_ADDR) value_as_address (arg1));
11291         }
11292
11293       if (ada_is_array_descriptor_type (type))
11294         /* GDB allows dereferencing GNAT array descriptors.  */
11295         return ada_coerce_to_simple_array (arg1);
11296       else
11297         return ada_value_ind (arg1);
11298
11299     case STRUCTOP_STRUCT:
11300       tem = longest_to_int (exp->elts[pc + 1].longconst);
11301       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11302       preeval_pos = *pos;
11303       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11304       if (noside == EVAL_SKIP)
11305         goto nosideret;
11306       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11307         {
11308           struct type *type1 = value_type (arg1);
11309
11310           if (ada_is_tagged_type (type1, 1))
11311             {
11312               type = ada_lookup_struct_elt_type (type1,
11313                                                  &exp->elts[pc + 2].string,
11314                                                  1, 1);
11315
11316               /* If the field is not found, check if it exists in the
11317                  extension of this object's type. This means that we
11318                  need to evaluate completely the expression.  */
11319
11320               if (type == NULL)
11321                 {
11322                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11323                                           EVAL_NORMAL);
11324                   arg1 = ada_value_struct_elt (arg1,
11325                                                &exp->elts[pc + 2].string,
11326                                                0);
11327                   arg1 = unwrap_value (arg1);
11328                   type = value_type (ada_to_fixed_value (arg1));
11329                 }
11330             }
11331           else
11332             type =
11333               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11334                                           0);
11335
11336           return value_zero (ada_aligned_type (type), lval_memory);
11337         }
11338       else
11339         {
11340           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11341           arg1 = unwrap_value (arg1);
11342           return ada_to_fixed_value (arg1);
11343         }
11344
11345     case OP_TYPE:
11346       /* The value is not supposed to be used.  This is here to make it
11347          easier to accommodate expressions that contain types.  */
11348       (*pos) += 2;
11349       if (noside == EVAL_SKIP)
11350         goto nosideret;
11351       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11352         return allocate_value (exp->elts[pc + 1].type);
11353       else
11354         error (_("Attempt to use a type name as an expression"));
11355
11356     case OP_AGGREGATE:
11357     case OP_CHOICES:
11358     case OP_OTHERS:
11359     case OP_DISCRETE_RANGE:
11360     case OP_POSITIONAL:
11361     case OP_NAME:
11362       if (noside == EVAL_NORMAL)
11363         switch (op) 
11364           {
11365           case OP_NAME:
11366             error (_("Undefined name, ambiguous name, or renaming used in "
11367                      "component association: %s."), &exp->elts[pc+2].string);
11368           case OP_AGGREGATE:
11369             error (_("Aggregates only allowed on the right of an assignment"));
11370           default:
11371             internal_error (__FILE__, __LINE__,
11372                             _("aggregate apparently mangled"));
11373           }
11374
11375       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11376       *pos += oplen - 1;
11377       for (tem = 0; tem < nargs; tem += 1) 
11378         ada_evaluate_subexp (NULL, exp, pos, noside);
11379       goto nosideret;
11380     }
11381
11382 nosideret:
11383   return eval_skip_value (exp);
11384 }
11385 \f
11386
11387                                 /* Fixed point */
11388
11389 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11390    type name that encodes the 'small and 'delta information.
11391    Otherwise, return NULL.  */
11392
11393 static const char *
11394 gnat_encoded_fixed_type_info (struct type *type)
11395 {
11396   const char *name = ada_type_name (type);
11397   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11398
11399   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11400     {
11401       const char *tail = strstr (name, "___XF_");
11402
11403       if (tail == NULL)
11404         return NULL;
11405       else
11406         return tail + 5;
11407     }
11408   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11409     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11410   else
11411     return NULL;
11412 }
11413
11414 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11415
11416 int
11417 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11418 {
11419   return gnat_encoded_fixed_type_info (type) != NULL;
11420 }
11421
11422 /* Return non-zero iff TYPE represents a System.Address type.  */
11423
11424 int
11425 ada_is_system_address_type (struct type *type)
11426 {
11427   return (TYPE_NAME (type)
11428           && strcmp (TYPE_NAME (type), "system__address") == 0);
11429 }
11430
11431 /* Assuming that TYPE is the representation of an Ada fixed-point
11432    type, return the target floating-point type to be used to represent
11433    of this type during internal computation.  */
11434
11435 static struct type *
11436 ada_scaling_type (struct type *type)
11437 {
11438   return builtin_type (get_type_arch (type))->builtin_long_double;
11439 }
11440
11441 /* Assuming that TYPE is the representation of an Ada fixed-point
11442    type, return its delta, or NULL if the type is malformed and the
11443    delta cannot be determined.  */
11444
11445 struct value *
11446 gnat_encoded_fixed_point_delta (struct type *type)
11447 {
11448   const char *encoding = gnat_encoded_fixed_type_info (type);
11449   struct type *scale_type = ada_scaling_type (type);
11450
11451   long long num, den;
11452
11453   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11454     return nullptr;
11455   else
11456     return value_binop (value_from_longest (scale_type, num),
11457                         value_from_longest (scale_type, den), BINOP_DIV);
11458 }
11459
11460 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11461    the scaling factor ('SMALL value) associated with the type.  */
11462
11463 struct value *
11464 ada_scaling_factor (struct type *type)
11465 {
11466   const char *encoding = gnat_encoded_fixed_type_info (type);
11467   struct type *scale_type = ada_scaling_type (type);
11468
11469   long long num0, den0, num1, den1;
11470   int n;
11471
11472   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11473               &num0, &den0, &num1, &den1);
11474
11475   if (n < 2)
11476     return value_from_longest (scale_type, 1);
11477   else if (n == 4)
11478     return value_binop (value_from_longest (scale_type, num1),
11479                         value_from_longest (scale_type, den1), BINOP_DIV);
11480   else
11481     return value_binop (value_from_longest (scale_type, num0),
11482                         value_from_longest (scale_type, den0), BINOP_DIV);
11483 }
11484
11485 \f
11486
11487                                 /* Range types */
11488
11489 /* Scan STR beginning at position K for a discriminant name, and
11490    return the value of that discriminant field of DVAL in *PX.  If
11491    PNEW_K is not null, put the position of the character beyond the
11492    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11493    not alter *PX and *PNEW_K if unsuccessful.  */
11494
11495 static int
11496 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11497                     int *pnew_k)
11498 {
11499   static char *bound_buffer = NULL;
11500   static size_t bound_buffer_len = 0;
11501   const char *pstart, *pend, *bound;
11502   struct value *bound_val;
11503
11504   if (dval == NULL || str == NULL || str[k] == '\0')
11505     return 0;
11506
11507   pstart = str + k;
11508   pend = strstr (pstart, "__");
11509   if (pend == NULL)
11510     {
11511       bound = pstart;
11512       k += strlen (bound);
11513     }
11514   else
11515     {
11516       int len = pend - pstart;
11517
11518       /* Strip __ and beyond.  */
11519       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11520       strncpy (bound_buffer, pstart, len);
11521       bound_buffer[len] = '\0';
11522
11523       bound = bound_buffer;
11524       k = pend - str;
11525     }
11526
11527   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11528   if (bound_val == NULL)
11529     return 0;
11530
11531   *px = value_as_long (bound_val);
11532   if (pnew_k != NULL)
11533     *pnew_k = k;
11534   return 1;
11535 }
11536
11537 /* Value of variable named NAME in the current environment.  If
11538    no such variable found, then if ERR_MSG is null, returns 0, and
11539    otherwise causes an error with message ERR_MSG.  */
11540
11541 static struct value *
11542 get_var_value (const char *name, const char *err_msg)
11543 {
11544   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11545
11546   std::vector<struct block_symbol> syms;
11547   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11548                                              get_selected_block (0),
11549                                              VAR_DOMAIN, &syms, 1);
11550
11551   if (nsyms != 1)
11552     {
11553       if (err_msg == NULL)
11554         return 0;
11555       else
11556         error (("%s"), err_msg);
11557     }
11558
11559   return value_of_variable (syms[0].symbol, syms[0].block);
11560 }
11561
11562 /* Value of integer variable named NAME in the current environment.
11563    If no such variable is found, returns false.  Otherwise, sets VALUE
11564    to the variable's value and returns true.  */
11565
11566 bool
11567 get_int_var_value (const char *name, LONGEST &value)
11568 {
11569   struct value *var_val = get_var_value (name, 0);
11570
11571   if (var_val == 0)
11572     return false;
11573
11574   value = value_as_long (var_val);
11575   return true;
11576 }
11577
11578
11579 /* Return a range type whose base type is that of the range type named
11580    NAME in the current environment, and whose bounds are calculated
11581    from NAME according to the GNAT range encoding conventions.
11582    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11583    corresponding range type from debug information; fall back to using it
11584    if symbol lookup fails.  If a new type must be created, allocate it
11585    like ORIG_TYPE was.  The bounds information, in general, is encoded
11586    in NAME, the base type given in the named range type.  */
11587
11588 static struct type *
11589 to_fixed_range_type (struct type *raw_type, struct value *dval)
11590 {
11591   const char *name;
11592   struct type *base_type;
11593   const char *subtype_info;
11594
11595   gdb_assert (raw_type != NULL);
11596   gdb_assert (TYPE_NAME (raw_type) != NULL);
11597
11598   if (raw_type->code () == TYPE_CODE_RANGE)
11599     base_type = TYPE_TARGET_TYPE (raw_type);
11600   else
11601     base_type = raw_type;
11602
11603   name = TYPE_NAME (raw_type);
11604   subtype_info = strstr (name, "___XD");
11605   if (subtype_info == NULL)
11606     {
11607       LONGEST L = ada_discrete_type_low_bound (raw_type);
11608       LONGEST U = ada_discrete_type_high_bound (raw_type);
11609
11610       if (L < INT_MIN || U > INT_MAX)
11611         return raw_type;
11612       else
11613         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11614                                          L, U);
11615     }
11616   else
11617     {
11618       static char *name_buf = NULL;
11619       static size_t name_len = 0;
11620       int prefix_len = subtype_info - name;
11621       LONGEST L, U;
11622       struct type *type;
11623       const char *bounds_str;
11624       int n;
11625
11626       GROW_VECT (name_buf, name_len, prefix_len + 5);
11627       strncpy (name_buf, name, prefix_len);
11628       name_buf[prefix_len] = '\0';
11629
11630       subtype_info += 5;
11631       bounds_str = strchr (subtype_info, '_');
11632       n = 1;
11633
11634       if (*subtype_info == 'L')
11635         {
11636           if (!ada_scan_number (bounds_str, n, &L, &n)
11637               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11638             return raw_type;
11639           if (bounds_str[n] == '_')
11640             n += 2;
11641           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11642             n += 1;
11643           subtype_info += 1;
11644         }
11645       else
11646         {
11647           strcpy (name_buf + prefix_len, "___L");
11648           if (!get_int_var_value (name_buf, L))
11649             {
11650               lim_warning (_("Unknown lower bound, using 1."));
11651               L = 1;
11652             }
11653         }
11654
11655       if (*subtype_info == 'U')
11656         {
11657           if (!ada_scan_number (bounds_str, n, &U, &n)
11658               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11659             return raw_type;
11660         }
11661       else
11662         {
11663           strcpy (name_buf + prefix_len, "___U");
11664           if (!get_int_var_value (name_buf, U))
11665             {
11666               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11667               U = L;
11668             }
11669         }
11670
11671       type = create_static_range_type (alloc_type_copy (raw_type),
11672                                        base_type, L, U);
11673       /* create_static_range_type alters the resulting type's length
11674          to match the size of the base_type, which is not what we want.
11675          Set it back to the original range type's length.  */
11676       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11677       type->set_name (name);
11678       return type;
11679     }
11680 }
11681
11682 /* True iff NAME is the name of a range type.  */
11683
11684 int
11685 ada_is_range_type_name (const char *name)
11686 {
11687   return (name != NULL && strstr (name, "___XD"));
11688 }
11689 \f
11690
11691                                 /* Modular types */
11692
11693 /* True iff TYPE is an Ada modular type.  */
11694
11695 int
11696 ada_is_modular_type (struct type *type)
11697 {
11698   struct type *subranged_type = get_base_type (type);
11699
11700   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11701           && subranged_type->code () == TYPE_CODE_INT
11702           && TYPE_UNSIGNED (subranged_type));
11703 }
11704
11705 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11706
11707 ULONGEST
11708 ada_modulus (struct type *type)
11709 {
11710   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11711 }
11712 \f
11713
11714 /* Ada exception catchpoint support:
11715    ---------------------------------
11716
11717    We support 3 kinds of exception catchpoints:
11718      . catchpoints on Ada exceptions
11719      . catchpoints on unhandled Ada exceptions
11720      . catchpoints on failed assertions
11721
11722    Exceptions raised during failed assertions, or unhandled exceptions
11723    could perfectly be caught with the general catchpoint on Ada exceptions.
11724    However, we can easily differentiate these two special cases, and having
11725    the option to distinguish these two cases from the rest can be useful
11726    to zero-in on certain situations.
11727
11728    Exception catchpoints are a specialized form of breakpoint,
11729    since they rely on inserting breakpoints inside known routines
11730    of the GNAT runtime.  The implementation therefore uses a standard
11731    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11732    of breakpoint_ops.
11733
11734    Support in the runtime for exception catchpoints have been changed
11735    a few times already, and these changes affect the implementation
11736    of these catchpoints.  In order to be able to support several
11737    variants of the runtime, we use a sniffer that will determine
11738    the runtime variant used by the program being debugged.  */
11739
11740 /* Ada's standard exceptions.
11741
11742    The Ada 83 standard also defined Numeric_Error.  But there so many
11743    situations where it was unclear from the Ada 83 Reference Manual
11744    (RM) whether Constraint_Error or Numeric_Error should be raised,
11745    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11746    Interpretation saying that anytime the RM says that Numeric_Error
11747    should be raised, the implementation may raise Constraint_Error.
11748    Ada 95 went one step further and pretty much removed Numeric_Error
11749    from the list of standard exceptions (it made it a renaming of
11750    Constraint_Error, to help preserve compatibility when compiling
11751    an Ada83 compiler). As such, we do not include Numeric_Error from
11752    this list of standard exceptions.  */
11753
11754 static const char *standard_exc[] = {
11755   "constraint_error",
11756   "program_error",
11757   "storage_error",
11758   "tasking_error"
11759 };
11760
11761 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11762
11763 /* A structure that describes how to support exception catchpoints
11764    for a given executable.  */
11765
11766 struct exception_support_info
11767 {
11768    /* The name of the symbol to break on in order to insert
11769       a catchpoint on exceptions.  */
11770    const char *catch_exception_sym;
11771
11772    /* The name of the symbol to break on in order to insert
11773       a catchpoint on unhandled exceptions.  */
11774    const char *catch_exception_unhandled_sym;
11775
11776    /* The name of the symbol to break on in order to insert
11777       a catchpoint on failed assertions.  */
11778    const char *catch_assert_sym;
11779
11780    /* The name of the symbol to break on in order to insert
11781       a catchpoint on exception handling.  */
11782    const char *catch_handlers_sym;
11783
11784    /* Assuming that the inferior just triggered an unhandled exception
11785       catchpoint, this function is responsible for returning the address
11786       in inferior memory where the name of that exception is stored.
11787       Return zero if the address could not be computed.  */
11788    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11789 };
11790
11791 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11792 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11793
11794 /* The following exception support info structure describes how to
11795    implement exception catchpoints with the latest version of the
11796    Ada runtime (as of 2019-08-??).  */
11797
11798 static const struct exception_support_info default_exception_support_info =
11799 {
11800   "__gnat_debug_raise_exception", /* catch_exception_sym */
11801   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11802   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11803   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11804   ada_unhandled_exception_name_addr
11805 };
11806
11807 /* The following exception support info structure describes how to
11808    implement exception catchpoints with an earlier version of the
11809    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11810
11811 static const struct exception_support_info exception_support_info_v0 =
11812 {
11813   "__gnat_debug_raise_exception", /* catch_exception_sym */
11814   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11815   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11816   "__gnat_begin_handler", /* catch_handlers_sym */
11817   ada_unhandled_exception_name_addr
11818 };
11819
11820 /* The following exception support info structure describes how to
11821    implement exception catchpoints with a slightly older version
11822    of the Ada runtime.  */
11823
11824 static const struct exception_support_info exception_support_info_fallback =
11825 {
11826   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11827   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11828   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11829   "__gnat_begin_handler", /* catch_handlers_sym */
11830   ada_unhandled_exception_name_addr_from_raise
11831 };
11832
11833 /* Return nonzero if we can detect the exception support routines
11834    described in EINFO.
11835
11836    This function errors out if an abnormal situation is detected
11837    (for instance, if we find the exception support routines, but
11838    that support is found to be incomplete).  */
11839
11840 static int
11841 ada_has_this_exception_support (const struct exception_support_info *einfo)
11842 {
11843   struct symbol *sym;
11844
11845   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11846      that should be compiled with debugging information.  As a result, we
11847      expect to find that symbol in the symtabs.  */
11848
11849   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11850   if (sym == NULL)
11851     {
11852       /* Perhaps we did not find our symbol because the Ada runtime was
11853          compiled without debugging info, or simply stripped of it.
11854          It happens on some GNU/Linux distributions for instance, where
11855          users have to install a separate debug package in order to get
11856          the runtime's debugging info.  In that situation, let the user
11857          know why we cannot insert an Ada exception catchpoint.
11858
11859          Note: Just for the purpose of inserting our Ada exception
11860          catchpoint, we could rely purely on the associated minimal symbol.
11861          But we would be operating in degraded mode anyway, since we are
11862          still lacking the debugging info needed later on to extract
11863          the name of the exception being raised (this name is printed in
11864          the catchpoint message, and is also used when trying to catch
11865          a specific exception).  We do not handle this case for now.  */
11866       struct bound_minimal_symbol msym
11867         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11868
11869       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11870         error (_("Your Ada runtime appears to be missing some debugging "
11871                  "information.\nCannot insert Ada exception catchpoint "
11872                  "in this configuration."));
11873
11874       return 0;
11875     }
11876
11877   /* Make sure that the symbol we found corresponds to a function.  */
11878
11879   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11880     {
11881       error (_("Symbol \"%s\" is not a function (class = %d)"),
11882              sym->linkage_name (), SYMBOL_CLASS (sym));
11883       return 0;
11884     }
11885
11886   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11887   if (sym == NULL)
11888     {
11889       struct bound_minimal_symbol msym
11890         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11891
11892       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11893         error (_("Your Ada runtime appears to be missing some debugging "
11894                  "information.\nCannot insert Ada exception catchpoint "
11895                  "in this configuration."));
11896
11897       return 0;
11898     }
11899
11900   /* Make sure that the symbol we found corresponds to a function.  */
11901
11902   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11903     {
11904       error (_("Symbol \"%s\" is not a function (class = %d)"),
11905              sym->linkage_name (), SYMBOL_CLASS (sym));
11906       return 0;
11907     }
11908
11909   return 1;
11910 }
11911
11912 /* Inspect the Ada runtime and determine which exception info structure
11913    should be used to provide support for exception catchpoints.
11914
11915    This function will always set the per-inferior exception_info,
11916    or raise an error.  */
11917
11918 static void
11919 ada_exception_support_info_sniffer (void)
11920 {
11921   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11922
11923   /* If the exception info is already known, then no need to recompute it.  */
11924   if (data->exception_info != NULL)
11925     return;
11926
11927   /* Check the latest (default) exception support info.  */
11928   if (ada_has_this_exception_support (&default_exception_support_info))
11929     {
11930       data->exception_info = &default_exception_support_info;
11931       return;
11932     }
11933
11934   /* Try the v0 exception suport info.  */
11935   if (ada_has_this_exception_support (&exception_support_info_v0))
11936     {
11937       data->exception_info = &exception_support_info_v0;
11938       return;
11939     }
11940
11941   /* Try our fallback exception suport info.  */
11942   if (ada_has_this_exception_support (&exception_support_info_fallback))
11943     {
11944       data->exception_info = &exception_support_info_fallback;
11945       return;
11946     }
11947
11948   /* Sometimes, it is normal for us to not be able to find the routine
11949      we are looking for.  This happens when the program is linked with
11950      the shared version of the GNAT runtime, and the program has not been
11951      started yet.  Inform the user of these two possible causes if
11952      applicable.  */
11953
11954   if (ada_update_initial_language (language_unknown) != language_ada)
11955     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11956
11957   /* If the symbol does not exist, then check that the program is
11958      already started, to make sure that shared libraries have been
11959      loaded.  If it is not started, this may mean that the symbol is
11960      in a shared library.  */
11961
11962   if (inferior_ptid.pid () == 0)
11963     error (_("Unable to insert catchpoint. Try to start the program first."));
11964
11965   /* At this point, we know that we are debugging an Ada program and
11966      that the inferior has been started, but we still are not able to
11967      find the run-time symbols.  That can mean that we are in
11968      configurable run time mode, or that a-except as been optimized
11969      out by the linker...  In any case, at this point it is not worth
11970      supporting this feature.  */
11971
11972   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11973 }
11974
11975 /* True iff FRAME is very likely to be that of a function that is
11976    part of the runtime system.  This is all very heuristic, but is
11977    intended to be used as advice as to what frames are uninteresting
11978    to most users.  */
11979
11980 static int
11981 is_known_support_routine (struct frame_info *frame)
11982 {
11983   enum language func_lang;
11984   int i;
11985   const char *fullname;
11986
11987   /* If this code does not have any debugging information (no symtab),
11988      This cannot be any user code.  */
11989
11990   symtab_and_line sal = find_frame_sal (frame);
11991   if (sal.symtab == NULL)
11992     return 1;
11993
11994   /* If there is a symtab, but the associated source file cannot be
11995      located, then assume this is not user code:  Selecting a frame
11996      for which we cannot display the code would not be very helpful
11997      for the user.  This should also take care of case such as VxWorks
11998      where the kernel has some debugging info provided for a few units.  */
11999
12000   fullname = symtab_to_fullname (sal.symtab);
12001   if (access (fullname, R_OK) != 0)
12002     return 1;
12003
12004   /* Check the unit filename against the Ada runtime file naming.
12005      We also check the name of the objfile against the name of some
12006      known system libraries that sometimes come with debugging info
12007      too.  */
12008
12009   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12010     {
12011       re_comp (known_runtime_file_name_patterns[i]);
12012       if (re_exec (lbasename (sal.symtab->filename)))
12013         return 1;
12014       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12015           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12016         return 1;
12017     }
12018
12019   /* Check whether the function is a GNAT-generated entity.  */
12020
12021   gdb::unique_xmalloc_ptr<char> func_name
12022     = find_frame_funname (frame, &func_lang, NULL);
12023   if (func_name == NULL)
12024     return 1;
12025
12026   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12027     {
12028       re_comp (known_auxiliary_function_name_patterns[i]);
12029       if (re_exec (func_name.get ()))
12030         return 1;
12031     }
12032
12033   return 0;
12034 }
12035
12036 /* Find the first frame that contains debugging information and that is not
12037    part of the Ada run-time, starting from FI and moving upward.  */
12038
12039 void
12040 ada_find_printable_frame (struct frame_info *fi)
12041 {
12042   for (; fi != NULL; fi = get_prev_frame (fi))
12043     {
12044       if (!is_known_support_routine (fi))
12045         {
12046           select_frame (fi);
12047           break;
12048         }
12049     }
12050
12051 }
12052
12053 /* Assuming that the inferior just triggered an unhandled exception
12054    catchpoint, return the address in inferior memory where the name
12055    of the exception is stored.
12056    
12057    Return zero if the address could not be computed.  */
12058
12059 static CORE_ADDR
12060 ada_unhandled_exception_name_addr (void)
12061 {
12062   return parse_and_eval_address ("e.full_name");
12063 }
12064
12065 /* Same as ada_unhandled_exception_name_addr, except that this function
12066    should be used when the inferior uses an older version of the runtime,
12067    where the exception name needs to be extracted from a specific frame
12068    several frames up in the callstack.  */
12069
12070 static CORE_ADDR
12071 ada_unhandled_exception_name_addr_from_raise (void)
12072 {
12073   int frame_level;
12074   struct frame_info *fi;
12075   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12076
12077   /* To determine the name of this exception, we need to select
12078      the frame corresponding to RAISE_SYM_NAME.  This frame is
12079      at least 3 levels up, so we simply skip the first 3 frames
12080      without checking the name of their associated function.  */
12081   fi = get_current_frame ();
12082   for (frame_level = 0; frame_level < 3; frame_level += 1)
12083     if (fi != NULL)
12084       fi = get_prev_frame (fi); 
12085
12086   while (fi != NULL)
12087     {
12088       enum language func_lang;
12089
12090       gdb::unique_xmalloc_ptr<char> func_name
12091         = find_frame_funname (fi, &func_lang, NULL);
12092       if (func_name != NULL)
12093         {
12094           if (strcmp (func_name.get (),
12095                       data->exception_info->catch_exception_sym) == 0)
12096             break; /* We found the frame we were looking for...  */
12097         }
12098       fi = get_prev_frame (fi);
12099     }
12100
12101   if (fi == NULL)
12102     return 0;
12103
12104   select_frame (fi);
12105   return parse_and_eval_address ("id.full_name");
12106 }
12107
12108 /* Assuming the inferior just triggered an Ada exception catchpoint
12109    (of any type), return the address in inferior memory where the name
12110    of the exception is stored, if applicable.
12111
12112    Assumes the selected frame is the current frame.
12113
12114    Return zero if the address could not be computed, or if not relevant.  */
12115
12116 static CORE_ADDR
12117 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12118                            struct breakpoint *b)
12119 {
12120   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12121
12122   switch (ex)
12123     {
12124       case ada_catch_exception:
12125         return (parse_and_eval_address ("e.full_name"));
12126         break;
12127
12128       case ada_catch_exception_unhandled:
12129         return data->exception_info->unhandled_exception_name_addr ();
12130         break;
12131
12132       case ada_catch_handlers:
12133         return 0;  /* The runtimes does not provide access to the exception
12134                       name.  */
12135         break;
12136
12137       case ada_catch_assert:
12138         return 0;  /* Exception name is not relevant in this case.  */
12139         break;
12140
12141       default:
12142         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12143         break;
12144     }
12145
12146   return 0; /* Should never be reached.  */
12147 }
12148
12149 /* Assuming the inferior is stopped at an exception catchpoint,
12150    return the message which was associated to the exception, if
12151    available.  Return NULL if the message could not be retrieved.
12152
12153    Note: The exception message can be associated to an exception
12154    either through the use of the Raise_Exception function, or
12155    more simply (Ada 2005 and later), via:
12156
12157        raise Exception_Name with "exception message";
12158
12159    */
12160
12161 static gdb::unique_xmalloc_ptr<char>
12162 ada_exception_message_1 (void)
12163 {
12164   struct value *e_msg_val;
12165   int e_msg_len;
12166
12167   /* For runtimes that support this feature, the exception message
12168      is passed as an unbounded string argument called "message".  */
12169   e_msg_val = parse_and_eval ("message");
12170   if (e_msg_val == NULL)
12171     return NULL; /* Exception message not supported.  */
12172
12173   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12174   gdb_assert (e_msg_val != NULL);
12175   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12176
12177   /* If the message string is empty, then treat it as if there was
12178      no exception message.  */
12179   if (e_msg_len <= 0)
12180     return NULL;
12181
12182   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12183   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12184   e_msg.get ()[e_msg_len] = '\0';
12185
12186   return e_msg;
12187 }
12188
12189 /* Same as ada_exception_message_1, except that all exceptions are
12190    contained here (returning NULL instead).  */
12191
12192 static gdb::unique_xmalloc_ptr<char>
12193 ada_exception_message (void)
12194 {
12195   gdb::unique_xmalloc_ptr<char> e_msg;
12196
12197   try
12198     {
12199       e_msg = ada_exception_message_1 ();
12200     }
12201   catch (const gdb_exception_error &e)
12202     {
12203       e_msg.reset (nullptr);
12204     }
12205
12206   return e_msg;
12207 }
12208
12209 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12210    any error that ada_exception_name_addr_1 might cause to be thrown.
12211    When an error is intercepted, a warning with the error message is printed,
12212    and zero is returned.  */
12213
12214 static CORE_ADDR
12215 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12216                          struct breakpoint *b)
12217 {
12218   CORE_ADDR result = 0;
12219
12220   try
12221     {
12222       result = ada_exception_name_addr_1 (ex, b);
12223     }
12224
12225   catch (const gdb_exception_error &e)
12226     {
12227       warning (_("failed to get exception name: %s"), e.what ());
12228       return 0;
12229     }
12230
12231   return result;
12232 }
12233
12234 static std::string ada_exception_catchpoint_cond_string
12235   (const char *excep_string,
12236    enum ada_exception_catchpoint_kind ex);
12237
12238 /* Ada catchpoints.
12239
12240    In the case of catchpoints on Ada exceptions, the catchpoint will
12241    stop the target on every exception the program throws.  When a user
12242    specifies the name of a specific exception, we translate this
12243    request into a condition expression (in text form), and then parse
12244    it into an expression stored in each of the catchpoint's locations.
12245    We then use this condition to check whether the exception that was
12246    raised is the one the user is interested in.  If not, then the
12247    target is resumed again.  We store the name of the requested
12248    exception, in order to be able to re-set the condition expression
12249    when symbols change.  */
12250
12251 /* An instance of this type is used to represent an Ada catchpoint
12252    breakpoint location.  */
12253
12254 class ada_catchpoint_location : public bp_location
12255 {
12256 public:
12257   ada_catchpoint_location (breakpoint *owner)
12258     : bp_location (owner, bp_loc_software_breakpoint)
12259   {}
12260
12261   /* The condition that checks whether the exception that was raised
12262      is the specific exception the user specified on catchpoint
12263      creation.  */
12264   expression_up excep_cond_expr;
12265 };
12266
12267 /* An instance of this type is used to represent an Ada catchpoint.  */
12268
12269 struct ada_catchpoint : public breakpoint
12270 {
12271   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12272     : m_kind (kind)
12273   {
12274   }
12275
12276   /* The name of the specific exception the user specified.  */
12277   std::string excep_string;
12278
12279   /* What kind of catchpoint this is.  */
12280   enum ada_exception_catchpoint_kind m_kind;
12281 };
12282
12283 /* Parse the exception condition string in the context of each of the
12284    catchpoint's locations, and store them for later evaluation.  */
12285
12286 static void
12287 create_excep_cond_exprs (struct ada_catchpoint *c,
12288                          enum ada_exception_catchpoint_kind ex)
12289 {
12290   struct bp_location *bl;
12291
12292   /* Nothing to do if there's no specific exception to catch.  */
12293   if (c->excep_string.empty ())
12294     return;
12295
12296   /* Same if there are no locations... */
12297   if (c->loc == NULL)
12298     return;
12299
12300   /* Compute the condition expression in text form, from the specific
12301      expection we want to catch.  */
12302   std::string cond_string
12303     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12304
12305   /* Iterate over all the catchpoint's locations, and parse an
12306      expression for each.  */
12307   for (bl = c->loc; bl != NULL; bl = bl->next)
12308     {
12309       struct ada_catchpoint_location *ada_loc
12310         = (struct ada_catchpoint_location *) bl;
12311       expression_up exp;
12312
12313       if (!bl->shlib_disabled)
12314         {
12315           const char *s;
12316
12317           s = cond_string.c_str ();
12318           try
12319             {
12320               exp = parse_exp_1 (&s, bl->address,
12321                                  block_for_pc (bl->address),
12322                                  0);
12323             }
12324           catch (const gdb_exception_error &e)
12325             {
12326               warning (_("failed to reevaluate internal exception condition "
12327                          "for catchpoint %d: %s"),
12328                        c->number, e.what ());
12329             }
12330         }
12331
12332       ada_loc->excep_cond_expr = std::move (exp);
12333     }
12334 }
12335
12336 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12337    structure for all exception catchpoint kinds.  */
12338
12339 static struct bp_location *
12340 allocate_location_exception (struct breakpoint *self)
12341 {
12342   return new ada_catchpoint_location (self);
12343 }
12344
12345 /* Implement the RE_SET method in the breakpoint_ops structure for all
12346    exception catchpoint kinds.  */
12347
12348 static void
12349 re_set_exception (struct breakpoint *b)
12350 {
12351   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12352
12353   /* Call the base class's method.  This updates the catchpoint's
12354      locations.  */
12355   bkpt_breakpoint_ops.re_set (b);
12356
12357   /* Reparse the exception conditional expressions.  One for each
12358      location.  */
12359   create_excep_cond_exprs (c, c->m_kind);
12360 }
12361
12362 /* Returns true if we should stop for this breakpoint hit.  If the
12363    user specified a specific exception, we only want to cause a stop
12364    if the program thrown that exception.  */
12365
12366 static int
12367 should_stop_exception (const struct bp_location *bl)
12368 {
12369   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12370   const struct ada_catchpoint_location *ada_loc
12371     = (const struct ada_catchpoint_location *) bl;
12372   int stop;
12373
12374   struct internalvar *var = lookup_internalvar ("_ada_exception");
12375   if (c->m_kind == ada_catch_assert)
12376     clear_internalvar (var);
12377   else
12378     {
12379       try
12380         {
12381           const char *expr;
12382
12383           if (c->m_kind == ada_catch_handlers)
12384             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12385                     ".all.occurrence.id");
12386           else
12387             expr = "e";
12388
12389           struct value *exc = parse_and_eval (expr);
12390           set_internalvar (var, exc);
12391         }
12392       catch (const gdb_exception_error &ex)
12393         {
12394           clear_internalvar (var);
12395         }
12396     }
12397
12398   /* With no specific exception, should always stop.  */
12399   if (c->excep_string.empty ())
12400     return 1;
12401
12402   if (ada_loc->excep_cond_expr == NULL)
12403     {
12404       /* We will have a NULL expression if back when we were creating
12405          the expressions, this location's had failed to parse.  */
12406       return 1;
12407     }
12408
12409   stop = 1;
12410   try
12411     {
12412       struct value *mark;
12413
12414       mark = value_mark ();
12415       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12416       value_free_to_mark (mark);
12417     }
12418   catch (const gdb_exception &ex)
12419     {
12420       exception_fprintf (gdb_stderr, ex,
12421                          _("Error in testing exception condition:\n"));
12422     }
12423
12424   return stop;
12425 }
12426
12427 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12428    for all exception catchpoint kinds.  */
12429
12430 static void
12431 check_status_exception (bpstat bs)
12432 {
12433   bs->stop = should_stop_exception (bs->bp_location_at);
12434 }
12435
12436 /* Implement the PRINT_IT method in the breakpoint_ops structure
12437    for all exception catchpoint kinds.  */
12438
12439 static enum print_stop_action
12440 print_it_exception (bpstat bs)
12441 {
12442   struct ui_out *uiout = current_uiout;
12443   struct breakpoint *b = bs->breakpoint_at;
12444
12445   annotate_catchpoint (b->number);
12446
12447   if (uiout->is_mi_like_p ())
12448     {
12449       uiout->field_string ("reason",
12450                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12451       uiout->field_string ("disp", bpdisp_text (b->disposition));
12452     }
12453
12454   uiout->text (b->disposition == disp_del
12455                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12456   uiout->field_signed ("bkptno", b->number);
12457   uiout->text (", ");
12458
12459   /* ada_exception_name_addr relies on the selected frame being the
12460      current frame.  Need to do this here because this function may be
12461      called more than once when printing a stop, and below, we'll
12462      select the first frame past the Ada run-time (see
12463      ada_find_printable_frame).  */
12464   select_frame (get_current_frame ());
12465
12466   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12467   switch (c->m_kind)
12468     {
12469       case ada_catch_exception:
12470       case ada_catch_exception_unhandled:
12471       case ada_catch_handlers:
12472         {
12473           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12474           char exception_name[256];
12475
12476           if (addr != 0)
12477             {
12478               read_memory (addr, (gdb_byte *) exception_name,
12479                            sizeof (exception_name) - 1);
12480               exception_name [sizeof (exception_name) - 1] = '\0';
12481             }
12482           else
12483             {
12484               /* For some reason, we were unable to read the exception
12485                  name.  This could happen if the Runtime was compiled
12486                  without debugging info, for instance.  In that case,
12487                  just replace the exception name by the generic string
12488                  "exception" - it will read as "an exception" in the
12489                  notification we are about to print.  */
12490               memcpy (exception_name, "exception", sizeof ("exception"));
12491             }
12492           /* In the case of unhandled exception breakpoints, we print
12493              the exception name as "unhandled EXCEPTION_NAME", to make
12494              it clearer to the user which kind of catchpoint just got
12495              hit.  We used ui_out_text to make sure that this extra
12496              info does not pollute the exception name in the MI case.  */
12497           if (c->m_kind == ada_catch_exception_unhandled)
12498             uiout->text ("unhandled ");
12499           uiout->field_string ("exception-name", exception_name);
12500         }
12501         break;
12502       case ada_catch_assert:
12503         /* In this case, the name of the exception is not really
12504            important.  Just print "failed assertion" to make it clearer
12505            that his program just hit an assertion-failure catchpoint.
12506            We used ui_out_text because this info does not belong in
12507            the MI output.  */
12508         uiout->text ("failed assertion");
12509         break;
12510     }
12511
12512   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12513   if (exception_message != NULL)
12514     {
12515       uiout->text (" (");
12516       uiout->field_string ("exception-message", exception_message.get ());
12517       uiout->text (")");
12518     }
12519
12520   uiout->text (" at ");
12521   ada_find_printable_frame (get_current_frame ());
12522
12523   return PRINT_SRC_AND_LOC;
12524 }
12525
12526 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12527    for all exception catchpoint kinds.  */
12528
12529 static void
12530 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12531
12532   struct ui_out *uiout = current_uiout;
12533   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12534   struct value_print_options opts;
12535
12536   get_user_print_options (&opts);
12537
12538   if (opts.addressprint)
12539     uiout->field_skip ("addr");
12540
12541   annotate_field (5);
12542   switch (c->m_kind)
12543     {
12544       case ada_catch_exception:
12545         if (!c->excep_string.empty ())
12546           {
12547             std::string msg = string_printf (_("`%s' Ada exception"),
12548                                              c->excep_string.c_str ());
12549
12550             uiout->field_string ("what", msg);
12551           }
12552         else
12553           uiout->field_string ("what", "all Ada exceptions");
12554         
12555         break;
12556
12557       case ada_catch_exception_unhandled:
12558         uiout->field_string ("what", "unhandled Ada exceptions");
12559         break;
12560       
12561       case ada_catch_handlers:
12562         if (!c->excep_string.empty ())
12563           {
12564             uiout->field_fmt ("what",
12565                               _("`%s' Ada exception handlers"),
12566                               c->excep_string.c_str ());
12567           }
12568         else
12569           uiout->field_string ("what", "all Ada exceptions handlers");
12570         break;
12571
12572       case ada_catch_assert:
12573         uiout->field_string ("what", "failed Ada assertions");
12574         break;
12575
12576       default:
12577         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12578         break;
12579     }
12580 }
12581
12582 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12583    for all exception catchpoint kinds.  */
12584
12585 static void
12586 print_mention_exception (struct breakpoint *b)
12587 {
12588   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12589   struct ui_out *uiout = current_uiout;
12590
12591   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12592                                                  : _("Catchpoint "));
12593   uiout->field_signed ("bkptno", b->number);
12594   uiout->text (": ");
12595
12596   switch (c->m_kind)
12597     {
12598       case ada_catch_exception:
12599         if (!c->excep_string.empty ())
12600           {
12601             std::string info = string_printf (_("`%s' Ada exception"),
12602                                               c->excep_string.c_str ());
12603             uiout->text (info.c_str ());
12604           }
12605         else
12606           uiout->text (_("all Ada exceptions"));
12607         break;
12608
12609       case ada_catch_exception_unhandled:
12610         uiout->text (_("unhandled Ada exceptions"));
12611         break;
12612
12613       case ada_catch_handlers:
12614         if (!c->excep_string.empty ())
12615           {
12616             std::string info
12617               = string_printf (_("`%s' Ada exception handlers"),
12618                                c->excep_string.c_str ());
12619             uiout->text (info.c_str ());
12620           }
12621         else
12622           uiout->text (_("all Ada exceptions handlers"));
12623         break;
12624
12625       case ada_catch_assert:
12626         uiout->text (_("failed Ada assertions"));
12627         break;
12628
12629       default:
12630         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12631         break;
12632     }
12633 }
12634
12635 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12636    for all exception catchpoint kinds.  */
12637
12638 static void
12639 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12640 {
12641   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12642
12643   switch (c->m_kind)
12644     {
12645       case ada_catch_exception:
12646         fprintf_filtered (fp, "catch exception");
12647         if (!c->excep_string.empty ())
12648           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12649         break;
12650
12651       case ada_catch_exception_unhandled:
12652         fprintf_filtered (fp, "catch exception unhandled");
12653         break;
12654
12655       case ada_catch_handlers:
12656         fprintf_filtered (fp, "catch handlers");
12657         break;
12658
12659       case ada_catch_assert:
12660         fprintf_filtered (fp, "catch assert");
12661         break;
12662
12663       default:
12664         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12665     }
12666   print_recreate_thread (b, fp);
12667 }
12668
12669 /* Virtual tables for various breakpoint types.  */
12670 static struct breakpoint_ops catch_exception_breakpoint_ops;
12671 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12672 static struct breakpoint_ops catch_assert_breakpoint_ops;
12673 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12674
12675 /* See ada-lang.h.  */
12676
12677 bool
12678 is_ada_exception_catchpoint (breakpoint *bp)
12679 {
12680   return (bp->ops == &catch_exception_breakpoint_ops
12681           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12682           || bp->ops == &catch_assert_breakpoint_ops
12683           || bp->ops == &catch_handlers_breakpoint_ops);
12684 }
12685
12686 /* Split the arguments specified in a "catch exception" command.  
12687    Set EX to the appropriate catchpoint type.
12688    Set EXCEP_STRING to the name of the specific exception if
12689    specified by the user.
12690    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12691    "catch handlers" command.  False otherwise.
12692    If a condition is found at the end of the arguments, the condition
12693    expression is stored in COND_STRING (memory must be deallocated
12694    after use).  Otherwise COND_STRING is set to NULL.  */
12695
12696 static void
12697 catch_ada_exception_command_split (const char *args,
12698                                    bool is_catch_handlers_cmd,
12699                                    enum ada_exception_catchpoint_kind *ex,
12700                                    std::string *excep_string,
12701                                    std::string *cond_string)
12702 {
12703   std::string exception_name;
12704
12705   exception_name = extract_arg (&args);
12706   if (exception_name == "if")
12707     {
12708       /* This is not an exception name; this is the start of a condition
12709          expression for a catchpoint on all exceptions.  So, "un-get"
12710          this token, and set exception_name to NULL.  */
12711       exception_name.clear ();
12712       args -= 2;
12713     }
12714
12715   /* Check to see if we have a condition.  */
12716
12717   args = skip_spaces (args);
12718   if (startswith (args, "if")
12719       && (isspace (args[2]) || args[2] == '\0'))
12720     {
12721       args += 2;
12722       args = skip_spaces (args);
12723
12724       if (args[0] == '\0')
12725         error (_("Condition missing after `if' keyword"));
12726       *cond_string = args;
12727
12728       args += strlen (args);
12729     }
12730
12731   /* Check that we do not have any more arguments.  Anything else
12732      is unexpected.  */
12733
12734   if (args[0] != '\0')
12735     error (_("Junk at end of expression"));
12736
12737   if (is_catch_handlers_cmd)
12738     {
12739       /* Catch handling of exceptions.  */
12740       *ex = ada_catch_handlers;
12741       *excep_string = exception_name;
12742     }
12743   else if (exception_name.empty ())
12744     {
12745       /* Catch all exceptions.  */
12746       *ex = ada_catch_exception;
12747       excep_string->clear ();
12748     }
12749   else if (exception_name == "unhandled")
12750     {
12751       /* Catch unhandled exceptions.  */
12752       *ex = ada_catch_exception_unhandled;
12753       excep_string->clear ();
12754     }
12755   else
12756     {
12757       /* Catch a specific exception.  */
12758       *ex = ada_catch_exception;
12759       *excep_string = exception_name;
12760     }
12761 }
12762
12763 /* Return the name of the symbol on which we should break in order to
12764    implement a catchpoint of the EX kind.  */
12765
12766 static const char *
12767 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12768 {
12769   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12770
12771   gdb_assert (data->exception_info != NULL);
12772
12773   switch (ex)
12774     {
12775       case ada_catch_exception:
12776         return (data->exception_info->catch_exception_sym);
12777         break;
12778       case ada_catch_exception_unhandled:
12779         return (data->exception_info->catch_exception_unhandled_sym);
12780         break;
12781       case ada_catch_assert:
12782         return (data->exception_info->catch_assert_sym);
12783         break;
12784       case ada_catch_handlers:
12785         return (data->exception_info->catch_handlers_sym);
12786         break;
12787       default:
12788         internal_error (__FILE__, __LINE__,
12789                         _("unexpected catchpoint kind (%d)"), ex);
12790     }
12791 }
12792
12793 /* Return the breakpoint ops "virtual table" used for catchpoints
12794    of the EX kind.  */
12795
12796 static const struct breakpoint_ops *
12797 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12798 {
12799   switch (ex)
12800     {
12801       case ada_catch_exception:
12802         return (&catch_exception_breakpoint_ops);
12803         break;
12804       case ada_catch_exception_unhandled:
12805         return (&catch_exception_unhandled_breakpoint_ops);
12806         break;
12807       case ada_catch_assert:
12808         return (&catch_assert_breakpoint_ops);
12809         break;
12810       case ada_catch_handlers:
12811         return (&catch_handlers_breakpoint_ops);
12812         break;
12813       default:
12814         internal_error (__FILE__, __LINE__,
12815                         _("unexpected catchpoint kind (%d)"), ex);
12816     }
12817 }
12818
12819 /* Return the condition that will be used to match the current exception
12820    being raised with the exception that the user wants to catch.  This
12821    assumes that this condition is used when the inferior just triggered
12822    an exception catchpoint.
12823    EX: the type of catchpoints used for catching Ada exceptions.  */
12824
12825 static std::string
12826 ada_exception_catchpoint_cond_string (const char *excep_string,
12827                                       enum ada_exception_catchpoint_kind ex)
12828 {
12829   int i;
12830   bool is_standard_exc = false;
12831   std::string result;
12832
12833   if (ex == ada_catch_handlers)
12834     {
12835       /* For exception handlers catchpoints, the condition string does
12836          not use the same parameter as for the other exceptions.  */
12837       result = ("long_integer (GNAT_GCC_exception_Access"
12838                 "(gcc_exception).all.occurrence.id)");
12839     }
12840   else
12841     result = "long_integer (e)";
12842
12843   /* The standard exceptions are a special case.  They are defined in
12844      runtime units that have been compiled without debugging info; if
12845      EXCEP_STRING is the not-fully-qualified name of a standard
12846      exception (e.g. "constraint_error") then, during the evaluation
12847      of the condition expression, the symbol lookup on this name would
12848      *not* return this standard exception.  The catchpoint condition
12849      may then be set only on user-defined exceptions which have the
12850      same not-fully-qualified name (e.g. my_package.constraint_error).
12851
12852      To avoid this unexcepted behavior, these standard exceptions are
12853      systematically prefixed by "standard".  This means that "catch
12854      exception constraint_error" is rewritten into "catch exception
12855      standard.constraint_error".
12856
12857      If an exception named constraint_error is defined in another package of
12858      the inferior program, then the only way to specify this exception as a
12859      breakpoint condition is to use its fully-qualified named:
12860      e.g. my_package.constraint_error.  */
12861
12862   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12863     {
12864       if (strcmp (standard_exc [i], excep_string) == 0)
12865         {
12866           is_standard_exc = true;
12867           break;
12868         }
12869     }
12870
12871   result += " = ";
12872
12873   if (is_standard_exc)
12874     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12875   else
12876     string_appendf (result, "long_integer (&%s)", excep_string);
12877
12878   return result;
12879 }
12880
12881 /* Return the symtab_and_line that should be used to insert an exception
12882    catchpoint of the TYPE kind.
12883
12884    ADDR_STRING returns the name of the function where the real
12885    breakpoint that implements the catchpoints is set, depending on the
12886    type of catchpoint we need to create.  */
12887
12888 static struct symtab_and_line
12889 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12890                    std::string *addr_string, const struct breakpoint_ops **ops)
12891 {
12892   const char *sym_name;
12893   struct symbol *sym;
12894
12895   /* First, find out which exception support info to use.  */
12896   ada_exception_support_info_sniffer ();
12897
12898   /* Then lookup the function on which we will break in order to catch
12899      the Ada exceptions requested by the user.  */
12900   sym_name = ada_exception_sym_name (ex);
12901   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12902
12903   if (sym == NULL)
12904     error (_("Catchpoint symbol not found: %s"), sym_name);
12905
12906   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12907     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12908
12909   /* Set ADDR_STRING.  */
12910   *addr_string = sym_name;
12911
12912   /* Set OPS.  */
12913   *ops = ada_exception_breakpoint_ops (ex);
12914
12915   return find_function_start_sal (sym, 1);
12916 }
12917
12918 /* Create an Ada exception catchpoint.
12919
12920    EX_KIND is the kind of exception catchpoint to be created.
12921
12922    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12923    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12924    of the exception to which this catchpoint applies.
12925
12926    COND_STRING, if not empty, is the catchpoint condition.
12927
12928    TEMPFLAG, if nonzero, means that the underlying breakpoint
12929    should be temporary.
12930
12931    FROM_TTY is the usual argument passed to all commands implementations.  */
12932
12933 void
12934 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12935                                  enum ada_exception_catchpoint_kind ex_kind,
12936                                  const std::string &excep_string,
12937                                  const std::string &cond_string,
12938                                  int tempflag,
12939                                  int disabled,
12940                                  int from_tty)
12941 {
12942   std::string addr_string;
12943   const struct breakpoint_ops *ops = NULL;
12944   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12945
12946   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12947   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12948                                  ops, tempflag, disabled, from_tty);
12949   c->excep_string = excep_string;
12950   create_excep_cond_exprs (c.get (), ex_kind);
12951   if (!cond_string.empty ())
12952     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12953   install_breakpoint (0, std::move (c), 1);
12954 }
12955
12956 /* Implement the "catch exception" command.  */
12957
12958 static void
12959 catch_ada_exception_command (const char *arg_entry, int from_tty,
12960                              struct cmd_list_element *command)
12961 {
12962   const char *arg = arg_entry;
12963   struct gdbarch *gdbarch = get_current_arch ();
12964   int tempflag;
12965   enum ada_exception_catchpoint_kind ex_kind;
12966   std::string excep_string;
12967   std::string cond_string;
12968
12969   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12970
12971   if (!arg)
12972     arg = "";
12973   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12974                                      &cond_string);
12975   create_ada_exception_catchpoint (gdbarch, ex_kind,
12976                                    excep_string, cond_string,
12977                                    tempflag, 1 /* enabled */,
12978                                    from_tty);
12979 }
12980
12981 /* Implement the "catch handlers" command.  */
12982
12983 static void
12984 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12985                             struct cmd_list_element *command)
12986 {
12987   const char *arg = arg_entry;
12988   struct gdbarch *gdbarch = get_current_arch ();
12989   int tempflag;
12990   enum ada_exception_catchpoint_kind ex_kind;
12991   std::string excep_string;
12992   std::string cond_string;
12993
12994   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12995
12996   if (!arg)
12997     arg = "";
12998   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12999                                      &cond_string);
13000   create_ada_exception_catchpoint (gdbarch, ex_kind,
13001                                    excep_string, cond_string,
13002                                    tempflag, 1 /* enabled */,
13003                                    from_tty);
13004 }
13005
13006 /* Completion function for the Ada "catch" commands.  */
13007
13008 static void
13009 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
13010                      const char *text, const char *word)
13011 {
13012   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
13013
13014   for (const ada_exc_info &info : exceptions)
13015     {
13016       if (startswith (info.name, word))
13017         tracker.add_completion (make_unique_xstrdup (info.name));
13018     }
13019 }
13020
13021 /* Split the arguments specified in a "catch assert" command.
13022
13023    ARGS contains the command's arguments (or the empty string if
13024    no arguments were passed).
13025
13026    If ARGS contains a condition, set COND_STRING to that condition
13027    (the memory needs to be deallocated after use).  */
13028
13029 static void
13030 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13031 {
13032   args = skip_spaces (args);
13033
13034   /* Check whether a condition was provided.  */
13035   if (startswith (args, "if")
13036       && (isspace (args[2]) || args[2] == '\0'))
13037     {
13038       args += 2;
13039       args = skip_spaces (args);
13040       if (args[0] == '\0')
13041         error (_("condition missing after `if' keyword"));
13042       cond_string.assign (args);
13043     }
13044
13045   /* Otherwise, there should be no other argument at the end of
13046      the command.  */
13047   else if (args[0] != '\0')
13048     error (_("Junk at end of arguments."));
13049 }
13050
13051 /* Implement the "catch assert" command.  */
13052
13053 static void
13054 catch_assert_command (const char *arg_entry, int from_tty,
13055                       struct cmd_list_element *command)
13056 {
13057   const char *arg = arg_entry;
13058   struct gdbarch *gdbarch = get_current_arch ();
13059   int tempflag;
13060   std::string cond_string;
13061
13062   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13063
13064   if (!arg)
13065     arg = "";
13066   catch_ada_assert_command_split (arg, cond_string);
13067   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13068                                    "", cond_string,
13069                                    tempflag, 1 /* enabled */,
13070                                    from_tty);
13071 }
13072
13073 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13074
13075 static int
13076 ada_is_exception_sym (struct symbol *sym)
13077 {
13078   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13079
13080   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13081           && SYMBOL_CLASS (sym) != LOC_BLOCK
13082           && SYMBOL_CLASS (sym) != LOC_CONST
13083           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13084           && type_name != NULL && strcmp (type_name, "exception") == 0);
13085 }
13086
13087 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13088    Ada exception object.  This matches all exceptions except the ones
13089    defined by the Ada language.  */
13090
13091 static int
13092 ada_is_non_standard_exception_sym (struct symbol *sym)
13093 {
13094   int i;
13095
13096   if (!ada_is_exception_sym (sym))
13097     return 0;
13098
13099   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13100     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
13101       return 0;  /* A standard exception.  */
13102
13103   /* Numeric_Error is also a standard exception, so exclude it.
13104      See the STANDARD_EXC description for more details as to why
13105      this exception is not listed in that array.  */
13106   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
13107     return 0;
13108
13109   return 1;
13110 }
13111
13112 /* A helper function for std::sort, comparing two struct ada_exc_info
13113    objects.
13114
13115    The comparison is determined first by exception name, and then
13116    by exception address.  */
13117
13118 bool
13119 ada_exc_info::operator< (const ada_exc_info &other) const
13120 {
13121   int result;
13122
13123   result = strcmp (name, other.name);
13124   if (result < 0)
13125     return true;
13126   if (result == 0 && addr < other.addr)
13127     return true;
13128   return false;
13129 }
13130
13131 bool
13132 ada_exc_info::operator== (const ada_exc_info &other) const
13133 {
13134   return addr == other.addr && strcmp (name, other.name) == 0;
13135 }
13136
13137 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13138    routine, but keeping the first SKIP elements untouched.
13139
13140    All duplicates are also removed.  */
13141
13142 static void
13143 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13144                                       int skip)
13145 {
13146   std::sort (exceptions->begin () + skip, exceptions->end ());
13147   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13148                      exceptions->end ());
13149 }
13150
13151 /* Add all exceptions defined by the Ada standard whose name match
13152    a regular expression.
13153
13154    If PREG is not NULL, then this regexp_t object is used to
13155    perform the symbol name matching.  Otherwise, no name-based
13156    filtering is performed.
13157
13158    EXCEPTIONS is a vector of exceptions to which matching exceptions
13159    gets pushed.  */
13160
13161 static void
13162 ada_add_standard_exceptions (compiled_regex *preg,
13163                              std::vector<ada_exc_info> *exceptions)
13164 {
13165   int i;
13166
13167   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13168     {
13169       if (preg == NULL
13170           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13171         {
13172           struct bound_minimal_symbol msymbol
13173             = ada_lookup_simple_minsym (standard_exc[i]);
13174
13175           if (msymbol.minsym != NULL)
13176             {
13177               struct ada_exc_info info
13178                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13179
13180               exceptions->push_back (info);
13181             }
13182         }
13183     }
13184 }
13185
13186 /* Add all Ada exceptions defined locally and accessible from the given
13187    FRAME.
13188
13189    If PREG is not NULL, then this regexp_t object is used to
13190    perform the symbol name matching.  Otherwise, no name-based
13191    filtering is performed.
13192
13193    EXCEPTIONS is a vector of exceptions to which matching exceptions
13194    gets pushed.  */
13195
13196 static void
13197 ada_add_exceptions_from_frame (compiled_regex *preg,
13198                                struct frame_info *frame,
13199                                std::vector<ada_exc_info> *exceptions)
13200 {
13201   const struct block *block = get_frame_block (frame, 0);
13202
13203   while (block != 0)
13204     {
13205       struct block_iterator iter;
13206       struct symbol *sym;
13207
13208       ALL_BLOCK_SYMBOLS (block, iter, sym)
13209         {
13210           switch (SYMBOL_CLASS (sym))
13211             {
13212             case LOC_TYPEDEF:
13213             case LOC_BLOCK:
13214             case LOC_CONST:
13215               break;
13216             default:
13217               if (ada_is_exception_sym (sym))
13218                 {
13219                   struct ada_exc_info info = {sym->print_name (),
13220                                               SYMBOL_VALUE_ADDRESS (sym)};
13221
13222                   exceptions->push_back (info);
13223                 }
13224             }
13225         }
13226       if (BLOCK_FUNCTION (block) != NULL)
13227         break;
13228       block = BLOCK_SUPERBLOCK (block);
13229     }
13230 }
13231
13232 /* Return true if NAME matches PREG or if PREG is NULL.  */
13233
13234 static bool
13235 name_matches_regex (const char *name, compiled_regex *preg)
13236 {
13237   return (preg == NULL
13238           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
13239 }
13240
13241 /* Add all exceptions defined globally whose name name match
13242    a regular expression, excluding standard exceptions.
13243
13244    The reason we exclude standard exceptions is that they need
13245    to be handled separately: Standard exceptions are defined inside
13246    a runtime unit which is normally not compiled with debugging info,
13247    and thus usually do not show up in our symbol search.  However,
13248    if the unit was in fact built with debugging info, we need to
13249    exclude them because they would duplicate the entry we found
13250    during the special loop that specifically searches for those
13251    standard exceptions.
13252
13253    If PREG is not NULL, then this regexp_t object is used to
13254    perform the symbol name matching.  Otherwise, no name-based
13255    filtering is performed.
13256
13257    EXCEPTIONS is a vector of exceptions to which matching exceptions
13258    gets pushed.  */
13259
13260 static void
13261 ada_add_global_exceptions (compiled_regex *preg,
13262                            std::vector<ada_exc_info> *exceptions)
13263 {
13264   /* In Ada, the symbol "search name" is a linkage name, whereas the
13265      regular expression used to do the matching refers to the natural
13266      name.  So match against the decoded name.  */
13267   expand_symtabs_matching (NULL,
13268                            lookup_name_info::match_any (),
13269                            [&] (const char *search_name)
13270                            {
13271                              std::string decoded = ada_decode (search_name);
13272                              return name_matches_regex (decoded.c_str (), preg);
13273                            },
13274                            NULL,
13275                            VARIABLES_DOMAIN);
13276
13277   for (objfile *objfile : current_program_space->objfiles ())
13278     {
13279       for (compunit_symtab *s : objfile->compunits ())
13280         {
13281           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13282           int i;
13283
13284           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13285             {
13286               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13287               struct block_iterator iter;
13288               struct symbol *sym;
13289
13290               ALL_BLOCK_SYMBOLS (b, iter, sym)
13291                 if (ada_is_non_standard_exception_sym (sym)
13292                     && name_matches_regex (sym->natural_name (), preg))
13293                   {
13294                     struct ada_exc_info info
13295                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13296
13297                     exceptions->push_back (info);
13298                   }
13299             }
13300         }
13301     }
13302 }
13303
13304 /* Implements ada_exceptions_list with the regular expression passed
13305    as a regex_t, rather than a string.
13306
13307    If not NULL, PREG is used to filter out exceptions whose names
13308    do not match.  Otherwise, all exceptions are listed.  */
13309
13310 static std::vector<ada_exc_info>
13311 ada_exceptions_list_1 (compiled_regex *preg)
13312 {
13313   std::vector<ada_exc_info> result;
13314   int prev_len;
13315
13316   /* First, list the known standard exceptions.  These exceptions
13317      need to be handled separately, as they are usually defined in
13318      runtime units that have been compiled without debugging info.  */
13319
13320   ada_add_standard_exceptions (preg, &result);
13321
13322   /* Next, find all exceptions whose scope is local and accessible
13323      from the currently selected frame.  */
13324
13325   if (has_stack_frames ())
13326     {
13327       prev_len = result.size ();
13328       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13329                                      &result);
13330       if (result.size () > prev_len)
13331         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13332     }
13333
13334   /* Add all exceptions whose scope is global.  */
13335
13336   prev_len = result.size ();
13337   ada_add_global_exceptions (preg, &result);
13338   if (result.size () > prev_len)
13339     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13340
13341   return result;
13342 }
13343
13344 /* Return a vector of ada_exc_info.
13345
13346    If REGEXP is NULL, all exceptions are included in the result.
13347    Otherwise, it should contain a valid regular expression,
13348    and only the exceptions whose names match that regular expression
13349    are included in the result.
13350
13351    The exceptions are sorted in the following order:
13352      - Standard exceptions (defined by the Ada language), in
13353        alphabetical order;
13354      - Exceptions only visible from the current frame, in
13355        alphabetical order;
13356      - Exceptions whose scope is global, in alphabetical order.  */
13357
13358 std::vector<ada_exc_info>
13359 ada_exceptions_list (const char *regexp)
13360 {
13361   if (regexp == NULL)
13362     return ada_exceptions_list_1 (NULL);
13363
13364   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13365   return ada_exceptions_list_1 (&reg);
13366 }
13367
13368 /* Implement the "info exceptions" command.  */
13369
13370 static void
13371 info_exceptions_command (const char *regexp, int from_tty)
13372 {
13373   struct gdbarch *gdbarch = get_current_arch ();
13374
13375   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13376
13377   if (regexp != NULL)
13378     printf_filtered
13379       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13380   else
13381     printf_filtered (_("All defined Ada exceptions:\n"));
13382
13383   for (const ada_exc_info &info : exceptions)
13384     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13385 }
13386
13387                                 /* Operators */
13388 /* Information about operators given special treatment in functions
13389    below.  */
13390 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13391
13392 #define ADA_OPERATORS \
13393     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13394     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13395     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13396     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13397     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13398     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13399     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13400     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13401     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13402     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13403     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13404     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13405     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13406     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13407     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13408     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13409     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13410     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13411     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13412
13413 static void
13414 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13415                      int *argsp)
13416 {
13417   switch (exp->elts[pc - 1].opcode)
13418     {
13419     default:
13420       operator_length_standard (exp, pc, oplenp, argsp);
13421       break;
13422
13423 #define OP_DEFN(op, len, args, binop) \
13424     case op: *oplenp = len; *argsp = args; break;
13425       ADA_OPERATORS;
13426 #undef OP_DEFN
13427
13428     case OP_AGGREGATE:
13429       *oplenp = 3;
13430       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13431       break;
13432
13433     case OP_CHOICES:
13434       *oplenp = 3;
13435       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13436       break;
13437     }
13438 }
13439
13440 /* Implementation of the exp_descriptor method operator_check.  */
13441
13442 static int
13443 ada_operator_check (struct expression *exp, int pos,
13444                     int (*objfile_func) (struct objfile *objfile, void *data),
13445                     void *data)
13446 {
13447   const union exp_element *const elts = exp->elts;
13448   struct type *type = NULL;
13449
13450   switch (elts[pos].opcode)
13451     {
13452       case UNOP_IN_RANGE:
13453       case UNOP_QUAL:
13454         type = elts[pos + 1].type;
13455         break;
13456
13457       default:
13458         return operator_check_standard (exp, pos, objfile_func, data);
13459     }
13460
13461   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13462
13463   if (type && TYPE_OBJFILE (type)
13464       && (*objfile_func) (TYPE_OBJFILE (type), data))
13465     return 1;
13466
13467   return 0;
13468 }
13469
13470 static const char *
13471 ada_op_name (enum exp_opcode opcode)
13472 {
13473   switch (opcode)
13474     {
13475     default:
13476       return op_name_standard (opcode);
13477
13478 #define OP_DEFN(op, len, args, binop) case op: return #op;
13479       ADA_OPERATORS;
13480 #undef OP_DEFN
13481
13482     case OP_AGGREGATE:
13483       return "OP_AGGREGATE";
13484     case OP_CHOICES:
13485       return "OP_CHOICES";
13486     case OP_NAME:
13487       return "OP_NAME";
13488     }
13489 }
13490
13491 /* As for operator_length, but assumes PC is pointing at the first
13492    element of the operator, and gives meaningful results only for the 
13493    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13494
13495 static void
13496 ada_forward_operator_length (struct expression *exp, int pc,
13497                              int *oplenp, int *argsp)
13498 {
13499   switch (exp->elts[pc].opcode)
13500     {
13501     default:
13502       *oplenp = *argsp = 0;
13503       break;
13504
13505 #define OP_DEFN(op, len, args, binop) \
13506     case op: *oplenp = len; *argsp = args; break;
13507       ADA_OPERATORS;
13508 #undef OP_DEFN
13509
13510     case OP_AGGREGATE:
13511       *oplenp = 3;
13512       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13513       break;
13514
13515     case OP_CHOICES:
13516       *oplenp = 3;
13517       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13518       break;
13519
13520     case OP_STRING:
13521     case OP_NAME:
13522       {
13523         int len = longest_to_int (exp->elts[pc + 1].longconst);
13524
13525         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13526         *argsp = 0;
13527         break;
13528       }
13529     }
13530 }
13531
13532 static int
13533 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13534 {
13535   enum exp_opcode op = exp->elts[elt].opcode;
13536   int oplen, nargs;
13537   int pc = elt;
13538   int i;
13539
13540   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13541
13542   switch (op)
13543     {
13544       /* Ada attributes ('Foo).  */
13545     case OP_ATR_FIRST:
13546     case OP_ATR_LAST:
13547     case OP_ATR_LENGTH:
13548     case OP_ATR_IMAGE:
13549     case OP_ATR_MAX:
13550     case OP_ATR_MIN:
13551     case OP_ATR_MODULUS:
13552     case OP_ATR_POS:
13553     case OP_ATR_SIZE:
13554     case OP_ATR_TAG:
13555     case OP_ATR_VAL:
13556       break;
13557
13558     case UNOP_IN_RANGE:
13559     case UNOP_QUAL:
13560       /* XXX: gdb_sprint_host_address, type_sprint */
13561       fprintf_filtered (stream, _("Type @"));
13562       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13563       fprintf_filtered (stream, " (");
13564       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13565       fprintf_filtered (stream, ")");
13566       break;
13567     case BINOP_IN_BOUNDS:
13568       fprintf_filtered (stream, " (%d)",
13569                         longest_to_int (exp->elts[pc + 2].longconst));
13570       break;
13571     case TERNOP_IN_RANGE:
13572       break;
13573
13574     case OP_AGGREGATE:
13575     case OP_OTHERS:
13576     case OP_DISCRETE_RANGE:
13577     case OP_POSITIONAL:
13578     case OP_CHOICES:
13579       break;
13580
13581     case OP_NAME:
13582     case OP_STRING:
13583       {
13584         char *name = &exp->elts[elt + 2].string;
13585         int len = longest_to_int (exp->elts[elt + 1].longconst);
13586
13587         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13588         break;
13589       }
13590
13591     default:
13592       return dump_subexp_body_standard (exp, stream, elt);
13593     }
13594
13595   elt += oplen;
13596   for (i = 0; i < nargs; i += 1)
13597     elt = dump_subexp (exp, stream, elt);
13598
13599   return elt;
13600 }
13601
13602 /* The Ada extension of print_subexp (q.v.).  */
13603
13604 static void
13605 ada_print_subexp (struct expression *exp, int *pos,
13606                   struct ui_file *stream, enum precedence prec)
13607 {
13608   int oplen, nargs, i;
13609   int pc = *pos;
13610   enum exp_opcode op = exp->elts[pc].opcode;
13611
13612   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13613
13614   *pos += oplen;
13615   switch (op)
13616     {
13617     default:
13618       *pos -= oplen;
13619       print_subexp_standard (exp, pos, stream, prec);
13620       return;
13621
13622     case OP_VAR_VALUE:
13623       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13624       return;
13625
13626     case BINOP_IN_BOUNDS:
13627       /* XXX: sprint_subexp */
13628       print_subexp (exp, pos, stream, PREC_SUFFIX);
13629       fputs_filtered (" in ", stream);
13630       print_subexp (exp, pos, stream, PREC_SUFFIX);
13631       fputs_filtered ("'range", stream);
13632       if (exp->elts[pc + 1].longconst > 1)
13633         fprintf_filtered (stream, "(%ld)",
13634                           (long) exp->elts[pc + 1].longconst);
13635       return;
13636
13637     case TERNOP_IN_RANGE:
13638       if (prec >= PREC_EQUAL)
13639         fputs_filtered ("(", stream);
13640       /* XXX: sprint_subexp */
13641       print_subexp (exp, pos, stream, PREC_SUFFIX);
13642       fputs_filtered (" in ", stream);
13643       print_subexp (exp, pos, stream, PREC_EQUAL);
13644       fputs_filtered (" .. ", stream);
13645       print_subexp (exp, pos, stream, PREC_EQUAL);
13646       if (prec >= PREC_EQUAL)
13647         fputs_filtered (")", stream);
13648       return;
13649
13650     case OP_ATR_FIRST:
13651     case OP_ATR_LAST:
13652     case OP_ATR_LENGTH:
13653     case OP_ATR_IMAGE:
13654     case OP_ATR_MAX:
13655     case OP_ATR_MIN:
13656     case OP_ATR_MODULUS:
13657     case OP_ATR_POS:
13658     case OP_ATR_SIZE:
13659     case OP_ATR_TAG:
13660     case OP_ATR_VAL:
13661       if (exp->elts[*pos].opcode == OP_TYPE)
13662         {
13663           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13664             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13665                            &type_print_raw_options);
13666           *pos += 3;
13667         }
13668       else
13669         print_subexp (exp, pos, stream, PREC_SUFFIX);
13670       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13671       if (nargs > 1)
13672         {
13673           int tem;
13674
13675           for (tem = 1; tem < nargs; tem += 1)
13676             {
13677               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13678               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13679             }
13680           fputs_filtered (")", stream);
13681         }
13682       return;
13683
13684     case UNOP_QUAL:
13685       type_print (exp->elts[pc + 1].type, "", stream, 0);
13686       fputs_filtered ("'(", stream);
13687       print_subexp (exp, pos, stream, PREC_PREFIX);
13688       fputs_filtered (")", stream);
13689       return;
13690
13691     case UNOP_IN_RANGE:
13692       /* XXX: sprint_subexp */
13693       print_subexp (exp, pos, stream, PREC_SUFFIX);
13694       fputs_filtered (" in ", stream);
13695       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13696                      &type_print_raw_options);
13697       return;
13698
13699     case OP_DISCRETE_RANGE:
13700       print_subexp (exp, pos, stream, PREC_SUFFIX);
13701       fputs_filtered ("..", stream);
13702       print_subexp (exp, pos, stream, PREC_SUFFIX);
13703       return;
13704
13705     case OP_OTHERS:
13706       fputs_filtered ("others => ", stream);
13707       print_subexp (exp, pos, stream, PREC_SUFFIX);
13708       return;
13709
13710     case OP_CHOICES:
13711       for (i = 0; i < nargs-1; i += 1)
13712         {
13713           if (i > 0)
13714             fputs_filtered ("|", stream);
13715           print_subexp (exp, pos, stream, PREC_SUFFIX);
13716         }
13717       fputs_filtered (" => ", stream);
13718       print_subexp (exp, pos, stream, PREC_SUFFIX);
13719       return;
13720       
13721     case OP_POSITIONAL:
13722       print_subexp (exp, pos, stream, PREC_SUFFIX);
13723       return;
13724
13725     case OP_AGGREGATE:
13726       fputs_filtered ("(", stream);
13727       for (i = 0; i < nargs; i += 1)
13728         {
13729           if (i > 0)
13730             fputs_filtered (", ", stream);
13731           print_subexp (exp, pos, stream, PREC_SUFFIX);
13732         }
13733       fputs_filtered (")", stream);
13734       return;
13735     }
13736 }
13737
13738 /* Table mapping opcodes into strings for printing operators
13739    and precedences of the operators.  */
13740
13741 static const struct op_print ada_op_print_tab[] = {
13742   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13743   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13744   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13745   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13746   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13747   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13748   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13749   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13750   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13751   {">=", BINOP_GEQ, PREC_ORDER, 0},
13752   {">", BINOP_GTR, PREC_ORDER, 0},
13753   {"<", BINOP_LESS, PREC_ORDER, 0},
13754   {">>", BINOP_RSH, PREC_SHIFT, 0},
13755   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13756   {"+", BINOP_ADD, PREC_ADD, 0},
13757   {"-", BINOP_SUB, PREC_ADD, 0},
13758   {"&", BINOP_CONCAT, PREC_ADD, 0},
13759   {"*", BINOP_MUL, PREC_MUL, 0},
13760   {"/", BINOP_DIV, PREC_MUL, 0},
13761   {"rem", BINOP_REM, PREC_MUL, 0},
13762   {"mod", BINOP_MOD, PREC_MUL, 0},
13763   {"**", BINOP_EXP, PREC_REPEAT, 0},
13764   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13765   {"-", UNOP_NEG, PREC_PREFIX, 0},
13766   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13767   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13768   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13769   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13770   {".all", UNOP_IND, PREC_SUFFIX, 1},
13771   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13772   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13773   {NULL, OP_NULL, PREC_SUFFIX, 0}
13774 };
13775 \f
13776 enum ada_primitive_types {
13777   ada_primitive_type_int,
13778   ada_primitive_type_long,
13779   ada_primitive_type_short,
13780   ada_primitive_type_char,
13781   ada_primitive_type_float,
13782   ada_primitive_type_double,
13783   ada_primitive_type_void,
13784   ada_primitive_type_long_long,
13785   ada_primitive_type_long_double,
13786   ada_primitive_type_natural,
13787   ada_primitive_type_positive,
13788   ada_primitive_type_system_address,
13789   ada_primitive_type_storage_offset,
13790   nr_ada_primitive_types
13791 };
13792
13793 static void
13794 ada_language_arch_info (struct gdbarch *gdbarch,
13795                         struct language_arch_info *lai)
13796 {
13797   const struct builtin_type *builtin = builtin_type (gdbarch);
13798
13799   lai->primitive_type_vector
13800     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13801                               struct type *);
13802
13803   lai->primitive_type_vector [ada_primitive_type_int]
13804     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13805                          0, "integer");
13806   lai->primitive_type_vector [ada_primitive_type_long]
13807     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13808                          0, "long_integer");
13809   lai->primitive_type_vector [ada_primitive_type_short]
13810     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13811                          0, "short_integer");
13812   lai->string_char_type
13813     = lai->primitive_type_vector [ada_primitive_type_char]
13814     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13815   lai->primitive_type_vector [ada_primitive_type_float]
13816     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13817                        "float", gdbarch_float_format (gdbarch));
13818   lai->primitive_type_vector [ada_primitive_type_double]
13819     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13820                        "long_float", gdbarch_double_format (gdbarch));
13821   lai->primitive_type_vector [ada_primitive_type_long_long]
13822     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13823                          0, "long_long_integer");
13824   lai->primitive_type_vector [ada_primitive_type_long_double]
13825     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13826                        "long_long_float", gdbarch_long_double_format (gdbarch));
13827   lai->primitive_type_vector [ada_primitive_type_natural]
13828     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13829                          0, "natural");
13830   lai->primitive_type_vector [ada_primitive_type_positive]
13831     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13832                          0, "positive");
13833   lai->primitive_type_vector [ada_primitive_type_void]
13834     = builtin->builtin_void;
13835
13836   lai->primitive_type_vector [ada_primitive_type_system_address]
13837     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13838                                       "void"));
13839   lai->primitive_type_vector [ada_primitive_type_system_address]
13840     ->set_name ("system__address");
13841
13842   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13843      type.  This is a signed integral type whose size is the same as
13844      the size of addresses.  */
13845   {
13846     unsigned int addr_length = TYPE_LENGTH
13847       (lai->primitive_type_vector [ada_primitive_type_system_address]);
13848
13849     lai->primitive_type_vector [ada_primitive_type_storage_offset]
13850       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13851                            "storage_offset");
13852   }
13853
13854   lai->bool_type_symbol = NULL;
13855   lai->bool_type_default = builtin->builtin_bool;
13856 }
13857 \f
13858                                 /* Language vector */
13859
13860 /* Not really used, but needed in the ada_language_defn.  */
13861
13862 static void
13863 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13864 {
13865   ada_emit_char (c, type, stream, quoter, 1);
13866 }
13867
13868 static int
13869 parse (struct parser_state *ps)
13870 {
13871   warnings_issued = 0;
13872   return ada_parse (ps);
13873 }
13874
13875 static const struct exp_descriptor ada_exp_descriptor = {
13876   ada_print_subexp,
13877   ada_operator_length,
13878   ada_operator_check,
13879   ada_op_name,
13880   ada_dump_subexp_body,
13881   ada_evaluate_subexp
13882 };
13883
13884 /* symbol_name_matcher_ftype adapter for wild_match.  */
13885
13886 static bool
13887 do_wild_match (const char *symbol_search_name,
13888                const lookup_name_info &lookup_name,
13889                completion_match_result *comp_match_res)
13890 {
13891   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13892 }
13893
13894 /* symbol_name_matcher_ftype adapter for full_match.  */
13895
13896 static bool
13897 do_full_match (const char *symbol_search_name,
13898                const lookup_name_info &lookup_name,
13899                completion_match_result *comp_match_res)
13900 {
13901   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13902 }
13903
13904 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13905
13906 static bool
13907 do_exact_match (const char *symbol_search_name,
13908                 const lookup_name_info &lookup_name,
13909                 completion_match_result *comp_match_res)
13910 {
13911   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13912 }
13913
13914 /* Build the Ada lookup name for LOOKUP_NAME.  */
13915
13916 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13917 {
13918   gdb::string_view user_name = lookup_name.name ();
13919
13920   if (user_name[0] == '<')
13921     {
13922       if (user_name.back () == '>')
13923         m_encoded_name
13924           = user_name.substr (1, user_name.size () - 2).to_string ();
13925       else
13926         m_encoded_name
13927           = user_name.substr (1, user_name.size () - 1).to_string ();
13928       m_encoded_p = true;
13929       m_verbatim_p = true;
13930       m_wild_match_p = false;
13931       m_standard_p = false;
13932     }
13933   else
13934     {
13935       m_verbatim_p = false;
13936
13937       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13938
13939       if (!m_encoded_p)
13940         {
13941           const char *folded = ada_fold_name (user_name);
13942           const char *encoded = ada_encode_1 (folded, false);
13943           if (encoded != NULL)
13944             m_encoded_name = encoded;
13945           else
13946             m_encoded_name = user_name.to_string ();
13947         }
13948       else
13949         m_encoded_name = user_name.to_string ();
13950
13951       /* Handle the 'package Standard' special case.  See description
13952          of m_standard_p.  */
13953       if (startswith (m_encoded_name.c_str (), "standard__"))
13954         {
13955           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13956           m_standard_p = true;
13957         }
13958       else
13959         m_standard_p = false;
13960
13961       /* If the name contains a ".", then the user is entering a fully
13962          qualified entity name, and the match must not be done in wild
13963          mode.  Similarly, if the user wants to complete what looks
13964          like an encoded name, the match must not be done in wild
13965          mode.  Also, in the standard__ special case always do
13966          non-wild matching.  */
13967       m_wild_match_p
13968         = (lookup_name.match_type () != symbol_name_match_type::FULL
13969            && !m_encoded_p
13970            && !m_standard_p
13971            && user_name.find ('.') == std::string::npos);
13972     }
13973 }
13974
13975 /* symbol_name_matcher_ftype method for Ada.  This only handles
13976    completion mode.  */
13977
13978 static bool
13979 ada_symbol_name_matches (const char *symbol_search_name,
13980                          const lookup_name_info &lookup_name,
13981                          completion_match_result *comp_match_res)
13982 {
13983   return lookup_name.ada ().matches (symbol_search_name,
13984                                      lookup_name.match_type (),
13985                                      comp_match_res);
13986 }
13987
13988 /* A name matcher that matches the symbol name exactly, with
13989    strcmp.  */
13990
13991 static bool
13992 literal_symbol_name_matcher (const char *symbol_search_name,
13993                              const lookup_name_info &lookup_name,
13994                              completion_match_result *comp_match_res)
13995 {
13996   gdb::string_view name_view = lookup_name.name ();
13997
13998   if (lookup_name.completion_mode ()
13999       ? (strncmp (symbol_search_name, name_view.data (),
14000                   name_view.size ()) == 0)
14001       : symbol_search_name == name_view)
14002     {
14003       if (comp_match_res != NULL)
14004         comp_match_res->set_match (symbol_search_name);
14005       return true;
14006     }
14007   else
14008     return false;
14009 }
14010
14011 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14012    Ada.  */
14013
14014 static symbol_name_matcher_ftype *
14015 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14016 {
14017   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14018     return literal_symbol_name_matcher;
14019
14020   if (lookup_name.completion_mode ())
14021     return ada_symbol_name_matches;
14022   else
14023     {
14024       if (lookup_name.ada ().wild_match_p ())
14025         return do_wild_match;
14026       else if (lookup_name.ada ().verbatim_p ())
14027         return do_exact_match;
14028       else
14029         return do_full_match;
14030     }
14031 }
14032
14033 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14034
14035 static struct value *
14036 ada_read_var_value (struct symbol *var, const struct block *var_block,
14037                     struct frame_info *frame)
14038 {
14039   /* The only case where default_read_var_value is not sufficient
14040      is when VAR is a renaming...  */
14041   if (frame != nullptr)
14042     {
14043       const struct block *frame_block = get_frame_block (frame, NULL);
14044       if (frame_block != nullptr && ada_is_renaming_symbol (var))
14045         return ada_read_renaming_var_value (var, frame_block);
14046     }
14047
14048   /* This is a typical case where we expect the default_read_var_value
14049      function to work.  */
14050   return default_read_var_value (var, var_block, frame);
14051 }
14052
14053 static const char *ada_extensions[] =
14054 {
14055   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14056 };
14057
14058 extern const struct language_defn ada_language_defn = {
14059   "ada",                        /* Language name */
14060   "Ada",
14061   language_ada,
14062   range_check_off,
14063   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14064                                    that's not quite what this means.  */
14065   array_row_major,
14066   macro_expansion_no,
14067   ada_extensions,
14068   &ada_exp_descriptor,
14069   parse,
14070   resolve,
14071   ada_printchar,                /* Print a character constant */
14072   ada_printstr,                 /* Function to print string constant */
14073   emit_char,                    /* Function to print single char (not used) */
14074   ada_print_type,               /* Print a type using appropriate syntax */
14075   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14076   ada_value_print_inner,        /* la_value_print_inner */
14077   ada_value_print,              /* Print a top-level value */
14078   ada_read_var_value,           /* la_read_var_value */
14079   NULL,                         /* Language specific skip_trampoline */
14080   NULL,                         /* name_of_this */
14081   true,                         /* la_store_sym_names_in_linkage_form_p */
14082   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14083   basic_lookup_transparent_type,        /* lookup_transparent_type */
14084   ada_la_decode,                /* Language specific symbol demangler */
14085   ada_sniff_from_mangled_name,
14086   NULL,                         /* Language specific
14087                                    class_name_from_physname */
14088   ada_op_print_tab,             /* expression operators for printing */
14089   0,                            /* c-style arrays */
14090   1,                            /* String lower bound */
14091   ada_get_gdb_completer_word_break_characters,
14092   ada_collect_symbol_completion_matches,
14093   ada_language_arch_info,
14094   ada_print_array_index,
14095   default_pass_by_reference,
14096   ada_watch_location_expression,
14097   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14098   ada_iterate_over_symbols,
14099   default_search_name_hash,
14100   &ada_varobj_ops,
14101   NULL,
14102   NULL,
14103   ada_is_string_type,
14104   "(...)"                       /* la_struct_too_deep_ellipsis */
14105 };
14106
14107 /* Command-list for the "set/show ada" prefix command.  */
14108 static struct cmd_list_element *set_ada_list;
14109 static struct cmd_list_element *show_ada_list;
14110
14111 static void
14112 initialize_ada_catchpoint_ops (void)
14113 {
14114   struct breakpoint_ops *ops;
14115
14116   initialize_breakpoint_ops ();
14117
14118   ops = &catch_exception_breakpoint_ops;
14119   *ops = bkpt_breakpoint_ops;
14120   ops->allocate_location = allocate_location_exception;
14121   ops->re_set = re_set_exception;
14122   ops->check_status = check_status_exception;
14123   ops->print_it = print_it_exception;
14124   ops->print_one = print_one_exception;
14125   ops->print_mention = print_mention_exception;
14126   ops->print_recreate = print_recreate_exception;
14127
14128   ops = &catch_exception_unhandled_breakpoint_ops;
14129   *ops = bkpt_breakpoint_ops;
14130   ops->allocate_location = allocate_location_exception;
14131   ops->re_set = re_set_exception;
14132   ops->check_status = check_status_exception;
14133   ops->print_it = print_it_exception;
14134   ops->print_one = print_one_exception;
14135   ops->print_mention = print_mention_exception;
14136   ops->print_recreate = print_recreate_exception;
14137
14138   ops = &catch_assert_breakpoint_ops;
14139   *ops = bkpt_breakpoint_ops;
14140   ops->allocate_location = allocate_location_exception;
14141   ops->re_set = re_set_exception;
14142   ops->check_status = check_status_exception;
14143   ops->print_it = print_it_exception;
14144   ops->print_one = print_one_exception;
14145   ops->print_mention = print_mention_exception;
14146   ops->print_recreate = print_recreate_exception;
14147
14148   ops = &catch_handlers_breakpoint_ops;
14149   *ops = bkpt_breakpoint_ops;
14150   ops->allocate_location = allocate_location_exception;
14151   ops->re_set = re_set_exception;
14152   ops->check_status = check_status_exception;
14153   ops->print_it = print_it_exception;
14154   ops->print_one = print_one_exception;
14155   ops->print_mention = print_mention_exception;
14156   ops->print_recreate = print_recreate_exception;
14157 }
14158
14159 /* This module's 'new_objfile' observer.  */
14160
14161 static void
14162 ada_new_objfile_observer (struct objfile *objfile)
14163 {
14164   ada_clear_symbol_cache ();
14165 }
14166
14167 /* This module's 'free_objfile' observer.  */
14168
14169 static void
14170 ada_free_objfile_observer (struct objfile *objfile)
14171 {
14172   ada_clear_symbol_cache ();
14173 }
14174
14175 void _initialize_ada_language ();
14176 void
14177 _initialize_ada_language ()
14178 {
14179   initialize_ada_catchpoint_ops ();
14180
14181   add_basic_prefix_cmd ("ada", no_class,
14182                         _("Prefix command for changing Ada-specific settings."),
14183                         &set_ada_list, "set ada ", 0, &setlist);
14184
14185   add_show_prefix_cmd ("ada", no_class,
14186                        _("Generic command for showing Ada-specific settings."),
14187                        &show_ada_list, "show ada ", 0, &showlist);
14188
14189   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14190                            &trust_pad_over_xvs, _("\
14191 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14192 Show whether an optimization trusting PAD types over XVS types is activated."),
14193                            _("\
14194 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14195 should normally trust the contents of PAD types, but certain older versions\n\
14196 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14197 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14198 work around this bug.  It is always safe to turn this option \"off\", but\n\
14199 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14200 this option to \"off\" unless necessary."),
14201                             NULL, NULL, &set_ada_list, &show_ada_list);
14202
14203   add_setshow_boolean_cmd ("print-signatures", class_vars,
14204                            &print_signatures, _("\
14205 Enable or disable the output of formal and return types for functions in the \
14206 overloads selection menu."), _("\
14207 Show whether the output of formal and return types for functions in the \
14208 overloads selection menu is activated."),
14209                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14210
14211   add_catch_command ("exception", _("\
14212 Catch Ada exceptions, when raised.\n\
14213 Usage: catch exception [ARG] [if CONDITION]\n\
14214 Without any argument, stop when any Ada exception is raised.\n\
14215 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14216 being raised does not have a handler (and will therefore lead to the task's\n\
14217 termination).\n\
14218 Otherwise, the catchpoint only stops when the name of the exception being\n\
14219 raised is the same as ARG.\n\
14220 CONDITION is a boolean expression that is evaluated to see whether the\n\
14221 exception should cause a stop."),
14222                      catch_ada_exception_command,
14223                      catch_ada_completer,
14224                      CATCH_PERMANENT,
14225                      CATCH_TEMPORARY);
14226
14227   add_catch_command ("handlers", _("\
14228 Catch Ada exceptions, when handled.\n\
14229 Usage: catch handlers [ARG] [if CONDITION]\n\
14230 Without any argument, stop when any Ada exception is handled.\n\
14231 With an argument, catch only exceptions with the given name.\n\
14232 CONDITION is a boolean expression that is evaluated to see whether the\n\
14233 exception should cause a stop."),
14234                      catch_ada_handlers_command,
14235                      catch_ada_completer,
14236                      CATCH_PERMANENT,
14237                      CATCH_TEMPORARY);
14238   add_catch_command ("assert", _("\
14239 Catch failed Ada assertions, when raised.\n\
14240 Usage: catch assert [if CONDITION]\n\
14241 CONDITION is a boolean expression that is evaluated to see whether the\n\
14242 exception should cause a stop."),
14243                      catch_assert_command,
14244                      NULL,
14245                      CATCH_PERMANENT,
14246                      CATCH_TEMPORARY);
14247
14248   varsize_limit = 65536;
14249   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14250                             &varsize_limit, _("\
14251 Set the maximum number of bytes allowed in a variable-size object."), _("\
14252 Show the maximum number of bytes allowed in a variable-size object."), _("\
14253 Attempts to access an object whose size is not a compile-time constant\n\
14254 and exceeds this limit will cause an error."),
14255                             NULL, NULL, &setlist, &showlist);
14256
14257   add_info ("exceptions", info_exceptions_command,
14258             _("\
14259 List all Ada exception names.\n\
14260 Usage: info exceptions [REGEXP]\n\
14261 If a regular expression is passed as an argument, only those matching\n\
14262 the regular expression are listed."));
14263
14264   add_basic_prefix_cmd ("ada", class_maintenance,
14265                         _("Set Ada maintenance-related variables."),
14266                         &maint_set_ada_cmdlist, "maintenance set ada ",
14267                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14268
14269   add_show_prefix_cmd ("ada", class_maintenance,
14270                        _("Show Ada maintenance-related variables."),
14271                        &maint_show_ada_cmdlist, "maintenance show ada ",
14272                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14273
14274   add_setshow_boolean_cmd
14275     ("ignore-descriptive-types", class_maintenance,
14276      &ada_ignore_descriptive_types_p,
14277      _("Set whether descriptive types generated by GNAT should be ignored."),
14278      _("Show whether descriptive types generated by GNAT should be ignored."),
14279      _("\
14280 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14281 DWARF attribute."),
14282      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14283
14284   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14285                                            NULL, xcalloc, xfree);
14286
14287   /* The ada-lang observers.  */
14288   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14289   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14290   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14291 }
This page took 0.822709 seconds and 4 git commands to generate.