]> Git Repo - binutils.git/blob - gdb/ada-lang.c
gdb: remove TYPE_FIELD macro
[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 < struct_type->num_fields (); 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, struct_type->name ());
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->num_fields () - 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 (index_desc_type->num_fields () > 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_FIELD_TYPE (index_desc_type, 0)->name () != NULL
1474       && strcmp (TYPE_FIELD_TYPE (index_desc_type, 0)->name (),
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 < index_desc_type->num_fields (); 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 /* The desc_* routines return primitive portions of array descriptors
1490    (fat pointers).  */
1491
1492 /* The descriptor or array type, if any, indicated by TYPE; removes
1493    level of indirection, if needed.  */
1494
1495 static struct type *
1496 desc_base_type (struct type *type)
1497 {
1498   if (type == NULL)
1499     return NULL;
1500   type = ada_check_typedef (type);
1501   if (type->code () == TYPE_CODE_TYPEDEF)
1502     type = ada_typedef_target_type (type);
1503
1504   if (type != NULL
1505       && (type->code () == TYPE_CODE_PTR
1506           || type->code () == TYPE_CODE_REF))
1507     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1508   else
1509     return type;
1510 }
1511
1512 /* True iff TYPE indicates a "thin" array pointer type.  */
1513
1514 static int
1515 is_thin_pntr (struct type *type)
1516 {
1517   return
1518     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1519     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1520 }
1521
1522 /* The descriptor type for thin pointer type TYPE.  */
1523
1524 static struct type *
1525 thin_descriptor_type (struct type *type)
1526 {
1527   struct type *base_type = desc_base_type (type);
1528
1529   if (base_type == NULL)
1530     return NULL;
1531   if (is_suffix (ada_type_name (base_type), "___XVE"))
1532     return base_type;
1533   else
1534     {
1535       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1536
1537       if (alt_type == NULL)
1538         return base_type;
1539       else
1540         return alt_type;
1541     }
1542 }
1543
1544 /* A pointer to the array data for thin-pointer value VAL.  */
1545
1546 static struct value *
1547 thin_data_pntr (struct value *val)
1548 {
1549   struct type *type = ada_check_typedef (value_type (val));
1550   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1551
1552   data_type = lookup_pointer_type (data_type);
1553
1554   if (type->code () == TYPE_CODE_PTR)
1555     return value_cast (data_type, value_copy (val));
1556   else
1557     return value_from_longest (data_type, value_address (val));
1558 }
1559
1560 /* True iff TYPE indicates a "thick" array pointer type.  */
1561
1562 static int
1563 is_thick_pntr (struct type *type)
1564 {
1565   type = desc_base_type (type);
1566   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1567           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1568 }
1569
1570 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1571    pointer to one, the type of its bounds data; otherwise, NULL.  */
1572
1573 static struct type *
1574 desc_bounds_type (struct type *type)
1575 {
1576   struct type *r;
1577
1578   type = desc_base_type (type);
1579
1580   if (type == NULL)
1581     return NULL;
1582   else if (is_thin_pntr (type))
1583     {
1584       type = thin_descriptor_type (type);
1585       if (type == NULL)
1586         return NULL;
1587       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1588       if (r != NULL)
1589         return ada_check_typedef (r);
1590     }
1591   else if (type->code () == TYPE_CODE_STRUCT)
1592     {
1593       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1594       if (r != NULL)
1595         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1596     }
1597   return NULL;
1598 }
1599
1600 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1601    one, a pointer to its bounds data.   Otherwise NULL.  */
1602
1603 static struct value *
1604 desc_bounds (struct value *arr)
1605 {
1606   struct type *type = ada_check_typedef (value_type (arr));
1607
1608   if (is_thin_pntr (type))
1609     {
1610       struct type *bounds_type =
1611         desc_bounds_type (thin_descriptor_type (type));
1612       LONGEST addr;
1613
1614       if (bounds_type == NULL)
1615         error (_("Bad GNAT array descriptor"));
1616
1617       /* NOTE: The following calculation is not really kosher, but
1618          since desc_type is an XVE-encoded type (and shouldn't be),
1619          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1620       if (type->code () == TYPE_CODE_PTR)
1621         addr = value_as_long (arr);
1622       else
1623         addr = value_address (arr);
1624
1625       return
1626         value_from_longest (lookup_pointer_type (bounds_type),
1627                             addr - TYPE_LENGTH (bounds_type));
1628     }
1629
1630   else if (is_thick_pntr (type))
1631     {
1632       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1633                                                _("Bad GNAT array descriptor"));
1634       struct type *p_bounds_type = value_type (p_bounds);
1635
1636       if (p_bounds_type
1637           && p_bounds_type->code () == TYPE_CODE_PTR)
1638         {
1639           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1640
1641           if (TYPE_STUB (target_type))
1642             p_bounds = value_cast (lookup_pointer_type
1643                                    (ada_check_typedef (target_type)),
1644                                    p_bounds);
1645         }
1646       else
1647         error (_("Bad GNAT array descriptor"));
1648
1649       return p_bounds;
1650     }
1651   else
1652     return NULL;
1653 }
1654
1655 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1656    position of the field containing the address of the bounds data.  */
1657
1658 static int
1659 fat_pntr_bounds_bitpos (struct type *type)
1660 {
1661   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1662 }
1663
1664 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1665    size of the field containing the address of the bounds data.  */
1666
1667 static int
1668 fat_pntr_bounds_bitsize (struct type *type)
1669 {
1670   type = desc_base_type (type);
1671
1672   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1673     return TYPE_FIELD_BITSIZE (type, 1);
1674   else
1675     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1676 }
1677
1678 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1679    pointer to one, the type of its array data (a array-with-no-bounds type);
1680    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1681    data.  */
1682
1683 static struct type *
1684 desc_data_target_type (struct type *type)
1685 {
1686   type = desc_base_type (type);
1687
1688   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1689   if (is_thin_pntr (type))
1690     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1691   else if (is_thick_pntr (type))
1692     {
1693       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1694
1695       if (data_type
1696           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1697         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1698     }
1699
1700   return NULL;
1701 }
1702
1703 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1704    its array data.  */
1705
1706 static struct value *
1707 desc_data (struct value *arr)
1708 {
1709   struct type *type = value_type (arr);
1710
1711   if (is_thin_pntr (type))
1712     return thin_data_pntr (arr);
1713   else if (is_thick_pntr (type))
1714     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1715                              _("Bad GNAT array descriptor"));
1716   else
1717     return NULL;
1718 }
1719
1720
1721 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1722    position of the field containing the address of the data.  */
1723
1724 static int
1725 fat_pntr_data_bitpos (struct type *type)
1726 {
1727   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1728 }
1729
1730 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1731    size of the field containing the address of the data.  */
1732
1733 static int
1734 fat_pntr_data_bitsize (struct type *type)
1735 {
1736   type = desc_base_type (type);
1737
1738   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1739     return TYPE_FIELD_BITSIZE (type, 0);
1740   else
1741     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1742 }
1743
1744 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1745    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1746    bound, if WHICH is 1.  The first bound is I=1.  */
1747
1748 static struct value *
1749 desc_one_bound (struct value *bounds, int i, int which)
1750 {
1751   char bound_name[20];
1752   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1753              which ? 'U' : 'L', i - 1);
1754   return value_struct_elt (&bounds, NULL, bound_name, NULL,
1755                            _("Bad GNAT array descriptor bounds"));
1756 }
1757
1758 /* If BOUNDS is an array-bounds structure type, return the bit position
1759    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1760    bound, if WHICH is 1.  The first bound is I=1.  */
1761
1762 static int
1763 desc_bound_bitpos (struct type *type, int i, int which)
1764 {
1765   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1766 }
1767
1768 /* If BOUNDS is an array-bounds structure type, return the bit field size
1769    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1770    bound, if WHICH is 1.  The first bound is I=1.  */
1771
1772 static int
1773 desc_bound_bitsize (struct type *type, int i, int which)
1774 {
1775   type = desc_base_type (type);
1776
1777   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1778     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1779   else
1780     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1781 }
1782
1783 /* If TYPE is the type of an array-bounds structure, the type of its
1784    Ith bound (numbering from 1).  Otherwise, NULL.  */
1785
1786 static struct type *
1787 desc_index_type (struct type *type, int i)
1788 {
1789   type = desc_base_type (type);
1790
1791   if (type->code () == TYPE_CODE_STRUCT)
1792     {
1793       char bound_name[20];
1794       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1795       return lookup_struct_elt_type (type, bound_name, 1);
1796     }
1797   else
1798     return NULL;
1799 }
1800
1801 /* The number of index positions in the array-bounds type TYPE.
1802    Return 0 if TYPE is NULL.  */
1803
1804 static int
1805 desc_arity (struct type *type)
1806 {
1807   type = desc_base_type (type);
1808
1809   if (type != NULL)
1810     return type->num_fields () / 2;
1811   return 0;
1812 }
1813
1814 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1815    an array descriptor type (representing an unconstrained array
1816    type).  */
1817
1818 static int
1819 ada_is_direct_array_type (struct type *type)
1820 {
1821   if (type == NULL)
1822     return 0;
1823   type = ada_check_typedef (type);
1824   return (type->code () == TYPE_CODE_ARRAY
1825           || ada_is_array_descriptor_type (type));
1826 }
1827
1828 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1829  * to one.  */
1830
1831 static int
1832 ada_is_array_type (struct type *type)
1833 {
1834   while (type != NULL
1835          && (type->code () == TYPE_CODE_PTR
1836              || type->code () == TYPE_CODE_REF))
1837     type = TYPE_TARGET_TYPE (type);
1838   return ada_is_direct_array_type (type);
1839 }
1840
1841 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1842
1843 int
1844 ada_is_simple_array_type (struct type *type)
1845 {
1846   if (type == NULL)
1847     return 0;
1848   type = ada_check_typedef (type);
1849   return (type->code () == TYPE_CODE_ARRAY
1850           || (type->code () == TYPE_CODE_PTR
1851               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1852                   == TYPE_CODE_ARRAY)));
1853 }
1854
1855 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1856
1857 int
1858 ada_is_array_descriptor_type (struct type *type)
1859 {
1860   struct type *data_type = desc_data_target_type (type);
1861
1862   if (type == NULL)
1863     return 0;
1864   type = ada_check_typedef (type);
1865   return (data_type != NULL
1866           && data_type->code () == TYPE_CODE_ARRAY
1867           && desc_arity (desc_bounds_type (type)) > 0);
1868 }
1869
1870 /* Non-zero iff type is a partially mal-formed GNAT array
1871    descriptor.  FIXME: This is to compensate for some problems with
1872    debugging output from GNAT.  Re-examine periodically to see if it
1873    is still needed.  */
1874
1875 int
1876 ada_is_bogus_array_descriptor (struct type *type)
1877 {
1878   return
1879     type != NULL
1880     && type->code () == TYPE_CODE_STRUCT
1881     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1882         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1883     && !ada_is_array_descriptor_type (type);
1884 }
1885
1886
1887 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1888    (fat pointer) returns the type of the array data described---specifically,
1889    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1890    in from the descriptor; otherwise, they are left unspecified.  If
1891    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1892    returns NULL.  The result is simply the type of ARR if ARR is not
1893    a descriptor.  */
1894
1895 static struct type *
1896 ada_type_of_array (struct value *arr, int bounds)
1897 {
1898   if (ada_is_constrained_packed_array_type (value_type (arr)))
1899     return decode_constrained_packed_array_type (value_type (arr));
1900
1901   if (!ada_is_array_descriptor_type (value_type (arr)))
1902     return value_type (arr);
1903
1904   if (!bounds)
1905     {
1906       struct type *array_type =
1907         ada_check_typedef (desc_data_target_type (value_type (arr)));
1908
1909       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1910         TYPE_FIELD_BITSIZE (array_type, 0) =
1911           decode_packed_array_bitsize (value_type (arr));
1912       
1913       return array_type;
1914     }
1915   else
1916     {
1917       struct type *elt_type;
1918       int arity;
1919       struct value *descriptor;
1920
1921       elt_type = ada_array_element_type (value_type (arr), -1);
1922       arity = ada_array_arity (value_type (arr));
1923
1924       if (elt_type == NULL || arity == 0)
1925         return ada_check_typedef (value_type (arr));
1926
1927       descriptor = desc_bounds (arr);
1928       if (value_as_long (descriptor) == 0)
1929         return NULL;
1930       while (arity > 0)
1931         {
1932           struct type *range_type = alloc_type_copy (value_type (arr));
1933           struct type *array_type = alloc_type_copy (value_type (arr));
1934           struct value *low = desc_one_bound (descriptor, arity, 0);
1935           struct value *high = desc_one_bound (descriptor, arity, 1);
1936
1937           arity -= 1;
1938           create_static_range_type (range_type, value_type (low),
1939                                     longest_to_int (value_as_long (low)),
1940                                     longest_to_int (value_as_long (high)));
1941           elt_type = create_array_type (array_type, elt_type, range_type);
1942
1943           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1944             {
1945               /* We need to store the element packed bitsize, as well as
1946                  recompute the array size, because it was previously
1947                  computed based on the unpacked element size.  */
1948               LONGEST lo = value_as_long (low);
1949               LONGEST hi = value_as_long (high);
1950
1951               TYPE_FIELD_BITSIZE (elt_type, 0) =
1952                 decode_packed_array_bitsize (value_type (arr));
1953               /* If the array has no element, then the size is already
1954                  zero, and does not need to be recomputed.  */
1955               if (lo < hi)
1956                 {
1957                   int array_bitsize =
1958                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1959
1960                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1961                 }
1962             }
1963         }
1964
1965       return lookup_pointer_type (elt_type);
1966     }
1967 }
1968
1969 /* If ARR does not represent an array, returns ARR unchanged.
1970    Otherwise, returns either a standard GDB array with bounds set
1971    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1972    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1973
1974 struct value *
1975 ada_coerce_to_simple_array_ptr (struct value *arr)
1976 {
1977   if (ada_is_array_descriptor_type (value_type (arr)))
1978     {
1979       struct type *arrType = ada_type_of_array (arr, 1);
1980
1981       if (arrType == NULL)
1982         return NULL;
1983       return value_cast (arrType, value_copy (desc_data (arr)));
1984     }
1985   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1986     return decode_constrained_packed_array (arr);
1987   else
1988     return arr;
1989 }
1990
1991 /* If ARR does not represent an array, returns ARR unchanged.
1992    Otherwise, returns a standard GDB array describing ARR (which may
1993    be ARR itself if it already is in the proper form).  */
1994
1995 struct value *
1996 ada_coerce_to_simple_array (struct value *arr)
1997 {
1998   if (ada_is_array_descriptor_type (value_type (arr)))
1999     {
2000       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2001
2002       if (arrVal == NULL)
2003         error (_("Bounds unavailable for null array pointer."));
2004       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2005       return value_ind (arrVal);
2006     }
2007   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2008     return decode_constrained_packed_array (arr);
2009   else
2010     return arr;
2011 }
2012
2013 /* If TYPE represents a GNAT array type, return it translated to an
2014    ordinary GDB array type (possibly with BITSIZE fields indicating
2015    packing).  For other types, is the identity.  */
2016
2017 struct type *
2018 ada_coerce_to_simple_array_type (struct type *type)
2019 {
2020   if (ada_is_constrained_packed_array_type (type))
2021     return decode_constrained_packed_array_type (type);
2022
2023   if (ada_is_array_descriptor_type (type))
2024     return ada_check_typedef (desc_data_target_type (type));
2025
2026   return type;
2027 }
2028
2029 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2030
2031 static int
2032 ada_is_packed_array_type  (struct type *type)
2033 {
2034   if (type == NULL)
2035     return 0;
2036   type = desc_base_type (type);
2037   type = ada_check_typedef (type);
2038   return
2039     ada_type_name (type) != NULL
2040     && strstr (ada_type_name (type), "___XP") != NULL;
2041 }
2042
2043 /* Non-zero iff TYPE represents a standard GNAT constrained
2044    packed-array type.  */
2045
2046 int
2047 ada_is_constrained_packed_array_type (struct type *type)
2048 {
2049   return ada_is_packed_array_type (type)
2050     && !ada_is_array_descriptor_type (type);
2051 }
2052
2053 /* Non-zero iff TYPE represents an array descriptor for a
2054    unconstrained packed-array type.  */
2055
2056 static int
2057 ada_is_unconstrained_packed_array_type (struct type *type)
2058 {
2059   return ada_is_packed_array_type (type)
2060     && ada_is_array_descriptor_type (type);
2061 }
2062
2063 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2064    return the size of its elements in bits.  */
2065
2066 static long
2067 decode_packed_array_bitsize (struct type *type)
2068 {
2069   const char *raw_name;
2070   const char *tail;
2071   long bits;
2072
2073   /* Access to arrays implemented as fat pointers are encoded as a typedef
2074      of the fat pointer type.  We need the name of the fat pointer type
2075      to do the decoding, so strip the typedef layer.  */
2076   if (type->code () == TYPE_CODE_TYPEDEF)
2077     type = ada_typedef_target_type (type);
2078
2079   raw_name = ada_type_name (ada_check_typedef (type));
2080   if (!raw_name)
2081     raw_name = ada_type_name (desc_base_type (type));
2082
2083   if (!raw_name)
2084     return 0;
2085
2086   tail = strstr (raw_name, "___XP");
2087   gdb_assert (tail != NULL);
2088
2089   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2090     {
2091       lim_warning
2092         (_("could not understand bit size information on packed array"));
2093       return 0;
2094     }
2095
2096   return bits;
2097 }
2098
2099 /* Given that TYPE is a standard GDB array type with all bounds filled
2100    in, and that the element size of its ultimate scalar constituents
2101    (that is, either its elements, or, if it is an array of arrays, its
2102    elements' elements, etc.) is *ELT_BITS, return an identical type,
2103    but with the bit sizes of its elements (and those of any
2104    constituent arrays) recorded in the BITSIZE components of its
2105    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2106    in bits.
2107
2108    Note that, for arrays whose index type has an XA encoding where
2109    a bound references a record discriminant, getting that discriminant,
2110    and therefore the actual value of that bound, is not possible
2111    because none of the given parameters gives us access to the record.
2112    This function assumes that it is OK in the context where it is being
2113    used to return an array whose bounds are still dynamic and where
2114    the length is arbitrary.  */
2115
2116 static struct type *
2117 constrained_packed_array_type (struct type *type, long *elt_bits)
2118 {
2119   struct type *new_elt_type;
2120   struct type *new_type;
2121   struct type *index_type_desc;
2122   struct type *index_type;
2123   LONGEST low_bound, high_bound;
2124
2125   type = ada_check_typedef (type);
2126   if (type->code () != TYPE_CODE_ARRAY)
2127     return type;
2128
2129   index_type_desc = ada_find_parallel_type (type, "___XA");
2130   if (index_type_desc)
2131     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2132                                       NULL);
2133   else
2134     index_type = TYPE_INDEX_TYPE (type);
2135
2136   new_type = alloc_type_copy (type);
2137   new_elt_type =
2138     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2139                                    elt_bits);
2140   create_array_type (new_type, new_elt_type, index_type);
2141   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2142   new_type->set_name (ada_type_name (type));
2143
2144   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2145        && is_dynamic_type (check_typedef (index_type)))
2146       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2147     low_bound = high_bound = 0;
2148   if (high_bound < low_bound)
2149     *elt_bits = TYPE_LENGTH (new_type) = 0;
2150   else
2151     {
2152       *elt_bits *= (high_bound - low_bound + 1);
2153       TYPE_LENGTH (new_type) =
2154         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2155     }
2156
2157   TYPE_FIXED_INSTANCE (new_type) = 1;
2158   return new_type;
2159 }
2160
2161 /* The array type encoded by TYPE, where
2162    ada_is_constrained_packed_array_type (TYPE).  */
2163
2164 static struct type *
2165 decode_constrained_packed_array_type (struct type *type)
2166 {
2167   const char *raw_name = ada_type_name (ada_check_typedef (type));
2168   char *name;
2169   const char *tail;
2170   struct type *shadow_type;
2171   long bits;
2172
2173   if (!raw_name)
2174     raw_name = ada_type_name (desc_base_type (type));
2175
2176   if (!raw_name)
2177     return NULL;
2178
2179   name = (char *) alloca (strlen (raw_name) + 1);
2180   tail = strstr (raw_name, "___XP");
2181   type = desc_base_type (type);
2182
2183   memcpy (name, raw_name, tail - raw_name);
2184   name[tail - raw_name] = '\000';
2185
2186   shadow_type = ada_find_parallel_type_with_name (type, name);
2187
2188   if (shadow_type == NULL)
2189     {
2190       lim_warning (_("could not find bounds information on packed array"));
2191       return NULL;
2192     }
2193   shadow_type = check_typedef (shadow_type);
2194
2195   if (shadow_type->code () != TYPE_CODE_ARRAY)
2196     {
2197       lim_warning (_("could not understand bounds "
2198                      "information on packed array"));
2199       return NULL;
2200     }
2201
2202   bits = decode_packed_array_bitsize (type);
2203   return constrained_packed_array_type (shadow_type, &bits);
2204 }
2205
2206 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2207    array, returns a simple array that denotes that array.  Its type is a
2208    standard GDB array type except that the BITSIZEs of the array
2209    target types are set to the number of bits in each element, and the
2210    type length is set appropriately.  */
2211
2212 static struct value *
2213 decode_constrained_packed_array (struct value *arr)
2214 {
2215   struct type *type;
2216
2217   /* If our value is a pointer, then dereference it. Likewise if
2218      the value is a reference.  Make sure that this operation does not
2219      cause the target type to be fixed, as this would indirectly cause
2220      this array to be decoded.  The rest of the routine assumes that
2221      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2222      and "value_ind" routines to perform the dereferencing, as opposed
2223      to using "ada_coerce_ref" or "ada_value_ind".  */
2224   arr = coerce_ref (arr);
2225   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2226     arr = value_ind (arr);
2227
2228   type = decode_constrained_packed_array_type (value_type (arr));
2229   if (type == NULL)
2230     {
2231       error (_("can't unpack array"));
2232       return NULL;
2233     }
2234
2235   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2236       && ada_is_modular_type (value_type (arr)))
2237     {
2238        /* This is a (right-justified) modular type representing a packed
2239          array with no wrapper.  In order to interpret the value through
2240          the (left-justified) packed array type we just built, we must
2241          first left-justify it.  */
2242       int bit_size, bit_pos;
2243       ULONGEST mod;
2244
2245       mod = ada_modulus (value_type (arr)) - 1;
2246       bit_size = 0;
2247       while (mod > 0)
2248         {
2249           bit_size += 1;
2250           mod >>= 1;
2251         }
2252       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2253       arr = ada_value_primitive_packed_val (arr, NULL,
2254                                             bit_pos / HOST_CHAR_BIT,
2255                                             bit_pos % HOST_CHAR_BIT,
2256                                             bit_size,
2257                                             type);
2258     }
2259
2260   return coerce_unspec_val_to_type (arr, type);
2261 }
2262
2263
2264 /* The value of the element of packed array ARR at the ARITY indices
2265    given in IND.   ARR must be a simple array.  */
2266
2267 static struct value *
2268 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2269 {
2270   int i;
2271   int bits, elt_off, bit_off;
2272   long elt_total_bit_offset;
2273   struct type *elt_type;
2274   struct value *v;
2275
2276   bits = 0;
2277   elt_total_bit_offset = 0;
2278   elt_type = ada_check_typedef (value_type (arr));
2279   for (i = 0; i < arity; i += 1)
2280     {
2281       if (elt_type->code () != TYPE_CODE_ARRAY
2282           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2283         error
2284           (_("attempt to do packed indexing of "
2285              "something other than a packed array"));
2286       else
2287         {
2288           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2289           LONGEST lowerbound, upperbound;
2290           LONGEST idx;
2291
2292           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2293             {
2294               lim_warning (_("don't know bounds of array"));
2295               lowerbound = upperbound = 0;
2296             }
2297
2298           idx = pos_atr (ind[i]);
2299           if (idx < lowerbound || idx > upperbound)
2300             lim_warning (_("packed array index %ld out of bounds"),
2301                          (long) idx);
2302           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2303           elt_total_bit_offset += (idx - lowerbound) * bits;
2304           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2305         }
2306     }
2307   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2308   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2309
2310   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2311                                       bits, elt_type);
2312   return v;
2313 }
2314
2315 /* Non-zero iff TYPE includes negative integer values.  */
2316
2317 static int
2318 has_negatives (struct type *type)
2319 {
2320   switch (type->code ())
2321     {
2322     default:
2323       return 0;
2324     case TYPE_CODE_INT:
2325       return !TYPE_UNSIGNED (type);
2326     case TYPE_CODE_RANGE:
2327       return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
2328     }
2329 }
2330
2331 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2332    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2333    the unpacked buffer.
2334
2335    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2336    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2337
2338    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2339    zero otherwise.
2340
2341    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2342
2343    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2344
2345 static void
2346 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2347                           gdb_byte *unpacked, int unpacked_len,
2348                           int is_big_endian, int is_signed_type,
2349                           int is_scalar)
2350 {
2351   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2352   int src_idx;                  /* Index into the source area */
2353   int src_bytes_left;           /* Number of source bytes left to process.  */
2354   int srcBitsLeft;              /* Number of source bits left to move */
2355   int unusedLS;                 /* Number of bits in next significant
2356                                    byte of source that are unused */
2357
2358   int unpacked_idx;             /* Index into the unpacked buffer */
2359   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2360
2361   unsigned long accum;          /* Staging area for bits being transferred */
2362   int accumSize;                /* Number of meaningful bits in accum */
2363   unsigned char sign;
2364
2365   /* Transmit bytes from least to most significant; delta is the direction
2366      the indices move.  */
2367   int delta = is_big_endian ? -1 : 1;
2368
2369   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2370      bits from SRC.  .*/
2371   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2372     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2373            bit_size, unpacked_len);
2374
2375   srcBitsLeft = bit_size;
2376   src_bytes_left = src_len;
2377   unpacked_bytes_left = unpacked_len;
2378   sign = 0;
2379
2380   if (is_big_endian)
2381     {
2382       src_idx = src_len - 1;
2383       if (is_signed_type
2384           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2385         sign = ~0;
2386
2387       unusedLS =
2388         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2389         % HOST_CHAR_BIT;
2390
2391       if (is_scalar)
2392         {
2393           accumSize = 0;
2394           unpacked_idx = unpacked_len - 1;
2395         }
2396       else
2397         {
2398           /* Non-scalar values must be aligned at a byte boundary...  */
2399           accumSize =
2400             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2401           /* ... And are placed at the beginning (most-significant) bytes
2402              of the target.  */
2403           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2404           unpacked_bytes_left = unpacked_idx + 1;
2405         }
2406     }
2407   else
2408     {
2409       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2410
2411       src_idx = unpacked_idx = 0;
2412       unusedLS = bit_offset;
2413       accumSize = 0;
2414
2415       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2416         sign = ~0;
2417     }
2418
2419   accum = 0;
2420   while (src_bytes_left > 0)
2421     {
2422       /* Mask for removing bits of the next source byte that are not
2423          part of the value.  */
2424       unsigned int unusedMSMask =
2425         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2426         1;
2427       /* Sign-extend bits for this byte.  */
2428       unsigned int signMask = sign & ~unusedMSMask;
2429
2430       accum |=
2431         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2432       accumSize += HOST_CHAR_BIT - unusedLS;
2433       if (accumSize >= HOST_CHAR_BIT)
2434         {
2435           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2436           accumSize -= HOST_CHAR_BIT;
2437           accum >>= HOST_CHAR_BIT;
2438           unpacked_bytes_left -= 1;
2439           unpacked_idx += delta;
2440         }
2441       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2442       unusedLS = 0;
2443       src_bytes_left -= 1;
2444       src_idx += delta;
2445     }
2446   while (unpacked_bytes_left > 0)
2447     {
2448       accum |= sign << accumSize;
2449       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2450       accumSize -= HOST_CHAR_BIT;
2451       if (accumSize < 0)
2452         accumSize = 0;
2453       accum >>= HOST_CHAR_BIT;
2454       unpacked_bytes_left -= 1;
2455       unpacked_idx += delta;
2456     }
2457 }
2458
2459 /* Create a new value of type TYPE from the contents of OBJ starting
2460    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2461    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2462    assigning through the result will set the field fetched from.
2463    VALADDR is ignored unless OBJ is NULL, in which case,
2464    VALADDR+OFFSET must address the start of storage containing the 
2465    packed value.  The value returned  in this case is never an lval.
2466    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2467
2468 struct value *
2469 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2470                                 long offset, int bit_offset, int bit_size,
2471                                 struct type *type)
2472 {
2473   struct value *v;
2474   const gdb_byte *src;                /* First byte containing data to unpack */
2475   gdb_byte *unpacked;
2476   const int is_scalar = is_scalar_type (type);
2477   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2478   gdb::byte_vector staging;
2479
2480   type = ada_check_typedef (type);
2481
2482   if (obj == NULL)
2483     src = valaddr + offset;
2484   else
2485     src = value_contents (obj) + offset;
2486
2487   if (is_dynamic_type (type))
2488     {
2489       /* The length of TYPE might by dynamic, so we need to resolve
2490          TYPE in order to know its actual size, which we then use
2491          to create the contents buffer of the value we return.
2492          The difficulty is that the data containing our object is
2493          packed, and therefore maybe not at a byte boundary.  So, what
2494          we do, is unpack the data into a byte-aligned buffer, and then
2495          use that buffer as our object's value for resolving the type.  */
2496       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2497       staging.resize (staging_len);
2498
2499       ada_unpack_from_contents (src, bit_offset, bit_size,
2500                                 staging.data (), staging.size (),
2501                                 is_big_endian, has_negatives (type),
2502                                 is_scalar);
2503       type = resolve_dynamic_type (type, staging, 0);
2504       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2505         {
2506           /* This happens when the length of the object is dynamic,
2507              and is actually smaller than the space reserved for it.
2508              For instance, in an array of variant records, the bit_size
2509              we're given is the array stride, which is constant and
2510              normally equal to the maximum size of its element.
2511              But, in reality, each element only actually spans a portion
2512              of that stride.  */
2513           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2514         }
2515     }
2516
2517   if (obj == NULL)
2518     {
2519       v = allocate_value (type);
2520       src = valaddr + offset;
2521     }
2522   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2523     {
2524       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2525       gdb_byte *buf;
2526
2527       v = value_at (type, value_address (obj) + offset);
2528       buf = (gdb_byte *) alloca (src_len);
2529       read_memory (value_address (v), buf, src_len);
2530       src = buf;
2531     }
2532   else
2533     {
2534       v = allocate_value (type);
2535       src = value_contents (obj) + offset;
2536     }
2537
2538   if (obj != NULL)
2539     {
2540       long new_offset = offset;
2541
2542       set_value_component_location (v, obj);
2543       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2544       set_value_bitsize (v, bit_size);
2545       if (value_bitpos (v) >= HOST_CHAR_BIT)
2546         {
2547           ++new_offset;
2548           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2549         }
2550       set_value_offset (v, new_offset);
2551
2552       /* Also set the parent value.  This is needed when trying to
2553          assign a new value (in inferior memory).  */
2554       set_value_parent (v, obj);
2555     }
2556   else
2557     set_value_bitsize (v, bit_size);
2558   unpacked = value_contents_writeable (v);
2559
2560   if (bit_size == 0)
2561     {
2562       memset (unpacked, 0, TYPE_LENGTH (type));
2563       return v;
2564     }
2565
2566   if (staging.size () == TYPE_LENGTH (type))
2567     {
2568       /* Small short-cut: If we've unpacked the data into a buffer
2569          of the same size as TYPE's length, then we can reuse that,
2570          instead of doing the unpacking again.  */
2571       memcpy (unpacked, staging.data (), staging.size ());
2572     }
2573   else
2574     ada_unpack_from_contents (src, bit_offset, bit_size,
2575                               unpacked, TYPE_LENGTH (type),
2576                               is_big_endian, has_negatives (type), is_scalar);
2577
2578   return v;
2579 }
2580
2581 /* Store the contents of FROMVAL into the location of TOVAL.
2582    Return a new value with the location of TOVAL and contents of
2583    FROMVAL.   Handles assignment into packed fields that have
2584    floating-point or non-scalar types.  */
2585
2586 static struct value *
2587 ada_value_assign (struct value *toval, struct value *fromval)
2588 {
2589   struct type *type = value_type (toval);
2590   int bits = value_bitsize (toval);
2591
2592   toval = ada_coerce_ref (toval);
2593   fromval = ada_coerce_ref (fromval);
2594
2595   if (ada_is_direct_array_type (value_type (toval)))
2596     toval = ada_coerce_to_simple_array (toval);
2597   if (ada_is_direct_array_type (value_type (fromval)))
2598     fromval = ada_coerce_to_simple_array (fromval);
2599
2600   if (!deprecated_value_modifiable (toval))
2601     error (_("Left operand of assignment is not a modifiable lvalue."));
2602
2603   if (VALUE_LVAL (toval) == lval_memory
2604       && bits > 0
2605       && (type->code () == TYPE_CODE_FLT
2606           || type->code () == TYPE_CODE_STRUCT))
2607     {
2608       int len = (value_bitpos (toval)
2609                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2610       int from_size;
2611       gdb_byte *buffer = (gdb_byte *) alloca (len);
2612       struct value *val;
2613       CORE_ADDR to_addr = value_address (toval);
2614
2615       if (type->code () == TYPE_CODE_FLT)
2616         fromval = value_cast (type, fromval);
2617
2618       read_memory (to_addr, buffer, len);
2619       from_size = value_bitsize (fromval);
2620       if (from_size == 0)
2621         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2622
2623       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2624       ULONGEST from_offset = 0;
2625       if (is_big_endian && is_scalar_type (value_type (fromval)))
2626         from_offset = from_size - bits;
2627       copy_bitwise (buffer, value_bitpos (toval),
2628                     value_contents (fromval), from_offset,
2629                     bits, is_big_endian);
2630       write_memory_with_notification (to_addr, buffer, len);
2631
2632       val = value_copy (toval);
2633       memcpy (value_contents_raw (val), value_contents (fromval),
2634               TYPE_LENGTH (type));
2635       deprecated_set_value_type (val, type);
2636
2637       return val;
2638     }
2639
2640   return value_assign (toval, fromval);
2641 }
2642
2643
2644 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2645    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2646    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2647    COMPONENT, and not the inferior's memory.  The current contents
2648    of COMPONENT are ignored.
2649
2650    Although not part of the initial design, this function also works
2651    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2652    had a null address, and COMPONENT had an address which is equal to
2653    its offset inside CONTAINER.  */
2654
2655 static void
2656 value_assign_to_component (struct value *container, struct value *component,
2657                            struct value *val)
2658 {
2659   LONGEST offset_in_container =
2660     (LONGEST)  (value_address (component) - value_address (container));
2661   int bit_offset_in_container =
2662     value_bitpos (component) - value_bitpos (container);
2663   int bits;
2664
2665   val = value_cast (value_type (component), val);
2666
2667   if (value_bitsize (component) == 0)
2668     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2669   else
2670     bits = value_bitsize (component);
2671
2672   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2673     {
2674       int src_offset;
2675
2676       if (is_scalar_type (check_typedef (value_type (component))))
2677         src_offset
2678           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2679       else
2680         src_offset = 0;
2681       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2682                     value_bitpos (container) + bit_offset_in_container,
2683                     value_contents (val), src_offset, bits, 1);
2684     }
2685   else
2686     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2687                   value_bitpos (container) + bit_offset_in_container,
2688                   value_contents (val), 0, bits, 0);
2689 }
2690
2691 /* Determine if TYPE is an access to an unconstrained array.  */
2692
2693 bool
2694 ada_is_access_to_unconstrained_array (struct type *type)
2695 {
2696   return (type->code () == TYPE_CODE_TYPEDEF
2697           && is_thick_pntr (ada_typedef_target_type (type)));
2698 }
2699
2700 /* The value of the element of array ARR at the ARITY indices given in IND.
2701    ARR may be either a simple array, GNAT array descriptor, or pointer
2702    thereto.  */
2703
2704 struct value *
2705 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2706 {
2707   int k;
2708   struct value *elt;
2709   struct type *elt_type;
2710
2711   elt = ada_coerce_to_simple_array (arr);
2712
2713   elt_type = ada_check_typedef (value_type (elt));
2714   if (elt_type->code () == TYPE_CODE_ARRAY
2715       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2716     return value_subscript_packed (elt, arity, ind);
2717
2718   for (k = 0; k < arity; k += 1)
2719     {
2720       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2721
2722       if (elt_type->code () != TYPE_CODE_ARRAY)
2723         error (_("too many subscripts (%d expected)"), k);
2724
2725       elt = value_subscript (elt, pos_atr (ind[k]));
2726
2727       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2728           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2729         {
2730           /* The element is a typedef to an unconstrained array,
2731              except that the value_subscript call stripped the
2732              typedef layer.  The typedef layer is GNAT's way to
2733              specify that the element is, at the source level, an
2734              access to the unconstrained array, rather than the
2735              unconstrained array.  So, we need to restore that
2736              typedef layer, which we can do by forcing the element's
2737              type back to its original type. Otherwise, the returned
2738              value is going to be printed as the array, rather
2739              than as an access.  Another symptom of the same issue
2740              would be that an expression trying to dereference the
2741              element would also be improperly rejected.  */
2742           deprecated_set_value_type (elt, saved_elt_type);
2743         }
2744
2745       elt_type = ada_check_typedef (value_type (elt));
2746     }
2747
2748   return elt;
2749 }
2750
2751 /* Assuming ARR is a pointer to a GDB array, the value of the element
2752    of *ARR at the ARITY indices given in IND.
2753    Does not read the entire array into memory.
2754
2755    Note: Unlike what one would expect, this function is used instead of
2756    ada_value_subscript for basically all non-packed array types.  The reason
2757    for this is that a side effect of doing our own pointer arithmetics instead
2758    of relying on value_subscript is that there is no implicit typedef peeling.
2759    This is important for arrays of array accesses, where it allows us to
2760    preserve the fact that the array's element is an array access, where the
2761    access part os encoded in a typedef layer.  */
2762
2763 static struct value *
2764 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2765 {
2766   int k;
2767   struct value *array_ind = ada_value_ind (arr);
2768   struct type *type
2769     = check_typedef (value_enclosing_type (array_ind));
2770
2771   if (type->code () == TYPE_CODE_ARRAY
2772       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2773     return value_subscript_packed (array_ind, arity, ind);
2774
2775   for (k = 0; k < arity; k += 1)
2776     {
2777       LONGEST lwb, upb;
2778       struct value *lwb_value;
2779
2780       if (type->code () != TYPE_CODE_ARRAY)
2781         error (_("too many subscripts (%d expected)"), k);
2782       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2783                         value_copy (arr));
2784       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2785       lwb_value = value_from_longest (value_type (ind[k]), lwb);
2786       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2787       type = TYPE_TARGET_TYPE (type);
2788     }
2789
2790   return value_ind (arr);
2791 }
2792
2793 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2794    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2795    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2796    this array is LOW, as per Ada rules.  */
2797 static struct value *
2798 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2799                           int low, int high)
2800 {
2801   struct type *type0 = ada_check_typedef (type);
2802   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2803   struct type *index_type
2804     = create_static_range_type (NULL, base_index_type, low, high);
2805   struct type *slice_type = create_array_type_with_stride
2806                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2807                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2808                                TYPE_FIELD_BITSIZE (type0, 0));
2809   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2810   LONGEST base_low_pos, low_pos;
2811   CORE_ADDR base;
2812
2813   if (!discrete_position (base_index_type, low, &low_pos)
2814       || !discrete_position (base_index_type, base_low, &base_low_pos))
2815     {
2816       warning (_("unable to get positions in slice, use bounds instead"));
2817       low_pos = low;
2818       base_low_pos = base_low;
2819     }
2820
2821   base = value_as_address (array_ptr)
2822     + ((low_pos - base_low_pos)
2823        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2824   return value_at_lazy (slice_type, base);
2825 }
2826
2827
2828 static struct value *
2829 ada_value_slice (struct value *array, int low, int high)
2830 {
2831   struct type *type = ada_check_typedef (value_type (array));
2832   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2833   struct type *index_type
2834     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2835   struct type *slice_type = create_array_type_with_stride
2836                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2837                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2838                                TYPE_FIELD_BITSIZE (type, 0));
2839   LONGEST low_pos, high_pos;
2840
2841   if (!discrete_position (base_index_type, low, &low_pos)
2842       || !discrete_position (base_index_type, high, &high_pos))
2843     {
2844       warning (_("unable to get positions in slice, use bounds instead"));
2845       low_pos = low;
2846       high_pos = high;
2847     }
2848
2849   return value_cast (slice_type,
2850                      value_slice (array, low, high_pos - low_pos + 1));
2851 }
2852
2853 /* If type is a record type in the form of a standard GNAT array
2854    descriptor, returns the number of dimensions for type.  If arr is a
2855    simple array, returns the number of "array of"s that prefix its
2856    type designation.  Otherwise, returns 0.  */
2857
2858 int
2859 ada_array_arity (struct type *type)
2860 {
2861   int arity;
2862
2863   if (type == NULL)
2864     return 0;
2865
2866   type = desc_base_type (type);
2867
2868   arity = 0;
2869   if (type->code () == TYPE_CODE_STRUCT)
2870     return desc_arity (desc_bounds_type (type));
2871   else
2872     while (type->code () == TYPE_CODE_ARRAY)
2873       {
2874         arity += 1;
2875         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2876       }
2877
2878   return arity;
2879 }
2880
2881 /* If TYPE is a record type in the form of a standard GNAT array
2882    descriptor or a simple array type, returns the element type for
2883    TYPE after indexing by NINDICES indices, or by all indices if
2884    NINDICES is -1.  Otherwise, returns NULL.  */
2885
2886 struct type *
2887 ada_array_element_type (struct type *type, int nindices)
2888 {
2889   type = desc_base_type (type);
2890
2891   if (type->code () == TYPE_CODE_STRUCT)
2892     {
2893       int k;
2894       struct type *p_array_type;
2895
2896       p_array_type = desc_data_target_type (type);
2897
2898       k = ada_array_arity (type);
2899       if (k == 0)
2900         return NULL;
2901
2902       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2903       if (nindices >= 0 && k > nindices)
2904         k = nindices;
2905       while (k > 0 && p_array_type != NULL)
2906         {
2907           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2908           k -= 1;
2909         }
2910       return p_array_type;
2911     }
2912   else if (type->code () == TYPE_CODE_ARRAY)
2913     {
2914       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2915         {
2916           type = TYPE_TARGET_TYPE (type);
2917           nindices -= 1;
2918         }
2919       return type;
2920     }
2921
2922   return NULL;
2923 }
2924
2925 /* The type of nth index in arrays of given type (n numbering from 1).
2926    Does not examine memory.  Throws an error if N is invalid or TYPE
2927    is not an array type.  NAME is the name of the Ada attribute being
2928    evaluated ('range, 'first, 'last, or 'length); it is used in building
2929    the error message.  */
2930
2931 static struct type *
2932 ada_index_type (struct type *type, int n, const char *name)
2933 {
2934   struct type *result_type;
2935
2936   type = desc_base_type (type);
2937
2938   if (n < 0 || n > ada_array_arity (type))
2939     error (_("invalid dimension number to '%s"), name);
2940
2941   if (ada_is_simple_array_type (type))
2942     {
2943       int i;
2944
2945       for (i = 1; i < n; i += 1)
2946         type = TYPE_TARGET_TYPE (type);
2947       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2948       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2949          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2950          perhaps stabsread.c would make more sense.  */
2951       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2952         result_type = NULL;
2953     }
2954   else
2955     {
2956       result_type = desc_index_type (desc_bounds_type (type), n);
2957       if (result_type == NULL)
2958         error (_("attempt to take bound of something that is not an array"));
2959     }
2960
2961   return result_type;
2962 }
2963
2964 /* Given that arr is an array type, returns the lower bound of the
2965    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2966    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2967    array-descriptor type.  It works for other arrays with bounds supplied
2968    by run-time quantities other than discriminants.  */
2969
2970 static LONGEST
2971 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2972 {
2973   struct type *type, *index_type_desc, *index_type;
2974   int i;
2975
2976   gdb_assert (which == 0 || which == 1);
2977
2978   if (ada_is_constrained_packed_array_type (arr_type))
2979     arr_type = decode_constrained_packed_array_type (arr_type);
2980
2981   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2982     return (LONGEST) - which;
2983
2984   if (arr_type->code () == TYPE_CODE_PTR)
2985     type = TYPE_TARGET_TYPE (arr_type);
2986   else
2987     type = arr_type;
2988
2989   if (TYPE_FIXED_INSTANCE (type))
2990     {
2991       /* The array has already been fixed, so we do not need to
2992          check the parallel ___XA type again.  That encoding has
2993          already been applied, so ignore it now.  */
2994       index_type_desc = NULL;
2995     }
2996   else
2997     {
2998       index_type_desc = ada_find_parallel_type (type, "___XA");
2999       ada_fixup_array_indexes_type (index_type_desc);
3000     }
3001
3002   if (index_type_desc != NULL)
3003     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3004                                       NULL);
3005   else
3006     {
3007       struct type *elt_type = check_typedef (type);
3008
3009       for (i = 1; i < n; i++)
3010         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3011
3012       index_type = TYPE_INDEX_TYPE (elt_type);
3013     }
3014
3015   return
3016     (LONGEST) (which == 0
3017                ? ada_discrete_type_low_bound (index_type)
3018                : ada_discrete_type_high_bound (index_type));
3019 }
3020
3021 /* Given that arr is an array value, returns the lower bound of the
3022    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3023    WHICH is 1.  This routine will also work for arrays with bounds
3024    supplied by run-time quantities other than discriminants.  */
3025
3026 static LONGEST
3027 ada_array_bound (struct value *arr, int n, int which)
3028 {
3029   struct type *arr_type;
3030
3031   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3032     arr = value_ind (arr);
3033   arr_type = value_enclosing_type (arr);
3034
3035   if (ada_is_constrained_packed_array_type (arr_type))
3036     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3037   else if (ada_is_simple_array_type (arr_type))
3038     return ada_array_bound_from_type (arr_type, n, which);
3039   else
3040     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3041 }
3042
3043 /* Given that arr is an array value, returns the length of the
3044    nth index.  This routine will also work for arrays with bounds
3045    supplied by run-time quantities other than discriminants.
3046    Does not work for arrays indexed by enumeration types with representation
3047    clauses at the moment.  */
3048
3049 static LONGEST
3050 ada_array_length (struct value *arr, int n)
3051 {
3052   struct type *arr_type, *index_type;
3053   int low, high;
3054
3055   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3056     arr = value_ind (arr);
3057   arr_type = value_enclosing_type (arr);
3058
3059   if (ada_is_constrained_packed_array_type (arr_type))
3060     return ada_array_length (decode_constrained_packed_array (arr), n);
3061
3062   if (ada_is_simple_array_type (arr_type))
3063     {
3064       low = ada_array_bound_from_type (arr_type, n, 0);
3065       high = ada_array_bound_from_type (arr_type, n, 1);
3066     }
3067   else
3068     {
3069       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3070       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3071     }
3072
3073   arr_type = check_typedef (arr_type);
3074   index_type = ada_index_type (arr_type, n, "length");
3075   if (index_type != NULL)
3076     {
3077       struct type *base_type;
3078       if (index_type->code () == TYPE_CODE_RANGE)
3079         base_type = TYPE_TARGET_TYPE (index_type);
3080       else
3081         base_type = index_type;
3082
3083       low = pos_atr (value_from_longest (base_type, low));
3084       high = pos_atr (value_from_longest (base_type, high));
3085     }
3086   return high - low + 1;
3087 }
3088
3089 /* An array whose type is that of ARR_TYPE (an array type), with
3090    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3091    less than LOW, then LOW-1 is used.  */
3092
3093 static struct value *
3094 empty_array (struct type *arr_type, int low, int high)
3095 {
3096   struct type *arr_type0 = ada_check_typedef (arr_type);
3097   struct type *index_type
3098     = create_static_range_type
3099         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3100          high < low ? low - 1 : high);
3101   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3102
3103   return allocate_value (create_array_type (NULL, elt_type, index_type));
3104 }
3105 \f
3106
3107                                 /* Name resolution */
3108
3109 /* The "decoded" name for the user-definable Ada operator corresponding
3110    to OP.  */
3111
3112 static const char *
3113 ada_decoded_op_name (enum exp_opcode op)
3114 {
3115   int i;
3116
3117   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3118     {
3119       if (ada_opname_table[i].op == op)
3120         return ada_opname_table[i].decoded;
3121     }
3122   error (_("Could not find operator name for opcode"));
3123 }
3124
3125 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3126    in a listing of choices during disambiguation (see sort_choices, below).
3127    The idea is that overloadings of a subprogram name from the
3128    same package should sort in their source order.  We settle for ordering
3129    such symbols by their trailing number (__N  or $N).  */
3130
3131 static int
3132 encoded_ordered_before (const char *N0, const char *N1)
3133 {
3134   if (N1 == NULL)
3135     return 0;
3136   else if (N0 == NULL)
3137     return 1;
3138   else
3139     {
3140       int k0, k1;
3141
3142       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3143         ;
3144       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3145         ;
3146       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3147           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3148         {
3149           int n0, n1;
3150
3151           n0 = k0;
3152           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3153             n0 -= 1;
3154           n1 = k1;
3155           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3156             n1 -= 1;
3157           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3158             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3159         }
3160       return (strcmp (N0, N1) < 0);
3161     }
3162 }
3163
3164 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3165    encoded names.  */
3166
3167 static void
3168 sort_choices (struct block_symbol syms[], int nsyms)
3169 {
3170   int i;
3171
3172   for (i = 1; i < nsyms; i += 1)
3173     {
3174       struct block_symbol sym = syms[i];
3175       int j;
3176
3177       for (j = i - 1; j >= 0; j -= 1)
3178         {
3179           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3180                                       sym.symbol->linkage_name ()))
3181             break;
3182           syms[j + 1] = syms[j];
3183         }
3184       syms[j + 1] = sym;
3185     }
3186 }
3187
3188 /* Whether GDB should display formals and return types for functions in the
3189    overloads selection menu.  */
3190 static bool print_signatures = true;
3191
3192 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3193    all but functions, the signature is just the name of the symbol.  For
3194    functions, this is the name of the function, the list of types for formals
3195    and the return type (if any).  */
3196
3197 static void
3198 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3199                             const struct type_print_options *flags)
3200 {
3201   struct type *type = SYMBOL_TYPE (sym);
3202
3203   fprintf_filtered (stream, "%s", sym->print_name ());
3204   if (!print_signatures
3205       || type == NULL
3206       || type->code () != TYPE_CODE_FUNC)
3207     return;
3208
3209   if (type->num_fields () > 0)
3210     {
3211       int i;
3212
3213       fprintf_filtered (stream, " (");
3214       for (i = 0; i < type->num_fields (); ++i)
3215         {
3216           if (i > 0)
3217             fprintf_filtered (stream, "; ");
3218           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3219                           flags);
3220         }
3221       fprintf_filtered (stream, ")");
3222     }
3223   if (TYPE_TARGET_TYPE (type) != NULL
3224       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3225     {
3226       fprintf_filtered (stream, " return ");
3227       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3228     }
3229 }
3230
3231 /* Read and validate a set of numeric choices from the user in the
3232    range 0 .. N_CHOICES-1.  Place the results in increasing
3233    order in CHOICES[0 .. N-1], and return N.
3234
3235    The user types choices as a sequence of numbers on one line
3236    separated by blanks, encoding them as follows:
3237
3238      + A choice of 0 means to cancel the selection, throwing an error.
3239      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3240      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3241
3242    The user is not allowed to choose more than MAX_RESULTS values.
3243
3244    ANNOTATION_SUFFIX, if present, is used to annotate the input
3245    prompts (for use with the -f switch).  */
3246
3247 static int
3248 get_selections (int *choices, int n_choices, int max_results,
3249                 int is_all_choice, const char *annotation_suffix)
3250 {
3251   const char *args;
3252   const char *prompt;
3253   int n_chosen;
3254   int first_choice = is_all_choice ? 2 : 1;
3255
3256   prompt = getenv ("PS2");
3257   if (prompt == NULL)
3258     prompt = "> ";
3259
3260   args = command_line_input (prompt, annotation_suffix);
3261
3262   if (args == NULL)
3263     error_no_arg (_("one or more choice numbers"));
3264
3265   n_chosen = 0;
3266
3267   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3268      order, as given in args.  Choices are validated.  */
3269   while (1)
3270     {
3271       char *args2;
3272       int choice, j;
3273
3274       args = skip_spaces (args);
3275       if (*args == '\0' && n_chosen == 0)
3276         error_no_arg (_("one or more choice numbers"));
3277       else if (*args == '\0')
3278         break;
3279
3280       choice = strtol (args, &args2, 10);
3281       if (args == args2 || choice < 0
3282           || choice > n_choices + first_choice - 1)
3283         error (_("Argument must be choice number"));
3284       args = args2;
3285
3286       if (choice == 0)
3287         error (_("cancelled"));
3288
3289       if (choice < first_choice)
3290         {
3291           n_chosen = n_choices;
3292           for (j = 0; j < n_choices; j += 1)
3293             choices[j] = j;
3294           break;
3295         }
3296       choice -= first_choice;
3297
3298       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3299         {
3300         }
3301
3302       if (j < 0 || choice != choices[j])
3303         {
3304           int k;
3305
3306           for (k = n_chosen - 1; k > j; k -= 1)
3307             choices[k + 1] = choices[k];
3308           choices[j + 1] = choice;
3309           n_chosen += 1;
3310         }
3311     }
3312
3313   if (n_chosen > max_results)
3314     error (_("Select no more than %d of the above"), max_results);
3315
3316   return n_chosen;
3317 }
3318
3319 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3320    by asking the user (if necessary), returning the number selected,
3321    and setting the first elements of SYMS items.  Error if no symbols
3322    selected.  */
3323
3324 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3325    to be re-integrated one of these days.  */
3326
3327 static int
3328 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3329 {
3330   int i;
3331   int *chosen = XALLOCAVEC (int , nsyms);
3332   int n_chosen;
3333   int first_choice = (max_results == 1) ? 1 : 2;
3334   const char *select_mode = multiple_symbols_select_mode ();
3335
3336   if (max_results < 1)
3337     error (_("Request to select 0 symbols!"));
3338   if (nsyms <= 1)
3339     return nsyms;
3340
3341   if (select_mode == multiple_symbols_cancel)
3342     error (_("\
3343 canceled because the command is ambiguous\n\
3344 See set/show multiple-symbol."));
3345
3346   /* If select_mode is "all", then return all possible symbols.
3347      Only do that if more than one symbol can be selected, of course.
3348      Otherwise, display the menu as usual.  */
3349   if (select_mode == multiple_symbols_all && max_results > 1)
3350     return nsyms;
3351
3352   printf_filtered (_("[0] cancel\n"));
3353   if (max_results > 1)
3354     printf_filtered (_("[1] all\n"));
3355
3356   sort_choices (syms, nsyms);
3357
3358   for (i = 0; i < nsyms; i += 1)
3359     {
3360       if (syms[i].symbol == NULL)
3361         continue;
3362
3363       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3364         {
3365           struct symtab_and_line sal =
3366             find_function_start_sal (syms[i].symbol, 1);
3367
3368           printf_filtered ("[%d] ", i + first_choice);
3369           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3370                                       &type_print_raw_options);
3371           if (sal.symtab == NULL)
3372             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3373                              metadata_style.style ().ptr (), nullptr, sal.line);
3374           else
3375             printf_filtered
3376               (_(" at %ps:%d\n"),
3377                styled_string (file_name_style.style (),
3378                               symtab_to_filename_for_display (sal.symtab)),
3379                sal.line);
3380           continue;
3381         }
3382       else
3383         {
3384           int is_enumeral =
3385             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3386              && SYMBOL_TYPE (syms[i].symbol) != NULL
3387              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3388           struct symtab *symtab = NULL;
3389
3390           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3391             symtab = symbol_symtab (syms[i].symbol);
3392
3393           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3394             {
3395               printf_filtered ("[%d] ", i + first_choice);
3396               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3397                                           &type_print_raw_options);
3398               printf_filtered (_(" at %s:%d\n"),
3399                                symtab_to_filename_for_display (symtab),
3400                                SYMBOL_LINE (syms[i].symbol));
3401             }
3402           else if (is_enumeral
3403                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3404             {
3405               printf_filtered (("[%d] "), i + first_choice);
3406               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3407                               gdb_stdout, -1, 0, &type_print_raw_options);
3408               printf_filtered (_("'(%s) (enumeral)\n"),
3409                                syms[i].symbol->print_name ());
3410             }
3411           else
3412             {
3413               printf_filtered ("[%d] ", i + first_choice);
3414               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3415                                           &type_print_raw_options);
3416
3417               if (symtab != NULL)
3418                 printf_filtered (is_enumeral
3419                                  ? _(" in %s (enumeral)\n")
3420                                  : _(" at %s:?\n"),
3421                                  symtab_to_filename_for_display (symtab));
3422               else
3423                 printf_filtered (is_enumeral
3424                                  ? _(" (enumeral)\n")
3425                                  : _(" at ?\n"));
3426             }
3427         }
3428     }
3429
3430   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3431                              "overload-choice");
3432
3433   for (i = 0; i < n_chosen; i += 1)
3434     syms[i] = syms[chosen[i]];
3435
3436   return n_chosen;
3437 }
3438
3439 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3440    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3441    undefined namespace) and converts operators that are
3442    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3443    non-null, it provides a preferred result type [at the moment, only
3444    type void has any effect---causing procedures to be preferred over
3445    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3446    return type is preferred.  May change (expand) *EXP.  */
3447
3448 static void
3449 resolve (expression_up *expp, int void_context_p, int parse_completion,
3450          innermost_block_tracker *tracker)
3451 {
3452   struct type *context_type = NULL;
3453   int pc = 0;
3454
3455   if (void_context_p)
3456     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3457
3458   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3459 }
3460
3461 /* Resolve the operator of the subexpression beginning at
3462    position *POS of *EXPP.  "Resolving" consists of replacing
3463    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3464    with their resolutions, replacing built-in operators with
3465    function calls to user-defined operators, where appropriate, and,
3466    when DEPROCEDURE_P is non-zero, converting function-valued variables
3467    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3468    are as in ada_resolve, above.  */
3469
3470 static struct value *
3471 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3472                 struct type *context_type, int parse_completion,
3473                 innermost_block_tracker *tracker)
3474 {
3475   int pc = *pos;
3476   int i;
3477   struct expression *exp;       /* Convenience: == *expp.  */
3478   enum exp_opcode op = (*expp)->elts[pc].opcode;
3479   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3480   int nargs;                    /* Number of operands.  */
3481   int oplen;
3482
3483   argvec = NULL;
3484   nargs = 0;
3485   exp = expp->get ();
3486
3487   /* Pass one: resolve operands, saving their types and updating *pos,
3488      if needed.  */
3489   switch (op)
3490     {
3491     case OP_FUNCALL:
3492       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3493           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3494         *pos += 7;
3495       else
3496         {
3497           *pos += 3;
3498           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3499         }
3500       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3501       break;
3502
3503     case UNOP_ADDR:
3504       *pos += 1;
3505       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3506       break;
3507
3508     case UNOP_QUAL:
3509       *pos += 3;
3510       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3511                       parse_completion, tracker);
3512       break;
3513
3514     case OP_ATR_MODULUS:
3515     case OP_ATR_SIZE:
3516     case OP_ATR_TAG:
3517     case OP_ATR_FIRST:
3518     case OP_ATR_LAST:
3519     case OP_ATR_LENGTH:
3520     case OP_ATR_POS:
3521     case OP_ATR_VAL:
3522     case OP_ATR_MIN:
3523     case OP_ATR_MAX:
3524     case TERNOP_IN_RANGE:
3525     case BINOP_IN_BOUNDS:
3526     case UNOP_IN_RANGE:
3527     case OP_AGGREGATE:
3528     case OP_OTHERS:
3529     case OP_CHOICES:
3530     case OP_POSITIONAL:
3531     case OP_DISCRETE_RANGE:
3532     case OP_NAME:
3533       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3534       *pos += oplen;
3535       break;
3536
3537     case BINOP_ASSIGN:
3538       {
3539         struct value *arg1;
3540
3541         *pos += 1;
3542         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3543         if (arg1 == NULL)
3544           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3545         else
3546           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3547                           tracker);
3548         break;
3549       }
3550
3551     case UNOP_CAST:
3552       *pos += 3;
3553       nargs = 1;
3554       break;
3555
3556     case BINOP_ADD:
3557     case BINOP_SUB:
3558     case BINOP_MUL:
3559     case BINOP_DIV:
3560     case BINOP_REM:
3561     case BINOP_MOD:
3562     case BINOP_EXP:
3563     case BINOP_CONCAT:
3564     case BINOP_LOGICAL_AND:
3565     case BINOP_LOGICAL_OR:
3566     case BINOP_BITWISE_AND:
3567     case BINOP_BITWISE_IOR:
3568     case BINOP_BITWISE_XOR:
3569
3570     case BINOP_EQUAL:
3571     case BINOP_NOTEQUAL:
3572     case BINOP_LESS:
3573     case BINOP_GTR:
3574     case BINOP_LEQ:
3575     case BINOP_GEQ:
3576
3577     case BINOP_REPEAT:
3578     case BINOP_SUBSCRIPT:
3579     case BINOP_COMMA:
3580       *pos += 1;
3581       nargs = 2;
3582       break;
3583
3584     case UNOP_NEG:
3585     case UNOP_PLUS:
3586     case UNOP_LOGICAL_NOT:
3587     case UNOP_ABS:
3588     case UNOP_IND:
3589       *pos += 1;
3590       nargs = 1;
3591       break;
3592
3593     case OP_LONG:
3594     case OP_FLOAT:
3595     case OP_VAR_VALUE:
3596     case OP_VAR_MSYM_VALUE:
3597       *pos += 4;
3598       break;
3599
3600     case OP_TYPE:
3601     case OP_BOOL:
3602     case OP_LAST:
3603     case OP_INTERNALVAR:
3604       *pos += 3;
3605       break;
3606
3607     case UNOP_MEMVAL:
3608       *pos += 3;
3609       nargs = 1;
3610       break;
3611
3612     case OP_REGISTER:
3613       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3614       break;
3615
3616     case STRUCTOP_STRUCT:
3617       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3618       nargs = 1;
3619       break;
3620
3621     case TERNOP_SLICE:
3622       *pos += 1;
3623       nargs = 3;
3624       break;
3625
3626     case OP_STRING:
3627       break;
3628
3629     default:
3630       error (_("Unexpected operator during name resolution"));
3631     }
3632
3633   argvec = XALLOCAVEC (struct value *, nargs + 1);
3634   for (i = 0; i < nargs; i += 1)
3635     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3636                                 tracker);
3637   argvec[i] = NULL;
3638   exp = expp->get ();
3639
3640   /* Pass two: perform any resolution on principal operator.  */
3641   switch (op)
3642     {
3643     default:
3644       break;
3645
3646     case OP_VAR_VALUE:
3647       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3648         {
3649           std::vector<struct block_symbol> candidates;
3650           int n_candidates;
3651
3652           n_candidates =
3653             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3654                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3655                                     &candidates);
3656
3657           if (n_candidates > 1)
3658             {
3659               /* Types tend to get re-introduced locally, so if there
3660                  are any local symbols that are not types, first filter
3661                  out all types.  */
3662               int j;
3663               for (j = 0; j < n_candidates; j += 1)
3664                 switch (SYMBOL_CLASS (candidates[j].symbol))
3665                   {
3666                   case LOC_REGISTER:
3667                   case LOC_ARG:
3668                   case LOC_REF_ARG:
3669                   case LOC_REGPARM_ADDR:
3670                   case LOC_LOCAL:
3671                   case LOC_COMPUTED:
3672                     goto FoundNonType;
3673                   default:
3674                     break;
3675                   }
3676             FoundNonType:
3677               if (j < n_candidates)
3678                 {
3679                   j = 0;
3680                   while (j < n_candidates)
3681                     {
3682                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3683                         {
3684                           candidates[j] = candidates[n_candidates - 1];
3685                           n_candidates -= 1;
3686                         }
3687                       else
3688                         j += 1;
3689                     }
3690                 }
3691             }
3692
3693           if (n_candidates == 0)
3694             error (_("No definition found for %s"),
3695                    exp->elts[pc + 2].symbol->print_name ());
3696           else if (n_candidates == 1)
3697             i = 0;
3698           else if (deprocedure_p
3699                    && !is_nonfunction (candidates.data (), n_candidates))
3700             {
3701               i = ada_resolve_function
3702                 (candidates.data (), n_candidates, NULL, 0,
3703                  exp->elts[pc + 2].symbol->linkage_name (),
3704                  context_type, parse_completion);
3705               if (i < 0)
3706                 error (_("Could not find a match for %s"),
3707                        exp->elts[pc + 2].symbol->print_name ());
3708             }
3709           else
3710             {
3711               printf_filtered (_("Multiple matches for %s\n"),
3712                                exp->elts[pc + 2].symbol->print_name ());
3713               user_select_syms (candidates.data (), n_candidates, 1);
3714               i = 0;
3715             }
3716
3717           exp->elts[pc + 1].block = candidates[i].block;
3718           exp->elts[pc + 2].symbol = candidates[i].symbol;
3719           tracker->update (candidates[i]);
3720         }
3721
3722       if (deprocedure_p
3723           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3724               == TYPE_CODE_FUNC))
3725         {
3726           replace_operator_with_call (expp, pc, 0, 4,
3727                                       exp->elts[pc + 2].symbol,
3728                                       exp->elts[pc + 1].block);
3729           exp = expp->get ();
3730         }
3731       break;
3732
3733     case OP_FUNCALL:
3734       {
3735         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3736             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3737           {
3738             std::vector<struct block_symbol> candidates;
3739             int n_candidates;
3740
3741             n_candidates =
3742               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3743                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3744                                       &candidates);
3745
3746             if (n_candidates == 1)
3747               i = 0;
3748             else
3749               {
3750                 i = ada_resolve_function
3751                   (candidates.data (), n_candidates,
3752                    argvec, nargs,
3753                    exp->elts[pc + 5].symbol->linkage_name (),
3754                    context_type, parse_completion);
3755                 if (i < 0)
3756                   error (_("Could not find a match for %s"),
3757                          exp->elts[pc + 5].symbol->print_name ());
3758               }
3759
3760             exp->elts[pc + 4].block = candidates[i].block;
3761             exp->elts[pc + 5].symbol = candidates[i].symbol;
3762             tracker->update (candidates[i]);
3763           }
3764       }
3765       break;
3766     case BINOP_ADD:
3767     case BINOP_SUB:
3768     case BINOP_MUL:
3769     case BINOP_DIV:
3770     case BINOP_REM:
3771     case BINOP_MOD:
3772     case BINOP_CONCAT:
3773     case BINOP_BITWISE_AND:
3774     case BINOP_BITWISE_IOR:
3775     case BINOP_BITWISE_XOR:
3776     case BINOP_EQUAL:
3777     case BINOP_NOTEQUAL:
3778     case BINOP_LESS:
3779     case BINOP_GTR:
3780     case BINOP_LEQ:
3781     case BINOP_GEQ:
3782     case BINOP_EXP:
3783     case UNOP_NEG:
3784     case UNOP_PLUS:
3785     case UNOP_LOGICAL_NOT:
3786     case UNOP_ABS:
3787       if (possible_user_operator_p (op, argvec))
3788         {
3789           std::vector<struct block_symbol> candidates;
3790           int n_candidates;
3791
3792           n_candidates =
3793             ada_lookup_symbol_list (ada_decoded_op_name (op),
3794                                     NULL, VAR_DOMAIN,
3795                                     &candidates);
3796
3797           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3798                                     nargs, ada_decoded_op_name (op), NULL,
3799                                     parse_completion);
3800           if (i < 0)
3801             break;
3802
3803           replace_operator_with_call (expp, pc, nargs, 1,
3804                                       candidates[i].symbol,
3805                                       candidates[i].block);
3806           exp = expp->get ();
3807         }
3808       break;
3809
3810     case OP_TYPE:
3811     case OP_REGISTER:
3812       return NULL;
3813     }
3814
3815   *pos = pc;
3816   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3817     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3818                                     exp->elts[pc + 1].objfile,
3819                                     exp->elts[pc + 2].msymbol);
3820   else
3821     return evaluate_subexp_type (exp, pos);
3822 }
3823
3824 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3825    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3826    a non-pointer.  */
3827 /* The term "match" here is rather loose.  The match is heuristic and
3828    liberal.  */
3829
3830 static int
3831 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3832 {
3833   ftype = ada_check_typedef (ftype);
3834   atype = ada_check_typedef (atype);
3835
3836   if (ftype->code () == TYPE_CODE_REF)
3837     ftype = TYPE_TARGET_TYPE (ftype);
3838   if (atype->code () == TYPE_CODE_REF)
3839     atype = TYPE_TARGET_TYPE (atype);
3840
3841   switch (ftype->code ())
3842     {
3843     default:
3844       return ftype->code () == atype->code ();
3845     case TYPE_CODE_PTR:
3846       if (atype->code () == TYPE_CODE_PTR)
3847         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3848                                TYPE_TARGET_TYPE (atype), 0);
3849       else
3850         return (may_deref
3851                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3852     case TYPE_CODE_INT:
3853     case TYPE_CODE_ENUM:
3854     case TYPE_CODE_RANGE:
3855       switch (atype->code ())
3856         {
3857         case TYPE_CODE_INT:
3858         case TYPE_CODE_ENUM:
3859         case TYPE_CODE_RANGE:
3860           return 1;
3861         default:
3862           return 0;
3863         }
3864
3865     case TYPE_CODE_ARRAY:
3866       return (atype->code () == TYPE_CODE_ARRAY
3867               || ada_is_array_descriptor_type (atype));
3868
3869     case TYPE_CODE_STRUCT:
3870       if (ada_is_array_descriptor_type (ftype))
3871         return (atype->code () == TYPE_CODE_ARRAY
3872                 || ada_is_array_descriptor_type (atype));
3873       else
3874         return (atype->code () == TYPE_CODE_STRUCT
3875                 && !ada_is_array_descriptor_type (atype));
3876
3877     case TYPE_CODE_UNION:
3878     case TYPE_CODE_FLT:
3879       return (atype->code () == ftype->code ());
3880     }
3881 }
3882
3883 /* Return non-zero if the formals of FUNC "sufficiently match" the
3884    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3885    may also be an enumeral, in which case it is treated as a 0-
3886    argument function.  */
3887
3888 static int
3889 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3890 {
3891   int i;
3892   struct type *func_type = SYMBOL_TYPE (func);
3893
3894   if (SYMBOL_CLASS (func) == LOC_CONST
3895       && func_type->code () == TYPE_CODE_ENUM)
3896     return (n_actuals == 0);
3897   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3898     return 0;
3899
3900   if (func_type->num_fields () != n_actuals)
3901     return 0;
3902
3903   for (i = 0; i < n_actuals; i += 1)
3904     {
3905       if (actuals[i] == NULL)
3906         return 0;
3907       else
3908         {
3909           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3910                                                                    i));
3911           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3912
3913           if (!ada_type_match (ftype, atype, 1))
3914             return 0;
3915         }
3916     }
3917   return 1;
3918 }
3919
3920 /* False iff function type FUNC_TYPE definitely does not produce a value
3921    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3922    FUNC_TYPE is not a valid function type with a non-null return type
3923    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3924
3925 static int
3926 return_match (struct type *func_type, struct type *context_type)
3927 {
3928   struct type *return_type;
3929
3930   if (func_type == NULL)
3931     return 1;
3932
3933   if (func_type->code () == TYPE_CODE_FUNC)
3934     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3935   else
3936     return_type = get_base_type (func_type);
3937   if (return_type == NULL)
3938     return 1;
3939
3940   context_type = get_base_type (context_type);
3941
3942   if (return_type->code () == TYPE_CODE_ENUM)
3943     return context_type == NULL || return_type == context_type;
3944   else if (context_type == NULL)
3945     return return_type->code () != TYPE_CODE_VOID;
3946   else
3947     return return_type->code () == context_type->code ();
3948 }
3949
3950
3951 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3952    function (if any) that matches the types of the NARGS arguments in
3953    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3954    that returns that type, then eliminate matches that don't.  If
3955    CONTEXT_TYPE is void and there is at least one match that does not
3956    return void, eliminate all matches that do.
3957
3958    Asks the user if there is more than one match remaining.  Returns -1
3959    if there is no such symbol or none is selected.  NAME is used
3960    solely for messages.  May re-arrange and modify SYMS in
3961    the process; the index returned is for the modified vector.  */
3962
3963 static int
3964 ada_resolve_function (struct block_symbol syms[],
3965                       int nsyms, struct value **args, int nargs,
3966                       const char *name, struct type *context_type,
3967                       int parse_completion)
3968 {
3969   int fallback;
3970   int k;
3971   int m;                        /* Number of hits */
3972
3973   m = 0;
3974   /* In the first pass of the loop, we only accept functions matching
3975      context_type.  If none are found, we add a second pass of the loop
3976      where every function is accepted.  */
3977   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3978     {
3979       for (k = 0; k < nsyms; k += 1)
3980         {
3981           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3982
3983           if (ada_args_match (syms[k].symbol, args, nargs)
3984               && (fallback || return_match (type, context_type)))
3985             {
3986               syms[m] = syms[k];
3987               m += 1;
3988             }
3989         }
3990     }
3991
3992   /* If we got multiple matches, ask the user which one to use.  Don't do this
3993      interactive thing during completion, though, as the purpose of the
3994      completion is providing a list of all possible matches.  Prompting the
3995      user to filter it down would be completely unexpected in this case.  */
3996   if (m == 0)
3997     return -1;
3998   else if (m > 1 && !parse_completion)
3999     {
4000       printf_filtered (_("Multiple matches for %s\n"), name);
4001       user_select_syms (syms, m, 1);
4002       return 0;
4003     }
4004   return 0;
4005 }
4006
4007 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4008    on the function identified by SYM and BLOCK, and taking NARGS
4009    arguments.  Update *EXPP as needed to hold more space.  */
4010
4011 static void
4012 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4013                             int oplen, struct symbol *sym,
4014                             const struct block *block)
4015 {
4016   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4017      symbol, -oplen for operator being replaced).  */
4018   struct expression *newexp = (struct expression *)
4019     xzalloc (sizeof (struct expression)
4020              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4021   struct expression *exp = expp->get ();
4022
4023   newexp->nelts = exp->nelts + 7 - oplen;
4024   newexp->language_defn = exp->language_defn;
4025   newexp->gdbarch = exp->gdbarch;
4026   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4027   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4028           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4029
4030   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4031   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4032
4033   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4034   newexp->elts[pc + 4].block = block;
4035   newexp->elts[pc + 5].symbol = sym;
4036
4037   expp->reset (newexp);
4038 }
4039
4040 /* Type-class predicates */
4041
4042 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4043    or FLOAT).  */
4044
4045 static int
4046 numeric_type_p (struct type *type)
4047 {
4048   if (type == NULL)
4049     return 0;
4050   else
4051     {
4052       switch (type->code ())
4053         {
4054         case TYPE_CODE_INT:
4055         case TYPE_CODE_FLT:
4056           return 1;
4057         case TYPE_CODE_RANGE:
4058           return (type == TYPE_TARGET_TYPE (type)
4059                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4060         default:
4061           return 0;
4062         }
4063     }
4064 }
4065
4066 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4067
4068 static int
4069 integer_type_p (struct type *type)
4070 {
4071   if (type == NULL)
4072     return 0;
4073   else
4074     {
4075       switch (type->code ())
4076         {
4077         case TYPE_CODE_INT:
4078           return 1;
4079         case TYPE_CODE_RANGE:
4080           return (type == TYPE_TARGET_TYPE (type)
4081                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4082         default:
4083           return 0;
4084         }
4085     }
4086 }
4087
4088 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4089
4090 static int
4091 scalar_type_p (struct type *type)
4092 {
4093   if (type == NULL)
4094     return 0;
4095   else
4096     {
4097       switch (type->code ())
4098         {
4099         case TYPE_CODE_INT:
4100         case TYPE_CODE_RANGE:
4101         case TYPE_CODE_ENUM:
4102         case TYPE_CODE_FLT:
4103           return 1;
4104         default:
4105           return 0;
4106         }
4107     }
4108 }
4109
4110 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4111
4112 static int
4113 discrete_type_p (struct type *type)
4114 {
4115   if (type == NULL)
4116     return 0;
4117   else
4118     {
4119       switch (type->code ())
4120         {
4121         case TYPE_CODE_INT:
4122         case TYPE_CODE_RANGE:
4123         case TYPE_CODE_ENUM:
4124         case TYPE_CODE_BOOL:
4125           return 1;
4126         default:
4127           return 0;
4128         }
4129     }
4130 }
4131
4132 /* Returns non-zero if OP with operands in the vector ARGS could be
4133    a user-defined function.  Errs on the side of pre-defined operators
4134    (i.e., result 0).  */
4135
4136 static int
4137 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4138 {
4139   struct type *type0 =
4140     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4141   struct type *type1 =
4142     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4143
4144   if (type0 == NULL)
4145     return 0;
4146
4147   switch (op)
4148     {
4149     default:
4150       return 0;
4151
4152     case BINOP_ADD:
4153     case BINOP_SUB:
4154     case BINOP_MUL:
4155     case BINOP_DIV:
4156       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4157
4158     case BINOP_REM:
4159     case BINOP_MOD:
4160     case BINOP_BITWISE_AND:
4161     case BINOP_BITWISE_IOR:
4162     case BINOP_BITWISE_XOR:
4163       return (!(integer_type_p (type0) && integer_type_p (type1)));
4164
4165     case BINOP_EQUAL:
4166     case BINOP_NOTEQUAL:
4167     case BINOP_LESS:
4168     case BINOP_GTR:
4169     case BINOP_LEQ:
4170     case BINOP_GEQ:
4171       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4172
4173     case BINOP_CONCAT:
4174       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4175
4176     case BINOP_EXP:
4177       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4178
4179     case UNOP_NEG:
4180     case UNOP_PLUS:
4181     case UNOP_LOGICAL_NOT:
4182     case UNOP_ABS:
4183       return (!numeric_type_p (type0));
4184
4185     }
4186 }
4187 \f
4188                                 /* Renaming */
4189
4190 /* NOTES: 
4191
4192    1. In the following, we assume that a renaming type's name may
4193       have an ___XD suffix.  It would be nice if this went away at some
4194       point.
4195    2. We handle both the (old) purely type-based representation of 
4196       renamings and the (new) variable-based encoding.  At some point,
4197       it is devoutly to be hoped that the former goes away 
4198       (FIXME: hilfinger-2007-07-09).
4199    3. Subprogram renamings are not implemented, although the XRS
4200       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4201
4202 /* If SYM encodes a renaming, 
4203
4204        <renaming> renames <renamed entity>,
4205
4206    sets *LEN to the length of the renamed entity's name,
4207    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4208    the string describing the subcomponent selected from the renamed
4209    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4210    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4211    are undefined).  Otherwise, returns a value indicating the category
4212    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4213    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4214    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4215    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4216    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4217    may be NULL, in which case they are not assigned.
4218
4219    [Currently, however, GCC does not generate subprogram renamings.]  */
4220
4221 enum ada_renaming_category
4222 ada_parse_renaming (struct symbol *sym,
4223                     const char **renamed_entity, int *len, 
4224                     const char **renaming_expr)
4225 {
4226   enum ada_renaming_category kind;
4227   const char *info;
4228   const char *suffix;
4229
4230   if (sym == NULL)
4231     return ADA_NOT_RENAMING;
4232   switch (SYMBOL_CLASS (sym)) 
4233     {
4234     default:
4235       return ADA_NOT_RENAMING;
4236     case LOC_LOCAL:
4237     case LOC_STATIC:
4238     case LOC_COMPUTED:
4239     case LOC_OPTIMIZED_OUT:
4240       info = strstr (sym->linkage_name (), "___XR");
4241       if (info == NULL)
4242         return ADA_NOT_RENAMING;
4243       switch (info[5])
4244         {
4245         case '_':
4246           kind = ADA_OBJECT_RENAMING;
4247           info += 6;
4248           break;
4249         case 'E':
4250           kind = ADA_EXCEPTION_RENAMING;
4251           info += 7;
4252           break;
4253         case 'P':
4254           kind = ADA_PACKAGE_RENAMING;
4255           info += 7;
4256           break;
4257         case 'S':
4258           kind = ADA_SUBPROGRAM_RENAMING;
4259           info += 7;
4260           break;
4261         default:
4262           return ADA_NOT_RENAMING;
4263         }
4264     }
4265
4266   if (renamed_entity != NULL)
4267     *renamed_entity = info;
4268   suffix = strstr (info, "___XE");
4269   if (suffix == NULL || suffix == info)
4270     return ADA_NOT_RENAMING;
4271   if (len != NULL)
4272     *len = strlen (info) - strlen (suffix);
4273   suffix += 5;
4274   if (renaming_expr != NULL)
4275     *renaming_expr = suffix;
4276   return kind;
4277 }
4278
4279 /* Compute the value of the given RENAMING_SYM, which is expected to
4280    be a symbol encoding a renaming expression.  BLOCK is the block
4281    used to evaluate the renaming.  */
4282
4283 static struct value *
4284 ada_read_renaming_var_value (struct symbol *renaming_sym,
4285                              const struct block *block)
4286 {
4287   const char *sym_name;
4288
4289   sym_name = renaming_sym->linkage_name ();
4290   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4291   return evaluate_expression (expr.get ());
4292 }
4293 \f
4294
4295                                 /* Evaluation: Function Calls */
4296
4297 /* Return an lvalue containing the value VAL.  This is the identity on
4298    lvalues, and otherwise has the side-effect of allocating memory
4299    in the inferior where a copy of the value contents is copied.  */
4300
4301 static struct value *
4302 ensure_lval (struct value *val)
4303 {
4304   if (VALUE_LVAL (val) == not_lval
4305       || VALUE_LVAL (val) == lval_internalvar)
4306     {
4307       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4308       const CORE_ADDR addr =
4309         value_as_long (value_allocate_space_in_inferior (len));
4310
4311       VALUE_LVAL (val) = lval_memory;
4312       set_value_address (val, addr);
4313       write_memory (addr, value_contents (val), len);
4314     }
4315
4316   return val;
4317 }
4318
4319 /* Given ARG, a value of type (pointer or reference to a)*
4320    structure/union, extract the component named NAME from the ultimate
4321    target structure/union and return it as a value with its
4322    appropriate type.
4323
4324    The routine searches for NAME among all members of the structure itself
4325    and (recursively) among all members of any wrapper members
4326    (e.g., '_parent').
4327
4328    If NO_ERR, then simply return NULL in case of error, rather than
4329    calling error.  */
4330
4331 static struct value *
4332 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4333 {
4334   struct type *t, *t1;
4335   struct value *v;
4336   int check_tag;
4337
4338   v = NULL;
4339   t1 = t = ada_check_typedef (value_type (arg));
4340   if (t->code () == TYPE_CODE_REF)
4341     {
4342       t1 = TYPE_TARGET_TYPE (t);
4343       if (t1 == NULL)
4344         goto BadValue;
4345       t1 = ada_check_typedef (t1);
4346       if (t1->code () == TYPE_CODE_PTR)
4347         {
4348           arg = coerce_ref (arg);
4349           t = t1;
4350         }
4351     }
4352
4353   while (t->code () == TYPE_CODE_PTR)
4354     {
4355       t1 = TYPE_TARGET_TYPE (t);
4356       if (t1 == NULL)
4357         goto BadValue;
4358       t1 = ada_check_typedef (t1);
4359       if (t1->code () == TYPE_CODE_PTR)
4360         {
4361           arg = value_ind (arg);
4362           t = t1;
4363         }
4364       else
4365         break;
4366     }
4367
4368   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4369     goto BadValue;
4370
4371   if (t1 == t)
4372     v = ada_search_struct_field (name, arg, 0, t);
4373   else
4374     {
4375       int bit_offset, bit_size, byte_offset;
4376       struct type *field_type;
4377       CORE_ADDR address;
4378
4379       if (t->code () == TYPE_CODE_PTR)
4380         address = value_address (ada_value_ind (arg));
4381       else
4382         address = value_address (ada_coerce_ref (arg));
4383
4384       /* Check to see if this is a tagged type.  We also need to handle
4385          the case where the type is a reference to a tagged type, but
4386          we have to be careful to exclude pointers to tagged types.
4387          The latter should be shown as usual (as a pointer), whereas
4388          a reference should mostly be transparent to the user.  */
4389
4390       if (ada_is_tagged_type (t1, 0)
4391           || (t1->code () == TYPE_CODE_REF
4392               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4393         {
4394           /* We first try to find the searched field in the current type.
4395              If not found then let's look in the fixed type.  */
4396
4397           if (!find_struct_field (name, t1, 0,
4398                                   &field_type, &byte_offset, &bit_offset,
4399                                   &bit_size, NULL))
4400             check_tag = 1;
4401           else
4402             check_tag = 0;
4403         }
4404       else
4405         check_tag = 0;
4406
4407       /* Convert to fixed type in all cases, so that we have proper
4408          offsets to each field in unconstrained record types.  */
4409       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4410                               address, NULL, check_tag);
4411
4412       if (find_struct_field (name, t1, 0,
4413                              &field_type, &byte_offset, &bit_offset,
4414                              &bit_size, NULL))
4415         {
4416           if (bit_size != 0)
4417             {
4418               if (t->code () == TYPE_CODE_REF)
4419                 arg = ada_coerce_ref (arg);
4420               else
4421                 arg = ada_value_ind (arg);
4422               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4423                                                   bit_offset, bit_size,
4424                                                   field_type);
4425             }
4426           else
4427             v = value_at_lazy (field_type, address + byte_offset);
4428         }
4429     }
4430
4431   if (v != NULL || no_err)
4432     return v;
4433   else
4434     error (_("There is no member named %s."), name);
4435
4436  BadValue:
4437   if (no_err)
4438     return NULL;
4439   else
4440     error (_("Attempt to extract a component of "
4441              "a value that is not a record."));
4442 }
4443
4444 /* Return the value ACTUAL, converted to be an appropriate value for a
4445    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4446    allocating any necessary descriptors (fat pointers), or copies of
4447    values not residing in memory, updating it as needed.  */
4448
4449 struct value *
4450 ada_convert_actual (struct value *actual, struct type *formal_type0)
4451 {
4452   struct type *actual_type = ada_check_typedef (value_type (actual));
4453   struct type *formal_type = ada_check_typedef (formal_type0);
4454   struct type *formal_target =
4455     formal_type->code () == TYPE_CODE_PTR
4456     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4457   struct type *actual_target =
4458     actual_type->code () == TYPE_CODE_PTR
4459     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4460
4461   if (ada_is_array_descriptor_type (formal_target)
4462       && actual_target->code () == TYPE_CODE_ARRAY)
4463     return make_array_descriptor (formal_type, actual);
4464   else if (formal_type->code () == TYPE_CODE_PTR
4465            || formal_type->code () == TYPE_CODE_REF)
4466     {
4467       struct value *result;
4468
4469       if (formal_target->code () == TYPE_CODE_ARRAY
4470           && ada_is_array_descriptor_type (actual_target))
4471         result = desc_data (actual);
4472       else if (formal_type->code () != TYPE_CODE_PTR)
4473         {
4474           if (VALUE_LVAL (actual) != lval_memory)
4475             {
4476               struct value *val;
4477
4478               actual_type = ada_check_typedef (value_type (actual));
4479               val = allocate_value (actual_type);
4480               memcpy ((char *) value_contents_raw (val),
4481                       (char *) value_contents (actual),
4482                       TYPE_LENGTH (actual_type));
4483               actual = ensure_lval (val);
4484             }
4485           result = value_addr (actual);
4486         }
4487       else
4488         return actual;
4489       return value_cast_pointers (formal_type, result, 0);
4490     }
4491   else if (actual_type->code () == TYPE_CODE_PTR)
4492     return ada_value_ind (actual);
4493   else if (ada_is_aligner_type (formal_type))
4494     {
4495       /* We need to turn this parameter into an aligner type
4496          as well.  */
4497       struct value *aligner = allocate_value (formal_type);
4498       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4499
4500       value_assign_to_component (aligner, component, actual);
4501       return aligner;
4502     }
4503
4504   return actual;
4505 }
4506
4507 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4508    type TYPE.  This is usually an inefficient no-op except on some targets
4509    (such as AVR) where the representation of a pointer and an address
4510    differs.  */
4511
4512 static CORE_ADDR
4513 value_pointer (struct value *value, struct type *type)
4514 {
4515   struct gdbarch *gdbarch = get_type_arch (type);
4516   unsigned len = TYPE_LENGTH (type);
4517   gdb_byte *buf = (gdb_byte *) alloca (len);
4518   CORE_ADDR addr;
4519
4520   addr = value_address (value);
4521   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4522   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4523   return addr;
4524 }
4525
4526
4527 /* Push a descriptor of type TYPE for array value ARR on the stack at
4528    *SP, updating *SP to reflect the new descriptor.  Return either
4529    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4530    to-descriptor type rather than a descriptor type), a struct value *
4531    representing a pointer to this descriptor.  */
4532
4533 static struct value *
4534 make_array_descriptor (struct type *type, struct value *arr)
4535 {
4536   struct type *bounds_type = desc_bounds_type (type);
4537   struct type *desc_type = desc_base_type (type);
4538   struct value *descriptor = allocate_value (desc_type);
4539   struct value *bounds = allocate_value (bounds_type);
4540   int i;
4541
4542   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4543        i > 0; i -= 1)
4544     {
4545       modify_field (value_type (bounds), value_contents_writeable (bounds),
4546                     ada_array_bound (arr, i, 0),
4547                     desc_bound_bitpos (bounds_type, i, 0),
4548                     desc_bound_bitsize (bounds_type, i, 0));
4549       modify_field (value_type (bounds), value_contents_writeable (bounds),
4550                     ada_array_bound (arr, i, 1),
4551                     desc_bound_bitpos (bounds_type, i, 1),
4552                     desc_bound_bitsize (bounds_type, i, 1));
4553     }
4554
4555   bounds = ensure_lval (bounds);
4556
4557   modify_field (value_type (descriptor),
4558                 value_contents_writeable (descriptor),
4559                 value_pointer (ensure_lval (arr),
4560                                TYPE_FIELD_TYPE (desc_type, 0)),
4561                 fat_pntr_data_bitpos (desc_type),
4562                 fat_pntr_data_bitsize (desc_type));
4563
4564   modify_field (value_type (descriptor),
4565                 value_contents_writeable (descriptor),
4566                 value_pointer (bounds,
4567                                TYPE_FIELD_TYPE (desc_type, 1)),
4568                 fat_pntr_bounds_bitpos (desc_type),
4569                 fat_pntr_bounds_bitsize (desc_type));
4570
4571   descriptor = ensure_lval (descriptor);
4572
4573   if (type->code () == TYPE_CODE_PTR)
4574     return value_addr (descriptor);
4575   else
4576     return descriptor;
4577 }
4578 \f
4579                                 /* Symbol Cache Module */
4580
4581 /* Performance measurements made as of 2010-01-15 indicate that
4582    this cache does bring some noticeable improvements.  Depending
4583    on the type of entity being printed, the cache can make it as much
4584    as an order of magnitude faster than without it.
4585
4586    The descriptive type DWARF extension has significantly reduced
4587    the need for this cache, at least when DWARF is being used.  However,
4588    even in this case, some expensive name-based symbol searches are still
4589    sometimes necessary - to find an XVZ variable, mostly.  */
4590
4591 /* Initialize the contents of SYM_CACHE.  */
4592
4593 static void
4594 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4595 {
4596   obstack_init (&sym_cache->cache_space);
4597   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4598 }
4599
4600 /* Free the memory used by SYM_CACHE.  */
4601
4602 static void
4603 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4604 {
4605   obstack_free (&sym_cache->cache_space, NULL);
4606   xfree (sym_cache);
4607 }
4608
4609 /* Return the symbol cache associated to the given program space PSPACE.
4610    If not allocated for this PSPACE yet, allocate and initialize one.  */
4611
4612 static struct ada_symbol_cache *
4613 ada_get_symbol_cache (struct program_space *pspace)
4614 {
4615   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4616
4617   if (pspace_data->sym_cache == NULL)
4618     {
4619       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4620       ada_init_symbol_cache (pspace_data->sym_cache);
4621     }
4622
4623   return pspace_data->sym_cache;
4624 }
4625
4626 /* Clear all entries from the symbol cache.  */
4627
4628 static void
4629 ada_clear_symbol_cache (void)
4630 {
4631   struct ada_symbol_cache *sym_cache
4632     = ada_get_symbol_cache (current_program_space);
4633
4634   obstack_free (&sym_cache->cache_space, NULL);
4635   ada_init_symbol_cache (sym_cache);
4636 }
4637
4638 /* Search our cache for an entry matching NAME and DOMAIN.
4639    Return it if found, or NULL otherwise.  */
4640
4641 static struct cache_entry **
4642 find_entry (const char *name, domain_enum domain)
4643 {
4644   struct ada_symbol_cache *sym_cache
4645     = ada_get_symbol_cache (current_program_space);
4646   int h = msymbol_hash (name) % HASH_SIZE;
4647   struct cache_entry **e;
4648
4649   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4650     {
4651       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4652         return e;
4653     }
4654   return NULL;
4655 }
4656
4657 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4658    Return 1 if found, 0 otherwise.
4659
4660    If an entry was found and SYM is not NULL, set *SYM to the entry's
4661    SYM.  Same principle for BLOCK if not NULL.  */
4662
4663 static int
4664 lookup_cached_symbol (const char *name, domain_enum domain,
4665                       struct symbol **sym, const struct block **block)
4666 {
4667   struct cache_entry **e = find_entry (name, domain);
4668
4669   if (e == NULL)
4670     return 0;
4671   if (sym != NULL)
4672     *sym = (*e)->sym;
4673   if (block != NULL)
4674     *block = (*e)->block;
4675   return 1;
4676 }
4677
4678 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4679    in domain DOMAIN, save this result in our symbol cache.  */
4680
4681 static void
4682 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4683               const struct block *block)
4684 {
4685   struct ada_symbol_cache *sym_cache
4686     = ada_get_symbol_cache (current_program_space);
4687   int h;
4688   struct cache_entry *e;
4689
4690   /* Symbols for builtin types don't have a block.
4691      For now don't cache such symbols.  */
4692   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4693     return;
4694
4695   /* If the symbol is a local symbol, then do not cache it, as a search
4696      for that symbol depends on the context.  To determine whether
4697      the symbol is local or not, we check the block where we found it
4698      against the global and static blocks of its associated symtab.  */
4699   if (sym
4700       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4701                             GLOBAL_BLOCK) != block
4702       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4703                             STATIC_BLOCK) != block)
4704     return;
4705
4706   h = msymbol_hash (name) % HASH_SIZE;
4707   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4708   e->next = sym_cache->root[h];
4709   sym_cache->root[h] = e;
4710   e->name = obstack_strdup (&sym_cache->cache_space, name);
4711   e->sym = sym;
4712   e->domain = domain;
4713   e->block = block;
4714 }
4715 \f
4716                                 /* Symbol Lookup */
4717
4718 /* Return the symbol name match type that should be used used when
4719    searching for all symbols matching LOOKUP_NAME.
4720
4721    LOOKUP_NAME is expected to be a symbol name after transformation
4722    for Ada lookups.  */
4723
4724 static symbol_name_match_type
4725 name_match_type_from_name (const char *lookup_name)
4726 {
4727   return (strstr (lookup_name, "__") == NULL
4728           ? symbol_name_match_type::WILD
4729           : symbol_name_match_type::FULL);
4730 }
4731
4732 /* Return the result of a standard (literal, C-like) lookup of NAME in
4733    given DOMAIN, visible from lexical block BLOCK.  */
4734
4735 static struct symbol *
4736 standard_lookup (const char *name, const struct block *block,
4737                  domain_enum domain)
4738 {
4739   /* Initialize it just to avoid a GCC false warning.  */
4740   struct block_symbol sym = {};
4741
4742   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4743     return sym.symbol;
4744   ada_lookup_encoded_symbol (name, block, domain, &sym);
4745   cache_symbol (name, domain, sym.symbol, sym.block);
4746   return sym.symbol;
4747 }
4748
4749
4750 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4751    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4752    since they contend in overloading in the same way.  */
4753 static int
4754 is_nonfunction (struct block_symbol syms[], int n)
4755 {
4756   int i;
4757
4758   for (i = 0; i < n; i += 1)
4759     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4760         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4761             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4762       return 1;
4763
4764   return 0;
4765 }
4766
4767 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4768    struct types.  Otherwise, they may not.  */
4769
4770 static int
4771 equiv_types (struct type *type0, struct type *type1)
4772 {
4773   if (type0 == type1)
4774     return 1;
4775   if (type0 == NULL || type1 == NULL
4776       || type0->code () != type1->code ())
4777     return 0;
4778   if ((type0->code () == TYPE_CODE_STRUCT
4779        || type0->code () == TYPE_CODE_ENUM)
4780       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4781       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4782     return 1;
4783
4784   return 0;
4785 }
4786
4787 /* True iff SYM0 represents the same entity as SYM1, or one that is
4788    no more defined than that of SYM1.  */
4789
4790 static int
4791 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4792 {
4793   if (sym0 == sym1)
4794     return 1;
4795   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4796       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4797     return 0;
4798
4799   switch (SYMBOL_CLASS (sym0))
4800     {
4801     case LOC_UNDEF:
4802       return 1;
4803     case LOC_TYPEDEF:
4804       {
4805         struct type *type0 = SYMBOL_TYPE (sym0);
4806         struct type *type1 = SYMBOL_TYPE (sym1);
4807         const char *name0 = sym0->linkage_name ();
4808         const char *name1 = sym1->linkage_name ();
4809         int len0 = strlen (name0);
4810
4811         return
4812           type0->code () == type1->code ()
4813           && (equiv_types (type0, type1)
4814               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4815                   && startswith (name1 + len0, "___XV")));
4816       }
4817     case LOC_CONST:
4818       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4819         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4820
4821     case LOC_STATIC:
4822       {
4823         const char *name0 = sym0->linkage_name ();
4824         const char *name1 = sym1->linkage_name ();
4825         return (strcmp (name0, name1) == 0
4826                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4827       }
4828
4829     default:
4830       return 0;
4831     }
4832 }
4833
4834 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4835    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4836
4837 static void
4838 add_defn_to_vec (struct obstack *obstackp,
4839                  struct symbol *sym,
4840                  const struct block *block)
4841 {
4842   int i;
4843   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4844
4845   /* Do not try to complete stub types, as the debugger is probably
4846      already scanning all symbols matching a certain name at the
4847      time when this function is called.  Trying to replace the stub
4848      type by its associated full type will cause us to restart a scan
4849      which may lead to an infinite recursion.  Instead, the client
4850      collecting the matching symbols will end up collecting several
4851      matches, with at least one of them complete.  It can then filter
4852      out the stub ones if needed.  */
4853
4854   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4855     {
4856       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4857         return;
4858       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4859         {
4860           prevDefns[i].symbol = sym;
4861           prevDefns[i].block = block;
4862           return;
4863         }
4864     }
4865
4866   {
4867     struct block_symbol info;
4868
4869     info.symbol = sym;
4870     info.block = block;
4871     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4872   }
4873 }
4874
4875 /* Number of block_symbol structures currently collected in current vector in
4876    OBSTACKP.  */
4877
4878 static int
4879 num_defns_collected (struct obstack *obstackp)
4880 {
4881   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4882 }
4883
4884 /* Vector of block_symbol structures currently collected in current vector in
4885    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4886
4887 static struct block_symbol *
4888 defns_collected (struct obstack *obstackp, int finish)
4889 {
4890   if (finish)
4891     return (struct block_symbol *) obstack_finish (obstackp);
4892   else
4893     return (struct block_symbol *) obstack_base (obstackp);
4894 }
4895
4896 /* Return a bound minimal symbol matching NAME according to Ada
4897    decoding rules.  Returns an invalid symbol if there is no such
4898    minimal symbol.  Names prefixed with "standard__" are handled
4899    specially: "standard__" is first stripped off, and only static and
4900    global symbols are searched.  */
4901
4902 struct bound_minimal_symbol
4903 ada_lookup_simple_minsym (const char *name)
4904 {
4905   struct bound_minimal_symbol result;
4906
4907   memset (&result, 0, sizeof (result));
4908
4909   symbol_name_match_type match_type = name_match_type_from_name (name);
4910   lookup_name_info lookup_name (name, match_type);
4911
4912   symbol_name_matcher_ftype *match_name
4913     = ada_get_symbol_name_matcher (lookup_name);
4914
4915   for (objfile *objfile : current_program_space->objfiles ())
4916     {
4917       for (minimal_symbol *msymbol : objfile->msymbols ())
4918         {
4919           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4920               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4921             {
4922               result.minsym = msymbol;
4923               result.objfile = objfile;
4924               break;
4925             }
4926         }
4927     }
4928
4929   return result;
4930 }
4931
4932 /* For all subprograms that statically enclose the subprogram of the
4933    selected frame, add symbols matching identifier NAME in DOMAIN
4934    and their blocks to the list of data in OBSTACKP, as for
4935    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4936    with a wildcard prefix.  */
4937
4938 static void
4939 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4940                                   const lookup_name_info &lookup_name,
4941                                   domain_enum domain)
4942 {
4943 }
4944
4945 /* True if TYPE is definitely an artificial type supplied to a symbol
4946    for which no debugging information was given in the symbol file.  */
4947
4948 static int
4949 is_nondebugging_type (struct type *type)
4950 {
4951   const char *name = ada_type_name (type);
4952
4953   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4954 }
4955
4956 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4957    that are deemed "identical" for practical purposes.
4958
4959    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4960    types and that their number of enumerals is identical (in other
4961    words, type1->num_fields () == type2->num_fields ()).  */
4962
4963 static int
4964 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4965 {
4966   int i;
4967
4968   /* The heuristic we use here is fairly conservative.  We consider
4969      that 2 enumerate types are identical if they have the same
4970      number of enumerals and that all enumerals have the same
4971      underlying value and name.  */
4972
4973   /* All enums in the type should have an identical underlying value.  */
4974   for (i = 0; i < type1->num_fields (); i++)
4975     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4976       return 0;
4977
4978   /* All enumerals should also have the same name (modulo any numerical
4979      suffix).  */
4980   for (i = 0; i < type1->num_fields (); i++)
4981     {
4982       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4983       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4984       int len_1 = strlen (name_1);
4985       int len_2 = strlen (name_2);
4986
4987       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4988       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4989       if (len_1 != len_2
4990           || strncmp (TYPE_FIELD_NAME (type1, i),
4991                       TYPE_FIELD_NAME (type2, i),
4992                       len_1) != 0)
4993         return 0;
4994     }
4995
4996   return 1;
4997 }
4998
4999 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5000    that are deemed "identical" for practical purposes.  Sometimes,
5001    enumerals are not strictly identical, but their types are so similar
5002    that they can be considered identical.
5003
5004    For instance, consider the following code:
5005
5006       type Color is (Black, Red, Green, Blue, White);
5007       type RGB_Color is new Color range Red .. Blue;
5008
5009    Type RGB_Color is a subrange of an implicit type which is a copy
5010    of type Color. If we call that implicit type RGB_ColorB ("B" is
5011    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5012    As a result, when an expression references any of the enumeral
5013    by name (Eg. "print green"), the expression is technically
5014    ambiguous and the user should be asked to disambiguate. But
5015    doing so would only hinder the user, since it wouldn't matter
5016    what choice he makes, the outcome would always be the same.
5017    So, for practical purposes, we consider them as the same.  */
5018
5019 static int
5020 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5021 {
5022   int i;
5023
5024   /* Before performing a thorough comparison check of each type,
5025      we perform a series of inexpensive checks.  We expect that these
5026      checks will quickly fail in the vast majority of cases, and thus
5027      help prevent the unnecessary use of a more expensive comparison.
5028      Said comparison also expects us to make some of these checks
5029      (see ada_identical_enum_types_p).  */
5030
5031   /* Quick check: All symbols should have an enum type.  */
5032   for (i = 0; i < syms.size (); i++)
5033     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
5034       return 0;
5035
5036   /* Quick check: They should all have the same value.  */
5037   for (i = 1; i < syms.size (); i++)
5038     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5039       return 0;
5040
5041   /* Quick check: They should all have the same number of enumerals.  */
5042   for (i = 1; i < syms.size (); i++)
5043     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
5044         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
5045       return 0;
5046
5047   /* All the sanity checks passed, so we might have a set of
5048      identical enumeration types.  Perform a more complete
5049      comparison of the type of each symbol.  */
5050   for (i = 1; i < syms.size (); i++)
5051     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5052                                      SYMBOL_TYPE (syms[0].symbol)))
5053       return 0;
5054
5055   return 1;
5056 }
5057
5058 /* Remove any non-debugging symbols in SYMS that definitely
5059    duplicate other symbols in the list (The only case I know of where
5060    this happens is when object files containing stabs-in-ecoff are
5061    linked with files containing ordinary ecoff debugging symbols (or no
5062    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5063    Returns the number of items in the modified list.  */
5064
5065 static int
5066 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5067 {
5068   int i, j;
5069
5070   /* We should never be called with less than 2 symbols, as there
5071      cannot be any extra symbol in that case.  But it's easy to
5072      handle, since we have nothing to do in that case.  */
5073   if (syms->size () < 2)
5074     return syms->size ();
5075
5076   i = 0;
5077   while (i < syms->size ())
5078     {
5079       int remove_p = 0;
5080
5081       /* If two symbols have the same name and one of them is a stub type,
5082          the get rid of the stub.  */
5083
5084       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5085           && (*syms)[i].symbol->linkage_name () != NULL)
5086         {
5087           for (j = 0; j < syms->size (); j++)
5088             {
5089               if (j != i
5090                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5091                   && (*syms)[j].symbol->linkage_name () != NULL
5092                   && strcmp ((*syms)[i].symbol->linkage_name (),
5093                              (*syms)[j].symbol->linkage_name ()) == 0)
5094                 remove_p = 1;
5095             }
5096         }
5097
5098       /* Two symbols with the same name, same class and same address
5099          should be identical.  */
5100
5101       else if ((*syms)[i].symbol->linkage_name () != NULL
5102           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5103           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5104         {
5105           for (j = 0; j < syms->size (); j += 1)
5106             {
5107               if (i != j
5108                   && (*syms)[j].symbol->linkage_name () != NULL
5109                   && strcmp ((*syms)[i].symbol->linkage_name (),
5110                              (*syms)[j].symbol->linkage_name ()) == 0
5111                   && SYMBOL_CLASS ((*syms)[i].symbol)
5112                        == SYMBOL_CLASS ((*syms)[j].symbol)
5113                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5114                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5115                 remove_p = 1;
5116             }
5117         }
5118       
5119       if (remove_p)
5120         syms->erase (syms->begin () + i);
5121
5122       i += 1;
5123     }
5124
5125   /* If all the remaining symbols are identical enumerals, then
5126      just keep the first one and discard the rest.
5127
5128      Unlike what we did previously, we do not discard any entry
5129      unless they are ALL identical.  This is because the symbol
5130      comparison is not a strict comparison, but rather a practical
5131      comparison.  If all symbols are considered identical, then
5132      we can just go ahead and use the first one and discard the rest.
5133      But if we cannot reduce the list to a single element, we have
5134      to ask the user to disambiguate anyways.  And if we have to
5135      present a multiple-choice menu, it's less confusing if the list
5136      isn't missing some choices that were identical and yet distinct.  */
5137   if (symbols_are_identical_enums (*syms))
5138     syms->resize (1);
5139
5140   return syms->size ();
5141 }
5142
5143 /* Given a type that corresponds to a renaming entity, use the type name
5144    to extract the scope (package name or function name, fully qualified,
5145    and following the GNAT encoding convention) where this renaming has been
5146    defined.  */
5147
5148 static std::string
5149 xget_renaming_scope (struct type *renaming_type)
5150 {
5151   /* The renaming types adhere to the following convention:
5152      <scope>__<rename>___<XR extension>.
5153      So, to extract the scope, we search for the "___XR" extension,
5154      and then backtrack until we find the first "__".  */
5155
5156   const char *name = renaming_type->name ();
5157   const char *suffix = strstr (name, "___XR");
5158   const char *last;
5159
5160   /* Now, backtrack a bit until we find the first "__".  Start looking
5161      at suffix - 3, as the <rename> part is at least one character long.  */
5162
5163   for (last = suffix - 3; last > name; last--)
5164     if (last[0] == '_' && last[1] == '_')
5165       break;
5166
5167   /* Make a copy of scope and return it.  */
5168   return std::string (name, last);
5169 }
5170
5171 /* Return nonzero if NAME corresponds to a package name.  */
5172
5173 static int
5174 is_package_name (const char *name)
5175 {
5176   /* Here, We take advantage of the fact that no symbols are generated
5177      for packages, while symbols are generated for each function.
5178      So the condition for NAME represent a package becomes equivalent
5179      to NAME not existing in our list of symbols.  There is only one
5180      small complication with library-level functions (see below).  */
5181
5182   /* If it is a function that has not been defined at library level,
5183      then we should be able to look it up in the symbols.  */
5184   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5185     return 0;
5186
5187   /* Library-level function names start with "_ada_".  See if function
5188      "_ada_" followed by NAME can be found.  */
5189
5190   /* Do a quick check that NAME does not contain "__", since library-level
5191      functions names cannot contain "__" in them.  */
5192   if (strstr (name, "__") != NULL)
5193     return 0;
5194
5195   std::string fun_name = string_printf ("_ada_%s", name);
5196
5197   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5198 }
5199
5200 /* Return nonzero if SYM corresponds to a renaming entity that is
5201    not visible from FUNCTION_NAME.  */
5202
5203 static int
5204 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5205 {
5206   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5207     return 0;
5208
5209   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5210
5211   /* If the rename has been defined in a package, then it is visible.  */
5212   if (is_package_name (scope.c_str ()))
5213     return 0;
5214
5215   /* Check that the rename is in the current function scope by checking
5216      that its name starts with SCOPE.  */
5217
5218   /* If the function name starts with "_ada_", it means that it is
5219      a library-level function.  Strip this prefix before doing the
5220      comparison, as the encoding for the renaming does not contain
5221      this prefix.  */
5222   if (startswith (function_name, "_ada_"))
5223     function_name += 5;
5224
5225   return !startswith (function_name, scope.c_str ());
5226 }
5227
5228 /* Remove entries from SYMS that corresponds to a renaming entity that
5229    is not visible from the function associated with CURRENT_BLOCK or
5230    that is superfluous due to the presence of more specific renaming
5231    information.  Places surviving symbols in the initial entries of
5232    SYMS and returns the number of surviving symbols.
5233    
5234    Rationale:
5235    First, in cases where an object renaming is implemented as a
5236    reference variable, GNAT may produce both the actual reference
5237    variable and the renaming encoding.  In this case, we discard the
5238    latter.
5239
5240    Second, GNAT emits a type following a specified encoding for each renaming
5241    entity.  Unfortunately, STABS currently does not support the definition
5242    of types that are local to a given lexical block, so all renamings types
5243    are emitted at library level.  As a consequence, if an application
5244    contains two renaming entities using the same name, and a user tries to
5245    print the value of one of these entities, the result of the ada symbol
5246    lookup will also contain the wrong renaming type.
5247
5248    This function partially covers for this limitation by attempting to
5249    remove from the SYMS list renaming symbols that should be visible
5250    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5251    method with the current information available.  The implementation
5252    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5253    
5254       - When the user tries to print a rename in a function while there
5255         is another rename entity defined in a package:  Normally, the
5256         rename in the function has precedence over the rename in the
5257         package, so the latter should be removed from the list.  This is
5258         currently not the case.
5259         
5260       - This function will incorrectly remove valid renames if
5261         the CURRENT_BLOCK corresponds to a function which symbol name
5262         has been changed by an "Export" pragma.  As a consequence,
5263         the user will be unable to print such rename entities.  */
5264
5265 static int
5266 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5267                              const struct block *current_block)
5268 {
5269   struct symbol *current_function;
5270   const char *current_function_name;
5271   int i;
5272   int is_new_style_renaming;
5273
5274   /* If there is both a renaming foo___XR... encoded as a variable and
5275      a simple variable foo in the same block, discard the latter.
5276      First, zero out such symbols, then compress.  */
5277   is_new_style_renaming = 0;
5278   for (i = 0; i < syms->size (); i += 1)
5279     {
5280       struct symbol *sym = (*syms)[i].symbol;
5281       const struct block *block = (*syms)[i].block;
5282       const char *name;
5283       const char *suffix;
5284
5285       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5286         continue;
5287       name = sym->linkage_name ();
5288       suffix = strstr (name, "___XR");
5289
5290       if (suffix != NULL)
5291         {
5292           int name_len = suffix - name;
5293           int j;
5294
5295           is_new_style_renaming = 1;
5296           for (j = 0; j < syms->size (); j += 1)
5297             if (i != j && (*syms)[j].symbol != NULL
5298                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5299                             name_len) == 0
5300                 && block == (*syms)[j].block)
5301               (*syms)[j].symbol = NULL;
5302         }
5303     }
5304   if (is_new_style_renaming)
5305     {
5306       int j, k;
5307
5308       for (j = k = 0; j < syms->size (); j += 1)
5309         if ((*syms)[j].symbol != NULL)
5310             {
5311               (*syms)[k] = (*syms)[j];
5312               k += 1;
5313             }
5314       return k;
5315     }
5316
5317   /* Extract the function name associated to CURRENT_BLOCK.
5318      Abort if unable to do so.  */
5319
5320   if (current_block == NULL)
5321     return syms->size ();
5322
5323   current_function = block_linkage_function (current_block);
5324   if (current_function == NULL)
5325     return syms->size ();
5326
5327   current_function_name = current_function->linkage_name ();
5328   if (current_function_name == NULL)
5329     return syms->size ();
5330
5331   /* Check each of the symbols, and remove it from the list if it is
5332      a type corresponding to a renaming that is out of the scope of
5333      the current block.  */
5334
5335   i = 0;
5336   while (i < syms->size ())
5337     {
5338       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5339           == ADA_OBJECT_RENAMING
5340           && old_renaming_is_invisible ((*syms)[i].symbol,
5341                                         current_function_name))
5342         syms->erase (syms->begin () + i);
5343       else
5344         i += 1;
5345     }
5346
5347   return syms->size ();
5348 }
5349
5350 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5351    whose name and domain match NAME and DOMAIN respectively.
5352    If no match was found, then extend the search to "enclosing"
5353    routines (in other words, if we're inside a nested function,
5354    search the symbols defined inside the enclosing functions).
5355    If WILD_MATCH_P is nonzero, perform the naming matching in
5356    "wild" mode (see function "wild_match" for more info).
5357
5358    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5359
5360 static void
5361 ada_add_local_symbols (struct obstack *obstackp,
5362                        const lookup_name_info &lookup_name,
5363                        const struct block *block, domain_enum domain)
5364 {
5365   int block_depth = 0;
5366
5367   while (block != NULL)
5368     {
5369       block_depth += 1;
5370       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5371
5372       /* If we found a non-function match, assume that's the one.  */
5373       if (is_nonfunction (defns_collected (obstackp, 0),
5374                           num_defns_collected (obstackp)))
5375         return;
5376
5377       block = BLOCK_SUPERBLOCK (block);
5378     }
5379
5380   /* If no luck so far, try to find NAME as a local symbol in some lexically
5381      enclosing subprogram.  */
5382   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5383     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5384 }
5385
5386 /* An object of this type is used as the user_data argument when
5387    calling the map_matching_symbols method.  */
5388
5389 struct match_data
5390 {
5391   struct objfile *objfile;
5392   struct obstack *obstackp;
5393   struct symbol *arg_sym;
5394   int found_sym;
5395 };
5396
5397 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5398    to a list of symbols.  DATA is a pointer to a struct match_data *
5399    containing the obstack that collects the symbol list, the file that SYM
5400    must come from, a flag indicating whether a non-argument symbol has
5401    been found in the current block, and the last argument symbol
5402    passed in SYM within the current block (if any).  When SYM is null,
5403    marking the end of a block, the argument symbol is added if no
5404    other has been found.  */
5405
5406 static bool
5407 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5408                           struct match_data *data)
5409 {
5410   const struct block *block = bsym->block;
5411   struct symbol *sym = bsym->symbol;
5412
5413   if (sym == NULL)
5414     {
5415       if (!data->found_sym && data->arg_sym != NULL) 
5416         add_defn_to_vec (data->obstackp,
5417                          fixup_symbol_section (data->arg_sym, data->objfile),
5418                          block);
5419       data->found_sym = 0;
5420       data->arg_sym = NULL;
5421     }
5422   else 
5423     {
5424       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5425         return true;
5426       else if (SYMBOL_IS_ARGUMENT (sym))
5427         data->arg_sym = sym;
5428       else
5429         {
5430           data->found_sym = 1;
5431           add_defn_to_vec (data->obstackp,
5432                            fixup_symbol_section (sym, data->objfile),
5433                            block);
5434         }
5435     }
5436   return true;
5437 }
5438
5439 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5440    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5441    symbols to OBSTACKP.  Return whether we found such symbols.  */
5442
5443 static int
5444 ada_add_block_renamings (struct obstack *obstackp,
5445                          const struct block *block,
5446                          const lookup_name_info &lookup_name,
5447                          domain_enum domain)
5448 {
5449   struct using_direct *renaming;
5450   int defns_mark = num_defns_collected (obstackp);
5451
5452   symbol_name_matcher_ftype *name_match
5453     = ada_get_symbol_name_matcher (lookup_name);
5454
5455   for (renaming = block_using (block);
5456        renaming != NULL;
5457        renaming = renaming->next)
5458     {
5459       const char *r_name;
5460
5461       /* Avoid infinite recursions: skip this renaming if we are actually
5462          already traversing it.
5463
5464          Currently, symbol lookup in Ada don't use the namespace machinery from
5465          C++/Fortran support: skip namespace imports that use them.  */
5466       if (renaming->searched
5467           || (renaming->import_src != NULL
5468               && renaming->import_src[0] != '\0')
5469           || (renaming->import_dest != NULL
5470               && renaming->import_dest[0] != '\0'))
5471         continue;
5472       renaming->searched = 1;
5473
5474       /* TODO: here, we perform another name-based symbol lookup, which can
5475          pull its own multiple overloads.  In theory, we should be able to do
5476          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5477          not a simple name.  But in order to do this, we would need to enhance
5478          the DWARF reader to associate a symbol to this renaming, instead of a
5479          name.  So, for now, we do something simpler: re-use the C++/Fortran
5480          namespace machinery.  */
5481       r_name = (renaming->alias != NULL
5482                 ? renaming->alias
5483                 : renaming->declaration);
5484       if (name_match (r_name, lookup_name, NULL))
5485         {
5486           lookup_name_info decl_lookup_name (renaming->declaration,
5487                                              lookup_name.match_type ());
5488           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5489                                1, NULL);
5490         }
5491       renaming->searched = 0;
5492     }
5493   return num_defns_collected (obstackp) != defns_mark;
5494 }
5495
5496 /* Implements compare_names, but only applying the comparision using
5497    the given CASING.  */
5498
5499 static int
5500 compare_names_with_case (const char *string1, const char *string2,
5501                          enum case_sensitivity casing)
5502 {
5503   while (*string1 != '\0' && *string2 != '\0')
5504     {
5505       char c1, c2;
5506
5507       if (isspace (*string1) || isspace (*string2))
5508         return strcmp_iw_ordered (string1, string2);
5509
5510       if (casing == case_sensitive_off)
5511         {
5512           c1 = tolower (*string1);
5513           c2 = tolower (*string2);
5514         }
5515       else
5516         {
5517           c1 = *string1;
5518           c2 = *string2;
5519         }
5520       if (c1 != c2)
5521         break;
5522
5523       string1 += 1;
5524       string2 += 1;
5525     }
5526
5527   switch (*string1)
5528     {
5529     case '(':
5530       return strcmp_iw_ordered (string1, string2);
5531     case '_':
5532       if (*string2 == '\0')
5533         {
5534           if (is_name_suffix (string1))
5535             return 0;
5536           else
5537             return 1;
5538         }
5539       /* FALLTHROUGH */
5540     default:
5541       if (*string2 == '(')
5542         return strcmp_iw_ordered (string1, string2);
5543       else
5544         {
5545           if (casing == case_sensitive_off)
5546             return tolower (*string1) - tolower (*string2);
5547           else
5548             return *string1 - *string2;
5549         }
5550     }
5551 }
5552
5553 /* Compare STRING1 to STRING2, with results as for strcmp.
5554    Compatible with strcmp_iw_ordered in that...
5555
5556        strcmp_iw_ordered (STRING1, STRING2) <= 0
5557
5558    ... implies...
5559
5560        compare_names (STRING1, STRING2) <= 0
5561
5562    (they may differ as to what symbols compare equal).  */
5563
5564 static int
5565 compare_names (const char *string1, const char *string2)
5566 {
5567   int result;
5568
5569   /* Similar to what strcmp_iw_ordered does, we need to perform
5570      a case-insensitive comparison first, and only resort to
5571      a second, case-sensitive, comparison if the first one was
5572      not sufficient to differentiate the two strings.  */
5573
5574   result = compare_names_with_case (string1, string2, case_sensitive_off);
5575   if (result == 0)
5576     result = compare_names_with_case (string1, string2, case_sensitive_on);
5577
5578   return result;
5579 }
5580
5581 /* Convenience function to get at the Ada encoded lookup name for
5582    LOOKUP_NAME, as a C string.  */
5583
5584 static const char *
5585 ada_lookup_name (const lookup_name_info &lookup_name)
5586 {
5587   return lookup_name.ada ().lookup_name ().c_str ();
5588 }
5589
5590 /* Add to OBSTACKP all non-local symbols whose name and domain match
5591    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5592    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5593    symbols otherwise.  */
5594
5595 static void
5596 add_nonlocal_symbols (struct obstack *obstackp,
5597                       const lookup_name_info &lookup_name,
5598                       domain_enum domain, int global)
5599 {
5600   struct match_data data;
5601
5602   memset (&data, 0, sizeof data);
5603   data.obstackp = obstackp;
5604
5605   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5606
5607   auto callback = [&] (struct block_symbol *bsym)
5608     {
5609       return aux_add_nonlocal_symbols (bsym, &data);
5610     };
5611
5612   for (objfile *objfile : current_program_space->objfiles ())
5613     {
5614       data.objfile = objfile;
5615
5616       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5617                                              domain, global, callback,
5618                                              (is_wild_match
5619                                               ? NULL : compare_names));
5620
5621       for (compunit_symtab *cu : objfile->compunits ())
5622         {
5623           const struct block *global_block
5624             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5625
5626           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5627                                        domain))
5628             data.found_sym = 1;
5629         }
5630     }
5631
5632   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5633     {
5634       const char *name = ada_lookup_name (lookup_name);
5635       std::string bracket_name = std::string ("<_ada_") + name + '>';
5636       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5637
5638       for (objfile *objfile : current_program_space->objfiles ())
5639         {
5640           data.objfile = objfile;
5641           objfile->sf->qf->map_matching_symbols (objfile, name1,
5642                                                  domain, global, callback,
5643                                                  compare_names);
5644         }
5645     }           
5646 }
5647
5648 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5649    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5650    returning the number of matches.  Add these to OBSTACKP.
5651
5652    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5653    symbol match within the nest of blocks whose innermost member is BLOCK,
5654    is the one match returned (no other matches in that or
5655    enclosing blocks is returned).  If there are any matches in or
5656    surrounding BLOCK, then these alone are returned.
5657
5658    Names prefixed with "standard__" are handled specially:
5659    "standard__" is first stripped off (by the lookup_name
5660    constructor), and only static and global symbols are searched.
5661
5662    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5663    to lookup global symbols.  */
5664
5665 static void
5666 ada_add_all_symbols (struct obstack *obstackp,
5667                      const struct block *block,
5668                      const lookup_name_info &lookup_name,
5669                      domain_enum domain,
5670                      int full_search,
5671                      int *made_global_lookup_p)
5672 {
5673   struct symbol *sym;
5674
5675   if (made_global_lookup_p)
5676     *made_global_lookup_p = 0;
5677
5678   /* Special case: If the user specifies a symbol name inside package
5679      Standard, do a non-wild matching of the symbol name without
5680      the "standard__" prefix.  This was primarily introduced in order
5681      to allow the user to specifically access the standard exceptions
5682      using, for instance, Standard.Constraint_Error when Constraint_Error
5683      is ambiguous (due to the user defining its own Constraint_Error
5684      entity inside its program).  */
5685   if (lookup_name.ada ().standard_p ())
5686     block = NULL;
5687
5688   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5689
5690   if (block != NULL)
5691     {
5692       if (full_search)
5693         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5694       else
5695         {
5696           /* In the !full_search case we're are being called by
5697              ada_iterate_over_symbols, and we don't want to search
5698              superblocks.  */
5699           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5700         }
5701       if (num_defns_collected (obstackp) > 0 || !full_search)
5702         return;
5703     }
5704
5705   /* No non-global symbols found.  Check our cache to see if we have
5706      already performed this search before.  If we have, then return
5707      the same result.  */
5708
5709   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5710                             domain, &sym, &block))
5711     {
5712       if (sym != NULL)
5713         add_defn_to_vec (obstackp, sym, block);
5714       return;
5715     }
5716
5717   if (made_global_lookup_p)
5718     *made_global_lookup_p = 1;
5719
5720   /* Search symbols from all global blocks.  */
5721  
5722   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5723
5724   /* Now add symbols from all per-file blocks if we've gotten no hits
5725      (not strictly correct, but perhaps better than an error).  */
5726
5727   if (num_defns_collected (obstackp) == 0)
5728     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5729 }
5730
5731 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5732    is non-zero, enclosing scope and in global scopes, returning the number of
5733    matches.
5734    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5735    found and the blocks and symbol tables (if any) in which they were
5736    found.
5737
5738    When full_search is non-zero, any non-function/non-enumeral
5739    symbol match within the nest of blocks whose innermost member is BLOCK,
5740    is the one match returned (no other matches in that or
5741    enclosing blocks is returned).  If there are any matches in or
5742    surrounding BLOCK, then these alone are returned.
5743
5744    Names prefixed with "standard__" are handled specially: "standard__"
5745    is first stripped off, and only static and global symbols are searched.  */
5746
5747 static int
5748 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5749                                const struct block *block,
5750                                domain_enum domain,
5751                                std::vector<struct block_symbol> *results,
5752                                int full_search)
5753 {
5754   int syms_from_global_search;
5755   int ndefns;
5756   auto_obstack obstack;
5757
5758   ada_add_all_symbols (&obstack, block, lookup_name,
5759                        domain, full_search, &syms_from_global_search);
5760
5761   ndefns = num_defns_collected (&obstack);
5762
5763   struct block_symbol *base = defns_collected (&obstack, 1);
5764   for (int i = 0; i < ndefns; ++i)
5765     results->push_back (base[i]);
5766
5767   ndefns = remove_extra_symbols (results);
5768
5769   if (ndefns == 0 && full_search && syms_from_global_search)
5770     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5771
5772   if (ndefns == 1 && full_search && syms_from_global_search)
5773     cache_symbol (ada_lookup_name (lookup_name), domain,
5774                   (*results)[0].symbol, (*results)[0].block);
5775
5776   ndefns = remove_irrelevant_renamings (results, block);
5777
5778   return ndefns;
5779 }
5780
5781 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5782    in global scopes, returning the number of matches, and filling *RESULTS
5783    with (SYM,BLOCK) tuples.
5784
5785    See ada_lookup_symbol_list_worker for further details.  */
5786
5787 int
5788 ada_lookup_symbol_list (const char *name, const struct block *block,
5789                         domain_enum domain,
5790                         std::vector<struct block_symbol> *results)
5791 {
5792   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5793   lookup_name_info lookup_name (name, name_match_type);
5794
5795   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5796 }
5797
5798 /* Implementation of the la_iterate_over_symbols method.  */
5799
5800 static bool
5801 ada_iterate_over_symbols
5802   (const struct block *block, const lookup_name_info &name,
5803    domain_enum domain,
5804    gdb::function_view<symbol_found_callback_ftype> callback)
5805 {
5806   int ndefs, i;
5807   std::vector<struct block_symbol> results;
5808
5809   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5810
5811   for (i = 0; i < ndefs; ++i)
5812     {
5813       if (!callback (&results[i]))
5814         return false;
5815     }
5816
5817   return true;
5818 }
5819
5820 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5821    to 1, but choosing the first symbol found if there are multiple
5822    choices.
5823
5824    The result is stored in *INFO, which must be non-NULL.
5825    If no match is found, INFO->SYM is set to NULL.  */
5826
5827 void
5828 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5829                            domain_enum domain,
5830                            struct block_symbol *info)
5831 {
5832   /* Since we already have an encoded name, wrap it in '<>' to force a
5833      verbatim match.  Otherwise, if the name happens to not look like
5834      an encoded name (because it doesn't include a "__"),
5835      ada_lookup_name_info would re-encode/fold it again, and that
5836      would e.g., incorrectly lowercase object renaming names like
5837      "R28b" -> "r28b".  */
5838   std::string verbatim = std::string ("<") + name + '>';
5839
5840   gdb_assert (info != NULL);
5841   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5842 }
5843
5844 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5845    scope and in global scopes, or NULL if none.  NAME is folded and
5846    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5847    choosing the first symbol if there are multiple choices.  */
5848
5849 struct block_symbol
5850 ada_lookup_symbol (const char *name, const struct block *block0,
5851                    domain_enum domain)
5852 {
5853   std::vector<struct block_symbol> candidates;
5854   int n_candidates;
5855
5856   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5857
5858   if (n_candidates == 0)
5859     return {};
5860
5861   block_symbol info = candidates[0];
5862   info.symbol = fixup_symbol_section (info.symbol, NULL);
5863   return info;
5864 }
5865
5866 static struct block_symbol
5867 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5868                             const char *name,
5869                             const struct block *block,
5870                             const domain_enum domain)
5871 {
5872   struct block_symbol sym;
5873
5874   sym = ada_lookup_symbol (name, block_static_block (block), domain);
5875   if (sym.symbol != NULL)
5876     return sym;
5877
5878   /* If we haven't found a match at this point, try the primitive
5879      types.  In other languages, this search is performed before
5880      searching for global symbols in order to short-circuit that
5881      global-symbol search if it happens that the name corresponds
5882      to a primitive type.  But we cannot do the same in Ada, because
5883      it is perfectly legitimate for a program to declare a type which
5884      has the same name as a standard type.  If looking up a type in
5885      that situation, we have traditionally ignored the primitive type
5886      in favor of user-defined types.  This is why, unlike most other
5887      languages, we search the primitive types this late and only after
5888      having searched the global symbols without success.  */
5889
5890   if (domain == VAR_DOMAIN)
5891     {
5892       struct gdbarch *gdbarch;
5893
5894       if (block == NULL)
5895         gdbarch = target_gdbarch ();
5896       else
5897         gdbarch = block_gdbarch (block);
5898       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5899       if (sym.symbol != NULL)
5900         return sym;
5901     }
5902
5903   return {};
5904 }
5905
5906
5907 /* True iff STR is a possible encoded suffix of a normal Ada name
5908    that is to be ignored for matching purposes.  Suffixes of parallel
5909    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5910    are given by any of the regular expressions:
5911
5912    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5913    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5914    TKB              [subprogram suffix for task bodies]
5915    _E[0-9]+[bs]$    [protected object entry suffixes]
5916    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5917
5918    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5919    match is performed.  This sequence is used to differentiate homonyms,
5920    is an optional part of a valid name suffix.  */
5921
5922 static int
5923 is_name_suffix (const char *str)
5924 {
5925   int k;
5926   const char *matching;
5927   const int len = strlen (str);
5928
5929   /* Skip optional leading __[0-9]+.  */
5930
5931   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5932     {
5933       str += 3;
5934       while (isdigit (str[0]))
5935         str += 1;
5936     }
5937   
5938   /* [.$][0-9]+ */
5939
5940   if (str[0] == '.' || str[0] == '$')
5941     {
5942       matching = str + 1;
5943       while (isdigit (matching[0]))
5944         matching += 1;
5945       if (matching[0] == '\0')
5946         return 1;
5947     }
5948
5949   /* ___[0-9]+ */
5950
5951   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5952     {
5953       matching = str + 3;
5954       while (isdigit (matching[0]))
5955         matching += 1;
5956       if (matching[0] == '\0')
5957         return 1;
5958     }
5959
5960   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5961
5962   if (strcmp (str, "TKB") == 0)
5963     return 1;
5964
5965 #if 0
5966   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5967      with a N at the end.  Unfortunately, the compiler uses the same
5968      convention for other internal types it creates.  So treating
5969      all entity names that end with an "N" as a name suffix causes
5970      some regressions.  For instance, consider the case of an enumerated
5971      type.  To support the 'Image attribute, it creates an array whose
5972      name ends with N.
5973      Having a single character like this as a suffix carrying some
5974      information is a bit risky.  Perhaps we should change the encoding
5975      to be something like "_N" instead.  In the meantime, do not do
5976      the following check.  */
5977   /* Protected Object Subprograms */
5978   if (len == 1 && str [0] == 'N')
5979     return 1;
5980 #endif
5981
5982   /* _E[0-9]+[bs]$ */
5983   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5984     {
5985       matching = str + 3;
5986       while (isdigit (matching[0]))
5987         matching += 1;
5988       if ((matching[0] == 'b' || matching[0] == 's')
5989           && matching [1] == '\0')
5990         return 1;
5991     }
5992
5993   /* ??? We should not modify STR directly, as we are doing below.  This
5994      is fine in this case, but may become problematic later if we find
5995      that this alternative did not work, and want to try matching
5996      another one from the begining of STR.  Since we modified it, we
5997      won't be able to find the begining of the string anymore!  */
5998   if (str[0] == 'X')
5999     {
6000       str += 1;
6001       while (str[0] != '_' && str[0] != '\0')
6002         {
6003           if (str[0] != 'n' && str[0] != 'b')
6004             return 0;
6005           str += 1;
6006         }
6007     }
6008
6009   if (str[0] == '\000')
6010     return 1;
6011
6012   if (str[0] == '_')
6013     {
6014       if (str[1] != '_' || str[2] == '\000')
6015         return 0;
6016       if (str[2] == '_')
6017         {
6018           if (strcmp (str + 3, "JM") == 0)
6019             return 1;
6020           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6021              the LJM suffix in favor of the JM one.  But we will
6022              still accept LJM as a valid suffix for a reasonable
6023              amount of time, just to allow ourselves to debug programs
6024              compiled using an older version of GNAT.  */
6025           if (strcmp (str + 3, "LJM") == 0)
6026             return 1;
6027           if (str[3] != 'X')
6028             return 0;
6029           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6030               || str[4] == 'U' || str[4] == 'P')
6031             return 1;
6032           if (str[4] == 'R' && str[5] != 'T')
6033             return 1;
6034           return 0;
6035         }
6036       if (!isdigit (str[2]))
6037         return 0;
6038       for (k = 3; str[k] != '\0'; k += 1)
6039         if (!isdigit (str[k]) && str[k] != '_')
6040           return 0;
6041       return 1;
6042     }
6043   if (str[0] == '$' && isdigit (str[1]))
6044     {
6045       for (k = 2; str[k] != '\0'; k += 1)
6046         if (!isdigit (str[k]) && str[k] != '_')
6047           return 0;
6048       return 1;
6049     }
6050   return 0;
6051 }
6052
6053 /* Return non-zero if the string starting at NAME and ending before
6054    NAME_END contains no capital letters.  */
6055
6056 static int
6057 is_valid_name_for_wild_match (const char *name0)
6058 {
6059   std::string decoded_name = ada_decode (name0);
6060   int i;
6061
6062   /* If the decoded name starts with an angle bracket, it means that
6063      NAME0 does not follow the GNAT encoding format.  It should then
6064      not be allowed as a possible wild match.  */
6065   if (decoded_name[0] == '<')
6066     return 0;
6067
6068   for (i=0; decoded_name[i] != '\0'; i++)
6069     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6070       return 0;
6071
6072   return 1;
6073 }
6074
6075 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6076    that could start a simple name.  Assumes that *NAMEP points into
6077    the string beginning at NAME0.  */
6078
6079 static int
6080 advance_wild_match (const char **namep, const char *name0, int target0)
6081 {
6082   const char *name = *namep;
6083
6084   while (1)
6085     {
6086       int t0, t1;
6087
6088       t0 = *name;
6089       if (t0 == '_')
6090         {
6091           t1 = name[1];
6092           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6093             {
6094               name += 1;
6095               if (name == name0 + 5 && startswith (name0, "_ada"))
6096                 break;
6097               else
6098                 name += 1;
6099             }
6100           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6101                                  || name[2] == target0))
6102             {
6103               name += 2;
6104               break;
6105             }
6106           else
6107             return 0;
6108         }
6109       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6110         name += 1;
6111       else
6112         return 0;
6113     }
6114
6115   *namep = name;
6116   return 1;
6117 }
6118
6119 /* Return true iff NAME encodes a name of the form prefix.PATN.
6120    Ignores any informational suffixes of NAME (i.e., for which
6121    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6122    simple name.  */
6123
6124 static bool
6125 wild_match (const char *name, const char *patn)
6126 {
6127   const char *p;
6128   const char *name0 = name;
6129
6130   while (1)
6131     {
6132       const char *match = name;
6133
6134       if (*name == *patn)
6135         {
6136           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6137             if (*p != *name)
6138               break;
6139           if (*p == '\0' && is_name_suffix (name))
6140             return match == name0 || is_valid_name_for_wild_match (name0);
6141
6142           if (name[-1] == '_')
6143             name -= 1;
6144         }
6145       if (!advance_wild_match (&name, name0, *patn))
6146         return false;
6147     }
6148 }
6149
6150 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6151    any trailing suffixes that encode debugging information or leading
6152    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6153    information that is ignored).  */
6154
6155 static bool
6156 full_match (const char *sym_name, const char *search_name)
6157 {
6158   size_t search_name_len = strlen (search_name);
6159
6160   if (strncmp (sym_name, search_name, search_name_len) == 0
6161       && is_name_suffix (sym_name + search_name_len))
6162     return true;
6163
6164   if (startswith (sym_name, "_ada_")
6165       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6166       && is_name_suffix (sym_name + search_name_len + 5))
6167     return true;
6168
6169   return false;
6170 }
6171
6172 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6173    *defn_symbols, updating the list of symbols in OBSTACKP (if
6174    necessary).  OBJFILE is the section containing BLOCK.  */
6175
6176 static void
6177 ada_add_block_symbols (struct obstack *obstackp,
6178                        const struct block *block,
6179                        const lookup_name_info &lookup_name,
6180                        domain_enum domain, struct objfile *objfile)
6181 {
6182   struct block_iterator iter;
6183   /* A matching argument symbol, if any.  */
6184   struct symbol *arg_sym;
6185   /* Set true when we find a matching non-argument symbol.  */
6186   int found_sym;
6187   struct symbol *sym;
6188
6189   arg_sym = NULL;
6190   found_sym = 0;
6191   for (sym = block_iter_match_first (block, lookup_name, &iter);
6192        sym != NULL;
6193        sym = block_iter_match_next (lookup_name, &iter))
6194     {
6195       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6196         {
6197           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6198             {
6199               if (SYMBOL_IS_ARGUMENT (sym))
6200                 arg_sym = sym;
6201               else
6202                 {
6203                   found_sym = 1;
6204                   add_defn_to_vec (obstackp,
6205                                    fixup_symbol_section (sym, objfile),
6206                                    block);
6207                 }
6208             }
6209         }
6210     }
6211
6212   /* Handle renamings.  */
6213
6214   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6215     found_sym = 1;
6216
6217   if (!found_sym && arg_sym != NULL)
6218     {
6219       add_defn_to_vec (obstackp,
6220                        fixup_symbol_section (arg_sym, objfile),
6221                        block);
6222     }
6223
6224   if (!lookup_name.ada ().wild_match_p ())
6225     {
6226       arg_sym = NULL;
6227       found_sym = 0;
6228       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6229       const char *name = ada_lookup_name.c_str ();
6230       size_t name_len = ada_lookup_name.size ();
6231
6232       ALL_BLOCK_SYMBOLS (block, iter, sym)
6233       {
6234         if (symbol_matches_domain (sym->language (),
6235                                    SYMBOL_DOMAIN (sym), domain))
6236           {
6237             int cmp;
6238
6239             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6240             if (cmp == 0)
6241               {
6242                 cmp = !startswith (sym->linkage_name (), "_ada_");
6243                 if (cmp == 0)
6244                   cmp = strncmp (name, sym->linkage_name () + 5,
6245                                  name_len);
6246               }
6247
6248             if (cmp == 0
6249                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6250               {
6251                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6252                   {
6253                     if (SYMBOL_IS_ARGUMENT (sym))
6254                       arg_sym = sym;
6255                     else
6256                       {
6257                         found_sym = 1;
6258                         add_defn_to_vec (obstackp,
6259                                          fixup_symbol_section (sym, objfile),
6260                                          block);
6261                       }
6262                   }
6263               }
6264           }
6265       }
6266
6267       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6268          They aren't parameters, right?  */
6269       if (!found_sym && arg_sym != NULL)
6270         {
6271           add_defn_to_vec (obstackp,
6272                            fixup_symbol_section (arg_sym, objfile),
6273                            block);
6274         }
6275     }
6276 }
6277 \f
6278
6279                                 /* Symbol Completion */
6280
6281 /* See symtab.h.  */
6282
6283 bool
6284 ada_lookup_name_info::matches
6285   (const char *sym_name,
6286    symbol_name_match_type match_type,
6287    completion_match_result *comp_match_res) const
6288 {
6289   bool match = false;
6290   const char *text = m_encoded_name.c_str ();
6291   size_t text_len = m_encoded_name.size ();
6292
6293   /* First, test against the fully qualified name of the symbol.  */
6294
6295   if (strncmp (sym_name, text, text_len) == 0)
6296     match = true;
6297
6298   std::string decoded_name = ada_decode (sym_name);
6299   if (match && !m_encoded_p)
6300     {
6301       /* One needed check before declaring a positive match is to verify
6302          that iff we are doing a verbatim match, the decoded version
6303          of the symbol name starts with '<'.  Otherwise, this symbol name
6304          is not a suitable completion.  */
6305
6306       bool has_angle_bracket = (decoded_name[0] == '<');
6307       match = (has_angle_bracket == m_verbatim_p);
6308     }
6309
6310   if (match && !m_verbatim_p)
6311     {
6312       /* When doing non-verbatim match, another check that needs to
6313          be done is to verify that the potentially matching symbol name
6314          does not include capital letters, because the ada-mode would
6315          not be able to understand these symbol names without the
6316          angle bracket notation.  */
6317       const char *tmp;
6318
6319       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6320       if (*tmp != '\0')
6321         match = false;
6322     }
6323
6324   /* Second: Try wild matching...  */
6325
6326   if (!match && m_wild_match_p)
6327     {
6328       /* Since we are doing wild matching, this means that TEXT
6329          may represent an unqualified symbol name.  We therefore must
6330          also compare TEXT against the unqualified name of the symbol.  */
6331       sym_name = ada_unqualified_name (decoded_name.c_str ());
6332
6333       if (strncmp (sym_name, text, text_len) == 0)
6334         match = true;
6335     }
6336
6337   /* Finally: If we found a match, prepare the result to return.  */
6338
6339   if (!match)
6340     return false;
6341
6342   if (comp_match_res != NULL)
6343     {
6344       std::string &match_str = comp_match_res->match.storage ();
6345
6346       if (!m_encoded_p)
6347         match_str = ada_decode (sym_name);
6348       else
6349         {
6350           if (m_verbatim_p)
6351             match_str = add_angle_brackets (sym_name);
6352           else
6353             match_str = sym_name;
6354
6355         }
6356
6357       comp_match_res->set_match (match_str.c_str ());
6358     }
6359
6360   return true;
6361 }
6362
6363 /* Add the list of possible symbol names completing TEXT to TRACKER.
6364    WORD is the entire command on which completion is made.  */
6365
6366 static void
6367 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6368                                        complete_symbol_mode mode,
6369                                        symbol_name_match_type name_match_type,
6370                                        const char *text, const char *word,
6371                                        enum type_code code)
6372 {
6373   struct symbol *sym;
6374   const struct block *b, *surrounding_static_block = 0;
6375   struct block_iterator iter;
6376
6377   gdb_assert (code == TYPE_CODE_UNDEF);
6378
6379   lookup_name_info lookup_name (text, name_match_type, true);
6380
6381   /* First, look at the partial symtab symbols.  */
6382   expand_symtabs_matching (NULL,
6383                            lookup_name,
6384                            NULL,
6385                            NULL,
6386                            ALL_DOMAIN);
6387
6388   /* At this point scan through the misc symbol vectors and add each
6389      symbol you find to the list.  Eventually we want to ignore
6390      anything that isn't a text symbol (everything else will be
6391      handled by the psymtab code above).  */
6392
6393   for (objfile *objfile : current_program_space->objfiles ())
6394     {
6395       for (minimal_symbol *msymbol : objfile->msymbols ())
6396         {
6397           QUIT;
6398
6399           if (completion_skip_symbol (mode, msymbol))
6400             continue;
6401
6402           language symbol_language = msymbol->language ();
6403
6404           /* Ada minimal symbols won't have their language set to Ada.  If
6405              we let completion_list_add_name compare using the
6406              default/C-like matcher, then when completing e.g., symbols in a
6407              package named "pck", we'd match internal Ada symbols like
6408              "pckS", which are invalid in an Ada expression, unless you wrap
6409              them in '<' '>' to request a verbatim match.
6410
6411              Unfortunately, some Ada encoded names successfully demangle as
6412              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6413              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6414              with the wrong language set.  Paper over that issue here.  */
6415           if (symbol_language == language_auto
6416               || symbol_language == language_cplus)
6417             symbol_language = language_ada;
6418
6419           completion_list_add_name (tracker,
6420                                     symbol_language,
6421                                     msymbol->linkage_name (),
6422                                     lookup_name, text, word);
6423         }
6424     }
6425
6426   /* Search upwards from currently selected frame (so that we can
6427      complete on local vars.  */
6428
6429   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6430     {
6431       if (!BLOCK_SUPERBLOCK (b))
6432         surrounding_static_block = b;   /* For elmin of dups */
6433
6434       ALL_BLOCK_SYMBOLS (b, iter, sym)
6435       {
6436         if (completion_skip_symbol (mode, sym))
6437           continue;
6438
6439         completion_list_add_name (tracker,
6440                                   sym->language (),
6441                                   sym->linkage_name (),
6442                                   lookup_name, text, word);
6443       }
6444     }
6445
6446   /* Go through the symtabs and check the externs and statics for
6447      symbols which match.  */
6448
6449   for (objfile *objfile : current_program_space->objfiles ())
6450     {
6451       for (compunit_symtab *s : objfile->compunits ())
6452         {
6453           QUIT;
6454           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6455           ALL_BLOCK_SYMBOLS (b, iter, sym)
6456             {
6457               if (completion_skip_symbol (mode, sym))
6458                 continue;
6459
6460               completion_list_add_name (tracker,
6461                                         sym->language (),
6462                                         sym->linkage_name (),
6463                                         lookup_name, text, word);
6464             }
6465         }
6466     }
6467
6468   for (objfile *objfile : current_program_space->objfiles ())
6469     {
6470       for (compunit_symtab *s : objfile->compunits ())
6471         {
6472           QUIT;
6473           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6474           /* Don't do this block twice.  */
6475           if (b == surrounding_static_block)
6476             continue;
6477           ALL_BLOCK_SYMBOLS (b, iter, sym)
6478             {
6479               if (completion_skip_symbol (mode, sym))
6480                 continue;
6481
6482               completion_list_add_name (tracker,
6483                                         sym->language (),
6484                                         sym->linkage_name (),
6485                                         lookup_name, text, word);
6486             }
6487         }
6488     }
6489 }
6490
6491                                 /* Field Access */
6492
6493 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6494    for tagged types.  */
6495
6496 static int
6497 ada_is_dispatch_table_ptr_type (struct type *type)
6498 {
6499   const char *name;
6500
6501   if (type->code () != TYPE_CODE_PTR)
6502     return 0;
6503
6504   name = TYPE_TARGET_TYPE (type)->name ();
6505   if (name == NULL)
6506     return 0;
6507
6508   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6509 }
6510
6511 /* Return non-zero if TYPE is an interface tag.  */
6512
6513 static int
6514 ada_is_interface_tag (struct type *type)
6515 {
6516   const char *name = type->name ();
6517
6518   if (name == NULL)
6519     return 0;
6520
6521   return (strcmp (name, "ada__tags__interface_tag") == 0);
6522 }
6523
6524 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6525    to be invisible to users.  */
6526
6527 int
6528 ada_is_ignored_field (struct type *type, int field_num)
6529 {
6530   if (field_num < 0 || field_num > type->num_fields ())
6531     return 1;
6532
6533   /* Check the name of that field.  */
6534   {
6535     const char *name = TYPE_FIELD_NAME (type, field_num);
6536
6537     /* Anonymous field names should not be printed.
6538        brobecker/2007-02-20: I don't think this can actually happen
6539        but we don't want to print the value of anonymous fields anyway.  */
6540     if (name == NULL)
6541       return 1;
6542
6543     /* Normally, fields whose name start with an underscore ("_")
6544        are fields that have been internally generated by the compiler,
6545        and thus should not be printed.  The "_parent" field is special,
6546        however: This is a field internally generated by the compiler
6547        for tagged types, and it contains the components inherited from
6548        the parent type.  This field should not be printed as is, but
6549        should not be ignored either.  */
6550     if (name[0] == '_' && !startswith (name, "_parent"))
6551       return 1;
6552   }
6553
6554   /* If this is the dispatch table of a tagged type or an interface tag,
6555      then ignore.  */
6556   if (ada_is_tagged_type (type, 1)
6557       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6558           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6559     return 1;
6560
6561   /* Not a special field, so it should not be ignored.  */
6562   return 0;
6563 }
6564
6565 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6566    pointer or reference type whose ultimate target has a tag field.  */
6567
6568 int
6569 ada_is_tagged_type (struct type *type, int refok)
6570 {
6571   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6572 }
6573
6574 /* True iff TYPE represents the type of X'Tag */
6575
6576 int
6577 ada_is_tag_type (struct type *type)
6578 {
6579   type = ada_check_typedef (type);
6580
6581   if (type == NULL || type->code () != TYPE_CODE_PTR)
6582     return 0;
6583   else
6584     {
6585       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6586
6587       return (name != NULL
6588               && strcmp (name, "ada__tags__dispatch_table") == 0);
6589     }
6590 }
6591
6592 /* The type of the tag on VAL.  */
6593
6594 static struct type *
6595 ada_tag_type (struct value *val)
6596 {
6597   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6598 }
6599
6600 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6601    retired at Ada 05).  */
6602
6603 static int
6604 is_ada95_tag (struct value *tag)
6605 {
6606   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6607 }
6608
6609 /* The value of the tag on VAL.  */
6610
6611 static struct value *
6612 ada_value_tag (struct value *val)
6613 {
6614   return ada_value_struct_elt (val, "_tag", 0);
6615 }
6616
6617 /* The value of the tag on the object of type TYPE whose contents are
6618    saved at VALADDR, if it is non-null, or is at memory address
6619    ADDRESS.  */
6620
6621 static struct value *
6622 value_tag_from_contents_and_address (struct type *type,
6623                                      const gdb_byte *valaddr,
6624                                      CORE_ADDR address)
6625 {
6626   int tag_byte_offset;
6627   struct type *tag_type;
6628
6629   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6630                          NULL, NULL, NULL))
6631     {
6632       const gdb_byte *valaddr1 = ((valaddr == NULL)
6633                                   ? NULL
6634                                   : valaddr + tag_byte_offset);
6635       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6636
6637       return value_from_contents_and_address (tag_type, valaddr1, address1);
6638     }
6639   return NULL;
6640 }
6641
6642 static struct type *
6643 type_from_tag (struct value *tag)
6644 {
6645   const char *type_name = ada_tag_name (tag);
6646
6647   if (type_name != NULL)
6648     return ada_find_any_type (ada_encode (type_name));
6649   return NULL;
6650 }
6651
6652 /* Given a value OBJ of a tagged type, return a value of this
6653    type at the base address of the object.  The base address, as
6654    defined in Ada.Tags, it is the address of the primary tag of
6655    the object, and therefore where the field values of its full
6656    view can be fetched.  */
6657
6658 struct value *
6659 ada_tag_value_at_base_address (struct value *obj)
6660 {
6661   struct value *val;
6662   LONGEST offset_to_top = 0;
6663   struct type *ptr_type, *obj_type;
6664   struct value *tag;
6665   CORE_ADDR base_address;
6666
6667   obj_type = value_type (obj);
6668
6669   /* It is the responsability of the caller to deref pointers.  */
6670
6671   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6672     return obj;
6673
6674   tag = ada_value_tag (obj);
6675   if (!tag)
6676     return obj;
6677
6678   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6679
6680   if (is_ada95_tag (tag))
6681     return obj;
6682
6683   ptr_type = language_lookup_primitive_type
6684     (language_def (language_ada), target_gdbarch(), "storage_offset");
6685   ptr_type = lookup_pointer_type (ptr_type);
6686   val = value_cast (ptr_type, tag);
6687   if (!val)
6688     return obj;
6689
6690   /* It is perfectly possible that an exception be raised while
6691      trying to determine the base address, just like for the tag;
6692      see ada_tag_name for more details.  We do not print the error
6693      message for the same reason.  */
6694
6695   try
6696     {
6697       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6698     }
6699
6700   catch (const gdb_exception_error &e)
6701     {
6702       return obj;
6703     }
6704
6705   /* If offset is null, nothing to do.  */
6706
6707   if (offset_to_top == 0)
6708     return obj;
6709
6710   /* -1 is a special case in Ada.Tags; however, what should be done
6711      is not quite clear from the documentation.  So do nothing for
6712      now.  */
6713
6714   if (offset_to_top == -1)
6715     return obj;
6716
6717   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6718      from the base address.  This was however incompatible with
6719      C++ dispatch table: C++ uses a *negative* value to *add*
6720      to the base address.  Ada's convention has therefore been
6721      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6722      use the same convention.  Here, we support both cases by
6723      checking the sign of OFFSET_TO_TOP.  */
6724
6725   if (offset_to_top > 0)
6726     offset_to_top = -offset_to_top;
6727
6728   base_address = value_address (obj) + offset_to_top;
6729   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6730
6731   /* Make sure that we have a proper tag at the new address.
6732      Otherwise, offset_to_top is bogus (which can happen when
6733      the object is not initialized yet).  */
6734
6735   if (!tag)
6736     return obj;
6737
6738   obj_type = type_from_tag (tag);
6739
6740   if (!obj_type)
6741     return obj;
6742
6743   return value_from_contents_and_address (obj_type, NULL, base_address);
6744 }
6745
6746 /* Return the "ada__tags__type_specific_data" type.  */
6747
6748 static struct type *
6749 ada_get_tsd_type (struct inferior *inf)
6750 {
6751   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6752
6753   if (data->tsd_type == 0)
6754     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6755   return data->tsd_type;
6756 }
6757
6758 /* Return the TSD (type-specific data) associated to the given TAG.
6759    TAG is assumed to be the tag of a tagged-type entity.
6760
6761    May return NULL if we are unable to get the TSD.  */
6762
6763 static struct value *
6764 ada_get_tsd_from_tag (struct value *tag)
6765 {
6766   struct value *val;
6767   struct type *type;
6768
6769   /* First option: The TSD is simply stored as a field of our TAG.
6770      Only older versions of GNAT would use this format, but we have
6771      to test it first, because there are no visible markers for
6772      the current approach except the absence of that field.  */
6773
6774   val = ada_value_struct_elt (tag, "tsd", 1);
6775   if (val)
6776     return val;
6777
6778   /* Try the second representation for the dispatch table (in which
6779      there is no explicit 'tsd' field in the referent of the tag pointer,
6780      and instead the tsd pointer is stored just before the dispatch
6781      table.  */
6782
6783   type = ada_get_tsd_type (current_inferior());
6784   if (type == NULL)
6785     return NULL;
6786   type = lookup_pointer_type (lookup_pointer_type (type));
6787   val = value_cast (type, tag);
6788   if (val == NULL)
6789     return NULL;
6790   return value_ind (value_ptradd (val, -1));
6791 }
6792
6793 /* Given the TSD of a tag (type-specific data), return a string
6794    containing the name of the associated type.
6795
6796    The returned value is good until the next call.  May return NULL
6797    if we are unable to determine the tag name.  */
6798
6799 static char *
6800 ada_tag_name_from_tsd (struct value *tsd)
6801 {
6802   static char name[1024];
6803   char *p;
6804   struct value *val;
6805
6806   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6807   if (val == NULL)
6808     return NULL;
6809   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6810   for (p = name; *p != '\0'; p += 1)
6811     if (isalpha (*p))
6812       *p = tolower (*p);
6813   return name;
6814 }
6815
6816 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6817    a C string.
6818
6819    Return NULL if the TAG is not an Ada tag, or if we were unable to
6820    determine the name of that tag.  The result is good until the next
6821    call.  */
6822
6823 const char *
6824 ada_tag_name (struct value *tag)
6825 {
6826   char *name = NULL;
6827
6828   if (!ada_is_tag_type (value_type (tag)))
6829     return NULL;
6830
6831   /* It is perfectly possible that an exception be raised while trying
6832      to determine the TAG's name, even under normal circumstances:
6833      The associated variable may be uninitialized or corrupted, for
6834      instance. We do not let any exception propagate past this point.
6835      instead we return NULL.
6836
6837      We also do not print the error message either (which often is very
6838      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6839      the caller print a more meaningful message if necessary.  */
6840   try
6841     {
6842       struct value *tsd = ada_get_tsd_from_tag (tag);
6843
6844       if (tsd != NULL)
6845         name = ada_tag_name_from_tsd (tsd);
6846     }
6847   catch (const gdb_exception_error &e)
6848     {
6849     }
6850
6851   return name;
6852 }
6853
6854 /* The parent type of TYPE, or NULL if none.  */
6855
6856 struct type *
6857 ada_parent_type (struct type *type)
6858 {
6859   int i;
6860
6861   type = ada_check_typedef (type);
6862
6863   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6864     return NULL;
6865
6866   for (i = 0; i < type->num_fields (); i += 1)
6867     if (ada_is_parent_field (type, i))
6868       {
6869         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6870
6871         /* If the _parent field is a pointer, then dereference it.  */
6872         if (parent_type->code () == TYPE_CODE_PTR)
6873           parent_type = TYPE_TARGET_TYPE (parent_type);
6874         /* If there is a parallel XVS type, get the actual base type.  */
6875         parent_type = ada_get_base_type (parent_type);
6876
6877         return ada_check_typedef (parent_type);
6878       }
6879
6880   return NULL;
6881 }
6882
6883 /* True iff field number FIELD_NUM of structure type TYPE contains the
6884    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6885    a structure type with at least FIELD_NUM+1 fields.  */
6886
6887 int
6888 ada_is_parent_field (struct type *type, int field_num)
6889 {
6890   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6891
6892   return (name != NULL
6893           && (startswith (name, "PARENT")
6894               || startswith (name, "_parent")));
6895 }
6896
6897 /* True iff field number FIELD_NUM of structure type TYPE is a
6898    transparent wrapper field (which should be silently traversed when doing
6899    field selection and flattened when printing).  Assumes TYPE is a
6900    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6901    structures.  */
6902
6903 int
6904 ada_is_wrapper_field (struct type *type, int field_num)
6905 {
6906   const char *name = TYPE_FIELD_NAME (type, field_num);
6907
6908   if (name != NULL && strcmp (name, "RETVAL") == 0)
6909     {
6910       /* This happens in functions with "out" or "in out" parameters
6911          which are passed by copy.  For such functions, GNAT describes
6912          the function's return type as being a struct where the return
6913          value is in a field called RETVAL, and where the other "out"
6914          or "in out" parameters are fields of that struct.  This is not
6915          a wrapper.  */
6916       return 0;
6917     }
6918
6919   return (name != NULL
6920           && (startswith (name, "PARENT")
6921               || strcmp (name, "REP") == 0
6922               || startswith (name, "_parent")
6923               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6924 }
6925
6926 /* True iff field number FIELD_NUM of structure or union type TYPE
6927    is a variant wrapper.  Assumes TYPE is a structure type with at least
6928    FIELD_NUM+1 fields.  */
6929
6930 int
6931 ada_is_variant_part (struct type *type, int field_num)
6932 {
6933   /* Only Ada types are eligible.  */
6934   if (!ADA_TYPE_P (type))
6935     return 0;
6936
6937   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6938
6939   return (field_type->code () == TYPE_CODE_UNION
6940           || (is_dynamic_field (type, field_num)
6941               && (TYPE_TARGET_TYPE (field_type)->code ()
6942                   == TYPE_CODE_UNION)));
6943 }
6944
6945 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6946    whose discriminants are contained in the record type OUTER_TYPE,
6947    returns the type of the controlling discriminant for the variant.
6948    May return NULL if the type could not be found.  */
6949
6950 struct type *
6951 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6952 {
6953   const char *name = ada_variant_discrim_name (var_type);
6954
6955   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6956 }
6957
6958 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6959    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6960    represents a 'when others' clause; otherwise 0.  */
6961
6962 static int
6963 ada_is_others_clause (struct type *type, int field_num)
6964 {
6965   const char *name = TYPE_FIELD_NAME (type, field_num);
6966
6967   return (name != NULL && name[0] == 'O');
6968 }
6969
6970 /* Assuming that TYPE0 is the type of the variant part of a record,
6971    returns the name of the discriminant controlling the variant.
6972    The value is valid until the next call to ada_variant_discrim_name.  */
6973
6974 const char *
6975 ada_variant_discrim_name (struct type *type0)
6976 {
6977   static char *result = NULL;
6978   static size_t result_len = 0;
6979   struct type *type;
6980   const char *name;
6981   const char *discrim_end;
6982   const char *discrim_start;
6983
6984   if (type0->code () == TYPE_CODE_PTR)
6985     type = TYPE_TARGET_TYPE (type0);
6986   else
6987     type = type0;
6988
6989   name = ada_type_name (type);
6990
6991   if (name == NULL || name[0] == '\000')
6992     return "";
6993
6994   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6995        discrim_end -= 1)
6996     {
6997       if (startswith (discrim_end, "___XVN"))
6998         break;
6999     }
7000   if (discrim_end == name)
7001     return "";
7002
7003   for (discrim_start = discrim_end; discrim_start != name + 3;
7004        discrim_start -= 1)
7005     {
7006       if (discrim_start == name + 1)
7007         return "";
7008       if ((discrim_start > name + 3
7009            && startswith (discrim_start - 3, "___"))
7010           || discrim_start[-1] == '.')
7011         break;
7012     }
7013
7014   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7015   strncpy (result, discrim_start, discrim_end - discrim_start);
7016   result[discrim_end - discrim_start] = '\0';
7017   return result;
7018 }
7019
7020 /* Scan STR for a subtype-encoded number, beginning at position K.
7021    Put the position of the character just past the number scanned in
7022    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7023    Return 1 if there was a valid number at the given position, and 0
7024    otherwise.  A "subtype-encoded" number consists of the absolute value
7025    in decimal, followed by the letter 'm' to indicate a negative number.
7026    Assumes 0m does not occur.  */
7027
7028 int
7029 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7030 {
7031   ULONGEST RU;
7032
7033   if (!isdigit (str[k]))
7034     return 0;
7035
7036   /* Do it the hard way so as not to make any assumption about
7037      the relationship of unsigned long (%lu scan format code) and
7038      LONGEST.  */
7039   RU = 0;
7040   while (isdigit (str[k]))
7041     {
7042       RU = RU * 10 + (str[k] - '0');
7043       k += 1;
7044     }
7045
7046   if (str[k] == 'm')
7047     {
7048       if (R != NULL)
7049         *R = (-(LONGEST) (RU - 1)) - 1;
7050       k += 1;
7051     }
7052   else if (R != NULL)
7053     *R = (LONGEST) RU;
7054
7055   /* NOTE on the above: Technically, C does not say what the results of
7056      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7057      number representable as a LONGEST (although either would probably work
7058      in most implementations).  When RU>0, the locution in the then branch
7059      above is always equivalent to the negative of RU.  */
7060
7061   if (new_k != NULL)
7062     *new_k = k;
7063   return 1;
7064 }
7065
7066 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7067    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7068    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7069
7070 static int
7071 ada_in_variant (LONGEST val, struct type *type, int field_num)
7072 {
7073   const char *name = TYPE_FIELD_NAME (type, field_num);
7074   int p;
7075
7076   p = 0;
7077   while (1)
7078     {
7079       switch (name[p])
7080         {
7081         case '\0':
7082           return 0;
7083         case 'S':
7084           {
7085             LONGEST W;
7086
7087             if (!ada_scan_number (name, p + 1, &W, &p))
7088               return 0;
7089             if (val == W)
7090               return 1;
7091             break;
7092           }
7093         case 'R':
7094           {
7095             LONGEST L, U;
7096
7097             if (!ada_scan_number (name, p + 1, &L, &p)
7098                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7099               return 0;
7100             if (val >= L && val <= U)
7101               return 1;
7102             break;
7103           }
7104         case 'O':
7105           return 1;
7106         default:
7107           return 0;
7108         }
7109     }
7110 }
7111
7112 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7113
7114 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7115    ARG_TYPE, extract and return the value of one of its (non-static)
7116    fields.  FIELDNO says which field.   Differs from value_primitive_field
7117    only in that it can handle packed values of arbitrary type.  */
7118
7119 struct value *
7120 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7121                            struct type *arg_type)
7122 {
7123   struct type *type;
7124
7125   arg_type = ada_check_typedef (arg_type);
7126   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7127
7128   /* Handle packed fields.  It might be that the field is not packed
7129      relative to its containing structure, but the structure itself is
7130      packed; in this case we must take the bit-field path.  */
7131   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7132     {
7133       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7134       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7135
7136       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7137                                              offset + bit_pos / 8,
7138                                              bit_pos % 8, bit_size, type);
7139     }
7140   else
7141     return value_primitive_field (arg1, offset, fieldno, arg_type);
7142 }
7143
7144 /* Find field with name NAME in object of type TYPE.  If found, 
7145    set the following for each argument that is non-null:
7146     - *FIELD_TYPE_P to the field's type; 
7147     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7148       an object of that type;
7149     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7150     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7151       0 otherwise;
7152    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7153    fields up to but not including the desired field, or by the total
7154    number of fields if not found.   A NULL value of NAME never
7155    matches; the function just counts visible fields in this case.
7156    
7157    Notice that we need to handle when a tagged record hierarchy
7158    has some components with the same name, like in this scenario:
7159
7160       type Top_T is tagged record
7161          N : Integer := 1;
7162          U : Integer := 974;
7163          A : Integer := 48;
7164       end record;
7165
7166       type Middle_T is new Top.Top_T with record
7167          N : Character := 'a';
7168          C : Integer := 3;
7169       end record;
7170
7171      type Bottom_T is new Middle.Middle_T with record
7172         N : Float := 4.0;
7173         C : Character := '5';
7174         X : Integer := 6;
7175         A : Character := 'J';
7176      end record;
7177
7178    Let's say we now have a variable declared and initialized as follow:
7179
7180      TC : Top_A := new Bottom_T;
7181
7182    And then we use this variable to call this function
7183
7184      procedure Assign (Obj: in out Top_T; TV : Integer);
7185
7186    as follow:
7187
7188       Assign (Top_T (B), 12);
7189
7190    Now, we're in the debugger, and we're inside that procedure
7191    then and we want to print the value of obj.c:
7192
7193    Usually, the tagged record or one of the parent type owns the
7194    component to print and there's no issue but in this particular
7195    case, what does it mean to ask for Obj.C? Since the actual
7196    type for object is type Bottom_T, it could mean two things: type
7197    component C from the Middle_T view, but also component C from
7198    Bottom_T.  So in that "undefined" case, when the component is
7199    not found in the non-resolved type (which includes all the
7200    components of the parent type), then resolve it and see if we
7201    get better luck once expanded.
7202
7203    In the case of homonyms in the derived tagged type, we don't
7204    guaranty anything, and pick the one that's easiest for us
7205    to program.
7206
7207    Returns 1 if found, 0 otherwise.  */
7208
7209 static int
7210 find_struct_field (const char *name, struct type *type, int offset,
7211                    struct type **field_type_p,
7212                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7213                    int *index_p)
7214 {
7215   int i;
7216   int parent_offset = -1;
7217
7218   type = ada_check_typedef (type);
7219
7220   if (field_type_p != NULL)
7221     *field_type_p = NULL;
7222   if (byte_offset_p != NULL)
7223     *byte_offset_p = 0;
7224   if (bit_offset_p != NULL)
7225     *bit_offset_p = 0;
7226   if (bit_size_p != NULL)
7227     *bit_size_p = 0;
7228
7229   for (i = 0; i < type->num_fields (); i += 1)
7230     {
7231       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7232       int fld_offset = offset + bit_pos / 8;
7233       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7234
7235       if (t_field_name == NULL)
7236         continue;
7237
7238       else if (ada_is_parent_field (type, i))
7239         {
7240           /* This is a field pointing us to the parent type of a tagged
7241              type.  As hinted in this function's documentation, we give
7242              preference to fields in the current record first, so what
7243              we do here is just record the index of this field before
7244              we skip it.  If it turns out we couldn't find our field
7245              in the current record, then we'll get back to it and search
7246              inside it whether the field might exist in the parent.  */
7247
7248           parent_offset = i;
7249           continue;
7250         }
7251
7252       else if (name != NULL && field_name_match (t_field_name, name))
7253         {
7254           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7255
7256           if (field_type_p != NULL)
7257             *field_type_p = TYPE_FIELD_TYPE (type, i);
7258           if (byte_offset_p != NULL)
7259             *byte_offset_p = fld_offset;
7260           if (bit_offset_p != NULL)
7261             *bit_offset_p = bit_pos % 8;
7262           if (bit_size_p != NULL)
7263             *bit_size_p = bit_size;
7264           return 1;
7265         }
7266       else if (ada_is_wrapper_field (type, i))
7267         {
7268           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7269                                  field_type_p, byte_offset_p, bit_offset_p,
7270                                  bit_size_p, index_p))
7271             return 1;
7272         }
7273       else if (ada_is_variant_part (type, i))
7274         {
7275           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7276              fixed type?? */
7277           int j;
7278           struct type *field_type
7279             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7280
7281           for (j = 0; j < field_type->num_fields (); j += 1)
7282             {
7283               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7284                                      fld_offset
7285                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7286                                      field_type_p, byte_offset_p,
7287                                      bit_offset_p, bit_size_p, index_p))
7288                 return 1;
7289             }
7290         }
7291       else if (index_p != NULL)
7292         *index_p += 1;
7293     }
7294
7295   /* Field not found so far.  If this is a tagged type which
7296      has a parent, try finding that field in the parent now.  */
7297
7298   if (parent_offset != -1)
7299     {
7300       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7301       int fld_offset = offset + bit_pos / 8;
7302
7303       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7304                              fld_offset, field_type_p, byte_offset_p,
7305                              bit_offset_p, bit_size_p, index_p))
7306         return 1;
7307     }
7308
7309   return 0;
7310 }
7311
7312 /* Number of user-visible fields in record type TYPE.  */
7313
7314 static int
7315 num_visible_fields (struct type *type)
7316 {
7317   int n;
7318
7319   n = 0;
7320   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7321   return n;
7322 }
7323
7324 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7325    and search in it assuming it has (class) type TYPE.
7326    If found, return value, else return NULL.
7327
7328    Searches recursively through wrapper fields (e.g., '_parent').
7329
7330    In the case of homonyms in the tagged types, please refer to the
7331    long explanation in find_struct_field's function documentation.  */
7332
7333 static struct value *
7334 ada_search_struct_field (const char *name, struct value *arg, int offset,
7335                          struct type *type)
7336 {
7337   int i;
7338   int parent_offset = -1;
7339
7340   type = ada_check_typedef (type);
7341   for (i = 0; i < type->num_fields (); i += 1)
7342     {
7343       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7344
7345       if (t_field_name == NULL)
7346         continue;
7347
7348       else if (ada_is_parent_field (type, i))
7349         {
7350           /* This is a field pointing us to the parent type of a tagged
7351              type.  As hinted in this function's documentation, we give
7352              preference to fields in the current record first, so what
7353              we do here is just record the index of this field before
7354              we skip it.  If it turns out we couldn't find our field
7355              in the current record, then we'll get back to it and search
7356              inside it whether the field might exist in the parent.  */
7357
7358           parent_offset = i;
7359           continue;
7360         }
7361
7362       else if (field_name_match (t_field_name, name))
7363         return ada_value_primitive_field (arg, offset, i, type);
7364
7365       else if (ada_is_wrapper_field (type, i))
7366         {
7367           struct value *v =     /* Do not let indent join lines here.  */
7368             ada_search_struct_field (name, arg,
7369                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7370                                      TYPE_FIELD_TYPE (type, i));
7371
7372           if (v != NULL)
7373             return v;
7374         }
7375
7376       else if (ada_is_variant_part (type, i))
7377         {
7378           /* PNH: Do we ever get here?  See find_struct_field.  */
7379           int j;
7380           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7381                                                                         i));
7382           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7383
7384           for (j = 0; j < field_type->num_fields (); j += 1)
7385             {
7386               struct value *v = ada_search_struct_field /* Force line
7387                                                            break.  */
7388                 (name, arg,
7389                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7390                  TYPE_FIELD_TYPE (field_type, j));
7391
7392               if (v != NULL)
7393                 return v;
7394             }
7395         }
7396     }
7397
7398   /* Field not found so far.  If this is a tagged type which
7399      has a parent, try finding that field in the parent now.  */
7400
7401   if (parent_offset != -1)
7402     {
7403       struct value *v = ada_search_struct_field (
7404         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7405         TYPE_FIELD_TYPE (type, parent_offset));
7406
7407       if (v != NULL)
7408         return v;
7409     }
7410
7411   return NULL;
7412 }
7413
7414 static struct value *ada_index_struct_field_1 (int *, struct value *,
7415                                                int, struct type *);
7416
7417
7418 /* Return field #INDEX in ARG, where the index is that returned by
7419  * find_struct_field through its INDEX_P argument.  Adjust the address
7420  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7421  * If found, return value, else return NULL.  */
7422
7423 static struct value *
7424 ada_index_struct_field (int index, struct value *arg, int offset,
7425                         struct type *type)
7426 {
7427   return ada_index_struct_field_1 (&index, arg, offset, type);
7428 }
7429
7430
7431 /* Auxiliary function for ada_index_struct_field.  Like
7432  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7433  * *INDEX_P.  */
7434
7435 static struct value *
7436 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7437                           struct type *type)
7438 {
7439   int i;
7440   type = ada_check_typedef (type);
7441
7442   for (i = 0; i < type->num_fields (); i += 1)
7443     {
7444       if (TYPE_FIELD_NAME (type, i) == NULL)
7445         continue;
7446       else if (ada_is_wrapper_field (type, i))
7447         {
7448           struct value *v =     /* Do not let indent join lines here.  */
7449             ada_index_struct_field_1 (index_p, arg,
7450                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7451                                       TYPE_FIELD_TYPE (type, i));
7452
7453           if (v != NULL)
7454             return v;
7455         }
7456
7457       else if (ada_is_variant_part (type, i))
7458         {
7459           /* PNH: Do we ever get here?  See ada_search_struct_field,
7460              find_struct_field.  */
7461           error (_("Cannot assign this kind of variant record"));
7462         }
7463       else if (*index_p == 0)
7464         return ada_value_primitive_field (arg, offset, i, type);
7465       else
7466         *index_p -= 1;
7467     }
7468   return NULL;
7469 }
7470
7471 /* Return a string representation of type TYPE.  */
7472
7473 static std::string
7474 type_as_string (struct type *type)
7475 {
7476   string_file tmp_stream;
7477
7478   type_print (type, "", &tmp_stream, -1);
7479
7480   return std::move (tmp_stream.string ());
7481 }
7482
7483 /* Given a type TYPE, look up the type of the component of type named NAME.
7484    If DISPP is non-null, add its byte displacement from the beginning of a
7485    structure (pointed to by a value) of type TYPE to *DISPP (does not
7486    work for packed fields).
7487
7488    Matches any field whose name has NAME as a prefix, possibly
7489    followed by "___".
7490
7491    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7492    be a (pointer or reference)+ to a struct or union, and the
7493    ultimate target type will be searched.
7494
7495    Looks recursively into variant clauses and parent types.
7496
7497    In the case of homonyms in the tagged types, please refer to the
7498    long explanation in find_struct_field's function documentation.
7499
7500    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7501    TYPE is not a type of the right kind.  */
7502
7503 static struct type *
7504 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7505                             int noerr)
7506 {
7507   int i;
7508   int parent_offset = -1;
7509
7510   if (name == NULL)
7511     goto BadName;
7512
7513   if (refok && type != NULL)
7514     while (1)
7515       {
7516         type = ada_check_typedef (type);
7517         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7518           break;
7519         type = TYPE_TARGET_TYPE (type);
7520       }
7521
7522   if (type == NULL
7523       || (type->code () != TYPE_CODE_STRUCT
7524           && type->code () != TYPE_CODE_UNION))
7525     {
7526       if (noerr)
7527         return NULL;
7528
7529       error (_("Type %s is not a structure or union type"),
7530              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7531     }
7532
7533   type = to_static_fixed_type (type);
7534
7535   for (i = 0; i < type->num_fields (); i += 1)
7536     {
7537       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7538       struct type *t;
7539
7540       if (t_field_name == NULL)
7541         continue;
7542
7543       else if (ada_is_parent_field (type, i))
7544         {
7545           /* This is a field pointing us to the parent type of a tagged
7546              type.  As hinted in this function's documentation, we give
7547              preference to fields in the current record first, so what
7548              we do here is just record the index of this field before
7549              we skip it.  If it turns out we couldn't find our field
7550              in the current record, then we'll get back to it and search
7551              inside it whether the field might exist in the parent.  */
7552
7553           parent_offset = i;
7554           continue;
7555         }
7556
7557       else if (field_name_match (t_field_name, name))
7558         return TYPE_FIELD_TYPE (type, i);
7559
7560       else if (ada_is_wrapper_field (type, i))
7561         {
7562           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7563                                           0, 1);
7564           if (t != NULL)
7565             return t;
7566         }
7567
7568       else if (ada_is_variant_part (type, i))
7569         {
7570           int j;
7571           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7572                                                                         i));
7573
7574           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7575             {
7576               /* FIXME pnh 2008/01/26: We check for a field that is
7577                  NOT wrapped in a struct, since the compiler sometimes
7578                  generates these for unchecked variant types.  Revisit
7579                  if the compiler changes this practice.  */
7580               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7581
7582               if (v_field_name != NULL 
7583                   && field_name_match (v_field_name, name))
7584                 t = TYPE_FIELD_TYPE (field_type, j);
7585               else
7586                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7587                                                                  j),
7588                                                 name, 0, 1);
7589
7590               if (t != NULL)
7591                 return t;
7592             }
7593         }
7594
7595     }
7596
7597     /* Field not found so far.  If this is a tagged type which
7598        has a parent, try finding that field in the parent now.  */
7599
7600     if (parent_offset != -1)
7601       {
7602         struct type *t;
7603
7604         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7605                                         name, 0, 1);
7606         if (t != NULL)
7607           return t;
7608       }
7609
7610 BadName:
7611   if (!noerr)
7612     {
7613       const char *name_str = name != NULL ? name : _("<null>");
7614
7615       error (_("Type %s has no component named %s"),
7616              type_as_string (type).c_str (), name_str);
7617     }
7618
7619   return NULL;
7620 }
7621
7622 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7623    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7624    represents an unchecked union (that is, the variant part of a
7625    record that is named in an Unchecked_Union pragma).  */
7626
7627 static int
7628 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7629 {
7630   const char *discrim_name = ada_variant_discrim_name (var_type);
7631
7632   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7633 }
7634
7635
7636 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7637    within OUTER, determine which variant clause (field number in VAR_TYPE,
7638    numbering from 0) is applicable.  Returns -1 if none are.  */
7639
7640 int
7641 ada_which_variant_applies (struct type *var_type, struct value *outer)
7642 {
7643   int others_clause;
7644   int i;
7645   const char *discrim_name = ada_variant_discrim_name (var_type);
7646   struct value *discrim;
7647   LONGEST discrim_val;
7648
7649   /* Using plain value_from_contents_and_address here causes problems
7650      because we will end up trying to resolve a type that is currently
7651      being constructed.  */
7652   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7653   if (discrim == NULL)
7654     return -1;
7655   discrim_val = value_as_long (discrim);
7656
7657   others_clause = -1;
7658   for (i = 0; i < var_type->num_fields (); i += 1)
7659     {
7660       if (ada_is_others_clause (var_type, i))
7661         others_clause = i;
7662       else if (ada_in_variant (discrim_val, var_type, i))
7663         return i;
7664     }
7665
7666   return others_clause;
7667 }
7668 \f
7669
7670
7671                                 /* Dynamic-Sized Records */
7672
7673 /* Strategy: The type ostensibly attached to a value with dynamic size
7674    (i.e., a size that is not statically recorded in the debugging
7675    data) does not accurately reflect the size or layout of the value.
7676    Our strategy is to convert these values to values with accurate,
7677    conventional types that are constructed on the fly.  */
7678
7679 /* There is a subtle and tricky problem here.  In general, we cannot
7680    determine the size of dynamic records without its data.  However,
7681    the 'struct value' data structure, which GDB uses to represent
7682    quantities in the inferior process (the target), requires the size
7683    of the type at the time of its allocation in order to reserve space
7684    for GDB's internal copy of the data.  That's why the
7685    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7686    rather than struct value*s.
7687
7688    However, GDB's internal history variables ($1, $2, etc.) are
7689    struct value*s containing internal copies of the data that are not, in
7690    general, the same as the data at their corresponding addresses in
7691    the target.  Fortunately, the types we give to these values are all
7692    conventional, fixed-size types (as per the strategy described
7693    above), so that we don't usually have to perform the
7694    'to_fixed_xxx_type' conversions to look at their values.
7695    Unfortunately, there is one exception: if one of the internal
7696    history variables is an array whose elements are unconstrained
7697    records, then we will need to create distinct fixed types for each
7698    element selected.  */
7699
7700 /* The upshot of all of this is that many routines take a (type, host
7701    address, target address) triple as arguments to represent a value.
7702    The host address, if non-null, is supposed to contain an internal
7703    copy of the relevant data; otherwise, the program is to consult the
7704    target at the target address.  */
7705
7706 /* Assuming that VAL0 represents a pointer value, the result of
7707    dereferencing it.  Differs from value_ind in its treatment of
7708    dynamic-sized types.  */
7709
7710 struct value *
7711 ada_value_ind (struct value *val0)
7712 {
7713   struct value *val = value_ind (val0);
7714
7715   if (ada_is_tagged_type (value_type (val), 0))
7716     val = ada_tag_value_at_base_address (val);
7717
7718   return ada_to_fixed_value (val);
7719 }
7720
7721 /* The value resulting from dereferencing any "reference to"
7722    qualifiers on VAL0.  */
7723
7724 static struct value *
7725 ada_coerce_ref (struct value *val0)
7726 {
7727   if (value_type (val0)->code () == TYPE_CODE_REF)
7728     {
7729       struct value *val = val0;
7730
7731       val = coerce_ref (val);
7732
7733       if (ada_is_tagged_type (value_type (val), 0))
7734         val = ada_tag_value_at_base_address (val);
7735
7736       return ada_to_fixed_value (val);
7737     }
7738   else
7739     return val0;
7740 }
7741
7742 /* Return the bit alignment required for field #F of template type TYPE.  */
7743
7744 static unsigned int
7745 field_alignment (struct type *type, int f)
7746 {
7747   const char *name = TYPE_FIELD_NAME (type, f);
7748   int len;
7749   int align_offset;
7750
7751   /* The field name should never be null, unless the debugging information
7752      is somehow malformed.  In this case, we assume the field does not
7753      require any alignment.  */
7754   if (name == NULL)
7755     return 1;
7756
7757   len = strlen (name);
7758
7759   if (!isdigit (name[len - 1]))
7760     return 1;
7761
7762   if (isdigit (name[len - 2]))
7763     align_offset = len - 2;
7764   else
7765     align_offset = len - 1;
7766
7767   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7768     return TARGET_CHAR_BIT;
7769
7770   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7771 }
7772
7773 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7774
7775 static struct symbol *
7776 ada_find_any_type_symbol (const char *name)
7777 {
7778   struct symbol *sym;
7779
7780   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7781   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7782     return sym;
7783
7784   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7785   return sym;
7786 }
7787
7788 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7789    solely for types defined by debug info, it will not search the GDB
7790    primitive types.  */
7791
7792 static struct type *
7793 ada_find_any_type (const char *name)
7794 {
7795   struct symbol *sym = ada_find_any_type_symbol (name);
7796
7797   if (sym != NULL)
7798     return SYMBOL_TYPE (sym);
7799
7800   return NULL;
7801 }
7802
7803 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7804    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7805    symbol, in which case it is returned.  Otherwise, this looks for
7806    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7807    Return symbol if found, and NULL otherwise.  */
7808
7809 static bool
7810 ada_is_renaming_symbol (struct symbol *name_sym)
7811 {
7812   const char *name = name_sym->linkage_name ();
7813   return strstr (name, "___XR") != NULL;
7814 }
7815
7816 /* Because of GNAT encoding conventions, several GDB symbols may match a
7817    given type name.  If the type denoted by TYPE0 is to be preferred to
7818    that of TYPE1 for purposes of type printing, return non-zero;
7819    otherwise return 0.  */
7820
7821 int
7822 ada_prefer_type (struct type *type0, struct type *type1)
7823 {
7824   if (type1 == NULL)
7825     return 1;
7826   else if (type0 == NULL)
7827     return 0;
7828   else if (type1->code () == TYPE_CODE_VOID)
7829     return 1;
7830   else if (type0->code () == TYPE_CODE_VOID)
7831     return 0;
7832   else if (type1->name () == NULL && type0->name () != NULL)
7833     return 1;
7834   else if (ada_is_constrained_packed_array_type (type0))
7835     return 1;
7836   else if (ada_is_array_descriptor_type (type0)
7837            && !ada_is_array_descriptor_type (type1))
7838     return 1;
7839   else
7840     {
7841       const char *type0_name = type0->name ();
7842       const char *type1_name = type1->name ();
7843
7844       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7845           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7846         return 1;
7847     }
7848   return 0;
7849 }
7850
7851 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7852    null.  */
7853
7854 const char *
7855 ada_type_name (struct type *type)
7856 {
7857   if (type == NULL)
7858     return NULL;
7859   return type->name ();
7860 }
7861
7862 /* Search the list of "descriptive" types associated to TYPE for a type
7863    whose name is NAME.  */
7864
7865 static struct type *
7866 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7867 {
7868   struct type *result, *tmp;
7869
7870   if (ada_ignore_descriptive_types_p)
7871     return NULL;
7872
7873   /* If there no descriptive-type info, then there is no parallel type
7874      to be found.  */
7875   if (!HAVE_GNAT_AUX_INFO (type))
7876     return NULL;
7877
7878   result = TYPE_DESCRIPTIVE_TYPE (type);
7879   while (result != NULL)
7880     {
7881       const char *result_name = ada_type_name (result);
7882
7883       if (result_name == NULL)
7884         {
7885           warning (_("unexpected null name on descriptive type"));
7886           return NULL;
7887         }
7888
7889       /* If the names match, stop.  */
7890       if (strcmp (result_name, name) == 0)
7891         break;
7892
7893       /* Otherwise, look at the next item on the list, if any.  */
7894       if (HAVE_GNAT_AUX_INFO (result))
7895         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7896       else
7897         tmp = NULL;
7898
7899       /* If not found either, try after having resolved the typedef.  */
7900       if (tmp != NULL)
7901         result = tmp;
7902       else
7903         {
7904           result = check_typedef (result);
7905           if (HAVE_GNAT_AUX_INFO (result))
7906             result = TYPE_DESCRIPTIVE_TYPE (result);
7907           else
7908             result = NULL;
7909         }
7910     }
7911
7912   /* If we didn't find a match, see whether this is a packed array.  With
7913      older compilers, the descriptive type information is either absent or
7914      irrelevant when it comes to packed arrays so the above lookup fails.
7915      Fall back to using a parallel lookup by name in this case.  */
7916   if (result == NULL && ada_is_constrained_packed_array_type (type))
7917     return ada_find_any_type (name);
7918
7919   return result;
7920 }
7921
7922 /* Find a parallel type to TYPE with the specified NAME, using the
7923    descriptive type taken from the debugging information, if available,
7924    and otherwise using the (slower) name-based method.  */
7925
7926 static struct type *
7927 ada_find_parallel_type_with_name (struct type *type, const char *name)
7928 {
7929   struct type *result = NULL;
7930
7931   if (HAVE_GNAT_AUX_INFO (type))
7932     result = find_parallel_type_by_descriptive_type (type, name);
7933   else
7934     result = ada_find_any_type (name);
7935
7936   return result;
7937 }
7938
7939 /* Same as above, but specify the name of the parallel type by appending
7940    SUFFIX to the name of TYPE.  */
7941
7942 struct type *
7943 ada_find_parallel_type (struct type *type, const char *suffix)
7944 {
7945   char *name;
7946   const char *type_name = ada_type_name (type);
7947   int len;
7948
7949   if (type_name == NULL)
7950     return NULL;
7951
7952   len = strlen (type_name);
7953
7954   name = (char *) alloca (len + strlen (suffix) + 1);
7955
7956   strcpy (name, type_name);
7957   strcpy (name + len, suffix);
7958
7959   return ada_find_parallel_type_with_name (type, name);
7960 }
7961
7962 /* If TYPE is a variable-size record type, return the corresponding template
7963    type describing its fields.  Otherwise, return NULL.  */
7964
7965 static struct type *
7966 dynamic_template_type (struct type *type)
7967 {
7968   type = ada_check_typedef (type);
7969
7970   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7971       || ada_type_name (type) == NULL)
7972     return NULL;
7973   else
7974     {
7975       int len = strlen (ada_type_name (type));
7976
7977       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7978         return type;
7979       else
7980         return ada_find_parallel_type (type, "___XVE");
7981     }
7982 }
7983
7984 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7985    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7986
7987 static int
7988 is_dynamic_field (struct type *templ_type, int field_num)
7989 {
7990   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7991
7992   return name != NULL
7993     && TYPE_FIELD_TYPE (templ_type, field_num)->code () == TYPE_CODE_PTR
7994     && strstr (name, "___XVL") != NULL;
7995 }
7996
7997 /* The index of the variant field of TYPE, or -1 if TYPE does not
7998    represent a variant record type.  */
7999
8000 static int
8001 variant_field_index (struct type *type)
8002 {
8003   int f;
8004
8005   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
8006     return -1;
8007
8008   for (f = 0; f < type->num_fields (); f += 1)
8009     {
8010       if (ada_is_variant_part (type, f))
8011         return f;
8012     }
8013   return -1;
8014 }
8015
8016 /* A record type with no fields.  */
8017
8018 static struct type *
8019 empty_record (struct type *templ)
8020 {
8021   struct type *type = alloc_type_copy (templ);
8022
8023   type->set_code (TYPE_CODE_STRUCT);
8024   INIT_NONE_SPECIFIC (type);
8025   type->set_name ("<empty>");
8026   TYPE_LENGTH (type) = 0;
8027   return type;
8028 }
8029
8030 /* An ordinary record type (with fixed-length fields) that describes
8031    the value of type TYPE at VALADDR or ADDRESS (see comments at
8032    the beginning of this section) VAL according to GNAT conventions.
8033    DVAL0 should describe the (portion of a) record that contains any
8034    necessary discriminants.  It should be NULL if value_type (VAL) is
8035    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8036    variant field (unless unchecked) is replaced by a particular branch
8037    of the variant.
8038
8039    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8040    length are not statically known are discarded.  As a consequence,
8041    VALADDR, ADDRESS and DVAL0 are ignored.
8042
8043    NOTE: Limitations: For now, we assume that dynamic fields and
8044    variants occupy whole numbers of bytes.  However, they need not be
8045    byte-aligned.  */
8046
8047 struct type *
8048 ada_template_to_fixed_record_type_1 (struct type *type,
8049                                      const gdb_byte *valaddr,
8050                                      CORE_ADDR address, struct value *dval0,
8051                                      int keep_dynamic_fields)
8052 {
8053   struct value *mark = value_mark ();
8054   struct value *dval;
8055   struct type *rtype;
8056   int nfields, bit_len;
8057   int variant_field;
8058   long off;
8059   int fld_bit_len;
8060   int f;
8061
8062   /* Compute the number of fields in this record type that are going
8063      to be processed: unless keep_dynamic_fields, this includes only
8064      fields whose position and length are static will be processed.  */
8065   if (keep_dynamic_fields)
8066     nfields = type->num_fields ();
8067   else
8068     {
8069       nfields = 0;
8070       while (nfields < type->num_fields ()
8071              && !ada_is_variant_part (type, nfields)
8072              && !is_dynamic_field (type, nfields))
8073         nfields++;
8074     }
8075
8076   rtype = alloc_type_copy (type);
8077   rtype->set_code (TYPE_CODE_STRUCT);
8078   INIT_NONE_SPECIFIC (rtype);
8079   rtype->set_num_fields (nfields);
8080   rtype->set_fields
8081    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
8082   rtype->set_name (ada_type_name (type));
8083   TYPE_FIXED_INSTANCE (rtype) = 1;
8084
8085   off = 0;
8086   bit_len = 0;
8087   variant_field = -1;
8088
8089   for (f = 0; f < nfields; f += 1)
8090     {
8091       off = align_up (off, field_alignment (type, f))
8092         + TYPE_FIELD_BITPOS (type, f);
8093       SET_FIELD_BITPOS (rtype->field (f), off);
8094       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8095
8096       if (ada_is_variant_part (type, f))
8097         {
8098           variant_field = f;
8099           fld_bit_len = 0;
8100         }
8101       else if (is_dynamic_field (type, f))
8102         {
8103           const gdb_byte *field_valaddr = valaddr;
8104           CORE_ADDR field_address = address;
8105           struct type *field_type =
8106             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8107
8108           if (dval0 == NULL)
8109             {
8110               /* rtype's length is computed based on the run-time
8111                  value of discriminants.  If the discriminants are not
8112                  initialized, the type size may be completely bogus and
8113                  GDB may fail to allocate a value for it.  So check the
8114                  size first before creating the value.  */
8115               ada_ensure_varsize_limit (rtype);
8116               /* Using plain value_from_contents_and_address here
8117                  causes problems because we will end up trying to
8118                  resolve a type that is currently being
8119                  constructed.  */
8120               dval = value_from_contents_and_address_unresolved (rtype,
8121                                                                  valaddr,
8122                                                                  address);
8123               rtype = value_type (dval);
8124             }
8125           else
8126             dval = dval0;
8127
8128           /* If the type referenced by this field is an aligner type, we need
8129              to unwrap that aligner type, because its size might not be set.
8130              Keeping the aligner type would cause us to compute the wrong
8131              size for this field, impacting the offset of the all the fields
8132              that follow this one.  */
8133           if (ada_is_aligner_type (field_type))
8134             {
8135               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8136
8137               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8138               field_address = cond_offset_target (field_address, field_offset);
8139               field_type = ada_aligned_type (field_type);
8140             }
8141
8142           field_valaddr = cond_offset_host (field_valaddr,
8143                                             off / TARGET_CHAR_BIT);
8144           field_address = cond_offset_target (field_address,
8145                                               off / TARGET_CHAR_BIT);
8146
8147           /* Get the fixed type of the field.  Note that, in this case,
8148              we do not want to get the real type out of the tag: if
8149              the current field is the parent part of a tagged record,
8150              we will get the tag of the object.  Clearly wrong: the real
8151              type of the parent is not the real type of the child.  We
8152              would end up in an infinite loop.  */
8153           field_type = ada_get_base_type (field_type);
8154           field_type = ada_to_fixed_type (field_type, field_valaddr,
8155                                           field_address, dval, 0);
8156           /* If the field size is already larger than the maximum
8157              object size, then the record itself will necessarily
8158              be larger than the maximum object size.  We need to make
8159              this check now, because the size might be so ridiculously
8160              large (due to an uninitialized variable in the inferior)
8161              that it would cause an overflow when adding it to the
8162              record size.  */
8163           ada_ensure_varsize_limit (field_type);
8164
8165           TYPE_FIELD_TYPE (rtype, f) = field_type;
8166           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8167           /* The multiplication can potentially overflow.  But because
8168              the field length has been size-checked just above, and
8169              assuming that the maximum size is a reasonable value,
8170              an overflow should not happen in practice.  So rather than
8171              adding overflow recovery code to this already complex code,
8172              we just assume that it's not going to happen.  */
8173           fld_bit_len =
8174             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8175         }
8176       else
8177         {
8178           /* Note: If this field's type is a typedef, it is important
8179              to preserve the typedef layer.
8180
8181              Otherwise, we might be transforming a typedef to a fat
8182              pointer (encoding a pointer to an unconstrained array),
8183              into a basic fat pointer (encoding an unconstrained
8184              array).  As both types are implemented using the same
8185              structure, the typedef is the only clue which allows us
8186              to distinguish between the two options.  Stripping it
8187              would prevent us from printing this field appropriately.  */
8188           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8189           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8190           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8191             fld_bit_len =
8192               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8193           else
8194             {
8195               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8196
8197               /* We need to be careful of typedefs when computing
8198                  the length of our field.  If this is a typedef,
8199                  get the length of the target type, not the length
8200                  of the typedef.  */
8201               if (field_type->code () == TYPE_CODE_TYPEDEF)
8202                 field_type = ada_typedef_target_type (field_type);
8203
8204               fld_bit_len =
8205                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8206             }
8207         }
8208       if (off + fld_bit_len > bit_len)
8209         bit_len = off + fld_bit_len;
8210       off += fld_bit_len;
8211       TYPE_LENGTH (rtype) =
8212         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8213     }
8214
8215   /* We handle the variant part, if any, at the end because of certain
8216      odd cases in which it is re-ordered so as NOT to be the last field of
8217      the record.  This can happen in the presence of representation
8218      clauses.  */
8219   if (variant_field >= 0)
8220     {
8221       struct type *branch_type;
8222
8223       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8224
8225       if (dval0 == NULL)
8226         {
8227           /* Using plain value_from_contents_and_address here causes
8228              problems because we will end up trying to resolve a type
8229              that is currently being constructed.  */
8230           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8231                                                              address);
8232           rtype = value_type (dval);
8233         }
8234       else
8235         dval = dval0;
8236
8237       branch_type =
8238         to_fixed_variant_branch_type
8239         (TYPE_FIELD_TYPE (type, variant_field),
8240          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8241          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8242       if (branch_type == NULL)
8243         {
8244           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
8245             rtype->field (f - 1) = rtype->field (f);
8246           rtype->set_num_fields (rtype->num_fields () - 1);
8247         }
8248       else
8249         {
8250           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8251           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8252           fld_bit_len =
8253             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8254             TARGET_CHAR_BIT;
8255           if (off + fld_bit_len > bit_len)
8256             bit_len = off + fld_bit_len;
8257           TYPE_LENGTH (rtype) =
8258             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8259         }
8260     }
8261
8262   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8263      should contain the alignment of that record, which should be a strictly
8264      positive value.  If null or negative, then something is wrong, most
8265      probably in the debug info.  In that case, we don't round up the size
8266      of the resulting type.  If this record is not part of another structure,
8267      the current RTYPE length might be good enough for our purposes.  */
8268   if (TYPE_LENGTH (type) <= 0)
8269     {
8270       if (rtype->name ())
8271         warning (_("Invalid type size for `%s' detected: %s."),
8272                  rtype->name (), pulongest (TYPE_LENGTH (type)));
8273       else
8274         warning (_("Invalid type size for <unnamed> detected: %s."),
8275                  pulongest (TYPE_LENGTH (type)));
8276     }
8277   else
8278     {
8279       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8280                                       TYPE_LENGTH (type));
8281     }
8282
8283   value_free_to_mark (mark);
8284   if (TYPE_LENGTH (rtype) > varsize_limit)
8285     error (_("record type with dynamic size is larger than varsize-limit"));
8286   return rtype;
8287 }
8288
8289 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8290    of 1.  */
8291
8292 static struct type *
8293 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8294                                CORE_ADDR address, struct value *dval0)
8295 {
8296   return ada_template_to_fixed_record_type_1 (type, valaddr,
8297                                               address, dval0, 1);
8298 }
8299
8300 /* An ordinary record type in which ___XVL-convention fields and
8301    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8302    static approximations, containing all possible fields.  Uses
8303    no runtime values.  Useless for use in values, but that's OK,
8304    since the results are used only for type determinations.   Works on both
8305    structs and unions.  Representation note: to save space, we memorize
8306    the result of this function in the TYPE_TARGET_TYPE of the
8307    template type.  */
8308
8309 static struct type *
8310 template_to_static_fixed_type (struct type *type0)
8311 {
8312   struct type *type;
8313   int nfields;
8314   int f;
8315
8316   /* No need no do anything if the input type is already fixed.  */
8317   if (TYPE_FIXED_INSTANCE (type0))
8318     return type0;
8319
8320   /* Likewise if we already have computed the static approximation.  */
8321   if (TYPE_TARGET_TYPE (type0) != NULL)
8322     return TYPE_TARGET_TYPE (type0);
8323
8324   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8325   type = type0;
8326   nfields = type0->num_fields ();
8327
8328   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8329      recompute all over next time.  */
8330   TYPE_TARGET_TYPE (type0) = type;
8331
8332   for (f = 0; f < nfields; f += 1)
8333     {
8334       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8335       struct type *new_type;
8336
8337       if (is_dynamic_field (type0, f))
8338         {
8339           field_type = ada_check_typedef (field_type);
8340           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8341         }
8342       else
8343         new_type = static_unwrap_type (field_type);
8344
8345       if (new_type != field_type)
8346         {
8347           /* Clone TYPE0 only the first time we get a new field type.  */
8348           if (type == type0)
8349             {
8350               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8351               type->set_code (type0->code ());
8352               INIT_NONE_SPECIFIC (type);
8353               type->set_num_fields (nfields);
8354
8355               field *fields =
8356                 ((struct field *)
8357                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
8358               memcpy (fields, type0->fields (),
8359                       sizeof (struct field) * nfields);
8360               type->set_fields (fields);
8361
8362               type->set_name (ada_type_name (type0));
8363               TYPE_FIXED_INSTANCE (type) = 1;
8364               TYPE_LENGTH (type) = 0;
8365             }
8366           TYPE_FIELD_TYPE (type, f) = new_type;
8367           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8368         }
8369     }
8370
8371   return type;
8372 }
8373
8374 /* Given an object of type TYPE whose contents are at VALADDR and
8375    whose address in memory is ADDRESS, returns a revision of TYPE,
8376    which should be a non-dynamic-sized record, in which the variant
8377    part, if any, is replaced with the appropriate branch.  Looks
8378    for discriminant values in DVAL0, which can be NULL if the record
8379    contains the necessary discriminant values.  */
8380
8381 static struct type *
8382 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8383                                    CORE_ADDR address, struct value *dval0)
8384 {
8385   struct value *mark = value_mark ();
8386   struct value *dval;
8387   struct type *rtype;
8388   struct type *branch_type;
8389   int nfields = type->num_fields ();
8390   int variant_field = variant_field_index (type);
8391
8392   if (variant_field == -1)
8393     return type;
8394
8395   if (dval0 == NULL)
8396     {
8397       dval = value_from_contents_and_address (type, valaddr, address);
8398       type = value_type (dval);
8399     }
8400   else
8401     dval = dval0;
8402
8403   rtype = alloc_type_copy (type);
8404   rtype->set_code (TYPE_CODE_STRUCT);
8405   INIT_NONE_SPECIFIC (rtype);
8406   rtype->set_num_fields (nfields);
8407
8408   field *fields =
8409     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8410   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8411   rtype->set_fields (fields);
8412
8413   rtype->set_name (ada_type_name (type));
8414   TYPE_FIXED_INSTANCE (rtype) = 1;
8415   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8416
8417   branch_type = to_fixed_variant_branch_type
8418     (TYPE_FIELD_TYPE (type, variant_field),
8419      cond_offset_host (valaddr,
8420                        TYPE_FIELD_BITPOS (type, variant_field)
8421                        / TARGET_CHAR_BIT),
8422      cond_offset_target (address,
8423                          TYPE_FIELD_BITPOS (type, variant_field)
8424                          / TARGET_CHAR_BIT), dval);
8425   if (branch_type == NULL)
8426     {
8427       int f;
8428
8429       for (f = variant_field + 1; f < nfields; f += 1)
8430         rtype->field (f - 1) = rtype->field (f);
8431       rtype->set_num_fields (rtype->num_fields () - 1);
8432     }
8433   else
8434     {
8435       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8436       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8437       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8438       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8439     }
8440   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8441
8442   value_free_to_mark (mark);
8443   return rtype;
8444 }
8445
8446 /* An ordinary record type (with fixed-length fields) that describes
8447    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8448    beginning of this section].   Any necessary discriminants' values
8449    should be in DVAL, a record value; it may be NULL if the object
8450    at ADDR itself contains any necessary discriminant values.
8451    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8452    values from the record are needed.  Except in the case that DVAL,
8453    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8454    unchecked) is replaced by a particular branch of the variant.
8455
8456    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8457    is questionable and may be removed.  It can arise during the
8458    processing of an unconstrained-array-of-record type where all the
8459    variant branches have exactly the same size.  This is because in
8460    such cases, the compiler does not bother to use the XVS convention
8461    when encoding the record.  I am currently dubious of this
8462    shortcut and suspect the compiler should be altered.  FIXME.  */
8463
8464 static struct type *
8465 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8466                       CORE_ADDR address, struct value *dval)
8467 {
8468   struct type *templ_type;
8469
8470   if (TYPE_FIXED_INSTANCE (type0))
8471     return type0;
8472
8473   templ_type = dynamic_template_type (type0);
8474
8475   if (templ_type != NULL)
8476     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8477   else if (variant_field_index (type0) >= 0)
8478     {
8479       if (dval == NULL && valaddr == NULL && address == 0)
8480         return type0;
8481       return to_record_with_fixed_variant_part (type0, valaddr, address,
8482                                                 dval);
8483     }
8484   else
8485     {
8486       TYPE_FIXED_INSTANCE (type0) = 1;
8487       return type0;
8488     }
8489
8490 }
8491
8492 /* An ordinary record type (with fixed-length fields) that describes
8493    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8494    union type.  Any necessary discriminants' values should be in DVAL,
8495    a record value.  That is, this routine selects the appropriate
8496    branch of the union at ADDR according to the discriminant value
8497    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8498    it represents a variant subject to a pragma Unchecked_Union.  */
8499
8500 static struct type *
8501 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8502                               CORE_ADDR address, struct value *dval)
8503 {
8504   int which;
8505   struct type *templ_type;
8506   struct type *var_type;
8507
8508   if (var_type0->code () == TYPE_CODE_PTR)
8509     var_type = TYPE_TARGET_TYPE (var_type0);
8510   else
8511     var_type = var_type0;
8512
8513   templ_type = ada_find_parallel_type (var_type, "___XVU");
8514
8515   if (templ_type != NULL)
8516     var_type = templ_type;
8517
8518   if (is_unchecked_variant (var_type, value_type (dval)))
8519       return var_type0;
8520   which = ada_which_variant_applies (var_type, dval);
8521
8522   if (which < 0)
8523     return empty_record (var_type);
8524   else if (is_dynamic_field (var_type, which))
8525     return to_fixed_record_type
8526       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8527        valaddr, address, dval);
8528   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8529     return
8530       to_fixed_record_type
8531       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8532   else
8533     return TYPE_FIELD_TYPE (var_type, which);
8534 }
8535
8536 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8537    ENCODING_TYPE, a type following the GNAT conventions for discrete
8538    type encodings, only carries redundant information.  */
8539
8540 static int
8541 ada_is_redundant_range_encoding (struct type *range_type,
8542                                  struct type *encoding_type)
8543 {
8544   const char *bounds_str;
8545   int n;
8546   LONGEST lo, hi;
8547
8548   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8549
8550   if (get_base_type (range_type)->code ()
8551       != get_base_type (encoding_type)->code ())
8552     {
8553       /* The compiler probably used a simple base type to describe
8554          the range type instead of the range's actual base type,
8555          expecting us to get the real base type from the encoding
8556          anyway.  In this situation, the encoding cannot be ignored
8557          as redundant.  */
8558       return 0;
8559     }
8560
8561   if (is_dynamic_type (range_type))
8562     return 0;
8563
8564   if (encoding_type->name () == NULL)
8565     return 0;
8566
8567   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8568   if (bounds_str == NULL)
8569     return 0;
8570
8571   n = 8; /* Skip "___XDLU_".  */
8572   if (!ada_scan_number (bounds_str, n, &lo, &n))
8573     return 0;
8574   if (TYPE_LOW_BOUND (range_type) != lo)
8575     return 0;
8576
8577   n += 2; /* Skip the "__" separator between the two bounds.  */
8578   if (!ada_scan_number (bounds_str, n, &hi, &n))
8579     return 0;
8580   if (TYPE_HIGH_BOUND (range_type) != hi)
8581     return 0;
8582
8583   return 1;
8584 }
8585
8586 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8587    a type following the GNAT encoding for describing array type
8588    indices, only carries redundant information.  */
8589
8590 static int
8591 ada_is_redundant_index_type_desc (struct type *array_type,
8592                                   struct type *desc_type)
8593 {
8594   struct type *this_layer = check_typedef (array_type);
8595   int i;
8596
8597   for (i = 0; i < desc_type->num_fields (); i++)
8598     {
8599       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8600                                             TYPE_FIELD_TYPE (desc_type, i)))
8601         return 0;
8602       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8603     }
8604
8605   return 1;
8606 }
8607
8608 /* Assuming that TYPE0 is an array type describing the type of a value
8609    at ADDR, and that DVAL describes a record containing any
8610    discriminants used in TYPE0, returns a type for the value that
8611    contains no dynamic components (that is, no components whose sizes
8612    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8613    true, gives an error message if the resulting type's size is over
8614    varsize_limit.  */
8615
8616 static struct type *
8617 to_fixed_array_type (struct type *type0, struct value *dval,
8618                      int ignore_too_big)
8619 {
8620   struct type *index_type_desc;
8621   struct type *result;
8622   int constrained_packed_array_p;
8623   static const char *xa_suffix = "___XA";
8624
8625   type0 = ada_check_typedef (type0);
8626   if (TYPE_FIXED_INSTANCE (type0))
8627     return type0;
8628
8629   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8630   if (constrained_packed_array_p)
8631     type0 = decode_constrained_packed_array_type (type0);
8632
8633   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8634
8635   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8636      encoding suffixed with 'P' may still be generated.  If so,
8637      it should be used to find the XA type.  */
8638
8639   if (index_type_desc == NULL)
8640     {
8641       const char *type_name = ada_type_name (type0);
8642
8643       if (type_name != NULL)
8644         {
8645           const int len = strlen (type_name);
8646           char *name = (char *) alloca (len + strlen (xa_suffix));
8647
8648           if (type_name[len - 1] == 'P')
8649             {
8650               strcpy (name, type_name);
8651               strcpy (name + len - 1, xa_suffix);
8652               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8653             }
8654         }
8655     }
8656
8657   ada_fixup_array_indexes_type (index_type_desc);
8658   if (index_type_desc != NULL
8659       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8660     {
8661       /* Ignore this ___XA parallel type, as it does not bring any
8662          useful information.  This allows us to avoid creating fixed
8663          versions of the array's index types, which would be identical
8664          to the original ones.  This, in turn, can also help avoid
8665          the creation of fixed versions of the array itself.  */
8666       index_type_desc = NULL;
8667     }
8668
8669   if (index_type_desc == NULL)
8670     {
8671       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8672
8673       /* NOTE: elt_type---the fixed version of elt_type0---should never
8674          depend on the contents of the array in properly constructed
8675          debugging data.  */
8676       /* Create a fixed version of the array element type.
8677          We're not providing the address of an element here,
8678          and thus the actual object value cannot be inspected to do
8679          the conversion.  This should not be a problem, since arrays of
8680          unconstrained objects are not allowed.  In particular, all
8681          the elements of an array of a tagged type should all be of
8682          the same type specified in the debugging info.  No need to
8683          consult the object tag.  */
8684       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8685
8686       /* Make sure we always create a new array type when dealing with
8687          packed array types, since we're going to fix-up the array
8688          type length and element bitsize a little further down.  */
8689       if (elt_type0 == elt_type && !constrained_packed_array_p)
8690         result = type0;
8691       else
8692         result = create_array_type (alloc_type_copy (type0),
8693                                     elt_type, TYPE_INDEX_TYPE (type0));
8694     }
8695   else
8696     {
8697       int i;
8698       struct type *elt_type0;
8699
8700       elt_type0 = type0;
8701       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8702         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8703
8704       /* NOTE: result---the fixed version of elt_type0---should never
8705          depend on the contents of the array in properly constructed
8706          debugging data.  */
8707       /* Create a fixed version of the array element type.
8708          We're not providing the address of an element here,
8709          and thus the actual object value cannot be inspected to do
8710          the conversion.  This should not be a problem, since arrays of
8711          unconstrained objects are not allowed.  In particular, all
8712          the elements of an array of a tagged type should all be of
8713          the same type specified in the debugging info.  No need to
8714          consult the object tag.  */
8715       result =
8716         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8717
8718       elt_type0 = type0;
8719       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8720         {
8721           struct type *range_type =
8722             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8723
8724           result = create_array_type (alloc_type_copy (elt_type0),
8725                                       result, range_type);
8726           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8727         }
8728       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8729         error (_("array type with dynamic size is larger than varsize-limit"));
8730     }
8731
8732   /* We want to preserve the type name.  This can be useful when
8733      trying to get the type name of a value that has already been
8734      printed (for instance, if the user did "print VAR; whatis $".  */
8735   result->set_name (type0->name ());
8736
8737   if (constrained_packed_array_p)
8738     {
8739       /* So far, the resulting type has been created as if the original
8740          type was a regular (non-packed) array type.  As a result, the
8741          bitsize of the array elements needs to be set again, and the array
8742          length needs to be recomputed based on that bitsize.  */
8743       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8744       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8745
8746       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8747       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8748       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8749         TYPE_LENGTH (result)++;
8750     }
8751
8752   TYPE_FIXED_INSTANCE (result) = 1;
8753   return result;
8754 }
8755
8756
8757 /* A standard type (containing no dynamically sized components)
8758    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8759    DVAL describes a record containing any discriminants used in TYPE0,
8760    and may be NULL if there are none, or if the object of type TYPE at
8761    ADDRESS or in VALADDR contains these discriminants.
8762    
8763    If CHECK_TAG is not null, in the case of tagged types, this function
8764    attempts to locate the object's tag and use it to compute the actual
8765    type.  However, when ADDRESS is null, we cannot use it to determine the
8766    location of the tag, and therefore compute the tagged type's actual type.
8767    So we return the tagged type without consulting the tag.  */
8768    
8769 static struct type *
8770 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8771                    CORE_ADDR address, struct value *dval, int check_tag)
8772 {
8773   type = ada_check_typedef (type);
8774
8775   /* Only un-fixed types need to be handled here.  */
8776   if (!HAVE_GNAT_AUX_INFO (type))
8777     return type;
8778
8779   switch (type->code ())
8780     {
8781     default:
8782       return type;
8783     case TYPE_CODE_STRUCT:
8784       {
8785         struct type *static_type = to_static_fixed_type (type);
8786         struct type *fixed_record_type =
8787           to_fixed_record_type (type, valaddr, address, NULL);
8788
8789         /* If STATIC_TYPE is a tagged type and we know the object's address,
8790            then we can determine its tag, and compute the object's actual
8791            type from there.  Note that we have to use the fixed record
8792            type (the parent part of the record may have dynamic fields
8793            and the way the location of _tag is expressed may depend on
8794            them).  */
8795
8796         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8797           {
8798             struct value *tag =
8799               value_tag_from_contents_and_address
8800               (fixed_record_type,
8801                valaddr,
8802                address);
8803             struct type *real_type = type_from_tag (tag);
8804             struct value *obj =
8805               value_from_contents_and_address (fixed_record_type,
8806                                                valaddr,
8807                                                address);
8808             fixed_record_type = value_type (obj);
8809             if (real_type != NULL)
8810               return to_fixed_record_type
8811                 (real_type, NULL,
8812                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8813           }
8814
8815         /* Check to see if there is a parallel ___XVZ variable.
8816            If there is, then it provides the actual size of our type.  */
8817         else if (ada_type_name (fixed_record_type) != NULL)
8818           {
8819             const char *name = ada_type_name (fixed_record_type);
8820             char *xvz_name
8821               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8822             bool xvz_found = false;
8823             LONGEST size;
8824
8825             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8826             try
8827               {
8828                 xvz_found = get_int_var_value (xvz_name, size);
8829               }
8830             catch (const gdb_exception_error &except)
8831               {
8832                 /* We found the variable, but somehow failed to read
8833                    its value.  Rethrow the same error, but with a little
8834                    bit more information, to help the user understand
8835                    what went wrong (Eg: the variable might have been
8836                    optimized out).  */
8837                 throw_error (except.error,
8838                              _("unable to read value of %s (%s)"),
8839                              xvz_name, except.what ());
8840               }
8841
8842             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8843               {
8844                 fixed_record_type = copy_type (fixed_record_type);
8845                 TYPE_LENGTH (fixed_record_type) = size;
8846
8847                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8848                    observed this when the debugging info is STABS, and
8849                    apparently it is something that is hard to fix.
8850
8851                    In practice, we don't need the actual type definition
8852                    at all, because the presence of the XVZ variable allows us
8853                    to assume that there must be a XVS type as well, which we
8854                    should be able to use later, when we need the actual type
8855                    definition.
8856
8857                    In the meantime, pretend that the "fixed" type we are
8858                    returning is NOT a stub, because this can cause trouble
8859                    when using this type to create new types targeting it.
8860                    Indeed, the associated creation routines often check
8861                    whether the target type is a stub and will try to replace
8862                    it, thus using a type with the wrong size.  This, in turn,
8863                    might cause the new type to have the wrong size too.
8864                    Consider the case of an array, for instance, where the size
8865                    of the array is computed from the number of elements in
8866                    our array multiplied by the size of its element.  */
8867                 TYPE_STUB (fixed_record_type) = 0;
8868               }
8869           }
8870         return fixed_record_type;
8871       }
8872     case TYPE_CODE_ARRAY:
8873       return to_fixed_array_type (type, dval, 1);
8874     case TYPE_CODE_UNION:
8875       if (dval == NULL)
8876         return type;
8877       else
8878         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8879     }
8880 }
8881
8882 /* The same as ada_to_fixed_type_1, except that it preserves the type
8883    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8884
8885    The typedef layer needs be preserved in order to differentiate between
8886    arrays and array pointers when both types are implemented using the same
8887    fat pointer.  In the array pointer case, the pointer is encoded as
8888    a typedef of the pointer type.  For instance, considering:
8889
8890           type String_Access is access String;
8891           S1 : String_Access := null;
8892
8893    To the debugger, S1 is defined as a typedef of type String.  But
8894    to the user, it is a pointer.  So if the user tries to print S1,
8895    we should not dereference the array, but print the array address
8896    instead.
8897
8898    If we didn't preserve the typedef layer, we would lose the fact that
8899    the type is to be presented as a pointer (needs de-reference before
8900    being printed).  And we would also use the source-level type name.  */
8901
8902 struct type *
8903 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8904                    CORE_ADDR address, struct value *dval, int check_tag)
8905
8906 {
8907   struct type *fixed_type =
8908     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8909
8910   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8911       then preserve the typedef layer.
8912
8913       Implementation note: We can only check the main-type portion of
8914       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8915       from TYPE now returns a type that has the same instance flags
8916       as TYPE.  For instance, if TYPE is a "typedef const", and its
8917       target type is a "struct", then the typedef elimination will return
8918       a "const" version of the target type.  See check_typedef for more
8919       details about how the typedef layer elimination is done.
8920
8921       brobecker/2010-11-19: It seems to me that the only case where it is
8922       useful to preserve the typedef layer is when dealing with fat pointers.
8923       Perhaps, we could add a check for that and preserve the typedef layer
8924       only in that situation.  But this seems unnecessary so far, probably
8925       because we call check_typedef/ada_check_typedef pretty much everywhere.
8926       */
8927   if (type->code () == TYPE_CODE_TYPEDEF
8928       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8929           == TYPE_MAIN_TYPE (fixed_type)))
8930     return type;
8931
8932   return fixed_type;
8933 }
8934
8935 /* A standard (static-sized) type corresponding as well as possible to
8936    TYPE0, but based on no runtime data.  */
8937
8938 static struct type *
8939 to_static_fixed_type (struct type *type0)
8940 {
8941   struct type *type;
8942
8943   if (type0 == NULL)
8944     return NULL;
8945
8946   if (TYPE_FIXED_INSTANCE (type0))
8947     return type0;
8948
8949   type0 = ada_check_typedef (type0);
8950
8951   switch (type0->code ())
8952     {
8953     default:
8954       return type0;
8955     case TYPE_CODE_STRUCT:
8956       type = dynamic_template_type (type0);
8957       if (type != NULL)
8958         return template_to_static_fixed_type (type);
8959       else
8960         return template_to_static_fixed_type (type0);
8961     case TYPE_CODE_UNION:
8962       type = ada_find_parallel_type (type0, "___XVU");
8963       if (type != NULL)
8964         return template_to_static_fixed_type (type);
8965       else
8966         return template_to_static_fixed_type (type0);
8967     }
8968 }
8969
8970 /* A static approximation of TYPE with all type wrappers removed.  */
8971
8972 static struct type *
8973 static_unwrap_type (struct type *type)
8974 {
8975   if (ada_is_aligner_type (type))
8976     {
8977       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8978       if (ada_type_name (type1) == NULL)
8979         type1->set_name (ada_type_name (type));
8980
8981       return static_unwrap_type (type1);
8982     }
8983   else
8984     {
8985       struct type *raw_real_type = ada_get_base_type (type);
8986
8987       if (raw_real_type == type)
8988         return type;
8989       else
8990         return to_static_fixed_type (raw_real_type);
8991     }
8992 }
8993
8994 /* In some cases, incomplete and private types require
8995    cross-references that are not resolved as records (for example,
8996       type Foo;
8997       type FooP is access Foo;
8998       V: FooP;
8999       type Foo is array ...;
9000    ).  In these cases, since there is no mechanism for producing
9001    cross-references to such types, we instead substitute for FooP a
9002    stub enumeration type that is nowhere resolved, and whose tag is
9003    the name of the actual type.  Call these types "non-record stubs".  */
9004
9005 /* A type equivalent to TYPE that is not a non-record stub, if one
9006    exists, otherwise TYPE.  */
9007
9008 struct type *
9009 ada_check_typedef (struct type *type)
9010 {
9011   if (type == NULL)
9012     return NULL;
9013
9014   /* If our type is an access to an unconstrained array, which is encoded
9015      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9016      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9017      what allows us to distinguish between fat pointers that represent
9018      array types, and fat pointers that represent array access types
9019      (in both cases, the compiler implements them as fat pointers).  */
9020   if (ada_is_access_to_unconstrained_array (type))
9021     return type;
9022
9023   type = check_typedef (type);
9024   if (type == NULL || type->code () != TYPE_CODE_ENUM
9025       || !TYPE_STUB (type)
9026       || type->name () == NULL)
9027     return type;
9028   else
9029     {
9030       const char *name = type->name ();
9031       struct type *type1 = ada_find_any_type (name);
9032
9033       if (type1 == NULL)
9034         return type;
9035
9036       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9037          stubs pointing to arrays, as we don't create symbols for array
9038          types, only for the typedef-to-array types).  If that's the case,
9039          strip the typedef layer.  */
9040       if (type1->code () == TYPE_CODE_TYPEDEF)
9041         type1 = ada_check_typedef (type1);
9042
9043       return type1;
9044     }
9045 }
9046
9047 /* A value representing the data at VALADDR/ADDRESS as described by
9048    type TYPE0, but with a standard (static-sized) type that correctly
9049    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9050    type, then return VAL0 [this feature is simply to avoid redundant
9051    creation of struct values].  */
9052
9053 static struct value *
9054 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9055                            struct value *val0)
9056 {
9057   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9058
9059   if (type == type0 && val0 != NULL)
9060     return val0;
9061
9062   if (VALUE_LVAL (val0) != lval_memory)
9063     {
9064       /* Our value does not live in memory; it could be a convenience
9065          variable, for instance.  Create a not_lval value using val0's
9066          contents.  */
9067       return value_from_contents (type, value_contents (val0));
9068     }
9069
9070   return value_from_contents_and_address (type, 0, address);
9071 }
9072
9073 /* A value representing VAL, but with a standard (static-sized) type
9074    that correctly describes it.  Does not necessarily create a new
9075    value.  */
9076
9077 struct value *
9078 ada_to_fixed_value (struct value *val)
9079 {
9080   val = unwrap_value (val);
9081   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9082   return val;
9083 }
9084 \f
9085
9086 /* Attributes */
9087
9088 /* Table mapping attribute numbers to names.
9089    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9090
9091 static const char *attribute_names[] = {
9092   "<?>",
9093
9094   "first",
9095   "last",
9096   "length",
9097   "image",
9098   "max",
9099   "min",
9100   "modulus",
9101   "pos",
9102   "size",
9103   "tag",
9104   "val",
9105   0
9106 };
9107
9108 static const char *
9109 ada_attribute_name (enum exp_opcode n)
9110 {
9111   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9112     return attribute_names[n - OP_ATR_FIRST + 1];
9113   else
9114     return attribute_names[0];
9115 }
9116
9117 /* Evaluate the 'POS attribute applied to ARG.  */
9118
9119 static LONGEST
9120 pos_atr (struct value *arg)
9121 {
9122   struct value *val = coerce_ref (arg);
9123   struct type *type = value_type (val);
9124   LONGEST result;
9125
9126   if (!discrete_type_p (type))
9127     error (_("'POS only defined on discrete types"));
9128
9129   if (!discrete_position (type, value_as_long (val), &result))
9130     error (_("enumeration value is invalid: can't find 'POS"));
9131
9132   return result;
9133 }
9134
9135 static struct value *
9136 value_pos_atr (struct type *type, struct value *arg)
9137 {
9138   return value_from_longest (type, pos_atr (arg));
9139 }
9140
9141 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9142
9143 static struct value *
9144 value_val_atr (struct type *type, struct value *arg)
9145 {
9146   if (!discrete_type_p (type))
9147     error (_("'VAL only defined on discrete types"));
9148   if (!integer_type_p (value_type (arg)))
9149     error (_("'VAL requires integral argument"));
9150
9151   if (type->code () == TYPE_CODE_ENUM)
9152     {
9153       long pos = value_as_long (arg);
9154
9155       if (pos < 0 || pos >= type->num_fields ())
9156         error (_("argument to 'VAL out of range"));
9157       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9158     }
9159   else
9160     return value_from_longest (type, value_as_long (arg));
9161 }
9162 \f
9163
9164                                 /* Evaluation */
9165
9166 /* True if TYPE appears to be an Ada character type.
9167    [At the moment, this is true only for Character and Wide_Character;
9168    It is a heuristic test that could stand improvement].  */
9169
9170 bool
9171 ada_is_character_type (struct type *type)
9172 {
9173   const char *name;
9174
9175   /* If the type code says it's a character, then assume it really is,
9176      and don't check any further.  */
9177   if (type->code () == TYPE_CODE_CHAR)
9178     return true;
9179   
9180   /* Otherwise, assume it's a character type iff it is a discrete type
9181      with a known character type name.  */
9182   name = ada_type_name (type);
9183   return (name != NULL
9184           && (type->code () == TYPE_CODE_INT
9185               || type->code () == TYPE_CODE_RANGE)
9186           && (strcmp (name, "character") == 0
9187               || strcmp (name, "wide_character") == 0
9188               || strcmp (name, "wide_wide_character") == 0
9189               || strcmp (name, "unsigned char") == 0));
9190 }
9191
9192 /* True if TYPE appears to be an Ada string type.  */
9193
9194 bool
9195 ada_is_string_type (struct type *type)
9196 {
9197   type = ada_check_typedef (type);
9198   if (type != NULL
9199       && type->code () != TYPE_CODE_PTR
9200       && (ada_is_simple_array_type (type)
9201           || ada_is_array_descriptor_type (type))
9202       && ada_array_arity (type) == 1)
9203     {
9204       struct type *elttype = ada_array_element_type (type, 1);
9205
9206       return ada_is_character_type (elttype);
9207     }
9208   else
9209     return false;
9210 }
9211
9212 /* The compiler sometimes provides a parallel XVS type for a given
9213    PAD type.  Normally, it is safe to follow the PAD type directly,
9214    but older versions of the compiler have a bug that causes the offset
9215    of its "F" field to be wrong.  Following that field in that case
9216    would lead to incorrect results, but this can be worked around
9217    by ignoring the PAD type and using the associated XVS type instead.
9218
9219    Set to True if the debugger should trust the contents of PAD types.
9220    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9221 static bool trust_pad_over_xvs = true;
9222
9223 /* True if TYPE is a struct type introduced by the compiler to force the
9224    alignment of a value.  Such types have a single field with a
9225    distinctive name.  */
9226
9227 int
9228 ada_is_aligner_type (struct type *type)
9229 {
9230   type = ada_check_typedef (type);
9231
9232   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9233     return 0;
9234
9235   return (type->code () == TYPE_CODE_STRUCT
9236           && type->num_fields () == 1
9237           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9238 }
9239
9240 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9241    the parallel type.  */
9242
9243 struct type *
9244 ada_get_base_type (struct type *raw_type)
9245 {
9246   struct type *real_type_namer;
9247   struct type *raw_real_type;
9248
9249   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
9250     return raw_type;
9251
9252   if (ada_is_aligner_type (raw_type))
9253     /* The encoding specifies that we should always use the aligner type.
9254        So, even if this aligner type has an associated XVS type, we should
9255        simply ignore it.
9256
9257        According to the compiler gurus, an XVS type parallel to an aligner
9258        type may exist because of a stabs limitation.  In stabs, aligner
9259        types are empty because the field has a variable-sized type, and
9260        thus cannot actually be used as an aligner type.  As a result,
9261        we need the associated parallel XVS type to decode the type.
9262        Since the policy in the compiler is to not change the internal
9263        representation based on the debugging info format, we sometimes
9264        end up having a redundant XVS type parallel to the aligner type.  */
9265     return raw_type;
9266
9267   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9268   if (real_type_namer == NULL
9269       || real_type_namer->code () != TYPE_CODE_STRUCT
9270       || real_type_namer->num_fields () != 1)
9271     return raw_type;
9272
9273   if (TYPE_FIELD_TYPE (real_type_namer, 0)->code () != TYPE_CODE_REF)
9274     {
9275       /* This is an older encoding form where the base type needs to be
9276          looked up by name.  We prefer the newer encoding because it is
9277          more efficient.  */
9278       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9279       if (raw_real_type == NULL)
9280         return raw_type;
9281       else
9282         return raw_real_type;
9283     }
9284
9285   /* The field in our XVS type is a reference to the base type.  */
9286   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9287 }
9288
9289 /* The type of value designated by TYPE, with all aligners removed.  */
9290
9291 struct type *
9292 ada_aligned_type (struct type *type)
9293 {
9294   if (ada_is_aligner_type (type))
9295     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9296   else
9297     return ada_get_base_type (type);
9298 }
9299
9300
9301 /* The address of the aligned value in an object at address VALADDR
9302    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9303
9304 const gdb_byte *
9305 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9306 {
9307   if (ada_is_aligner_type (type))
9308     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9309                                    valaddr +
9310                                    TYPE_FIELD_BITPOS (type,
9311                                                       0) / TARGET_CHAR_BIT);
9312   else
9313     return valaddr;
9314 }
9315
9316
9317
9318 /* The printed representation of an enumeration literal with encoded
9319    name NAME.  The value is good to the next call of ada_enum_name.  */
9320 const char *
9321 ada_enum_name (const char *name)
9322 {
9323   static char *result;
9324   static size_t result_len = 0;
9325   const char *tmp;
9326
9327   /* First, unqualify the enumeration name:
9328      1. Search for the last '.' character.  If we find one, then skip
9329      all the preceding characters, the unqualified name starts
9330      right after that dot.
9331      2. Otherwise, we may be debugging on a target where the compiler
9332      translates dots into "__".  Search forward for double underscores,
9333      but stop searching when we hit an overloading suffix, which is
9334      of the form "__" followed by digits.  */
9335
9336   tmp = strrchr (name, '.');
9337   if (tmp != NULL)
9338     name = tmp + 1;
9339   else
9340     {
9341       while ((tmp = strstr (name, "__")) != NULL)
9342         {
9343           if (isdigit (tmp[2]))
9344             break;
9345           else
9346             name = tmp + 2;
9347         }
9348     }
9349
9350   if (name[0] == 'Q')
9351     {
9352       int v;
9353
9354       if (name[1] == 'U' || name[1] == 'W')
9355         {
9356           if (sscanf (name + 2, "%x", &v) != 1)
9357             return name;
9358         }
9359       else if (((name[1] >= '0' && name[1] <= '9')
9360                 || (name[1] >= 'a' && name[1] <= 'z'))
9361                && name[2] == '\0')
9362         {
9363           GROW_VECT (result, result_len, 4);
9364           xsnprintf (result, result_len, "'%c'", name[1]);
9365           return result;
9366         }
9367       else
9368         return name;
9369
9370       GROW_VECT (result, result_len, 16);
9371       if (isascii (v) && isprint (v))
9372         xsnprintf (result, result_len, "'%c'", v);
9373       else if (name[1] == 'U')
9374         xsnprintf (result, result_len, "[\"%02x\"]", v);
9375       else
9376         xsnprintf (result, result_len, "[\"%04x\"]", v);
9377
9378       return result;
9379     }
9380   else
9381     {
9382       tmp = strstr (name, "__");
9383       if (tmp == NULL)
9384         tmp = strstr (name, "$");
9385       if (tmp != NULL)
9386         {
9387           GROW_VECT (result, result_len, tmp - name + 1);
9388           strncpy (result, name, tmp - name);
9389           result[tmp - name] = '\0';
9390           return result;
9391         }
9392
9393       return name;
9394     }
9395 }
9396
9397 /* Evaluate the subexpression of EXP starting at *POS as for
9398    evaluate_type, updating *POS to point just past the evaluated
9399    expression.  */
9400
9401 static struct value *
9402 evaluate_subexp_type (struct expression *exp, int *pos)
9403 {
9404   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9405 }
9406
9407 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9408    value it wraps.  */
9409
9410 static struct value *
9411 unwrap_value (struct value *val)
9412 {
9413   struct type *type = ada_check_typedef (value_type (val));
9414
9415   if (ada_is_aligner_type (type))
9416     {
9417       struct value *v = ada_value_struct_elt (val, "F", 0);
9418       struct type *val_type = ada_check_typedef (value_type (v));
9419
9420       if (ada_type_name (val_type) == NULL)
9421         val_type->set_name (ada_type_name (type));
9422
9423       return unwrap_value (v);
9424     }
9425   else
9426     {
9427       struct type *raw_real_type =
9428         ada_check_typedef (ada_get_base_type (type));
9429
9430       /* If there is no parallel XVS or XVE type, then the value is
9431          already unwrapped.  Return it without further modification.  */
9432       if ((type == raw_real_type)
9433           && ada_find_parallel_type (type, "___XVE") == NULL)
9434         return val;
9435
9436       return
9437         coerce_unspec_val_to_type
9438         (val, ada_to_fixed_type (raw_real_type, 0,
9439                                  value_address (val),
9440                                  NULL, 1));
9441     }
9442 }
9443
9444 static struct value *
9445 cast_from_fixed (struct type *type, struct value *arg)
9446 {
9447   struct value *scale = ada_scaling_factor (value_type (arg));
9448   arg = value_cast (value_type (scale), arg);
9449
9450   arg = value_binop (arg, scale, BINOP_MUL);
9451   return value_cast (type, arg);
9452 }
9453
9454 static struct value *
9455 cast_to_fixed (struct type *type, struct value *arg)
9456 {
9457   if (type == value_type (arg))
9458     return arg;
9459
9460   struct value *scale = ada_scaling_factor (type);
9461   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9462     arg = cast_from_fixed (value_type (scale), arg);
9463   else
9464     arg = value_cast (value_type (scale), arg);
9465
9466   arg = value_binop (arg, scale, BINOP_DIV);
9467   return value_cast (type, arg);
9468 }
9469
9470 /* Given two array types T1 and T2, return nonzero iff both arrays
9471    contain the same number of elements.  */
9472
9473 static int
9474 ada_same_array_size_p (struct type *t1, struct type *t2)
9475 {
9476   LONGEST lo1, hi1, lo2, hi2;
9477
9478   /* Get the array bounds in order to verify that the size of
9479      the two arrays match.  */
9480   if (!get_array_bounds (t1, &lo1, &hi1)
9481       || !get_array_bounds (t2, &lo2, &hi2))
9482     error (_("unable to determine array bounds"));
9483
9484   /* To make things easier for size comparison, normalize a bit
9485      the case of empty arrays by making sure that the difference
9486      between upper bound and lower bound is always -1.  */
9487   if (lo1 > hi1)
9488     hi1 = lo1 - 1;
9489   if (lo2 > hi2)
9490     hi2 = lo2 - 1;
9491
9492   return (hi1 - lo1 == hi2 - lo2);
9493 }
9494
9495 /* Assuming that VAL is an array of integrals, and TYPE represents
9496    an array with the same number of elements, but with wider integral
9497    elements, return an array "casted" to TYPE.  In practice, this
9498    means that the returned array is built by casting each element
9499    of the original array into TYPE's (wider) element type.  */
9500
9501 static struct value *
9502 ada_promote_array_of_integrals (struct type *type, struct value *val)
9503 {
9504   struct type *elt_type = TYPE_TARGET_TYPE (type);
9505   LONGEST lo, hi;
9506   struct value *res;
9507   LONGEST i;
9508
9509   /* Verify that both val and type are arrays of scalars, and
9510      that the size of val's elements is smaller than the size
9511      of type's element.  */
9512   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9513   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9514   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9515   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9516   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9517               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9518
9519   if (!get_array_bounds (type, &lo, &hi))
9520     error (_("unable to determine array bounds"));
9521
9522   res = allocate_value (type);
9523
9524   /* Promote each array element.  */
9525   for (i = 0; i < hi - lo + 1; i++)
9526     {
9527       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9528
9529       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9530               value_contents_all (elt), TYPE_LENGTH (elt_type));
9531     }
9532
9533   return res;
9534 }
9535
9536 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9537    return the converted value.  */
9538
9539 static struct value *
9540 coerce_for_assign (struct type *type, struct value *val)
9541 {
9542   struct type *type2 = value_type (val);
9543
9544   if (type == type2)
9545     return val;
9546
9547   type2 = ada_check_typedef (type2);
9548   type = ada_check_typedef (type);
9549
9550   if (type2->code () == TYPE_CODE_PTR
9551       && type->code () == TYPE_CODE_ARRAY)
9552     {
9553       val = ada_value_ind (val);
9554       type2 = value_type (val);
9555     }
9556
9557   if (type2->code () == TYPE_CODE_ARRAY
9558       && type->code () == TYPE_CODE_ARRAY)
9559     {
9560       if (!ada_same_array_size_p (type, type2))
9561         error (_("cannot assign arrays of different length"));
9562
9563       if (is_integral_type (TYPE_TARGET_TYPE (type))
9564           && is_integral_type (TYPE_TARGET_TYPE (type2))
9565           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9566                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9567         {
9568           /* Allow implicit promotion of the array elements to
9569              a wider type.  */
9570           return ada_promote_array_of_integrals (type, val);
9571         }
9572
9573       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9574           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9575         error (_("Incompatible types in assignment"));
9576       deprecated_set_value_type (val, type);
9577     }
9578   return val;
9579 }
9580
9581 static struct value *
9582 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9583 {
9584   struct value *val;
9585   struct type *type1, *type2;
9586   LONGEST v, v1, v2;
9587
9588   arg1 = coerce_ref (arg1);
9589   arg2 = coerce_ref (arg2);
9590   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9591   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9592
9593   if (type1->code () != TYPE_CODE_INT
9594       || type2->code () != TYPE_CODE_INT)
9595     return value_binop (arg1, arg2, op);
9596
9597   switch (op)
9598     {
9599     case BINOP_MOD:
9600     case BINOP_DIV:
9601     case BINOP_REM:
9602       break;
9603     default:
9604       return value_binop (arg1, arg2, op);
9605     }
9606
9607   v2 = value_as_long (arg2);
9608   if (v2 == 0)
9609     error (_("second operand of %s must not be zero."), op_string (op));
9610
9611   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9612     return value_binop (arg1, arg2, op);
9613
9614   v1 = value_as_long (arg1);
9615   switch (op)
9616     {
9617     case BINOP_DIV:
9618       v = v1 / v2;
9619       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9620         v += v > 0 ? -1 : 1;
9621       break;
9622     case BINOP_REM:
9623       v = v1 % v2;
9624       if (v * v1 < 0)
9625         v -= v2;
9626       break;
9627     default:
9628       /* Should not reach this point.  */
9629       v = 0;
9630     }
9631
9632   val = allocate_value (type1);
9633   store_unsigned_integer (value_contents_raw (val),
9634                           TYPE_LENGTH (value_type (val)),
9635                           type_byte_order (type1), v);
9636   return val;
9637 }
9638
9639 static int
9640 ada_value_equal (struct value *arg1, struct value *arg2)
9641 {
9642   if (ada_is_direct_array_type (value_type (arg1))
9643       || ada_is_direct_array_type (value_type (arg2)))
9644     {
9645       struct type *arg1_type, *arg2_type;
9646
9647       /* Automatically dereference any array reference before
9648          we attempt to perform the comparison.  */
9649       arg1 = ada_coerce_ref (arg1);
9650       arg2 = ada_coerce_ref (arg2);
9651
9652       arg1 = ada_coerce_to_simple_array (arg1);
9653       arg2 = ada_coerce_to_simple_array (arg2);
9654
9655       arg1_type = ada_check_typedef (value_type (arg1));
9656       arg2_type = ada_check_typedef (value_type (arg2));
9657
9658       if (arg1_type->code () != TYPE_CODE_ARRAY
9659           || arg2_type->code () != TYPE_CODE_ARRAY)
9660         error (_("Attempt to compare array with non-array"));
9661       /* FIXME: The following works only for types whose
9662          representations use all bits (no padding or undefined bits)
9663          and do not have user-defined equality.  */
9664       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9665               && memcmp (value_contents (arg1), value_contents (arg2),
9666                          TYPE_LENGTH (arg1_type)) == 0);
9667     }
9668   return value_equal (arg1, arg2);
9669 }
9670
9671 /* Total number of component associations in the aggregate starting at
9672    index PC in EXP.  Assumes that index PC is the start of an
9673    OP_AGGREGATE.  */
9674
9675 static int
9676 num_component_specs (struct expression *exp, int pc)
9677 {
9678   int n, m, i;
9679
9680   m = exp->elts[pc + 1].longconst;
9681   pc += 3;
9682   n = 0;
9683   for (i = 0; i < m; i += 1)
9684     {
9685       switch (exp->elts[pc].opcode) 
9686         {
9687         default:
9688           n += 1;
9689           break;
9690         case OP_CHOICES:
9691           n += exp->elts[pc + 1].longconst;
9692           break;
9693         }
9694       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9695     }
9696   return n;
9697 }
9698
9699 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9700    component of LHS (a simple array or a record), updating *POS past
9701    the expression, assuming that LHS is contained in CONTAINER.  Does
9702    not modify the inferior's memory, nor does it modify LHS (unless
9703    LHS == CONTAINER).  */
9704
9705 static void
9706 assign_component (struct value *container, struct value *lhs, LONGEST index,
9707                   struct expression *exp, int *pos)
9708 {
9709   struct value *mark = value_mark ();
9710   struct value *elt;
9711   struct type *lhs_type = check_typedef (value_type (lhs));
9712
9713   if (lhs_type->code () == TYPE_CODE_ARRAY)
9714     {
9715       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9716       struct value *index_val = value_from_longest (index_type, index);
9717
9718       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9719     }
9720   else
9721     {
9722       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9723       elt = ada_to_fixed_value (elt);
9724     }
9725
9726   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9727     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9728   else
9729     value_assign_to_component (container, elt, 
9730                                ada_evaluate_subexp (NULL, exp, pos, 
9731                                                     EVAL_NORMAL));
9732
9733   value_free_to_mark (mark);
9734 }
9735
9736 /* Assuming that LHS represents an lvalue having a record or array
9737    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9738    of that aggregate's value to LHS, advancing *POS past the
9739    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9740    lvalue containing LHS (possibly LHS itself).  Does not modify
9741    the inferior's memory, nor does it modify the contents of 
9742    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9743
9744 static struct value *
9745 assign_aggregate (struct value *container, 
9746                   struct value *lhs, struct expression *exp, 
9747                   int *pos, enum noside noside)
9748 {
9749   struct type *lhs_type;
9750   int n = exp->elts[*pos+1].longconst;
9751   LONGEST low_index, high_index;
9752   int num_specs;
9753   LONGEST *indices;
9754   int max_indices, num_indices;
9755   int i;
9756
9757   *pos += 3;
9758   if (noside != EVAL_NORMAL)
9759     {
9760       for (i = 0; i < n; i += 1)
9761         ada_evaluate_subexp (NULL, exp, pos, noside);
9762       return container;
9763     }
9764
9765   container = ada_coerce_ref (container);
9766   if (ada_is_direct_array_type (value_type (container)))
9767     container = ada_coerce_to_simple_array (container);
9768   lhs = ada_coerce_ref (lhs);
9769   if (!deprecated_value_modifiable (lhs))
9770     error (_("Left operand of assignment is not a modifiable lvalue."));
9771
9772   lhs_type = check_typedef (value_type (lhs));
9773   if (ada_is_direct_array_type (lhs_type))
9774     {
9775       lhs = ada_coerce_to_simple_array (lhs);
9776       lhs_type = check_typedef (value_type (lhs));
9777       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9778       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9779     }
9780   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9781     {
9782       low_index = 0;
9783       high_index = num_visible_fields (lhs_type) - 1;
9784     }
9785   else
9786     error (_("Left-hand side must be array or record."));
9787
9788   num_specs = num_component_specs (exp, *pos - 3);
9789   max_indices = 4 * num_specs + 4;
9790   indices = XALLOCAVEC (LONGEST, max_indices);
9791   indices[0] = indices[1] = low_index - 1;
9792   indices[2] = indices[3] = high_index + 1;
9793   num_indices = 4;
9794
9795   for (i = 0; i < n; i += 1)
9796     {
9797       switch (exp->elts[*pos].opcode)
9798         {
9799           case OP_CHOICES:
9800             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9801                                            &num_indices, max_indices,
9802                                            low_index, high_index);
9803             break;
9804           case OP_POSITIONAL:
9805             aggregate_assign_positional (container, lhs, exp, pos, indices,
9806                                          &num_indices, max_indices,
9807                                          low_index, high_index);
9808             break;
9809           case OP_OTHERS:
9810             if (i != n-1)
9811               error (_("Misplaced 'others' clause"));
9812             aggregate_assign_others (container, lhs, exp, pos, indices, 
9813                                      num_indices, low_index, high_index);
9814             break;
9815           default:
9816             error (_("Internal error: bad aggregate clause"));
9817         }
9818     }
9819
9820   return container;
9821 }
9822               
9823 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9824    construct at *POS, updating *POS past the construct, given that
9825    the positions are relative to lower bound LOW, where HIGH is the 
9826    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9827    updating *NUM_INDICES as needed.  CONTAINER is as for
9828    assign_aggregate.  */
9829 static void
9830 aggregate_assign_positional (struct value *container,
9831                              struct value *lhs, struct expression *exp,
9832                              int *pos, LONGEST *indices, int *num_indices,
9833                              int max_indices, LONGEST low, LONGEST high) 
9834 {
9835   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9836   
9837   if (ind - 1 == high)
9838     warning (_("Extra components in aggregate ignored."));
9839   if (ind <= high)
9840     {
9841       add_component_interval (ind, ind, indices, num_indices, max_indices);
9842       *pos += 3;
9843       assign_component (container, lhs, ind, exp, pos);
9844     }
9845   else
9846     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9847 }
9848
9849 /* Assign into the components of LHS indexed by the OP_CHOICES
9850    construct at *POS, updating *POS past the construct, given that
9851    the allowable indices are LOW..HIGH.  Record the indices assigned
9852    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9853    needed.  CONTAINER is as for assign_aggregate.  */
9854 static void
9855 aggregate_assign_from_choices (struct value *container,
9856                                struct value *lhs, struct expression *exp,
9857                                int *pos, LONGEST *indices, int *num_indices,
9858                                int max_indices, LONGEST low, LONGEST high) 
9859 {
9860   int j;
9861   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9862   int choice_pos, expr_pc;
9863   int is_array = ada_is_direct_array_type (value_type (lhs));
9864
9865   choice_pos = *pos += 3;
9866
9867   for (j = 0; j < n_choices; j += 1)
9868     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9869   expr_pc = *pos;
9870   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9871   
9872   for (j = 0; j < n_choices; j += 1)
9873     {
9874       LONGEST lower, upper;
9875       enum exp_opcode op = exp->elts[choice_pos].opcode;
9876
9877       if (op == OP_DISCRETE_RANGE)
9878         {
9879           choice_pos += 1;
9880           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9881                                                       EVAL_NORMAL));
9882           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9883                                                       EVAL_NORMAL));
9884         }
9885       else if (is_array)
9886         {
9887           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9888                                                       EVAL_NORMAL));
9889           upper = lower;
9890         }
9891       else
9892         {
9893           int ind;
9894           const char *name;
9895
9896           switch (op)
9897             {
9898             case OP_NAME:
9899               name = &exp->elts[choice_pos + 2].string;
9900               break;
9901             case OP_VAR_VALUE:
9902               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9903               break;
9904             default:
9905               error (_("Invalid record component association."));
9906             }
9907           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9908           ind = 0;
9909           if (! find_struct_field (name, value_type (lhs), 0, 
9910                                    NULL, NULL, NULL, NULL, &ind))
9911             error (_("Unknown component name: %s."), name);
9912           lower = upper = ind;
9913         }
9914
9915       if (lower <= upper && (lower < low || upper > high))
9916         error (_("Index in component association out of bounds."));
9917
9918       add_component_interval (lower, upper, indices, num_indices,
9919                               max_indices);
9920       while (lower <= upper)
9921         {
9922           int pos1;
9923
9924           pos1 = expr_pc;
9925           assign_component (container, lhs, lower, exp, &pos1);
9926           lower += 1;
9927         }
9928     }
9929 }
9930
9931 /* Assign the value of the expression in the OP_OTHERS construct in
9932    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9933    have not been previously assigned.  The index intervals already assigned
9934    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9935    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9936 static void
9937 aggregate_assign_others (struct value *container,
9938                          struct value *lhs, struct expression *exp,
9939                          int *pos, LONGEST *indices, int num_indices,
9940                          LONGEST low, LONGEST high) 
9941 {
9942   int i;
9943   int expr_pc = *pos + 1;
9944   
9945   for (i = 0; i < num_indices - 2; i += 2)
9946     {
9947       LONGEST ind;
9948
9949       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9950         {
9951           int localpos;
9952
9953           localpos = expr_pc;
9954           assign_component (container, lhs, ind, exp, &localpos);
9955         }
9956     }
9957   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9958 }
9959
9960 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9961    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9962    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9963    MAX_SIZE.  The resulting intervals do not overlap.  */
9964 static void
9965 add_component_interval (LONGEST low, LONGEST high, 
9966                         LONGEST* indices, int *size, int max_size)
9967 {
9968   int i, j;
9969
9970   for (i = 0; i < *size; i += 2) {
9971     if (high >= indices[i] && low <= indices[i + 1])
9972       {
9973         int kh;
9974
9975         for (kh = i + 2; kh < *size; kh += 2)
9976           if (high < indices[kh])
9977             break;
9978         if (low < indices[i])
9979           indices[i] = low;
9980         indices[i + 1] = indices[kh - 1];
9981         if (high > indices[i + 1])
9982           indices[i + 1] = high;
9983         memcpy (indices + i + 2, indices + kh, *size - kh);
9984         *size -= kh - i - 2;
9985         return;
9986       }
9987     else if (high < indices[i])
9988       break;
9989   }
9990         
9991   if (*size == max_size)
9992     error (_("Internal error: miscounted aggregate components."));
9993   *size += 2;
9994   for (j = *size-1; j >= i+2; j -= 1)
9995     indices[j] = indices[j - 2];
9996   indices[i] = low;
9997   indices[i + 1] = high;
9998 }
9999
10000 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10001    is different.  */
10002
10003 static struct value *
10004 ada_value_cast (struct type *type, struct value *arg2)
10005 {
10006   if (type == ada_check_typedef (value_type (arg2)))
10007     return arg2;
10008
10009   if (ada_is_gnat_encoded_fixed_point_type (type))
10010     return cast_to_fixed (type, arg2);
10011
10012   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10013     return cast_from_fixed (type, arg2);
10014
10015   return value_cast (type, arg2);
10016 }
10017
10018 /*  Evaluating Ada expressions, and printing their result.
10019     ------------------------------------------------------
10020
10021     1. Introduction:
10022     ----------------
10023
10024     We usually evaluate an Ada expression in order to print its value.
10025     We also evaluate an expression in order to print its type, which
10026     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10027     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10028     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10029     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10030     similar.
10031
10032     Evaluating expressions is a little more complicated for Ada entities
10033     than it is for entities in languages such as C.  The main reason for
10034     this is that Ada provides types whose definition might be dynamic.
10035     One example of such types is variant records.  Or another example
10036     would be an array whose bounds can only be known at run time.
10037
10038     The following description is a general guide as to what should be
10039     done (and what should NOT be done) in order to evaluate an expression
10040     involving such types, and when.  This does not cover how the semantic
10041     information is encoded by GNAT as this is covered separatly.  For the
10042     document used as the reference for the GNAT encoding, see exp_dbug.ads
10043     in the GNAT sources.
10044
10045     Ideally, we should embed each part of this description next to its
10046     associated code.  Unfortunately, the amount of code is so vast right
10047     now that it's hard to see whether the code handling a particular
10048     situation might be duplicated or not.  One day, when the code is
10049     cleaned up, this guide might become redundant with the comments
10050     inserted in the code, and we might want to remove it.
10051
10052     2. ``Fixing'' an Entity, the Simple Case:
10053     -----------------------------------------
10054
10055     When evaluating Ada expressions, the tricky issue is that they may
10056     reference entities whose type contents and size are not statically
10057     known.  Consider for instance a variant record:
10058
10059        type Rec (Empty : Boolean := True) is record
10060           case Empty is
10061              when True => null;
10062              when False => Value : Integer;
10063           end case;
10064        end record;
10065        Yes : Rec := (Empty => False, Value => 1);
10066        No  : Rec := (empty => True);
10067
10068     The size and contents of that record depends on the value of the
10069     descriminant (Rec.Empty).  At this point, neither the debugging
10070     information nor the associated type structure in GDB are able to
10071     express such dynamic types.  So what the debugger does is to create
10072     "fixed" versions of the type that applies to the specific object.
10073     We also informally refer to this operation as "fixing" an object,
10074     which means creating its associated fixed type.
10075
10076     Example: when printing the value of variable "Yes" above, its fixed
10077     type would look like this:
10078
10079        type Rec is record
10080           Empty : Boolean;
10081           Value : Integer;
10082        end record;
10083
10084     On the other hand, if we printed the value of "No", its fixed type
10085     would become:
10086
10087        type Rec is record
10088           Empty : Boolean;
10089        end record;
10090
10091     Things become a little more complicated when trying to fix an entity
10092     with a dynamic type that directly contains another dynamic type,
10093     such as an array of variant records, for instance.  There are
10094     two possible cases: Arrays, and records.
10095
10096     3. ``Fixing'' Arrays:
10097     ---------------------
10098
10099     The type structure in GDB describes an array in terms of its bounds,
10100     and the type of its elements.  By design, all elements in the array
10101     have the same type and we cannot represent an array of variant elements
10102     using the current type structure in GDB.  When fixing an array,
10103     we cannot fix the array element, as we would potentially need one
10104     fixed type per element of the array.  As a result, the best we can do
10105     when fixing an array is to produce an array whose bounds and size
10106     are correct (allowing us to read it from memory), but without having
10107     touched its element type.  Fixing each element will be done later,
10108     when (if) necessary.
10109
10110     Arrays are a little simpler to handle than records, because the same
10111     amount of memory is allocated for each element of the array, even if
10112     the amount of space actually used by each element differs from element
10113     to element.  Consider for instance the following array of type Rec:
10114
10115        type Rec_Array is array (1 .. 2) of Rec;
10116
10117     The actual amount of memory occupied by each element might be different
10118     from element to element, depending on the value of their discriminant.
10119     But the amount of space reserved for each element in the array remains
10120     fixed regardless.  So we simply need to compute that size using
10121     the debugging information available, from which we can then determine
10122     the array size (we multiply the number of elements of the array by
10123     the size of each element).
10124
10125     The simplest case is when we have an array of a constrained element
10126     type. For instance, consider the following type declarations:
10127
10128         type Bounded_String (Max_Size : Integer) is
10129            Length : Integer;
10130            Buffer : String (1 .. Max_Size);
10131         end record;
10132         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10133
10134     In this case, the compiler describes the array as an array of
10135     variable-size elements (identified by its XVS suffix) for which
10136     the size can be read in the parallel XVZ variable.
10137
10138     In the case of an array of an unconstrained element type, the compiler
10139     wraps the array element inside a private PAD type.  This type should not
10140     be shown to the user, and must be "unwrap"'ed before printing.  Note
10141     that we also use the adjective "aligner" in our code to designate
10142     these wrapper types.
10143
10144     In some cases, the size allocated for each element is statically
10145     known.  In that case, the PAD type already has the correct size,
10146     and the array element should remain unfixed.
10147
10148     But there are cases when this size is not statically known.
10149     For instance, assuming that "Five" is an integer variable:
10150
10151         type Dynamic is array (1 .. Five) of Integer;
10152         type Wrapper (Has_Length : Boolean := False) is record
10153            Data : Dynamic;
10154            case Has_Length is
10155               when True => Length : Integer;
10156               when False => null;
10157            end case;
10158         end record;
10159         type Wrapper_Array is array (1 .. 2) of Wrapper;
10160
10161         Hello : Wrapper_Array := (others => (Has_Length => True,
10162                                              Data => (others => 17),
10163                                              Length => 1));
10164
10165
10166     The debugging info would describe variable Hello as being an
10167     array of a PAD type.  The size of that PAD type is not statically
10168     known, but can be determined using a parallel XVZ variable.
10169     In that case, a copy of the PAD type with the correct size should
10170     be used for the fixed array.
10171
10172     3. ``Fixing'' record type objects:
10173     ----------------------------------
10174
10175     Things are slightly different from arrays in the case of dynamic
10176     record types.  In this case, in order to compute the associated
10177     fixed type, we need to determine the size and offset of each of
10178     its components.  This, in turn, requires us to compute the fixed
10179     type of each of these components.
10180
10181     Consider for instance the example:
10182
10183         type Bounded_String (Max_Size : Natural) is record
10184            Str : String (1 .. Max_Size);
10185            Length : Natural;
10186         end record;
10187         My_String : Bounded_String (Max_Size => 10);
10188
10189     In that case, the position of field "Length" depends on the size
10190     of field Str, which itself depends on the value of the Max_Size
10191     discriminant.  In order to fix the type of variable My_String,
10192     we need to fix the type of field Str.  Therefore, fixing a variant
10193     record requires us to fix each of its components.
10194
10195     However, if a component does not have a dynamic size, the component
10196     should not be fixed.  In particular, fields that use a PAD type
10197     should not fixed.  Here is an example where this might happen
10198     (assuming type Rec above):
10199
10200        type Container (Big : Boolean) is record
10201           First : Rec;
10202           After : Integer;
10203           case Big is
10204              when True => Another : Integer;
10205              when False => null;
10206           end case;
10207        end record;
10208        My_Container : Container := (Big => False,
10209                                     First => (Empty => True),
10210                                     After => 42);
10211
10212     In that example, the compiler creates a PAD type for component First,
10213     whose size is constant, and then positions the component After just
10214     right after it.  The offset of component After is therefore constant
10215     in this case.
10216
10217     The debugger computes the position of each field based on an algorithm
10218     that uses, among other things, the actual position and size of the field
10219     preceding it.  Let's now imagine that the user is trying to print
10220     the value of My_Container.  If the type fixing was recursive, we would
10221     end up computing the offset of field After based on the size of the
10222     fixed version of field First.  And since in our example First has
10223     only one actual field, the size of the fixed type is actually smaller
10224     than the amount of space allocated to that field, and thus we would
10225     compute the wrong offset of field After.
10226
10227     To make things more complicated, we need to watch out for dynamic
10228     components of variant records (identified by the ___XVL suffix in
10229     the component name).  Even if the target type is a PAD type, the size
10230     of that type might not be statically known.  So the PAD type needs
10231     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10232     we might end up with the wrong size for our component.  This can be
10233     observed with the following type declarations:
10234
10235         type Octal is new Integer range 0 .. 7;
10236         type Octal_Array is array (Positive range <>) of Octal;
10237         pragma Pack (Octal_Array);
10238
10239         type Octal_Buffer (Size : Positive) is record
10240            Buffer : Octal_Array (1 .. Size);
10241            Length : Integer;
10242         end record;
10243
10244     In that case, Buffer is a PAD type whose size is unset and needs
10245     to be computed by fixing the unwrapped type.
10246
10247     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10248     ----------------------------------------------------------
10249
10250     Lastly, when should the sub-elements of an entity that remained unfixed
10251     thus far, be actually fixed?
10252
10253     The answer is: Only when referencing that element.  For instance
10254     when selecting one component of a record, this specific component
10255     should be fixed at that point in time.  Or when printing the value
10256     of a record, each component should be fixed before its value gets
10257     printed.  Similarly for arrays, the element of the array should be
10258     fixed when printing each element of the array, or when extracting
10259     one element out of that array.  On the other hand, fixing should
10260     not be performed on the elements when taking a slice of an array!
10261
10262     Note that one of the side effects of miscomputing the offset and
10263     size of each field is that we end up also miscomputing the size
10264     of the containing type.  This can have adverse results when computing
10265     the value of an entity.  GDB fetches the value of an entity based
10266     on the size of its type, and thus a wrong size causes GDB to fetch
10267     the wrong amount of memory.  In the case where the computed size is
10268     too small, GDB fetches too little data to print the value of our
10269     entity.  Results in this case are unpredictable, as we usually read
10270     past the buffer containing the data =:-o.  */
10271
10272 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10273    for that subexpression cast to TO_TYPE.  Advance *POS over the
10274    subexpression.  */
10275
10276 static value *
10277 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10278                               enum noside noside, struct type *to_type)
10279 {
10280   int pc = *pos;
10281
10282   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10283       || exp->elts[pc].opcode == OP_VAR_VALUE)
10284     {
10285       (*pos) += 4;
10286
10287       value *val;
10288       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10289         {
10290           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10291             return value_zero (to_type, not_lval);
10292
10293           val = evaluate_var_msym_value (noside,
10294                                          exp->elts[pc + 1].objfile,
10295                                          exp->elts[pc + 2].msymbol);
10296         }
10297       else
10298         val = evaluate_var_value (noside,
10299                                   exp->elts[pc + 1].block,
10300                                   exp->elts[pc + 2].symbol);
10301
10302       if (noside == EVAL_SKIP)
10303         return eval_skip_value (exp);
10304
10305       val = ada_value_cast (to_type, val);
10306
10307       /* Follow the Ada language semantics that do not allow taking
10308          an address of the result of a cast (view conversion in Ada).  */
10309       if (VALUE_LVAL (val) == lval_memory)
10310         {
10311           if (value_lazy (val))
10312             value_fetch_lazy (val);
10313           VALUE_LVAL (val) = not_lval;
10314         }
10315       return val;
10316     }
10317
10318   value *val = evaluate_subexp (to_type, exp, pos, noside);
10319   if (noside == EVAL_SKIP)
10320     return eval_skip_value (exp);
10321   return ada_value_cast (to_type, val);
10322 }
10323
10324 /* Implement the evaluate_exp routine in the exp_descriptor structure
10325    for the Ada language.  */
10326
10327 static struct value *
10328 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10329                      int *pos, enum noside noside)
10330 {
10331   enum exp_opcode op;
10332   int tem;
10333   int pc;
10334   int preeval_pos;
10335   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10336   struct type *type;
10337   int nargs, oplen;
10338   struct value **argvec;
10339
10340   pc = *pos;
10341   *pos += 1;
10342   op = exp->elts[pc].opcode;
10343
10344   switch (op)
10345     {
10346     default:
10347       *pos -= 1;
10348       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10349
10350       if (noside == EVAL_NORMAL)
10351         arg1 = unwrap_value (arg1);
10352
10353       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10354          then we need to perform the conversion manually, because
10355          evaluate_subexp_standard doesn't do it.  This conversion is
10356          necessary in Ada because the different kinds of float/fixed
10357          types in Ada have different representations.
10358
10359          Similarly, we need to perform the conversion from OP_LONG
10360          ourselves.  */
10361       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10362         arg1 = ada_value_cast (expect_type, arg1);
10363
10364       return arg1;
10365
10366     case OP_STRING:
10367       {
10368         struct value *result;
10369
10370         *pos -= 1;
10371         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10372         /* The result type will have code OP_STRING, bashed there from 
10373            OP_ARRAY.  Bash it back.  */
10374         if (value_type (result)->code () == TYPE_CODE_STRING)
10375           value_type (result)->set_code (TYPE_CODE_ARRAY);
10376         return result;
10377       }
10378
10379     case UNOP_CAST:
10380       (*pos) += 2;
10381       type = exp->elts[pc + 1].type;
10382       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10383
10384     case UNOP_QUAL:
10385       (*pos) += 2;
10386       type = exp->elts[pc + 1].type;
10387       return ada_evaluate_subexp (type, exp, pos, noside);
10388
10389     case BINOP_ASSIGN:
10390       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10391       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10392         {
10393           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10394           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10395             return arg1;
10396           return ada_value_assign (arg1, arg1);
10397         }
10398       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10399          except if the lhs of our assignment is a convenience variable.
10400          In the case of assigning to a convenience variable, the lhs
10401          should be exactly the result of the evaluation of the rhs.  */
10402       type = value_type (arg1);
10403       if (VALUE_LVAL (arg1) == lval_internalvar)
10404          type = NULL;
10405       arg2 = evaluate_subexp (type, exp, pos, noside);
10406       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10407         return arg1;
10408       if (VALUE_LVAL (arg1) == lval_internalvar)
10409         {
10410           /* Nothing.  */
10411         }
10412       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10413         arg2 = cast_to_fixed (value_type (arg1), arg2);
10414       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10415         error
10416           (_("Fixed-point values must be assigned to fixed-point variables"));
10417       else
10418         arg2 = coerce_for_assign (value_type (arg1), arg2);
10419       return ada_value_assign (arg1, arg2);
10420
10421     case BINOP_ADD:
10422       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10423       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10424       if (noside == EVAL_SKIP)
10425         goto nosideret;
10426       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10427         return (value_from_longest
10428                  (value_type (arg1),
10429                   value_as_long (arg1) + value_as_long (arg2)));
10430       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10431         return (value_from_longest
10432                  (value_type (arg2),
10433                   value_as_long (arg1) + value_as_long (arg2)));
10434       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10435            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10436           && value_type (arg1) != value_type (arg2))
10437         error (_("Operands of fixed-point addition must have the same type"));
10438       /* Do the addition, and cast the result to the type of the first
10439          argument.  We cannot cast the result to a reference type, so if
10440          ARG1 is a reference type, find its underlying type.  */
10441       type = value_type (arg1);
10442       while (type->code () == TYPE_CODE_REF)
10443         type = TYPE_TARGET_TYPE (type);
10444       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10445       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10446
10447     case BINOP_SUB:
10448       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10449       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10450       if (noside == EVAL_SKIP)
10451         goto nosideret;
10452       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10453         return (value_from_longest
10454                  (value_type (arg1),
10455                   value_as_long (arg1) - value_as_long (arg2)));
10456       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10457         return (value_from_longest
10458                  (value_type (arg2),
10459                   value_as_long (arg1) - value_as_long (arg2)));
10460       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10461            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10462           && value_type (arg1) != value_type (arg2))
10463         error (_("Operands of fixed-point subtraction "
10464                  "must have the same type"));
10465       /* Do the substraction, and cast the result to the type of the first
10466          argument.  We cannot cast the result to a reference type, so if
10467          ARG1 is a reference type, find its underlying type.  */
10468       type = value_type (arg1);
10469       while (type->code () == TYPE_CODE_REF)
10470         type = TYPE_TARGET_TYPE (type);
10471       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10472       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10473
10474     case BINOP_MUL:
10475     case BINOP_DIV:
10476     case BINOP_REM:
10477     case BINOP_MOD:
10478       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10479       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10480       if (noside == EVAL_SKIP)
10481         goto nosideret;
10482       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10483         {
10484           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10485           return value_zero (value_type (arg1), not_lval);
10486         }
10487       else
10488         {
10489           type = builtin_type (exp->gdbarch)->builtin_double;
10490           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10491             arg1 = cast_from_fixed (type, arg1);
10492           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10493             arg2 = cast_from_fixed (type, arg2);
10494           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10495           return ada_value_binop (arg1, arg2, op);
10496         }
10497
10498     case BINOP_EQUAL:
10499     case BINOP_NOTEQUAL:
10500       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10501       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10502       if (noside == EVAL_SKIP)
10503         goto nosideret;
10504       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10505         tem = 0;
10506       else
10507         {
10508           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10509           tem = ada_value_equal (arg1, arg2);
10510         }
10511       if (op == BINOP_NOTEQUAL)
10512         tem = !tem;
10513       type = language_bool_type (exp->language_defn, exp->gdbarch);
10514       return value_from_longest (type, (LONGEST) tem);
10515
10516     case UNOP_NEG:
10517       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10518       if (noside == EVAL_SKIP)
10519         goto nosideret;
10520       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10521         return value_cast (value_type (arg1), value_neg (arg1));
10522       else
10523         {
10524           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10525           return value_neg (arg1);
10526         }
10527
10528     case BINOP_LOGICAL_AND:
10529     case BINOP_LOGICAL_OR:
10530     case UNOP_LOGICAL_NOT:
10531       {
10532         struct value *val;
10533
10534         *pos -= 1;
10535         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10536         type = language_bool_type (exp->language_defn, exp->gdbarch);
10537         return value_cast (type, val);
10538       }
10539
10540     case BINOP_BITWISE_AND:
10541     case BINOP_BITWISE_IOR:
10542     case BINOP_BITWISE_XOR:
10543       {
10544         struct value *val;
10545
10546         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10547         *pos = pc;
10548         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10549
10550         return value_cast (value_type (arg1), val);
10551       }
10552
10553     case OP_VAR_VALUE:
10554       *pos -= 1;
10555
10556       if (noside == EVAL_SKIP)
10557         {
10558           *pos += 4;
10559           goto nosideret;
10560         }
10561
10562       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10563         /* Only encountered when an unresolved symbol occurs in a
10564            context other than a function call, in which case, it is
10565            invalid.  */
10566         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10567                exp->elts[pc + 2].symbol->print_name ());
10568
10569       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10570         {
10571           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10572           /* Check to see if this is a tagged type.  We also need to handle
10573              the case where the type is a reference to a tagged type, but
10574              we have to be careful to exclude pointers to tagged types.
10575              The latter should be shown as usual (as a pointer), whereas
10576              a reference should mostly be transparent to the user.  */
10577           if (ada_is_tagged_type (type, 0)
10578               || (type->code () == TYPE_CODE_REF
10579                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10580             {
10581               /* Tagged types are a little special in the fact that the real
10582                  type is dynamic and can only be determined by inspecting the
10583                  object's tag.  This means that we need to get the object's
10584                  value first (EVAL_NORMAL) and then extract the actual object
10585                  type from its tag.
10586
10587                  Note that we cannot skip the final step where we extract
10588                  the object type from its tag, because the EVAL_NORMAL phase
10589                  results in dynamic components being resolved into fixed ones.
10590                  This can cause problems when trying to print the type
10591                  description of tagged types whose parent has a dynamic size:
10592                  We use the type name of the "_parent" component in order
10593                  to print the name of the ancestor type in the type description.
10594                  If that component had a dynamic size, the resolution into
10595                  a fixed type would result in the loss of that type name,
10596                  thus preventing us from printing the name of the ancestor
10597                  type in the type description.  */
10598               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10599
10600               if (type->code () != TYPE_CODE_REF)
10601                 {
10602                   struct type *actual_type;
10603
10604                   actual_type = type_from_tag (ada_value_tag (arg1));
10605                   if (actual_type == NULL)
10606                     /* If, for some reason, we were unable to determine
10607                        the actual type from the tag, then use the static
10608                        approximation that we just computed as a fallback.
10609                        This can happen if the debugging information is
10610                        incomplete, for instance.  */
10611                     actual_type = type;
10612                   return value_zero (actual_type, not_lval);
10613                 }
10614               else
10615                 {
10616                   /* In the case of a ref, ada_coerce_ref takes care
10617                      of determining the actual type.  But the evaluation
10618                      should return a ref as it should be valid to ask
10619                      for its address; so rebuild a ref after coerce.  */
10620                   arg1 = ada_coerce_ref (arg1);
10621                   return value_ref (arg1, TYPE_CODE_REF);
10622                 }
10623             }
10624
10625           /* Records and unions for which GNAT encodings have been
10626              generated need to be statically fixed as well.
10627              Otherwise, non-static fixing produces a type where
10628              all dynamic properties are removed, which prevents "ptype"
10629              from being able to completely describe the type.
10630              For instance, a case statement in a variant record would be
10631              replaced by the relevant components based on the actual
10632              value of the discriminants.  */
10633           if ((type->code () == TYPE_CODE_STRUCT
10634                && dynamic_template_type (type) != NULL)
10635               || (type->code () == TYPE_CODE_UNION
10636                   && ada_find_parallel_type (type, "___XVU") != NULL))
10637             {
10638               *pos += 4;
10639               return value_zero (to_static_fixed_type (type), not_lval);
10640             }
10641         }
10642
10643       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10644       return ada_to_fixed_value (arg1);
10645
10646     case OP_FUNCALL:
10647       (*pos) += 2;
10648
10649       /* Allocate arg vector, including space for the function to be
10650          called in argvec[0] and a terminating NULL.  */
10651       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10652       argvec = XALLOCAVEC (struct value *, nargs + 2);
10653
10654       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10655           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10656         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10657                exp->elts[pc + 5].symbol->print_name ());
10658       else
10659         {
10660           for (tem = 0; tem <= nargs; tem += 1)
10661             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10662           argvec[tem] = 0;
10663
10664           if (noside == EVAL_SKIP)
10665             goto nosideret;
10666         }
10667
10668       if (ada_is_constrained_packed_array_type
10669           (desc_base_type (value_type (argvec[0]))))
10670         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10671       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10672                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10673         /* This is a packed array that has already been fixed, and
10674            therefore already coerced to a simple array.  Nothing further
10675            to do.  */
10676         ;
10677       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10678         {
10679           /* Make sure we dereference references so that all the code below
10680              feels like it's really handling the referenced value.  Wrapping
10681              types (for alignment) may be there, so make sure we strip them as
10682              well.  */
10683           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10684         }
10685       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10686                && VALUE_LVAL (argvec[0]) == lval_memory)
10687         argvec[0] = value_addr (argvec[0]);
10688
10689       type = ada_check_typedef (value_type (argvec[0]));
10690
10691       /* Ada allows us to implicitly dereference arrays when subscripting
10692          them.  So, if this is an array typedef (encoding use for array
10693          access types encoded as fat pointers), strip it now.  */
10694       if (type->code () == TYPE_CODE_TYPEDEF)
10695         type = ada_typedef_target_type (type);
10696
10697       if (type->code () == TYPE_CODE_PTR)
10698         {
10699           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10700             {
10701             case TYPE_CODE_FUNC:
10702               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10703               break;
10704             case TYPE_CODE_ARRAY:
10705               break;
10706             case TYPE_CODE_STRUCT:
10707               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10708                 argvec[0] = ada_value_ind (argvec[0]);
10709               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10710               break;
10711             default:
10712               error (_("cannot subscript or call something of type `%s'"),
10713                      ada_type_name (value_type (argvec[0])));
10714               break;
10715             }
10716         }
10717
10718       switch (type->code ())
10719         {
10720         case TYPE_CODE_FUNC:
10721           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10722             {
10723               if (TYPE_TARGET_TYPE (type) == NULL)
10724                 error_call_unknown_return_type (NULL);
10725               return allocate_value (TYPE_TARGET_TYPE (type));
10726             }
10727           return call_function_by_hand (argvec[0], NULL,
10728                                         gdb::make_array_view (argvec + 1,
10729                                                               nargs));
10730         case TYPE_CODE_INTERNAL_FUNCTION:
10731           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10732             /* We don't know anything about what the internal
10733                function might return, but we have to return
10734                something.  */
10735             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10736                                not_lval);
10737           else
10738             return call_internal_function (exp->gdbarch, exp->language_defn,
10739                                            argvec[0], nargs, argvec + 1);
10740
10741         case TYPE_CODE_STRUCT:
10742           {
10743             int arity;
10744
10745             arity = ada_array_arity (type);
10746             type = ada_array_element_type (type, nargs);
10747             if (type == NULL)
10748               error (_("cannot subscript or call a record"));
10749             if (arity != nargs)
10750               error (_("wrong number of subscripts; expecting %d"), arity);
10751             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10752               return value_zero (ada_aligned_type (type), lval_memory);
10753             return
10754               unwrap_value (ada_value_subscript
10755                             (argvec[0], nargs, argvec + 1));
10756           }
10757         case TYPE_CODE_ARRAY:
10758           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10759             {
10760               type = ada_array_element_type (type, nargs);
10761               if (type == NULL)
10762                 error (_("element type of array unknown"));
10763               else
10764                 return value_zero (ada_aligned_type (type), lval_memory);
10765             }
10766           return
10767             unwrap_value (ada_value_subscript
10768                           (ada_coerce_to_simple_array (argvec[0]),
10769                            nargs, argvec + 1));
10770         case TYPE_CODE_PTR:     /* Pointer to array */
10771           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10772             {
10773               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10774               type = ada_array_element_type (type, nargs);
10775               if (type == NULL)
10776                 error (_("element type of array unknown"));
10777               else
10778                 return value_zero (ada_aligned_type (type), lval_memory);
10779             }
10780           return
10781             unwrap_value (ada_value_ptr_subscript (argvec[0],
10782                                                    nargs, argvec + 1));
10783
10784         default:
10785           error (_("Attempt to index or call something other than an "
10786                    "array or function"));
10787         }
10788
10789     case TERNOP_SLICE:
10790       {
10791         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10792         struct value *low_bound_val =
10793           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10794         struct value *high_bound_val =
10795           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10796         LONGEST low_bound;
10797         LONGEST high_bound;
10798
10799         low_bound_val = coerce_ref (low_bound_val);
10800         high_bound_val = coerce_ref (high_bound_val);
10801         low_bound = value_as_long (low_bound_val);
10802         high_bound = value_as_long (high_bound_val);
10803
10804         if (noside == EVAL_SKIP)
10805           goto nosideret;
10806
10807         /* If this is a reference to an aligner type, then remove all
10808            the aligners.  */
10809         if (value_type (array)->code () == TYPE_CODE_REF
10810             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10811           TYPE_TARGET_TYPE (value_type (array)) =
10812             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10813
10814         if (ada_is_constrained_packed_array_type (value_type (array)))
10815           error (_("cannot slice a packed array"));
10816
10817         /* If this is a reference to an array or an array lvalue,
10818            convert to a pointer.  */
10819         if (value_type (array)->code () == TYPE_CODE_REF
10820             || (value_type (array)->code () == TYPE_CODE_ARRAY
10821                 && VALUE_LVAL (array) == lval_memory))
10822           array = value_addr (array);
10823
10824         if (noside == EVAL_AVOID_SIDE_EFFECTS
10825             && ada_is_array_descriptor_type (ada_check_typedef
10826                                              (value_type (array))))
10827           return empty_array (ada_type_of_array (array, 0), low_bound,
10828                               high_bound);
10829
10830         array = ada_coerce_to_simple_array_ptr (array);
10831
10832         /* If we have more than one level of pointer indirection,
10833            dereference the value until we get only one level.  */
10834         while (value_type (array)->code () == TYPE_CODE_PTR
10835                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10836                      == TYPE_CODE_PTR))
10837           array = value_ind (array);
10838
10839         /* Make sure we really do have an array type before going further,
10840            to avoid a SEGV when trying to get the index type or the target
10841            type later down the road if the debug info generated by
10842            the compiler is incorrect or incomplete.  */
10843         if (!ada_is_simple_array_type (value_type (array)))
10844           error (_("cannot take slice of non-array"));
10845
10846         if (ada_check_typedef (value_type (array))->code ()
10847             == TYPE_CODE_PTR)
10848           {
10849             struct type *type0 = ada_check_typedef (value_type (array));
10850
10851             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10852               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10853             else
10854               {
10855                 struct type *arr_type0 =
10856                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10857
10858                 return ada_value_slice_from_ptr (array, arr_type0,
10859                                                  longest_to_int (low_bound),
10860                                                  longest_to_int (high_bound));
10861               }
10862           }
10863         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10864           return array;
10865         else if (high_bound < low_bound)
10866           return empty_array (value_type (array), low_bound, high_bound);
10867         else
10868           return ada_value_slice (array, longest_to_int (low_bound),
10869                                   longest_to_int (high_bound));
10870       }
10871
10872     case UNOP_IN_RANGE:
10873       (*pos) += 2;
10874       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10875       type = check_typedef (exp->elts[pc + 1].type);
10876
10877       if (noside == EVAL_SKIP)
10878         goto nosideret;
10879
10880       switch (type->code ())
10881         {
10882         default:
10883           lim_warning (_("Membership test incompletely implemented; "
10884                          "always returns true"));
10885           type = language_bool_type (exp->language_defn, exp->gdbarch);
10886           return value_from_longest (type, (LONGEST) 1);
10887
10888         case TYPE_CODE_RANGE:
10889           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10890           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10891           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10892           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10893           type = language_bool_type (exp->language_defn, exp->gdbarch);
10894           return
10895             value_from_longest (type,
10896                                 (value_less (arg1, arg3)
10897                                  || value_equal (arg1, arg3))
10898                                 && (value_less (arg2, arg1)
10899                                     || value_equal (arg2, arg1)));
10900         }
10901
10902     case BINOP_IN_BOUNDS:
10903       (*pos) += 2;
10904       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10905       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10906
10907       if (noside == EVAL_SKIP)
10908         goto nosideret;
10909
10910       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10911         {
10912           type = language_bool_type (exp->language_defn, exp->gdbarch);
10913           return value_zero (type, not_lval);
10914         }
10915
10916       tem = longest_to_int (exp->elts[pc + 1].longconst);
10917
10918       type = ada_index_type (value_type (arg2), tem, "range");
10919       if (!type)
10920         type = value_type (arg1);
10921
10922       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10923       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10924
10925       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10926       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10927       type = language_bool_type (exp->language_defn, exp->gdbarch);
10928       return
10929         value_from_longest (type,
10930                             (value_less (arg1, arg3)
10931                              || value_equal (arg1, arg3))
10932                             && (value_less (arg2, arg1)
10933                                 || value_equal (arg2, arg1)));
10934
10935     case TERNOP_IN_RANGE:
10936       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10937       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10938       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10939
10940       if (noside == EVAL_SKIP)
10941         goto nosideret;
10942
10943       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10944       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10945       type = language_bool_type (exp->language_defn, exp->gdbarch);
10946       return
10947         value_from_longest (type,
10948                             (value_less (arg1, arg3)
10949                              || value_equal (arg1, arg3))
10950                             && (value_less (arg2, arg1)
10951                                 || value_equal (arg2, arg1)));
10952
10953     case OP_ATR_FIRST:
10954     case OP_ATR_LAST:
10955     case OP_ATR_LENGTH:
10956       {
10957         struct type *type_arg;
10958
10959         if (exp->elts[*pos].opcode == OP_TYPE)
10960           {
10961             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10962             arg1 = NULL;
10963             type_arg = check_typedef (exp->elts[pc + 2].type);
10964           }
10965         else
10966           {
10967             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10968             type_arg = NULL;
10969           }
10970
10971         if (exp->elts[*pos].opcode != OP_LONG)
10972           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10973         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10974         *pos += 4;
10975
10976         if (noside == EVAL_SKIP)
10977           goto nosideret;
10978         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10979           {
10980             if (type_arg == NULL)
10981               type_arg = value_type (arg1);
10982
10983             if (ada_is_constrained_packed_array_type (type_arg))
10984               type_arg = decode_constrained_packed_array_type (type_arg);
10985
10986             if (!discrete_type_p (type_arg))
10987               {
10988                 switch (op)
10989                   {
10990                   default:          /* Should never happen.  */
10991                     error (_("unexpected attribute encountered"));
10992                   case OP_ATR_FIRST:
10993                   case OP_ATR_LAST:
10994                     type_arg = ada_index_type (type_arg, tem,
10995                                                ada_attribute_name (op));
10996                     break;
10997                   case OP_ATR_LENGTH:
10998                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
10999                     break;
11000                   }
11001               }
11002
11003             return value_zero (type_arg, not_lval);
11004           }
11005         else if (type_arg == NULL)
11006           {
11007             arg1 = ada_coerce_ref (arg1);
11008
11009             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11010               arg1 = ada_coerce_to_simple_array (arg1);
11011
11012             if (op == OP_ATR_LENGTH)
11013               type = builtin_type (exp->gdbarch)->builtin_int;
11014             else
11015               {
11016                 type = ada_index_type (value_type (arg1), tem,
11017                                        ada_attribute_name (op));
11018                 if (type == NULL)
11019                   type = builtin_type (exp->gdbarch)->builtin_int;
11020               }
11021
11022             switch (op)
11023               {
11024               default:          /* Should never happen.  */
11025                 error (_("unexpected attribute encountered"));
11026               case OP_ATR_FIRST:
11027                 return value_from_longest
11028                         (type, ada_array_bound (arg1, tem, 0));
11029               case OP_ATR_LAST:
11030                 return value_from_longest
11031                         (type, ada_array_bound (arg1, tem, 1));
11032               case OP_ATR_LENGTH:
11033                 return value_from_longest
11034                         (type, ada_array_length (arg1, tem));
11035               }
11036           }
11037         else if (discrete_type_p (type_arg))
11038           {
11039             struct type *range_type;
11040             const char *name = ada_type_name (type_arg);
11041
11042             range_type = NULL;
11043             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
11044               range_type = to_fixed_range_type (type_arg, NULL);
11045             if (range_type == NULL)
11046               range_type = type_arg;
11047             switch (op)
11048               {
11049               default:
11050                 error (_("unexpected attribute encountered"));
11051               case OP_ATR_FIRST:
11052                 return value_from_longest 
11053                   (range_type, ada_discrete_type_low_bound (range_type));
11054               case OP_ATR_LAST:
11055                 return value_from_longest
11056                   (range_type, ada_discrete_type_high_bound (range_type));
11057               case OP_ATR_LENGTH:
11058                 error (_("the 'length attribute applies only to array types"));
11059               }
11060           }
11061         else if (type_arg->code () == TYPE_CODE_FLT)
11062           error (_("unimplemented type attribute"));
11063         else
11064           {
11065             LONGEST low, high;
11066
11067             if (ada_is_constrained_packed_array_type (type_arg))
11068               type_arg = decode_constrained_packed_array_type (type_arg);
11069
11070             if (op == OP_ATR_LENGTH)
11071               type = builtin_type (exp->gdbarch)->builtin_int;
11072             else
11073               {
11074                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11075                 if (type == NULL)
11076                   type = builtin_type (exp->gdbarch)->builtin_int;
11077               }
11078
11079             switch (op)
11080               {
11081               default:
11082                 error (_("unexpected attribute encountered"));
11083               case OP_ATR_FIRST:
11084                 low = ada_array_bound_from_type (type_arg, tem, 0);
11085                 return value_from_longest (type, low);
11086               case OP_ATR_LAST:
11087                 high = ada_array_bound_from_type (type_arg, tem, 1);
11088                 return value_from_longest (type, high);
11089               case OP_ATR_LENGTH:
11090                 low = ada_array_bound_from_type (type_arg, tem, 0);
11091                 high = ada_array_bound_from_type (type_arg, tem, 1);
11092                 return value_from_longest (type, high - low + 1);
11093               }
11094           }
11095       }
11096
11097     case OP_ATR_TAG:
11098       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11099       if (noside == EVAL_SKIP)
11100         goto nosideret;
11101
11102       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11103         return value_zero (ada_tag_type (arg1), not_lval);
11104
11105       return ada_value_tag (arg1);
11106
11107     case OP_ATR_MIN:
11108     case OP_ATR_MAX:
11109       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11110       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11111       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11112       if (noside == EVAL_SKIP)
11113         goto nosideret;
11114       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11115         return value_zero (value_type (arg1), not_lval);
11116       else
11117         {
11118           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11119           return value_binop (arg1, arg2,
11120                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11121         }
11122
11123     case OP_ATR_MODULUS:
11124       {
11125         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11126
11127         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11128         if (noside == EVAL_SKIP)
11129           goto nosideret;
11130
11131         if (!ada_is_modular_type (type_arg))
11132           error (_("'modulus must be applied to modular type"));
11133
11134         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11135                                    ada_modulus (type_arg));
11136       }
11137
11138
11139     case OP_ATR_POS:
11140       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11141       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11142       if (noside == EVAL_SKIP)
11143         goto nosideret;
11144       type = builtin_type (exp->gdbarch)->builtin_int;
11145       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11146         return value_zero (type, not_lval);
11147       else
11148         return value_pos_atr (type, arg1);
11149
11150     case OP_ATR_SIZE:
11151       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11152       type = value_type (arg1);
11153
11154       /* If the argument is a reference, then dereference its type, since
11155          the user is really asking for the size of the actual object,
11156          not the size of the pointer.  */
11157       if (type->code () == TYPE_CODE_REF)
11158         type = TYPE_TARGET_TYPE (type);
11159
11160       if (noside == EVAL_SKIP)
11161         goto nosideret;
11162       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11163         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11164       else
11165         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11166                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11167
11168     case OP_ATR_VAL:
11169       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11170       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11171       type = exp->elts[pc + 2].type;
11172       if (noside == EVAL_SKIP)
11173         goto nosideret;
11174       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11175         return value_zero (type, not_lval);
11176       else
11177         return value_val_atr (type, arg1);
11178
11179     case BINOP_EXP:
11180       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11181       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11182       if (noside == EVAL_SKIP)
11183         goto nosideret;
11184       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11185         return value_zero (value_type (arg1), not_lval);
11186       else
11187         {
11188           /* For integer exponentiation operations,
11189              only promote the first argument.  */
11190           if (is_integral_type (value_type (arg2)))
11191             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11192           else
11193             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11194
11195           return value_binop (arg1, arg2, op);
11196         }
11197
11198     case UNOP_PLUS:
11199       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11200       if (noside == EVAL_SKIP)
11201         goto nosideret;
11202       else
11203         return arg1;
11204
11205     case UNOP_ABS:
11206       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11207       if (noside == EVAL_SKIP)
11208         goto nosideret;
11209       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11210       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11211         return value_neg (arg1);
11212       else
11213         return arg1;
11214
11215     case UNOP_IND:
11216       preeval_pos = *pos;
11217       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11218       if (noside == EVAL_SKIP)
11219         goto nosideret;
11220       type = ada_check_typedef (value_type (arg1));
11221       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11222         {
11223           if (ada_is_array_descriptor_type (type))
11224             /* GDB allows dereferencing GNAT array descriptors.  */
11225             {
11226               struct type *arrType = ada_type_of_array (arg1, 0);
11227
11228               if (arrType == NULL)
11229                 error (_("Attempt to dereference null array pointer."));
11230               return value_at_lazy (arrType, 0);
11231             }
11232           else if (type->code () == TYPE_CODE_PTR
11233                    || type->code () == TYPE_CODE_REF
11234                    /* In C you can dereference an array to get the 1st elt.  */
11235                    || type->code () == TYPE_CODE_ARRAY)
11236             {
11237             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11238                only be determined by inspecting the object's tag.
11239                This means that we need to evaluate completely the
11240                expression in order to get its type.  */
11241
11242               if ((type->code () == TYPE_CODE_REF
11243                    || type->code () == TYPE_CODE_PTR)
11244                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11245                 {
11246                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11247                                           EVAL_NORMAL);
11248                   type = value_type (ada_value_ind (arg1));
11249                 }
11250               else
11251                 {
11252                   type = to_static_fixed_type
11253                     (ada_aligned_type
11254                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11255                 }
11256               ada_ensure_varsize_limit (type);
11257               return value_zero (type, lval_memory);
11258             }
11259           else if (type->code () == TYPE_CODE_INT)
11260             {
11261               /* GDB allows dereferencing an int.  */
11262               if (expect_type == NULL)
11263                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11264                                    lval_memory);
11265               else
11266                 {
11267                   expect_type = 
11268                     to_static_fixed_type (ada_aligned_type (expect_type));
11269                   return value_zero (expect_type, lval_memory);
11270                 }
11271             }
11272           else
11273             error (_("Attempt to take contents of a non-pointer value."));
11274         }
11275       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11276       type = ada_check_typedef (value_type (arg1));
11277
11278       if (type->code () == TYPE_CODE_INT)
11279           /* GDB allows dereferencing an int.  If we were given
11280              the expect_type, then use that as the target type.
11281              Otherwise, assume that the target type is an int.  */
11282         {
11283           if (expect_type != NULL)
11284             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11285                                               arg1));
11286           else
11287             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11288                                   (CORE_ADDR) value_as_address (arg1));
11289         }
11290
11291       if (ada_is_array_descriptor_type (type))
11292         /* GDB allows dereferencing GNAT array descriptors.  */
11293         return ada_coerce_to_simple_array (arg1);
11294       else
11295         return ada_value_ind (arg1);
11296
11297     case STRUCTOP_STRUCT:
11298       tem = longest_to_int (exp->elts[pc + 1].longconst);
11299       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11300       preeval_pos = *pos;
11301       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11302       if (noside == EVAL_SKIP)
11303         goto nosideret;
11304       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11305         {
11306           struct type *type1 = value_type (arg1);
11307
11308           if (ada_is_tagged_type (type1, 1))
11309             {
11310               type = ada_lookup_struct_elt_type (type1,
11311                                                  &exp->elts[pc + 2].string,
11312                                                  1, 1);
11313
11314               /* If the field is not found, check if it exists in the
11315                  extension of this object's type. This means that we
11316                  need to evaluate completely the expression.  */
11317
11318               if (type == NULL)
11319                 {
11320                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11321                                           EVAL_NORMAL);
11322                   arg1 = ada_value_struct_elt (arg1,
11323                                                &exp->elts[pc + 2].string,
11324                                                0);
11325                   arg1 = unwrap_value (arg1);
11326                   type = value_type (ada_to_fixed_value (arg1));
11327                 }
11328             }
11329           else
11330             type =
11331               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11332                                           0);
11333
11334           return value_zero (ada_aligned_type (type), lval_memory);
11335         }
11336       else
11337         {
11338           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11339           arg1 = unwrap_value (arg1);
11340           return ada_to_fixed_value (arg1);
11341         }
11342
11343     case OP_TYPE:
11344       /* The value is not supposed to be used.  This is here to make it
11345          easier to accommodate expressions that contain types.  */
11346       (*pos) += 2;
11347       if (noside == EVAL_SKIP)
11348         goto nosideret;
11349       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11350         return allocate_value (exp->elts[pc + 1].type);
11351       else
11352         error (_("Attempt to use a type name as an expression"));
11353
11354     case OP_AGGREGATE:
11355     case OP_CHOICES:
11356     case OP_OTHERS:
11357     case OP_DISCRETE_RANGE:
11358     case OP_POSITIONAL:
11359     case OP_NAME:
11360       if (noside == EVAL_NORMAL)
11361         switch (op) 
11362           {
11363           case OP_NAME:
11364             error (_("Undefined name, ambiguous name, or renaming used in "
11365                      "component association: %s."), &exp->elts[pc+2].string);
11366           case OP_AGGREGATE:
11367             error (_("Aggregates only allowed on the right of an assignment"));
11368           default:
11369             internal_error (__FILE__, __LINE__,
11370                             _("aggregate apparently mangled"));
11371           }
11372
11373       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11374       *pos += oplen - 1;
11375       for (tem = 0; tem < nargs; tem += 1) 
11376         ada_evaluate_subexp (NULL, exp, pos, noside);
11377       goto nosideret;
11378     }
11379
11380 nosideret:
11381   return eval_skip_value (exp);
11382 }
11383 \f
11384
11385                                 /* Fixed point */
11386
11387 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11388    type name that encodes the 'small and 'delta information.
11389    Otherwise, return NULL.  */
11390
11391 static const char *
11392 gnat_encoded_fixed_type_info (struct type *type)
11393 {
11394   const char *name = ada_type_name (type);
11395   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11396
11397   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11398     {
11399       const char *tail = strstr (name, "___XF_");
11400
11401       if (tail == NULL)
11402         return NULL;
11403       else
11404         return tail + 5;
11405     }
11406   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11407     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11408   else
11409     return NULL;
11410 }
11411
11412 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11413
11414 int
11415 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11416 {
11417   return gnat_encoded_fixed_type_info (type) != NULL;
11418 }
11419
11420 /* Return non-zero iff TYPE represents a System.Address type.  */
11421
11422 int
11423 ada_is_system_address_type (struct type *type)
11424 {
11425   return (type->name () && strcmp (type->name (), "system__address") == 0);
11426 }
11427
11428 /* Assuming that TYPE is the representation of an Ada fixed-point
11429    type, return the target floating-point type to be used to represent
11430    of this type during internal computation.  */
11431
11432 static struct type *
11433 ada_scaling_type (struct type *type)
11434 {
11435   return builtin_type (get_type_arch (type))->builtin_long_double;
11436 }
11437
11438 /* Assuming that TYPE is the representation of an Ada fixed-point
11439    type, return its delta, or NULL if the type is malformed and the
11440    delta cannot be determined.  */
11441
11442 struct value *
11443 gnat_encoded_fixed_point_delta (struct type *type)
11444 {
11445   const char *encoding = gnat_encoded_fixed_type_info (type);
11446   struct type *scale_type = ada_scaling_type (type);
11447
11448   long long num, den;
11449
11450   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11451     return nullptr;
11452   else
11453     return value_binop (value_from_longest (scale_type, num),
11454                         value_from_longest (scale_type, den), BINOP_DIV);
11455 }
11456
11457 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11458    the scaling factor ('SMALL value) associated with the type.  */
11459
11460 struct value *
11461 ada_scaling_factor (struct type *type)
11462 {
11463   const char *encoding = gnat_encoded_fixed_type_info (type);
11464   struct type *scale_type = ada_scaling_type (type);
11465
11466   long long num0, den0, num1, den1;
11467   int n;
11468
11469   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11470               &num0, &den0, &num1, &den1);
11471
11472   if (n < 2)
11473     return value_from_longest (scale_type, 1);
11474   else if (n == 4)
11475     return value_binop (value_from_longest (scale_type, num1),
11476                         value_from_longest (scale_type, den1), BINOP_DIV);
11477   else
11478     return value_binop (value_from_longest (scale_type, num0),
11479                         value_from_longest (scale_type, den0), BINOP_DIV);
11480 }
11481
11482 \f
11483
11484                                 /* Range types */
11485
11486 /* Scan STR beginning at position K for a discriminant name, and
11487    return the value of that discriminant field of DVAL in *PX.  If
11488    PNEW_K is not null, put the position of the character beyond the
11489    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11490    not alter *PX and *PNEW_K if unsuccessful.  */
11491
11492 static int
11493 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11494                     int *pnew_k)
11495 {
11496   static char *bound_buffer = NULL;
11497   static size_t bound_buffer_len = 0;
11498   const char *pstart, *pend, *bound;
11499   struct value *bound_val;
11500
11501   if (dval == NULL || str == NULL || str[k] == '\0')
11502     return 0;
11503
11504   pstart = str + k;
11505   pend = strstr (pstart, "__");
11506   if (pend == NULL)
11507     {
11508       bound = pstart;
11509       k += strlen (bound);
11510     }
11511   else
11512     {
11513       int len = pend - pstart;
11514
11515       /* Strip __ and beyond.  */
11516       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11517       strncpy (bound_buffer, pstart, len);
11518       bound_buffer[len] = '\0';
11519
11520       bound = bound_buffer;
11521       k = pend - str;
11522     }
11523
11524   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11525   if (bound_val == NULL)
11526     return 0;
11527
11528   *px = value_as_long (bound_val);
11529   if (pnew_k != NULL)
11530     *pnew_k = k;
11531   return 1;
11532 }
11533
11534 /* Value of variable named NAME in the current environment.  If
11535    no such variable found, then if ERR_MSG is null, returns 0, and
11536    otherwise causes an error with message ERR_MSG.  */
11537
11538 static struct value *
11539 get_var_value (const char *name, const char *err_msg)
11540 {
11541   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11542
11543   std::vector<struct block_symbol> syms;
11544   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11545                                              get_selected_block (0),
11546                                              VAR_DOMAIN, &syms, 1);
11547
11548   if (nsyms != 1)
11549     {
11550       if (err_msg == NULL)
11551         return 0;
11552       else
11553         error (("%s"), err_msg);
11554     }
11555
11556   return value_of_variable (syms[0].symbol, syms[0].block);
11557 }
11558
11559 /* Value of integer variable named NAME in the current environment.
11560    If no such variable is found, returns false.  Otherwise, sets VALUE
11561    to the variable's value and returns true.  */
11562
11563 bool
11564 get_int_var_value (const char *name, LONGEST &value)
11565 {
11566   struct value *var_val = get_var_value (name, 0);
11567
11568   if (var_val == 0)
11569     return false;
11570
11571   value = value_as_long (var_val);
11572   return true;
11573 }
11574
11575
11576 /* Return a range type whose base type is that of the range type named
11577    NAME in the current environment, and whose bounds are calculated
11578    from NAME according to the GNAT range encoding conventions.
11579    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11580    corresponding range type from debug information; fall back to using it
11581    if symbol lookup fails.  If a new type must be created, allocate it
11582    like ORIG_TYPE was.  The bounds information, in general, is encoded
11583    in NAME, the base type given in the named range type.  */
11584
11585 static struct type *
11586 to_fixed_range_type (struct type *raw_type, struct value *dval)
11587 {
11588   const char *name;
11589   struct type *base_type;
11590   const char *subtype_info;
11591
11592   gdb_assert (raw_type != NULL);
11593   gdb_assert (raw_type->name () != NULL);
11594
11595   if (raw_type->code () == TYPE_CODE_RANGE)
11596     base_type = TYPE_TARGET_TYPE (raw_type);
11597   else
11598     base_type = raw_type;
11599
11600   name = raw_type->name ();
11601   subtype_info = strstr (name, "___XD");
11602   if (subtype_info == NULL)
11603     {
11604       LONGEST L = ada_discrete_type_low_bound (raw_type);
11605       LONGEST U = ada_discrete_type_high_bound (raw_type);
11606
11607       if (L < INT_MIN || U > INT_MAX)
11608         return raw_type;
11609       else
11610         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11611                                          L, U);
11612     }
11613   else
11614     {
11615       static char *name_buf = NULL;
11616       static size_t name_len = 0;
11617       int prefix_len = subtype_info - name;
11618       LONGEST L, U;
11619       struct type *type;
11620       const char *bounds_str;
11621       int n;
11622
11623       GROW_VECT (name_buf, name_len, prefix_len + 5);
11624       strncpy (name_buf, name, prefix_len);
11625       name_buf[prefix_len] = '\0';
11626
11627       subtype_info += 5;
11628       bounds_str = strchr (subtype_info, '_');
11629       n = 1;
11630
11631       if (*subtype_info == 'L')
11632         {
11633           if (!ada_scan_number (bounds_str, n, &L, &n)
11634               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11635             return raw_type;
11636           if (bounds_str[n] == '_')
11637             n += 2;
11638           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11639             n += 1;
11640           subtype_info += 1;
11641         }
11642       else
11643         {
11644           strcpy (name_buf + prefix_len, "___L");
11645           if (!get_int_var_value (name_buf, L))
11646             {
11647               lim_warning (_("Unknown lower bound, using 1."));
11648               L = 1;
11649             }
11650         }
11651
11652       if (*subtype_info == 'U')
11653         {
11654           if (!ada_scan_number (bounds_str, n, &U, &n)
11655               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11656             return raw_type;
11657         }
11658       else
11659         {
11660           strcpy (name_buf + prefix_len, "___U");
11661           if (!get_int_var_value (name_buf, U))
11662             {
11663               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11664               U = L;
11665             }
11666         }
11667
11668       type = create_static_range_type (alloc_type_copy (raw_type),
11669                                        base_type, L, U);
11670       /* create_static_range_type alters the resulting type's length
11671          to match the size of the base_type, which is not what we want.
11672          Set it back to the original range type's length.  */
11673       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11674       type->set_name (name);
11675       return type;
11676     }
11677 }
11678
11679 /* True iff NAME is the name of a range type.  */
11680
11681 int
11682 ada_is_range_type_name (const char *name)
11683 {
11684   return (name != NULL && strstr (name, "___XD"));
11685 }
11686 \f
11687
11688                                 /* Modular types */
11689
11690 /* True iff TYPE is an Ada modular type.  */
11691
11692 int
11693 ada_is_modular_type (struct type *type)
11694 {
11695   struct type *subranged_type = get_base_type (type);
11696
11697   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11698           && subranged_type->code () == TYPE_CODE_INT
11699           && TYPE_UNSIGNED (subranged_type));
11700 }
11701
11702 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11703
11704 ULONGEST
11705 ada_modulus (struct type *type)
11706 {
11707   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11708 }
11709 \f
11710
11711 /* Ada exception catchpoint support:
11712    ---------------------------------
11713
11714    We support 3 kinds of exception catchpoints:
11715      . catchpoints on Ada exceptions
11716      . catchpoints on unhandled Ada exceptions
11717      . catchpoints on failed assertions
11718
11719    Exceptions raised during failed assertions, or unhandled exceptions
11720    could perfectly be caught with the general catchpoint on Ada exceptions.
11721    However, we can easily differentiate these two special cases, and having
11722    the option to distinguish these two cases from the rest can be useful
11723    to zero-in on certain situations.
11724
11725    Exception catchpoints are a specialized form of breakpoint,
11726    since they rely on inserting breakpoints inside known routines
11727    of the GNAT runtime.  The implementation therefore uses a standard
11728    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11729    of breakpoint_ops.
11730
11731    Support in the runtime for exception catchpoints have been changed
11732    a few times already, and these changes affect the implementation
11733    of these catchpoints.  In order to be able to support several
11734    variants of the runtime, we use a sniffer that will determine
11735    the runtime variant used by the program being debugged.  */
11736
11737 /* Ada's standard exceptions.
11738
11739    The Ada 83 standard also defined Numeric_Error.  But there so many
11740    situations where it was unclear from the Ada 83 Reference Manual
11741    (RM) whether Constraint_Error or Numeric_Error should be raised,
11742    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11743    Interpretation saying that anytime the RM says that Numeric_Error
11744    should be raised, the implementation may raise Constraint_Error.
11745    Ada 95 went one step further and pretty much removed Numeric_Error
11746    from the list of standard exceptions (it made it a renaming of
11747    Constraint_Error, to help preserve compatibility when compiling
11748    an Ada83 compiler). As such, we do not include Numeric_Error from
11749    this list of standard exceptions.  */
11750
11751 static const char *standard_exc[] = {
11752   "constraint_error",
11753   "program_error",
11754   "storage_error",
11755   "tasking_error"
11756 };
11757
11758 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11759
11760 /* A structure that describes how to support exception catchpoints
11761    for a given executable.  */
11762
11763 struct exception_support_info
11764 {
11765    /* The name of the symbol to break on in order to insert
11766       a catchpoint on exceptions.  */
11767    const char *catch_exception_sym;
11768
11769    /* The name of the symbol to break on in order to insert
11770       a catchpoint on unhandled exceptions.  */
11771    const char *catch_exception_unhandled_sym;
11772
11773    /* The name of the symbol to break on in order to insert
11774       a catchpoint on failed assertions.  */
11775    const char *catch_assert_sym;
11776
11777    /* The name of the symbol to break on in order to insert
11778       a catchpoint on exception handling.  */
11779    const char *catch_handlers_sym;
11780
11781    /* Assuming that the inferior just triggered an unhandled exception
11782       catchpoint, this function is responsible for returning the address
11783       in inferior memory where the name of that exception is stored.
11784       Return zero if the address could not be computed.  */
11785    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11786 };
11787
11788 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11789 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11790
11791 /* The following exception support info structure describes how to
11792    implement exception catchpoints with the latest version of the
11793    Ada runtime (as of 2019-08-??).  */
11794
11795 static const struct exception_support_info default_exception_support_info =
11796 {
11797   "__gnat_debug_raise_exception", /* catch_exception_sym */
11798   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11799   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11800   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11801   ada_unhandled_exception_name_addr
11802 };
11803
11804 /* The following exception support info structure describes how to
11805    implement exception catchpoints with an earlier version of the
11806    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11807
11808 static const struct exception_support_info exception_support_info_v0 =
11809 {
11810   "__gnat_debug_raise_exception", /* catch_exception_sym */
11811   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11812   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11813   "__gnat_begin_handler", /* catch_handlers_sym */
11814   ada_unhandled_exception_name_addr
11815 };
11816
11817 /* The following exception support info structure describes how to
11818    implement exception catchpoints with a slightly older version
11819    of the Ada runtime.  */
11820
11821 static const struct exception_support_info exception_support_info_fallback =
11822 {
11823   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11824   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11825   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11826   "__gnat_begin_handler", /* catch_handlers_sym */
11827   ada_unhandled_exception_name_addr_from_raise
11828 };
11829
11830 /* Return nonzero if we can detect the exception support routines
11831    described in EINFO.
11832
11833    This function errors out if an abnormal situation is detected
11834    (for instance, if we find the exception support routines, but
11835    that support is found to be incomplete).  */
11836
11837 static int
11838 ada_has_this_exception_support (const struct exception_support_info *einfo)
11839 {
11840   struct symbol *sym;
11841
11842   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11843      that should be compiled with debugging information.  As a result, we
11844      expect to find that symbol in the symtabs.  */
11845
11846   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11847   if (sym == NULL)
11848     {
11849       /* Perhaps we did not find our symbol because the Ada runtime was
11850          compiled without debugging info, or simply stripped of it.
11851          It happens on some GNU/Linux distributions for instance, where
11852          users have to install a separate debug package in order to get
11853          the runtime's debugging info.  In that situation, let the user
11854          know why we cannot insert an Ada exception catchpoint.
11855
11856          Note: Just for the purpose of inserting our Ada exception
11857          catchpoint, we could rely purely on the associated minimal symbol.
11858          But we would be operating in degraded mode anyway, since we are
11859          still lacking the debugging info needed later on to extract
11860          the name of the exception being raised (this name is printed in
11861          the catchpoint message, and is also used when trying to catch
11862          a specific exception).  We do not handle this case for now.  */
11863       struct bound_minimal_symbol msym
11864         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11865
11866       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11867         error (_("Your Ada runtime appears to be missing some debugging "
11868                  "information.\nCannot insert Ada exception catchpoint "
11869                  "in this configuration."));
11870
11871       return 0;
11872     }
11873
11874   /* Make sure that the symbol we found corresponds to a function.  */
11875
11876   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11877     {
11878       error (_("Symbol \"%s\" is not a function (class = %d)"),
11879              sym->linkage_name (), SYMBOL_CLASS (sym));
11880       return 0;
11881     }
11882
11883   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11884   if (sym == NULL)
11885     {
11886       struct bound_minimal_symbol msym
11887         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11888
11889       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11890         error (_("Your Ada runtime appears to be missing some debugging "
11891                  "information.\nCannot insert Ada exception catchpoint "
11892                  "in this configuration."));
11893
11894       return 0;
11895     }
11896
11897   /* Make sure that the symbol we found corresponds to a function.  */
11898
11899   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11900     {
11901       error (_("Symbol \"%s\" is not a function (class = %d)"),
11902              sym->linkage_name (), SYMBOL_CLASS (sym));
11903       return 0;
11904     }
11905
11906   return 1;
11907 }
11908
11909 /* Inspect the Ada runtime and determine which exception info structure
11910    should be used to provide support for exception catchpoints.
11911
11912    This function will always set the per-inferior exception_info,
11913    or raise an error.  */
11914
11915 static void
11916 ada_exception_support_info_sniffer (void)
11917 {
11918   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11919
11920   /* If the exception info is already known, then no need to recompute it.  */
11921   if (data->exception_info != NULL)
11922     return;
11923
11924   /* Check the latest (default) exception support info.  */
11925   if (ada_has_this_exception_support (&default_exception_support_info))
11926     {
11927       data->exception_info = &default_exception_support_info;
11928       return;
11929     }
11930
11931   /* Try the v0 exception suport info.  */
11932   if (ada_has_this_exception_support (&exception_support_info_v0))
11933     {
11934       data->exception_info = &exception_support_info_v0;
11935       return;
11936     }
11937
11938   /* Try our fallback exception suport info.  */
11939   if (ada_has_this_exception_support (&exception_support_info_fallback))
11940     {
11941       data->exception_info = &exception_support_info_fallback;
11942       return;
11943     }
11944
11945   /* Sometimes, it is normal for us to not be able to find the routine
11946      we are looking for.  This happens when the program is linked with
11947      the shared version of the GNAT runtime, and the program has not been
11948      started yet.  Inform the user of these two possible causes if
11949      applicable.  */
11950
11951   if (ada_update_initial_language (language_unknown) != language_ada)
11952     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11953
11954   /* If the symbol does not exist, then check that the program is
11955      already started, to make sure that shared libraries have been
11956      loaded.  If it is not started, this may mean that the symbol is
11957      in a shared library.  */
11958
11959   if (inferior_ptid.pid () == 0)
11960     error (_("Unable to insert catchpoint. Try to start the program first."));
11961
11962   /* At this point, we know that we are debugging an Ada program and
11963      that the inferior has been started, but we still are not able to
11964      find the run-time symbols.  That can mean that we are in
11965      configurable run time mode, or that a-except as been optimized
11966      out by the linker...  In any case, at this point it is not worth
11967      supporting this feature.  */
11968
11969   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11970 }
11971
11972 /* True iff FRAME is very likely to be that of a function that is
11973    part of the runtime system.  This is all very heuristic, but is
11974    intended to be used as advice as to what frames are uninteresting
11975    to most users.  */
11976
11977 static int
11978 is_known_support_routine (struct frame_info *frame)
11979 {
11980   enum language func_lang;
11981   int i;
11982   const char *fullname;
11983
11984   /* If this code does not have any debugging information (no symtab),
11985      This cannot be any user code.  */
11986
11987   symtab_and_line sal = find_frame_sal (frame);
11988   if (sal.symtab == NULL)
11989     return 1;
11990
11991   /* If there is a symtab, but the associated source file cannot be
11992      located, then assume this is not user code:  Selecting a frame
11993      for which we cannot display the code would not be very helpful
11994      for the user.  This should also take care of case such as VxWorks
11995      where the kernel has some debugging info provided for a few units.  */
11996
11997   fullname = symtab_to_fullname (sal.symtab);
11998   if (access (fullname, R_OK) != 0)
11999     return 1;
12000
12001   /* Check the unit filename against the Ada runtime file naming.
12002      We also check the name of the objfile against the name of some
12003      known system libraries that sometimes come with debugging info
12004      too.  */
12005
12006   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12007     {
12008       re_comp (known_runtime_file_name_patterns[i]);
12009       if (re_exec (lbasename (sal.symtab->filename)))
12010         return 1;
12011       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12012           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12013         return 1;
12014     }
12015
12016   /* Check whether the function is a GNAT-generated entity.  */
12017
12018   gdb::unique_xmalloc_ptr<char> func_name
12019     = find_frame_funname (frame, &func_lang, NULL);
12020   if (func_name == NULL)
12021     return 1;
12022
12023   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12024     {
12025       re_comp (known_auxiliary_function_name_patterns[i]);
12026       if (re_exec (func_name.get ()))
12027         return 1;
12028     }
12029
12030   return 0;
12031 }
12032
12033 /* Find the first frame that contains debugging information and that is not
12034    part of the Ada run-time, starting from FI and moving upward.  */
12035
12036 void
12037 ada_find_printable_frame (struct frame_info *fi)
12038 {
12039   for (; fi != NULL; fi = get_prev_frame (fi))
12040     {
12041       if (!is_known_support_routine (fi))
12042         {
12043           select_frame (fi);
12044           break;
12045         }
12046     }
12047
12048 }
12049
12050 /* Assuming that the inferior just triggered an unhandled exception
12051    catchpoint, return the address in inferior memory where the name
12052    of the exception is stored.
12053    
12054    Return zero if the address could not be computed.  */
12055
12056 static CORE_ADDR
12057 ada_unhandled_exception_name_addr (void)
12058 {
12059   return parse_and_eval_address ("e.full_name");
12060 }
12061
12062 /* Same as ada_unhandled_exception_name_addr, except that this function
12063    should be used when the inferior uses an older version of the runtime,
12064    where the exception name needs to be extracted from a specific frame
12065    several frames up in the callstack.  */
12066
12067 static CORE_ADDR
12068 ada_unhandled_exception_name_addr_from_raise (void)
12069 {
12070   int frame_level;
12071   struct frame_info *fi;
12072   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12073
12074   /* To determine the name of this exception, we need to select
12075      the frame corresponding to RAISE_SYM_NAME.  This frame is
12076      at least 3 levels up, so we simply skip the first 3 frames
12077      without checking the name of their associated function.  */
12078   fi = get_current_frame ();
12079   for (frame_level = 0; frame_level < 3; frame_level += 1)
12080     if (fi != NULL)
12081       fi = get_prev_frame (fi); 
12082
12083   while (fi != NULL)
12084     {
12085       enum language func_lang;
12086
12087       gdb::unique_xmalloc_ptr<char> func_name
12088         = find_frame_funname (fi, &func_lang, NULL);
12089       if (func_name != NULL)
12090         {
12091           if (strcmp (func_name.get (),
12092                       data->exception_info->catch_exception_sym) == 0)
12093             break; /* We found the frame we were looking for...  */
12094         }
12095       fi = get_prev_frame (fi);
12096     }
12097
12098   if (fi == NULL)
12099     return 0;
12100
12101   select_frame (fi);
12102   return parse_and_eval_address ("id.full_name");
12103 }
12104
12105 /* Assuming the inferior just triggered an Ada exception catchpoint
12106    (of any type), return the address in inferior memory where the name
12107    of the exception is stored, if applicable.
12108
12109    Assumes the selected frame is the current frame.
12110
12111    Return zero if the address could not be computed, or if not relevant.  */
12112
12113 static CORE_ADDR
12114 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12115                            struct breakpoint *b)
12116 {
12117   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12118
12119   switch (ex)
12120     {
12121       case ada_catch_exception:
12122         return (parse_and_eval_address ("e.full_name"));
12123         break;
12124
12125       case ada_catch_exception_unhandled:
12126         return data->exception_info->unhandled_exception_name_addr ();
12127         break;
12128
12129       case ada_catch_handlers:
12130         return 0;  /* The runtimes does not provide access to the exception
12131                       name.  */
12132         break;
12133
12134       case ada_catch_assert:
12135         return 0;  /* Exception name is not relevant in this case.  */
12136         break;
12137
12138       default:
12139         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12140         break;
12141     }
12142
12143   return 0; /* Should never be reached.  */
12144 }
12145
12146 /* Assuming the inferior is stopped at an exception catchpoint,
12147    return the message which was associated to the exception, if
12148    available.  Return NULL if the message could not be retrieved.
12149
12150    Note: The exception message can be associated to an exception
12151    either through the use of the Raise_Exception function, or
12152    more simply (Ada 2005 and later), via:
12153
12154        raise Exception_Name with "exception message";
12155
12156    */
12157
12158 static gdb::unique_xmalloc_ptr<char>
12159 ada_exception_message_1 (void)
12160 {
12161   struct value *e_msg_val;
12162   int e_msg_len;
12163
12164   /* For runtimes that support this feature, the exception message
12165      is passed as an unbounded string argument called "message".  */
12166   e_msg_val = parse_and_eval ("message");
12167   if (e_msg_val == NULL)
12168     return NULL; /* Exception message not supported.  */
12169
12170   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12171   gdb_assert (e_msg_val != NULL);
12172   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12173
12174   /* If the message string is empty, then treat it as if there was
12175      no exception message.  */
12176   if (e_msg_len <= 0)
12177     return NULL;
12178
12179   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12180   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12181   e_msg.get ()[e_msg_len] = '\0';
12182
12183   return e_msg;
12184 }
12185
12186 /* Same as ada_exception_message_1, except that all exceptions are
12187    contained here (returning NULL instead).  */
12188
12189 static gdb::unique_xmalloc_ptr<char>
12190 ada_exception_message (void)
12191 {
12192   gdb::unique_xmalloc_ptr<char> e_msg;
12193
12194   try
12195     {
12196       e_msg = ada_exception_message_1 ();
12197     }
12198   catch (const gdb_exception_error &e)
12199     {
12200       e_msg.reset (nullptr);
12201     }
12202
12203   return e_msg;
12204 }
12205
12206 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12207    any error that ada_exception_name_addr_1 might cause to be thrown.
12208    When an error is intercepted, a warning with the error message is printed,
12209    and zero is returned.  */
12210
12211 static CORE_ADDR
12212 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12213                          struct breakpoint *b)
12214 {
12215   CORE_ADDR result = 0;
12216
12217   try
12218     {
12219       result = ada_exception_name_addr_1 (ex, b);
12220     }
12221
12222   catch (const gdb_exception_error &e)
12223     {
12224       warning (_("failed to get exception name: %s"), e.what ());
12225       return 0;
12226     }
12227
12228   return result;
12229 }
12230
12231 static std::string ada_exception_catchpoint_cond_string
12232   (const char *excep_string,
12233    enum ada_exception_catchpoint_kind ex);
12234
12235 /* Ada catchpoints.
12236
12237    In the case of catchpoints on Ada exceptions, the catchpoint will
12238    stop the target on every exception the program throws.  When a user
12239    specifies the name of a specific exception, we translate this
12240    request into a condition expression (in text form), and then parse
12241    it into an expression stored in each of the catchpoint's locations.
12242    We then use this condition to check whether the exception that was
12243    raised is the one the user is interested in.  If not, then the
12244    target is resumed again.  We store the name of the requested
12245    exception, in order to be able to re-set the condition expression
12246    when symbols change.  */
12247
12248 /* An instance of this type is used to represent an Ada catchpoint
12249    breakpoint location.  */
12250
12251 class ada_catchpoint_location : public bp_location
12252 {
12253 public:
12254   ada_catchpoint_location (breakpoint *owner)
12255     : bp_location (owner, bp_loc_software_breakpoint)
12256   {}
12257
12258   /* The condition that checks whether the exception that was raised
12259      is the specific exception the user specified on catchpoint
12260      creation.  */
12261   expression_up excep_cond_expr;
12262 };
12263
12264 /* An instance of this type is used to represent an Ada catchpoint.  */
12265
12266 struct ada_catchpoint : public breakpoint
12267 {
12268   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12269     : m_kind (kind)
12270   {
12271   }
12272
12273   /* The name of the specific exception the user specified.  */
12274   std::string excep_string;
12275
12276   /* What kind of catchpoint this is.  */
12277   enum ada_exception_catchpoint_kind m_kind;
12278 };
12279
12280 /* Parse the exception condition string in the context of each of the
12281    catchpoint's locations, and store them for later evaluation.  */
12282
12283 static void
12284 create_excep_cond_exprs (struct ada_catchpoint *c,
12285                          enum ada_exception_catchpoint_kind ex)
12286 {
12287   struct bp_location *bl;
12288
12289   /* Nothing to do if there's no specific exception to catch.  */
12290   if (c->excep_string.empty ())
12291     return;
12292
12293   /* Same if there are no locations... */
12294   if (c->loc == NULL)
12295     return;
12296
12297   /* Compute the condition expression in text form, from the specific
12298      expection we want to catch.  */
12299   std::string cond_string
12300     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12301
12302   /* Iterate over all the catchpoint's locations, and parse an
12303      expression for each.  */
12304   for (bl = c->loc; bl != NULL; bl = bl->next)
12305     {
12306       struct ada_catchpoint_location *ada_loc
12307         = (struct ada_catchpoint_location *) bl;
12308       expression_up exp;
12309
12310       if (!bl->shlib_disabled)
12311         {
12312           const char *s;
12313
12314           s = cond_string.c_str ();
12315           try
12316             {
12317               exp = parse_exp_1 (&s, bl->address,
12318                                  block_for_pc (bl->address),
12319                                  0);
12320             }
12321           catch (const gdb_exception_error &e)
12322             {
12323               warning (_("failed to reevaluate internal exception condition "
12324                          "for catchpoint %d: %s"),
12325                        c->number, e.what ());
12326             }
12327         }
12328
12329       ada_loc->excep_cond_expr = std::move (exp);
12330     }
12331 }
12332
12333 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12334    structure for all exception catchpoint kinds.  */
12335
12336 static struct bp_location *
12337 allocate_location_exception (struct breakpoint *self)
12338 {
12339   return new ada_catchpoint_location (self);
12340 }
12341
12342 /* Implement the RE_SET method in the breakpoint_ops structure for all
12343    exception catchpoint kinds.  */
12344
12345 static void
12346 re_set_exception (struct breakpoint *b)
12347 {
12348   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12349
12350   /* Call the base class's method.  This updates the catchpoint's
12351      locations.  */
12352   bkpt_breakpoint_ops.re_set (b);
12353
12354   /* Reparse the exception conditional expressions.  One for each
12355      location.  */
12356   create_excep_cond_exprs (c, c->m_kind);
12357 }
12358
12359 /* Returns true if we should stop for this breakpoint hit.  If the
12360    user specified a specific exception, we only want to cause a stop
12361    if the program thrown that exception.  */
12362
12363 static int
12364 should_stop_exception (const struct bp_location *bl)
12365 {
12366   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12367   const struct ada_catchpoint_location *ada_loc
12368     = (const struct ada_catchpoint_location *) bl;
12369   int stop;
12370
12371   struct internalvar *var = lookup_internalvar ("_ada_exception");
12372   if (c->m_kind == ada_catch_assert)
12373     clear_internalvar (var);
12374   else
12375     {
12376       try
12377         {
12378           const char *expr;
12379
12380           if (c->m_kind == ada_catch_handlers)
12381             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12382                     ".all.occurrence.id");
12383           else
12384             expr = "e";
12385
12386           struct value *exc = parse_and_eval (expr);
12387           set_internalvar (var, exc);
12388         }
12389       catch (const gdb_exception_error &ex)
12390         {
12391           clear_internalvar (var);
12392         }
12393     }
12394
12395   /* With no specific exception, should always stop.  */
12396   if (c->excep_string.empty ())
12397     return 1;
12398
12399   if (ada_loc->excep_cond_expr == NULL)
12400     {
12401       /* We will have a NULL expression if back when we were creating
12402          the expressions, this location's had failed to parse.  */
12403       return 1;
12404     }
12405
12406   stop = 1;
12407   try
12408     {
12409       struct value *mark;
12410
12411       mark = value_mark ();
12412       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12413       value_free_to_mark (mark);
12414     }
12415   catch (const gdb_exception &ex)
12416     {
12417       exception_fprintf (gdb_stderr, ex,
12418                          _("Error in testing exception condition:\n"));
12419     }
12420
12421   return stop;
12422 }
12423
12424 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12425    for all exception catchpoint kinds.  */
12426
12427 static void
12428 check_status_exception (bpstat bs)
12429 {
12430   bs->stop = should_stop_exception (bs->bp_location_at);
12431 }
12432
12433 /* Implement the PRINT_IT method in the breakpoint_ops structure
12434    for all exception catchpoint kinds.  */
12435
12436 static enum print_stop_action
12437 print_it_exception (bpstat bs)
12438 {
12439   struct ui_out *uiout = current_uiout;
12440   struct breakpoint *b = bs->breakpoint_at;
12441
12442   annotate_catchpoint (b->number);
12443
12444   if (uiout->is_mi_like_p ())
12445     {
12446       uiout->field_string ("reason",
12447                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12448       uiout->field_string ("disp", bpdisp_text (b->disposition));
12449     }
12450
12451   uiout->text (b->disposition == disp_del
12452                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12453   uiout->field_signed ("bkptno", b->number);
12454   uiout->text (", ");
12455
12456   /* ada_exception_name_addr relies on the selected frame being the
12457      current frame.  Need to do this here because this function may be
12458      called more than once when printing a stop, and below, we'll
12459      select the first frame past the Ada run-time (see
12460      ada_find_printable_frame).  */
12461   select_frame (get_current_frame ());
12462
12463   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12464   switch (c->m_kind)
12465     {
12466       case ada_catch_exception:
12467       case ada_catch_exception_unhandled:
12468       case ada_catch_handlers:
12469         {
12470           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12471           char exception_name[256];
12472
12473           if (addr != 0)
12474             {
12475               read_memory (addr, (gdb_byte *) exception_name,
12476                            sizeof (exception_name) - 1);
12477               exception_name [sizeof (exception_name) - 1] = '\0';
12478             }
12479           else
12480             {
12481               /* For some reason, we were unable to read the exception
12482                  name.  This could happen if the Runtime was compiled
12483                  without debugging info, for instance.  In that case,
12484                  just replace the exception name by the generic string
12485                  "exception" - it will read as "an exception" in the
12486                  notification we are about to print.  */
12487               memcpy (exception_name, "exception", sizeof ("exception"));
12488             }
12489           /* In the case of unhandled exception breakpoints, we print
12490              the exception name as "unhandled EXCEPTION_NAME", to make
12491              it clearer to the user which kind of catchpoint just got
12492              hit.  We used ui_out_text to make sure that this extra
12493              info does not pollute the exception name in the MI case.  */
12494           if (c->m_kind == ada_catch_exception_unhandled)
12495             uiout->text ("unhandled ");
12496           uiout->field_string ("exception-name", exception_name);
12497         }
12498         break;
12499       case ada_catch_assert:
12500         /* In this case, the name of the exception is not really
12501            important.  Just print "failed assertion" to make it clearer
12502            that his program just hit an assertion-failure catchpoint.
12503            We used ui_out_text because this info does not belong in
12504            the MI output.  */
12505         uiout->text ("failed assertion");
12506         break;
12507     }
12508
12509   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12510   if (exception_message != NULL)
12511     {
12512       uiout->text (" (");
12513       uiout->field_string ("exception-message", exception_message.get ());
12514       uiout->text (")");
12515     }
12516
12517   uiout->text (" at ");
12518   ada_find_printable_frame (get_current_frame ());
12519
12520   return PRINT_SRC_AND_LOC;
12521 }
12522
12523 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12524    for all exception catchpoint kinds.  */
12525
12526 static void
12527 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12528
12529   struct ui_out *uiout = current_uiout;
12530   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12531   struct value_print_options opts;
12532
12533   get_user_print_options (&opts);
12534
12535   if (opts.addressprint)
12536     uiout->field_skip ("addr");
12537
12538   annotate_field (5);
12539   switch (c->m_kind)
12540     {
12541       case ada_catch_exception:
12542         if (!c->excep_string.empty ())
12543           {
12544             std::string msg = string_printf (_("`%s' Ada exception"),
12545                                              c->excep_string.c_str ());
12546
12547             uiout->field_string ("what", msg);
12548           }
12549         else
12550           uiout->field_string ("what", "all Ada exceptions");
12551         
12552         break;
12553
12554       case ada_catch_exception_unhandled:
12555         uiout->field_string ("what", "unhandled Ada exceptions");
12556         break;
12557       
12558       case ada_catch_handlers:
12559         if (!c->excep_string.empty ())
12560           {
12561             uiout->field_fmt ("what",
12562                               _("`%s' Ada exception handlers"),
12563                               c->excep_string.c_str ());
12564           }
12565         else
12566           uiout->field_string ("what", "all Ada exceptions handlers");
12567         break;
12568
12569       case ada_catch_assert:
12570         uiout->field_string ("what", "failed Ada assertions");
12571         break;
12572
12573       default:
12574         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12575         break;
12576     }
12577 }
12578
12579 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12580    for all exception catchpoint kinds.  */
12581
12582 static void
12583 print_mention_exception (struct breakpoint *b)
12584 {
12585   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12586   struct ui_out *uiout = current_uiout;
12587
12588   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12589                                                  : _("Catchpoint "));
12590   uiout->field_signed ("bkptno", b->number);
12591   uiout->text (": ");
12592
12593   switch (c->m_kind)
12594     {
12595       case ada_catch_exception:
12596         if (!c->excep_string.empty ())
12597           {
12598             std::string info = string_printf (_("`%s' Ada exception"),
12599                                               c->excep_string.c_str ());
12600             uiout->text (info.c_str ());
12601           }
12602         else
12603           uiout->text (_("all Ada exceptions"));
12604         break;
12605
12606       case ada_catch_exception_unhandled:
12607         uiout->text (_("unhandled Ada exceptions"));
12608         break;
12609
12610       case ada_catch_handlers:
12611         if (!c->excep_string.empty ())
12612           {
12613             std::string info
12614               = string_printf (_("`%s' Ada exception handlers"),
12615                                c->excep_string.c_str ());
12616             uiout->text (info.c_str ());
12617           }
12618         else
12619           uiout->text (_("all Ada exceptions handlers"));
12620         break;
12621
12622       case ada_catch_assert:
12623         uiout->text (_("failed Ada assertions"));
12624         break;
12625
12626       default:
12627         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12628         break;
12629     }
12630 }
12631
12632 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12633    for all exception catchpoint kinds.  */
12634
12635 static void
12636 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12637 {
12638   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12639
12640   switch (c->m_kind)
12641     {
12642       case ada_catch_exception:
12643         fprintf_filtered (fp, "catch exception");
12644         if (!c->excep_string.empty ())
12645           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12646         break;
12647
12648       case ada_catch_exception_unhandled:
12649         fprintf_filtered (fp, "catch exception unhandled");
12650         break;
12651
12652       case ada_catch_handlers:
12653         fprintf_filtered (fp, "catch handlers");
12654         break;
12655
12656       case ada_catch_assert:
12657         fprintf_filtered (fp, "catch assert");
12658         break;
12659
12660       default:
12661         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12662     }
12663   print_recreate_thread (b, fp);
12664 }
12665
12666 /* Virtual tables for various breakpoint types.  */
12667 static struct breakpoint_ops catch_exception_breakpoint_ops;
12668 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12669 static struct breakpoint_ops catch_assert_breakpoint_ops;
12670 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12671
12672 /* See ada-lang.h.  */
12673
12674 bool
12675 is_ada_exception_catchpoint (breakpoint *bp)
12676 {
12677   return (bp->ops == &catch_exception_breakpoint_ops
12678           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12679           || bp->ops == &catch_assert_breakpoint_ops
12680           || bp->ops == &catch_handlers_breakpoint_ops);
12681 }
12682
12683 /* Split the arguments specified in a "catch exception" command.  
12684    Set EX to the appropriate catchpoint type.
12685    Set EXCEP_STRING to the name of the specific exception if
12686    specified by the user.
12687    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12688    "catch handlers" command.  False otherwise.
12689    If a condition is found at the end of the arguments, the condition
12690    expression is stored in COND_STRING (memory must be deallocated
12691    after use).  Otherwise COND_STRING is set to NULL.  */
12692
12693 static void
12694 catch_ada_exception_command_split (const char *args,
12695                                    bool is_catch_handlers_cmd,
12696                                    enum ada_exception_catchpoint_kind *ex,
12697                                    std::string *excep_string,
12698                                    std::string *cond_string)
12699 {
12700   std::string exception_name;
12701
12702   exception_name = extract_arg (&args);
12703   if (exception_name == "if")
12704     {
12705       /* This is not an exception name; this is the start of a condition
12706          expression for a catchpoint on all exceptions.  So, "un-get"
12707          this token, and set exception_name to NULL.  */
12708       exception_name.clear ();
12709       args -= 2;
12710     }
12711
12712   /* Check to see if we have a condition.  */
12713
12714   args = skip_spaces (args);
12715   if (startswith (args, "if")
12716       && (isspace (args[2]) || args[2] == '\0'))
12717     {
12718       args += 2;
12719       args = skip_spaces (args);
12720
12721       if (args[0] == '\0')
12722         error (_("Condition missing after `if' keyword"));
12723       *cond_string = args;
12724
12725       args += strlen (args);
12726     }
12727
12728   /* Check that we do not have any more arguments.  Anything else
12729      is unexpected.  */
12730
12731   if (args[0] != '\0')
12732     error (_("Junk at end of expression"));
12733
12734   if (is_catch_handlers_cmd)
12735     {
12736       /* Catch handling of exceptions.  */
12737       *ex = ada_catch_handlers;
12738       *excep_string = exception_name;
12739     }
12740   else if (exception_name.empty ())
12741     {
12742       /* Catch all exceptions.  */
12743       *ex = ada_catch_exception;
12744       excep_string->clear ();
12745     }
12746   else if (exception_name == "unhandled")
12747     {
12748       /* Catch unhandled exceptions.  */
12749       *ex = ada_catch_exception_unhandled;
12750       excep_string->clear ();
12751     }
12752   else
12753     {
12754       /* Catch a specific exception.  */
12755       *ex = ada_catch_exception;
12756       *excep_string = exception_name;
12757     }
12758 }
12759
12760 /* Return the name of the symbol on which we should break in order to
12761    implement a catchpoint of the EX kind.  */
12762
12763 static const char *
12764 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12765 {
12766   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12767
12768   gdb_assert (data->exception_info != NULL);
12769
12770   switch (ex)
12771     {
12772       case ada_catch_exception:
12773         return (data->exception_info->catch_exception_sym);
12774         break;
12775       case ada_catch_exception_unhandled:
12776         return (data->exception_info->catch_exception_unhandled_sym);
12777         break;
12778       case ada_catch_assert:
12779         return (data->exception_info->catch_assert_sym);
12780         break;
12781       case ada_catch_handlers:
12782         return (data->exception_info->catch_handlers_sym);
12783         break;
12784       default:
12785         internal_error (__FILE__, __LINE__,
12786                         _("unexpected catchpoint kind (%d)"), ex);
12787     }
12788 }
12789
12790 /* Return the breakpoint ops "virtual table" used for catchpoints
12791    of the EX kind.  */
12792
12793 static const struct breakpoint_ops *
12794 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12795 {
12796   switch (ex)
12797     {
12798       case ada_catch_exception:
12799         return (&catch_exception_breakpoint_ops);
12800         break;
12801       case ada_catch_exception_unhandled:
12802         return (&catch_exception_unhandled_breakpoint_ops);
12803         break;
12804       case ada_catch_assert:
12805         return (&catch_assert_breakpoint_ops);
12806         break;
12807       case ada_catch_handlers:
12808         return (&catch_handlers_breakpoint_ops);
12809         break;
12810       default:
12811         internal_error (__FILE__, __LINE__,
12812                         _("unexpected catchpoint kind (%d)"), ex);
12813     }
12814 }
12815
12816 /* Return the condition that will be used to match the current exception
12817    being raised with the exception that the user wants to catch.  This
12818    assumes that this condition is used when the inferior just triggered
12819    an exception catchpoint.
12820    EX: the type of catchpoints used for catching Ada exceptions.  */
12821
12822 static std::string
12823 ada_exception_catchpoint_cond_string (const char *excep_string,
12824                                       enum ada_exception_catchpoint_kind ex)
12825 {
12826   int i;
12827   bool is_standard_exc = false;
12828   std::string result;
12829
12830   if (ex == ada_catch_handlers)
12831     {
12832       /* For exception handlers catchpoints, the condition string does
12833          not use the same parameter as for the other exceptions.  */
12834       result = ("long_integer (GNAT_GCC_exception_Access"
12835                 "(gcc_exception).all.occurrence.id)");
12836     }
12837   else
12838     result = "long_integer (e)";
12839
12840   /* The standard exceptions are a special case.  They are defined in
12841      runtime units that have been compiled without debugging info; if
12842      EXCEP_STRING is the not-fully-qualified name of a standard
12843      exception (e.g. "constraint_error") then, during the evaluation
12844      of the condition expression, the symbol lookup on this name would
12845      *not* return this standard exception.  The catchpoint condition
12846      may then be set only on user-defined exceptions which have the
12847      same not-fully-qualified name (e.g. my_package.constraint_error).
12848
12849      To avoid this unexcepted behavior, these standard exceptions are
12850      systematically prefixed by "standard".  This means that "catch
12851      exception constraint_error" is rewritten into "catch exception
12852      standard.constraint_error".
12853
12854      If an exception named constraint_error is defined in another package of
12855      the inferior program, then the only way to specify this exception as a
12856      breakpoint condition is to use its fully-qualified named:
12857      e.g. my_package.constraint_error.  */
12858
12859   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12860     {
12861       if (strcmp (standard_exc [i], excep_string) == 0)
12862         {
12863           is_standard_exc = true;
12864           break;
12865         }
12866     }
12867
12868   result += " = ";
12869
12870   if (is_standard_exc)
12871     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12872   else
12873     string_appendf (result, "long_integer (&%s)", excep_string);
12874
12875   return result;
12876 }
12877
12878 /* Return the symtab_and_line that should be used to insert an exception
12879    catchpoint of the TYPE kind.
12880
12881    ADDR_STRING returns the name of the function where the real
12882    breakpoint that implements the catchpoints is set, depending on the
12883    type of catchpoint we need to create.  */
12884
12885 static struct symtab_and_line
12886 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12887                    std::string *addr_string, const struct breakpoint_ops **ops)
12888 {
12889   const char *sym_name;
12890   struct symbol *sym;
12891
12892   /* First, find out which exception support info to use.  */
12893   ada_exception_support_info_sniffer ();
12894
12895   /* Then lookup the function on which we will break in order to catch
12896      the Ada exceptions requested by the user.  */
12897   sym_name = ada_exception_sym_name (ex);
12898   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12899
12900   if (sym == NULL)
12901     error (_("Catchpoint symbol not found: %s"), sym_name);
12902
12903   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12904     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12905
12906   /* Set ADDR_STRING.  */
12907   *addr_string = sym_name;
12908
12909   /* Set OPS.  */
12910   *ops = ada_exception_breakpoint_ops (ex);
12911
12912   return find_function_start_sal (sym, 1);
12913 }
12914
12915 /* Create an Ada exception catchpoint.
12916
12917    EX_KIND is the kind of exception catchpoint to be created.
12918
12919    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12920    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12921    of the exception to which this catchpoint applies.
12922
12923    COND_STRING, if not empty, is the catchpoint condition.
12924
12925    TEMPFLAG, if nonzero, means that the underlying breakpoint
12926    should be temporary.
12927
12928    FROM_TTY is the usual argument passed to all commands implementations.  */
12929
12930 void
12931 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12932                                  enum ada_exception_catchpoint_kind ex_kind,
12933                                  const std::string &excep_string,
12934                                  const std::string &cond_string,
12935                                  int tempflag,
12936                                  int disabled,
12937                                  int from_tty)
12938 {
12939   std::string addr_string;
12940   const struct breakpoint_ops *ops = NULL;
12941   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12942
12943   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12944   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12945                                  ops, tempflag, disabled, from_tty);
12946   c->excep_string = excep_string;
12947   create_excep_cond_exprs (c.get (), ex_kind);
12948   if (!cond_string.empty ())
12949     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12950   install_breakpoint (0, std::move (c), 1);
12951 }
12952
12953 /* Implement the "catch exception" command.  */
12954
12955 static void
12956 catch_ada_exception_command (const char *arg_entry, int from_tty,
12957                              struct cmd_list_element *command)
12958 {
12959   const char *arg = arg_entry;
12960   struct gdbarch *gdbarch = get_current_arch ();
12961   int tempflag;
12962   enum ada_exception_catchpoint_kind ex_kind;
12963   std::string excep_string;
12964   std::string cond_string;
12965
12966   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12967
12968   if (!arg)
12969     arg = "";
12970   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12971                                      &cond_string);
12972   create_ada_exception_catchpoint (gdbarch, ex_kind,
12973                                    excep_string, cond_string,
12974                                    tempflag, 1 /* enabled */,
12975                                    from_tty);
12976 }
12977
12978 /* Implement the "catch handlers" command.  */
12979
12980 static void
12981 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12982                             struct cmd_list_element *command)
12983 {
12984   const char *arg = arg_entry;
12985   struct gdbarch *gdbarch = get_current_arch ();
12986   int tempflag;
12987   enum ada_exception_catchpoint_kind ex_kind;
12988   std::string excep_string;
12989   std::string cond_string;
12990
12991   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12992
12993   if (!arg)
12994     arg = "";
12995   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12996                                      &cond_string);
12997   create_ada_exception_catchpoint (gdbarch, ex_kind,
12998                                    excep_string, cond_string,
12999                                    tempflag, 1 /* enabled */,
13000                                    from_tty);
13001 }
13002
13003 /* Completion function for the Ada "catch" commands.  */
13004
13005 static void
13006 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
13007                      const char *text, const char *word)
13008 {
13009   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
13010
13011   for (const ada_exc_info &info : exceptions)
13012     {
13013       if (startswith (info.name, word))
13014         tracker.add_completion (make_unique_xstrdup (info.name));
13015     }
13016 }
13017
13018 /* Split the arguments specified in a "catch assert" command.
13019
13020    ARGS contains the command's arguments (or the empty string if
13021    no arguments were passed).
13022
13023    If ARGS contains a condition, set COND_STRING to that condition
13024    (the memory needs to be deallocated after use).  */
13025
13026 static void
13027 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13028 {
13029   args = skip_spaces (args);
13030
13031   /* Check whether a condition was provided.  */
13032   if (startswith (args, "if")
13033       && (isspace (args[2]) || args[2] == '\0'))
13034     {
13035       args += 2;
13036       args = skip_spaces (args);
13037       if (args[0] == '\0')
13038         error (_("condition missing after `if' keyword"));
13039       cond_string.assign (args);
13040     }
13041
13042   /* Otherwise, there should be no other argument at the end of
13043      the command.  */
13044   else if (args[0] != '\0')
13045     error (_("Junk at end of arguments."));
13046 }
13047
13048 /* Implement the "catch assert" command.  */
13049
13050 static void
13051 catch_assert_command (const char *arg_entry, int from_tty,
13052                       struct cmd_list_element *command)
13053 {
13054   const char *arg = arg_entry;
13055   struct gdbarch *gdbarch = get_current_arch ();
13056   int tempflag;
13057   std::string cond_string;
13058
13059   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13060
13061   if (!arg)
13062     arg = "";
13063   catch_ada_assert_command_split (arg, cond_string);
13064   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13065                                    "", cond_string,
13066                                    tempflag, 1 /* enabled */,
13067                                    from_tty);
13068 }
13069
13070 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13071
13072 static int
13073 ada_is_exception_sym (struct symbol *sym)
13074 {
13075   const char *type_name = SYMBOL_TYPE (sym)->name ();
13076
13077   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13078           && SYMBOL_CLASS (sym) != LOC_BLOCK
13079           && SYMBOL_CLASS (sym) != LOC_CONST
13080           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13081           && type_name != NULL && strcmp (type_name, "exception") == 0);
13082 }
13083
13084 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13085    Ada exception object.  This matches all exceptions except the ones
13086    defined by the Ada language.  */
13087
13088 static int
13089 ada_is_non_standard_exception_sym (struct symbol *sym)
13090 {
13091   int i;
13092
13093   if (!ada_is_exception_sym (sym))
13094     return 0;
13095
13096   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13097     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
13098       return 0;  /* A standard exception.  */
13099
13100   /* Numeric_Error is also a standard exception, so exclude it.
13101      See the STANDARD_EXC description for more details as to why
13102      this exception is not listed in that array.  */
13103   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
13104     return 0;
13105
13106   return 1;
13107 }
13108
13109 /* A helper function for std::sort, comparing two struct ada_exc_info
13110    objects.
13111
13112    The comparison is determined first by exception name, and then
13113    by exception address.  */
13114
13115 bool
13116 ada_exc_info::operator< (const ada_exc_info &other) const
13117 {
13118   int result;
13119
13120   result = strcmp (name, other.name);
13121   if (result < 0)
13122     return true;
13123   if (result == 0 && addr < other.addr)
13124     return true;
13125   return false;
13126 }
13127
13128 bool
13129 ada_exc_info::operator== (const ada_exc_info &other) const
13130 {
13131   return addr == other.addr && strcmp (name, other.name) == 0;
13132 }
13133
13134 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13135    routine, but keeping the first SKIP elements untouched.
13136
13137    All duplicates are also removed.  */
13138
13139 static void
13140 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13141                                       int skip)
13142 {
13143   std::sort (exceptions->begin () + skip, exceptions->end ());
13144   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13145                      exceptions->end ());
13146 }
13147
13148 /* Add all exceptions defined by the Ada standard whose name match
13149    a regular expression.
13150
13151    If PREG is not NULL, then this regexp_t object is used to
13152    perform the symbol name matching.  Otherwise, no name-based
13153    filtering is performed.
13154
13155    EXCEPTIONS is a vector of exceptions to which matching exceptions
13156    gets pushed.  */
13157
13158 static void
13159 ada_add_standard_exceptions (compiled_regex *preg,
13160                              std::vector<ada_exc_info> *exceptions)
13161 {
13162   int i;
13163
13164   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13165     {
13166       if (preg == NULL
13167           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13168         {
13169           struct bound_minimal_symbol msymbol
13170             = ada_lookup_simple_minsym (standard_exc[i]);
13171
13172           if (msymbol.minsym != NULL)
13173             {
13174               struct ada_exc_info info
13175                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13176
13177               exceptions->push_back (info);
13178             }
13179         }
13180     }
13181 }
13182
13183 /* Add all Ada exceptions defined locally and accessible from the given
13184    FRAME.
13185
13186    If PREG is not NULL, then this regexp_t object is used to
13187    perform the symbol name matching.  Otherwise, no name-based
13188    filtering is performed.
13189
13190    EXCEPTIONS is a vector of exceptions to which matching exceptions
13191    gets pushed.  */
13192
13193 static void
13194 ada_add_exceptions_from_frame (compiled_regex *preg,
13195                                struct frame_info *frame,
13196                                std::vector<ada_exc_info> *exceptions)
13197 {
13198   const struct block *block = get_frame_block (frame, 0);
13199
13200   while (block != 0)
13201     {
13202       struct block_iterator iter;
13203       struct symbol *sym;
13204
13205       ALL_BLOCK_SYMBOLS (block, iter, sym)
13206         {
13207           switch (SYMBOL_CLASS (sym))
13208             {
13209             case LOC_TYPEDEF:
13210             case LOC_BLOCK:
13211             case LOC_CONST:
13212               break;
13213             default:
13214               if (ada_is_exception_sym (sym))
13215                 {
13216                   struct ada_exc_info info = {sym->print_name (),
13217                                               SYMBOL_VALUE_ADDRESS (sym)};
13218
13219                   exceptions->push_back (info);
13220                 }
13221             }
13222         }
13223       if (BLOCK_FUNCTION (block) != NULL)
13224         break;
13225       block = BLOCK_SUPERBLOCK (block);
13226     }
13227 }
13228
13229 /* Return true if NAME matches PREG or if PREG is NULL.  */
13230
13231 static bool
13232 name_matches_regex (const char *name, compiled_regex *preg)
13233 {
13234   return (preg == NULL
13235           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
13236 }
13237
13238 /* Add all exceptions defined globally whose name name match
13239    a regular expression, excluding standard exceptions.
13240
13241    The reason we exclude standard exceptions is that they need
13242    to be handled separately: Standard exceptions are defined inside
13243    a runtime unit which is normally not compiled with debugging info,
13244    and thus usually do not show up in our symbol search.  However,
13245    if the unit was in fact built with debugging info, we need to
13246    exclude them because they would duplicate the entry we found
13247    during the special loop that specifically searches for those
13248    standard exceptions.
13249
13250    If PREG is not NULL, then this regexp_t object is used to
13251    perform the symbol name matching.  Otherwise, no name-based
13252    filtering is performed.
13253
13254    EXCEPTIONS is a vector of exceptions to which matching exceptions
13255    gets pushed.  */
13256
13257 static void
13258 ada_add_global_exceptions (compiled_regex *preg,
13259                            std::vector<ada_exc_info> *exceptions)
13260 {
13261   /* In Ada, the symbol "search name" is a linkage name, whereas the
13262      regular expression used to do the matching refers to the natural
13263      name.  So match against the decoded name.  */
13264   expand_symtabs_matching (NULL,
13265                            lookup_name_info::match_any (),
13266                            [&] (const char *search_name)
13267                            {
13268                              std::string decoded = ada_decode (search_name);
13269                              return name_matches_regex (decoded.c_str (), preg);
13270                            },
13271                            NULL,
13272                            VARIABLES_DOMAIN);
13273
13274   for (objfile *objfile : current_program_space->objfiles ())
13275     {
13276       for (compunit_symtab *s : objfile->compunits ())
13277         {
13278           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13279           int i;
13280
13281           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13282             {
13283               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13284               struct block_iterator iter;
13285               struct symbol *sym;
13286
13287               ALL_BLOCK_SYMBOLS (b, iter, sym)
13288                 if (ada_is_non_standard_exception_sym (sym)
13289                     && name_matches_regex (sym->natural_name (), preg))
13290                   {
13291                     struct ada_exc_info info
13292                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13293
13294                     exceptions->push_back (info);
13295                   }
13296             }
13297         }
13298     }
13299 }
13300
13301 /* Implements ada_exceptions_list with the regular expression passed
13302    as a regex_t, rather than a string.
13303
13304    If not NULL, PREG is used to filter out exceptions whose names
13305    do not match.  Otherwise, all exceptions are listed.  */
13306
13307 static std::vector<ada_exc_info>
13308 ada_exceptions_list_1 (compiled_regex *preg)
13309 {
13310   std::vector<ada_exc_info> result;
13311   int prev_len;
13312
13313   /* First, list the known standard exceptions.  These exceptions
13314      need to be handled separately, as they are usually defined in
13315      runtime units that have been compiled without debugging info.  */
13316
13317   ada_add_standard_exceptions (preg, &result);
13318
13319   /* Next, find all exceptions whose scope is local and accessible
13320      from the currently selected frame.  */
13321
13322   if (has_stack_frames ())
13323     {
13324       prev_len = result.size ();
13325       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13326                                      &result);
13327       if (result.size () > prev_len)
13328         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13329     }
13330
13331   /* Add all exceptions whose scope is global.  */
13332
13333   prev_len = result.size ();
13334   ada_add_global_exceptions (preg, &result);
13335   if (result.size () > prev_len)
13336     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13337
13338   return result;
13339 }
13340
13341 /* Return a vector of ada_exc_info.
13342
13343    If REGEXP is NULL, all exceptions are included in the result.
13344    Otherwise, it should contain a valid regular expression,
13345    and only the exceptions whose names match that regular expression
13346    are included in the result.
13347
13348    The exceptions are sorted in the following order:
13349      - Standard exceptions (defined by the Ada language), in
13350        alphabetical order;
13351      - Exceptions only visible from the current frame, in
13352        alphabetical order;
13353      - Exceptions whose scope is global, in alphabetical order.  */
13354
13355 std::vector<ada_exc_info>
13356 ada_exceptions_list (const char *regexp)
13357 {
13358   if (regexp == NULL)
13359     return ada_exceptions_list_1 (NULL);
13360
13361   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13362   return ada_exceptions_list_1 (&reg);
13363 }
13364
13365 /* Implement the "info exceptions" command.  */
13366
13367 static void
13368 info_exceptions_command (const char *regexp, int from_tty)
13369 {
13370   struct gdbarch *gdbarch = get_current_arch ();
13371
13372   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13373
13374   if (regexp != NULL)
13375     printf_filtered
13376       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13377   else
13378     printf_filtered (_("All defined Ada exceptions:\n"));
13379
13380   for (const ada_exc_info &info : exceptions)
13381     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13382 }
13383
13384                                 /* Operators */
13385 /* Information about operators given special treatment in functions
13386    below.  */
13387 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13388
13389 #define ADA_OPERATORS \
13390     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13391     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13392     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13393     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13394     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13395     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13396     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13397     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13398     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13399     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13400     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13401     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13402     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13403     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13404     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13405     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13406     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13407     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13408     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13409
13410 static void
13411 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13412                      int *argsp)
13413 {
13414   switch (exp->elts[pc - 1].opcode)
13415     {
13416     default:
13417       operator_length_standard (exp, pc, oplenp, argsp);
13418       break;
13419
13420 #define OP_DEFN(op, len, args, binop) \
13421     case op: *oplenp = len; *argsp = args; break;
13422       ADA_OPERATORS;
13423 #undef OP_DEFN
13424
13425     case OP_AGGREGATE:
13426       *oplenp = 3;
13427       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13428       break;
13429
13430     case OP_CHOICES:
13431       *oplenp = 3;
13432       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13433       break;
13434     }
13435 }
13436
13437 /* Implementation of the exp_descriptor method operator_check.  */
13438
13439 static int
13440 ada_operator_check (struct expression *exp, int pos,
13441                     int (*objfile_func) (struct objfile *objfile, void *data),
13442                     void *data)
13443 {
13444   const union exp_element *const elts = exp->elts;
13445   struct type *type = NULL;
13446
13447   switch (elts[pos].opcode)
13448     {
13449       case UNOP_IN_RANGE:
13450       case UNOP_QUAL:
13451         type = elts[pos + 1].type;
13452         break;
13453
13454       default:
13455         return operator_check_standard (exp, pos, objfile_func, data);
13456     }
13457
13458   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13459
13460   if (type && TYPE_OBJFILE (type)
13461       && (*objfile_func) (TYPE_OBJFILE (type), data))
13462     return 1;
13463
13464   return 0;
13465 }
13466
13467 static const char *
13468 ada_op_name (enum exp_opcode opcode)
13469 {
13470   switch (opcode)
13471     {
13472     default:
13473       return op_name_standard (opcode);
13474
13475 #define OP_DEFN(op, len, args, binop) case op: return #op;
13476       ADA_OPERATORS;
13477 #undef OP_DEFN
13478
13479     case OP_AGGREGATE:
13480       return "OP_AGGREGATE";
13481     case OP_CHOICES:
13482       return "OP_CHOICES";
13483     case OP_NAME:
13484       return "OP_NAME";
13485     }
13486 }
13487
13488 /* As for operator_length, but assumes PC is pointing at the first
13489    element of the operator, and gives meaningful results only for the 
13490    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13491
13492 static void
13493 ada_forward_operator_length (struct expression *exp, int pc,
13494                              int *oplenp, int *argsp)
13495 {
13496   switch (exp->elts[pc].opcode)
13497     {
13498     default:
13499       *oplenp = *argsp = 0;
13500       break;
13501
13502 #define OP_DEFN(op, len, args, binop) \
13503     case op: *oplenp = len; *argsp = args; break;
13504       ADA_OPERATORS;
13505 #undef OP_DEFN
13506
13507     case OP_AGGREGATE:
13508       *oplenp = 3;
13509       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13510       break;
13511
13512     case OP_CHOICES:
13513       *oplenp = 3;
13514       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13515       break;
13516
13517     case OP_STRING:
13518     case OP_NAME:
13519       {
13520         int len = longest_to_int (exp->elts[pc + 1].longconst);
13521
13522         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13523         *argsp = 0;
13524         break;
13525       }
13526     }
13527 }
13528
13529 static int
13530 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13531 {
13532   enum exp_opcode op = exp->elts[elt].opcode;
13533   int oplen, nargs;
13534   int pc = elt;
13535   int i;
13536
13537   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13538
13539   switch (op)
13540     {
13541       /* Ada attributes ('Foo).  */
13542     case OP_ATR_FIRST:
13543     case OP_ATR_LAST:
13544     case OP_ATR_LENGTH:
13545     case OP_ATR_IMAGE:
13546     case OP_ATR_MAX:
13547     case OP_ATR_MIN:
13548     case OP_ATR_MODULUS:
13549     case OP_ATR_POS:
13550     case OP_ATR_SIZE:
13551     case OP_ATR_TAG:
13552     case OP_ATR_VAL:
13553       break;
13554
13555     case UNOP_IN_RANGE:
13556     case UNOP_QUAL:
13557       /* XXX: gdb_sprint_host_address, type_sprint */
13558       fprintf_filtered (stream, _("Type @"));
13559       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13560       fprintf_filtered (stream, " (");
13561       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13562       fprintf_filtered (stream, ")");
13563       break;
13564     case BINOP_IN_BOUNDS:
13565       fprintf_filtered (stream, " (%d)",
13566                         longest_to_int (exp->elts[pc + 2].longconst));
13567       break;
13568     case TERNOP_IN_RANGE:
13569       break;
13570
13571     case OP_AGGREGATE:
13572     case OP_OTHERS:
13573     case OP_DISCRETE_RANGE:
13574     case OP_POSITIONAL:
13575     case OP_CHOICES:
13576       break;
13577
13578     case OP_NAME:
13579     case OP_STRING:
13580       {
13581         char *name = &exp->elts[elt + 2].string;
13582         int len = longest_to_int (exp->elts[elt + 1].longconst);
13583
13584         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13585         break;
13586       }
13587
13588     default:
13589       return dump_subexp_body_standard (exp, stream, elt);
13590     }
13591
13592   elt += oplen;
13593   for (i = 0; i < nargs; i += 1)
13594     elt = dump_subexp (exp, stream, elt);
13595
13596   return elt;
13597 }
13598
13599 /* The Ada extension of print_subexp (q.v.).  */
13600
13601 static void
13602 ada_print_subexp (struct expression *exp, int *pos,
13603                   struct ui_file *stream, enum precedence prec)
13604 {
13605   int oplen, nargs, i;
13606   int pc = *pos;
13607   enum exp_opcode op = exp->elts[pc].opcode;
13608
13609   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13610
13611   *pos += oplen;
13612   switch (op)
13613     {
13614     default:
13615       *pos -= oplen;
13616       print_subexp_standard (exp, pos, stream, prec);
13617       return;
13618
13619     case OP_VAR_VALUE:
13620       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13621       return;
13622
13623     case BINOP_IN_BOUNDS:
13624       /* XXX: sprint_subexp */
13625       print_subexp (exp, pos, stream, PREC_SUFFIX);
13626       fputs_filtered (" in ", stream);
13627       print_subexp (exp, pos, stream, PREC_SUFFIX);
13628       fputs_filtered ("'range", stream);
13629       if (exp->elts[pc + 1].longconst > 1)
13630         fprintf_filtered (stream, "(%ld)",
13631                           (long) exp->elts[pc + 1].longconst);
13632       return;
13633
13634     case TERNOP_IN_RANGE:
13635       if (prec >= PREC_EQUAL)
13636         fputs_filtered ("(", stream);
13637       /* XXX: sprint_subexp */
13638       print_subexp (exp, pos, stream, PREC_SUFFIX);
13639       fputs_filtered (" in ", stream);
13640       print_subexp (exp, pos, stream, PREC_EQUAL);
13641       fputs_filtered (" .. ", stream);
13642       print_subexp (exp, pos, stream, PREC_EQUAL);
13643       if (prec >= PREC_EQUAL)
13644         fputs_filtered (")", stream);
13645       return;
13646
13647     case OP_ATR_FIRST:
13648     case OP_ATR_LAST:
13649     case OP_ATR_LENGTH:
13650     case OP_ATR_IMAGE:
13651     case OP_ATR_MAX:
13652     case OP_ATR_MIN:
13653     case OP_ATR_MODULUS:
13654     case OP_ATR_POS:
13655     case OP_ATR_SIZE:
13656     case OP_ATR_TAG:
13657     case OP_ATR_VAL:
13658       if (exp->elts[*pos].opcode == OP_TYPE)
13659         {
13660           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13661             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13662                            &type_print_raw_options);
13663           *pos += 3;
13664         }
13665       else
13666         print_subexp (exp, pos, stream, PREC_SUFFIX);
13667       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13668       if (nargs > 1)
13669         {
13670           int tem;
13671
13672           for (tem = 1; tem < nargs; tem += 1)
13673             {
13674               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13675               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13676             }
13677           fputs_filtered (")", stream);
13678         }
13679       return;
13680
13681     case UNOP_QUAL:
13682       type_print (exp->elts[pc + 1].type, "", stream, 0);
13683       fputs_filtered ("'(", stream);
13684       print_subexp (exp, pos, stream, PREC_PREFIX);
13685       fputs_filtered (")", stream);
13686       return;
13687
13688     case UNOP_IN_RANGE:
13689       /* XXX: sprint_subexp */
13690       print_subexp (exp, pos, stream, PREC_SUFFIX);
13691       fputs_filtered (" in ", stream);
13692       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13693                      &type_print_raw_options);
13694       return;
13695
13696     case OP_DISCRETE_RANGE:
13697       print_subexp (exp, pos, stream, PREC_SUFFIX);
13698       fputs_filtered ("..", stream);
13699       print_subexp (exp, pos, stream, PREC_SUFFIX);
13700       return;
13701
13702     case OP_OTHERS:
13703       fputs_filtered ("others => ", stream);
13704       print_subexp (exp, pos, stream, PREC_SUFFIX);
13705       return;
13706
13707     case OP_CHOICES:
13708       for (i = 0; i < nargs-1; i += 1)
13709         {
13710           if (i > 0)
13711             fputs_filtered ("|", stream);
13712           print_subexp (exp, pos, stream, PREC_SUFFIX);
13713         }
13714       fputs_filtered (" => ", stream);
13715       print_subexp (exp, pos, stream, PREC_SUFFIX);
13716       return;
13717       
13718     case OP_POSITIONAL:
13719       print_subexp (exp, pos, stream, PREC_SUFFIX);
13720       return;
13721
13722     case OP_AGGREGATE:
13723       fputs_filtered ("(", stream);
13724       for (i = 0; i < nargs; i += 1)
13725         {
13726           if (i > 0)
13727             fputs_filtered (", ", stream);
13728           print_subexp (exp, pos, stream, PREC_SUFFIX);
13729         }
13730       fputs_filtered (")", stream);
13731       return;
13732     }
13733 }
13734
13735 /* Table mapping opcodes into strings for printing operators
13736    and precedences of the operators.  */
13737
13738 static const struct op_print ada_op_print_tab[] = {
13739   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13740   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13741   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13742   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13743   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13744   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13745   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13746   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13747   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13748   {">=", BINOP_GEQ, PREC_ORDER, 0},
13749   {">", BINOP_GTR, PREC_ORDER, 0},
13750   {"<", BINOP_LESS, PREC_ORDER, 0},
13751   {">>", BINOP_RSH, PREC_SHIFT, 0},
13752   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13753   {"+", BINOP_ADD, PREC_ADD, 0},
13754   {"-", BINOP_SUB, PREC_ADD, 0},
13755   {"&", BINOP_CONCAT, PREC_ADD, 0},
13756   {"*", BINOP_MUL, PREC_MUL, 0},
13757   {"/", BINOP_DIV, PREC_MUL, 0},
13758   {"rem", BINOP_REM, PREC_MUL, 0},
13759   {"mod", BINOP_MOD, PREC_MUL, 0},
13760   {"**", BINOP_EXP, PREC_REPEAT, 0},
13761   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13762   {"-", UNOP_NEG, PREC_PREFIX, 0},
13763   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13764   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13765   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13766   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13767   {".all", UNOP_IND, PREC_SUFFIX, 1},
13768   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13769   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13770   {NULL, OP_NULL, PREC_SUFFIX, 0}
13771 };
13772 \f
13773 enum ada_primitive_types {
13774   ada_primitive_type_int,
13775   ada_primitive_type_long,
13776   ada_primitive_type_short,
13777   ada_primitive_type_char,
13778   ada_primitive_type_float,
13779   ada_primitive_type_double,
13780   ada_primitive_type_void,
13781   ada_primitive_type_long_long,
13782   ada_primitive_type_long_double,
13783   ada_primitive_type_natural,
13784   ada_primitive_type_positive,
13785   ada_primitive_type_system_address,
13786   ada_primitive_type_storage_offset,
13787   nr_ada_primitive_types
13788 };
13789
13790 static void
13791 ada_language_arch_info (struct gdbarch *gdbarch,
13792                         struct language_arch_info *lai)
13793 {
13794   const struct builtin_type *builtin = builtin_type (gdbarch);
13795
13796   lai->primitive_type_vector
13797     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13798                               struct type *);
13799
13800   lai->primitive_type_vector [ada_primitive_type_int]
13801     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13802                          0, "integer");
13803   lai->primitive_type_vector [ada_primitive_type_long]
13804     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13805                          0, "long_integer");
13806   lai->primitive_type_vector [ada_primitive_type_short]
13807     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13808                          0, "short_integer");
13809   lai->string_char_type
13810     = lai->primitive_type_vector [ada_primitive_type_char]
13811     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13812   lai->primitive_type_vector [ada_primitive_type_float]
13813     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
13814                        "float", gdbarch_float_format (gdbarch));
13815   lai->primitive_type_vector [ada_primitive_type_double]
13816     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
13817                        "long_float", gdbarch_double_format (gdbarch));
13818   lai->primitive_type_vector [ada_primitive_type_long_long]
13819     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
13820                          0, "long_long_integer");
13821   lai->primitive_type_vector [ada_primitive_type_long_double]
13822     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
13823                        "long_long_float", gdbarch_long_double_format (gdbarch));
13824   lai->primitive_type_vector [ada_primitive_type_natural]
13825     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13826                          0, "natural");
13827   lai->primitive_type_vector [ada_primitive_type_positive]
13828     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13829                          0, "positive");
13830   lai->primitive_type_vector [ada_primitive_type_void]
13831     = builtin->builtin_void;
13832
13833   lai->primitive_type_vector [ada_primitive_type_system_address]
13834     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
13835                                       "void"));
13836   lai->primitive_type_vector [ada_primitive_type_system_address]
13837     ->set_name ("system__address");
13838
13839   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
13840      type.  This is a signed integral type whose size is the same as
13841      the size of addresses.  */
13842   {
13843     unsigned int addr_length = TYPE_LENGTH
13844       (lai->primitive_type_vector [ada_primitive_type_system_address]);
13845
13846     lai->primitive_type_vector [ada_primitive_type_storage_offset]
13847       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
13848                            "storage_offset");
13849   }
13850
13851   lai->bool_type_symbol = NULL;
13852   lai->bool_type_default = builtin->builtin_bool;
13853 }
13854 \f
13855                                 /* Language vector */
13856
13857 /* Not really used, but needed in the ada_language_defn.  */
13858
13859 static void
13860 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13861 {
13862   ada_emit_char (c, type, stream, quoter, 1);
13863 }
13864
13865 static int
13866 parse (struct parser_state *ps)
13867 {
13868   warnings_issued = 0;
13869   return ada_parse (ps);
13870 }
13871
13872 static const struct exp_descriptor ada_exp_descriptor = {
13873   ada_print_subexp,
13874   ada_operator_length,
13875   ada_operator_check,
13876   ada_op_name,
13877   ada_dump_subexp_body,
13878   ada_evaluate_subexp
13879 };
13880
13881 /* symbol_name_matcher_ftype adapter for wild_match.  */
13882
13883 static bool
13884 do_wild_match (const char *symbol_search_name,
13885                const lookup_name_info &lookup_name,
13886                completion_match_result *comp_match_res)
13887 {
13888   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13889 }
13890
13891 /* symbol_name_matcher_ftype adapter for full_match.  */
13892
13893 static bool
13894 do_full_match (const char *symbol_search_name,
13895                const lookup_name_info &lookup_name,
13896                completion_match_result *comp_match_res)
13897 {
13898   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13899 }
13900
13901 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13902
13903 static bool
13904 do_exact_match (const char *symbol_search_name,
13905                 const lookup_name_info &lookup_name,
13906                 completion_match_result *comp_match_res)
13907 {
13908   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13909 }
13910
13911 /* Build the Ada lookup name for LOOKUP_NAME.  */
13912
13913 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13914 {
13915   gdb::string_view user_name = lookup_name.name ();
13916
13917   if (user_name[0] == '<')
13918     {
13919       if (user_name.back () == '>')
13920         m_encoded_name
13921           = user_name.substr (1, user_name.size () - 2).to_string ();
13922       else
13923         m_encoded_name
13924           = user_name.substr (1, user_name.size () - 1).to_string ();
13925       m_encoded_p = true;
13926       m_verbatim_p = true;
13927       m_wild_match_p = false;
13928       m_standard_p = false;
13929     }
13930   else
13931     {
13932       m_verbatim_p = false;
13933
13934       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13935
13936       if (!m_encoded_p)
13937         {
13938           const char *folded = ada_fold_name (user_name);
13939           const char *encoded = ada_encode_1 (folded, false);
13940           if (encoded != NULL)
13941             m_encoded_name = encoded;
13942           else
13943             m_encoded_name = user_name.to_string ();
13944         }
13945       else
13946         m_encoded_name = user_name.to_string ();
13947
13948       /* Handle the 'package Standard' special case.  See description
13949          of m_standard_p.  */
13950       if (startswith (m_encoded_name.c_str (), "standard__"))
13951         {
13952           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13953           m_standard_p = true;
13954         }
13955       else
13956         m_standard_p = false;
13957
13958       /* If the name contains a ".", then the user is entering a fully
13959          qualified entity name, and the match must not be done in wild
13960          mode.  Similarly, if the user wants to complete what looks
13961          like an encoded name, the match must not be done in wild
13962          mode.  Also, in the standard__ special case always do
13963          non-wild matching.  */
13964       m_wild_match_p
13965         = (lookup_name.match_type () != symbol_name_match_type::FULL
13966            && !m_encoded_p
13967            && !m_standard_p
13968            && user_name.find ('.') == std::string::npos);
13969     }
13970 }
13971
13972 /* symbol_name_matcher_ftype method for Ada.  This only handles
13973    completion mode.  */
13974
13975 static bool
13976 ada_symbol_name_matches (const char *symbol_search_name,
13977                          const lookup_name_info &lookup_name,
13978                          completion_match_result *comp_match_res)
13979 {
13980   return lookup_name.ada ().matches (symbol_search_name,
13981                                      lookup_name.match_type (),
13982                                      comp_match_res);
13983 }
13984
13985 /* A name matcher that matches the symbol name exactly, with
13986    strcmp.  */
13987
13988 static bool
13989 literal_symbol_name_matcher (const char *symbol_search_name,
13990                              const lookup_name_info &lookup_name,
13991                              completion_match_result *comp_match_res)
13992 {
13993   gdb::string_view name_view = lookup_name.name ();
13994
13995   if (lookup_name.completion_mode ()
13996       ? (strncmp (symbol_search_name, name_view.data (),
13997                   name_view.size ()) == 0)
13998       : symbol_search_name == name_view)
13999     {
14000       if (comp_match_res != NULL)
14001         comp_match_res->set_match (symbol_search_name);
14002       return true;
14003     }
14004   else
14005     return false;
14006 }
14007
14008 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14009    Ada.  */
14010
14011 static symbol_name_matcher_ftype *
14012 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14013 {
14014   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14015     return literal_symbol_name_matcher;
14016
14017   if (lookup_name.completion_mode ())
14018     return ada_symbol_name_matches;
14019   else
14020     {
14021       if (lookup_name.ada ().wild_match_p ())
14022         return do_wild_match;
14023       else if (lookup_name.ada ().verbatim_p ())
14024         return do_exact_match;
14025       else
14026         return do_full_match;
14027     }
14028 }
14029
14030 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14031
14032 static struct value *
14033 ada_read_var_value (struct symbol *var, const struct block *var_block,
14034                     struct frame_info *frame)
14035 {
14036   /* The only case where default_read_var_value is not sufficient
14037      is when VAR is a renaming...  */
14038   if (frame != nullptr)
14039     {
14040       const struct block *frame_block = get_frame_block (frame, NULL);
14041       if (frame_block != nullptr && ada_is_renaming_symbol (var))
14042         return ada_read_renaming_var_value (var, frame_block);
14043     }
14044
14045   /* This is a typical case where we expect the default_read_var_value
14046      function to work.  */
14047   return default_read_var_value (var, var_block, frame);
14048 }
14049
14050 static const char *ada_extensions[] =
14051 {
14052   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14053 };
14054
14055 extern const struct language_defn ada_language_defn = {
14056   "ada",                        /* Language name */
14057   "Ada",
14058   language_ada,
14059   range_check_off,
14060   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14061                                    that's not quite what this means.  */
14062   array_row_major,
14063   macro_expansion_no,
14064   ada_extensions,
14065   &ada_exp_descriptor,
14066   parse,
14067   resolve,
14068   ada_printchar,                /* Print a character constant */
14069   ada_printstr,                 /* Function to print string constant */
14070   emit_char,                    /* Function to print single char (not used) */
14071   ada_print_type,               /* Print a type using appropriate syntax */
14072   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14073   ada_value_print_inner,        /* la_value_print_inner */
14074   ada_value_print,              /* Print a top-level value */
14075   ada_read_var_value,           /* la_read_var_value */
14076   NULL,                         /* Language specific skip_trampoline */
14077   NULL,                         /* name_of_this */
14078   true,                         /* la_store_sym_names_in_linkage_form_p */
14079   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14080   basic_lookup_transparent_type,        /* lookup_transparent_type */
14081   ada_la_decode,                /* Language specific symbol demangler */
14082   ada_sniff_from_mangled_name,
14083   NULL,                         /* Language specific
14084                                    class_name_from_physname */
14085   ada_op_print_tab,             /* expression operators for printing */
14086   0,                            /* c-style arrays */
14087   1,                            /* String lower bound */
14088   ada_get_gdb_completer_word_break_characters,
14089   ada_collect_symbol_completion_matches,
14090   ada_language_arch_info,
14091   ada_print_array_index,
14092   default_pass_by_reference,
14093   ada_watch_location_expression,
14094   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14095   ada_iterate_over_symbols,
14096   default_search_name_hash,
14097   &ada_varobj_ops,
14098   NULL,
14099   NULL,
14100   ada_is_string_type,
14101   "(...)"                       /* la_struct_too_deep_ellipsis */
14102 };
14103
14104 /* Command-list for the "set/show ada" prefix command.  */
14105 static struct cmd_list_element *set_ada_list;
14106 static struct cmd_list_element *show_ada_list;
14107
14108 static void
14109 initialize_ada_catchpoint_ops (void)
14110 {
14111   struct breakpoint_ops *ops;
14112
14113   initialize_breakpoint_ops ();
14114
14115   ops = &catch_exception_breakpoint_ops;
14116   *ops = bkpt_breakpoint_ops;
14117   ops->allocate_location = allocate_location_exception;
14118   ops->re_set = re_set_exception;
14119   ops->check_status = check_status_exception;
14120   ops->print_it = print_it_exception;
14121   ops->print_one = print_one_exception;
14122   ops->print_mention = print_mention_exception;
14123   ops->print_recreate = print_recreate_exception;
14124
14125   ops = &catch_exception_unhandled_breakpoint_ops;
14126   *ops = bkpt_breakpoint_ops;
14127   ops->allocate_location = allocate_location_exception;
14128   ops->re_set = re_set_exception;
14129   ops->check_status = check_status_exception;
14130   ops->print_it = print_it_exception;
14131   ops->print_one = print_one_exception;
14132   ops->print_mention = print_mention_exception;
14133   ops->print_recreate = print_recreate_exception;
14134
14135   ops = &catch_assert_breakpoint_ops;
14136   *ops = bkpt_breakpoint_ops;
14137   ops->allocate_location = allocate_location_exception;
14138   ops->re_set = re_set_exception;
14139   ops->check_status = check_status_exception;
14140   ops->print_it = print_it_exception;
14141   ops->print_one = print_one_exception;
14142   ops->print_mention = print_mention_exception;
14143   ops->print_recreate = print_recreate_exception;
14144
14145   ops = &catch_handlers_breakpoint_ops;
14146   *ops = bkpt_breakpoint_ops;
14147   ops->allocate_location = allocate_location_exception;
14148   ops->re_set = re_set_exception;
14149   ops->check_status = check_status_exception;
14150   ops->print_it = print_it_exception;
14151   ops->print_one = print_one_exception;
14152   ops->print_mention = print_mention_exception;
14153   ops->print_recreate = print_recreate_exception;
14154 }
14155
14156 /* This module's 'new_objfile' observer.  */
14157
14158 static void
14159 ada_new_objfile_observer (struct objfile *objfile)
14160 {
14161   ada_clear_symbol_cache ();
14162 }
14163
14164 /* This module's 'free_objfile' observer.  */
14165
14166 static void
14167 ada_free_objfile_observer (struct objfile *objfile)
14168 {
14169   ada_clear_symbol_cache ();
14170 }
14171
14172 void _initialize_ada_language ();
14173 void
14174 _initialize_ada_language ()
14175 {
14176   initialize_ada_catchpoint_ops ();
14177
14178   add_basic_prefix_cmd ("ada", no_class,
14179                         _("Prefix command for changing Ada-specific settings."),
14180                         &set_ada_list, "set ada ", 0, &setlist);
14181
14182   add_show_prefix_cmd ("ada", no_class,
14183                        _("Generic command for showing Ada-specific settings."),
14184                        &show_ada_list, "show ada ", 0, &showlist);
14185
14186   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14187                            &trust_pad_over_xvs, _("\
14188 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14189 Show whether an optimization trusting PAD types over XVS types is activated."),
14190                            _("\
14191 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14192 should normally trust the contents of PAD types, but certain older versions\n\
14193 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14194 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14195 work around this bug.  It is always safe to turn this option \"off\", but\n\
14196 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14197 this option to \"off\" unless necessary."),
14198                             NULL, NULL, &set_ada_list, &show_ada_list);
14199
14200   add_setshow_boolean_cmd ("print-signatures", class_vars,
14201                            &print_signatures, _("\
14202 Enable or disable the output of formal and return types for functions in the \
14203 overloads selection menu."), _("\
14204 Show whether the output of formal and return types for functions in the \
14205 overloads selection menu is activated."),
14206                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14207
14208   add_catch_command ("exception", _("\
14209 Catch Ada exceptions, when raised.\n\
14210 Usage: catch exception [ARG] [if CONDITION]\n\
14211 Without any argument, stop when any Ada exception is raised.\n\
14212 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14213 being raised does not have a handler (and will therefore lead to the task's\n\
14214 termination).\n\
14215 Otherwise, the catchpoint only stops when the name of the exception being\n\
14216 raised is the same as ARG.\n\
14217 CONDITION is a boolean expression that is evaluated to see whether the\n\
14218 exception should cause a stop."),
14219                      catch_ada_exception_command,
14220                      catch_ada_completer,
14221                      CATCH_PERMANENT,
14222                      CATCH_TEMPORARY);
14223
14224   add_catch_command ("handlers", _("\
14225 Catch Ada exceptions, when handled.\n\
14226 Usage: catch handlers [ARG] [if CONDITION]\n\
14227 Without any argument, stop when any Ada exception is handled.\n\
14228 With an argument, catch only exceptions with the given name.\n\
14229 CONDITION is a boolean expression that is evaluated to see whether the\n\
14230 exception should cause a stop."),
14231                      catch_ada_handlers_command,
14232                      catch_ada_completer,
14233                      CATCH_PERMANENT,
14234                      CATCH_TEMPORARY);
14235   add_catch_command ("assert", _("\
14236 Catch failed Ada assertions, when raised.\n\
14237 Usage: catch assert [if CONDITION]\n\
14238 CONDITION is a boolean expression that is evaluated to see whether the\n\
14239 exception should cause a stop."),
14240                      catch_assert_command,
14241                      NULL,
14242                      CATCH_PERMANENT,
14243                      CATCH_TEMPORARY);
14244
14245   varsize_limit = 65536;
14246   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14247                             &varsize_limit, _("\
14248 Set the maximum number of bytes allowed in a variable-size object."), _("\
14249 Show the maximum number of bytes allowed in a variable-size object."), _("\
14250 Attempts to access an object whose size is not a compile-time constant\n\
14251 and exceeds this limit will cause an error."),
14252                             NULL, NULL, &setlist, &showlist);
14253
14254   add_info ("exceptions", info_exceptions_command,
14255             _("\
14256 List all Ada exception names.\n\
14257 Usage: info exceptions [REGEXP]\n\
14258 If a regular expression is passed as an argument, only those matching\n\
14259 the regular expression are listed."));
14260
14261   add_basic_prefix_cmd ("ada", class_maintenance,
14262                         _("Set Ada maintenance-related variables."),
14263                         &maint_set_ada_cmdlist, "maintenance set ada ",
14264                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14265
14266   add_show_prefix_cmd ("ada", class_maintenance,
14267                        _("Show Ada maintenance-related variables."),
14268                        &maint_show_ada_cmdlist, "maintenance show ada ",
14269                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14270
14271   add_setshow_boolean_cmd
14272     ("ignore-descriptive-types", class_maintenance,
14273      &ada_ignore_descriptive_types_p,
14274      _("Set whether descriptive types generated by GNAT should be ignored."),
14275      _("Show whether descriptive types generated by GNAT should be ignored."),
14276      _("\
14277 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14278 DWARF attribute."),
14279      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14280
14281   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14282                                            NULL, xcalloc, xfree);
14283
14284   /* The ada-lang observers.  */
14285   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14286   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14287   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14288 }
This page took 0.807501 seconds and 4 git commands to generate.