]> Git Repo - binutils.git/blob - gdb/ada-lang.c
gdb: remove TYPE_INDEX_TYPE 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 *val_atr (struct type *, LONGEST);
200
201 static struct value *value_val_atr (struct type *, struct value *);
202
203 static struct symbol *standard_lookup (const char *, const struct block *,
204                                        domain_enum);
205
206 static struct value *ada_search_struct_field (const char *, struct value *, int,
207                                               struct type *);
208
209 static int find_struct_field (const char *, struct type *, int,
210                               struct type **, int *, int *, int *, int *);
211
212 static int ada_resolve_function (struct block_symbol *, int,
213                                  struct value **, int, const char *,
214                                  struct type *, int);
215
216 static int ada_is_direct_array_type (struct type *);
217
218 static struct value *ada_index_struct_field (int, struct value *, int,
219                                              struct type *);
220
221 static struct value *assign_aggregate (struct value *, struct value *, 
222                                        struct expression *,
223                                        int *, enum noside);
224
225 static void aggregate_assign_from_choices (struct value *, struct value *, 
226                                            struct expression *,
227                                            int *, LONGEST *, int *,
228                                            int, LONGEST, LONGEST);
229
230 static void aggregate_assign_positional (struct value *, struct value *,
231                                          struct expression *,
232                                          int *, LONGEST *, int *, int,
233                                          LONGEST, LONGEST);
234
235
236 static void aggregate_assign_others (struct value *, struct value *,
237                                      struct expression *,
238                                      int *, LONGEST *, int, LONGEST, LONGEST);
239
240
241 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
242
243
244 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
245                                           int *, enum noside);
246
247 static void ada_forward_operator_length (struct expression *, int, int *,
248                                          int *);
249
250 static struct type *ada_find_any_type (const char *name);
251
252 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
253   (const lookup_name_info &lookup_name);
254
255 \f
256
257 /* The result of a symbol lookup to be stored in our symbol cache.  */
258
259 struct cache_entry
260 {
261   /* The name used to perform the lookup.  */
262   const char *name;
263   /* The namespace used during the lookup.  */
264   domain_enum domain;
265   /* The symbol returned by the lookup, or NULL if no matching symbol
266      was found.  */
267   struct symbol *sym;
268   /* The block where the symbol was found, or NULL if no matching
269      symbol was found.  */
270   const struct block *block;
271   /* A pointer to the next entry with the same hash.  */
272   struct cache_entry *next;
273 };
274
275 /* The Ada symbol cache, used to store the result of Ada-mode symbol
276    lookups in the course of executing the user's commands.
277
278    The cache is implemented using a simple, fixed-sized hash.
279    The size is fixed on the grounds that there are not likely to be
280    all that many symbols looked up during any given session, regardless
281    of the size of the symbol table.  If we decide to go to a resizable
282    table, let's just use the stuff from libiberty instead.  */
283
284 #define HASH_SIZE 1009
285
286 struct ada_symbol_cache
287 {
288   /* An obstack used to store the entries in our cache.  */
289   struct obstack cache_space;
290
291   /* The root of the hash table used to implement our symbol cache.  */
292   struct cache_entry *root[HASH_SIZE];
293 };
294
295 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
296
297 /* Maximum-sized dynamic type.  */
298 static unsigned int varsize_limit;
299
300 static const char ada_completer_word_break_characters[] =
301 #ifdef VMS
302   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
303 #else
304   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
305 #endif
306
307 /* The name of the symbol to use to get the name of the main subprogram.  */
308 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
309   = "__gnat_ada_main_program_name";
310
311 /* Limit on the number of warnings to raise per expression evaluation.  */
312 static int warning_limit = 2;
313
314 /* Number of warning messages issued; reset to 0 by cleanups after
315    expression evaluation.  */
316 static int warnings_issued = 0;
317
318 static const char *known_runtime_file_name_patterns[] = {
319   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
320 };
321
322 static const char *known_auxiliary_function_name_patterns[] = {
323   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
324 };
325
326 /* Maintenance-related settings for this module.  */
327
328 static struct cmd_list_element *maint_set_ada_cmdlist;
329 static struct cmd_list_element *maint_show_ada_cmdlist;
330
331 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
332
333 static bool ada_ignore_descriptive_types_p = false;
334
335                         /* Inferior-specific data.  */
336
337 /* Per-inferior data for this module.  */
338
339 struct ada_inferior_data
340 {
341   /* The ada__tags__type_specific_data type, which is used when decoding
342      tagged types.  With older versions of GNAT, this type was directly
343      accessible through a component ("tsd") in the object tag.  But this
344      is no longer the case, so we cache it for each inferior.  */
345   struct type *tsd_type = nullptr;
346
347   /* The exception_support_info data.  This data is used to determine
348      how to implement support for Ada exception catchpoints in a given
349      inferior.  */
350   const struct exception_support_info *exception_info = nullptr;
351 };
352
353 /* Our key to this module's inferior data.  */
354 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
355
356 /* Return our inferior data for the given inferior (INF).
357
358    This function always returns a valid pointer to an allocated
359    ada_inferior_data structure.  If INF's inferior data has not
360    been previously set, this functions creates a new one with all
361    fields set to zero, sets INF's inferior to it, and then returns
362    a pointer to that newly allocated ada_inferior_data.  */
363
364 static struct ada_inferior_data *
365 get_ada_inferior_data (struct inferior *inf)
366 {
367   struct ada_inferior_data *data;
368
369   data = ada_inferior_data.get (inf);
370   if (data == NULL)
371     data = ada_inferior_data.emplace (inf);
372
373   return data;
374 }
375
376 /* Perform all necessary cleanups regarding our module's inferior data
377    that is required after the inferior INF just exited.  */
378
379 static void
380 ada_inferior_exit (struct inferior *inf)
381 {
382   ada_inferior_data.clear (inf);
383 }
384
385
386                         /* program-space-specific data.  */
387
388 /* This module's per-program-space data.  */
389 struct ada_pspace_data
390 {
391   ~ada_pspace_data ()
392   {
393     if (sym_cache != NULL)
394       ada_free_symbol_cache (sym_cache);
395   }
396
397   /* The Ada symbol cache.  */
398   struct ada_symbol_cache *sym_cache = nullptr;
399 };
400
401 /* Key to our per-program-space data.  */
402 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
403
404 /* Return this module's data for the given program space (PSPACE).
405    If not is found, add a zero'ed one now.
406
407    This function always returns a valid object.  */
408
409 static struct ada_pspace_data *
410 get_ada_pspace_data (struct program_space *pspace)
411 {
412   struct ada_pspace_data *data;
413
414   data = ada_pspace_data_handle.get (pspace);
415   if (data == NULL)
416     data = ada_pspace_data_handle.emplace (pspace);
417
418   return data;
419 }
420
421                         /* Utilities */
422
423 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
424    all typedef layers have been peeled.  Otherwise, return TYPE.
425
426    Normally, we really expect a typedef type to only have 1 typedef layer.
427    In other words, we really expect the target type of a typedef type to be
428    a non-typedef type.  This is particularly true for Ada units, because
429    the language does not have a typedef vs not-typedef distinction.
430    In that respect, the Ada compiler has been trying to eliminate as many
431    typedef definitions in the debugging information, since they generally
432    do not bring any extra information (we still use typedef under certain
433    circumstances related mostly to the GNAT encoding).
434
435    Unfortunately, we have seen situations where the debugging information
436    generated by the compiler leads to such multiple typedef layers.  For
437    instance, consider the following example with stabs:
438
439      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
440      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
441
442    This is an error in the debugging information which causes type
443    pck__float_array___XUP to be defined twice, and the second time,
444    it is defined as a typedef of a typedef.
445
446    This is on the fringe of legality as far as debugging information is
447    concerned, and certainly unexpected.  But it is easy to handle these
448    situations correctly, so we can afford to be lenient in this case.  */
449
450 static struct type *
451 ada_typedef_target_type (struct type *type)
452 {
453   while (type->code () == TYPE_CODE_TYPEDEF)
454     type = TYPE_TARGET_TYPE (type);
455   return type;
456 }
457
458 /* Given DECODED_NAME a string holding a symbol name in its
459    decoded form (ie using the Ada dotted notation), returns
460    its unqualified name.  */
461
462 static const char *
463 ada_unqualified_name (const char *decoded_name)
464 {
465   const char *result;
466   
467   /* If the decoded name starts with '<', it means that the encoded
468      name does not follow standard naming conventions, and thus that
469      it is not your typical Ada symbol name.  Trying to unqualify it
470      is therefore pointless and possibly erroneous.  */
471   if (decoded_name[0] == '<')
472     return decoded_name;
473
474   result = strrchr (decoded_name, '.');
475   if (result != NULL)
476     result++;                   /* Skip the dot...  */
477   else
478     result = decoded_name;
479
480   return result;
481 }
482
483 /* Return a string starting with '<', followed by STR, and '>'.  */
484
485 static std::string
486 add_angle_brackets (const char *str)
487 {
488   return string_printf ("<%s>", str);
489 }
490
491 static const char *
492 ada_get_gdb_completer_word_break_characters (void)
493 {
494   return ada_completer_word_break_characters;
495 }
496
497 /* la_watch_location_expression for Ada.  */
498
499 static gdb::unique_xmalloc_ptr<char>
500 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
501 {
502   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
503   std::string name = type_to_string (type);
504   return gdb::unique_xmalloc_ptr<char>
505     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
506 }
507
508 /* Assuming V points to an array of S objects,  make sure that it contains at
509    least M objects, updating V and S as necessary.  */
510
511 #define GROW_VECT(v, s, m)                                    \
512    if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
513
514 /* Assuming VECT points to an array of *SIZE objects of size
515    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
516    updating *SIZE as necessary and returning the (new) array.  */
517
518 static void *
519 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
520 {
521   if (*size < min_size)
522     {
523       *size *= 2;
524       if (*size < min_size)
525         *size = min_size;
526       vect = xrealloc (vect, *size * element_size);
527     }
528   return vect;
529 }
530
531 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
532    suffix of FIELD_NAME beginning "___".  */
533
534 static int
535 field_name_match (const char *field_name, const char *target)
536 {
537   int len = strlen (target);
538
539   return
540     (strncmp (field_name, target, len) == 0
541      && (field_name[len] == '\0'
542          || (startswith (field_name + len, "___")
543              && strcmp (field_name + strlen (field_name) - 6,
544                         "___XVN") != 0)));
545 }
546
547
548 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
549    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
550    and return its index.  This function also handles fields whose name
551    have ___ suffixes because the compiler sometimes alters their name
552    by adding such a suffix to represent fields with certain constraints.
553    If the field could not be found, return a negative number if
554    MAYBE_MISSING is set.  Otherwise raise an error.  */
555
556 int
557 ada_get_field_index (const struct type *type, const char *field_name,
558                      int maybe_missing)
559 {
560   int fieldno;
561   struct type *struct_type = check_typedef ((struct type *) type);
562
563   for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
564     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
565       return fieldno;
566
567   if (!maybe_missing)
568     error (_("Unable to find field %s in struct %s.  Aborting"),
569            field_name, struct_type->name ());
570
571   return -1;
572 }
573
574 /* The length of the prefix of NAME prior to any "___" suffix.  */
575
576 int
577 ada_name_prefix_len (const char *name)
578 {
579   if (name == NULL)
580     return 0;
581   else
582     {
583       const char *p = strstr (name, "___");
584
585       if (p == NULL)
586         return strlen (name);
587       else
588         return p - name;
589     }
590 }
591
592 /* Return non-zero if SUFFIX is a suffix of STR.
593    Return zero if STR is null.  */
594
595 static int
596 is_suffix (const char *str, const char *suffix)
597 {
598   int len1, len2;
599
600   if (str == NULL)
601     return 0;
602   len1 = strlen (str);
603   len2 = strlen (suffix);
604   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
605 }
606
607 /* The contents of value VAL, treated as a value of type TYPE.  The
608    result is an lval in memory if VAL is.  */
609
610 static struct value *
611 coerce_unspec_val_to_type (struct value *val, struct type *type)
612 {
613   type = ada_check_typedef (type);
614   if (value_type (val) == type)
615     return val;
616   else
617     {
618       struct value *result;
619
620       /* Make sure that the object size is not unreasonable before
621          trying to allocate some memory for it.  */
622       ada_ensure_varsize_limit (type);
623
624       if (value_lazy (val)
625           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
626         result = allocate_value_lazy (type);
627       else
628         {
629           result = allocate_value (type);
630           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
631         }
632       set_value_component_location (result, val);
633       set_value_bitsize (result, value_bitsize (val));
634       set_value_bitpos (result, value_bitpos (val));
635       if (VALUE_LVAL (result) == lval_memory)
636         set_value_address (result, value_address (val));
637       return result;
638     }
639 }
640
641 static const gdb_byte *
642 cond_offset_host (const gdb_byte *valaddr, long offset)
643 {
644   if (valaddr == NULL)
645     return NULL;
646   else
647     return valaddr + offset;
648 }
649
650 static CORE_ADDR
651 cond_offset_target (CORE_ADDR address, long offset)
652 {
653   if (address == 0)
654     return 0;
655   else
656     return address + offset;
657 }
658
659 /* Issue a warning (as for the definition of warning in utils.c, but
660    with exactly one argument rather than ...), unless the limit on the
661    number of warnings has passed during the evaluation of the current
662    expression.  */
663
664 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
665    provided by "complaint".  */
666 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
667
668 static void
669 lim_warning (const char *format, ...)
670 {
671   va_list args;
672
673   va_start (args, format);
674   warnings_issued += 1;
675   if (warnings_issued <= warning_limit)
676     vwarning (format, args);
677
678   va_end (args);
679 }
680
681 /* Issue an error if the size of an object of type T is unreasonable,
682    i.e. if it would be a bad idea to allocate a value of this type in
683    GDB.  */
684
685 void
686 ada_ensure_varsize_limit (const struct type *type)
687 {
688   if (TYPE_LENGTH (type) > varsize_limit)
689     error (_("object size is larger than varsize-limit"));
690 }
691
692 /* Maximum value of a SIZE-byte signed integer type.  */
693 static LONGEST
694 max_of_size (int size)
695 {
696   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
697
698   return top_bit | (top_bit - 1);
699 }
700
701 /* Minimum value of a SIZE-byte signed integer type.  */
702 static LONGEST
703 min_of_size (int size)
704 {
705   return -max_of_size (size) - 1;
706 }
707
708 /* Maximum value of a SIZE-byte unsigned integer type.  */
709 static ULONGEST
710 umax_of_size (int size)
711 {
712   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
713
714   return top_bit | (top_bit - 1);
715 }
716
717 /* Maximum value of integral type T, as a signed quantity.  */
718 static LONGEST
719 max_of_type (struct type *t)
720 {
721   if (TYPE_UNSIGNED (t))
722     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
723   else
724     return max_of_size (TYPE_LENGTH (t));
725 }
726
727 /* Minimum value of integral type T, as a signed quantity.  */
728 static LONGEST
729 min_of_type (struct type *t)
730 {
731   if (TYPE_UNSIGNED (t)) 
732     return 0;
733   else
734     return min_of_size (TYPE_LENGTH (t));
735 }
736
737 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
738 LONGEST
739 ada_discrete_type_high_bound (struct type *type)
740 {
741   type = resolve_dynamic_type (type, {}, 0);
742   switch (type->code ())
743     {
744     case TYPE_CODE_RANGE:
745       return TYPE_HIGH_BOUND (type);
746     case TYPE_CODE_ENUM:
747       return TYPE_FIELD_ENUMVAL (type, type->num_fields () - 1);
748     case TYPE_CODE_BOOL:
749       return 1;
750     case TYPE_CODE_CHAR:
751     case TYPE_CODE_INT:
752       return max_of_type (type);
753     default:
754       error (_("Unexpected type in ada_discrete_type_high_bound."));
755     }
756 }
757
758 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
759 LONGEST
760 ada_discrete_type_low_bound (struct type *type)
761 {
762   type = resolve_dynamic_type (type, {}, 0);
763   switch (type->code ())
764     {
765     case TYPE_CODE_RANGE:
766       return TYPE_LOW_BOUND (type);
767     case TYPE_CODE_ENUM:
768       return TYPE_FIELD_ENUMVAL (type, 0);
769     case TYPE_CODE_BOOL:
770       return 0;
771     case TYPE_CODE_CHAR:
772     case TYPE_CODE_INT:
773       return min_of_type (type);
774     default:
775       error (_("Unexpected type in ada_discrete_type_low_bound."));
776     }
777 }
778
779 /* The identity on non-range types.  For range types, the underlying
780    non-range scalar type.  */
781
782 static struct type *
783 get_base_type (struct type *type)
784 {
785   while (type != NULL && type->code () == TYPE_CODE_RANGE)
786     {
787       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
788         return type;
789       type = TYPE_TARGET_TYPE (type);
790     }
791   return type;
792 }
793
794 /* Return a decoded version of the given VALUE.  This means returning
795    a value whose type is obtained by applying all the GNAT-specific
796    encodings, making the resulting type a static but standard description
797    of the initial type.  */
798
799 struct value *
800 ada_get_decoded_value (struct value *value)
801 {
802   struct type *type = ada_check_typedef (value_type (value));
803
804   if (ada_is_array_descriptor_type (type)
805       || (ada_is_constrained_packed_array_type (type)
806           && type->code () != TYPE_CODE_PTR))
807     {
808       if (type->code () == TYPE_CODE_TYPEDEF)  /* array access type.  */
809         value = ada_coerce_to_simple_array_ptr (value);
810       else
811         value = ada_coerce_to_simple_array (value);
812     }
813   else
814     value = ada_to_fixed_value (value);
815
816   return value;
817 }
818
819 /* Same as ada_get_decoded_value, but with the given TYPE.
820    Because there is no associated actual value for this type,
821    the resulting type might be a best-effort approximation in
822    the case of dynamic types.  */
823
824 struct type *
825 ada_get_decoded_type (struct type *type)
826 {
827   type = to_static_fixed_type (type);
828   if (ada_is_constrained_packed_array_type (type))
829     type = ada_coerce_to_simple_array_type (type);
830   return type;
831 }
832
833 \f
834
835                                 /* Language Selection */
836
837 /* If the main program is in Ada, return language_ada, otherwise return LANG
838    (the main program is in Ada iif the adainit symbol is found).  */
839
840 static enum language
841 ada_update_initial_language (enum language lang)
842 {
843   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
844     return language_ada;
845
846   return lang;
847 }
848
849 /* If the main procedure is written in Ada, then return its name.
850    The result is good until the next call.  Return NULL if the main
851    procedure doesn't appear to be in Ada.  */
852
853 char *
854 ada_main_name (void)
855 {
856   struct bound_minimal_symbol msym;
857   static gdb::unique_xmalloc_ptr<char> main_program_name;
858
859   /* For Ada, the name of the main procedure is stored in a specific
860      string constant, generated by the binder.  Look for that symbol,
861      extract its address, and then read that string.  If we didn't find
862      that string, then most probably the main procedure is not written
863      in Ada.  */
864   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
865
866   if (msym.minsym != NULL)
867     {
868       CORE_ADDR main_program_name_addr;
869       int err_code;
870
871       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
872       if (main_program_name_addr == 0)
873         error (_("Invalid address for Ada main program name."));
874
875       target_read_string (main_program_name_addr, &main_program_name,
876                           1024, &err_code);
877
878       if (err_code != 0)
879         return NULL;
880       return main_program_name.get ();
881     }
882
883   /* The main procedure doesn't seem to be in Ada.  */
884   return NULL;
885 }
886 \f
887                                 /* Symbols */
888
889 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
890    of NULLs.  */
891
892 const struct ada_opname_map ada_opname_table[] = {
893   {"Oadd", "\"+\"", BINOP_ADD},
894   {"Osubtract", "\"-\"", BINOP_SUB},
895   {"Omultiply", "\"*\"", BINOP_MUL},
896   {"Odivide", "\"/\"", BINOP_DIV},
897   {"Omod", "\"mod\"", BINOP_MOD},
898   {"Orem", "\"rem\"", BINOP_REM},
899   {"Oexpon", "\"**\"", BINOP_EXP},
900   {"Olt", "\"<\"", BINOP_LESS},
901   {"Ole", "\"<=\"", BINOP_LEQ},
902   {"Ogt", "\">\"", BINOP_GTR},
903   {"Oge", "\">=\"", BINOP_GEQ},
904   {"Oeq", "\"=\"", BINOP_EQUAL},
905   {"One", "\"/=\"", BINOP_NOTEQUAL},
906   {"Oand", "\"and\"", BINOP_BITWISE_AND},
907   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
908   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
909   {"Oconcat", "\"&\"", BINOP_CONCAT},
910   {"Oabs", "\"abs\"", UNOP_ABS},
911   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
912   {"Oadd", "\"+\"", UNOP_PLUS},
913   {"Osubtract", "\"-\"", UNOP_NEG},
914   {NULL, NULL}
915 };
916
917 /* The "encoded" form of DECODED, according to GNAT conventions.  The
918    result is valid until the next call to ada_encode.  If
919    THROW_ERRORS, throw an error if invalid operator name is found.
920    Otherwise, return NULL in that case.  */
921
922 static char *
923 ada_encode_1 (const char *decoded, bool throw_errors)
924 {
925   static char *encoding_buffer = NULL;
926   static size_t encoding_buffer_size = 0;
927   const char *p;
928   int k;
929
930   if (decoded == NULL)
931     return NULL;
932
933   GROW_VECT (encoding_buffer, encoding_buffer_size,
934              2 * strlen (decoded) + 10);
935
936   k = 0;
937   for (p = decoded; *p != '\0'; p += 1)
938     {
939       if (*p == '.')
940         {
941           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
942           k += 2;
943         }
944       else if (*p == '"')
945         {
946           const struct ada_opname_map *mapping;
947
948           for (mapping = ada_opname_table;
949                mapping->encoded != NULL
950                && !startswith (p, mapping->decoded); mapping += 1)
951             ;
952           if (mapping->encoded == NULL)
953             {
954               if (throw_errors)
955                 error (_("invalid Ada operator name: %s"), p);
956               else
957                 return NULL;
958             }
959           strcpy (encoding_buffer + k, mapping->encoded);
960           k += strlen (mapping->encoded);
961           break;
962         }
963       else
964         {
965           encoding_buffer[k] = *p;
966           k += 1;
967         }
968     }
969
970   encoding_buffer[k] = '\0';
971   return encoding_buffer;
972 }
973
974 /* The "encoded" form of DECODED, according to GNAT conventions.
975    The result is valid until the next call to ada_encode.  */
976
977 char *
978 ada_encode (const char *decoded)
979 {
980   return ada_encode_1 (decoded, true);
981 }
982
983 /* Return NAME folded to lower case, or, if surrounded by single
984    quotes, unfolded, but with the quotes stripped away.  Result good
985    to next call.  */
986
987 static char *
988 ada_fold_name (gdb::string_view name)
989 {
990   static char *fold_buffer = NULL;
991   static size_t fold_buffer_size = 0;
992
993   int len = name.size ();
994   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
995
996   if (name[0] == '\'')
997     {
998       strncpy (fold_buffer, name.data () + 1, len - 2);
999       fold_buffer[len - 2] = '\000';
1000     }
1001   else
1002     {
1003       int i;
1004
1005       for (i = 0; i <= len; i += 1)
1006         fold_buffer[i] = tolower (name[i]);
1007     }
1008
1009   return fold_buffer;
1010 }
1011
1012 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1013
1014 static int
1015 is_lower_alphanum (const char c)
1016 {
1017   return (isdigit (c) || (isalpha (c) && islower (c)));
1018 }
1019
1020 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1021    This function saves in LEN the length of that same symbol name but
1022    without either of these suffixes:
1023      . .{DIGIT}+
1024      . ${DIGIT}+
1025      . ___{DIGIT}+
1026      . __{DIGIT}+.
1027
1028    These are suffixes introduced by the compiler for entities such as
1029    nested subprogram for instance, in order to avoid name clashes.
1030    They do not serve any purpose for the debugger.  */
1031
1032 static void
1033 ada_remove_trailing_digits (const char *encoded, int *len)
1034 {
1035   if (*len > 1 && isdigit (encoded[*len - 1]))
1036     {
1037       int i = *len - 2;
1038
1039       while (i > 0 && isdigit (encoded[i]))
1040         i--;
1041       if (i >= 0 && encoded[i] == '.')
1042         *len = i;
1043       else if (i >= 0 && encoded[i] == '$')
1044         *len = i;
1045       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1046         *len = i - 2;
1047       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1048         *len = i - 1;
1049     }
1050 }
1051
1052 /* Remove the suffix introduced by the compiler for protected object
1053    subprograms.  */
1054
1055 static void
1056 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1057 {
1058   /* Remove trailing N.  */
1059
1060   /* Protected entry subprograms are broken into two
1061      separate subprograms: The first one is unprotected, and has
1062      a 'N' suffix; the second is the protected version, and has
1063      the 'P' suffix.  The second calls the first one after handling
1064      the protection.  Since the P subprograms are internally generated,
1065      we leave these names undecoded, giving the user a clue that this
1066      entity is internal.  */
1067
1068   if (*len > 1
1069       && encoded[*len - 1] == 'N'
1070       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1071     *len = *len - 1;
1072 }
1073
1074 /* If ENCODED follows the GNAT entity encoding conventions, then return
1075    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1076    replaced by ENCODED.  */
1077
1078 std::string
1079 ada_decode (const char *encoded)
1080 {
1081   int i, j;
1082   int len0;
1083   const char *p;
1084   int at_start_name;
1085   std::string decoded;
1086
1087   /* With function descriptors on PPC64, the value of a symbol named
1088      ".FN", if it exists, is the entry point of the function "FN".  */
1089   if (encoded[0] == '.')
1090     encoded += 1;
1091
1092   /* The name of the Ada main procedure starts with "_ada_".
1093      This prefix is not part of the decoded name, so skip this part
1094      if we see this prefix.  */
1095   if (startswith (encoded, "_ada_"))
1096     encoded += 5;
1097
1098   /* If the name starts with '_', then it is not a properly encoded
1099      name, so do not attempt to decode it.  Similarly, if the name
1100      starts with '<', the name should not be decoded.  */
1101   if (encoded[0] == '_' || encoded[0] == '<')
1102     goto Suppress;
1103
1104   len0 = strlen (encoded);
1105
1106   ada_remove_trailing_digits (encoded, &len0);
1107   ada_remove_po_subprogram_suffix (encoded, &len0);
1108
1109   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1110      the suffix is located before the current "end" of ENCODED.  We want
1111      to avoid re-matching parts of ENCODED that have previously been
1112      marked as discarded (by decrementing LEN0).  */
1113   p = strstr (encoded, "___");
1114   if (p != NULL && p - encoded < len0 - 3)
1115     {
1116       if (p[3] == 'X')
1117         len0 = p - encoded;
1118       else
1119         goto Suppress;
1120     }
1121
1122   /* Remove any trailing TKB suffix.  It tells us that this symbol
1123      is for the body of a task, but that information does not actually
1124      appear in the decoded name.  */
1125
1126   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1127     len0 -= 3;
1128
1129   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1130      from the TKB suffix because it is used for non-anonymous task
1131      bodies.  */
1132
1133   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1134     len0 -= 2;
1135
1136   /* Remove trailing "B" suffixes.  */
1137   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1138
1139   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1140     len0 -= 1;
1141
1142   /* Make decoded big enough for possible expansion by operator name.  */
1143
1144   decoded.resize (2 * len0 + 1, 'X');
1145
1146   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1147
1148   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1149     {
1150       i = len0 - 2;
1151       while ((i >= 0 && isdigit (encoded[i]))
1152              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1153         i -= 1;
1154       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1155         len0 = i - 1;
1156       else if (encoded[i] == '$')
1157         len0 = i;
1158     }
1159
1160   /* The first few characters that are not alphabetic are not part
1161      of any encoding we use, so we can copy them over verbatim.  */
1162
1163   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1164     decoded[j] = encoded[i];
1165
1166   at_start_name = 1;
1167   while (i < len0)
1168     {
1169       /* Is this a symbol function?  */
1170       if (at_start_name && encoded[i] == 'O')
1171         {
1172           int k;
1173
1174           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1175             {
1176               int op_len = strlen (ada_opname_table[k].encoded);
1177               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1178                             op_len - 1) == 0)
1179                   && !isalnum (encoded[i + op_len]))
1180                 {
1181                   strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
1182                   at_start_name = 0;
1183                   i += op_len;
1184                   j += strlen (ada_opname_table[k].decoded);
1185                   break;
1186                 }
1187             }
1188           if (ada_opname_table[k].encoded != NULL)
1189             continue;
1190         }
1191       at_start_name = 0;
1192
1193       /* Replace "TK__" with "__", which will eventually be translated
1194          into "." (just below).  */
1195
1196       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1197         i += 2;
1198
1199       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1200          be translated into "." (just below).  These are internal names
1201          generated for anonymous blocks inside which our symbol is nested.  */
1202
1203       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1204           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1205           && isdigit (encoded [i+4]))
1206         {
1207           int k = i + 5;
1208           
1209           while (k < len0 && isdigit (encoded[k]))
1210             k++;  /* Skip any extra digit.  */
1211
1212           /* Double-check that the "__B_{DIGITS}+" sequence we found
1213              is indeed followed by "__".  */
1214           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1215             i = k;
1216         }
1217
1218       /* Remove _E{DIGITS}+[sb] */
1219
1220       /* Just as for protected object subprograms, there are 2 categories
1221          of subprograms created by the compiler for each entry.  The first
1222          one implements the actual entry code, and has a suffix following
1223          the convention above; the second one implements the barrier and
1224          uses the same convention as above, except that the 'E' is replaced
1225          by a 'B'.
1226
1227          Just as above, we do not decode the name of barrier functions
1228          to give the user a clue that the code he is debugging has been
1229          internally generated.  */
1230
1231       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1232           && isdigit (encoded[i+2]))
1233         {
1234           int k = i + 3;
1235
1236           while (k < len0 && isdigit (encoded[k]))
1237             k++;
1238
1239           if (k < len0
1240               && (encoded[k] == 'b' || encoded[k] == 's'))
1241             {
1242               k++;
1243               /* Just as an extra precaution, make sure that if this
1244                  suffix is followed by anything else, it is a '_'.
1245                  Otherwise, we matched this sequence by accident.  */
1246               if (k == len0
1247                   || (k < len0 && encoded[k] == '_'))
1248                 i = k;
1249             }
1250         }
1251
1252       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1253          the GNAT front-end in protected object subprograms.  */
1254
1255       if (i < len0 + 3
1256           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1257         {
1258           /* Backtrack a bit up until we reach either the begining of
1259              the encoded name, or "__".  Make sure that we only find
1260              digits or lowercase characters.  */
1261           const char *ptr = encoded + i - 1;
1262
1263           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1264             ptr--;
1265           if (ptr < encoded
1266               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1267             i++;
1268         }
1269
1270       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1271         {
1272           /* This is a X[bn]* sequence not separated from the previous
1273              part of the name with a non-alpha-numeric character (in other
1274              words, immediately following an alpha-numeric character), then
1275              verify that it is placed at the end of the encoded name.  If
1276              not, then the encoding is not valid and we should abort the
1277              decoding.  Otherwise, just skip it, it is used in body-nested
1278              package names.  */
1279           do
1280             i += 1;
1281           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1282           if (i < len0)
1283             goto Suppress;
1284         }
1285       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1286         {
1287          /* Replace '__' by '.'.  */
1288           decoded[j] = '.';
1289           at_start_name = 1;
1290           i += 2;
1291           j += 1;
1292         }
1293       else
1294         {
1295           /* It's a character part of the decoded name, so just copy it
1296              over.  */
1297           decoded[j] = encoded[i];
1298           i += 1;
1299           j += 1;
1300         }
1301     }
1302   decoded.resize (j);
1303
1304   /* Decoded names should never contain any uppercase character.
1305      Double-check this, and abort the decoding if we find one.  */
1306
1307   for (i = 0; i < decoded.length(); ++i)
1308     if (isupper (decoded[i]) || decoded[i] == ' ')
1309       goto Suppress;
1310
1311   return decoded;
1312
1313 Suppress:
1314   if (encoded[0] == '<')
1315     decoded = encoded;
1316   else
1317     decoded = '<' + std::string(encoded) + '>';
1318   return decoded;
1319
1320 }
1321
1322 /* Table for keeping permanent unique copies of decoded names.  Once
1323    allocated, names in this table are never released.  While this is a
1324    storage leak, it should not be significant unless there are massive
1325    changes in the set of decoded names in successive versions of a 
1326    symbol table loaded during a single session.  */
1327 static struct htab *decoded_names_store;
1328
1329 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1330    in the language-specific part of GSYMBOL, if it has not been
1331    previously computed.  Tries to save the decoded name in the same
1332    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1333    in any case, the decoded symbol has a lifetime at least that of
1334    GSYMBOL).
1335    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1336    const, but nevertheless modified to a semantically equivalent form
1337    when a decoded name is cached in it.  */
1338
1339 const char *
1340 ada_decode_symbol (const struct general_symbol_info *arg)
1341 {
1342   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1343   const char **resultp =
1344     &gsymbol->language_specific.demangled_name;
1345
1346   if (!gsymbol->ada_mangled)
1347     {
1348       std::string decoded = ada_decode (gsymbol->linkage_name ());
1349       struct obstack *obstack = gsymbol->language_specific.obstack;
1350
1351       gsymbol->ada_mangled = 1;
1352
1353       if (obstack != NULL)
1354         *resultp = obstack_strdup (obstack, decoded.c_str ());
1355       else
1356         {
1357           /* Sometimes, we can't find a corresponding objfile, in
1358              which case, we put the result on the heap.  Since we only
1359              decode when needed, we hope this usually does not cause a
1360              significant memory leak (FIXME).  */
1361
1362           char **slot = (char **) htab_find_slot (decoded_names_store,
1363                                                   decoded.c_str (), INSERT);
1364
1365           if (*slot == NULL)
1366             *slot = xstrdup (decoded.c_str ());
1367           *resultp = *slot;
1368         }
1369     }
1370
1371   return *resultp;
1372 }
1373
1374 static char *
1375 ada_la_decode (const char *encoded, int options)
1376 {
1377   return xstrdup (ada_decode (encoded).c_str ());
1378 }
1379
1380 \f
1381
1382                                 /* Arrays */
1383
1384 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1385    generated by the GNAT compiler to describe the index type used
1386    for each dimension of an array, check whether it follows the latest
1387    known encoding.  If not, fix it up to conform to the latest encoding.
1388    Otherwise, do nothing.  This function also does nothing if
1389    INDEX_DESC_TYPE is NULL.
1390
1391    The GNAT encoding used to describe the array index type evolved a bit.
1392    Initially, the information would be provided through the name of each
1393    field of the structure type only, while the type of these fields was
1394    described as unspecified and irrelevant.  The debugger was then expected
1395    to perform a global type lookup using the name of that field in order
1396    to get access to the full index type description.  Because these global
1397    lookups can be very expensive, the encoding was later enhanced to make
1398    the global lookup unnecessary by defining the field type as being
1399    the full index type description.
1400
1401    The purpose of this routine is to allow us to support older versions
1402    of the compiler by detecting the use of the older encoding, and by
1403    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1404    we essentially replace each field's meaningless type by the associated
1405    index subtype).  */
1406
1407 void
1408 ada_fixup_array_indexes_type (struct type *index_desc_type)
1409 {
1410   int i;
1411
1412   if (index_desc_type == NULL)
1413     return;
1414   gdb_assert (index_desc_type->num_fields () > 0);
1415
1416   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1417      to check one field only, no need to check them all).  If not, return
1418      now.
1419
1420      If our INDEX_DESC_TYPE was generated using the older encoding,
1421      the field type should be a meaningless integer type whose name
1422      is not equal to the field name.  */
1423   if (TYPE_FIELD_TYPE (index_desc_type, 0)->name () != NULL
1424       && strcmp (TYPE_FIELD_TYPE (index_desc_type, 0)->name (),
1425                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1426     return;
1427
1428   /* Fixup each field of INDEX_DESC_TYPE.  */
1429   for (i = 0; i < index_desc_type->num_fields (); i++)
1430    {
1431      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1432      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1433
1434      if (raw_type)
1435        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1436    }
1437 }
1438
1439 /* The desc_* routines return primitive portions of array descriptors
1440    (fat pointers).  */
1441
1442 /* The descriptor or array type, if any, indicated by TYPE; removes
1443    level of indirection, if needed.  */
1444
1445 static struct type *
1446 desc_base_type (struct type *type)
1447 {
1448   if (type == NULL)
1449     return NULL;
1450   type = ada_check_typedef (type);
1451   if (type->code () == TYPE_CODE_TYPEDEF)
1452     type = ada_typedef_target_type (type);
1453
1454   if (type != NULL
1455       && (type->code () == TYPE_CODE_PTR
1456           || type->code () == TYPE_CODE_REF))
1457     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1458   else
1459     return type;
1460 }
1461
1462 /* True iff TYPE indicates a "thin" array pointer type.  */
1463
1464 static int
1465 is_thin_pntr (struct type *type)
1466 {
1467   return
1468     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1469     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1470 }
1471
1472 /* The descriptor type for thin pointer type TYPE.  */
1473
1474 static struct type *
1475 thin_descriptor_type (struct type *type)
1476 {
1477   struct type *base_type = desc_base_type (type);
1478
1479   if (base_type == NULL)
1480     return NULL;
1481   if (is_suffix (ada_type_name (base_type), "___XVE"))
1482     return base_type;
1483   else
1484     {
1485       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1486
1487       if (alt_type == NULL)
1488         return base_type;
1489       else
1490         return alt_type;
1491     }
1492 }
1493
1494 /* A pointer to the array data for thin-pointer value VAL.  */
1495
1496 static struct value *
1497 thin_data_pntr (struct value *val)
1498 {
1499   struct type *type = ada_check_typedef (value_type (val));
1500   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1501
1502   data_type = lookup_pointer_type (data_type);
1503
1504   if (type->code () == TYPE_CODE_PTR)
1505     return value_cast (data_type, value_copy (val));
1506   else
1507     return value_from_longest (data_type, value_address (val));
1508 }
1509
1510 /* True iff TYPE indicates a "thick" array pointer type.  */
1511
1512 static int
1513 is_thick_pntr (struct type *type)
1514 {
1515   type = desc_base_type (type);
1516   return (type != NULL && type->code () == TYPE_CODE_STRUCT
1517           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1518 }
1519
1520 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1521    pointer to one, the type of its bounds data; otherwise, NULL.  */
1522
1523 static struct type *
1524 desc_bounds_type (struct type *type)
1525 {
1526   struct type *r;
1527
1528   type = desc_base_type (type);
1529
1530   if (type == NULL)
1531     return NULL;
1532   else if (is_thin_pntr (type))
1533     {
1534       type = thin_descriptor_type (type);
1535       if (type == NULL)
1536         return NULL;
1537       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1538       if (r != NULL)
1539         return ada_check_typedef (r);
1540     }
1541   else if (type->code () == TYPE_CODE_STRUCT)
1542     {
1543       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1544       if (r != NULL)
1545         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1546     }
1547   return NULL;
1548 }
1549
1550 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1551    one, a pointer to its bounds data.   Otherwise NULL.  */
1552
1553 static struct value *
1554 desc_bounds (struct value *arr)
1555 {
1556   struct type *type = ada_check_typedef (value_type (arr));
1557
1558   if (is_thin_pntr (type))
1559     {
1560       struct type *bounds_type =
1561         desc_bounds_type (thin_descriptor_type (type));
1562       LONGEST addr;
1563
1564       if (bounds_type == NULL)
1565         error (_("Bad GNAT array descriptor"));
1566
1567       /* NOTE: The following calculation is not really kosher, but
1568          since desc_type is an XVE-encoded type (and shouldn't be),
1569          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1570       if (type->code () == TYPE_CODE_PTR)
1571         addr = value_as_long (arr);
1572       else
1573         addr = value_address (arr);
1574
1575       return
1576         value_from_longest (lookup_pointer_type (bounds_type),
1577                             addr - TYPE_LENGTH (bounds_type));
1578     }
1579
1580   else if (is_thick_pntr (type))
1581     {
1582       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1583                                                _("Bad GNAT array descriptor"));
1584       struct type *p_bounds_type = value_type (p_bounds);
1585
1586       if (p_bounds_type
1587           && p_bounds_type->code () == TYPE_CODE_PTR)
1588         {
1589           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1590
1591           if (TYPE_STUB (target_type))
1592             p_bounds = value_cast (lookup_pointer_type
1593                                    (ada_check_typedef (target_type)),
1594                                    p_bounds);
1595         }
1596       else
1597         error (_("Bad GNAT array descriptor"));
1598
1599       return p_bounds;
1600     }
1601   else
1602     return NULL;
1603 }
1604
1605 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1606    position of the field containing the address of the bounds data.  */
1607
1608 static int
1609 fat_pntr_bounds_bitpos (struct type *type)
1610 {
1611   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1612 }
1613
1614 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1615    size of the field containing the address of the bounds data.  */
1616
1617 static int
1618 fat_pntr_bounds_bitsize (struct type *type)
1619 {
1620   type = desc_base_type (type);
1621
1622   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1623     return TYPE_FIELD_BITSIZE (type, 1);
1624   else
1625     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1626 }
1627
1628 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1629    pointer to one, the type of its array data (a array-with-no-bounds type);
1630    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1631    data.  */
1632
1633 static struct type *
1634 desc_data_target_type (struct type *type)
1635 {
1636   type = desc_base_type (type);
1637
1638   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1639   if (is_thin_pntr (type))
1640     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1641   else if (is_thick_pntr (type))
1642     {
1643       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1644
1645       if (data_type
1646           && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
1647         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1648     }
1649
1650   return NULL;
1651 }
1652
1653 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1654    its array data.  */
1655
1656 static struct value *
1657 desc_data (struct value *arr)
1658 {
1659   struct type *type = value_type (arr);
1660
1661   if (is_thin_pntr (type))
1662     return thin_data_pntr (arr);
1663   else if (is_thick_pntr (type))
1664     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1665                              _("Bad GNAT array descriptor"));
1666   else
1667     return NULL;
1668 }
1669
1670
1671 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1672    position of the field containing the address of the data.  */
1673
1674 static int
1675 fat_pntr_data_bitpos (struct type *type)
1676 {
1677   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1678 }
1679
1680 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1681    size of the field containing the address of the data.  */
1682
1683 static int
1684 fat_pntr_data_bitsize (struct type *type)
1685 {
1686   type = desc_base_type (type);
1687
1688   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1689     return TYPE_FIELD_BITSIZE (type, 0);
1690   else
1691     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1692 }
1693
1694 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1695    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1696    bound, if WHICH is 1.  The first bound is I=1.  */
1697
1698 static struct value *
1699 desc_one_bound (struct value *bounds, int i, int which)
1700 {
1701   char bound_name[20];
1702   xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
1703              which ? 'U' : 'L', i - 1);
1704   return value_struct_elt (&bounds, NULL, bound_name, NULL,
1705                            _("Bad GNAT array descriptor bounds"));
1706 }
1707
1708 /* If BOUNDS is an array-bounds structure type, return the bit position
1709    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1710    bound, if WHICH is 1.  The first bound is I=1.  */
1711
1712 static int
1713 desc_bound_bitpos (struct type *type, int i, int which)
1714 {
1715   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1716 }
1717
1718 /* If BOUNDS is an array-bounds structure type, return the bit field size
1719    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1720    bound, if WHICH is 1.  The first bound is I=1.  */
1721
1722 static int
1723 desc_bound_bitsize (struct type *type, int i, int which)
1724 {
1725   type = desc_base_type (type);
1726
1727   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1728     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1729   else
1730     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1731 }
1732
1733 /* If TYPE is the type of an array-bounds structure, the type of its
1734    Ith bound (numbering from 1).  Otherwise, NULL.  */
1735
1736 static struct type *
1737 desc_index_type (struct type *type, int i)
1738 {
1739   type = desc_base_type (type);
1740
1741   if (type->code () == TYPE_CODE_STRUCT)
1742     {
1743       char bound_name[20];
1744       xsnprintf (bound_name, sizeof (bound_name), "LB%d", i - 1);
1745       return lookup_struct_elt_type (type, bound_name, 1);
1746     }
1747   else
1748     return NULL;
1749 }
1750
1751 /* The number of index positions in the array-bounds type TYPE.
1752    Return 0 if TYPE is NULL.  */
1753
1754 static int
1755 desc_arity (struct type *type)
1756 {
1757   type = desc_base_type (type);
1758
1759   if (type != NULL)
1760     return type->num_fields () / 2;
1761   return 0;
1762 }
1763
1764 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1765    an array descriptor type (representing an unconstrained array
1766    type).  */
1767
1768 static int
1769 ada_is_direct_array_type (struct type *type)
1770 {
1771   if (type == NULL)
1772     return 0;
1773   type = ada_check_typedef (type);
1774   return (type->code () == TYPE_CODE_ARRAY
1775           || ada_is_array_descriptor_type (type));
1776 }
1777
1778 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1779  * to one.  */
1780
1781 static int
1782 ada_is_array_type (struct type *type)
1783 {
1784   while (type != NULL
1785          && (type->code () == TYPE_CODE_PTR
1786              || type->code () == TYPE_CODE_REF))
1787     type = TYPE_TARGET_TYPE (type);
1788   return ada_is_direct_array_type (type);
1789 }
1790
1791 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1792
1793 int
1794 ada_is_simple_array_type (struct type *type)
1795 {
1796   if (type == NULL)
1797     return 0;
1798   type = ada_check_typedef (type);
1799   return (type->code () == TYPE_CODE_ARRAY
1800           || (type->code () == TYPE_CODE_PTR
1801               && (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ()
1802                   == TYPE_CODE_ARRAY)));
1803 }
1804
1805 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1806
1807 int
1808 ada_is_array_descriptor_type (struct type *type)
1809 {
1810   struct type *data_type = desc_data_target_type (type);
1811
1812   if (type == NULL)
1813     return 0;
1814   type = ada_check_typedef (type);
1815   return (data_type != NULL
1816           && data_type->code () == TYPE_CODE_ARRAY
1817           && desc_arity (desc_bounds_type (type)) > 0);
1818 }
1819
1820 /* Non-zero iff type is a partially mal-formed GNAT array
1821    descriptor.  FIXME: This is to compensate for some problems with
1822    debugging output from GNAT.  Re-examine periodically to see if it
1823    is still needed.  */
1824
1825 int
1826 ada_is_bogus_array_descriptor (struct type *type)
1827 {
1828   return
1829     type != NULL
1830     && type->code () == TYPE_CODE_STRUCT
1831     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1832         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1833     && !ada_is_array_descriptor_type (type);
1834 }
1835
1836
1837 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1838    (fat pointer) returns the type of the array data described---specifically,
1839    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1840    in from the descriptor; otherwise, they are left unspecified.  If
1841    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1842    returns NULL.  The result is simply the type of ARR if ARR is not
1843    a descriptor.  */
1844
1845 static struct type *
1846 ada_type_of_array (struct value *arr, int bounds)
1847 {
1848   if (ada_is_constrained_packed_array_type (value_type (arr)))
1849     return decode_constrained_packed_array_type (value_type (arr));
1850
1851   if (!ada_is_array_descriptor_type (value_type (arr)))
1852     return value_type (arr);
1853
1854   if (!bounds)
1855     {
1856       struct type *array_type =
1857         ada_check_typedef (desc_data_target_type (value_type (arr)));
1858
1859       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1860         TYPE_FIELD_BITSIZE (array_type, 0) =
1861           decode_packed_array_bitsize (value_type (arr));
1862       
1863       return array_type;
1864     }
1865   else
1866     {
1867       struct type *elt_type;
1868       int arity;
1869       struct value *descriptor;
1870
1871       elt_type = ada_array_element_type (value_type (arr), -1);
1872       arity = ada_array_arity (value_type (arr));
1873
1874       if (elt_type == NULL || arity == 0)
1875         return ada_check_typedef (value_type (arr));
1876
1877       descriptor = desc_bounds (arr);
1878       if (value_as_long (descriptor) == 0)
1879         return NULL;
1880       while (arity > 0)
1881         {
1882           struct type *range_type = alloc_type_copy (value_type (arr));
1883           struct type *array_type = alloc_type_copy (value_type (arr));
1884           struct value *low = desc_one_bound (descriptor, arity, 0);
1885           struct value *high = desc_one_bound (descriptor, arity, 1);
1886
1887           arity -= 1;
1888           create_static_range_type (range_type, value_type (low),
1889                                     longest_to_int (value_as_long (low)),
1890                                     longest_to_int (value_as_long (high)));
1891           elt_type = create_array_type (array_type, elt_type, range_type);
1892
1893           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1894             {
1895               /* We need to store the element packed bitsize, as well as
1896                  recompute the array size, because it was previously
1897                  computed based on the unpacked element size.  */
1898               LONGEST lo = value_as_long (low);
1899               LONGEST hi = value_as_long (high);
1900
1901               TYPE_FIELD_BITSIZE (elt_type, 0) =
1902                 decode_packed_array_bitsize (value_type (arr));
1903               /* If the array has no element, then the size is already
1904                  zero, and does not need to be recomputed.  */
1905               if (lo < hi)
1906                 {
1907                   int array_bitsize =
1908                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1909
1910                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1911                 }
1912             }
1913         }
1914
1915       return lookup_pointer_type (elt_type);
1916     }
1917 }
1918
1919 /* If ARR does not represent an array, returns ARR unchanged.
1920    Otherwise, returns either a standard GDB array with bounds set
1921    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
1922    GDB array.  Returns NULL if ARR is a null fat pointer.  */
1923
1924 struct value *
1925 ada_coerce_to_simple_array_ptr (struct value *arr)
1926 {
1927   if (ada_is_array_descriptor_type (value_type (arr)))
1928     {
1929       struct type *arrType = ada_type_of_array (arr, 1);
1930
1931       if (arrType == NULL)
1932         return NULL;
1933       return value_cast (arrType, value_copy (desc_data (arr)));
1934     }
1935   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1936     return decode_constrained_packed_array (arr);
1937   else
1938     return arr;
1939 }
1940
1941 /* If ARR does not represent an array, returns ARR unchanged.
1942    Otherwise, returns a standard GDB array describing ARR (which may
1943    be ARR itself if it already is in the proper form).  */
1944
1945 struct value *
1946 ada_coerce_to_simple_array (struct value *arr)
1947 {
1948   if (ada_is_array_descriptor_type (value_type (arr)))
1949     {
1950       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
1951
1952       if (arrVal == NULL)
1953         error (_("Bounds unavailable for null array pointer."));
1954       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
1955       return value_ind (arrVal);
1956     }
1957   else if (ada_is_constrained_packed_array_type (value_type (arr)))
1958     return decode_constrained_packed_array (arr);
1959   else
1960     return arr;
1961 }
1962
1963 /* If TYPE represents a GNAT array type, return it translated to an
1964    ordinary GDB array type (possibly with BITSIZE fields indicating
1965    packing).  For other types, is the identity.  */
1966
1967 struct type *
1968 ada_coerce_to_simple_array_type (struct type *type)
1969 {
1970   if (ada_is_constrained_packed_array_type (type))
1971     return decode_constrained_packed_array_type (type);
1972
1973   if (ada_is_array_descriptor_type (type))
1974     return ada_check_typedef (desc_data_target_type (type));
1975
1976   return type;
1977 }
1978
1979 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
1980
1981 static int
1982 ada_is_packed_array_type  (struct type *type)
1983 {
1984   if (type == NULL)
1985     return 0;
1986   type = desc_base_type (type);
1987   type = ada_check_typedef (type);
1988   return
1989     ada_type_name (type) != NULL
1990     && strstr (ada_type_name (type), "___XP") != NULL;
1991 }
1992
1993 /* Non-zero iff TYPE represents a standard GNAT constrained
1994    packed-array type.  */
1995
1996 int
1997 ada_is_constrained_packed_array_type (struct type *type)
1998 {
1999   return ada_is_packed_array_type (type)
2000     && !ada_is_array_descriptor_type (type);
2001 }
2002
2003 /* Non-zero iff TYPE represents an array descriptor for a
2004    unconstrained packed-array type.  */
2005
2006 static int
2007 ada_is_unconstrained_packed_array_type (struct type *type)
2008 {
2009   return ada_is_packed_array_type (type)
2010     && ada_is_array_descriptor_type (type);
2011 }
2012
2013 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2014    return the size of its elements in bits.  */
2015
2016 static long
2017 decode_packed_array_bitsize (struct type *type)
2018 {
2019   const char *raw_name;
2020   const char *tail;
2021   long bits;
2022
2023   /* Access to arrays implemented as fat pointers are encoded as a typedef
2024      of the fat pointer type.  We need the name of the fat pointer type
2025      to do the decoding, so strip the typedef layer.  */
2026   if (type->code () == TYPE_CODE_TYPEDEF)
2027     type = ada_typedef_target_type (type);
2028
2029   raw_name = ada_type_name (ada_check_typedef (type));
2030   if (!raw_name)
2031     raw_name = ada_type_name (desc_base_type (type));
2032
2033   if (!raw_name)
2034     return 0;
2035
2036   tail = strstr (raw_name, "___XP");
2037   gdb_assert (tail != NULL);
2038
2039   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2040     {
2041       lim_warning
2042         (_("could not understand bit size information on packed array"));
2043       return 0;
2044     }
2045
2046   return bits;
2047 }
2048
2049 /* Given that TYPE is a standard GDB array type with all bounds filled
2050    in, and that the element size of its ultimate scalar constituents
2051    (that is, either its elements, or, if it is an array of arrays, its
2052    elements' elements, etc.) is *ELT_BITS, return an identical type,
2053    but with the bit sizes of its elements (and those of any
2054    constituent arrays) recorded in the BITSIZE components of its
2055    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2056    in bits.
2057
2058    Note that, for arrays whose index type has an XA encoding where
2059    a bound references a record discriminant, getting that discriminant,
2060    and therefore the actual value of that bound, is not possible
2061    because none of the given parameters gives us access to the record.
2062    This function assumes that it is OK in the context where it is being
2063    used to return an array whose bounds are still dynamic and where
2064    the length is arbitrary.  */
2065
2066 static struct type *
2067 constrained_packed_array_type (struct type *type, long *elt_bits)
2068 {
2069   struct type *new_elt_type;
2070   struct type *new_type;
2071   struct type *index_type_desc;
2072   struct type *index_type;
2073   LONGEST low_bound, high_bound;
2074
2075   type = ada_check_typedef (type);
2076   if (type->code () != TYPE_CODE_ARRAY)
2077     return type;
2078
2079   index_type_desc = ada_find_parallel_type (type, "___XA");
2080   if (index_type_desc)
2081     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2082                                       NULL);
2083   else
2084     index_type = type->index_type ();
2085
2086   new_type = alloc_type_copy (type);
2087   new_elt_type =
2088     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2089                                    elt_bits);
2090   create_array_type (new_type, new_elt_type, index_type);
2091   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2092   new_type->set_name (ada_type_name (type));
2093
2094   if ((check_typedef (index_type)->code () == TYPE_CODE_RANGE
2095        && is_dynamic_type (check_typedef (index_type)))
2096       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2097     low_bound = high_bound = 0;
2098   if (high_bound < low_bound)
2099     *elt_bits = TYPE_LENGTH (new_type) = 0;
2100   else
2101     {
2102       *elt_bits *= (high_bound - low_bound + 1);
2103       TYPE_LENGTH (new_type) =
2104         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2105     }
2106
2107   TYPE_FIXED_INSTANCE (new_type) = 1;
2108   return new_type;
2109 }
2110
2111 /* The array type encoded by TYPE, where
2112    ada_is_constrained_packed_array_type (TYPE).  */
2113
2114 static struct type *
2115 decode_constrained_packed_array_type (struct type *type)
2116 {
2117   const char *raw_name = ada_type_name (ada_check_typedef (type));
2118   char *name;
2119   const char *tail;
2120   struct type *shadow_type;
2121   long bits;
2122
2123   if (!raw_name)
2124     raw_name = ada_type_name (desc_base_type (type));
2125
2126   if (!raw_name)
2127     return NULL;
2128
2129   name = (char *) alloca (strlen (raw_name) + 1);
2130   tail = strstr (raw_name, "___XP");
2131   type = desc_base_type (type);
2132
2133   memcpy (name, raw_name, tail - raw_name);
2134   name[tail - raw_name] = '\000';
2135
2136   shadow_type = ada_find_parallel_type_with_name (type, name);
2137
2138   if (shadow_type == NULL)
2139     {
2140       lim_warning (_("could not find bounds information on packed array"));
2141       return NULL;
2142     }
2143   shadow_type = check_typedef (shadow_type);
2144
2145   if (shadow_type->code () != TYPE_CODE_ARRAY)
2146     {
2147       lim_warning (_("could not understand bounds "
2148                      "information on packed array"));
2149       return NULL;
2150     }
2151
2152   bits = decode_packed_array_bitsize (type);
2153   return constrained_packed_array_type (shadow_type, &bits);
2154 }
2155
2156 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2157    array, returns a simple array that denotes that array.  Its type is a
2158    standard GDB array type except that the BITSIZEs of the array
2159    target types are set to the number of bits in each element, and the
2160    type length is set appropriately.  */
2161
2162 static struct value *
2163 decode_constrained_packed_array (struct value *arr)
2164 {
2165   struct type *type;
2166
2167   /* If our value is a pointer, then dereference it. Likewise if
2168      the value is a reference.  Make sure that this operation does not
2169      cause the target type to be fixed, as this would indirectly cause
2170      this array to be decoded.  The rest of the routine assumes that
2171      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2172      and "value_ind" routines to perform the dereferencing, as opposed
2173      to using "ada_coerce_ref" or "ada_value_ind".  */
2174   arr = coerce_ref (arr);
2175   if (ada_check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2176     arr = value_ind (arr);
2177
2178   type = decode_constrained_packed_array_type (value_type (arr));
2179   if (type == NULL)
2180     {
2181       error (_("can't unpack array"));
2182       return NULL;
2183     }
2184
2185   if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
2186       && ada_is_modular_type (value_type (arr)))
2187     {
2188        /* This is a (right-justified) modular type representing a packed
2189          array with no wrapper.  In order to interpret the value through
2190          the (left-justified) packed array type we just built, we must
2191          first left-justify it.  */
2192       int bit_size, bit_pos;
2193       ULONGEST mod;
2194
2195       mod = ada_modulus (value_type (arr)) - 1;
2196       bit_size = 0;
2197       while (mod > 0)
2198         {
2199           bit_size += 1;
2200           mod >>= 1;
2201         }
2202       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2203       arr = ada_value_primitive_packed_val (arr, NULL,
2204                                             bit_pos / HOST_CHAR_BIT,
2205                                             bit_pos % HOST_CHAR_BIT,
2206                                             bit_size,
2207                                             type);
2208     }
2209
2210   return coerce_unspec_val_to_type (arr, type);
2211 }
2212
2213
2214 /* The value of the element of packed array ARR at the ARITY indices
2215    given in IND.   ARR must be a simple array.  */
2216
2217 static struct value *
2218 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2219 {
2220   int i;
2221   int bits, elt_off, bit_off;
2222   long elt_total_bit_offset;
2223   struct type *elt_type;
2224   struct value *v;
2225
2226   bits = 0;
2227   elt_total_bit_offset = 0;
2228   elt_type = ada_check_typedef (value_type (arr));
2229   for (i = 0; i < arity; i += 1)
2230     {
2231       if (elt_type->code () != TYPE_CODE_ARRAY
2232           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2233         error
2234           (_("attempt to do packed indexing of "
2235              "something other than a packed array"));
2236       else
2237         {
2238           struct type *range_type = elt_type->index_type ();
2239           LONGEST lowerbound, upperbound;
2240           LONGEST idx;
2241
2242           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2243             {
2244               lim_warning (_("don't know bounds of array"));
2245               lowerbound = upperbound = 0;
2246             }
2247
2248           idx = pos_atr (ind[i]);
2249           if (idx < lowerbound || idx > upperbound)
2250             lim_warning (_("packed array index %ld out of bounds"),
2251                          (long) idx);
2252           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2253           elt_total_bit_offset += (idx - lowerbound) * bits;
2254           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2255         }
2256     }
2257   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2258   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2259
2260   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2261                                       bits, elt_type);
2262   return v;
2263 }
2264
2265 /* Non-zero iff TYPE includes negative integer values.  */
2266
2267 static int
2268 has_negatives (struct type *type)
2269 {
2270   switch (type->code ())
2271     {
2272     default:
2273       return 0;
2274     case TYPE_CODE_INT:
2275       return !TYPE_UNSIGNED (type);
2276     case TYPE_CODE_RANGE:
2277       return TYPE_LOW_BOUND (type) - TYPE_RANGE_DATA (type)->bias < 0;
2278     }
2279 }
2280
2281 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2282    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2283    the unpacked buffer.
2284
2285    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2286    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2287
2288    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2289    zero otherwise.
2290
2291    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2292
2293    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2294
2295 static void
2296 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2297                           gdb_byte *unpacked, int unpacked_len,
2298                           int is_big_endian, int is_signed_type,
2299                           int is_scalar)
2300 {
2301   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2302   int src_idx;                  /* Index into the source area */
2303   int src_bytes_left;           /* Number of source bytes left to process.  */
2304   int srcBitsLeft;              /* Number of source bits left to move */
2305   int unusedLS;                 /* Number of bits in next significant
2306                                    byte of source that are unused */
2307
2308   int unpacked_idx;             /* Index into the unpacked buffer */
2309   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2310
2311   unsigned long accum;          /* Staging area for bits being transferred */
2312   int accumSize;                /* Number of meaningful bits in accum */
2313   unsigned char sign;
2314
2315   /* Transmit bytes from least to most significant; delta is the direction
2316      the indices move.  */
2317   int delta = is_big_endian ? -1 : 1;
2318
2319   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2320      bits from SRC.  .*/
2321   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2322     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2323            bit_size, unpacked_len);
2324
2325   srcBitsLeft = bit_size;
2326   src_bytes_left = src_len;
2327   unpacked_bytes_left = unpacked_len;
2328   sign = 0;
2329
2330   if (is_big_endian)
2331     {
2332       src_idx = src_len - 1;
2333       if (is_signed_type
2334           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2335         sign = ~0;
2336
2337       unusedLS =
2338         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2339         % HOST_CHAR_BIT;
2340
2341       if (is_scalar)
2342         {
2343           accumSize = 0;
2344           unpacked_idx = unpacked_len - 1;
2345         }
2346       else
2347         {
2348           /* Non-scalar values must be aligned at a byte boundary...  */
2349           accumSize =
2350             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2351           /* ... And are placed at the beginning (most-significant) bytes
2352              of the target.  */
2353           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2354           unpacked_bytes_left = unpacked_idx + 1;
2355         }
2356     }
2357   else
2358     {
2359       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2360
2361       src_idx = unpacked_idx = 0;
2362       unusedLS = bit_offset;
2363       accumSize = 0;
2364
2365       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2366         sign = ~0;
2367     }
2368
2369   accum = 0;
2370   while (src_bytes_left > 0)
2371     {
2372       /* Mask for removing bits of the next source byte that are not
2373          part of the value.  */
2374       unsigned int unusedMSMask =
2375         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2376         1;
2377       /* Sign-extend bits for this byte.  */
2378       unsigned int signMask = sign & ~unusedMSMask;
2379
2380       accum |=
2381         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2382       accumSize += HOST_CHAR_BIT - unusedLS;
2383       if (accumSize >= HOST_CHAR_BIT)
2384         {
2385           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2386           accumSize -= HOST_CHAR_BIT;
2387           accum >>= HOST_CHAR_BIT;
2388           unpacked_bytes_left -= 1;
2389           unpacked_idx += delta;
2390         }
2391       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2392       unusedLS = 0;
2393       src_bytes_left -= 1;
2394       src_idx += delta;
2395     }
2396   while (unpacked_bytes_left > 0)
2397     {
2398       accum |= sign << accumSize;
2399       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2400       accumSize -= HOST_CHAR_BIT;
2401       if (accumSize < 0)
2402         accumSize = 0;
2403       accum >>= HOST_CHAR_BIT;
2404       unpacked_bytes_left -= 1;
2405       unpacked_idx += delta;
2406     }
2407 }
2408
2409 /* Create a new value of type TYPE from the contents of OBJ starting
2410    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2411    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2412    assigning through the result will set the field fetched from.
2413    VALADDR is ignored unless OBJ is NULL, in which case,
2414    VALADDR+OFFSET must address the start of storage containing the 
2415    packed value.  The value returned  in this case is never an lval.
2416    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2417
2418 struct value *
2419 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2420                                 long offset, int bit_offset, int bit_size,
2421                                 struct type *type)
2422 {
2423   struct value *v;
2424   const gdb_byte *src;                /* First byte containing data to unpack */
2425   gdb_byte *unpacked;
2426   const int is_scalar = is_scalar_type (type);
2427   const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2428   gdb::byte_vector staging;
2429
2430   type = ada_check_typedef (type);
2431
2432   if (obj == NULL)
2433     src = valaddr + offset;
2434   else
2435     src = value_contents (obj) + offset;
2436
2437   if (is_dynamic_type (type))
2438     {
2439       /* The length of TYPE might by dynamic, so we need to resolve
2440          TYPE in order to know its actual size, which we then use
2441          to create the contents buffer of the value we return.
2442          The difficulty is that the data containing our object is
2443          packed, and therefore maybe not at a byte boundary.  So, what
2444          we do, is unpack the data into a byte-aligned buffer, and then
2445          use that buffer as our object's value for resolving the type.  */
2446       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2447       staging.resize (staging_len);
2448
2449       ada_unpack_from_contents (src, bit_offset, bit_size,
2450                                 staging.data (), staging.size (),
2451                                 is_big_endian, has_negatives (type),
2452                                 is_scalar);
2453       type = resolve_dynamic_type (type, staging, 0);
2454       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2455         {
2456           /* This happens when the length of the object is dynamic,
2457              and is actually smaller than the space reserved for it.
2458              For instance, in an array of variant records, the bit_size
2459              we're given is the array stride, which is constant and
2460              normally equal to the maximum size of its element.
2461              But, in reality, each element only actually spans a portion
2462              of that stride.  */
2463           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2464         }
2465     }
2466
2467   if (obj == NULL)
2468     {
2469       v = allocate_value (type);
2470       src = valaddr + offset;
2471     }
2472   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2473     {
2474       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2475       gdb_byte *buf;
2476
2477       v = value_at (type, value_address (obj) + offset);
2478       buf = (gdb_byte *) alloca (src_len);
2479       read_memory (value_address (v), buf, src_len);
2480       src = buf;
2481     }
2482   else
2483     {
2484       v = allocate_value (type);
2485       src = value_contents (obj) + offset;
2486     }
2487
2488   if (obj != NULL)
2489     {
2490       long new_offset = offset;
2491
2492       set_value_component_location (v, obj);
2493       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2494       set_value_bitsize (v, bit_size);
2495       if (value_bitpos (v) >= HOST_CHAR_BIT)
2496         {
2497           ++new_offset;
2498           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2499         }
2500       set_value_offset (v, new_offset);
2501
2502       /* Also set the parent value.  This is needed when trying to
2503          assign a new value (in inferior memory).  */
2504       set_value_parent (v, obj);
2505     }
2506   else
2507     set_value_bitsize (v, bit_size);
2508   unpacked = value_contents_writeable (v);
2509
2510   if (bit_size == 0)
2511     {
2512       memset (unpacked, 0, TYPE_LENGTH (type));
2513       return v;
2514     }
2515
2516   if (staging.size () == TYPE_LENGTH (type))
2517     {
2518       /* Small short-cut: If we've unpacked the data into a buffer
2519          of the same size as TYPE's length, then we can reuse that,
2520          instead of doing the unpacking again.  */
2521       memcpy (unpacked, staging.data (), staging.size ());
2522     }
2523   else
2524     ada_unpack_from_contents (src, bit_offset, bit_size,
2525                               unpacked, TYPE_LENGTH (type),
2526                               is_big_endian, has_negatives (type), is_scalar);
2527
2528   return v;
2529 }
2530
2531 /* Store the contents of FROMVAL into the location of TOVAL.
2532    Return a new value with the location of TOVAL and contents of
2533    FROMVAL.   Handles assignment into packed fields that have
2534    floating-point or non-scalar types.  */
2535
2536 static struct value *
2537 ada_value_assign (struct value *toval, struct value *fromval)
2538 {
2539   struct type *type = value_type (toval);
2540   int bits = value_bitsize (toval);
2541
2542   toval = ada_coerce_ref (toval);
2543   fromval = ada_coerce_ref (fromval);
2544
2545   if (ada_is_direct_array_type (value_type (toval)))
2546     toval = ada_coerce_to_simple_array (toval);
2547   if (ada_is_direct_array_type (value_type (fromval)))
2548     fromval = ada_coerce_to_simple_array (fromval);
2549
2550   if (!deprecated_value_modifiable (toval))
2551     error (_("Left operand of assignment is not a modifiable lvalue."));
2552
2553   if (VALUE_LVAL (toval) == lval_memory
2554       && bits > 0
2555       && (type->code () == TYPE_CODE_FLT
2556           || type->code () == TYPE_CODE_STRUCT))
2557     {
2558       int len = (value_bitpos (toval)
2559                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2560       int from_size;
2561       gdb_byte *buffer = (gdb_byte *) alloca (len);
2562       struct value *val;
2563       CORE_ADDR to_addr = value_address (toval);
2564
2565       if (type->code () == TYPE_CODE_FLT)
2566         fromval = value_cast (type, fromval);
2567
2568       read_memory (to_addr, buffer, len);
2569       from_size = value_bitsize (fromval);
2570       if (from_size == 0)
2571         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2572
2573       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
2574       ULONGEST from_offset = 0;
2575       if (is_big_endian && is_scalar_type (value_type (fromval)))
2576         from_offset = from_size - bits;
2577       copy_bitwise (buffer, value_bitpos (toval),
2578                     value_contents (fromval), from_offset,
2579                     bits, is_big_endian);
2580       write_memory_with_notification (to_addr, buffer, len);
2581
2582       val = value_copy (toval);
2583       memcpy (value_contents_raw (val), value_contents (fromval),
2584               TYPE_LENGTH (type));
2585       deprecated_set_value_type (val, type);
2586
2587       return val;
2588     }
2589
2590   return value_assign (toval, fromval);
2591 }
2592
2593
2594 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2595    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2596    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2597    COMPONENT, and not the inferior's memory.  The current contents
2598    of COMPONENT are ignored.
2599
2600    Although not part of the initial design, this function also works
2601    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2602    had a null address, and COMPONENT had an address which is equal to
2603    its offset inside CONTAINER.  */
2604
2605 static void
2606 value_assign_to_component (struct value *container, struct value *component,
2607                            struct value *val)
2608 {
2609   LONGEST offset_in_container =
2610     (LONGEST)  (value_address (component) - value_address (container));
2611   int bit_offset_in_container =
2612     value_bitpos (component) - value_bitpos (container);
2613   int bits;
2614
2615   val = value_cast (value_type (component), val);
2616
2617   if (value_bitsize (component) == 0)
2618     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2619   else
2620     bits = value_bitsize (component);
2621
2622   if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
2623     {
2624       int src_offset;
2625
2626       if (is_scalar_type (check_typedef (value_type (component))))
2627         src_offset
2628           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2629       else
2630         src_offset = 0;
2631       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2632                     value_bitpos (container) + bit_offset_in_container,
2633                     value_contents (val), src_offset, bits, 1);
2634     }
2635   else
2636     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2637                   value_bitpos (container) + bit_offset_in_container,
2638                   value_contents (val), 0, bits, 0);
2639 }
2640
2641 /* Determine if TYPE is an access to an unconstrained array.  */
2642
2643 bool
2644 ada_is_access_to_unconstrained_array (struct type *type)
2645 {
2646   return (type->code () == TYPE_CODE_TYPEDEF
2647           && is_thick_pntr (ada_typedef_target_type (type)));
2648 }
2649
2650 /* The value of the element of array ARR at the ARITY indices given in IND.
2651    ARR may be either a simple array, GNAT array descriptor, or pointer
2652    thereto.  */
2653
2654 struct value *
2655 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2656 {
2657   int k;
2658   struct value *elt;
2659   struct type *elt_type;
2660
2661   elt = ada_coerce_to_simple_array (arr);
2662
2663   elt_type = ada_check_typedef (value_type (elt));
2664   if (elt_type->code () == TYPE_CODE_ARRAY
2665       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2666     return value_subscript_packed (elt, arity, ind);
2667
2668   for (k = 0; k < arity; k += 1)
2669     {
2670       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2671
2672       if (elt_type->code () != TYPE_CODE_ARRAY)
2673         error (_("too many subscripts (%d expected)"), k);
2674
2675       elt = value_subscript (elt, pos_atr (ind[k]));
2676
2677       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2678           && value_type (elt)->code () != TYPE_CODE_TYPEDEF)
2679         {
2680           /* The element is a typedef to an unconstrained array,
2681              except that the value_subscript call stripped the
2682              typedef layer.  The typedef layer is GNAT's way to
2683              specify that the element is, at the source level, an
2684              access to the unconstrained array, rather than the
2685              unconstrained array.  So, we need to restore that
2686              typedef layer, which we can do by forcing the element's
2687              type back to its original type. Otherwise, the returned
2688              value is going to be printed as the array, rather
2689              than as an access.  Another symptom of the same issue
2690              would be that an expression trying to dereference the
2691              element would also be improperly rejected.  */
2692           deprecated_set_value_type (elt, saved_elt_type);
2693         }
2694
2695       elt_type = ada_check_typedef (value_type (elt));
2696     }
2697
2698   return elt;
2699 }
2700
2701 /* Assuming ARR is a pointer to a GDB array, the value of the element
2702    of *ARR at the ARITY indices given in IND.
2703    Does not read the entire array into memory.
2704
2705    Note: Unlike what one would expect, this function is used instead of
2706    ada_value_subscript for basically all non-packed array types.  The reason
2707    for this is that a side effect of doing our own pointer arithmetics instead
2708    of relying on value_subscript is that there is no implicit typedef peeling.
2709    This is important for arrays of array accesses, where it allows us to
2710    preserve the fact that the array's element is an array access, where the
2711    access part os encoded in a typedef layer.  */
2712
2713 static struct value *
2714 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2715 {
2716   int k;
2717   struct value *array_ind = ada_value_ind (arr);
2718   struct type *type
2719     = check_typedef (value_enclosing_type (array_ind));
2720
2721   if (type->code () == TYPE_CODE_ARRAY
2722       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2723     return value_subscript_packed (array_ind, arity, ind);
2724
2725   for (k = 0; k < arity; k += 1)
2726     {
2727       LONGEST lwb, upb;
2728
2729       if (type->code () != TYPE_CODE_ARRAY)
2730         error (_("too many subscripts (%d expected)"), k);
2731       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2732                         value_copy (arr));
2733       get_discrete_bounds (type->index_type (), &lwb, &upb);
2734       arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
2735       type = TYPE_TARGET_TYPE (type);
2736     }
2737
2738   return value_ind (arr);
2739 }
2740
2741 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2742    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2743    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2744    this array is LOW, as per Ada rules.  */
2745 static struct value *
2746 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2747                           int low, int high)
2748 {
2749   struct type *type0 = ada_check_typedef (type);
2750   struct type *base_index_type = TYPE_TARGET_TYPE (type0->index_type ());
2751   struct type *index_type
2752     = create_static_range_type (NULL, base_index_type, low, high);
2753   struct type *slice_type = create_array_type_with_stride
2754                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2755                                type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
2756                                TYPE_FIELD_BITSIZE (type0, 0));
2757   int base_low =  ada_discrete_type_low_bound (type0->index_type ());
2758   LONGEST base_low_pos, low_pos;
2759   CORE_ADDR base;
2760
2761   if (!discrete_position (base_index_type, low, &low_pos)
2762       || !discrete_position (base_index_type, base_low, &base_low_pos))
2763     {
2764       warning (_("unable to get positions in slice, use bounds instead"));
2765       low_pos = low;
2766       base_low_pos = base_low;
2767     }
2768
2769   base = value_as_address (array_ptr)
2770     + ((low_pos - base_low_pos)
2771        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2772   return value_at_lazy (slice_type, base);
2773 }
2774
2775
2776 static struct value *
2777 ada_value_slice (struct value *array, int low, int high)
2778 {
2779   struct type *type = ada_check_typedef (value_type (array));
2780   struct type *base_index_type = TYPE_TARGET_TYPE (type->index_type ());
2781   struct type *index_type
2782     = create_static_range_type (NULL, type->index_type (), low, high);
2783   struct type *slice_type = create_array_type_with_stride
2784                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2785                                type->dyn_prop (DYN_PROP_BYTE_STRIDE),
2786                                TYPE_FIELD_BITSIZE (type, 0));
2787   LONGEST low_pos, high_pos;
2788
2789   if (!discrete_position (base_index_type, low, &low_pos)
2790       || !discrete_position (base_index_type, high, &high_pos))
2791     {
2792       warning (_("unable to get positions in slice, use bounds instead"));
2793       low_pos = low;
2794       high_pos = high;
2795     }
2796
2797   return value_cast (slice_type,
2798                      value_slice (array, low, high_pos - low_pos + 1));
2799 }
2800
2801 /* If type is a record type in the form of a standard GNAT array
2802    descriptor, returns the number of dimensions for type.  If arr is a
2803    simple array, returns the number of "array of"s that prefix its
2804    type designation.  Otherwise, returns 0.  */
2805
2806 int
2807 ada_array_arity (struct type *type)
2808 {
2809   int arity;
2810
2811   if (type == NULL)
2812     return 0;
2813
2814   type = desc_base_type (type);
2815
2816   arity = 0;
2817   if (type->code () == TYPE_CODE_STRUCT)
2818     return desc_arity (desc_bounds_type (type));
2819   else
2820     while (type->code () == TYPE_CODE_ARRAY)
2821       {
2822         arity += 1;
2823         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2824       }
2825
2826   return arity;
2827 }
2828
2829 /* If TYPE is a record type in the form of a standard GNAT array
2830    descriptor or a simple array type, returns the element type for
2831    TYPE after indexing by NINDICES indices, or by all indices if
2832    NINDICES is -1.  Otherwise, returns NULL.  */
2833
2834 struct type *
2835 ada_array_element_type (struct type *type, int nindices)
2836 {
2837   type = desc_base_type (type);
2838
2839   if (type->code () == TYPE_CODE_STRUCT)
2840     {
2841       int k;
2842       struct type *p_array_type;
2843
2844       p_array_type = desc_data_target_type (type);
2845
2846       k = ada_array_arity (type);
2847       if (k == 0)
2848         return NULL;
2849
2850       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2851       if (nindices >= 0 && k > nindices)
2852         k = nindices;
2853       while (k > 0 && p_array_type != NULL)
2854         {
2855           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2856           k -= 1;
2857         }
2858       return p_array_type;
2859     }
2860   else if (type->code () == TYPE_CODE_ARRAY)
2861     {
2862       while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
2863         {
2864           type = TYPE_TARGET_TYPE (type);
2865           nindices -= 1;
2866         }
2867       return type;
2868     }
2869
2870   return NULL;
2871 }
2872
2873 /* The type of nth index in arrays of given type (n numbering from 1).
2874    Does not examine memory.  Throws an error if N is invalid or TYPE
2875    is not an array type.  NAME is the name of the Ada attribute being
2876    evaluated ('range, 'first, 'last, or 'length); it is used in building
2877    the error message.  */
2878
2879 static struct type *
2880 ada_index_type (struct type *type, int n, const char *name)
2881 {
2882   struct type *result_type;
2883
2884   type = desc_base_type (type);
2885
2886   if (n < 0 || n > ada_array_arity (type))
2887     error (_("invalid dimension number to '%s"), name);
2888
2889   if (ada_is_simple_array_type (type))
2890     {
2891       int i;
2892
2893       for (i = 1; i < n; i += 1)
2894         type = TYPE_TARGET_TYPE (type);
2895       result_type = TYPE_TARGET_TYPE (type->index_type ());
2896       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2897          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2898          perhaps stabsread.c would make more sense.  */
2899       if (result_type && result_type->code () == TYPE_CODE_UNDEF)
2900         result_type = NULL;
2901     }
2902   else
2903     {
2904       result_type = desc_index_type (desc_bounds_type (type), n);
2905       if (result_type == NULL)
2906         error (_("attempt to take bound of something that is not an array"));
2907     }
2908
2909   return result_type;
2910 }
2911
2912 /* Given that arr is an array type, returns the lower bound of the
2913    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
2914    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
2915    array-descriptor type.  It works for other arrays with bounds supplied
2916    by run-time quantities other than discriminants.  */
2917
2918 static LONGEST
2919 ada_array_bound_from_type (struct type *arr_type, int n, int which)
2920 {
2921   struct type *type, *index_type_desc, *index_type;
2922   int i;
2923
2924   gdb_assert (which == 0 || which == 1);
2925
2926   if (ada_is_constrained_packed_array_type (arr_type))
2927     arr_type = decode_constrained_packed_array_type (arr_type);
2928
2929   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
2930     return (LONGEST) - which;
2931
2932   if (arr_type->code () == TYPE_CODE_PTR)
2933     type = TYPE_TARGET_TYPE (arr_type);
2934   else
2935     type = arr_type;
2936
2937   if (TYPE_FIXED_INSTANCE (type))
2938     {
2939       /* The array has already been fixed, so we do not need to
2940          check the parallel ___XA type again.  That encoding has
2941          already been applied, so ignore it now.  */
2942       index_type_desc = NULL;
2943     }
2944   else
2945     {
2946       index_type_desc = ada_find_parallel_type (type, "___XA");
2947       ada_fixup_array_indexes_type (index_type_desc);
2948     }
2949
2950   if (index_type_desc != NULL)
2951     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
2952                                       NULL);
2953   else
2954     {
2955       struct type *elt_type = check_typedef (type);
2956
2957       for (i = 1; i < n; i++)
2958         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
2959
2960       index_type = elt_type->index_type ();
2961     }
2962
2963   return
2964     (LONGEST) (which == 0
2965                ? ada_discrete_type_low_bound (index_type)
2966                : ada_discrete_type_high_bound (index_type));
2967 }
2968
2969 /* Given that arr is an array value, returns the lower bound of the
2970    nth index (numbering from 1) if WHICH is 0, and the upper bound if
2971    WHICH is 1.  This routine will also work for arrays with bounds
2972    supplied by run-time quantities other than discriminants.  */
2973
2974 static LONGEST
2975 ada_array_bound (struct value *arr, int n, int which)
2976 {
2977   struct type *arr_type;
2978
2979   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
2980     arr = value_ind (arr);
2981   arr_type = value_enclosing_type (arr);
2982
2983   if (ada_is_constrained_packed_array_type (arr_type))
2984     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
2985   else if (ada_is_simple_array_type (arr_type))
2986     return ada_array_bound_from_type (arr_type, n, which);
2987   else
2988     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
2989 }
2990
2991 /* Given that arr is an array value, returns the length of the
2992    nth index.  This routine will also work for arrays with bounds
2993    supplied by run-time quantities other than discriminants.
2994    Does not work for arrays indexed by enumeration types with representation
2995    clauses at the moment.  */
2996
2997 static LONGEST
2998 ada_array_length (struct value *arr, int n)
2999 {
3000   struct type *arr_type, *index_type;
3001   int low, high;
3002
3003   if (check_typedef (value_type (arr))->code () == TYPE_CODE_PTR)
3004     arr = value_ind (arr);
3005   arr_type = value_enclosing_type (arr);
3006
3007   if (ada_is_constrained_packed_array_type (arr_type))
3008     return ada_array_length (decode_constrained_packed_array (arr), n);
3009
3010   if (ada_is_simple_array_type (arr_type))
3011     {
3012       low = ada_array_bound_from_type (arr_type, n, 0);
3013       high = ada_array_bound_from_type (arr_type, n, 1);
3014     }
3015   else
3016     {
3017       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3018       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3019     }
3020
3021   arr_type = check_typedef (arr_type);
3022   index_type = ada_index_type (arr_type, n, "length");
3023   if (index_type != NULL)
3024     {
3025       struct type *base_type;
3026       if (index_type->code () == TYPE_CODE_RANGE)
3027         base_type = TYPE_TARGET_TYPE (index_type);
3028       else
3029         base_type = index_type;
3030
3031       low = pos_atr (value_from_longest (base_type, low));
3032       high = pos_atr (value_from_longest (base_type, high));
3033     }
3034   return high - low + 1;
3035 }
3036
3037 /* An array whose type is that of ARR_TYPE (an array type), with
3038    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3039    less than LOW, then LOW-1 is used.  */
3040
3041 static struct value *
3042 empty_array (struct type *arr_type, int low, int high)
3043 {
3044   struct type *arr_type0 = ada_check_typedef (arr_type);
3045   struct type *index_type
3046     = create_static_range_type
3047         (NULL, TYPE_TARGET_TYPE (arr_type0->index_type ()), low,
3048          high < low ? low - 1 : high);
3049   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3050
3051   return allocate_value (create_array_type (NULL, elt_type, index_type));
3052 }
3053 \f
3054
3055                                 /* Name resolution */
3056
3057 /* The "decoded" name for the user-definable Ada operator corresponding
3058    to OP.  */
3059
3060 static const char *
3061 ada_decoded_op_name (enum exp_opcode op)
3062 {
3063   int i;
3064
3065   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3066     {
3067       if (ada_opname_table[i].op == op)
3068         return ada_opname_table[i].decoded;
3069     }
3070   error (_("Could not find operator name for opcode"));
3071 }
3072
3073 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3074    in a listing of choices during disambiguation (see sort_choices, below).
3075    The idea is that overloadings of a subprogram name from the
3076    same package should sort in their source order.  We settle for ordering
3077    such symbols by their trailing number (__N  or $N).  */
3078
3079 static int
3080 encoded_ordered_before (const char *N0, const char *N1)
3081 {
3082   if (N1 == NULL)
3083     return 0;
3084   else if (N0 == NULL)
3085     return 1;
3086   else
3087     {
3088       int k0, k1;
3089
3090       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3091         ;
3092       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3093         ;
3094       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3095           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3096         {
3097           int n0, n1;
3098
3099           n0 = k0;
3100           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3101             n0 -= 1;
3102           n1 = k1;
3103           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3104             n1 -= 1;
3105           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3106             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3107         }
3108       return (strcmp (N0, N1) < 0);
3109     }
3110 }
3111
3112 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3113    encoded names.  */
3114
3115 static void
3116 sort_choices (struct block_symbol syms[], int nsyms)
3117 {
3118   int i;
3119
3120   for (i = 1; i < nsyms; i += 1)
3121     {
3122       struct block_symbol sym = syms[i];
3123       int j;
3124
3125       for (j = i - 1; j >= 0; j -= 1)
3126         {
3127           if (encoded_ordered_before (syms[j].symbol->linkage_name (),
3128                                       sym.symbol->linkage_name ()))
3129             break;
3130           syms[j + 1] = syms[j];
3131         }
3132       syms[j + 1] = sym;
3133     }
3134 }
3135
3136 /* Whether GDB should display formals and return types for functions in the
3137    overloads selection menu.  */
3138 static bool print_signatures = true;
3139
3140 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3141    all but functions, the signature is just the name of the symbol.  For
3142    functions, this is the name of the function, the list of types for formals
3143    and the return type (if any).  */
3144
3145 static void
3146 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3147                             const struct type_print_options *flags)
3148 {
3149   struct type *type = SYMBOL_TYPE (sym);
3150
3151   fprintf_filtered (stream, "%s", sym->print_name ());
3152   if (!print_signatures
3153       || type == NULL
3154       || type->code () != TYPE_CODE_FUNC)
3155     return;
3156
3157   if (type->num_fields () > 0)
3158     {
3159       int i;
3160
3161       fprintf_filtered (stream, " (");
3162       for (i = 0; i < type->num_fields (); ++i)
3163         {
3164           if (i > 0)
3165             fprintf_filtered (stream, "; ");
3166           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3167                           flags);
3168         }
3169       fprintf_filtered (stream, ")");
3170     }
3171   if (TYPE_TARGET_TYPE (type) != NULL
3172       && TYPE_TARGET_TYPE (type)->code () != TYPE_CODE_VOID)
3173     {
3174       fprintf_filtered (stream, " return ");
3175       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3176     }
3177 }
3178
3179 /* Read and validate a set of numeric choices from the user in the
3180    range 0 .. N_CHOICES-1.  Place the results in increasing
3181    order in CHOICES[0 .. N-1], and return N.
3182
3183    The user types choices as a sequence of numbers on one line
3184    separated by blanks, encoding them as follows:
3185
3186      + A choice of 0 means to cancel the selection, throwing an error.
3187      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3188      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3189
3190    The user is not allowed to choose more than MAX_RESULTS values.
3191
3192    ANNOTATION_SUFFIX, if present, is used to annotate the input
3193    prompts (for use with the -f switch).  */
3194
3195 static int
3196 get_selections (int *choices, int n_choices, int max_results,
3197                 int is_all_choice, const char *annotation_suffix)
3198 {
3199   const char *args;
3200   const char *prompt;
3201   int n_chosen;
3202   int first_choice = is_all_choice ? 2 : 1;
3203
3204   prompt = getenv ("PS2");
3205   if (prompt == NULL)
3206     prompt = "> ";
3207
3208   args = command_line_input (prompt, annotation_suffix);
3209
3210   if (args == NULL)
3211     error_no_arg (_("one or more choice numbers"));
3212
3213   n_chosen = 0;
3214
3215   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3216      order, as given in args.  Choices are validated.  */
3217   while (1)
3218     {
3219       char *args2;
3220       int choice, j;
3221
3222       args = skip_spaces (args);
3223       if (*args == '\0' && n_chosen == 0)
3224         error_no_arg (_("one or more choice numbers"));
3225       else if (*args == '\0')
3226         break;
3227
3228       choice = strtol (args, &args2, 10);
3229       if (args == args2 || choice < 0
3230           || choice > n_choices + first_choice - 1)
3231         error (_("Argument must be choice number"));
3232       args = args2;
3233
3234       if (choice == 0)
3235         error (_("cancelled"));
3236
3237       if (choice < first_choice)
3238         {
3239           n_chosen = n_choices;
3240           for (j = 0; j < n_choices; j += 1)
3241             choices[j] = j;
3242           break;
3243         }
3244       choice -= first_choice;
3245
3246       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
3247         {
3248         }
3249
3250       if (j < 0 || choice != choices[j])
3251         {
3252           int k;
3253
3254           for (k = n_chosen - 1; k > j; k -= 1)
3255             choices[k + 1] = choices[k];
3256           choices[j + 1] = choice;
3257           n_chosen += 1;
3258         }
3259     }
3260
3261   if (n_chosen > max_results)
3262     error (_("Select no more than %d of the above"), max_results);
3263
3264   return n_chosen;
3265 }
3266
3267 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
3268    by asking the user (if necessary), returning the number selected,
3269    and setting the first elements of SYMS items.  Error if no symbols
3270    selected.  */
3271
3272 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3273    to be re-integrated one of these days.  */
3274
3275 static int
3276 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3277 {
3278   int i;
3279   int *chosen = XALLOCAVEC (int , nsyms);
3280   int n_chosen;
3281   int first_choice = (max_results == 1) ? 1 : 2;
3282   const char *select_mode = multiple_symbols_select_mode ();
3283
3284   if (max_results < 1)
3285     error (_("Request to select 0 symbols!"));
3286   if (nsyms <= 1)
3287     return nsyms;
3288
3289   if (select_mode == multiple_symbols_cancel)
3290     error (_("\
3291 canceled because the command is ambiguous\n\
3292 See set/show multiple-symbol."));
3293
3294   /* If select_mode is "all", then return all possible symbols.
3295      Only do that if more than one symbol can be selected, of course.
3296      Otherwise, display the menu as usual.  */
3297   if (select_mode == multiple_symbols_all && max_results > 1)
3298     return nsyms;
3299
3300   printf_filtered (_("[0] cancel\n"));
3301   if (max_results > 1)
3302     printf_filtered (_("[1] all\n"));
3303
3304   sort_choices (syms, nsyms);
3305
3306   for (i = 0; i < nsyms; i += 1)
3307     {
3308       if (syms[i].symbol == NULL)
3309         continue;
3310
3311       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3312         {
3313           struct symtab_and_line sal =
3314             find_function_start_sal (syms[i].symbol, 1);
3315
3316           printf_filtered ("[%d] ", i + first_choice);
3317           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3318                                       &type_print_raw_options);
3319           if (sal.symtab == NULL)
3320             printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
3321                              metadata_style.style ().ptr (), nullptr, sal.line);
3322           else
3323             printf_filtered
3324               (_(" at %ps:%d\n"),
3325                styled_string (file_name_style.style (),
3326                               symtab_to_filename_for_display (sal.symtab)),
3327                sal.line);
3328           continue;
3329         }
3330       else
3331         {
3332           int is_enumeral =
3333             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3334              && SYMBOL_TYPE (syms[i].symbol) != NULL
3335              && SYMBOL_TYPE (syms[i].symbol)->code () == TYPE_CODE_ENUM);
3336           struct symtab *symtab = NULL;
3337
3338           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3339             symtab = symbol_symtab (syms[i].symbol);
3340
3341           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3342             {
3343               printf_filtered ("[%d] ", i + first_choice);
3344               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3345                                           &type_print_raw_options);
3346               printf_filtered (_(" at %s:%d\n"),
3347                                symtab_to_filename_for_display (symtab),
3348                                SYMBOL_LINE (syms[i].symbol));
3349             }
3350           else if (is_enumeral
3351                    && SYMBOL_TYPE (syms[i].symbol)->name () != NULL)
3352             {
3353               printf_filtered (("[%d] "), i + first_choice);
3354               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3355                               gdb_stdout, -1, 0, &type_print_raw_options);
3356               printf_filtered (_("'(%s) (enumeral)\n"),
3357                                syms[i].symbol->print_name ());
3358             }
3359           else
3360             {
3361               printf_filtered ("[%d] ", i + first_choice);
3362               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3363                                           &type_print_raw_options);
3364
3365               if (symtab != NULL)
3366                 printf_filtered (is_enumeral
3367                                  ? _(" in %s (enumeral)\n")
3368                                  : _(" at %s:?\n"),
3369                                  symtab_to_filename_for_display (symtab));
3370               else
3371                 printf_filtered (is_enumeral
3372                                  ? _(" (enumeral)\n")
3373                                  : _(" at ?\n"));
3374             }
3375         }
3376     }
3377
3378   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3379                              "overload-choice");
3380
3381   for (i = 0; i < n_chosen; i += 1)
3382     syms[i] = syms[chosen[i]];
3383
3384   return n_chosen;
3385 }
3386
3387 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3388    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3389    undefined namespace) and converts operators that are
3390    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3391    non-null, it provides a preferred result type [at the moment, only
3392    type void has any effect---causing procedures to be preferred over
3393    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3394    return type is preferred.  May change (expand) *EXP.  */
3395
3396 static void
3397 resolve (expression_up *expp, int void_context_p, int parse_completion,
3398          innermost_block_tracker *tracker)
3399 {
3400   struct type *context_type = NULL;
3401   int pc = 0;
3402
3403   if (void_context_p)
3404     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3405
3406   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3407 }
3408
3409 /* Resolve the operator of the subexpression beginning at
3410    position *POS of *EXPP.  "Resolving" consists of replacing
3411    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3412    with their resolutions, replacing built-in operators with
3413    function calls to user-defined operators, where appropriate, and,
3414    when DEPROCEDURE_P is non-zero, converting function-valued variables
3415    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3416    are as in ada_resolve, above.  */
3417
3418 static struct value *
3419 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3420                 struct type *context_type, int parse_completion,
3421                 innermost_block_tracker *tracker)
3422 {
3423   int pc = *pos;
3424   int i;
3425   struct expression *exp;       /* Convenience: == *expp.  */
3426   enum exp_opcode op = (*expp)->elts[pc].opcode;
3427   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3428   int nargs;                    /* Number of operands.  */
3429   int oplen;
3430
3431   argvec = NULL;
3432   nargs = 0;
3433   exp = expp->get ();
3434
3435   /* Pass one: resolve operands, saving their types and updating *pos,
3436      if needed.  */
3437   switch (op)
3438     {
3439     case OP_FUNCALL:
3440       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3441           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3442         *pos += 7;
3443       else
3444         {
3445           *pos += 3;
3446           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3447         }
3448       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3449       break;
3450
3451     case UNOP_ADDR:
3452       *pos += 1;
3453       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3454       break;
3455
3456     case UNOP_QUAL:
3457       *pos += 3;
3458       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3459                       parse_completion, tracker);
3460       break;
3461
3462     case OP_ATR_MODULUS:
3463     case OP_ATR_SIZE:
3464     case OP_ATR_TAG:
3465     case OP_ATR_FIRST:
3466     case OP_ATR_LAST:
3467     case OP_ATR_LENGTH:
3468     case OP_ATR_POS:
3469     case OP_ATR_VAL:
3470     case OP_ATR_MIN:
3471     case OP_ATR_MAX:
3472     case TERNOP_IN_RANGE:
3473     case BINOP_IN_BOUNDS:
3474     case UNOP_IN_RANGE:
3475     case OP_AGGREGATE:
3476     case OP_OTHERS:
3477     case OP_CHOICES:
3478     case OP_POSITIONAL:
3479     case OP_DISCRETE_RANGE:
3480     case OP_NAME:
3481       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3482       *pos += oplen;
3483       break;
3484
3485     case BINOP_ASSIGN:
3486       {
3487         struct value *arg1;
3488
3489         *pos += 1;
3490         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3491         if (arg1 == NULL)
3492           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3493         else
3494           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3495                           tracker);
3496         break;
3497       }
3498
3499     case UNOP_CAST:
3500       *pos += 3;
3501       nargs = 1;
3502       break;
3503
3504     case BINOP_ADD:
3505     case BINOP_SUB:
3506     case BINOP_MUL:
3507     case BINOP_DIV:
3508     case BINOP_REM:
3509     case BINOP_MOD:
3510     case BINOP_EXP:
3511     case BINOP_CONCAT:
3512     case BINOP_LOGICAL_AND:
3513     case BINOP_LOGICAL_OR:
3514     case BINOP_BITWISE_AND:
3515     case BINOP_BITWISE_IOR:
3516     case BINOP_BITWISE_XOR:
3517
3518     case BINOP_EQUAL:
3519     case BINOP_NOTEQUAL:
3520     case BINOP_LESS:
3521     case BINOP_GTR:
3522     case BINOP_LEQ:
3523     case BINOP_GEQ:
3524
3525     case BINOP_REPEAT:
3526     case BINOP_SUBSCRIPT:
3527     case BINOP_COMMA:
3528       *pos += 1;
3529       nargs = 2;
3530       break;
3531
3532     case UNOP_NEG:
3533     case UNOP_PLUS:
3534     case UNOP_LOGICAL_NOT:
3535     case UNOP_ABS:
3536     case UNOP_IND:
3537       *pos += 1;
3538       nargs = 1;
3539       break;
3540
3541     case OP_LONG:
3542     case OP_FLOAT:
3543     case OP_VAR_VALUE:
3544     case OP_VAR_MSYM_VALUE:
3545       *pos += 4;
3546       break;
3547
3548     case OP_TYPE:
3549     case OP_BOOL:
3550     case OP_LAST:
3551     case OP_INTERNALVAR:
3552       *pos += 3;
3553       break;
3554
3555     case UNOP_MEMVAL:
3556       *pos += 3;
3557       nargs = 1;
3558       break;
3559
3560     case OP_REGISTER:
3561       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3562       break;
3563
3564     case STRUCTOP_STRUCT:
3565       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3566       nargs = 1;
3567       break;
3568
3569     case TERNOP_SLICE:
3570       *pos += 1;
3571       nargs = 3;
3572       break;
3573
3574     case OP_STRING:
3575       break;
3576
3577     default:
3578       error (_("Unexpected operator during name resolution"));
3579     }
3580
3581   argvec = XALLOCAVEC (struct value *, nargs + 1);
3582   for (i = 0; i < nargs; i += 1)
3583     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3584                                 tracker);
3585   argvec[i] = NULL;
3586   exp = expp->get ();
3587
3588   /* Pass two: perform any resolution on principal operator.  */
3589   switch (op)
3590     {
3591     default:
3592       break;
3593
3594     case OP_VAR_VALUE:
3595       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3596         {
3597           std::vector<struct block_symbol> candidates;
3598           int n_candidates;
3599
3600           n_candidates =
3601             ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
3602                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3603                                     &candidates);
3604
3605           if (n_candidates > 1)
3606             {
3607               /* Types tend to get re-introduced locally, so if there
3608                  are any local symbols that are not types, first filter
3609                  out all types.  */
3610               int j;
3611               for (j = 0; j < n_candidates; j += 1)
3612                 switch (SYMBOL_CLASS (candidates[j].symbol))
3613                   {
3614                   case LOC_REGISTER:
3615                   case LOC_ARG:
3616                   case LOC_REF_ARG:
3617                   case LOC_REGPARM_ADDR:
3618                   case LOC_LOCAL:
3619                   case LOC_COMPUTED:
3620                     goto FoundNonType;
3621                   default:
3622                     break;
3623                   }
3624             FoundNonType:
3625               if (j < n_candidates)
3626                 {
3627                   j = 0;
3628                   while (j < n_candidates)
3629                     {
3630                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3631                         {
3632                           candidates[j] = candidates[n_candidates - 1];
3633                           n_candidates -= 1;
3634                         }
3635                       else
3636                         j += 1;
3637                     }
3638                 }
3639             }
3640
3641           if (n_candidates == 0)
3642             error (_("No definition found for %s"),
3643                    exp->elts[pc + 2].symbol->print_name ());
3644           else if (n_candidates == 1)
3645             i = 0;
3646           else if (deprocedure_p
3647                    && !is_nonfunction (candidates.data (), n_candidates))
3648             {
3649               i = ada_resolve_function
3650                 (candidates.data (), n_candidates, NULL, 0,
3651                  exp->elts[pc + 2].symbol->linkage_name (),
3652                  context_type, parse_completion);
3653               if (i < 0)
3654                 error (_("Could not find a match for %s"),
3655                        exp->elts[pc + 2].symbol->print_name ());
3656             }
3657           else
3658             {
3659               printf_filtered (_("Multiple matches for %s\n"),
3660                                exp->elts[pc + 2].symbol->print_name ());
3661               user_select_syms (candidates.data (), n_candidates, 1);
3662               i = 0;
3663             }
3664
3665           exp->elts[pc + 1].block = candidates[i].block;
3666           exp->elts[pc + 2].symbol = candidates[i].symbol;
3667           tracker->update (candidates[i]);
3668         }
3669
3670       if (deprocedure_p
3671           && (SYMBOL_TYPE (exp->elts[pc + 2].symbol)->code ()
3672               == TYPE_CODE_FUNC))
3673         {
3674           replace_operator_with_call (expp, pc, 0, 4,
3675                                       exp->elts[pc + 2].symbol,
3676                                       exp->elts[pc + 1].block);
3677           exp = expp->get ();
3678         }
3679       break;
3680
3681     case OP_FUNCALL:
3682       {
3683         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3684             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3685           {
3686             std::vector<struct block_symbol> candidates;
3687             int n_candidates;
3688
3689             n_candidates =
3690               ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
3691                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3692                                       &candidates);
3693
3694             if (n_candidates == 1)
3695               i = 0;
3696             else
3697               {
3698                 i = ada_resolve_function
3699                   (candidates.data (), n_candidates,
3700                    argvec, nargs,
3701                    exp->elts[pc + 5].symbol->linkage_name (),
3702                    context_type, parse_completion);
3703                 if (i < 0)
3704                   error (_("Could not find a match for %s"),
3705                          exp->elts[pc + 5].symbol->print_name ());
3706               }
3707
3708             exp->elts[pc + 4].block = candidates[i].block;
3709             exp->elts[pc + 5].symbol = candidates[i].symbol;
3710             tracker->update (candidates[i]);
3711           }
3712       }
3713       break;
3714     case BINOP_ADD:
3715     case BINOP_SUB:
3716     case BINOP_MUL:
3717     case BINOP_DIV:
3718     case BINOP_REM:
3719     case BINOP_MOD:
3720     case BINOP_CONCAT:
3721     case BINOP_BITWISE_AND:
3722     case BINOP_BITWISE_IOR:
3723     case BINOP_BITWISE_XOR:
3724     case BINOP_EQUAL:
3725     case BINOP_NOTEQUAL:
3726     case BINOP_LESS:
3727     case BINOP_GTR:
3728     case BINOP_LEQ:
3729     case BINOP_GEQ:
3730     case BINOP_EXP:
3731     case UNOP_NEG:
3732     case UNOP_PLUS:
3733     case UNOP_LOGICAL_NOT:
3734     case UNOP_ABS:
3735       if (possible_user_operator_p (op, argvec))
3736         {
3737           std::vector<struct block_symbol> candidates;
3738           int n_candidates;
3739
3740           n_candidates =
3741             ada_lookup_symbol_list (ada_decoded_op_name (op),
3742                                     NULL, VAR_DOMAIN,
3743                                     &candidates);
3744
3745           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3746                                     nargs, ada_decoded_op_name (op), NULL,
3747                                     parse_completion);
3748           if (i < 0)
3749             break;
3750
3751           replace_operator_with_call (expp, pc, nargs, 1,
3752                                       candidates[i].symbol,
3753                                       candidates[i].block);
3754           exp = expp->get ();
3755         }
3756       break;
3757
3758     case OP_TYPE:
3759     case OP_REGISTER:
3760       return NULL;
3761     }
3762
3763   *pos = pc;
3764   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3765     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3766                                     exp->elts[pc + 1].objfile,
3767                                     exp->elts[pc + 2].msymbol);
3768   else
3769     return evaluate_subexp_type (exp, pos);
3770 }
3771
3772 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3773    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3774    a non-pointer.  */
3775 /* The term "match" here is rather loose.  The match is heuristic and
3776    liberal.  */
3777
3778 static int
3779 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3780 {
3781   ftype = ada_check_typedef (ftype);
3782   atype = ada_check_typedef (atype);
3783
3784   if (ftype->code () == TYPE_CODE_REF)
3785     ftype = TYPE_TARGET_TYPE (ftype);
3786   if (atype->code () == TYPE_CODE_REF)
3787     atype = TYPE_TARGET_TYPE (atype);
3788
3789   switch (ftype->code ())
3790     {
3791     default:
3792       return ftype->code () == atype->code ();
3793     case TYPE_CODE_PTR:
3794       if (atype->code () == TYPE_CODE_PTR)
3795         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3796                                TYPE_TARGET_TYPE (atype), 0);
3797       else
3798         return (may_deref
3799                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3800     case TYPE_CODE_INT:
3801     case TYPE_CODE_ENUM:
3802     case TYPE_CODE_RANGE:
3803       switch (atype->code ())
3804         {
3805         case TYPE_CODE_INT:
3806         case TYPE_CODE_ENUM:
3807         case TYPE_CODE_RANGE:
3808           return 1;
3809         default:
3810           return 0;
3811         }
3812
3813     case TYPE_CODE_ARRAY:
3814       return (atype->code () == TYPE_CODE_ARRAY
3815               || ada_is_array_descriptor_type (atype));
3816
3817     case TYPE_CODE_STRUCT:
3818       if (ada_is_array_descriptor_type (ftype))
3819         return (atype->code () == TYPE_CODE_ARRAY
3820                 || ada_is_array_descriptor_type (atype));
3821       else
3822         return (atype->code () == TYPE_CODE_STRUCT
3823                 && !ada_is_array_descriptor_type (atype));
3824
3825     case TYPE_CODE_UNION:
3826     case TYPE_CODE_FLT:
3827       return (atype->code () == ftype->code ());
3828     }
3829 }
3830
3831 /* Return non-zero if the formals of FUNC "sufficiently match" the
3832    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3833    may also be an enumeral, in which case it is treated as a 0-
3834    argument function.  */
3835
3836 static int
3837 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3838 {
3839   int i;
3840   struct type *func_type = SYMBOL_TYPE (func);
3841
3842   if (SYMBOL_CLASS (func) == LOC_CONST
3843       && func_type->code () == TYPE_CODE_ENUM)
3844     return (n_actuals == 0);
3845   else if (func_type == NULL || func_type->code () != TYPE_CODE_FUNC)
3846     return 0;
3847
3848   if (func_type->num_fields () != n_actuals)
3849     return 0;
3850
3851   for (i = 0; i < n_actuals; i += 1)
3852     {
3853       if (actuals[i] == NULL)
3854         return 0;
3855       else
3856         {
3857           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3858                                                                    i));
3859           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3860
3861           if (!ada_type_match (ftype, atype, 1))
3862             return 0;
3863         }
3864     }
3865   return 1;
3866 }
3867
3868 /* False iff function type FUNC_TYPE definitely does not produce a value
3869    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3870    FUNC_TYPE is not a valid function type with a non-null return type
3871    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3872
3873 static int
3874 return_match (struct type *func_type, struct type *context_type)
3875 {
3876   struct type *return_type;
3877
3878   if (func_type == NULL)
3879     return 1;
3880
3881   if (func_type->code () == TYPE_CODE_FUNC)
3882     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3883   else
3884     return_type = get_base_type (func_type);
3885   if (return_type == NULL)
3886     return 1;
3887
3888   context_type = get_base_type (context_type);
3889
3890   if (return_type->code () == TYPE_CODE_ENUM)
3891     return context_type == NULL || return_type == context_type;
3892   else if (context_type == NULL)
3893     return return_type->code () != TYPE_CODE_VOID;
3894   else
3895     return return_type->code () == context_type->code ();
3896 }
3897
3898
3899 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3900    function (if any) that matches the types of the NARGS arguments in
3901    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3902    that returns that type, then eliminate matches that don't.  If
3903    CONTEXT_TYPE is void and there is at least one match that does not
3904    return void, eliminate all matches that do.
3905
3906    Asks the user if there is more than one match remaining.  Returns -1
3907    if there is no such symbol or none is selected.  NAME is used
3908    solely for messages.  May re-arrange and modify SYMS in
3909    the process; the index returned is for the modified vector.  */
3910
3911 static int
3912 ada_resolve_function (struct block_symbol syms[],
3913                       int nsyms, struct value **args, int nargs,
3914                       const char *name, struct type *context_type,
3915                       int parse_completion)
3916 {
3917   int fallback;
3918   int k;
3919   int m;                        /* Number of hits */
3920
3921   m = 0;
3922   /* In the first pass of the loop, we only accept functions matching
3923      context_type.  If none are found, we add a second pass of the loop
3924      where every function is accepted.  */
3925   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3926     {
3927       for (k = 0; k < nsyms; k += 1)
3928         {
3929           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3930
3931           if (ada_args_match (syms[k].symbol, args, nargs)
3932               && (fallback || return_match (type, context_type)))
3933             {
3934               syms[m] = syms[k];
3935               m += 1;
3936             }
3937         }
3938     }
3939
3940   /* If we got multiple matches, ask the user which one to use.  Don't do this
3941      interactive thing during completion, though, as the purpose of the
3942      completion is providing a list of all possible matches.  Prompting the
3943      user to filter it down would be completely unexpected in this case.  */
3944   if (m == 0)
3945     return -1;
3946   else if (m > 1 && !parse_completion)
3947     {
3948       printf_filtered (_("Multiple matches for %s\n"), name);
3949       user_select_syms (syms, m, 1);
3950       return 0;
3951     }
3952   return 0;
3953 }
3954
3955 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
3956    on the function identified by SYM and BLOCK, and taking NARGS
3957    arguments.  Update *EXPP as needed to hold more space.  */
3958
3959 static void
3960 replace_operator_with_call (expression_up *expp, int pc, int nargs,
3961                             int oplen, struct symbol *sym,
3962                             const struct block *block)
3963 {
3964   /* A new expression, with 6 more elements (3 for funcall, 4 for function
3965      symbol, -oplen for operator being replaced).  */
3966   struct expression *newexp = (struct expression *)
3967     xzalloc (sizeof (struct expression)
3968              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
3969   struct expression *exp = expp->get ();
3970
3971   newexp->nelts = exp->nelts + 7 - oplen;
3972   newexp->language_defn = exp->language_defn;
3973   newexp->gdbarch = exp->gdbarch;
3974   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
3975   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
3976           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
3977
3978   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
3979   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
3980
3981   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
3982   newexp->elts[pc + 4].block = block;
3983   newexp->elts[pc + 5].symbol = sym;
3984
3985   expp->reset (newexp);
3986 }
3987
3988 /* Type-class predicates */
3989
3990 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
3991    or FLOAT).  */
3992
3993 static int
3994 numeric_type_p (struct type *type)
3995 {
3996   if (type == NULL)
3997     return 0;
3998   else
3999     {
4000       switch (type->code ())
4001         {
4002         case TYPE_CODE_INT:
4003         case TYPE_CODE_FLT:
4004           return 1;
4005         case TYPE_CODE_RANGE:
4006           return (type == TYPE_TARGET_TYPE (type)
4007                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4008         default:
4009           return 0;
4010         }
4011     }
4012 }
4013
4014 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4015
4016 static int
4017 integer_type_p (struct type *type)
4018 {
4019   if (type == NULL)
4020     return 0;
4021   else
4022     {
4023       switch (type->code ())
4024         {
4025         case TYPE_CODE_INT:
4026           return 1;
4027         case TYPE_CODE_RANGE:
4028           return (type == TYPE_TARGET_TYPE (type)
4029                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4030         default:
4031           return 0;
4032         }
4033     }
4034 }
4035
4036 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4037
4038 static int
4039 scalar_type_p (struct type *type)
4040 {
4041   if (type == NULL)
4042     return 0;
4043   else
4044     {
4045       switch (type->code ())
4046         {
4047         case TYPE_CODE_INT:
4048         case TYPE_CODE_RANGE:
4049         case TYPE_CODE_ENUM:
4050         case TYPE_CODE_FLT:
4051           return 1;
4052         default:
4053           return 0;
4054         }
4055     }
4056 }
4057
4058 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4059
4060 static int
4061 discrete_type_p (struct type *type)
4062 {
4063   if (type == NULL)
4064     return 0;
4065   else
4066     {
4067       switch (type->code ())
4068         {
4069         case TYPE_CODE_INT:
4070         case TYPE_CODE_RANGE:
4071         case TYPE_CODE_ENUM:
4072         case TYPE_CODE_BOOL:
4073           return 1;
4074         default:
4075           return 0;
4076         }
4077     }
4078 }
4079
4080 /* Returns non-zero if OP with operands in the vector ARGS could be
4081    a user-defined function.  Errs on the side of pre-defined operators
4082    (i.e., result 0).  */
4083
4084 static int
4085 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4086 {
4087   struct type *type0 =
4088     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4089   struct type *type1 =
4090     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4091
4092   if (type0 == NULL)
4093     return 0;
4094
4095   switch (op)
4096     {
4097     default:
4098       return 0;
4099
4100     case BINOP_ADD:
4101     case BINOP_SUB:
4102     case BINOP_MUL:
4103     case BINOP_DIV:
4104       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4105
4106     case BINOP_REM:
4107     case BINOP_MOD:
4108     case BINOP_BITWISE_AND:
4109     case BINOP_BITWISE_IOR:
4110     case BINOP_BITWISE_XOR:
4111       return (!(integer_type_p (type0) && integer_type_p (type1)));
4112
4113     case BINOP_EQUAL:
4114     case BINOP_NOTEQUAL:
4115     case BINOP_LESS:
4116     case BINOP_GTR:
4117     case BINOP_LEQ:
4118     case BINOP_GEQ:
4119       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4120
4121     case BINOP_CONCAT:
4122       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4123
4124     case BINOP_EXP:
4125       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4126
4127     case UNOP_NEG:
4128     case UNOP_PLUS:
4129     case UNOP_LOGICAL_NOT:
4130     case UNOP_ABS:
4131       return (!numeric_type_p (type0));
4132
4133     }
4134 }
4135 \f
4136                                 /* Renaming */
4137
4138 /* NOTES: 
4139
4140    1. In the following, we assume that a renaming type's name may
4141       have an ___XD suffix.  It would be nice if this went away at some
4142       point.
4143    2. We handle both the (old) purely type-based representation of 
4144       renamings and the (new) variable-based encoding.  At some point,
4145       it is devoutly to be hoped that the former goes away 
4146       (FIXME: hilfinger-2007-07-09).
4147    3. Subprogram renamings are not implemented, although the XRS
4148       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4149
4150 /* If SYM encodes a renaming, 
4151
4152        <renaming> renames <renamed entity>,
4153
4154    sets *LEN to the length of the renamed entity's name,
4155    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4156    the string describing the subcomponent selected from the renamed
4157    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4158    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4159    are undefined).  Otherwise, returns a value indicating the category
4160    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4161    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4162    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4163    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4164    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4165    may be NULL, in which case they are not assigned.
4166
4167    [Currently, however, GCC does not generate subprogram renamings.]  */
4168
4169 enum ada_renaming_category
4170 ada_parse_renaming (struct symbol *sym,
4171                     const char **renamed_entity, int *len, 
4172                     const char **renaming_expr)
4173 {
4174   enum ada_renaming_category kind;
4175   const char *info;
4176   const char *suffix;
4177
4178   if (sym == NULL)
4179     return ADA_NOT_RENAMING;
4180   switch (SYMBOL_CLASS (sym)) 
4181     {
4182     default:
4183       return ADA_NOT_RENAMING;
4184     case LOC_LOCAL:
4185     case LOC_STATIC:
4186     case LOC_COMPUTED:
4187     case LOC_OPTIMIZED_OUT:
4188       info = strstr (sym->linkage_name (), "___XR");
4189       if (info == NULL)
4190         return ADA_NOT_RENAMING;
4191       switch (info[5])
4192         {
4193         case '_':
4194           kind = ADA_OBJECT_RENAMING;
4195           info += 6;
4196           break;
4197         case 'E':
4198           kind = ADA_EXCEPTION_RENAMING;
4199           info += 7;
4200           break;
4201         case 'P':
4202           kind = ADA_PACKAGE_RENAMING;
4203           info += 7;
4204           break;
4205         case 'S':
4206           kind = ADA_SUBPROGRAM_RENAMING;
4207           info += 7;
4208           break;
4209         default:
4210           return ADA_NOT_RENAMING;
4211         }
4212     }
4213
4214   if (renamed_entity != NULL)
4215     *renamed_entity = info;
4216   suffix = strstr (info, "___XE");
4217   if (suffix == NULL || suffix == info)
4218     return ADA_NOT_RENAMING;
4219   if (len != NULL)
4220     *len = strlen (info) - strlen (suffix);
4221   suffix += 5;
4222   if (renaming_expr != NULL)
4223     *renaming_expr = suffix;
4224   return kind;
4225 }
4226
4227 /* Compute the value of the given RENAMING_SYM, which is expected to
4228    be a symbol encoding a renaming expression.  BLOCK is the block
4229    used to evaluate the renaming.  */
4230
4231 static struct value *
4232 ada_read_renaming_var_value (struct symbol *renaming_sym,
4233                              const struct block *block)
4234 {
4235   const char *sym_name;
4236
4237   sym_name = renaming_sym->linkage_name ();
4238   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4239   return evaluate_expression (expr.get ());
4240 }
4241 \f
4242
4243                                 /* Evaluation: Function Calls */
4244
4245 /* Return an lvalue containing the value VAL.  This is the identity on
4246    lvalues, and otherwise has the side-effect of allocating memory
4247    in the inferior where a copy of the value contents is copied.  */
4248
4249 static struct value *
4250 ensure_lval (struct value *val)
4251 {
4252   if (VALUE_LVAL (val) == not_lval
4253       || VALUE_LVAL (val) == lval_internalvar)
4254     {
4255       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4256       const CORE_ADDR addr =
4257         value_as_long (value_allocate_space_in_inferior (len));
4258
4259       VALUE_LVAL (val) = lval_memory;
4260       set_value_address (val, addr);
4261       write_memory (addr, value_contents (val), len);
4262     }
4263
4264   return val;
4265 }
4266
4267 /* Given ARG, a value of type (pointer or reference to a)*
4268    structure/union, extract the component named NAME from the ultimate
4269    target structure/union and return it as a value with its
4270    appropriate type.
4271
4272    The routine searches for NAME among all members of the structure itself
4273    and (recursively) among all members of any wrapper members
4274    (e.g., '_parent').
4275
4276    If NO_ERR, then simply return NULL in case of error, rather than
4277    calling error.  */
4278
4279 static struct value *
4280 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
4281 {
4282   struct type *t, *t1;
4283   struct value *v;
4284   int check_tag;
4285
4286   v = NULL;
4287   t1 = t = ada_check_typedef (value_type (arg));
4288   if (t->code () == TYPE_CODE_REF)
4289     {
4290       t1 = TYPE_TARGET_TYPE (t);
4291       if (t1 == NULL)
4292         goto BadValue;
4293       t1 = ada_check_typedef (t1);
4294       if (t1->code () == TYPE_CODE_PTR)
4295         {
4296           arg = coerce_ref (arg);
4297           t = t1;
4298         }
4299     }
4300
4301   while (t->code () == TYPE_CODE_PTR)
4302     {
4303       t1 = TYPE_TARGET_TYPE (t);
4304       if (t1 == NULL)
4305         goto BadValue;
4306       t1 = ada_check_typedef (t1);
4307       if (t1->code () == TYPE_CODE_PTR)
4308         {
4309           arg = value_ind (arg);
4310           t = t1;
4311         }
4312       else
4313         break;
4314     }
4315
4316   if (t1->code () != TYPE_CODE_STRUCT && t1->code () != TYPE_CODE_UNION)
4317     goto BadValue;
4318
4319   if (t1 == t)
4320     v = ada_search_struct_field (name, arg, 0, t);
4321   else
4322     {
4323       int bit_offset, bit_size, byte_offset;
4324       struct type *field_type;
4325       CORE_ADDR address;
4326
4327       if (t->code () == TYPE_CODE_PTR)
4328         address = value_address (ada_value_ind (arg));
4329       else
4330         address = value_address (ada_coerce_ref (arg));
4331
4332       /* Check to see if this is a tagged type.  We also need to handle
4333          the case where the type is a reference to a tagged type, but
4334          we have to be careful to exclude pointers to tagged types.
4335          The latter should be shown as usual (as a pointer), whereas
4336          a reference should mostly be transparent to the user.  */
4337
4338       if (ada_is_tagged_type (t1, 0)
4339           || (t1->code () == TYPE_CODE_REF
4340               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
4341         {
4342           /* We first try to find the searched field in the current type.
4343              If not found then let's look in the fixed type.  */
4344
4345           if (!find_struct_field (name, t1, 0,
4346                                   &field_type, &byte_offset, &bit_offset,
4347                                   &bit_size, NULL))
4348             check_tag = 1;
4349           else
4350             check_tag = 0;
4351         }
4352       else
4353         check_tag = 0;
4354
4355       /* Convert to fixed type in all cases, so that we have proper
4356          offsets to each field in unconstrained record types.  */
4357       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
4358                               address, NULL, check_tag);
4359
4360       if (find_struct_field (name, t1, 0,
4361                              &field_type, &byte_offset, &bit_offset,
4362                              &bit_size, NULL))
4363         {
4364           if (bit_size != 0)
4365             {
4366               if (t->code () == TYPE_CODE_REF)
4367                 arg = ada_coerce_ref (arg);
4368               else
4369                 arg = ada_value_ind (arg);
4370               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
4371                                                   bit_offset, bit_size,
4372                                                   field_type);
4373             }
4374           else
4375             v = value_at_lazy (field_type, address + byte_offset);
4376         }
4377     }
4378
4379   if (v != NULL || no_err)
4380     return v;
4381   else
4382     error (_("There is no member named %s."), name);
4383
4384  BadValue:
4385   if (no_err)
4386     return NULL;
4387   else
4388     error (_("Attempt to extract a component of "
4389              "a value that is not a record."));
4390 }
4391
4392 /* Return the value ACTUAL, converted to be an appropriate value for a
4393    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4394    allocating any necessary descriptors (fat pointers), or copies of
4395    values not residing in memory, updating it as needed.  */
4396
4397 struct value *
4398 ada_convert_actual (struct value *actual, struct type *formal_type0)
4399 {
4400   struct type *actual_type = ada_check_typedef (value_type (actual));
4401   struct type *formal_type = ada_check_typedef (formal_type0);
4402   struct type *formal_target =
4403     formal_type->code () == TYPE_CODE_PTR
4404     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4405   struct type *actual_target =
4406     actual_type->code () == TYPE_CODE_PTR
4407     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4408
4409   if (ada_is_array_descriptor_type (formal_target)
4410       && actual_target->code () == TYPE_CODE_ARRAY)
4411     return make_array_descriptor (formal_type, actual);
4412   else if (formal_type->code () == TYPE_CODE_PTR
4413            || formal_type->code () == TYPE_CODE_REF)
4414     {
4415       struct value *result;
4416
4417       if (formal_target->code () == TYPE_CODE_ARRAY
4418           && ada_is_array_descriptor_type (actual_target))
4419         result = desc_data (actual);
4420       else if (formal_type->code () != TYPE_CODE_PTR)
4421         {
4422           if (VALUE_LVAL (actual) != lval_memory)
4423             {
4424               struct value *val;
4425
4426               actual_type = ada_check_typedef (value_type (actual));
4427               val = allocate_value (actual_type);
4428               memcpy ((char *) value_contents_raw (val),
4429                       (char *) value_contents (actual),
4430                       TYPE_LENGTH (actual_type));
4431               actual = ensure_lval (val);
4432             }
4433           result = value_addr (actual);
4434         }
4435       else
4436         return actual;
4437       return value_cast_pointers (formal_type, result, 0);
4438     }
4439   else if (actual_type->code () == TYPE_CODE_PTR)
4440     return ada_value_ind (actual);
4441   else if (ada_is_aligner_type (formal_type))
4442     {
4443       /* We need to turn this parameter into an aligner type
4444          as well.  */
4445       struct value *aligner = allocate_value (formal_type);
4446       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4447
4448       value_assign_to_component (aligner, component, actual);
4449       return aligner;
4450     }
4451
4452   return actual;
4453 }
4454
4455 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4456    type TYPE.  This is usually an inefficient no-op except on some targets
4457    (such as AVR) where the representation of a pointer and an address
4458    differs.  */
4459
4460 static CORE_ADDR
4461 value_pointer (struct value *value, struct type *type)
4462 {
4463   struct gdbarch *gdbarch = get_type_arch (type);
4464   unsigned len = TYPE_LENGTH (type);
4465   gdb_byte *buf = (gdb_byte *) alloca (len);
4466   CORE_ADDR addr;
4467
4468   addr = value_address (value);
4469   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4470   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
4471   return addr;
4472 }
4473
4474
4475 /* Push a descriptor of type TYPE for array value ARR on the stack at
4476    *SP, updating *SP to reflect the new descriptor.  Return either
4477    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4478    to-descriptor type rather than a descriptor type), a struct value *
4479    representing a pointer to this descriptor.  */
4480
4481 static struct value *
4482 make_array_descriptor (struct type *type, struct value *arr)
4483 {
4484   struct type *bounds_type = desc_bounds_type (type);
4485   struct type *desc_type = desc_base_type (type);
4486   struct value *descriptor = allocate_value (desc_type);
4487   struct value *bounds = allocate_value (bounds_type);
4488   int i;
4489
4490   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4491        i > 0; i -= 1)
4492     {
4493       modify_field (value_type (bounds), value_contents_writeable (bounds),
4494                     ada_array_bound (arr, i, 0),
4495                     desc_bound_bitpos (bounds_type, i, 0),
4496                     desc_bound_bitsize (bounds_type, i, 0));
4497       modify_field (value_type (bounds), value_contents_writeable (bounds),
4498                     ada_array_bound (arr, i, 1),
4499                     desc_bound_bitpos (bounds_type, i, 1),
4500                     desc_bound_bitsize (bounds_type, i, 1));
4501     }
4502
4503   bounds = ensure_lval (bounds);
4504
4505   modify_field (value_type (descriptor),
4506                 value_contents_writeable (descriptor),
4507                 value_pointer (ensure_lval (arr),
4508                                TYPE_FIELD_TYPE (desc_type, 0)),
4509                 fat_pntr_data_bitpos (desc_type),
4510                 fat_pntr_data_bitsize (desc_type));
4511
4512   modify_field (value_type (descriptor),
4513                 value_contents_writeable (descriptor),
4514                 value_pointer (bounds,
4515                                TYPE_FIELD_TYPE (desc_type, 1)),
4516                 fat_pntr_bounds_bitpos (desc_type),
4517                 fat_pntr_bounds_bitsize (desc_type));
4518
4519   descriptor = ensure_lval (descriptor);
4520
4521   if (type->code () == TYPE_CODE_PTR)
4522     return value_addr (descriptor);
4523   else
4524     return descriptor;
4525 }
4526 \f
4527                                 /* Symbol Cache Module */
4528
4529 /* Performance measurements made as of 2010-01-15 indicate that
4530    this cache does bring some noticeable improvements.  Depending
4531    on the type of entity being printed, the cache can make it as much
4532    as an order of magnitude faster than without it.
4533
4534    The descriptive type DWARF extension has significantly reduced
4535    the need for this cache, at least when DWARF is being used.  However,
4536    even in this case, some expensive name-based symbol searches are still
4537    sometimes necessary - to find an XVZ variable, mostly.  */
4538
4539 /* Initialize the contents of SYM_CACHE.  */
4540
4541 static void
4542 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4543 {
4544   obstack_init (&sym_cache->cache_space);
4545   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4546 }
4547
4548 /* Free the memory used by SYM_CACHE.  */
4549
4550 static void
4551 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4552 {
4553   obstack_free (&sym_cache->cache_space, NULL);
4554   xfree (sym_cache);
4555 }
4556
4557 /* Return the symbol cache associated to the given program space PSPACE.
4558    If not allocated for this PSPACE yet, allocate and initialize one.  */
4559
4560 static struct ada_symbol_cache *
4561 ada_get_symbol_cache (struct program_space *pspace)
4562 {
4563   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4564
4565   if (pspace_data->sym_cache == NULL)
4566     {
4567       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4568       ada_init_symbol_cache (pspace_data->sym_cache);
4569     }
4570
4571   return pspace_data->sym_cache;
4572 }
4573
4574 /* Clear all entries from the symbol cache.  */
4575
4576 static void
4577 ada_clear_symbol_cache (void)
4578 {
4579   struct ada_symbol_cache *sym_cache
4580     = ada_get_symbol_cache (current_program_space);
4581
4582   obstack_free (&sym_cache->cache_space, NULL);
4583   ada_init_symbol_cache (sym_cache);
4584 }
4585
4586 /* Search our cache for an entry matching NAME and DOMAIN.
4587    Return it if found, or NULL otherwise.  */
4588
4589 static struct cache_entry **
4590 find_entry (const char *name, domain_enum domain)
4591 {
4592   struct ada_symbol_cache *sym_cache
4593     = ada_get_symbol_cache (current_program_space);
4594   int h = msymbol_hash (name) % HASH_SIZE;
4595   struct cache_entry **e;
4596
4597   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4598     {
4599       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4600         return e;
4601     }
4602   return NULL;
4603 }
4604
4605 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4606    Return 1 if found, 0 otherwise.
4607
4608    If an entry was found and SYM is not NULL, set *SYM to the entry's
4609    SYM.  Same principle for BLOCK if not NULL.  */
4610
4611 static int
4612 lookup_cached_symbol (const char *name, domain_enum domain,
4613                       struct symbol **sym, const struct block **block)
4614 {
4615   struct cache_entry **e = find_entry (name, domain);
4616
4617   if (e == NULL)
4618     return 0;
4619   if (sym != NULL)
4620     *sym = (*e)->sym;
4621   if (block != NULL)
4622     *block = (*e)->block;
4623   return 1;
4624 }
4625
4626 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4627    in domain DOMAIN, save this result in our symbol cache.  */
4628
4629 static void
4630 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4631               const struct block *block)
4632 {
4633   struct ada_symbol_cache *sym_cache
4634     = ada_get_symbol_cache (current_program_space);
4635   int h;
4636   struct cache_entry *e;
4637
4638   /* Symbols for builtin types don't have a block.
4639      For now don't cache such symbols.  */
4640   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4641     return;
4642
4643   /* If the symbol is a local symbol, then do not cache it, as a search
4644      for that symbol depends on the context.  To determine whether
4645      the symbol is local or not, we check the block where we found it
4646      against the global and static blocks of its associated symtab.  */
4647   if (sym
4648       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4649                             GLOBAL_BLOCK) != block
4650       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4651                             STATIC_BLOCK) != block)
4652     return;
4653
4654   h = msymbol_hash (name) % HASH_SIZE;
4655   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4656   e->next = sym_cache->root[h];
4657   sym_cache->root[h] = e;
4658   e->name = obstack_strdup (&sym_cache->cache_space, name);
4659   e->sym = sym;
4660   e->domain = domain;
4661   e->block = block;
4662 }
4663 \f
4664                                 /* Symbol Lookup */
4665
4666 /* Return the symbol name match type that should be used used when
4667    searching for all symbols matching LOOKUP_NAME.
4668
4669    LOOKUP_NAME is expected to be a symbol name after transformation
4670    for Ada lookups.  */
4671
4672 static symbol_name_match_type
4673 name_match_type_from_name (const char *lookup_name)
4674 {
4675   return (strstr (lookup_name, "__") == NULL
4676           ? symbol_name_match_type::WILD
4677           : symbol_name_match_type::FULL);
4678 }
4679
4680 /* Return the result of a standard (literal, C-like) lookup of NAME in
4681    given DOMAIN, visible from lexical block BLOCK.  */
4682
4683 static struct symbol *
4684 standard_lookup (const char *name, const struct block *block,
4685                  domain_enum domain)
4686 {
4687   /* Initialize it just to avoid a GCC false warning.  */
4688   struct block_symbol sym = {};
4689
4690   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4691     return sym.symbol;
4692   ada_lookup_encoded_symbol (name, block, domain, &sym);
4693   cache_symbol (name, domain, sym.symbol, sym.block);
4694   return sym.symbol;
4695 }
4696
4697
4698 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4699    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4700    since they contend in overloading in the same way.  */
4701 static int
4702 is_nonfunction (struct block_symbol syms[], int n)
4703 {
4704   int i;
4705
4706   for (i = 0; i < n; i += 1)
4707     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_FUNC
4708         && (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM
4709             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4710       return 1;
4711
4712   return 0;
4713 }
4714
4715 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4716    struct types.  Otherwise, they may not.  */
4717
4718 static int
4719 equiv_types (struct type *type0, struct type *type1)
4720 {
4721   if (type0 == type1)
4722     return 1;
4723   if (type0 == NULL || type1 == NULL
4724       || type0->code () != type1->code ())
4725     return 0;
4726   if ((type0->code () == TYPE_CODE_STRUCT
4727        || type0->code () == TYPE_CODE_ENUM)
4728       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4729       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4730     return 1;
4731
4732   return 0;
4733 }
4734
4735 /* True iff SYM0 represents the same entity as SYM1, or one that is
4736    no more defined than that of SYM1.  */
4737
4738 static int
4739 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4740 {
4741   if (sym0 == sym1)
4742     return 1;
4743   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4744       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4745     return 0;
4746
4747   switch (SYMBOL_CLASS (sym0))
4748     {
4749     case LOC_UNDEF:
4750       return 1;
4751     case LOC_TYPEDEF:
4752       {
4753         struct type *type0 = SYMBOL_TYPE (sym0);
4754         struct type *type1 = SYMBOL_TYPE (sym1);
4755         const char *name0 = sym0->linkage_name ();
4756         const char *name1 = sym1->linkage_name ();
4757         int len0 = strlen (name0);
4758
4759         return
4760           type0->code () == type1->code ()
4761           && (equiv_types (type0, type1)
4762               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4763                   && startswith (name1 + len0, "___XV")));
4764       }
4765     case LOC_CONST:
4766       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4767         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4768
4769     case LOC_STATIC:
4770       {
4771         const char *name0 = sym0->linkage_name ();
4772         const char *name1 = sym1->linkage_name ();
4773         return (strcmp (name0, name1) == 0
4774                 && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
4775       }
4776
4777     default:
4778       return 0;
4779     }
4780 }
4781
4782 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4783    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4784
4785 static void
4786 add_defn_to_vec (struct obstack *obstackp,
4787                  struct symbol *sym,
4788                  const struct block *block)
4789 {
4790   int i;
4791   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4792
4793   /* Do not try to complete stub types, as the debugger is probably
4794      already scanning all symbols matching a certain name at the
4795      time when this function is called.  Trying to replace the stub
4796      type by its associated full type will cause us to restart a scan
4797      which may lead to an infinite recursion.  Instead, the client
4798      collecting the matching symbols will end up collecting several
4799      matches, with at least one of them complete.  It can then filter
4800      out the stub ones if needed.  */
4801
4802   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4803     {
4804       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4805         return;
4806       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4807         {
4808           prevDefns[i].symbol = sym;
4809           prevDefns[i].block = block;
4810           return;
4811         }
4812     }
4813
4814   {
4815     struct block_symbol info;
4816
4817     info.symbol = sym;
4818     info.block = block;
4819     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4820   }
4821 }
4822
4823 /* Number of block_symbol structures currently collected in current vector in
4824    OBSTACKP.  */
4825
4826 static int
4827 num_defns_collected (struct obstack *obstackp)
4828 {
4829   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4830 }
4831
4832 /* Vector of block_symbol structures currently collected in current vector in
4833    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4834
4835 static struct block_symbol *
4836 defns_collected (struct obstack *obstackp, int finish)
4837 {
4838   if (finish)
4839     return (struct block_symbol *) obstack_finish (obstackp);
4840   else
4841     return (struct block_symbol *) obstack_base (obstackp);
4842 }
4843
4844 /* Return a bound minimal symbol matching NAME according to Ada
4845    decoding rules.  Returns an invalid symbol if there is no such
4846    minimal symbol.  Names prefixed with "standard__" are handled
4847    specially: "standard__" is first stripped off, and only static and
4848    global symbols are searched.  */
4849
4850 struct bound_minimal_symbol
4851 ada_lookup_simple_minsym (const char *name)
4852 {
4853   struct bound_minimal_symbol result;
4854
4855   memset (&result, 0, sizeof (result));
4856
4857   symbol_name_match_type match_type = name_match_type_from_name (name);
4858   lookup_name_info lookup_name (name, match_type);
4859
4860   symbol_name_matcher_ftype *match_name
4861     = ada_get_symbol_name_matcher (lookup_name);
4862
4863   for (objfile *objfile : current_program_space->objfiles ())
4864     {
4865       for (minimal_symbol *msymbol : objfile->msymbols ())
4866         {
4867           if (match_name (msymbol->linkage_name (), lookup_name, NULL)
4868               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4869             {
4870               result.minsym = msymbol;
4871               result.objfile = objfile;
4872               break;
4873             }
4874         }
4875     }
4876
4877   return result;
4878 }
4879
4880 /* For all subprograms that statically enclose the subprogram of the
4881    selected frame, add symbols matching identifier NAME in DOMAIN
4882    and their blocks to the list of data in OBSTACKP, as for
4883    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4884    with a wildcard prefix.  */
4885
4886 static void
4887 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4888                                   const lookup_name_info &lookup_name,
4889                                   domain_enum domain)
4890 {
4891 }
4892
4893 /* True if TYPE is definitely an artificial type supplied to a symbol
4894    for which no debugging information was given in the symbol file.  */
4895
4896 static int
4897 is_nondebugging_type (struct type *type)
4898 {
4899   const char *name = ada_type_name (type);
4900
4901   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4902 }
4903
4904 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4905    that are deemed "identical" for practical purposes.
4906
4907    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4908    types and that their number of enumerals is identical (in other
4909    words, type1->num_fields () == type2->num_fields ()).  */
4910
4911 static int
4912 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4913 {
4914   int i;
4915
4916   /* The heuristic we use here is fairly conservative.  We consider
4917      that 2 enumerate types are identical if they have the same
4918      number of enumerals and that all enumerals have the same
4919      underlying value and name.  */
4920
4921   /* All enums in the type should have an identical underlying value.  */
4922   for (i = 0; i < type1->num_fields (); i++)
4923     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4924       return 0;
4925
4926   /* All enumerals should also have the same name (modulo any numerical
4927      suffix).  */
4928   for (i = 0; i < type1->num_fields (); i++)
4929     {
4930       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4931       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4932       int len_1 = strlen (name_1);
4933       int len_2 = strlen (name_2);
4934
4935       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4936       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4937       if (len_1 != len_2
4938           || strncmp (TYPE_FIELD_NAME (type1, i),
4939                       TYPE_FIELD_NAME (type2, i),
4940                       len_1) != 0)
4941         return 0;
4942     }
4943
4944   return 1;
4945 }
4946
4947 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4948    that are deemed "identical" for practical purposes.  Sometimes,
4949    enumerals are not strictly identical, but their types are so similar
4950    that they can be considered identical.
4951
4952    For instance, consider the following code:
4953
4954       type Color is (Black, Red, Green, Blue, White);
4955       type RGB_Color is new Color range Red .. Blue;
4956
4957    Type RGB_Color is a subrange of an implicit type which is a copy
4958    of type Color. If we call that implicit type RGB_ColorB ("B" is
4959    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4960    As a result, when an expression references any of the enumeral
4961    by name (Eg. "print green"), the expression is technically
4962    ambiguous and the user should be asked to disambiguate. But
4963    doing so would only hinder the user, since it wouldn't matter
4964    what choice he makes, the outcome would always be the same.
4965    So, for practical purposes, we consider them as the same.  */
4966
4967 static int
4968 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
4969 {
4970   int i;
4971
4972   /* Before performing a thorough comparison check of each type,
4973      we perform a series of inexpensive checks.  We expect that these
4974      checks will quickly fail in the vast majority of cases, and thus
4975      help prevent the unnecessary use of a more expensive comparison.
4976      Said comparison also expects us to make some of these checks
4977      (see ada_identical_enum_types_p).  */
4978
4979   /* Quick check: All symbols should have an enum type.  */
4980   for (i = 0; i < syms.size (); i++)
4981     if (SYMBOL_TYPE (syms[i].symbol)->code () != TYPE_CODE_ENUM)
4982       return 0;
4983
4984   /* Quick check: They should all have the same value.  */
4985   for (i = 1; i < syms.size (); i++)
4986     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4987       return 0;
4988
4989   /* Quick check: They should all have the same number of enumerals.  */
4990   for (i = 1; i < syms.size (); i++)
4991     if (SYMBOL_TYPE (syms[i].symbol)->num_fields ()
4992         != SYMBOL_TYPE (syms[0].symbol)->num_fields ())
4993       return 0;
4994
4995   /* All the sanity checks passed, so we might have a set of
4996      identical enumeration types.  Perform a more complete
4997      comparison of the type of each symbol.  */
4998   for (i = 1; i < syms.size (); i++)
4999     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5000                                      SYMBOL_TYPE (syms[0].symbol)))
5001       return 0;
5002
5003   return 1;
5004 }
5005
5006 /* Remove any non-debugging symbols in SYMS that definitely
5007    duplicate other symbols in the list (The only case I know of where
5008    this happens is when object files containing stabs-in-ecoff are
5009    linked with files containing ordinary ecoff debugging symbols (or no
5010    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5011    Returns the number of items in the modified list.  */
5012
5013 static int
5014 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5015 {
5016   int i, j;
5017
5018   /* We should never be called with less than 2 symbols, as there
5019      cannot be any extra symbol in that case.  But it's easy to
5020      handle, since we have nothing to do in that case.  */
5021   if (syms->size () < 2)
5022     return syms->size ();
5023
5024   i = 0;
5025   while (i < syms->size ())
5026     {
5027       int remove_p = 0;
5028
5029       /* If two symbols have the same name and one of them is a stub type,
5030          the get rid of the stub.  */
5031
5032       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5033           && (*syms)[i].symbol->linkage_name () != NULL)
5034         {
5035           for (j = 0; j < syms->size (); j++)
5036             {
5037               if (j != i
5038                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5039                   && (*syms)[j].symbol->linkage_name () != NULL
5040                   && strcmp ((*syms)[i].symbol->linkage_name (),
5041                              (*syms)[j].symbol->linkage_name ()) == 0)
5042                 remove_p = 1;
5043             }
5044         }
5045
5046       /* Two symbols with the same name, same class and same address
5047          should be identical.  */
5048
5049       else if ((*syms)[i].symbol->linkage_name () != NULL
5050           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5051           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5052         {
5053           for (j = 0; j < syms->size (); j += 1)
5054             {
5055               if (i != j
5056                   && (*syms)[j].symbol->linkage_name () != NULL
5057                   && strcmp ((*syms)[i].symbol->linkage_name (),
5058                              (*syms)[j].symbol->linkage_name ()) == 0
5059                   && SYMBOL_CLASS ((*syms)[i].symbol)
5060                        == SYMBOL_CLASS ((*syms)[j].symbol)
5061                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5062                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5063                 remove_p = 1;
5064             }
5065         }
5066       
5067       if (remove_p)
5068         syms->erase (syms->begin () + i);
5069
5070       i += 1;
5071     }
5072
5073   /* If all the remaining symbols are identical enumerals, then
5074      just keep the first one and discard the rest.
5075
5076      Unlike what we did previously, we do not discard any entry
5077      unless they are ALL identical.  This is because the symbol
5078      comparison is not a strict comparison, but rather a practical
5079      comparison.  If all symbols are considered identical, then
5080      we can just go ahead and use the first one and discard the rest.
5081      But if we cannot reduce the list to a single element, we have
5082      to ask the user to disambiguate anyways.  And if we have to
5083      present a multiple-choice menu, it's less confusing if the list
5084      isn't missing some choices that were identical and yet distinct.  */
5085   if (symbols_are_identical_enums (*syms))
5086     syms->resize (1);
5087
5088   return syms->size ();
5089 }
5090
5091 /* Given a type that corresponds to a renaming entity, use the type name
5092    to extract the scope (package name or function name, fully qualified,
5093    and following the GNAT encoding convention) where this renaming has been
5094    defined.  */
5095
5096 static std::string
5097 xget_renaming_scope (struct type *renaming_type)
5098 {
5099   /* The renaming types adhere to the following convention:
5100      <scope>__<rename>___<XR extension>.
5101      So, to extract the scope, we search for the "___XR" extension,
5102      and then backtrack until we find the first "__".  */
5103
5104   const char *name = renaming_type->name ();
5105   const char *suffix = strstr (name, "___XR");
5106   const char *last;
5107
5108   /* Now, backtrack a bit until we find the first "__".  Start looking
5109      at suffix - 3, as the <rename> part is at least one character long.  */
5110
5111   for (last = suffix - 3; last > name; last--)
5112     if (last[0] == '_' && last[1] == '_')
5113       break;
5114
5115   /* Make a copy of scope and return it.  */
5116   return std::string (name, last);
5117 }
5118
5119 /* Return nonzero if NAME corresponds to a package name.  */
5120
5121 static int
5122 is_package_name (const char *name)
5123 {
5124   /* Here, We take advantage of the fact that no symbols are generated
5125      for packages, while symbols are generated for each function.
5126      So the condition for NAME represent a package becomes equivalent
5127      to NAME not existing in our list of symbols.  There is only one
5128      small complication with library-level functions (see below).  */
5129
5130   /* If it is a function that has not been defined at library level,
5131      then we should be able to look it up in the symbols.  */
5132   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5133     return 0;
5134
5135   /* Library-level function names start with "_ada_".  See if function
5136      "_ada_" followed by NAME can be found.  */
5137
5138   /* Do a quick check that NAME does not contain "__", since library-level
5139      functions names cannot contain "__" in them.  */
5140   if (strstr (name, "__") != NULL)
5141     return 0;
5142
5143   std::string fun_name = string_printf ("_ada_%s", name);
5144
5145   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5146 }
5147
5148 /* Return nonzero if SYM corresponds to a renaming entity that is
5149    not visible from FUNCTION_NAME.  */
5150
5151 static int
5152 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5153 {
5154   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5155     return 0;
5156
5157   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5158
5159   /* If the rename has been defined in a package, then it is visible.  */
5160   if (is_package_name (scope.c_str ()))
5161     return 0;
5162
5163   /* Check that the rename is in the current function scope by checking
5164      that its name starts with SCOPE.  */
5165
5166   /* If the function name starts with "_ada_", it means that it is
5167      a library-level function.  Strip this prefix before doing the
5168      comparison, as the encoding for the renaming does not contain
5169      this prefix.  */
5170   if (startswith (function_name, "_ada_"))
5171     function_name += 5;
5172
5173   return !startswith (function_name, scope.c_str ());
5174 }
5175
5176 /* Remove entries from SYMS that corresponds to a renaming entity that
5177    is not visible from the function associated with CURRENT_BLOCK or
5178    that is superfluous due to the presence of more specific renaming
5179    information.  Places surviving symbols in the initial entries of
5180    SYMS and returns the number of surviving symbols.
5181    
5182    Rationale:
5183    First, in cases where an object renaming is implemented as a
5184    reference variable, GNAT may produce both the actual reference
5185    variable and the renaming encoding.  In this case, we discard the
5186    latter.
5187
5188    Second, GNAT emits a type following a specified encoding for each renaming
5189    entity.  Unfortunately, STABS currently does not support the definition
5190    of types that are local to a given lexical block, so all renamings types
5191    are emitted at library level.  As a consequence, if an application
5192    contains two renaming entities using the same name, and a user tries to
5193    print the value of one of these entities, the result of the ada symbol
5194    lookup will also contain the wrong renaming type.
5195
5196    This function partially covers for this limitation by attempting to
5197    remove from the SYMS list renaming symbols that should be visible
5198    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5199    method with the current information available.  The implementation
5200    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5201    
5202       - When the user tries to print a rename in a function while there
5203         is another rename entity defined in a package:  Normally, the
5204         rename in the function has precedence over the rename in the
5205         package, so the latter should be removed from the list.  This is
5206         currently not the case.
5207         
5208       - This function will incorrectly remove valid renames if
5209         the CURRENT_BLOCK corresponds to a function which symbol name
5210         has been changed by an "Export" pragma.  As a consequence,
5211         the user will be unable to print such rename entities.  */
5212
5213 static int
5214 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5215                              const struct block *current_block)
5216 {
5217   struct symbol *current_function;
5218   const char *current_function_name;
5219   int i;
5220   int is_new_style_renaming;
5221
5222   /* If there is both a renaming foo___XR... encoded as a variable and
5223      a simple variable foo in the same block, discard the latter.
5224      First, zero out such symbols, then compress.  */
5225   is_new_style_renaming = 0;
5226   for (i = 0; i < syms->size (); i += 1)
5227     {
5228       struct symbol *sym = (*syms)[i].symbol;
5229       const struct block *block = (*syms)[i].block;
5230       const char *name;
5231       const char *suffix;
5232
5233       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5234         continue;
5235       name = sym->linkage_name ();
5236       suffix = strstr (name, "___XR");
5237
5238       if (suffix != NULL)
5239         {
5240           int name_len = suffix - name;
5241           int j;
5242
5243           is_new_style_renaming = 1;
5244           for (j = 0; j < syms->size (); j += 1)
5245             if (i != j && (*syms)[j].symbol != NULL
5246                 && strncmp (name, (*syms)[j].symbol->linkage_name (),
5247                             name_len) == 0
5248                 && block == (*syms)[j].block)
5249               (*syms)[j].symbol = NULL;
5250         }
5251     }
5252   if (is_new_style_renaming)
5253     {
5254       int j, k;
5255
5256       for (j = k = 0; j < syms->size (); j += 1)
5257         if ((*syms)[j].symbol != NULL)
5258             {
5259               (*syms)[k] = (*syms)[j];
5260               k += 1;
5261             }
5262       return k;
5263     }
5264
5265   /* Extract the function name associated to CURRENT_BLOCK.
5266      Abort if unable to do so.  */
5267
5268   if (current_block == NULL)
5269     return syms->size ();
5270
5271   current_function = block_linkage_function (current_block);
5272   if (current_function == NULL)
5273     return syms->size ();
5274
5275   current_function_name = current_function->linkage_name ();
5276   if (current_function_name == NULL)
5277     return syms->size ();
5278
5279   /* Check each of the symbols, and remove it from the list if it is
5280      a type corresponding to a renaming that is out of the scope of
5281      the current block.  */
5282
5283   i = 0;
5284   while (i < syms->size ())
5285     {
5286       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5287           == ADA_OBJECT_RENAMING
5288           && old_renaming_is_invisible ((*syms)[i].symbol,
5289                                         current_function_name))
5290         syms->erase (syms->begin () + i);
5291       else
5292         i += 1;
5293     }
5294
5295   return syms->size ();
5296 }
5297
5298 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5299    whose name and domain match NAME and DOMAIN respectively.
5300    If no match was found, then extend the search to "enclosing"
5301    routines (in other words, if we're inside a nested function,
5302    search the symbols defined inside the enclosing functions).
5303    If WILD_MATCH_P is nonzero, perform the naming matching in
5304    "wild" mode (see function "wild_match" for more info).
5305
5306    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5307
5308 static void
5309 ada_add_local_symbols (struct obstack *obstackp,
5310                        const lookup_name_info &lookup_name,
5311                        const struct block *block, domain_enum domain)
5312 {
5313   int block_depth = 0;
5314
5315   while (block != NULL)
5316     {
5317       block_depth += 1;
5318       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5319
5320       /* If we found a non-function match, assume that's the one.  */
5321       if (is_nonfunction (defns_collected (obstackp, 0),
5322                           num_defns_collected (obstackp)))
5323         return;
5324
5325       block = BLOCK_SUPERBLOCK (block);
5326     }
5327
5328   /* If no luck so far, try to find NAME as a local symbol in some lexically
5329      enclosing subprogram.  */
5330   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5331     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5332 }
5333
5334 /* An object of this type is used as the user_data argument when
5335    calling the map_matching_symbols method.  */
5336
5337 struct match_data
5338 {
5339   struct objfile *objfile;
5340   struct obstack *obstackp;
5341   struct symbol *arg_sym;
5342   int found_sym;
5343 };
5344
5345 /* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
5346    to a list of symbols.  DATA is a pointer to a struct match_data *
5347    containing the obstack that collects the symbol list, the file that SYM
5348    must come from, a flag indicating whether a non-argument symbol has
5349    been found in the current block, and the last argument symbol
5350    passed in SYM within the current block (if any).  When SYM is null,
5351    marking the end of a block, the argument symbol is added if no
5352    other has been found.  */
5353
5354 static bool
5355 aux_add_nonlocal_symbols (struct block_symbol *bsym,
5356                           struct match_data *data)
5357 {
5358   const struct block *block = bsym->block;
5359   struct symbol *sym = bsym->symbol;
5360
5361   if (sym == NULL)
5362     {
5363       if (!data->found_sym && data->arg_sym != NULL) 
5364         add_defn_to_vec (data->obstackp,
5365                          fixup_symbol_section (data->arg_sym, data->objfile),
5366                          block);
5367       data->found_sym = 0;
5368       data->arg_sym = NULL;
5369     }
5370   else 
5371     {
5372       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5373         return true;
5374       else if (SYMBOL_IS_ARGUMENT (sym))
5375         data->arg_sym = sym;
5376       else
5377         {
5378           data->found_sym = 1;
5379           add_defn_to_vec (data->obstackp,
5380                            fixup_symbol_section (sym, data->objfile),
5381                            block);
5382         }
5383     }
5384   return true;
5385 }
5386
5387 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5388    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5389    symbols to OBSTACKP.  Return whether we found such symbols.  */
5390
5391 static int
5392 ada_add_block_renamings (struct obstack *obstackp,
5393                          const struct block *block,
5394                          const lookup_name_info &lookup_name,
5395                          domain_enum domain)
5396 {
5397   struct using_direct *renaming;
5398   int defns_mark = num_defns_collected (obstackp);
5399
5400   symbol_name_matcher_ftype *name_match
5401     = ada_get_symbol_name_matcher (lookup_name);
5402
5403   for (renaming = block_using (block);
5404        renaming != NULL;
5405        renaming = renaming->next)
5406     {
5407       const char *r_name;
5408
5409       /* Avoid infinite recursions: skip this renaming if we are actually
5410          already traversing it.
5411
5412          Currently, symbol lookup in Ada don't use the namespace machinery from
5413          C++/Fortran support: skip namespace imports that use them.  */
5414       if (renaming->searched
5415           || (renaming->import_src != NULL
5416               && renaming->import_src[0] != '\0')
5417           || (renaming->import_dest != NULL
5418               && renaming->import_dest[0] != '\0'))
5419         continue;
5420       renaming->searched = 1;
5421
5422       /* TODO: here, we perform another name-based symbol lookup, which can
5423          pull its own multiple overloads.  In theory, we should be able to do
5424          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5425          not a simple name.  But in order to do this, we would need to enhance
5426          the DWARF reader to associate a symbol to this renaming, instead of a
5427          name.  So, for now, we do something simpler: re-use the C++/Fortran
5428          namespace machinery.  */
5429       r_name = (renaming->alias != NULL
5430                 ? renaming->alias
5431                 : renaming->declaration);
5432       if (name_match (r_name, lookup_name, NULL))
5433         {
5434           lookup_name_info decl_lookup_name (renaming->declaration,
5435                                              lookup_name.match_type ());
5436           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5437                                1, NULL);
5438         }
5439       renaming->searched = 0;
5440     }
5441   return num_defns_collected (obstackp) != defns_mark;
5442 }
5443
5444 /* Implements compare_names, but only applying the comparision using
5445    the given CASING.  */
5446
5447 static int
5448 compare_names_with_case (const char *string1, const char *string2,
5449                          enum case_sensitivity casing)
5450 {
5451   while (*string1 != '\0' && *string2 != '\0')
5452     {
5453       char c1, c2;
5454
5455       if (isspace (*string1) || isspace (*string2))
5456         return strcmp_iw_ordered (string1, string2);
5457
5458       if (casing == case_sensitive_off)
5459         {
5460           c1 = tolower (*string1);
5461           c2 = tolower (*string2);
5462         }
5463       else
5464         {
5465           c1 = *string1;
5466           c2 = *string2;
5467         }
5468       if (c1 != c2)
5469         break;
5470
5471       string1 += 1;
5472       string2 += 1;
5473     }
5474
5475   switch (*string1)
5476     {
5477     case '(':
5478       return strcmp_iw_ordered (string1, string2);
5479     case '_':
5480       if (*string2 == '\0')
5481         {
5482           if (is_name_suffix (string1))
5483             return 0;
5484           else
5485             return 1;
5486         }
5487       /* FALLTHROUGH */
5488     default:
5489       if (*string2 == '(')
5490         return strcmp_iw_ordered (string1, string2);
5491       else
5492         {
5493           if (casing == case_sensitive_off)
5494             return tolower (*string1) - tolower (*string2);
5495           else
5496             return *string1 - *string2;
5497         }
5498     }
5499 }
5500
5501 /* Compare STRING1 to STRING2, with results as for strcmp.
5502    Compatible with strcmp_iw_ordered in that...
5503
5504        strcmp_iw_ordered (STRING1, STRING2) <= 0
5505
5506    ... implies...
5507
5508        compare_names (STRING1, STRING2) <= 0
5509
5510    (they may differ as to what symbols compare equal).  */
5511
5512 static int
5513 compare_names (const char *string1, const char *string2)
5514 {
5515   int result;
5516
5517   /* Similar to what strcmp_iw_ordered does, we need to perform
5518      a case-insensitive comparison first, and only resort to
5519      a second, case-sensitive, comparison if the first one was
5520      not sufficient to differentiate the two strings.  */
5521
5522   result = compare_names_with_case (string1, string2, case_sensitive_off);
5523   if (result == 0)
5524     result = compare_names_with_case (string1, string2, case_sensitive_on);
5525
5526   return result;
5527 }
5528
5529 /* Convenience function to get at the Ada encoded lookup name for
5530    LOOKUP_NAME, as a C string.  */
5531
5532 static const char *
5533 ada_lookup_name (const lookup_name_info &lookup_name)
5534 {
5535   return lookup_name.ada ().lookup_name ().c_str ();
5536 }
5537
5538 /* Add to OBSTACKP all non-local symbols whose name and domain match
5539    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5540    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5541    symbols otherwise.  */
5542
5543 static void
5544 add_nonlocal_symbols (struct obstack *obstackp,
5545                       const lookup_name_info &lookup_name,
5546                       domain_enum domain, int global)
5547 {
5548   struct match_data data;
5549
5550   memset (&data, 0, sizeof data);
5551   data.obstackp = obstackp;
5552
5553   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5554
5555   auto callback = [&] (struct block_symbol *bsym)
5556     {
5557       return aux_add_nonlocal_symbols (bsym, &data);
5558     };
5559
5560   for (objfile *objfile : current_program_space->objfiles ())
5561     {
5562       data.objfile = objfile;
5563
5564       objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
5565                                              domain, global, callback,
5566                                              (is_wild_match
5567                                               ? NULL : compare_names));
5568
5569       for (compunit_symtab *cu : objfile->compunits ())
5570         {
5571           const struct block *global_block
5572             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5573
5574           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5575                                        domain))
5576             data.found_sym = 1;
5577         }
5578     }
5579
5580   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5581     {
5582       const char *name = ada_lookup_name (lookup_name);
5583       std::string bracket_name = std::string ("<_ada_") + name + '>';
5584       lookup_name_info name1 (bracket_name, symbol_name_match_type::FULL);
5585
5586       for (objfile *objfile : current_program_space->objfiles ())
5587         {
5588           data.objfile = objfile;
5589           objfile->sf->qf->map_matching_symbols (objfile, name1,
5590                                                  domain, global, callback,
5591                                                  compare_names);
5592         }
5593     }           
5594 }
5595
5596 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5597    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5598    returning the number of matches.  Add these to OBSTACKP.
5599
5600    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5601    symbol match within the nest of blocks whose innermost member is BLOCK,
5602    is the one match returned (no other matches in that or
5603    enclosing blocks is returned).  If there are any matches in or
5604    surrounding BLOCK, then these alone are returned.
5605
5606    Names prefixed with "standard__" are handled specially:
5607    "standard__" is first stripped off (by the lookup_name
5608    constructor), and only static and global symbols are searched.
5609
5610    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5611    to lookup global symbols.  */
5612
5613 static void
5614 ada_add_all_symbols (struct obstack *obstackp,
5615                      const struct block *block,
5616                      const lookup_name_info &lookup_name,
5617                      domain_enum domain,
5618                      int full_search,
5619                      int *made_global_lookup_p)
5620 {
5621   struct symbol *sym;
5622
5623   if (made_global_lookup_p)
5624     *made_global_lookup_p = 0;
5625
5626   /* Special case: If the user specifies a symbol name inside package
5627      Standard, do a non-wild matching of the symbol name without
5628      the "standard__" prefix.  This was primarily introduced in order
5629      to allow the user to specifically access the standard exceptions
5630      using, for instance, Standard.Constraint_Error when Constraint_Error
5631      is ambiguous (due to the user defining its own Constraint_Error
5632      entity inside its program).  */
5633   if (lookup_name.ada ().standard_p ())
5634     block = NULL;
5635
5636   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5637
5638   if (block != NULL)
5639     {
5640       if (full_search)
5641         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5642       else
5643         {
5644           /* In the !full_search case we're are being called by
5645              iterate_over_symbols, and we don't want to search
5646              superblocks.  */
5647           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5648         }
5649       if (num_defns_collected (obstackp) > 0 || !full_search)
5650         return;
5651     }
5652
5653   /* No non-global symbols found.  Check our cache to see if we have
5654      already performed this search before.  If we have, then return
5655      the same result.  */
5656
5657   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5658                             domain, &sym, &block))
5659     {
5660       if (sym != NULL)
5661         add_defn_to_vec (obstackp, sym, block);
5662       return;
5663     }
5664
5665   if (made_global_lookup_p)
5666     *made_global_lookup_p = 1;
5667
5668   /* Search symbols from all global blocks.  */
5669  
5670   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5671
5672   /* Now add symbols from all per-file blocks if we've gotten no hits
5673      (not strictly correct, but perhaps better than an error).  */
5674
5675   if (num_defns_collected (obstackp) == 0)
5676     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5677 }
5678
5679 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5680    is non-zero, enclosing scope and in global scopes, returning the number of
5681    matches.
5682    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5683    found and the blocks and symbol tables (if any) in which they were
5684    found.
5685
5686    When full_search is non-zero, any non-function/non-enumeral
5687    symbol match within the nest of blocks whose innermost member is BLOCK,
5688    is the one match returned (no other matches in that or
5689    enclosing blocks is returned).  If there are any matches in or
5690    surrounding BLOCK, then these alone are returned.
5691
5692    Names prefixed with "standard__" are handled specially: "standard__"
5693    is first stripped off, and only static and global symbols are searched.  */
5694
5695 static int
5696 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5697                                const struct block *block,
5698                                domain_enum domain,
5699                                std::vector<struct block_symbol> *results,
5700                                int full_search)
5701 {
5702   int syms_from_global_search;
5703   int ndefns;
5704   auto_obstack obstack;
5705
5706   ada_add_all_symbols (&obstack, block, lookup_name,
5707                        domain, full_search, &syms_from_global_search);
5708
5709   ndefns = num_defns_collected (&obstack);
5710
5711   struct block_symbol *base = defns_collected (&obstack, 1);
5712   for (int i = 0; i < ndefns; ++i)
5713     results->push_back (base[i]);
5714
5715   ndefns = remove_extra_symbols (results);
5716
5717   if (ndefns == 0 && full_search && syms_from_global_search)
5718     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5719
5720   if (ndefns == 1 && full_search && syms_from_global_search)
5721     cache_symbol (ada_lookup_name (lookup_name), domain,
5722                   (*results)[0].symbol, (*results)[0].block);
5723
5724   ndefns = remove_irrelevant_renamings (results, block);
5725
5726   return ndefns;
5727 }
5728
5729 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5730    in global scopes, returning the number of matches, and filling *RESULTS
5731    with (SYM,BLOCK) tuples.
5732
5733    See ada_lookup_symbol_list_worker for further details.  */
5734
5735 int
5736 ada_lookup_symbol_list (const char *name, const struct block *block,
5737                         domain_enum domain,
5738                         std::vector<struct block_symbol> *results)
5739 {
5740   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5741   lookup_name_info lookup_name (name, name_match_type);
5742
5743   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5744 }
5745
5746 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5747    to 1, but choosing the first symbol found if there are multiple
5748    choices.
5749
5750    The result is stored in *INFO, which must be non-NULL.
5751    If no match is found, INFO->SYM is set to NULL.  */
5752
5753 void
5754 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5755                            domain_enum domain,
5756                            struct block_symbol *info)
5757 {
5758   /* Since we already have an encoded name, wrap it in '<>' to force a
5759      verbatim match.  Otherwise, if the name happens to not look like
5760      an encoded name (because it doesn't include a "__"),
5761      ada_lookup_name_info would re-encode/fold it again, and that
5762      would e.g., incorrectly lowercase object renaming names like
5763      "R28b" -> "r28b".  */
5764   std::string verbatim = std::string ("<") + name + '>';
5765
5766   gdb_assert (info != NULL);
5767   *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
5768 }
5769
5770 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5771    scope and in global scopes, or NULL if none.  NAME is folded and
5772    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5773    choosing the first symbol if there are multiple choices.  */
5774
5775 struct block_symbol
5776 ada_lookup_symbol (const char *name, const struct block *block0,
5777                    domain_enum domain)
5778 {
5779   std::vector<struct block_symbol> candidates;
5780   int n_candidates;
5781
5782   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5783
5784   if (n_candidates == 0)
5785     return {};
5786
5787   block_symbol info = candidates[0];
5788   info.symbol = fixup_symbol_section (info.symbol, NULL);
5789   return info;
5790 }
5791
5792 static struct block_symbol
5793 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5794                             const char *name,
5795                             const struct block *block,
5796                             const domain_enum domain)
5797 {
5798   struct block_symbol sym;
5799
5800   sym = ada_lookup_symbol (name, block_static_block (block), domain);
5801   if (sym.symbol != NULL)
5802     return sym;
5803
5804   /* If we haven't found a match at this point, try the primitive
5805      types.  In other languages, this search is performed before
5806      searching for global symbols in order to short-circuit that
5807      global-symbol search if it happens that the name corresponds
5808      to a primitive type.  But we cannot do the same in Ada, because
5809      it is perfectly legitimate for a program to declare a type which
5810      has the same name as a standard type.  If looking up a type in
5811      that situation, we have traditionally ignored the primitive type
5812      in favor of user-defined types.  This is why, unlike most other
5813      languages, we search the primitive types this late and only after
5814      having searched the global symbols without success.  */
5815
5816   if (domain == VAR_DOMAIN)
5817     {
5818       struct gdbarch *gdbarch;
5819
5820       if (block == NULL)
5821         gdbarch = target_gdbarch ();
5822       else
5823         gdbarch = block_gdbarch (block);
5824       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5825       if (sym.symbol != NULL)
5826         return sym;
5827     }
5828
5829   return {};
5830 }
5831
5832
5833 /* True iff STR is a possible encoded suffix of a normal Ada name
5834    that is to be ignored for matching purposes.  Suffixes of parallel
5835    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5836    are given by any of the regular expressions:
5837
5838    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5839    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5840    TKB              [subprogram suffix for task bodies]
5841    _E[0-9]+[bs]$    [protected object entry suffixes]
5842    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5843
5844    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5845    match is performed.  This sequence is used to differentiate homonyms,
5846    is an optional part of a valid name suffix.  */
5847
5848 static int
5849 is_name_suffix (const char *str)
5850 {
5851   int k;
5852   const char *matching;
5853   const int len = strlen (str);
5854
5855   /* Skip optional leading __[0-9]+.  */
5856
5857   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5858     {
5859       str += 3;
5860       while (isdigit (str[0]))
5861         str += 1;
5862     }
5863   
5864   /* [.$][0-9]+ */
5865
5866   if (str[0] == '.' || str[0] == '$')
5867     {
5868       matching = str + 1;
5869       while (isdigit (matching[0]))
5870         matching += 1;
5871       if (matching[0] == '\0')
5872         return 1;
5873     }
5874
5875   /* ___[0-9]+ */
5876
5877   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5878     {
5879       matching = str + 3;
5880       while (isdigit (matching[0]))
5881         matching += 1;
5882       if (matching[0] == '\0')
5883         return 1;
5884     }
5885
5886   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5887
5888   if (strcmp (str, "TKB") == 0)
5889     return 1;
5890
5891 #if 0
5892   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5893      with a N at the end.  Unfortunately, the compiler uses the same
5894      convention for other internal types it creates.  So treating
5895      all entity names that end with an "N" as a name suffix causes
5896      some regressions.  For instance, consider the case of an enumerated
5897      type.  To support the 'Image attribute, it creates an array whose
5898      name ends with N.
5899      Having a single character like this as a suffix carrying some
5900      information is a bit risky.  Perhaps we should change the encoding
5901      to be something like "_N" instead.  In the meantime, do not do
5902      the following check.  */
5903   /* Protected Object Subprograms */
5904   if (len == 1 && str [0] == 'N')
5905     return 1;
5906 #endif
5907
5908   /* _E[0-9]+[bs]$ */
5909   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5910     {
5911       matching = str + 3;
5912       while (isdigit (matching[0]))
5913         matching += 1;
5914       if ((matching[0] == 'b' || matching[0] == 's')
5915           && matching [1] == '\0')
5916         return 1;
5917     }
5918
5919   /* ??? We should not modify STR directly, as we are doing below.  This
5920      is fine in this case, but may become problematic later if we find
5921      that this alternative did not work, and want to try matching
5922      another one from the begining of STR.  Since we modified it, we
5923      won't be able to find the begining of the string anymore!  */
5924   if (str[0] == 'X')
5925     {
5926       str += 1;
5927       while (str[0] != '_' && str[0] != '\0')
5928         {
5929           if (str[0] != 'n' && str[0] != 'b')
5930             return 0;
5931           str += 1;
5932         }
5933     }
5934
5935   if (str[0] == '\000')
5936     return 1;
5937
5938   if (str[0] == '_')
5939     {
5940       if (str[1] != '_' || str[2] == '\000')
5941         return 0;
5942       if (str[2] == '_')
5943         {
5944           if (strcmp (str + 3, "JM") == 0)
5945             return 1;
5946           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5947              the LJM suffix in favor of the JM one.  But we will
5948              still accept LJM as a valid suffix for a reasonable
5949              amount of time, just to allow ourselves to debug programs
5950              compiled using an older version of GNAT.  */
5951           if (strcmp (str + 3, "LJM") == 0)
5952             return 1;
5953           if (str[3] != 'X')
5954             return 0;
5955           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5956               || str[4] == 'U' || str[4] == 'P')
5957             return 1;
5958           if (str[4] == 'R' && str[5] != 'T')
5959             return 1;
5960           return 0;
5961         }
5962       if (!isdigit (str[2]))
5963         return 0;
5964       for (k = 3; str[k] != '\0'; k += 1)
5965         if (!isdigit (str[k]) && str[k] != '_')
5966           return 0;
5967       return 1;
5968     }
5969   if (str[0] == '$' && isdigit (str[1]))
5970     {
5971       for (k = 2; str[k] != '\0'; k += 1)
5972         if (!isdigit (str[k]) && str[k] != '_')
5973           return 0;
5974       return 1;
5975     }
5976   return 0;
5977 }
5978
5979 /* Return non-zero if the string starting at NAME and ending before
5980    NAME_END contains no capital letters.  */
5981
5982 static int
5983 is_valid_name_for_wild_match (const char *name0)
5984 {
5985   std::string decoded_name = ada_decode (name0);
5986   int i;
5987
5988   /* If the decoded name starts with an angle bracket, it means that
5989      NAME0 does not follow the GNAT encoding format.  It should then
5990      not be allowed as a possible wild match.  */
5991   if (decoded_name[0] == '<')
5992     return 0;
5993
5994   for (i=0; decoded_name[i] != '\0'; i++)
5995     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
5996       return 0;
5997
5998   return 1;
5999 }
6000
6001 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6002    that could start a simple name.  Assumes that *NAMEP points into
6003    the string beginning at NAME0.  */
6004
6005 static int
6006 advance_wild_match (const char **namep, const char *name0, int target0)
6007 {
6008   const char *name = *namep;
6009
6010   while (1)
6011     {
6012       int t0, t1;
6013
6014       t0 = *name;
6015       if (t0 == '_')
6016         {
6017           t1 = name[1];
6018           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6019             {
6020               name += 1;
6021               if (name == name0 + 5 && startswith (name0, "_ada"))
6022                 break;
6023               else
6024                 name += 1;
6025             }
6026           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6027                                  || name[2] == target0))
6028             {
6029               name += 2;
6030               break;
6031             }
6032           else
6033             return 0;
6034         }
6035       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6036         name += 1;
6037       else
6038         return 0;
6039     }
6040
6041   *namep = name;
6042   return 1;
6043 }
6044
6045 /* Return true iff NAME encodes a name of the form prefix.PATN.
6046    Ignores any informational suffixes of NAME (i.e., for which
6047    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6048    simple name.  */
6049
6050 static bool
6051 wild_match (const char *name, const char *patn)
6052 {
6053   const char *p;
6054   const char *name0 = name;
6055
6056   while (1)
6057     {
6058       const char *match = name;
6059
6060       if (*name == *patn)
6061         {
6062           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6063             if (*p != *name)
6064               break;
6065           if (*p == '\0' && is_name_suffix (name))
6066             return match == name0 || is_valid_name_for_wild_match (name0);
6067
6068           if (name[-1] == '_')
6069             name -= 1;
6070         }
6071       if (!advance_wild_match (&name, name0, *patn))
6072         return false;
6073     }
6074 }
6075
6076 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6077    any trailing suffixes that encode debugging information or leading
6078    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6079    information that is ignored).  */
6080
6081 static bool
6082 full_match (const char *sym_name, const char *search_name)
6083 {
6084   size_t search_name_len = strlen (search_name);
6085
6086   if (strncmp (sym_name, search_name, search_name_len) == 0
6087       && is_name_suffix (sym_name + search_name_len))
6088     return true;
6089
6090   if (startswith (sym_name, "_ada_")
6091       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6092       && is_name_suffix (sym_name + search_name_len + 5))
6093     return true;
6094
6095   return false;
6096 }
6097
6098 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6099    *defn_symbols, updating the list of symbols in OBSTACKP (if
6100    necessary).  OBJFILE is the section containing BLOCK.  */
6101
6102 static void
6103 ada_add_block_symbols (struct obstack *obstackp,
6104                        const struct block *block,
6105                        const lookup_name_info &lookup_name,
6106                        domain_enum domain, struct objfile *objfile)
6107 {
6108   struct block_iterator iter;
6109   /* A matching argument symbol, if any.  */
6110   struct symbol *arg_sym;
6111   /* Set true when we find a matching non-argument symbol.  */
6112   int found_sym;
6113   struct symbol *sym;
6114
6115   arg_sym = NULL;
6116   found_sym = 0;
6117   for (sym = block_iter_match_first (block, lookup_name, &iter);
6118        sym != NULL;
6119        sym = block_iter_match_next (lookup_name, &iter))
6120     {
6121       if (symbol_matches_domain (sym->language (), SYMBOL_DOMAIN (sym), domain))
6122         {
6123           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6124             {
6125               if (SYMBOL_IS_ARGUMENT (sym))
6126                 arg_sym = sym;
6127               else
6128                 {
6129                   found_sym = 1;
6130                   add_defn_to_vec (obstackp,
6131                                    fixup_symbol_section (sym, objfile),
6132                                    block);
6133                 }
6134             }
6135         }
6136     }
6137
6138   /* Handle renamings.  */
6139
6140   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6141     found_sym = 1;
6142
6143   if (!found_sym && arg_sym != NULL)
6144     {
6145       add_defn_to_vec (obstackp,
6146                        fixup_symbol_section (arg_sym, objfile),
6147                        block);
6148     }
6149
6150   if (!lookup_name.ada ().wild_match_p ())
6151     {
6152       arg_sym = NULL;
6153       found_sym = 0;
6154       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6155       const char *name = ada_lookup_name.c_str ();
6156       size_t name_len = ada_lookup_name.size ();
6157
6158       ALL_BLOCK_SYMBOLS (block, iter, sym)
6159       {
6160         if (symbol_matches_domain (sym->language (),
6161                                    SYMBOL_DOMAIN (sym), domain))
6162           {
6163             int cmp;
6164
6165             cmp = (int) '_' - (int) sym->linkage_name ()[0];
6166             if (cmp == 0)
6167               {
6168                 cmp = !startswith (sym->linkage_name (), "_ada_");
6169                 if (cmp == 0)
6170                   cmp = strncmp (name, sym->linkage_name () + 5,
6171                                  name_len);
6172               }
6173
6174             if (cmp == 0
6175                 && is_name_suffix (sym->linkage_name () + name_len + 5))
6176               {
6177                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6178                   {
6179                     if (SYMBOL_IS_ARGUMENT (sym))
6180                       arg_sym = sym;
6181                     else
6182                       {
6183                         found_sym = 1;
6184                         add_defn_to_vec (obstackp,
6185                                          fixup_symbol_section (sym, objfile),
6186                                          block);
6187                       }
6188                   }
6189               }
6190           }
6191       }
6192
6193       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6194          They aren't parameters, right?  */
6195       if (!found_sym && arg_sym != NULL)
6196         {
6197           add_defn_to_vec (obstackp,
6198                            fixup_symbol_section (arg_sym, objfile),
6199                            block);
6200         }
6201     }
6202 }
6203 \f
6204
6205                                 /* Symbol Completion */
6206
6207 /* See symtab.h.  */
6208
6209 bool
6210 ada_lookup_name_info::matches
6211   (const char *sym_name,
6212    symbol_name_match_type match_type,
6213    completion_match_result *comp_match_res) const
6214 {
6215   bool match = false;
6216   const char *text = m_encoded_name.c_str ();
6217   size_t text_len = m_encoded_name.size ();
6218
6219   /* First, test against the fully qualified name of the symbol.  */
6220
6221   if (strncmp (sym_name, text, text_len) == 0)
6222     match = true;
6223
6224   std::string decoded_name = ada_decode (sym_name);
6225   if (match && !m_encoded_p)
6226     {
6227       /* One needed check before declaring a positive match is to verify
6228          that iff we are doing a verbatim match, the decoded version
6229          of the symbol name starts with '<'.  Otherwise, this symbol name
6230          is not a suitable completion.  */
6231
6232       bool has_angle_bracket = (decoded_name[0] == '<');
6233       match = (has_angle_bracket == m_verbatim_p);
6234     }
6235
6236   if (match && !m_verbatim_p)
6237     {
6238       /* When doing non-verbatim match, another check that needs to
6239          be done is to verify that the potentially matching symbol name
6240          does not include capital letters, because the ada-mode would
6241          not be able to understand these symbol names without the
6242          angle bracket notation.  */
6243       const char *tmp;
6244
6245       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6246       if (*tmp != '\0')
6247         match = false;
6248     }
6249
6250   /* Second: Try wild matching...  */
6251
6252   if (!match && m_wild_match_p)
6253     {
6254       /* Since we are doing wild matching, this means that TEXT
6255          may represent an unqualified symbol name.  We therefore must
6256          also compare TEXT against the unqualified name of the symbol.  */
6257       sym_name = ada_unqualified_name (decoded_name.c_str ());
6258
6259       if (strncmp (sym_name, text, text_len) == 0)
6260         match = true;
6261     }
6262
6263   /* Finally: If we found a match, prepare the result to return.  */
6264
6265   if (!match)
6266     return false;
6267
6268   if (comp_match_res != NULL)
6269     {
6270       std::string &match_str = comp_match_res->match.storage ();
6271
6272       if (!m_encoded_p)
6273         match_str = ada_decode (sym_name);
6274       else
6275         {
6276           if (m_verbatim_p)
6277             match_str = add_angle_brackets (sym_name);
6278           else
6279             match_str = sym_name;
6280
6281         }
6282
6283       comp_match_res->set_match (match_str.c_str ());
6284     }
6285
6286   return true;
6287 }
6288
6289 /* Add the list of possible symbol names completing TEXT to TRACKER.
6290    WORD is the entire command on which completion is made.  */
6291
6292 static void
6293 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6294                                        complete_symbol_mode mode,
6295                                        symbol_name_match_type name_match_type,
6296                                        const char *text, const char *word,
6297                                        enum type_code code)
6298 {
6299   struct symbol *sym;
6300   const struct block *b, *surrounding_static_block = 0;
6301   struct block_iterator iter;
6302
6303   gdb_assert (code == TYPE_CODE_UNDEF);
6304
6305   lookup_name_info lookup_name (text, name_match_type, true);
6306
6307   /* First, look at the partial symtab symbols.  */
6308   expand_symtabs_matching (NULL,
6309                            lookup_name,
6310                            NULL,
6311                            NULL,
6312                            ALL_DOMAIN);
6313
6314   /* At this point scan through the misc symbol vectors and add each
6315      symbol you find to the list.  Eventually we want to ignore
6316      anything that isn't a text symbol (everything else will be
6317      handled by the psymtab code above).  */
6318
6319   for (objfile *objfile : current_program_space->objfiles ())
6320     {
6321       for (minimal_symbol *msymbol : objfile->msymbols ())
6322         {
6323           QUIT;
6324
6325           if (completion_skip_symbol (mode, msymbol))
6326             continue;
6327
6328           language symbol_language = msymbol->language ();
6329
6330           /* Ada minimal symbols won't have their language set to Ada.  If
6331              we let completion_list_add_name compare using the
6332              default/C-like matcher, then when completing e.g., symbols in a
6333              package named "pck", we'd match internal Ada symbols like
6334              "pckS", which are invalid in an Ada expression, unless you wrap
6335              them in '<' '>' to request a verbatim match.
6336
6337              Unfortunately, some Ada encoded names successfully demangle as
6338              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6339              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6340              with the wrong language set.  Paper over that issue here.  */
6341           if (symbol_language == language_auto
6342               || symbol_language == language_cplus)
6343             symbol_language = language_ada;
6344
6345           completion_list_add_name (tracker,
6346                                     symbol_language,
6347                                     msymbol->linkage_name (),
6348                                     lookup_name, text, word);
6349         }
6350     }
6351
6352   /* Search upwards from currently selected frame (so that we can
6353      complete on local vars.  */
6354
6355   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6356     {
6357       if (!BLOCK_SUPERBLOCK (b))
6358         surrounding_static_block = b;   /* For elmin of dups */
6359
6360       ALL_BLOCK_SYMBOLS (b, iter, sym)
6361       {
6362         if (completion_skip_symbol (mode, sym))
6363           continue;
6364
6365         completion_list_add_name (tracker,
6366                                   sym->language (),
6367                                   sym->linkage_name (),
6368                                   lookup_name, text, word);
6369       }
6370     }
6371
6372   /* Go through the symtabs and check the externs and statics for
6373      symbols which match.  */
6374
6375   for (objfile *objfile : current_program_space->objfiles ())
6376     {
6377       for (compunit_symtab *s : objfile->compunits ())
6378         {
6379           QUIT;
6380           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6381           ALL_BLOCK_SYMBOLS (b, iter, sym)
6382             {
6383               if (completion_skip_symbol (mode, sym))
6384                 continue;
6385
6386               completion_list_add_name (tracker,
6387                                         sym->language (),
6388                                         sym->linkage_name (),
6389                                         lookup_name, text, word);
6390             }
6391         }
6392     }
6393
6394   for (objfile *objfile : current_program_space->objfiles ())
6395     {
6396       for (compunit_symtab *s : objfile->compunits ())
6397         {
6398           QUIT;
6399           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6400           /* Don't do this block twice.  */
6401           if (b == surrounding_static_block)
6402             continue;
6403           ALL_BLOCK_SYMBOLS (b, iter, sym)
6404             {
6405               if (completion_skip_symbol (mode, sym))
6406                 continue;
6407
6408               completion_list_add_name (tracker,
6409                                         sym->language (),
6410                                         sym->linkage_name (),
6411                                         lookup_name, text, word);
6412             }
6413         }
6414     }
6415 }
6416
6417                                 /* Field Access */
6418
6419 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6420    for tagged types.  */
6421
6422 static int
6423 ada_is_dispatch_table_ptr_type (struct type *type)
6424 {
6425   const char *name;
6426
6427   if (type->code () != TYPE_CODE_PTR)
6428     return 0;
6429
6430   name = TYPE_TARGET_TYPE (type)->name ();
6431   if (name == NULL)
6432     return 0;
6433
6434   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6435 }
6436
6437 /* Return non-zero if TYPE is an interface tag.  */
6438
6439 static int
6440 ada_is_interface_tag (struct type *type)
6441 {
6442   const char *name = type->name ();
6443
6444   if (name == NULL)
6445     return 0;
6446
6447   return (strcmp (name, "ada__tags__interface_tag") == 0);
6448 }
6449
6450 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6451    to be invisible to users.  */
6452
6453 int
6454 ada_is_ignored_field (struct type *type, int field_num)
6455 {
6456   if (field_num < 0 || field_num > type->num_fields ())
6457     return 1;
6458
6459   /* Check the name of that field.  */
6460   {
6461     const char *name = TYPE_FIELD_NAME (type, field_num);
6462
6463     /* Anonymous field names should not be printed.
6464        brobecker/2007-02-20: I don't think this can actually happen
6465        but we don't want to print the value of anonymous fields anyway.  */
6466     if (name == NULL)
6467       return 1;
6468
6469     /* Normally, fields whose name start with an underscore ("_")
6470        are fields that have been internally generated by the compiler,
6471        and thus should not be printed.  The "_parent" field is special,
6472        however: This is a field internally generated by the compiler
6473        for tagged types, and it contains the components inherited from
6474        the parent type.  This field should not be printed as is, but
6475        should not be ignored either.  */
6476     if (name[0] == '_' && !startswith (name, "_parent"))
6477       return 1;
6478   }
6479
6480   /* If this is the dispatch table of a tagged type or an interface tag,
6481      then ignore.  */
6482   if (ada_is_tagged_type (type, 1)
6483       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6484           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6485     return 1;
6486
6487   /* Not a special field, so it should not be ignored.  */
6488   return 0;
6489 }
6490
6491 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6492    pointer or reference type whose ultimate target has a tag field.  */
6493
6494 int
6495 ada_is_tagged_type (struct type *type, int refok)
6496 {
6497   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6498 }
6499
6500 /* True iff TYPE represents the type of X'Tag */
6501
6502 int
6503 ada_is_tag_type (struct type *type)
6504 {
6505   type = ada_check_typedef (type);
6506
6507   if (type == NULL || type->code () != TYPE_CODE_PTR)
6508     return 0;
6509   else
6510     {
6511       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6512
6513       return (name != NULL
6514               && strcmp (name, "ada__tags__dispatch_table") == 0);
6515     }
6516 }
6517
6518 /* The type of the tag on VAL.  */
6519
6520 static struct type *
6521 ada_tag_type (struct value *val)
6522 {
6523   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6524 }
6525
6526 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6527    retired at Ada 05).  */
6528
6529 static int
6530 is_ada95_tag (struct value *tag)
6531 {
6532   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6533 }
6534
6535 /* The value of the tag on VAL.  */
6536
6537 static struct value *
6538 ada_value_tag (struct value *val)
6539 {
6540   return ada_value_struct_elt (val, "_tag", 0);
6541 }
6542
6543 /* The value of the tag on the object of type TYPE whose contents are
6544    saved at VALADDR, if it is non-null, or is at memory address
6545    ADDRESS.  */
6546
6547 static struct value *
6548 value_tag_from_contents_and_address (struct type *type,
6549                                      const gdb_byte *valaddr,
6550                                      CORE_ADDR address)
6551 {
6552   int tag_byte_offset;
6553   struct type *tag_type;
6554
6555   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6556                          NULL, NULL, NULL))
6557     {
6558       const gdb_byte *valaddr1 = ((valaddr == NULL)
6559                                   ? NULL
6560                                   : valaddr + tag_byte_offset);
6561       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6562
6563       return value_from_contents_and_address (tag_type, valaddr1, address1);
6564     }
6565   return NULL;
6566 }
6567
6568 static struct type *
6569 type_from_tag (struct value *tag)
6570 {
6571   const char *type_name = ada_tag_name (tag);
6572
6573   if (type_name != NULL)
6574     return ada_find_any_type (ada_encode (type_name));
6575   return NULL;
6576 }
6577
6578 /* Given a value OBJ of a tagged type, return a value of this
6579    type at the base address of the object.  The base address, as
6580    defined in Ada.Tags, it is the address of the primary tag of
6581    the object, and therefore where the field values of its full
6582    view can be fetched.  */
6583
6584 struct value *
6585 ada_tag_value_at_base_address (struct value *obj)
6586 {
6587   struct value *val;
6588   LONGEST offset_to_top = 0;
6589   struct type *ptr_type, *obj_type;
6590   struct value *tag;
6591   CORE_ADDR base_address;
6592
6593   obj_type = value_type (obj);
6594
6595   /* It is the responsability of the caller to deref pointers.  */
6596
6597   if (obj_type->code () == TYPE_CODE_PTR || obj_type->code () == TYPE_CODE_REF)
6598     return obj;
6599
6600   tag = ada_value_tag (obj);
6601   if (!tag)
6602     return obj;
6603
6604   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6605
6606   if (is_ada95_tag (tag))
6607     return obj;
6608
6609   ptr_type = language_lookup_primitive_type
6610     (language_def (language_ada), target_gdbarch(), "storage_offset");
6611   ptr_type = lookup_pointer_type (ptr_type);
6612   val = value_cast (ptr_type, tag);
6613   if (!val)
6614     return obj;
6615
6616   /* It is perfectly possible that an exception be raised while
6617      trying to determine the base address, just like for the tag;
6618      see ada_tag_name for more details.  We do not print the error
6619      message for the same reason.  */
6620
6621   try
6622     {
6623       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6624     }
6625
6626   catch (const gdb_exception_error &e)
6627     {
6628       return obj;
6629     }
6630
6631   /* If offset is null, nothing to do.  */
6632
6633   if (offset_to_top == 0)
6634     return obj;
6635
6636   /* -1 is a special case in Ada.Tags; however, what should be done
6637      is not quite clear from the documentation.  So do nothing for
6638      now.  */
6639
6640   if (offset_to_top == -1)
6641     return obj;
6642
6643   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6644      from the base address.  This was however incompatible with
6645      C++ dispatch table: C++ uses a *negative* value to *add*
6646      to the base address.  Ada's convention has therefore been
6647      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6648      use the same convention.  Here, we support both cases by
6649      checking the sign of OFFSET_TO_TOP.  */
6650
6651   if (offset_to_top > 0)
6652     offset_to_top = -offset_to_top;
6653
6654   base_address = value_address (obj) + offset_to_top;
6655   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6656
6657   /* Make sure that we have a proper tag at the new address.
6658      Otherwise, offset_to_top is bogus (which can happen when
6659      the object is not initialized yet).  */
6660
6661   if (!tag)
6662     return obj;
6663
6664   obj_type = type_from_tag (tag);
6665
6666   if (!obj_type)
6667     return obj;
6668
6669   return value_from_contents_and_address (obj_type, NULL, base_address);
6670 }
6671
6672 /* Return the "ada__tags__type_specific_data" type.  */
6673
6674 static struct type *
6675 ada_get_tsd_type (struct inferior *inf)
6676 {
6677   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6678
6679   if (data->tsd_type == 0)
6680     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6681   return data->tsd_type;
6682 }
6683
6684 /* Return the TSD (type-specific data) associated to the given TAG.
6685    TAG is assumed to be the tag of a tagged-type entity.
6686
6687    May return NULL if we are unable to get the TSD.  */
6688
6689 static struct value *
6690 ada_get_tsd_from_tag (struct value *tag)
6691 {
6692   struct value *val;
6693   struct type *type;
6694
6695   /* First option: The TSD is simply stored as a field of our TAG.
6696      Only older versions of GNAT would use this format, but we have
6697      to test it first, because there are no visible markers for
6698      the current approach except the absence of that field.  */
6699
6700   val = ada_value_struct_elt (tag, "tsd", 1);
6701   if (val)
6702     return val;
6703
6704   /* Try the second representation for the dispatch table (in which
6705      there is no explicit 'tsd' field in the referent of the tag pointer,
6706      and instead the tsd pointer is stored just before the dispatch
6707      table.  */
6708
6709   type = ada_get_tsd_type (current_inferior());
6710   if (type == NULL)
6711     return NULL;
6712   type = lookup_pointer_type (lookup_pointer_type (type));
6713   val = value_cast (type, tag);
6714   if (val == NULL)
6715     return NULL;
6716   return value_ind (value_ptradd (val, -1));
6717 }
6718
6719 /* Given the TSD of a tag (type-specific data), return a string
6720    containing the name of the associated type.
6721
6722    The returned value is good until the next call.  May return NULL
6723    if we are unable to determine the tag name.  */
6724
6725 static char *
6726 ada_tag_name_from_tsd (struct value *tsd)
6727 {
6728   static char name[1024];
6729   char *p;
6730   struct value *val;
6731
6732   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6733   if (val == NULL)
6734     return NULL;
6735   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6736   for (p = name; *p != '\0'; p += 1)
6737     if (isalpha (*p))
6738       *p = tolower (*p);
6739   return name;
6740 }
6741
6742 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6743    a C string.
6744
6745    Return NULL if the TAG is not an Ada tag, or if we were unable to
6746    determine the name of that tag.  The result is good until the next
6747    call.  */
6748
6749 const char *
6750 ada_tag_name (struct value *tag)
6751 {
6752   char *name = NULL;
6753
6754   if (!ada_is_tag_type (value_type (tag)))
6755     return NULL;
6756
6757   /* It is perfectly possible that an exception be raised while trying
6758      to determine the TAG's name, even under normal circumstances:
6759      The associated variable may be uninitialized or corrupted, for
6760      instance. We do not let any exception propagate past this point.
6761      instead we return NULL.
6762
6763      We also do not print the error message either (which often is very
6764      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6765      the caller print a more meaningful message if necessary.  */
6766   try
6767     {
6768       struct value *tsd = ada_get_tsd_from_tag (tag);
6769
6770       if (tsd != NULL)
6771         name = ada_tag_name_from_tsd (tsd);
6772     }
6773   catch (const gdb_exception_error &e)
6774     {
6775     }
6776
6777   return name;
6778 }
6779
6780 /* The parent type of TYPE, or NULL if none.  */
6781
6782 struct type *
6783 ada_parent_type (struct type *type)
6784 {
6785   int i;
6786
6787   type = ada_check_typedef (type);
6788
6789   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
6790     return NULL;
6791
6792   for (i = 0; i < type->num_fields (); i += 1)
6793     if (ada_is_parent_field (type, i))
6794       {
6795         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6796
6797         /* If the _parent field is a pointer, then dereference it.  */
6798         if (parent_type->code () == TYPE_CODE_PTR)
6799           parent_type = TYPE_TARGET_TYPE (parent_type);
6800         /* If there is a parallel XVS type, get the actual base type.  */
6801         parent_type = ada_get_base_type (parent_type);
6802
6803         return ada_check_typedef (parent_type);
6804       }
6805
6806   return NULL;
6807 }
6808
6809 /* True iff field number FIELD_NUM of structure type TYPE contains the
6810    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6811    a structure type with at least FIELD_NUM+1 fields.  */
6812
6813 int
6814 ada_is_parent_field (struct type *type, int field_num)
6815 {
6816   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6817
6818   return (name != NULL
6819           && (startswith (name, "PARENT")
6820               || startswith (name, "_parent")));
6821 }
6822
6823 /* True iff field number FIELD_NUM of structure type TYPE is a
6824    transparent wrapper field (which should be silently traversed when doing
6825    field selection and flattened when printing).  Assumes TYPE is a
6826    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6827    structures.  */
6828
6829 int
6830 ada_is_wrapper_field (struct type *type, int field_num)
6831 {
6832   const char *name = TYPE_FIELD_NAME (type, field_num);
6833
6834   if (name != NULL && strcmp (name, "RETVAL") == 0)
6835     {
6836       /* This happens in functions with "out" or "in out" parameters
6837          which are passed by copy.  For such functions, GNAT describes
6838          the function's return type as being a struct where the return
6839          value is in a field called RETVAL, and where the other "out"
6840          or "in out" parameters are fields of that struct.  This is not
6841          a wrapper.  */
6842       return 0;
6843     }
6844
6845   return (name != NULL
6846           && (startswith (name, "PARENT")
6847               || strcmp (name, "REP") == 0
6848               || startswith (name, "_parent")
6849               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6850 }
6851
6852 /* True iff field number FIELD_NUM of structure or union type TYPE
6853    is a variant wrapper.  Assumes TYPE is a structure type with at least
6854    FIELD_NUM+1 fields.  */
6855
6856 int
6857 ada_is_variant_part (struct type *type, int field_num)
6858 {
6859   /* Only Ada types are eligible.  */
6860   if (!ADA_TYPE_P (type))
6861     return 0;
6862
6863   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6864
6865   return (field_type->code () == TYPE_CODE_UNION
6866           || (is_dynamic_field (type, field_num)
6867               && (TYPE_TARGET_TYPE (field_type)->code ()
6868                   == TYPE_CODE_UNION)));
6869 }
6870
6871 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6872    whose discriminants are contained in the record type OUTER_TYPE,
6873    returns the type of the controlling discriminant for the variant.
6874    May return NULL if the type could not be found.  */
6875
6876 struct type *
6877 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6878 {
6879   const char *name = ada_variant_discrim_name (var_type);
6880
6881   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6882 }
6883
6884 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6885    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6886    represents a 'when others' clause; otherwise 0.  */
6887
6888 static int
6889 ada_is_others_clause (struct type *type, int field_num)
6890 {
6891   const char *name = TYPE_FIELD_NAME (type, field_num);
6892
6893   return (name != NULL && name[0] == 'O');
6894 }
6895
6896 /* Assuming that TYPE0 is the type of the variant part of a record,
6897    returns the name of the discriminant controlling the variant.
6898    The value is valid until the next call to ada_variant_discrim_name.  */
6899
6900 const char *
6901 ada_variant_discrim_name (struct type *type0)
6902 {
6903   static char *result = NULL;
6904   static size_t result_len = 0;
6905   struct type *type;
6906   const char *name;
6907   const char *discrim_end;
6908   const char *discrim_start;
6909
6910   if (type0->code () == TYPE_CODE_PTR)
6911     type = TYPE_TARGET_TYPE (type0);
6912   else
6913     type = type0;
6914
6915   name = ada_type_name (type);
6916
6917   if (name == NULL || name[0] == '\000')
6918     return "";
6919
6920   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6921        discrim_end -= 1)
6922     {
6923       if (startswith (discrim_end, "___XVN"))
6924         break;
6925     }
6926   if (discrim_end == name)
6927     return "";
6928
6929   for (discrim_start = discrim_end; discrim_start != name + 3;
6930        discrim_start -= 1)
6931     {
6932       if (discrim_start == name + 1)
6933         return "";
6934       if ((discrim_start > name + 3
6935            && startswith (discrim_start - 3, "___"))
6936           || discrim_start[-1] == '.')
6937         break;
6938     }
6939
6940   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6941   strncpy (result, discrim_start, discrim_end - discrim_start);
6942   result[discrim_end - discrim_start] = '\0';
6943   return result;
6944 }
6945
6946 /* Scan STR for a subtype-encoded number, beginning at position K.
6947    Put the position of the character just past the number scanned in
6948    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6949    Return 1 if there was a valid number at the given position, and 0
6950    otherwise.  A "subtype-encoded" number consists of the absolute value
6951    in decimal, followed by the letter 'm' to indicate a negative number.
6952    Assumes 0m does not occur.  */
6953
6954 int
6955 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6956 {
6957   ULONGEST RU;
6958
6959   if (!isdigit (str[k]))
6960     return 0;
6961
6962   /* Do it the hard way so as not to make any assumption about
6963      the relationship of unsigned long (%lu scan format code) and
6964      LONGEST.  */
6965   RU = 0;
6966   while (isdigit (str[k]))
6967     {
6968       RU = RU * 10 + (str[k] - '0');
6969       k += 1;
6970     }
6971
6972   if (str[k] == 'm')
6973     {
6974       if (R != NULL)
6975         *R = (-(LONGEST) (RU - 1)) - 1;
6976       k += 1;
6977     }
6978   else if (R != NULL)
6979     *R = (LONGEST) RU;
6980
6981   /* NOTE on the above: Technically, C does not say what the results of
6982      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
6983      number representable as a LONGEST (although either would probably work
6984      in most implementations).  When RU>0, the locution in the then branch
6985      above is always equivalent to the negative of RU.  */
6986
6987   if (new_k != NULL)
6988     *new_k = k;
6989   return 1;
6990 }
6991
6992 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
6993    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
6994    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
6995
6996 static int
6997 ada_in_variant (LONGEST val, struct type *type, int field_num)
6998 {
6999   const char *name = TYPE_FIELD_NAME (type, field_num);
7000   int p;
7001
7002   p = 0;
7003   while (1)
7004     {
7005       switch (name[p])
7006         {
7007         case '\0':
7008           return 0;
7009         case 'S':
7010           {
7011             LONGEST W;
7012
7013             if (!ada_scan_number (name, p + 1, &W, &p))
7014               return 0;
7015             if (val == W)
7016               return 1;
7017             break;
7018           }
7019         case 'R':
7020           {
7021             LONGEST L, U;
7022
7023             if (!ada_scan_number (name, p + 1, &L, &p)
7024                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7025               return 0;
7026             if (val >= L && val <= U)
7027               return 1;
7028             break;
7029           }
7030         case 'O':
7031           return 1;
7032         default:
7033           return 0;
7034         }
7035     }
7036 }
7037
7038 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7039
7040 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7041    ARG_TYPE, extract and return the value of one of its (non-static)
7042    fields.  FIELDNO says which field.   Differs from value_primitive_field
7043    only in that it can handle packed values of arbitrary type.  */
7044
7045 struct value *
7046 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7047                            struct type *arg_type)
7048 {
7049   struct type *type;
7050
7051   arg_type = ada_check_typedef (arg_type);
7052   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7053
7054   /* Handle packed fields.  It might be that the field is not packed
7055      relative to its containing structure, but the structure itself is
7056      packed; in this case we must take the bit-field path.  */
7057   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7058     {
7059       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7060       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7061
7062       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7063                                              offset + bit_pos / 8,
7064                                              bit_pos % 8, bit_size, type);
7065     }
7066   else
7067     return value_primitive_field (arg1, offset, fieldno, arg_type);
7068 }
7069
7070 /* Find field with name NAME in object of type TYPE.  If found, 
7071    set the following for each argument that is non-null:
7072     - *FIELD_TYPE_P to the field's type; 
7073     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7074       an object of that type;
7075     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7076     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7077       0 otherwise;
7078    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7079    fields up to but not including the desired field, or by the total
7080    number of fields if not found.   A NULL value of NAME never
7081    matches; the function just counts visible fields in this case.
7082    
7083    Notice that we need to handle when a tagged record hierarchy
7084    has some components with the same name, like in this scenario:
7085
7086       type Top_T is tagged record
7087          N : Integer := 1;
7088          U : Integer := 974;
7089          A : Integer := 48;
7090       end record;
7091
7092       type Middle_T is new Top.Top_T with record
7093          N : Character := 'a';
7094          C : Integer := 3;
7095       end record;
7096
7097      type Bottom_T is new Middle.Middle_T with record
7098         N : Float := 4.0;
7099         C : Character := '5';
7100         X : Integer := 6;
7101         A : Character := 'J';
7102      end record;
7103
7104    Let's say we now have a variable declared and initialized as follow:
7105
7106      TC : Top_A := new Bottom_T;
7107
7108    And then we use this variable to call this function
7109
7110      procedure Assign (Obj: in out Top_T; TV : Integer);
7111
7112    as follow:
7113
7114       Assign (Top_T (B), 12);
7115
7116    Now, we're in the debugger, and we're inside that procedure
7117    then and we want to print the value of obj.c:
7118
7119    Usually, the tagged record or one of the parent type owns the
7120    component to print and there's no issue but in this particular
7121    case, what does it mean to ask for Obj.C? Since the actual
7122    type for object is type Bottom_T, it could mean two things: type
7123    component C from the Middle_T view, but also component C from
7124    Bottom_T.  So in that "undefined" case, when the component is
7125    not found in the non-resolved type (which includes all the
7126    components of the parent type), then resolve it and see if we
7127    get better luck once expanded.
7128
7129    In the case of homonyms in the derived tagged type, we don't
7130    guaranty anything, and pick the one that's easiest for us
7131    to program.
7132
7133    Returns 1 if found, 0 otherwise.  */
7134
7135 static int
7136 find_struct_field (const char *name, struct type *type, int offset,
7137                    struct type **field_type_p,
7138                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7139                    int *index_p)
7140 {
7141   int i;
7142   int parent_offset = -1;
7143
7144   type = ada_check_typedef (type);
7145
7146   if (field_type_p != NULL)
7147     *field_type_p = NULL;
7148   if (byte_offset_p != NULL)
7149     *byte_offset_p = 0;
7150   if (bit_offset_p != NULL)
7151     *bit_offset_p = 0;
7152   if (bit_size_p != NULL)
7153     *bit_size_p = 0;
7154
7155   for (i = 0; i < type->num_fields (); i += 1)
7156     {
7157       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7158       int fld_offset = offset + bit_pos / 8;
7159       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7160
7161       if (t_field_name == NULL)
7162         continue;
7163
7164       else if (ada_is_parent_field (type, i))
7165         {
7166           /* This is a field pointing us to the parent type of a tagged
7167              type.  As hinted in this function's documentation, we give
7168              preference to fields in the current record first, so what
7169              we do here is just record the index of this field before
7170              we skip it.  If it turns out we couldn't find our field
7171              in the current record, then we'll get back to it and search
7172              inside it whether the field might exist in the parent.  */
7173
7174           parent_offset = i;
7175           continue;
7176         }
7177
7178       else if (name != NULL && field_name_match (t_field_name, name))
7179         {
7180           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7181
7182           if (field_type_p != NULL)
7183             *field_type_p = TYPE_FIELD_TYPE (type, i);
7184           if (byte_offset_p != NULL)
7185             *byte_offset_p = fld_offset;
7186           if (bit_offset_p != NULL)
7187             *bit_offset_p = bit_pos % 8;
7188           if (bit_size_p != NULL)
7189             *bit_size_p = bit_size;
7190           return 1;
7191         }
7192       else if (ada_is_wrapper_field (type, i))
7193         {
7194           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7195                                  field_type_p, byte_offset_p, bit_offset_p,
7196                                  bit_size_p, index_p))
7197             return 1;
7198         }
7199       else if (ada_is_variant_part (type, i))
7200         {
7201           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7202              fixed type?? */
7203           int j;
7204           struct type *field_type
7205             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7206
7207           for (j = 0; j < field_type->num_fields (); j += 1)
7208             {
7209               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7210                                      fld_offset
7211                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7212                                      field_type_p, byte_offset_p,
7213                                      bit_offset_p, bit_size_p, index_p))
7214                 return 1;
7215             }
7216         }
7217       else if (index_p != NULL)
7218         *index_p += 1;
7219     }
7220
7221   /* Field not found so far.  If this is a tagged type which
7222      has a parent, try finding that field in the parent now.  */
7223
7224   if (parent_offset != -1)
7225     {
7226       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7227       int fld_offset = offset + bit_pos / 8;
7228
7229       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7230                              fld_offset, field_type_p, byte_offset_p,
7231                              bit_offset_p, bit_size_p, index_p))
7232         return 1;
7233     }
7234
7235   return 0;
7236 }
7237
7238 /* Number of user-visible fields in record type TYPE.  */
7239
7240 static int
7241 num_visible_fields (struct type *type)
7242 {
7243   int n;
7244
7245   n = 0;
7246   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7247   return n;
7248 }
7249
7250 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7251    and search in it assuming it has (class) type TYPE.
7252    If found, return value, else return NULL.
7253
7254    Searches recursively through wrapper fields (e.g., '_parent').
7255
7256    In the case of homonyms in the tagged types, please refer to the
7257    long explanation in find_struct_field's function documentation.  */
7258
7259 static struct value *
7260 ada_search_struct_field (const char *name, struct value *arg, int offset,
7261                          struct type *type)
7262 {
7263   int i;
7264   int parent_offset = -1;
7265
7266   type = ada_check_typedef (type);
7267   for (i = 0; i < type->num_fields (); i += 1)
7268     {
7269       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7270
7271       if (t_field_name == NULL)
7272         continue;
7273
7274       else if (ada_is_parent_field (type, i))
7275         {
7276           /* This is a field pointing us to the parent type of a tagged
7277              type.  As hinted in this function's documentation, we give
7278              preference to fields in the current record first, so what
7279              we do here is just record the index of this field before
7280              we skip it.  If it turns out we couldn't find our field
7281              in the current record, then we'll get back to it and search
7282              inside it whether the field might exist in the parent.  */
7283
7284           parent_offset = i;
7285           continue;
7286         }
7287
7288       else if (field_name_match (t_field_name, name))
7289         return ada_value_primitive_field (arg, offset, i, type);
7290
7291       else if (ada_is_wrapper_field (type, i))
7292         {
7293           struct value *v =     /* Do not let indent join lines here.  */
7294             ada_search_struct_field (name, arg,
7295                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7296                                      TYPE_FIELD_TYPE (type, i));
7297
7298           if (v != NULL)
7299             return v;
7300         }
7301
7302       else if (ada_is_variant_part (type, i))
7303         {
7304           /* PNH: Do we ever get here?  See find_struct_field.  */
7305           int j;
7306           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7307                                                                         i));
7308           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7309
7310           for (j = 0; j < field_type->num_fields (); j += 1)
7311             {
7312               struct value *v = ada_search_struct_field /* Force line
7313                                                            break.  */
7314                 (name, arg,
7315                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7316                  TYPE_FIELD_TYPE (field_type, j));
7317
7318               if (v != NULL)
7319                 return v;
7320             }
7321         }
7322     }
7323
7324   /* Field not found so far.  If this is a tagged type which
7325      has a parent, try finding that field in the parent now.  */
7326
7327   if (parent_offset != -1)
7328     {
7329       struct value *v = ada_search_struct_field (
7330         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7331         TYPE_FIELD_TYPE (type, parent_offset));
7332
7333       if (v != NULL)
7334         return v;
7335     }
7336
7337   return NULL;
7338 }
7339
7340 static struct value *ada_index_struct_field_1 (int *, struct value *,
7341                                                int, struct type *);
7342
7343
7344 /* Return field #INDEX in ARG, where the index is that returned by
7345  * find_struct_field through its INDEX_P argument.  Adjust the address
7346  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7347  * If found, return value, else return NULL.  */
7348
7349 static struct value *
7350 ada_index_struct_field (int index, struct value *arg, int offset,
7351                         struct type *type)
7352 {
7353   return ada_index_struct_field_1 (&index, arg, offset, type);
7354 }
7355
7356
7357 /* Auxiliary function for ada_index_struct_field.  Like
7358  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7359  * *INDEX_P.  */
7360
7361 static struct value *
7362 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7363                           struct type *type)
7364 {
7365   int i;
7366   type = ada_check_typedef (type);
7367
7368   for (i = 0; i < type->num_fields (); i += 1)
7369     {
7370       if (TYPE_FIELD_NAME (type, i) == NULL)
7371         continue;
7372       else if (ada_is_wrapper_field (type, i))
7373         {
7374           struct value *v =     /* Do not let indent join lines here.  */
7375             ada_index_struct_field_1 (index_p, arg,
7376                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7377                                       TYPE_FIELD_TYPE (type, i));
7378
7379           if (v != NULL)
7380             return v;
7381         }
7382
7383       else if (ada_is_variant_part (type, i))
7384         {
7385           /* PNH: Do we ever get here?  See ada_search_struct_field,
7386              find_struct_field.  */
7387           error (_("Cannot assign this kind of variant record"));
7388         }
7389       else if (*index_p == 0)
7390         return ada_value_primitive_field (arg, offset, i, type);
7391       else
7392         *index_p -= 1;
7393     }
7394   return NULL;
7395 }
7396
7397 /* Return a string representation of type TYPE.  */
7398
7399 static std::string
7400 type_as_string (struct type *type)
7401 {
7402   string_file tmp_stream;
7403
7404   type_print (type, "", &tmp_stream, -1);
7405
7406   return std::move (tmp_stream.string ());
7407 }
7408
7409 /* Given a type TYPE, look up the type of the component of type named NAME.
7410    If DISPP is non-null, add its byte displacement from the beginning of a
7411    structure (pointed to by a value) of type TYPE to *DISPP (does not
7412    work for packed fields).
7413
7414    Matches any field whose name has NAME as a prefix, possibly
7415    followed by "___".
7416
7417    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7418    be a (pointer or reference)+ to a struct or union, and the
7419    ultimate target type will be searched.
7420
7421    Looks recursively into variant clauses and parent types.
7422
7423    In the case of homonyms in the tagged types, please refer to the
7424    long explanation in find_struct_field's function documentation.
7425
7426    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7427    TYPE is not a type of the right kind.  */
7428
7429 static struct type *
7430 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7431                             int noerr)
7432 {
7433   int i;
7434   int parent_offset = -1;
7435
7436   if (name == NULL)
7437     goto BadName;
7438
7439   if (refok && type != NULL)
7440     while (1)
7441       {
7442         type = ada_check_typedef (type);
7443         if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
7444           break;
7445         type = TYPE_TARGET_TYPE (type);
7446       }
7447
7448   if (type == NULL
7449       || (type->code () != TYPE_CODE_STRUCT
7450           && type->code () != TYPE_CODE_UNION))
7451     {
7452       if (noerr)
7453         return NULL;
7454
7455       error (_("Type %s is not a structure or union type"),
7456              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7457     }
7458
7459   type = to_static_fixed_type (type);
7460
7461   for (i = 0; i < type->num_fields (); i += 1)
7462     {
7463       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7464       struct type *t;
7465
7466       if (t_field_name == NULL)
7467         continue;
7468
7469       else if (ada_is_parent_field (type, i))
7470         {
7471           /* This is a field pointing us to the parent type of a tagged
7472              type.  As hinted in this function's documentation, we give
7473              preference to fields in the current record first, so what
7474              we do here is just record the index of this field before
7475              we skip it.  If it turns out we couldn't find our field
7476              in the current record, then we'll get back to it and search
7477              inside it whether the field might exist in the parent.  */
7478
7479           parent_offset = i;
7480           continue;
7481         }
7482
7483       else if (field_name_match (t_field_name, name))
7484         return TYPE_FIELD_TYPE (type, i);
7485
7486       else if (ada_is_wrapper_field (type, i))
7487         {
7488           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7489                                           0, 1);
7490           if (t != NULL)
7491             return t;
7492         }
7493
7494       else if (ada_is_variant_part (type, i))
7495         {
7496           int j;
7497           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7498                                                                         i));
7499
7500           for (j = field_type->num_fields () - 1; j >= 0; j -= 1)
7501             {
7502               /* FIXME pnh 2008/01/26: We check for a field that is
7503                  NOT wrapped in a struct, since the compiler sometimes
7504                  generates these for unchecked variant types.  Revisit
7505                  if the compiler changes this practice.  */
7506               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7507
7508               if (v_field_name != NULL 
7509                   && field_name_match (v_field_name, name))
7510                 t = TYPE_FIELD_TYPE (field_type, j);
7511               else
7512                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7513                                                                  j),
7514                                                 name, 0, 1);
7515
7516               if (t != NULL)
7517                 return t;
7518             }
7519         }
7520
7521     }
7522
7523     /* Field not found so far.  If this is a tagged type which
7524        has a parent, try finding that field in the parent now.  */
7525
7526     if (parent_offset != -1)
7527       {
7528         struct type *t;
7529
7530         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7531                                         name, 0, 1);
7532         if (t != NULL)
7533           return t;
7534       }
7535
7536 BadName:
7537   if (!noerr)
7538     {
7539       const char *name_str = name != NULL ? name : _("<null>");
7540
7541       error (_("Type %s has no component named %s"),
7542              type_as_string (type).c_str (), name_str);
7543     }
7544
7545   return NULL;
7546 }
7547
7548 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7549    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7550    represents an unchecked union (that is, the variant part of a
7551    record that is named in an Unchecked_Union pragma).  */
7552
7553 static int
7554 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7555 {
7556   const char *discrim_name = ada_variant_discrim_name (var_type);
7557
7558   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7559 }
7560
7561
7562 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7563    within OUTER, determine which variant clause (field number in VAR_TYPE,
7564    numbering from 0) is applicable.  Returns -1 if none are.  */
7565
7566 int
7567 ada_which_variant_applies (struct type *var_type, struct value *outer)
7568 {
7569   int others_clause;
7570   int i;
7571   const char *discrim_name = ada_variant_discrim_name (var_type);
7572   struct value *discrim;
7573   LONGEST discrim_val;
7574
7575   /* Using plain value_from_contents_and_address here causes problems
7576      because we will end up trying to resolve a type that is currently
7577      being constructed.  */
7578   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7579   if (discrim == NULL)
7580     return -1;
7581   discrim_val = value_as_long (discrim);
7582
7583   others_clause = -1;
7584   for (i = 0; i < var_type->num_fields (); i += 1)
7585     {
7586       if (ada_is_others_clause (var_type, i))
7587         others_clause = i;
7588       else if (ada_in_variant (discrim_val, var_type, i))
7589         return i;
7590     }
7591
7592   return others_clause;
7593 }
7594 \f
7595
7596
7597                                 /* Dynamic-Sized Records */
7598
7599 /* Strategy: The type ostensibly attached to a value with dynamic size
7600    (i.e., a size that is not statically recorded in the debugging
7601    data) does not accurately reflect the size or layout of the value.
7602    Our strategy is to convert these values to values with accurate,
7603    conventional types that are constructed on the fly.  */
7604
7605 /* There is a subtle and tricky problem here.  In general, we cannot
7606    determine the size of dynamic records without its data.  However,
7607    the 'struct value' data structure, which GDB uses to represent
7608    quantities in the inferior process (the target), requires the size
7609    of the type at the time of its allocation in order to reserve space
7610    for GDB's internal copy of the data.  That's why the
7611    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7612    rather than struct value*s.
7613
7614    However, GDB's internal history variables ($1, $2, etc.) are
7615    struct value*s containing internal copies of the data that are not, in
7616    general, the same as the data at their corresponding addresses in
7617    the target.  Fortunately, the types we give to these values are all
7618    conventional, fixed-size types (as per the strategy described
7619    above), so that we don't usually have to perform the
7620    'to_fixed_xxx_type' conversions to look at their values.
7621    Unfortunately, there is one exception: if one of the internal
7622    history variables is an array whose elements are unconstrained
7623    records, then we will need to create distinct fixed types for each
7624    element selected.  */
7625
7626 /* The upshot of all of this is that many routines take a (type, host
7627    address, target address) triple as arguments to represent a value.
7628    The host address, if non-null, is supposed to contain an internal
7629    copy of the relevant data; otherwise, the program is to consult the
7630    target at the target address.  */
7631
7632 /* Assuming that VAL0 represents a pointer value, the result of
7633    dereferencing it.  Differs from value_ind in its treatment of
7634    dynamic-sized types.  */
7635
7636 struct value *
7637 ada_value_ind (struct value *val0)
7638 {
7639   struct value *val = value_ind (val0);
7640
7641   if (ada_is_tagged_type (value_type (val), 0))
7642     val = ada_tag_value_at_base_address (val);
7643
7644   return ada_to_fixed_value (val);
7645 }
7646
7647 /* The value resulting from dereferencing any "reference to"
7648    qualifiers on VAL0.  */
7649
7650 static struct value *
7651 ada_coerce_ref (struct value *val0)
7652 {
7653   if (value_type (val0)->code () == TYPE_CODE_REF)
7654     {
7655       struct value *val = val0;
7656
7657       val = coerce_ref (val);
7658
7659       if (ada_is_tagged_type (value_type (val), 0))
7660         val = ada_tag_value_at_base_address (val);
7661
7662       return ada_to_fixed_value (val);
7663     }
7664   else
7665     return val0;
7666 }
7667
7668 /* Return the bit alignment required for field #F of template type TYPE.  */
7669
7670 static unsigned int
7671 field_alignment (struct type *type, int f)
7672 {
7673   const char *name = TYPE_FIELD_NAME (type, f);
7674   int len;
7675   int align_offset;
7676
7677   /* The field name should never be null, unless the debugging information
7678      is somehow malformed.  In this case, we assume the field does not
7679      require any alignment.  */
7680   if (name == NULL)
7681     return 1;
7682
7683   len = strlen (name);
7684
7685   if (!isdigit (name[len - 1]))
7686     return 1;
7687
7688   if (isdigit (name[len - 2]))
7689     align_offset = len - 2;
7690   else
7691     align_offset = len - 1;
7692
7693   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7694     return TARGET_CHAR_BIT;
7695
7696   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7697 }
7698
7699 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7700
7701 static struct symbol *
7702 ada_find_any_type_symbol (const char *name)
7703 {
7704   struct symbol *sym;
7705
7706   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7707   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7708     return sym;
7709
7710   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7711   return sym;
7712 }
7713
7714 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7715    solely for types defined by debug info, it will not search the GDB
7716    primitive types.  */
7717
7718 static struct type *
7719 ada_find_any_type (const char *name)
7720 {
7721   struct symbol *sym = ada_find_any_type_symbol (name);
7722
7723   if (sym != NULL)
7724     return SYMBOL_TYPE (sym);
7725
7726   return NULL;
7727 }
7728
7729 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7730    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7731    symbol, in which case it is returned.  Otherwise, this looks for
7732    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7733    Return symbol if found, and NULL otherwise.  */
7734
7735 static bool
7736 ada_is_renaming_symbol (struct symbol *name_sym)
7737 {
7738   const char *name = name_sym->linkage_name ();
7739   return strstr (name, "___XR") != NULL;
7740 }
7741
7742 /* Because of GNAT encoding conventions, several GDB symbols may match a
7743    given type name.  If the type denoted by TYPE0 is to be preferred to
7744    that of TYPE1 for purposes of type printing, return non-zero;
7745    otherwise return 0.  */
7746
7747 int
7748 ada_prefer_type (struct type *type0, struct type *type1)
7749 {
7750   if (type1 == NULL)
7751     return 1;
7752   else if (type0 == NULL)
7753     return 0;
7754   else if (type1->code () == TYPE_CODE_VOID)
7755     return 1;
7756   else if (type0->code () == TYPE_CODE_VOID)
7757     return 0;
7758   else if (type1->name () == NULL && type0->name () != NULL)
7759     return 1;
7760   else if (ada_is_constrained_packed_array_type (type0))
7761     return 1;
7762   else if (ada_is_array_descriptor_type (type0)
7763            && !ada_is_array_descriptor_type (type1))
7764     return 1;
7765   else
7766     {
7767       const char *type0_name = type0->name ();
7768       const char *type1_name = type1->name ();
7769
7770       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7771           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7772         return 1;
7773     }
7774   return 0;
7775 }
7776
7777 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7778    null.  */
7779
7780 const char *
7781 ada_type_name (struct type *type)
7782 {
7783   if (type == NULL)
7784     return NULL;
7785   return type->name ();
7786 }
7787
7788 /* Search the list of "descriptive" types associated to TYPE for a type
7789    whose name is NAME.  */
7790
7791 static struct type *
7792 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7793 {
7794   struct type *result, *tmp;
7795
7796   if (ada_ignore_descriptive_types_p)
7797     return NULL;
7798
7799   /* If there no descriptive-type info, then there is no parallel type
7800      to be found.  */
7801   if (!HAVE_GNAT_AUX_INFO (type))
7802     return NULL;
7803
7804   result = TYPE_DESCRIPTIVE_TYPE (type);
7805   while (result != NULL)
7806     {
7807       const char *result_name = ada_type_name (result);
7808
7809       if (result_name == NULL)
7810         {
7811           warning (_("unexpected null name on descriptive type"));
7812           return NULL;
7813         }
7814
7815       /* If the names match, stop.  */
7816       if (strcmp (result_name, name) == 0)
7817         break;
7818
7819       /* Otherwise, look at the next item on the list, if any.  */
7820       if (HAVE_GNAT_AUX_INFO (result))
7821         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7822       else
7823         tmp = NULL;
7824
7825       /* If not found either, try after having resolved the typedef.  */
7826       if (tmp != NULL)
7827         result = tmp;
7828       else
7829         {
7830           result = check_typedef (result);
7831           if (HAVE_GNAT_AUX_INFO (result))
7832             result = TYPE_DESCRIPTIVE_TYPE (result);
7833           else
7834             result = NULL;
7835         }
7836     }
7837
7838   /* If we didn't find a match, see whether this is a packed array.  With
7839      older compilers, the descriptive type information is either absent or
7840      irrelevant when it comes to packed arrays so the above lookup fails.
7841      Fall back to using a parallel lookup by name in this case.  */
7842   if (result == NULL && ada_is_constrained_packed_array_type (type))
7843     return ada_find_any_type (name);
7844
7845   return result;
7846 }
7847
7848 /* Find a parallel type to TYPE with the specified NAME, using the
7849    descriptive type taken from the debugging information, if available,
7850    and otherwise using the (slower) name-based method.  */
7851
7852 static struct type *
7853 ada_find_parallel_type_with_name (struct type *type, const char *name)
7854 {
7855   struct type *result = NULL;
7856
7857   if (HAVE_GNAT_AUX_INFO (type))
7858     result = find_parallel_type_by_descriptive_type (type, name);
7859   else
7860     result = ada_find_any_type (name);
7861
7862   return result;
7863 }
7864
7865 /* Same as above, but specify the name of the parallel type by appending
7866    SUFFIX to the name of TYPE.  */
7867
7868 struct type *
7869 ada_find_parallel_type (struct type *type, const char *suffix)
7870 {
7871   char *name;
7872   const char *type_name = ada_type_name (type);
7873   int len;
7874
7875   if (type_name == NULL)
7876     return NULL;
7877
7878   len = strlen (type_name);
7879
7880   name = (char *) alloca (len + strlen (suffix) + 1);
7881
7882   strcpy (name, type_name);
7883   strcpy (name + len, suffix);
7884
7885   return ada_find_parallel_type_with_name (type, name);
7886 }
7887
7888 /* If TYPE is a variable-size record type, return the corresponding template
7889    type describing its fields.  Otherwise, return NULL.  */
7890
7891 static struct type *
7892 dynamic_template_type (struct type *type)
7893 {
7894   type = ada_check_typedef (type);
7895
7896   if (type == NULL || type->code () != TYPE_CODE_STRUCT
7897       || ada_type_name (type) == NULL)
7898     return NULL;
7899   else
7900     {
7901       int len = strlen (ada_type_name (type));
7902
7903       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
7904         return type;
7905       else
7906         return ada_find_parallel_type (type, "___XVE");
7907     }
7908 }
7909
7910 /* Assuming that TEMPL_TYPE is a union or struct type, returns
7911    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
7912
7913 static int
7914 is_dynamic_field (struct type *templ_type, int field_num)
7915 {
7916   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
7917
7918   return name != NULL
7919     && TYPE_FIELD_TYPE (templ_type, field_num)->code () == TYPE_CODE_PTR
7920     && strstr (name, "___XVL") != NULL;
7921 }
7922
7923 /* The index of the variant field of TYPE, or -1 if TYPE does not
7924    represent a variant record type.  */
7925
7926 static int
7927 variant_field_index (struct type *type)
7928 {
7929   int f;
7930
7931   if (type == NULL || type->code () != TYPE_CODE_STRUCT)
7932     return -1;
7933
7934   for (f = 0; f < type->num_fields (); f += 1)
7935     {
7936       if (ada_is_variant_part (type, f))
7937         return f;
7938     }
7939   return -1;
7940 }
7941
7942 /* A record type with no fields.  */
7943
7944 static struct type *
7945 empty_record (struct type *templ)
7946 {
7947   struct type *type = alloc_type_copy (templ);
7948
7949   type->set_code (TYPE_CODE_STRUCT);
7950   INIT_NONE_SPECIFIC (type);
7951   type->set_name ("<empty>");
7952   TYPE_LENGTH (type) = 0;
7953   return type;
7954 }
7955
7956 /* An ordinary record type (with fixed-length fields) that describes
7957    the value of type TYPE at VALADDR or ADDRESS (see comments at
7958    the beginning of this section) VAL according to GNAT conventions.
7959    DVAL0 should describe the (portion of a) record that contains any
7960    necessary discriminants.  It should be NULL if value_type (VAL) is
7961    an outer-level type (i.e., as opposed to a branch of a variant.)  A
7962    variant field (unless unchecked) is replaced by a particular branch
7963    of the variant.
7964
7965    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
7966    length are not statically known are discarded.  As a consequence,
7967    VALADDR, ADDRESS and DVAL0 are ignored.
7968
7969    NOTE: Limitations: For now, we assume that dynamic fields and
7970    variants occupy whole numbers of bytes.  However, they need not be
7971    byte-aligned.  */
7972
7973 struct type *
7974 ada_template_to_fixed_record_type_1 (struct type *type,
7975                                      const gdb_byte *valaddr,
7976                                      CORE_ADDR address, struct value *dval0,
7977                                      int keep_dynamic_fields)
7978 {
7979   struct value *mark = value_mark ();
7980   struct value *dval;
7981   struct type *rtype;
7982   int nfields, bit_len;
7983   int variant_field;
7984   long off;
7985   int fld_bit_len;
7986   int f;
7987
7988   /* Compute the number of fields in this record type that are going
7989      to be processed: unless keep_dynamic_fields, this includes only
7990      fields whose position and length are static will be processed.  */
7991   if (keep_dynamic_fields)
7992     nfields = type->num_fields ();
7993   else
7994     {
7995       nfields = 0;
7996       while (nfields < type->num_fields ()
7997              && !ada_is_variant_part (type, nfields)
7998              && !is_dynamic_field (type, nfields))
7999         nfields++;
8000     }
8001
8002   rtype = alloc_type_copy (type);
8003   rtype->set_code (TYPE_CODE_STRUCT);
8004   INIT_NONE_SPECIFIC (rtype);
8005   rtype->set_num_fields (nfields);
8006   rtype->set_fields
8007    ((struct field *) TYPE_ZALLOC (rtype, nfields * sizeof (struct field)));
8008   rtype->set_name (ada_type_name (type));
8009   TYPE_FIXED_INSTANCE (rtype) = 1;
8010
8011   off = 0;
8012   bit_len = 0;
8013   variant_field = -1;
8014
8015   for (f = 0; f < nfields; f += 1)
8016     {
8017       off = align_up (off, field_alignment (type, f))
8018         + TYPE_FIELD_BITPOS (type, f);
8019       SET_FIELD_BITPOS (rtype->field (f), off);
8020       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8021
8022       if (ada_is_variant_part (type, f))
8023         {
8024           variant_field = f;
8025           fld_bit_len = 0;
8026         }
8027       else if (is_dynamic_field (type, f))
8028         {
8029           const gdb_byte *field_valaddr = valaddr;
8030           CORE_ADDR field_address = address;
8031           struct type *field_type =
8032             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8033
8034           if (dval0 == NULL)
8035             {
8036               /* rtype's length is computed based on the run-time
8037                  value of discriminants.  If the discriminants are not
8038                  initialized, the type size may be completely bogus and
8039                  GDB may fail to allocate a value for it.  So check the
8040                  size first before creating the value.  */
8041               ada_ensure_varsize_limit (rtype);
8042               /* Using plain value_from_contents_and_address here
8043                  causes problems because we will end up trying to
8044                  resolve a type that is currently being
8045                  constructed.  */
8046               dval = value_from_contents_and_address_unresolved (rtype,
8047                                                                  valaddr,
8048                                                                  address);
8049               rtype = value_type (dval);
8050             }
8051           else
8052             dval = dval0;
8053
8054           /* If the type referenced by this field is an aligner type, we need
8055              to unwrap that aligner type, because its size might not be set.
8056              Keeping the aligner type would cause us to compute the wrong
8057              size for this field, impacting the offset of the all the fields
8058              that follow this one.  */
8059           if (ada_is_aligner_type (field_type))
8060             {
8061               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8062
8063               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8064               field_address = cond_offset_target (field_address, field_offset);
8065               field_type = ada_aligned_type (field_type);
8066             }
8067
8068           field_valaddr = cond_offset_host (field_valaddr,
8069                                             off / TARGET_CHAR_BIT);
8070           field_address = cond_offset_target (field_address,
8071                                               off / TARGET_CHAR_BIT);
8072
8073           /* Get the fixed type of the field.  Note that, in this case,
8074              we do not want to get the real type out of the tag: if
8075              the current field is the parent part of a tagged record,
8076              we will get the tag of the object.  Clearly wrong: the real
8077              type of the parent is not the real type of the child.  We
8078              would end up in an infinite loop.  */
8079           field_type = ada_get_base_type (field_type);
8080           field_type = ada_to_fixed_type (field_type, field_valaddr,
8081                                           field_address, dval, 0);
8082           /* If the field size is already larger than the maximum
8083              object size, then the record itself will necessarily
8084              be larger than the maximum object size.  We need to make
8085              this check now, because the size might be so ridiculously
8086              large (due to an uninitialized variable in the inferior)
8087              that it would cause an overflow when adding it to the
8088              record size.  */
8089           ada_ensure_varsize_limit (field_type);
8090
8091           TYPE_FIELD_TYPE (rtype, f) = field_type;
8092           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8093           /* The multiplication can potentially overflow.  But because
8094              the field length has been size-checked just above, and
8095              assuming that the maximum size is a reasonable value,
8096              an overflow should not happen in practice.  So rather than
8097              adding overflow recovery code to this already complex code,
8098              we just assume that it's not going to happen.  */
8099           fld_bit_len =
8100             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8101         }
8102       else
8103         {
8104           /* Note: If this field's type is a typedef, it is important
8105              to preserve the typedef layer.
8106
8107              Otherwise, we might be transforming a typedef to a fat
8108              pointer (encoding a pointer to an unconstrained array),
8109              into a basic fat pointer (encoding an unconstrained
8110              array).  As both types are implemented using the same
8111              structure, the typedef is the only clue which allows us
8112              to distinguish between the two options.  Stripping it
8113              would prevent us from printing this field appropriately.  */
8114           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8115           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8116           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8117             fld_bit_len =
8118               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8119           else
8120             {
8121               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8122
8123               /* We need to be careful of typedefs when computing
8124                  the length of our field.  If this is a typedef,
8125                  get the length of the target type, not the length
8126                  of the typedef.  */
8127               if (field_type->code () == TYPE_CODE_TYPEDEF)
8128                 field_type = ada_typedef_target_type (field_type);
8129
8130               fld_bit_len =
8131                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8132             }
8133         }
8134       if (off + fld_bit_len > bit_len)
8135         bit_len = off + fld_bit_len;
8136       off += fld_bit_len;
8137       TYPE_LENGTH (rtype) =
8138         align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8139     }
8140
8141   /* We handle the variant part, if any, at the end because of certain
8142      odd cases in which it is re-ordered so as NOT to be the last field of
8143      the record.  This can happen in the presence of representation
8144      clauses.  */
8145   if (variant_field >= 0)
8146     {
8147       struct type *branch_type;
8148
8149       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8150
8151       if (dval0 == NULL)
8152         {
8153           /* Using plain value_from_contents_and_address here causes
8154              problems because we will end up trying to resolve a type
8155              that is currently being constructed.  */
8156           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8157                                                              address);
8158           rtype = value_type (dval);
8159         }
8160       else
8161         dval = dval0;
8162
8163       branch_type =
8164         to_fixed_variant_branch_type
8165         (TYPE_FIELD_TYPE (type, variant_field),
8166          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8167          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8168       if (branch_type == NULL)
8169         {
8170           for (f = variant_field + 1; f < rtype->num_fields (); f += 1)
8171             rtype->field (f - 1) = rtype->field (f);
8172           rtype->set_num_fields (rtype->num_fields () - 1);
8173         }
8174       else
8175         {
8176           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8177           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8178           fld_bit_len =
8179             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8180             TARGET_CHAR_BIT;
8181           if (off + fld_bit_len > bit_len)
8182             bit_len = off + fld_bit_len;
8183           TYPE_LENGTH (rtype) =
8184             align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8185         }
8186     }
8187
8188   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8189      should contain the alignment of that record, which should be a strictly
8190      positive value.  If null or negative, then something is wrong, most
8191      probably in the debug info.  In that case, we don't round up the size
8192      of the resulting type.  If this record is not part of another structure,
8193      the current RTYPE length might be good enough for our purposes.  */
8194   if (TYPE_LENGTH (type) <= 0)
8195     {
8196       if (rtype->name ())
8197         warning (_("Invalid type size for `%s' detected: %s."),
8198                  rtype->name (), pulongest (TYPE_LENGTH (type)));
8199       else
8200         warning (_("Invalid type size for <unnamed> detected: %s."),
8201                  pulongest (TYPE_LENGTH (type)));
8202     }
8203   else
8204     {
8205       TYPE_LENGTH (rtype) = align_up (TYPE_LENGTH (rtype),
8206                                       TYPE_LENGTH (type));
8207     }
8208
8209   value_free_to_mark (mark);
8210   if (TYPE_LENGTH (rtype) > varsize_limit)
8211     error (_("record type with dynamic size is larger than varsize-limit"));
8212   return rtype;
8213 }
8214
8215 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8216    of 1.  */
8217
8218 static struct type *
8219 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8220                                CORE_ADDR address, struct value *dval0)
8221 {
8222   return ada_template_to_fixed_record_type_1 (type, valaddr,
8223                                               address, dval0, 1);
8224 }
8225
8226 /* An ordinary record type in which ___XVL-convention fields and
8227    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8228    static approximations, containing all possible fields.  Uses
8229    no runtime values.  Useless for use in values, but that's OK,
8230    since the results are used only for type determinations.   Works on both
8231    structs and unions.  Representation note: to save space, we memorize
8232    the result of this function in the TYPE_TARGET_TYPE of the
8233    template type.  */
8234
8235 static struct type *
8236 template_to_static_fixed_type (struct type *type0)
8237 {
8238   struct type *type;
8239   int nfields;
8240   int f;
8241
8242   /* No need no do anything if the input type is already fixed.  */
8243   if (TYPE_FIXED_INSTANCE (type0))
8244     return type0;
8245
8246   /* Likewise if we already have computed the static approximation.  */
8247   if (TYPE_TARGET_TYPE (type0) != NULL)
8248     return TYPE_TARGET_TYPE (type0);
8249
8250   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8251   type = type0;
8252   nfields = type0->num_fields ();
8253
8254   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8255      recompute all over next time.  */
8256   TYPE_TARGET_TYPE (type0) = type;
8257
8258   for (f = 0; f < nfields; f += 1)
8259     {
8260       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8261       struct type *new_type;
8262
8263       if (is_dynamic_field (type0, f))
8264         {
8265           field_type = ada_check_typedef (field_type);
8266           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8267         }
8268       else
8269         new_type = static_unwrap_type (field_type);
8270
8271       if (new_type != field_type)
8272         {
8273           /* Clone TYPE0 only the first time we get a new field type.  */
8274           if (type == type0)
8275             {
8276               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8277               type->set_code (type0->code ());
8278               INIT_NONE_SPECIFIC (type);
8279               type->set_num_fields (nfields);
8280
8281               field *fields =
8282                 ((struct field *)
8283                  TYPE_ALLOC (type, nfields * sizeof (struct field)));
8284               memcpy (fields, type0->fields (),
8285                       sizeof (struct field) * nfields);
8286               type->set_fields (fields);
8287
8288               type->set_name (ada_type_name (type0));
8289               TYPE_FIXED_INSTANCE (type) = 1;
8290               TYPE_LENGTH (type) = 0;
8291             }
8292           TYPE_FIELD_TYPE (type, f) = new_type;
8293           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8294         }
8295     }
8296
8297   return type;
8298 }
8299
8300 /* Given an object of type TYPE whose contents are at VALADDR and
8301    whose address in memory is ADDRESS, returns a revision of TYPE,
8302    which should be a non-dynamic-sized record, in which the variant
8303    part, if any, is replaced with the appropriate branch.  Looks
8304    for discriminant values in DVAL0, which can be NULL if the record
8305    contains the necessary discriminant values.  */
8306
8307 static struct type *
8308 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8309                                    CORE_ADDR address, struct value *dval0)
8310 {
8311   struct value *mark = value_mark ();
8312   struct value *dval;
8313   struct type *rtype;
8314   struct type *branch_type;
8315   int nfields = type->num_fields ();
8316   int variant_field = variant_field_index (type);
8317
8318   if (variant_field == -1)
8319     return type;
8320
8321   if (dval0 == NULL)
8322     {
8323       dval = value_from_contents_and_address (type, valaddr, address);
8324       type = value_type (dval);
8325     }
8326   else
8327     dval = dval0;
8328
8329   rtype = alloc_type_copy (type);
8330   rtype->set_code (TYPE_CODE_STRUCT);
8331   INIT_NONE_SPECIFIC (rtype);
8332   rtype->set_num_fields (nfields);
8333
8334   field *fields =
8335     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8336   memcpy (fields, type->fields (), sizeof (struct field) * nfields);
8337   rtype->set_fields (fields);
8338
8339   rtype->set_name (ada_type_name (type));
8340   TYPE_FIXED_INSTANCE (rtype) = 1;
8341   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8342
8343   branch_type = to_fixed_variant_branch_type
8344     (TYPE_FIELD_TYPE (type, variant_field),
8345      cond_offset_host (valaddr,
8346                        TYPE_FIELD_BITPOS (type, variant_field)
8347                        / TARGET_CHAR_BIT),
8348      cond_offset_target (address,
8349                          TYPE_FIELD_BITPOS (type, variant_field)
8350                          / TARGET_CHAR_BIT), dval);
8351   if (branch_type == NULL)
8352     {
8353       int f;
8354
8355       for (f = variant_field + 1; f < nfields; f += 1)
8356         rtype->field (f - 1) = rtype->field (f);
8357       rtype->set_num_fields (rtype->num_fields () - 1);
8358     }
8359   else
8360     {
8361       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8362       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8363       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8364       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8365     }
8366   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8367
8368   value_free_to_mark (mark);
8369   return rtype;
8370 }
8371
8372 /* An ordinary record type (with fixed-length fields) that describes
8373    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8374    beginning of this section].   Any necessary discriminants' values
8375    should be in DVAL, a record value; it may be NULL if the object
8376    at ADDR itself contains any necessary discriminant values.
8377    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8378    values from the record are needed.  Except in the case that DVAL,
8379    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8380    unchecked) is replaced by a particular branch of the variant.
8381
8382    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8383    is questionable and may be removed.  It can arise during the
8384    processing of an unconstrained-array-of-record type where all the
8385    variant branches have exactly the same size.  This is because in
8386    such cases, the compiler does not bother to use the XVS convention
8387    when encoding the record.  I am currently dubious of this
8388    shortcut and suspect the compiler should be altered.  FIXME.  */
8389
8390 static struct type *
8391 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8392                       CORE_ADDR address, struct value *dval)
8393 {
8394   struct type *templ_type;
8395
8396   if (TYPE_FIXED_INSTANCE (type0))
8397     return type0;
8398
8399   templ_type = dynamic_template_type (type0);
8400
8401   if (templ_type != NULL)
8402     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8403   else if (variant_field_index (type0) >= 0)
8404     {
8405       if (dval == NULL && valaddr == NULL && address == 0)
8406         return type0;
8407       return to_record_with_fixed_variant_part (type0, valaddr, address,
8408                                                 dval);
8409     }
8410   else
8411     {
8412       TYPE_FIXED_INSTANCE (type0) = 1;
8413       return type0;
8414     }
8415
8416 }
8417
8418 /* An ordinary record type (with fixed-length fields) that describes
8419    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8420    union type.  Any necessary discriminants' values should be in DVAL,
8421    a record value.  That is, this routine selects the appropriate
8422    branch of the union at ADDR according to the discriminant value
8423    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8424    it represents a variant subject to a pragma Unchecked_Union.  */
8425
8426 static struct type *
8427 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8428                               CORE_ADDR address, struct value *dval)
8429 {
8430   int which;
8431   struct type *templ_type;
8432   struct type *var_type;
8433
8434   if (var_type0->code () == TYPE_CODE_PTR)
8435     var_type = TYPE_TARGET_TYPE (var_type0);
8436   else
8437     var_type = var_type0;
8438
8439   templ_type = ada_find_parallel_type (var_type, "___XVU");
8440
8441   if (templ_type != NULL)
8442     var_type = templ_type;
8443
8444   if (is_unchecked_variant (var_type, value_type (dval)))
8445       return var_type0;
8446   which = ada_which_variant_applies (var_type, dval);
8447
8448   if (which < 0)
8449     return empty_record (var_type);
8450   else if (is_dynamic_field (var_type, which))
8451     return to_fixed_record_type
8452       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8453        valaddr, address, dval);
8454   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8455     return
8456       to_fixed_record_type
8457       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8458   else
8459     return TYPE_FIELD_TYPE (var_type, which);
8460 }
8461
8462 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8463    ENCODING_TYPE, a type following the GNAT conventions for discrete
8464    type encodings, only carries redundant information.  */
8465
8466 static int
8467 ada_is_redundant_range_encoding (struct type *range_type,
8468                                  struct type *encoding_type)
8469 {
8470   const char *bounds_str;
8471   int n;
8472   LONGEST lo, hi;
8473
8474   gdb_assert (range_type->code () == TYPE_CODE_RANGE);
8475
8476   if (get_base_type (range_type)->code ()
8477       != get_base_type (encoding_type)->code ())
8478     {
8479       /* The compiler probably used a simple base type to describe
8480          the range type instead of the range's actual base type,
8481          expecting us to get the real base type from the encoding
8482          anyway.  In this situation, the encoding cannot be ignored
8483          as redundant.  */
8484       return 0;
8485     }
8486
8487   if (is_dynamic_type (range_type))
8488     return 0;
8489
8490   if (encoding_type->name () == NULL)
8491     return 0;
8492
8493   bounds_str = strstr (encoding_type->name (), "___XDLU_");
8494   if (bounds_str == NULL)
8495     return 0;
8496
8497   n = 8; /* Skip "___XDLU_".  */
8498   if (!ada_scan_number (bounds_str, n, &lo, &n))
8499     return 0;
8500   if (TYPE_LOW_BOUND (range_type) != lo)
8501     return 0;
8502
8503   n += 2; /* Skip the "__" separator between the two bounds.  */
8504   if (!ada_scan_number (bounds_str, n, &hi, &n))
8505     return 0;
8506   if (TYPE_HIGH_BOUND (range_type) != hi)
8507     return 0;
8508
8509   return 1;
8510 }
8511
8512 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8513    a type following the GNAT encoding for describing array type
8514    indices, only carries redundant information.  */
8515
8516 static int
8517 ada_is_redundant_index_type_desc (struct type *array_type,
8518                                   struct type *desc_type)
8519 {
8520   struct type *this_layer = check_typedef (array_type);
8521   int i;
8522
8523   for (i = 0; i < desc_type->num_fields (); i++)
8524     {
8525       if (!ada_is_redundant_range_encoding (this_layer->index_type (),
8526                                             TYPE_FIELD_TYPE (desc_type, i)))
8527         return 0;
8528       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8529     }
8530
8531   return 1;
8532 }
8533
8534 /* Assuming that TYPE0 is an array type describing the type of a value
8535    at ADDR, and that DVAL describes a record containing any
8536    discriminants used in TYPE0, returns a type for the value that
8537    contains no dynamic components (that is, no components whose sizes
8538    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8539    true, gives an error message if the resulting type's size is over
8540    varsize_limit.  */
8541
8542 static struct type *
8543 to_fixed_array_type (struct type *type0, struct value *dval,
8544                      int ignore_too_big)
8545 {
8546   struct type *index_type_desc;
8547   struct type *result;
8548   int constrained_packed_array_p;
8549   static const char *xa_suffix = "___XA";
8550
8551   type0 = ada_check_typedef (type0);
8552   if (TYPE_FIXED_INSTANCE (type0))
8553     return type0;
8554
8555   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8556   if (constrained_packed_array_p)
8557     type0 = decode_constrained_packed_array_type (type0);
8558
8559   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8560
8561   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8562      encoding suffixed with 'P' may still be generated.  If so,
8563      it should be used to find the XA type.  */
8564
8565   if (index_type_desc == NULL)
8566     {
8567       const char *type_name = ada_type_name (type0);
8568
8569       if (type_name != NULL)
8570         {
8571           const int len = strlen (type_name);
8572           char *name = (char *) alloca (len + strlen (xa_suffix));
8573
8574           if (type_name[len - 1] == 'P')
8575             {
8576               strcpy (name, type_name);
8577               strcpy (name + len - 1, xa_suffix);
8578               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8579             }
8580         }
8581     }
8582
8583   ada_fixup_array_indexes_type (index_type_desc);
8584   if (index_type_desc != NULL
8585       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8586     {
8587       /* Ignore this ___XA parallel type, as it does not bring any
8588          useful information.  This allows us to avoid creating fixed
8589          versions of the array's index types, which would be identical
8590          to the original ones.  This, in turn, can also help avoid
8591          the creation of fixed versions of the array itself.  */
8592       index_type_desc = NULL;
8593     }
8594
8595   if (index_type_desc == NULL)
8596     {
8597       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8598
8599       /* NOTE: elt_type---the fixed version of elt_type0---should never
8600          depend on the contents of the array in properly constructed
8601          debugging data.  */
8602       /* Create a fixed version of the array element type.
8603          We're not providing the address of an element here,
8604          and thus the actual object value cannot be inspected to do
8605          the conversion.  This should not be a problem, since arrays of
8606          unconstrained objects are not allowed.  In particular, all
8607          the elements of an array of a tagged type should all be of
8608          the same type specified in the debugging info.  No need to
8609          consult the object tag.  */
8610       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8611
8612       /* Make sure we always create a new array type when dealing with
8613          packed array types, since we're going to fix-up the array
8614          type length and element bitsize a little further down.  */
8615       if (elt_type0 == elt_type && !constrained_packed_array_p)
8616         result = type0;
8617       else
8618         result = create_array_type (alloc_type_copy (type0),
8619                                     elt_type, type0->index_type ());
8620     }
8621   else
8622     {
8623       int i;
8624       struct type *elt_type0;
8625
8626       elt_type0 = type0;
8627       for (i = index_type_desc->num_fields (); i > 0; i -= 1)
8628         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8629
8630       /* NOTE: result---the fixed version of elt_type0---should never
8631          depend on the contents of the array in properly constructed
8632          debugging data.  */
8633       /* Create a fixed version of the array element type.
8634          We're not providing the address of an element here,
8635          and thus the actual object value cannot be inspected to do
8636          the conversion.  This should not be a problem, since arrays of
8637          unconstrained objects are not allowed.  In particular, all
8638          the elements of an array of a tagged type should all be of
8639          the same type specified in the debugging info.  No need to
8640          consult the object tag.  */
8641       result =
8642         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8643
8644       elt_type0 = type0;
8645       for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
8646         {
8647           struct type *range_type =
8648             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8649
8650           result = create_array_type (alloc_type_copy (elt_type0),
8651                                       result, range_type);
8652           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8653         }
8654       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8655         error (_("array type with dynamic size is larger than varsize-limit"));
8656     }
8657
8658   /* We want to preserve the type name.  This can be useful when
8659      trying to get the type name of a value that has already been
8660      printed (for instance, if the user did "print VAR; whatis $".  */
8661   result->set_name (type0->name ());
8662
8663   if (constrained_packed_array_p)
8664     {
8665       /* So far, the resulting type has been created as if the original
8666          type was a regular (non-packed) array type.  As a result, the
8667          bitsize of the array elements needs to be set again, and the array
8668          length needs to be recomputed based on that bitsize.  */
8669       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8670       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8671
8672       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8673       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8674       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8675         TYPE_LENGTH (result)++;
8676     }
8677
8678   TYPE_FIXED_INSTANCE (result) = 1;
8679   return result;
8680 }
8681
8682
8683 /* A standard type (containing no dynamically sized components)
8684    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8685    DVAL describes a record containing any discriminants used in TYPE0,
8686    and may be NULL if there are none, or if the object of type TYPE at
8687    ADDRESS or in VALADDR contains these discriminants.
8688    
8689    If CHECK_TAG is not null, in the case of tagged types, this function
8690    attempts to locate the object's tag and use it to compute the actual
8691    type.  However, when ADDRESS is null, we cannot use it to determine the
8692    location of the tag, and therefore compute the tagged type's actual type.
8693    So we return the tagged type without consulting the tag.  */
8694    
8695 static struct type *
8696 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8697                    CORE_ADDR address, struct value *dval, int check_tag)
8698 {
8699   type = ada_check_typedef (type);
8700
8701   /* Only un-fixed types need to be handled here.  */
8702   if (!HAVE_GNAT_AUX_INFO (type))
8703     return type;
8704
8705   switch (type->code ())
8706     {
8707     default:
8708       return type;
8709     case TYPE_CODE_STRUCT:
8710       {
8711         struct type *static_type = to_static_fixed_type (type);
8712         struct type *fixed_record_type =
8713           to_fixed_record_type (type, valaddr, address, NULL);
8714
8715         /* If STATIC_TYPE is a tagged type and we know the object's address,
8716            then we can determine its tag, and compute the object's actual
8717            type from there.  Note that we have to use the fixed record
8718            type (the parent part of the record may have dynamic fields
8719            and the way the location of _tag is expressed may depend on
8720            them).  */
8721
8722         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8723           {
8724             struct value *tag =
8725               value_tag_from_contents_and_address
8726               (fixed_record_type,
8727                valaddr,
8728                address);
8729             struct type *real_type = type_from_tag (tag);
8730             struct value *obj =
8731               value_from_contents_and_address (fixed_record_type,
8732                                                valaddr,
8733                                                address);
8734             fixed_record_type = value_type (obj);
8735             if (real_type != NULL)
8736               return to_fixed_record_type
8737                 (real_type, NULL,
8738                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8739           }
8740
8741         /* Check to see if there is a parallel ___XVZ variable.
8742            If there is, then it provides the actual size of our type.  */
8743         else if (ada_type_name (fixed_record_type) != NULL)
8744           {
8745             const char *name = ada_type_name (fixed_record_type);
8746             char *xvz_name
8747               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8748             bool xvz_found = false;
8749             LONGEST size;
8750
8751             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8752             try
8753               {
8754                 xvz_found = get_int_var_value (xvz_name, size);
8755               }
8756             catch (const gdb_exception_error &except)
8757               {
8758                 /* We found the variable, but somehow failed to read
8759                    its value.  Rethrow the same error, but with a little
8760                    bit more information, to help the user understand
8761                    what went wrong (Eg: the variable might have been
8762                    optimized out).  */
8763                 throw_error (except.error,
8764                              _("unable to read value of %s (%s)"),
8765                              xvz_name, except.what ());
8766               }
8767
8768             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8769               {
8770                 fixed_record_type = copy_type (fixed_record_type);
8771                 TYPE_LENGTH (fixed_record_type) = size;
8772
8773                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8774                    observed this when the debugging info is STABS, and
8775                    apparently it is something that is hard to fix.
8776
8777                    In practice, we don't need the actual type definition
8778                    at all, because the presence of the XVZ variable allows us
8779                    to assume that there must be a XVS type as well, which we
8780                    should be able to use later, when we need the actual type
8781                    definition.
8782
8783                    In the meantime, pretend that the "fixed" type we are
8784                    returning is NOT a stub, because this can cause trouble
8785                    when using this type to create new types targeting it.
8786                    Indeed, the associated creation routines often check
8787                    whether the target type is a stub and will try to replace
8788                    it, thus using a type with the wrong size.  This, in turn,
8789                    might cause the new type to have the wrong size too.
8790                    Consider the case of an array, for instance, where the size
8791                    of the array is computed from the number of elements in
8792                    our array multiplied by the size of its element.  */
8793                 TYPE_STUB (fixed_record_type) = 0;
8794               }
8795           }
8796         return fixed_record_type;
8797       }
8798     case TYPE_CODE_ARRAY:
8799       return to_fixed_array_type (type, dval, 1);
8800     case TYPE_CODE_UNION:
8801       if (dval == NULL)
8802         return type;
8803       else
8804         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8805     }
8806 }
8807
8808 /* The same as ada_to_fixed_type_1, except that it preserves the type
8809    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8810
8811    The typedef layer needs be preserved in order to differentiate between
8812    arrays and array pointers when both types are implemented using the same
8813    fat pointer.  In the array pointer case, the pointer is encoded as
8814    a typedef of the pointer type.  For instance, considering:
8815
8816           type String_Access is access String;
8817           S1 : String_Access := null;
8818
8819    To the debugger, S1 is defined as a typedef of type String.  But
8820    to the user, it is a pointer.  So if the user tries to print S1,
8821    we should not dereference the array, but print the array address
8822    instead.
8823
8824    If we didn't preserve the typedef layer, we would lose the fact that
8825    the type is to be presented as a pointer (needs de-reference before
8826    being printed).  And we would also use the source-level type name.  */
8827
8828 struct type *
8829 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8830                    CORE_ADDR address, struct value *dval, int check_tag)
8831
8832 {
8833   struct type *fixed_type =
8834     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8835
8836   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8837       then preserve the typedef layer.
8838
8839       Implementation note: We can only check the main-type portion of
8840       the TYPE and FIXED_TYPE, because eliminating the typedef layer
8841       from TYPE now returns a type that has the same instance flags
8842       as TYPE.  For instance, if TYPE is a "typedef const", and its
8843       target type is a "struct", then the typedef elimination will return
8844       a "const" version of the target type.  See check_typedef for more
8845       details about how the typedef layer elimination is done.
8846
8847       brobecker/2010-11-19: It seems to me that the only case where it is
8848       useful to preserve the typedef layer is when dealing with fat pointers.
8849       Perhaps, we could add a check for that and preserve the typedef layer
8850       only in that situation.  But this seems unnecessary so far, probably
8851       because we call check_typedef/ada_check_typedef pretty much everywhere.
8852       */
8853   if (type->code () == TYPE_CODE_TYPEDEF
8854       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
8855           == TYPE_MAIN_TYPE (fixed_type)))
8856     return type;
8857
8858   return fixed_type;
8859 }
8860
8861 /* A standard (static-sized) type corresponding as well as possible to
8862    TYPE0, but based on no runtime data.  */
8863
8864 static struct type *
8865 to_static_fixed_type (struct type *type0)
8866 {
8867   struct type *type;
8868
8869   if (type0 == NULL)
8870     return NULL;
8871
8872   if (TYPE_FIXED_INSTANCE (type0))
8873     return type0;
8874
8875   type0 = ada_check_typedef (type0);
8876
8877   switch (type0->code ())
8878     {
8879     default:
8880       return type0;
8881     case TYPE_CODE_STRUCT:
8882       type = dynamic_template_type (type0);
8883       if (type != NULL)
8884         return template_to_static_fixed_type (type);
8885       else
8886         return template_to_static_fixed_type (type0);
8887     case TYPE_CODE_UNION:
8888       type = ada_find_parallel_type (type0, "___XVU");
8889       if (type != NULL)
8890         return template_to_static_fixed_type (type);
8891       else
8892         return template_to_static_fixed_type (type0);
8893     }
8894 }
8895
8896 /* A static approximation of TYPE with all type wrappers removed.  */
8897
8898 static struct type *
8899 static_unwrap_type (struct type *type)
8900 {
8901   if (ada_is_aligner_type (type))
8902     {
8903       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
8904       if (ada_type_name (type1) == NULL)
8905         type1->set_name (ada_type_name (type));
8906
8907       return static_unwrap_type (type1);
8908     }
8909   else
8910     {
8911       struct type *raw_real_type = ada_get_base_type (type);
8912
8913       if (raw_real_type == type)
8914         return type;
8915       else
8916         return to_static_fixed_type (raw_real_type);
8917     }
8918 }
8919
8920 /* In some cases, incomplete and private types require
8921    cross-references that are not resolved as records (for example,
8922       type Foo;
8923       type FooP is access Foo;
8924       V: FooP;
8925       type Foo is array ...;
8926    ).  In these cases, since there is no mechanism for producing
8927    cross-references to such types, we instead substitute for FooP a
8928    stub enumeration type that is nowhere resolved, and whose tag is
8929    the name of the actual type.  Call these types "non-record stubs".  */
8930
8931 /* A type equivalent to TYPE that is not a non-record stub, if one
8932    exists, otherwise TYPE.  */
8933
8934 struct type *
8935 ada_check_typedef (struct type *type)
8936 {
8937   if (type == NULL)
8938     return NULL;
8939
8940   /* If our type is an access to an unconstrained array, which is encoded
8941      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
8942      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
8943      what allows us to distinguish between fat pointers that represent
8944      array types, and fat pointers that represent array access types
8945      (in both cases, the compiler implements them as fat pointers).  */
8946   if (ada_is_access_to_unconstrained_array (type))
8947     return type;
8948
8949   type = check_typedef (type);
8950   if (type == NULL || type->code () != TYPE_CODE_ENUM
8951       || !TYPE_STUB (type)
8952       || type->name () == NULL)
8953     return type;
8954   else
8955     {
8956       const char *name = type->name ();
8957       struct type *type1 = ada_find_any_type (name);
8958
8959       if (type1 == NULL)
8960         return type;
8961
8962       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
8963          stubs pointing to arrays, as we don't create symbols for array
8964          types, only for the typedef-to-array types).  If that's the case,
8965          strip the typedef layer.  */
8966       if (type1->code () == TYPE_CODE_TYPEDEF)
8967         type1 = ada_check_typedef (type1);
8968
8969       return type1;
8970     }
8971 }
8972
8973 /* A value representing the data at VALADDR/ADDRESS as described by
8974    type TYPE0, but with a standard (static-sized) type that correctly
8975    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
8976    type, then return VAL0 [this feature is simply to avoid redundant
8977    creation of struct values].  */
8978
8979 static struct value *
8980 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
8981                            struct value *val0)
8982 {
8983   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
8984
8985   if (type == type0 && val0 != NULL)
8986     return val0;
8987
8988   if (VALUE_LVAL (val0) != lval_memory)
8989     {
8990       /* Our value does not live in memory; it could be a convenience
8991          variable, for instance.  Create a not_lval value using val0's
8992          contents.  */
8993       return value_from_contents (type, value_contents (val0));
8994     }
8995
8996   return value_from_contents_and_address (type, 0, address);
8997 }
8998
8999 /* A value representing VAL, but with a standard (static-sized) type
9000    that correctly describes it.  Does not necessarily create a new
9001    value.  */
9002
9003 struct value *
9004 ada_to_fixed_value (struct value *val)
9005 {
9006   val = unwrap_value (val);
9007   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9008   return val;
9009 }
9010 \f
9011
9012 /* Attributes */
9013
9014 /* Table mapping attribute numbers to names.
9015    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9016
9017 static const char *attribute_names[] = {
9018   "<?>",
9019
9020   "first",
9021   "last",
9022   "length",
9023   "image",
9024   "max",
9025   "min",
9026   "modulus",
9027   "pos",
9028   "size",
9029   "tag",
9030   "val",
9031   0
9032 };
9033
9034 static const char *
9035 ada_attribute_name (enum exp_opcode n)
9036 {
9037   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9038     return attribute_names[n - OP_ATR_FIRST + 1];
9039   else
9040     return attribute_names[0];
9041 }
9042
9043 /* Evaluate the 'POS attribute applied to ARG.  */
9044
9045 static LONGEST
9046 pos_atr (struct value *arg)
9047 {
9048   struct value *val = coerce_ref (arg);
9049   struct type *type = value_type (val);
9050   LONGEST result;
9051
9052   if (!discrete_type_p (type))
9053     error (_("'POS only defined on discrete types"));
9054
9055   if (!discrete_position (type, value_as_long (val), &result))
9056     error (_("enumeration value is invalid: can't find 'POS"));
9057
9058   return result;
9059 }
9060
9061 static struct value *
9062 value_pos_atr (struct type *type, struct value *arg)
9063 {
9064   return value_from_longest (type, pos_atr (arg));
9065 }
9066
9067 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9068
9069 static struct value *
9070 val_atr (struct type *type, LONGEST val)
9071 {
9072   gdb_assert (discrete_type_p (type));
9073   if (type->code () == TYPE_CODE_RANGE)
9074     type = TYPE_TARGET_TYPE (type);
9075   if (type->code () == TYPE_CODE_ENUM)
9076     {
9077       if (val < 0 || val >= type->num_fields ())
9078         error (_("argument to 'VAL out of range"));
9079       val = TYPE_FIELD_ENUMVAL (type, val);
9080     }
9081   return value_from_longest (type, val);
9082 }
9083
9084 static struct value *
9085 value_val_atr (struct type *type, struct value *arg)
9086 {
9087   if (!discrete_type_p (type))
9088     error (_("'VAL only defined on discrete types"));
9089   if (!integer_type_p (value_type (arg)))
9090     error (_("'VAL requires integral argument"));
9091
9092   return val_atr (type, value_as_long (arg));
9093 }
9094 \f
9095
9096                                 /* Evaluation */
9097
9098 /* True if TYPE appears to be an Ada character type.
9099    [At the moment, this is true only for Character and Wide_Character;
9100    It is a heuristic test that could stand improvement].  */
9101
9102 bool
9103 ada_is_character_type (struct type *type)
9104 {
9105   const char *name;
9106
9107   /* If the type code says it's a character, then assume it really is,
9108      and don't check any further.  */
9109   if (type->code () == TYPE_CODE_CHAR)
9110     return true;
9111   
9112   /* Otherwise, assume it's a character type iff it is a discrete type
9113      with a known character type name.  */
9114   name = ada_type_name (type);
9115   return (name != NULL
9116           && (type->code () == TYPE_CODE_INT
9117               || type->code () == TYPE_CODE_RANGE)
9118           && (strcmp (name, "character") == 0
9119               || strcmp (name, "wide_character") == 0
9120               || strcmp (name, "wide_wide_character") == 0
9121               || strcmp (name, "unsigned char") == 0));
9122 }
9123
9124 /* True if TYPE appears to be an Ada string type.  */
9125
9126 bool
9127 ada_is_string_type (struct type *type)
9128 {
9129   type = ada_check_typedef (type);
9130   if (type != NULL
9131       && type->code () != TYPE_CODE_PTR
9132       && (ada_is_simple_array_type (type)
9133           || ada_is_array_descriptor_type (type))
9134       && ada_array_arity (type) == 1)
9135     {
9136       struct type *elttype = ada_array_element_type (type, 1);
9137
9138       return ada_is_character_type (elttype);
9139     }
9140   else
9141     return false;
9142 }
9143
9144 /* The compiler sometimes provides a parallel XVS type for a given
9145    PAD type.  Normally, it is safe to follow the PAD type directly,
9146    but older versions of the compiler have a bug that causes the offset
9147    of its "F" field to be wrong.  Following that field in that case
9148    would lead to incorrect results, but this can be worked around
9149    by ignoring the PAD type and using the associated XVS type instead.
9150
9151    Set to True if the debugger should trust the contents of PAD types.
9152    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9153 static bool trust_pad_over_xvs = true;
9154
9155 /* True if TYPE is a struct type introduced by the compiler to force the
9156    alignment of a value.  Such types have a single field with a
9157    distinctive name.  */
9158
9159 int
9160 ada_is_aligner_type (struct type *type)
9161 {
9162   type = ada_check_typedef (type);
9163
9164   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9165     return 0;
9166
9167   return (type->code () == TYPE_CODE_STRUCT
9168           && type->num_fields () == 1
9169           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9170 }
9171
9172 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9173    the parallel type.  */
9174
9175 struct type *
9176 ada_get_base_type (struct type *raw_type)
9177 {
9178   struct type *real_type_namer;
9179   struct type *raw_real_type;
9180
9181   if (raw_type == NULL || raw_type->code () != TYPE_CODE_STRUCT)
9182     return raw_type;
9183
9184   if (ada_is_aligner_type (raw_type))
9185     /* The encoding specifies that we should always use the aligner type.
9186        So, even if this aligner type has an associated XVS type, we should
9187        simply ignore it.
9188
9189        According to the compiler gurus, an XVS type parallel to an aligner
9190        type may exist because of a stabs limitation.  In stabs, aligner
9191        types are empty because the field has a variable-sized type, and
9192        thus cannot actually be used as an aligner type.  As a result,
9193        we need the associated parallel XVS type to decode the type.
9194        Since the policy in the compiler is to not change the internal
9195        representation based on the debugging info format, we sometimes
9196        end up having a redundant XVS type parallel to the aligner type.  */
9197     return raw_type;
9198
9199   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9200   if (real_type_namer == NULL
9201       || real_type_namer->code () != TYPE_CODE_STRUCT
9202       || real_type_namer->num_fields () != 1)
9203     return raw_type;
9204
9205   if (TYPE_FIELD_TYPE (real_type_namer, 0)->code () != TYPE_CODE_REF)
9206     {
9207       /* This is an older encoding form where the base type needs to be
9208          looked up by name.  We prefer the newer encoding because it is
9209          more efficient.  */
9210       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9211       if (raw_real_type == NULL)
9212         return raw_type;
9213       else
9214         return raw_real_type;
9215     }
9216
9217   /* The field in our XVS type is a reference to the base type.  */
9218   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9219 }
9220
9221 /* The type of value designated by TYPE, with all aligners removed.  */
9222
9223 struct type *
9224 ada_aligned_type (struct type *type)
9225 {
9226   if (ada_is_aligner_type (type))
9227     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9228   else
9229     return ada_get_base_type (type);
9230 }
9231
9232
9233 /* The address of the aligned value in an object at address VALADDR
9234    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9235
9236 const gdb_byte *
9237 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9238 {
9239   if (ada_is_aligner_type (type))
9240     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9241                                    valaddr +
9242                                    TYPE_FIELD_BITPOS (type,
9243                                                       0) / TARGET_CHAR_BIT);
9244   else
9245     return valaddr;
9246 }
9247
9248
9249
9250 /* The printed representation of an enumeration literal with encoded
9251    name NAME.  The value is good to the next call of ada_enum_name.  */
9252 const char *
9253 ada_enum_name (const char *name)
9254 {
9255   static char *result;
9256   static size_t result_len = 0;
9257   const char *tmp;
9258
9259   /* First, unqualify the enumeration name:
9260      1. Search for the last '.' character.  If we find one, then skip
9261      all the preceding characters, the unqualified name starts
9262      right after that dot.
9263      2. Otherwise, we may be debugging on a target where the compiler
9264      translates dots into "__".  Search forward for double underscores,
9265      but stop searching when we hit an overloading suffix, which is
9266      of the form "__" followed by digits.  */
9267
9268   tmp = strrchr (name, '.');
9269   if (tmp != NULL)
9270     name = tmp + 1;
9271   else
9272     {
9273       while ((tmp = strstr (name, "__")) != NULL)
9274         {
9275           if (isdigit (tmp[2]))
9276             break;
9277           else
9278             name = tmp + 2;
9279         }
9280     }
9281
9282   if (name[0] == 'Q')
9283     {
9284       int v;
9285
9286       if (name[1] == 'U' || name[1] == 'W')
9287         {
9288           if (sscanf (name + 2, "%x", &v) != 1)
9289             return name;
9290         }
9291       else if (((name[1] >= '0' && name[1] <= '9')
9292                 || (name[1] >= 'a' && name[1] <= 'z'))
9293                && name[2] == '\0')
9294         {
9295           GROW_VECT (result, result_len, 4);
9296           xsnprintf (result, result_len, "'%c'", name[1]);
9297           return result;
9298         }
9299       else
9300         return name;
9301
9302       GROW_VECT (result, result_len, 16);
9303       if (isascii (v) && isprint (v))
9304         xsnprintf (result, result_len, "'%c'", v);
9305       else if (name[1] == 'U')
9306         xsnprintf (result, result_len, "[\"%02x\"]", v);
9307       else
9308         xsnprintf (result, result_len, "[\"%04x\"]", v);
9309
9310       return result;
9311     }
9312   else
9313     {
9314       tmp = strstr (name, "__");
9315       if (tmp == NULL)
9316         tmp = strstr (name, "$");
9317       if (tmp != NULL)
9318         {
9319           GROW_VECT (result, result_len, tmp - name + 1);
9320           strncpy (result, name, tmp - name);
9321           result[tmp - name] = '\0';
9322           return result;
9323         }
9324
9325       return name;
9326     }
9327 }
9328
9329 /* Evaluate the subexpression of EXP starting at *POS as for
9330    evaluate_type, updating *POS to point just past the evaluated
9331    expression.  */
9332
9333 static struct value *
9334 evaluate_subexp_type (struct expression *exp, int *pos)
9335 {
9336   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9337 }
9338
9339 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9340    value it wraps.  */
9341
9342 static struct value *
9343 unwrap_value (struct value *val)
9344 {
9345   struct type *type = ada_check_typedef (value_type (val));
9346
9347   if (ada_is_aligner_type (type))
9348     {
9349       struct value *v = ada_value_struct_elt (val, "F", 0);
9350       struct type *val_type = ada_check_typedef (value_type (v));
9351
9352       if (ada_type_name (val_type) == NULL)
9353         val_type->set_name (ada_type_name (type));
9354
9355       return unwrap_value (v);
9356     }
9357   else
9358     {
9359       struct type *raw_real_type =
9360         ada_check_typedef (ada_get_base_type (type));
9361
9362       /* If there is no parallel XVS or XVE type, then the value is
9363          already unwrapped.  Return it without further modification.  */
9364       if ((type == raw_real_type)
9365           && ada_find_parallel_type (type, "___XVE") == NULL)
9366         return val;
9367
9368       return
9369         coerce_unspec_val_to_type
9370         (val, ada_to_fixed_type (raw_real_type, 0,
9371                                  value_address (val),
9372                                  NULL, 1));
9373     }
9374 }
9375
9376 static struct value *
9377 cast_from_fixed (struct type *type, struct value *arg)
9378 {
9379   struct value *scale = ada_scaling_factor (value_type (arg));
9380   arg = value_cast (value_type (scale), arg);
9381
9382   arg = value_binop (arg, scale, BINOP_MUL);
9383   return value_cast (type, arg);
9384 }
9385
9386 static struct value *
9387 cast_to_fixed (struct type *type, struct value *arg)
9388 {
9389   if (type == value_type (arg))
9390     return arg;
9391
9392   struct value *scale = ada_scaling_factor (type);
9393   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg)))
9394     arg = cast_from_fixed (value_type (scale), arg);
9395   else
9396     arg = value_cast (value_type (scale), arg);
9397
9398   arg = value_binop (arg, scale, BINOP_DIV);
9399   return value_cast (type, arg);
9400 }
9401
9402 /* Given two array types T1 and T2, return nonzero iff both arrays
9403    contain the same number of elements.  */
9404
9405 static int
9406 ada_same_array_size_p (struct type *t1, struct type *t2)
9407 {
9408   LONGEST lo1, hi1, lo2, hi2;
9409
9410   /* Get the array bounds in order to verify that the size of
9411      the two arrays match.  */
9412   if (!get_array_bounds (t1, &lo1, &hi1)
9413       || !get_array_bounds (t2, &lo2, &hi2))
9414     error (_("unable to determine array bounds"));
9415
9416   /* To make things easier for size comparison, normalize a bit
9417      the case of empty arrays by making sure that the difference
9418      between upper bound and lower bound is always -1.  */
9419   if (lo1 > hi1)
9420     hi1 = lo1 - 1;
9421   if (lo2 > hi2)
9422     hi2 = lo2 - 1;
9423
9424   return (hi1 - lo1 == hi2 - lo2);
9425 }
9426
9427 /* Assuming that VAL is an array of integrals, and TYPE represents
9428    an array with the same number of elements, but with wider integral
9429    elements, return an array "casted" to TYPE.  In practice, this
9430    means that the returned array is built by casting each element
9431    of the original array into TYPE's (wider) element type.  */
9432
9433 static struct value *
9434 ada_promote_array_of_integrals (struct type *type, struct value *val)
9435 {
9436   struct type *elt_type = TYPE_TARGET_TYPE (type);
9437   LONGEST lo, hi;
9438   struct value *res;
9439   LONGEST i;
9440
9441   /* Verify that both val and type are arrays of scalars, and
9442      that the size of val's elements is smaller than the size
9443      of type's element.  */
9444   gdb_assert (type->code () == TYPE_CODE_ARRAY);
9445   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9446   gdb_assert (value_type (val)->code () == TYPE_CODE_ARRAY);
9447   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9448   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9449               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9450
9451   if (!get_array_bounds (type, &lo, &hi))
9452     error (_("unable to determine array bounds"));
9453
9454   res = allocate_value (type);
9455
9456   /* Promote each array element.  */
9457   for (i = 0; i < hi - lo + 1; i++)
9458     {
9459       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9460
9461       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9462               value_contents_all (elt), TYPE_LENGTH (elt_type));
9463     }
9464
9465   return res;
9466 }
9467
9468 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9469    return the converted value.  */
9470
9471 static struct value *
9472 coerce_for_assign (struct type *type, struct value *val)
9473 {
9474   struct type *type2 = value_type (val);
9475
9476   if (type == type2)
9477     return val;
9478
9479   type2 = ada_check_typedef (type2);
9480   type = ada_check_typedef (type);
9481
9482   if (type2->code () == TYPE_CODE_PTR
9483       && type->code () == TYPE_CODE_ARRAY)
9484     {
9485       val = ada_value_ind (val);
9486       type2 = value_type (val);
9487     }
9488
9489   if (type2->code () == TYPE_CODE_ARRAY
9490       && type->code () == TYPE_CODE_ARRAY)
9491     {
9492       if (!ada_same_array_size_p (type, type2))
9493         error (_("cannot assign arrays of different length"));
9494
9495       if (is_integral_type (TYPE_TARGET_TYPE (type))
9496           && is_integral_type (TYPE_TARGET_TYPE (type2))
9497           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9498                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9499         {
9500           /* Allow implicit promotion of the array elements to
9501              a wider type.  */
9502           return ada_promote_array_of_integrals (type, val);
9503         }
9504
9505       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9506           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9507         error (_("Incompatible types in assignment"));
9508       deprecated_set_value_type (val, type);
9509     }
9510   return val;
9511 }
9512
9513 static struct value *
9514 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9515 {
9516   struct value *val;
9517   struct type *type1, *type2;
9518   LONGEST v, v1, v2;
9519
9520   arg1 = coerce_ref (arg1);
9521   arg2 = coerce_ref (arg2);
9522   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9523   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9524
9525   if (type1->code () != TYPE_CODE_INT
9526       || type2->code () != TYPE_CODE_INT)
9527     return value_binop (arg1, arg2, op);
9528
9529   switch (op)
9530     {
9531     case BINOP_MOD:
9532     case BINOP_DIV:
9533     case BINOP_REM:
9534       break;
9535     default:
9536       return value_binop (arg1, arg2, op);
9537     }
9538
9539   v2 = value_as_long (arg2);
9540   if (v2 == 0)
9541     error (_("second operand of %s must not be zero."), op_string (op));
9542
9543   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9544     return value_binop (arg1, arg2, op);
9545
9546   v1 = value_as_long (arg1);
9547   switch (op)
9548     {
9549     case BINOP_DIV:
9550       v = v1 / v2;
9551       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9552         v += v > 0 ? -1 : 1;
9553       break;
9554     case BINOP_REM:
9555       v = v1 % v2;
9556       if (v * v1 < 0)
9557         v -= v2;
9558       break;
9559     default:
9560       /* Should not reach this point.  */
9561       v = 0;
9562     }
9563
9564   val = allocate_value (type1);
9565   store_unsigned_integer (value_contents_raw (val),
9566                           TYPE_LENGTH (value_type (val)),
9567                           type_byte_order (type1), v);
9568   return val;
9569 }
9570
9571 static int
9572 ada_value_equal (struct value *arg1, struct value *arg2)
9573 {
9574   if (ada_is_direct_array_type (value_type (arg1))
9575       || ada_is_direct_array_type (value_type (arg2)))
9576     {
9577       struct type *arg1_type, *arg2_type;
9578
9579       /* Automatically dereference any array reference before
9580          we attempt to perform the comparison.  */
9581       arg1 = ada_coerce_ref (arg1);
9582       arg2 = ada_coerce_ref (arg2);
9583
9584       arg1 = ada_coerce_to_simple_array (arg1);
9585       arg2 = ada_coerce_to_simple_array (arg2);
9586
9587       arg1_type = ada_check_typedef (value_type (arg1));
9588       arg2_type = ada_check_typedef (value_type (arg2));
9589
9590       if (arg1_type->code () != TYPE_CODE_ARRAY
9591           || arg2_type->code () != TYPE_CODE_ARRAY)
9592         error (_("Attempt to compare array with non-array"));
9593       /* FIXME: The following works only for types whose
9594          representations use all bits (no padding or undefined bits)
9595          and do not have user-defined equality.  */
9596       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9597               && memcmp (value_contents (arg1), value_contents (arg2),
9598                          TYPE_LENGTH (arg1_type)) == 0);
9599     }
9600   return value_equal (arg1, arg2);
9601 }
9602
9603 /* Total number of component associations in the aggregate starting at
9604    index PC in EXP.  Assumes that index PC is the start of an
9605    OP_AGGREGATE.  */
9606
9607 static int
9608 num_component_specs (struct expression *exp, int pc)
9609 {
9610   int n, m, i;
9611
9612   m = exp->elts[pc + 1].longconst;
9613   pc += 3;
9614   n = 0;
9615   for (i = 0; i < m; i += 1)
9616     {
9617       switch (exp->elts[pc].opcode) 
9618         {
9619         default:
9620           n += 1;
9621           break;
9622         case OP_CHOICES:
9623           n += exp->elts[pc + 1].longconst;
9624           break;
9625         }
9626       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9627     }
9628   return n;
9629 }
9630
9631 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9632    component of LHS (a simple array or a record), updating *POS past
9633    the expression, assuming that LHS is contained in CONTAINER.  Does
9634    not modify the inferior's memory, nor does it modify LHS (unless
9635    LHS == CONTAINER).  */
9636
9637 static void
9638 assign_component (struct value *container, struct value *lhs, LONGEST index,
9639                   struct expression *exp, int *pos)
9640 {
9641   struct value *mark = value_mark ();
9642   struct value *elt;
9643   struct type *lhs_type = check_typedef (value_type (lhs));
9644
9645   if (lhs_type->code () == TYPE_CODE_ARRAY)
9646     {
9647       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9648       struct value *index_val = value_from_longest (index_type, index);
9649
9650       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9651     }
9652   else
9653     {
9654       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9655       elt = ada_to_fixed_value (elt);
9656     }
9657
9658   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9659     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9660   else
9661     value_assign_to_component (container, elt, 
9662                                ada_evaluate_subexp (NULL, exp, pos, 
9663                                                     EVAL_NORMAL));
9664
9665   value_free_to_mark (mark);
9666 }
9667
9668 /* Assuming that LHS represents an lvalue having a record or array
9669    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9670    of that aggregate's value to LHS, advancing *POS past the
9671    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9672    lvalue containing LHS (possibly LHS itself).  Does not modify
9673    the inferior's memory, nor does it modify the contents of 
9674    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9675
9676 static struct value *
9677 assign_aggregate (struct value *container, 
9678                   struct value *lhs, struct expression *exp, 
9679                   int *pos, enum noside noside)
9680 {
9681   struct type *lhs_type;
9682   int n = exp->elts[*pos+1].longconst;
9683   LONGEST low_index, high_index;
9684   int num_specs;
9685   LONGEST *indices;
9686   int max_indices, num_indices;
9687   int i;
9688
9689   *pos += 3;
9690   if (noside != EVAL_NORMAL)
9691     {
9692       for (i = 0; i < n; i += 1)
9693         ada_evaluate_subexp (NULL, exp, pos, noside);
9694       return container;
9695     }
9696
9697   container = ada_coerce_ref (container);
9698   if (ada_is_direct_array_type (value_type (container)))
9699     container = ada_coerce_to_simple_array (container);
9700   lhs = ada_coerce_ref (lhs);
9701   if (!deprecated_value_modifiable (lhs))
9702     error (_("Left operand of assignment is not a modifiable lvalue."));
9703
9704   lhs_type = check_typedef (value_type (lhs));
9705   if (ada_is_direct_array_type (lhs_type))
9706     {
9707       lhs = ada_coerce_to_simple_array (lhs);
9708       lhs_type = check_typedef (value_type (lhs));
9709       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9710       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9711     }
9712   else if (lhs_type->code () == TYPE_CODE_STRUCT)
9713     {
9714       low_index = 0;
9715       high_index = num_visible_fields (lhs_type) - 1;
9716     }
9717   else
9718     error (_("Left-hand side must be array or record."));
9719
9720   num_specs = num_component_specs (exp, *pos - 3);
9721   max_indices = 4 * num_specs + 4;
9722   indices = XALLOCAVEC (LONGEST, max_indices);
9723   indices[0] = indices[1] = low_index - 1;
9724   indices[2] = indices[3] = high_index + 1;
9725   num_indices = 4;
9726
9727   for (i = 0; i < n; i += 1)
9728     {
9729       switch (exp->elts[*pos].opcode)
9730         {
9731           case OP_CHOICES:
9732             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9733                                            &num_indices, max_indices,
9734                                            low_index, high_index);
9735             break;
9736           case OP_POSITIONAL:
9737             aggregate_assign_positional (container, lhs, exp, pos, indices,
9738                                          &num_indices, max_indices,
9739                                          low_index, high_index);
9740             break;
9741           case OP_OTHERS:
9742             if (i != n-1)
9743               error (_("Misplaced 'others' clause"));
9744             aggregate_assign_others (container, lhs, exp, pos, indices, 
9745                                      num_indices, low_index, high_index);
9746             break;
9747           default:
9748             error (_("Internal error: bad aggregate clause"));
9749         }
9750     }
9751
9752   return container;
9753 }
9754               
9755 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9756    construct at *POS, updating *POS past the construct, given that
9757    the positions are relative to lower bound LOW, where HIGH is the 
9758    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9759    updating *NUM_INDICES as needed.  CONTAINER is as for
9760    assign_aggregate.  */
9761 static void
9762 aggregate_assign_positional (struct value *container,
9763                              struct value *lhs, struct expression *exp,
9764                              int *pos, LONGEST *indices, int *num_indices,
9765                              int max_indices, LONGEST low, LONGEST high) 
9766 {
9767   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9768   
9769   if (ind - 1 == high)
9770     warning (_("Extra components in aggregate ignored."));
9771   if (ind <= high)
9772     {
9773       add_component_interval (ind, ind, indices, num_indices, max_indices);
9774       *pos += 3;
9775       assign_component (container, lhs, ind, exp, pos);
9776     }
9777   else
9778     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9779 }
9780
9781 /* Assign into the components of LHS indexed by the OP_CHOICES
9782    construct at *POS, updating *POS past the construct, given that
9783    the allowable indices are LOW..HIGH.  Record the indices assigned
9784    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9785    needed.  CONTAINER is as for assign_aggregate.  */
9786 static void
9787 aggregate_assign_from_choices (struct value *container,
9788                                struct value *lhs, struct expression *exp,
9789                                int *pos, LONGEST *indices, int *num_indices,
9790                                int max_indices, LONGEST low, LONGEST high) 
9791 {
9792   int j;
9793   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9794   int choice_pos, expr_pc;
9795   int is_array = ada_is_direct_array_type (value_type (lhs));
9796
9797   choice_pos = *pos += 3;
9798
9799   for (j = 0; j < n_choices; j += 1)
9800     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9801   expr_pc = *pos;
9802   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9803   
9804   for (j = 0; j < n_choices; j += 1)
9805     {
9806       LONGEST lower, upper;
9807       enum exp_opcode op = exp->elts[choice_pos].opcode;
9808
9809       if (op == OP_DISCRETE_RANGE)
9810         {
9811           choice_pos += 1;
9812           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9813                                                       EVAL_NORMAL));
9814           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9815                                                       EVAL_NORMAL));
9816         }
9817       else if (is_array)
9818         {
9819           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9820                                                       EVAL_NORMAL));
9821           upper = lower;
9822         }
9823       else
9824         {
9825           int ind;
9826           const char *name;
9827
9828           switch (op)
9829             {
9830             case OP_NAME:
9831               name = &exp->elts[choice_pos + 2].string;
9832               break;
9833             case OP_VAR_VALUE:
9834               name = exp->elts[choice_pos + 2].symbol->natural_name ();
9835               break;
9836             default:
9837               error (_("Invalid record component association."));
9838             }
9839           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9840           ind = 0;
9841           if (! find_struct_field (name, value_type (lhs), 0, 
9842                                    NULL, NULL, NULL, NULL, &ind))
9843             error (_("Unknown component name: %s."), name);
9844           lower = upper = ind;
9845         }
9846
9847       if (lower <= upper && (lower < low || upper > high))
9848         error (_("Index in component association out of bounds."));
9849
9850       add_component_interval (lower, upper, indices, num_indices,
9851                               max_indices);
9852       while (lower <= upper)
9853         {
9854           int pos1;
9855
9856           pos1 = expr_pc;
9857           assign_component (container, lhs, lower, exp, &pos1);
9858           lower += 1;
9859         }
9860     }
9861 }
9862
9863 /* Assign the value of the expression in the OP_OTHERS construct in
9864    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
9865    have not been previously assigned.  The index intervals already assigned
9866    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
9867    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
9868 static void
9869 aggregate_assign_others (struct value *container,
9870                          struct value *lhs, struct expression *exp,
9871                          int *pos, LONGEST *indices, int num_indices,
9872                          LONGEST low, LONGEST high) 
9873 {
9874   int i;
9875   int expr_pc = *pos + 1;
9876   
9877   for (i = 0; i < num_indices - 2; i += 2)
9878     {
9879       LONGEST ind;
9880
9881       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
9882         {
9883           int localpos;
9884
9885           localpos = expr_pc;
9886           assign_component (container, lhs, ind, exp, &localpos);
9887         }
9888     }
9889   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9890 }
9891
9892 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
9893    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
9894    modifying *SIZE as needed.  It is an error if *SIZE exceeds
9895    MAX_SIZE.  The resulting intervals do not overlap.  */
9896 static void
9897 add_component_interval (LONGEST low, LONGEST high, 
9898                         LONGEST* indices, int *size, int max_size)
9899 {
9900   int i, j;
9901
9902   for (i = 0; i < *size; i += 2) {
9903     if (high >= indices[i] && low <= indices[i + 1])
9904       {
9905         int kh;
9906
9907         for (kh = i + 2; kh < *size; kh += 2)
9908           if (high < indices[kh])
9909             break;
9910         if (low < indices[i])
9911           indices[i] = low;
9912         indices[i + 1] = indices[kh - 1];
9913         if (high > indices[i + 1])
9914           indices[i + 1] = high;
9915         memcpy (indices + i + 2, indices + kh, *size - kh);
9916         *size -= kh - i - 2;
9917         return;
9918       }
9919     else if (high < indices[i])
9920       break;
9921   }
9922         
9923   if (*size == max_size)
9924     error (_("Internal error: miscounted aggregate components."));
9925   *size += 2;
9926   for (j = *size-1; j >= i+2; j -= 1)
9927     indices[j] = indices[j - 2];
9928   indices[i] = low;
9929   indices[i + 1] = high;
9930 }
9931
9932 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
9933    is different.  */
9934
9935 static struct value *
9936 ada_value_cast (struct type *type, struct value *arg2)
9937 {
9938   if (type == ada_check_typedef (value_type (arg2)))
9939     return arg2;
9940
9941   if (ada_is_gnat_encoded_fixed_point_type (type))
9942     return cast_to_fixed (type, arg2);
9943
9944   if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
9945     return cast_from_fixed (type, arg2);
9946
9947   return value_cast (type, arg2);
9948 }
9949
9950 /*  Evaluating Ada expressions, and printing their result.
9951     ------------------------------------------------------
9952
9953     1. Introduction:
9954     ----------------
9955
9956     We usually evaluate an Ada expression in order to print its value.
9957     We also evaluate an expression in order to print its type, which
9958     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
9959     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
9960     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
9961     the evaluation compared to the EVAL_NORMAL, but is otherwise very
9962     similar.
9963
9964     Evaluating expressions is a little more complicated for Ada entities
9965     than it is for entities in languages such as C.  The main reason for
9966     this is that Ada provides types whose definition might be dynamic.
9967     One example of such types is variant records.  Or another example
9968     would be an array whose bounds can only be known at run time.
9969
9970     The following description is a general guide as to what should be
9971     done (and what should NOT be done) in order to evaluate an expression
9972     involving such types, and when.  This does not cover how the semantic
9973     information is encoded by GNAT as this is covered separatly.  For the
9974     document used as the reference for the GNAT encoding, see exp_dbug.ads
9975     in the GNAT sources.
9976
9977     Ideally, we should embed each part of this description next to its
9978     associated code.  Unfortunately, the amount of code is so vast right
9979     now that it's hard to see whether the code handling a particular
9980     situation might be duplicated or not.  One day, when the code is
9981     cleaned up, this guide might become redundant with the comments
9982     inserted in the code, and we might want to remove it.
9983
9984     2. ``Fixing'' an Entity, the Simple Case:
9985     -----------------------------------------
9986
9987     When evaluating Ada expressions, the tricky issue is that they may
9988     reference entities whose type contents and size are not statically
9989     known.  Consider for instance a variant record:
9990
9991        type Rec (Empty : Boolean := True) is record
9992           case Empty is
9993              when True => null;
9994              when False => Value : Integer;
9995           end case;
9996        end record;
9997        Yes : Rec := (Empty => False, Value => 1);
9998        No  : Rec := (empty => True);
9999
10000     The size and contents of that record depends on the value of the
10001     descriminant (Rec.Empty).  At this point, neither the debugging
10002     information nor the associated type structure in GDB are able to
10003     express such dynamic types.  So what the debugger does is to create
10004     "fixed" versions of the type that applies to the specific object.
10005     We also informally refer to this operation as "fixing" an object,
10006     which means creating its associated fixed type.
10007
10008     Example: when printing the value of variable "Yes" above, its fixed
10009     type would look like this:
10010
10011        type Rec is record
10012           Empty : Boolean;
10013           Value : Integer;
10014        end record;
10015
10016     On the other hand, if we printed the value of "No", its fixed type
10017     would become:
10018
10019        type Rec is record
10020           Empty : Boolean;
10021        end record;
10022
10023     Things become a little more complicated when trying to fix an entity
10024     with a dynamic type that directly contains another dynamic type,
10025     such as an array of variant records, for instance.  There are
10026     two possible cases: Arrays, and records.
10027
10028     3. ``Fixing'' Arrays:
10029     ---------------------
10030
10031     The type structure in GDB describes an array in terms of its bounds,
10032     and the type of its elements.  By design, all elements in the array
10033     have the same type and we cannot represent an array of variant elements
10034     using the current type structure in GDB.  When fixing an array,
10035     we cannot fix the array element, as we would potentially need one
10036     fixed type per element of the array.  As a result, the best we can do
10037     when fixing an array is to produce an array whose bounds and size
10038     are correct (allowing us to read it from memory), but without having
10039     touched its element type.  Fixing each element will be done later,
10040     when (if) necessary.
10041
10042     Arrays are a little simpler to handle than records, because the same
10043     amount of memory is allocated for each element of the array, even if
10044     the amount of space actually used by each element differs from element
10045     to element.  Consider for instance the following array of type Rec:
10046
10047        type Rec_Array is array (1 .. 2) of Rec;
10048
10049     The actual amount of memory occupied by each element might be different
10050     from element to element, depending on the value of their discriminant.
10051     But the amount of space reserved for each element in the array remains
10052     fixed regardless.  So we simply need to compute that size using
10053     the debugging information available, from which we can then determine
10054     the array size (we multiply the number of elements of the array by
10055     the size of each element).
10056
10057     The simplest case is when we have an array of a constrained element
10058     type. For instance, consider the following type declarations:
10059
10060         type Bounded_String (Max_Size : Integer) is
10061            Length : Integer;
10062            Buffer : String (1 .. Max_Size);
10063         end record;
10064         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10065
10066     In this case, the compiler describes the array as an array of
10067     variable-size elements (identified by its XVS suffix) for which
10068     the size can be read in the parallel XVZ variable.
10069
10070     In the case of an array of an unconstrained element type, the compiler
10071     wraps the array element inside a private PAD type.  This type should not
10072     be shown to the user, and must be "unwrap"'ed before printing.  Note
10073     that we also use the adjective "aligner" in our code to designate
10074     these wrapper types.
10075
10076     In some cases, the size allocated for each element is statically
10077     known.  In that case, the PAD type already has the correct size,
10078     and the array element should remain unfixed.
10079
10080     But there are cases when this size is not statically known.
10081     For instance, assuming that "Five" is an integer variable:
10082
10083         type Dynamic is array (1 .. Five) of Integer;
10084         type Wrapper (Has_Length : Boolean := False) is record
10085            Data : Dynamic;
10086            case Has_Length is
10087               when True => Length : Integer;
10088               when False => null;
10089            end case;
10090         end record;
10091         type Wrapper_Array is array (1 .. 2) of Wrapper;
10092
10093         Hello : Wrapper_Array := (others => (Has_Length => True,
10094                                              Data => (others => 17),
10095                                              Length => 1));
10096
10097
10098     The debugging info would describe variable Hello as being an
10099     array of a PAD type.  The size of that PAD type is not statically
10100     known, but can be determined using a parallel XVZ variable.
10101     In that case, a copy of the PAD type with the correct size should
10102     be used for the fixed array.
10103
10104     3. ``Fixing'' record type objects:
10105     ----------------------------------
10106
10107     Things are slightly different from arrays in the case of dynamic
10108     record types.  In this case, in order to compute the associated
10109     fixed type, we need to determine the size and offset of each of
10110     its components.  This, in turn, requires us to compute the fixed
10111     type of each of these components.
10112
10113     Consider for instance the example:
10114
10115         type Bounded_String (Max_Size : Natural) is record
10116            Str : String (1 .. Max_Size);
10117            Length : Natural;
10118         end record;
10119         My_String : Bounded_String (Max_Size => 10);
10120
10121     In that case, the position of field "Length" depends on the size
10122     of field Str, which itself depends on the value of the Max_Size
10123     discriminant.  In order to fix the type of variable My_String,
10124     we need to fix the type of field Str.  Therefore, fixing a variant
10125     record requires us to fix each of its components.
10126
10127     However, if a component does not have a dynamic size, the component
10128     should not be fixed.  In particular, fields that use a PAD type
10129     should not fixed.  Here is an example where this might happen
10130     (assuming type Rec above):
10131
10132        type Container (Big : Boolean) is record
10133           First : Rec;
10134           After : Integer;
10135           case Big is
10136              when True => Another : Integer;
10137              when False => null;
10138           end case;
10139        end record;
10140        My_Container : Container := (Big => False,
10141                                     First => (Empty => True),
10142                                     After => 42);
10143
10144     In that example, the compiler creates a PAD type for component First,
10145     whose size is constant, and then positions the component After just
10146     right after it.  The offset of component After is therefore constant
10147     in this case.
10148
10149     The debugger computes the position of each field based on an algorithm
10150     that uses, among other things, the actual position and size of the field
10151     preceding it.  Let's now imagine that the user is trying to print
10152     the value of My_Container.  If the type fixing was recursive, we would
10153     end up computing the offset of field After based on the size of the
10154     fixed version of field First.  And since in our example First has
10155     only one actual field, the size of the fixed type is actually smaller
10156     than the amount of space allocated to that field, and thus we would
10157     compute the wrong offset of field After.
10158
10159     To make things more complicated, we need to watch out for dynamic
10160     components of variant records (identified by the ___XVL suffix in
10161     the component name).  Even if the target type is a PAD type, the size
10162     of that type might not be statically known.  So the PAD type needs
10163     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10164     we might end up with the wrong size for our component.  This can be
10165     observed with the following type declarations:
10166
10167         type Octal is new Integer range 0 .. 7;
10168         type Octal_Array is array (Positive range <>) of Octal;
10169         pragma Pack (Octal_Array);
10170
10171         type Octal_Buffer (Size : Positive) is record
10172            Buffer : Octal_Array (1 .. Size);
10173            Length : Integer;
10174         end record;
10175
10176     In that case, Buffer is a PAD type whose size is unset and needs
10177     to be computed by fixing the unwrapped type.
10178
10179     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10180     ----------------------------------------------------------
10181
10182     Lastly, when should the sub-elements of an entity that remained unfixed
10183     thus far, be actually fixed?
10184
10185     The answer is: Only when referencing that element.  For instance
10186     when selecting one component of a record, this specific component
10187     should be fixed at that point in time.  Or when printing the value
10188     of a record, each component should be fixed before its value gets
10189     printed.  Similarly for arrays, the element of the array should be
10190     fixed when printing each element of the array, or when extracting
10191     one element out of that array.  On the other hand, fixing should
10192     not be performed on the elements when taking a slice of an array!
10193
10194     Note that one of the side effects of miscomputing the offset and
10195     size of each field is that we end up also miscomputing the size
10196     of the containing type.  This can have adverse results when computing
10197     the value of an entity.  GDB fetches the value of an entity based
10198     on the size of its type, and thus a wrong size causes GDB to fetch
10199     the wrong amount of memory.  In the case where the computed size is
10200     too small, GDB fetches too little data to print the value of our
10201     entity.  Results in this case are unpredictable, as we usually read
10202     past the buffer containing the data =:-o.  */
10203
10204 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10205    for that subexpression cast to TO_TYPE.  Advance *POS over the
10206    subexpression.  */
10207
10208 static value *
10209 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10210                               enum noside noside, struct type *to_type)
10211 {
10212   int pc = *pos;
10213
10214   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10215       || exp->elts[pc].opcode == OP_VAR_VALUE)
10216     {
10217       (*pos) += 4;
10218
10219       value *val;
10220       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10221         {
10222           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10223             return value_zero (to_type, not_lval);
10224
10225           val = evaluate_var_msym_value (noside,
10226                                          exp->elts[pc + 1].objfile,
10227                                          exp->elts[pc + 2].msymbol);
10228         }
10229       else
10230         val = evaluate_var_value (noside,
10231                                   exp->elts[pc + 1].block,
10232                                   exp->elts[pc + 2].symbol);
10233
10234       if (noside == EVAL_SKIP)
10235         return eval_skip_value (exp);
10236
10237       val = ada_value_cast (to_type, val);
10238
10239       /* Follow the Ada language semantics that do not allow taking
10240          an address of the result of a cast (view conversion in Ada).  */
10241       if (VALUE_LVAL (val) == lval_memory)
10242         {
10243           if (value_lazy (val))
10244             value_fetch_lazy (val);
10245           VALUE_LVAL (val) = not_lval;
10246         }
10247       return val;
10248     }
10249
10250   value *val = evaluate_subexp (to_type, exp, pos, noside);
10251   if (noside == EVAL_SKIP)
10252     return eval_skip_value (exp);
10253   return ada_value_cast (to_type, val);
10254 }
10255
10256 /* Implement the evaluate_exp routine in the exp_descriptor structure
10257    for the Ada language.  */
10258
10259 static struct value *
10260 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10261                      int *pos, enum noside noside)
10262 {
10263   enum exp_opcode op;
10264   int tem;
10265   int pc;
10266   int preeval_pos;
10267   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10268   struct type *type;
10269   int nargs, oplen;
10270   struct value **argvec;
10271
10272   pc = *pos;
10273   *pos += 1;
10274   op = exp->elts[pc].opcode;
10275
10276   switch (op)
10277     {
10278     default:
10279       *pos -= 1;
10280       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10281
10282       if (noside == EVAL_NORMAL)
10283         arg1 = unwrap_value (arg1);
10284
10285       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10286          then we need to perform the conversion manually, because
10287          evaluate_subexp_standard doesn't do it.  This conversion is
10288          necessary in Ada because the different kinds of float/fixed
10289          types in Ada have different representations.
10290
10291          Similarly, we need to perform the conversion from OP_LONG
10292          ourselves.  */
10293       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10294         arg1 = ada_value_cast (expect_type, arg1);
10295
10296       return arg1;
10297
10298     case OP_STRING:
10299       {
10300         struct value *result;
10301
10302         *pos -= 1;
10303         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10304         /* The result type will have code OP_STRING, bashed there from 
10305            OP_ARRAY.  Bash it back.  */
10306         if (value_type (result)->code () == TYPE_CODE_STRING)
10307           value_type (result)->set_code (TYPE_CODE_ARRAY);
10308         return result;
10309       }
10310
10311     case UNOP_CAST:
10312       (*pos) += 2;
10313       type = exp->elts[pc + 1].type;
10314       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10315
10316     case UNOP_QUAL:
10317       (*pos) += 2;
10318       type = exp->elts[pc + 1].type;
10319       return ada_evaluate_subexp (type, exp, pos, noside);
10320
10321     case BINOP_ASSIGN:
10322       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10323       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10324         {
10325           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10326           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10327             return arg1;
10328           return ada_value_assign (arg1, arg1);
10329         }
10330       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10331          except if the lhs of our assignment is a convenience variable.
10332          In the case of assigning to a convenience variable, the lhs
10333          should be exactly the result of the evaluation of the rhs.  */
10334       type = value_type (arg1);
10335       if (VALUE_LVAL (arg1) == lval_internalvar)
10336          type = NULL;
10337       arg2 = evaluate_subexp (type, exp, pos, noside);
10338       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10339         return arg1;
10340       if (VALUE_LVAL (arg1) == lval_internalvar)
10341         {
10342           /* Nothing.  */
10343         }
10344       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10345         arg2 = cast_to_fixed (value_type (arg1), arg2);
10346       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10347         error
10348           (_("Fixed-point values must be assigned to fixed-point variables"));
10349       else
10350         arg2 = coerce_for_assign (value_type (arg1), arg2);
10351       return ada_value_assign (arg1, arg2);
10352
10353     case BINOP_ADD:
10354       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10355       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10356       if (noside == EVAL_SKIP)
10357         goto nosideret;
10358       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10359         return (value_from_longest
10360                  (value_type (arg1),
10361                   value_as_long (arg1) + value_as_long (arg2)));
10362       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10363         return (value_from_longest
10364                  (value_type (arg2),
10365                   value_as_long (arg1) + value_as_long (arg2)));
10366       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10367            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10368           && value_type (arg1) != value_type (arg2))
10369         error (_("Operands of fixed-point addition must have the same type"));
10370       /* Do the addition, and cast the result to the type of the first
10371          argument.  We cannot cast the result to a reference type, so if
10372          ARG1 is a reference type, find its underlying type.  */
10373       type = value_type (arg1);
10374       while (type->code () == TYPE_CODE_REF)
10375         type = TYPE_TARGET_TYPE (type);
10376       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10377       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10378
10379     case BINOP_SUB:
10380       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10381       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10382       if (noside == EVAL_SKIP)
10383         goto nosideret;
10384       if (value_type (arg1)->code () == TYPE_CODE_PTR)
10385         return (value_from_longest
10386                  (value_type (arg1),
10387                   value_as_long (arg1) - value_as_long (arg2)));
10388       if (value_type (arg2)->code () == TYPE_CODE_PTR)
10389         return (value_from_longest
10390                  (value_type (arg2),
10391                   value_as_long (arg1) - value_as_long (arg2)));
10392       if ((ada_is_gnat_encoded_fixed_point_type (value_type (arg1))
10393            || ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10394           && value_type (arg1) != value_type (arg2))
10395         error (_("Operands of fixed-point subtraction "
10396                  "must have the same type"));
10397       /* Do the substraction, and cast the result to the type of the first
10398          argument.  We cannot cast the result to a reference type, so if
10399          ARG1 is a reference type, find its underlying type.  */
10400       type = value_type (arg1);
10401       while (type->code () == TYPE_CODE_REF)
10402         type = TYPE_TARGET_TYPE (type);
10403       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10404       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10405
10406     case BINOP_MUL:
10407     case BINOP_DIV:
10408     case BINOP_REM:
10409     case BINOP_MOD:
10410       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10411       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10412       if (noside == EVAL_SKIP)
10413         goto nosideret;
10414       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10415         {
10416           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10417           return value_zero (value_type (arg1), not_lval);
10418         }
10419       else
10420         {
10421           type = builtin_type (exp->gdbarch)->builtin_double;
10422           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10423             arg1 = cast_from_fixed (type, arg1);
10424           if (ada_is_gnat_encoded_fixed_point_type (value_type (arg2)))
10425             arg2 = cast_from_fixed (type, arg2);
10426           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10427           return ada_value_binop (arg1, arg2, op);
10428         }
10429
10430     case BINOP_EQUAL:
10431     case BINOP_NOTEQUAL:
10432       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10433       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10434       if (noside == EVAL_SKIP)
10435         goto nosideret;
10436       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10437         tem = 0;
10438       else
10439         {
10440           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10441           tem = ada_value_equal (arg1, arg2);
10442         }
10443       if (op == BINOP_NOTEQUAL)
10444         tem = !tem;
10445       type = language_bool_type (exp->language_defn, exp->gdbarch);
10446       return value_from_longest (type, (LONGEST) tem);
10447
10448     case UNOP_NEG:
10449       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10450       if (noside == EVAL_SKIP)
10451         goto nosideret;
10452       else if (ada_is_gnat_encoded_fixed_point_type (value_type (arg1)))
10453         return value_cast (value_type (arg1), value_neg (arg1));
10454       else
10455         {
10456           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10457           return value_neg (arg1);
10458         }
10459
10460     case BINOP_LOGICAL_AND:
10461     case BINOP_LOGICAL_OR:
10462     case UNOP_LOGICAL_NOT:
10463       {
10464         struct value *val;
10465
10466         *pos -= 1;
10467         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10468         type = language_bool_type (exp->language_defn, exp->gdbarch);
10469         return value_cast (type, val);
10470       }
10471
10472     case BINOP_BITWISE_AND:
10473     case BINOP_BITWISE_IOR:
10474     case BINOP_BITWISE_XOR:
10475       {
10476         struct value *val;
10477
10478         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10479         *pos = pc;
10480         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10481
10482         return value_cast (value_type (arg1), val);
10483       }
10484
10485     case OP_VAR_VALUE:
10486       *pos -= 1;
10487
10488       if (noside == EVAL_SKIP)
10489         {
10490           *pos += 4;
10491           goto nosideret;
10492         }
10493
10494       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10495         /* Only encountered when an unresolved symbol occurs in a
10496            context other than a function call, in which case, it is
10497            invalid.  */
10498         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10499                exp->elts[pc + 2].symbol->print_name ());
10500
10501       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10502         {
10503           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10504           /* Check to see if this is a tagged type.  We also need to handle
10505              the case where the type is a reference to a tagged type, but
10506              we have to be careful to exclude pointers to tagged types.
10507              The latter should be shown as usual (as a pointer), whereas
10508              a reference should mostly be transparent to the user.  */
10509           if (ada_is_tagged_type (type, 0)
10510               || (type->code () == TYPE_CODE_REF
10511                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10512             {
10513               /* Tagged types are a little special in the fact that the real
10514                  type is dynamic and can only be determined by inspecting the
10515                  object's tag.  This means that we need to get the object's
10516                  value first (EVAL_NORMAL) and then extract the actual object
10517                  type from its tag.
10518
10519                  Note that we cannot skip the final step where we extract
10520                  the object type from its tag, because the EVAL_NORMAL phase
10521                  results in dynamic components being resolved into fixed ones.
10522                  This can cause problems when trying to print the type
10523                  description of tagged types whose parent has a dynamic size:
10524                  We use the type name of the "_parent" component in order
10525                  to print the name of the ancestor type in the type description.
10526                  If that component had a dynamic size, the resolution into
10527                  a fixed type would result in the loss of that type name,
10528                  thus preventing us from printing the name of the ancestor
10529                  type in the type description.  */
10530               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10531
10532               if (type->code () != TYPE_CODE_REF)
10533                 {
10534                   struct type *actual_type;
10535
10536                   actual_type = type_from_tag (ada_value_tag (arg1));
10537                   if (actual_type == NULL)
10538                     /* If, for some reason, we were unable to determine
10539                        the actual type from the tag, then use the static
10540                        approximation that we just computed as a fallback.
10541                        This can happen if the debugging information is
10542                        incomplete, for instance.  */
10543                     actual_type = type;
10544                   return value_zero (actual_type, not_lval);
10545                 }
10546               else
10547                 {
10548                   /* In the case of a ref, ada_coerce_ref takes care
10549                      of determining the actual type.  But the evaluation
10550                      should return a ref as it should be valid to ask
10551                      for its address; so rebuild a ref after coerce.  */
10552                   arg1 = ada_coerce_ref (arg1);
10553                   return value_ref (arg1, TYPE_CODE_REF);
10554                 }
10555             }
10556
10557           /* Records and unions for which GNAT encodings have been
10558              generated need to be statically fixed as well.
10559              Otherwise, non-static fixing produces a type where
10560              all dynamic properties are removed, which prevents "ptype"
10561              from being able to completely describe the type.
10562              For instance, a case statement in a variant record would be
10563              replaced by the relevant components based on the actual
10564              value of the discriminants.  */
10565           if ((type->code () == TYPE_CODE_STRUCT
10566                && dynamic_template_type (type) != NULL)
10567               || (type->code () == TYPE_CODE_UNION
10568                   && ada_find_parallel_type (type, "___XVU") != NULL))
10569             {
10570               *pos += 4;
10571               return value_zero (to_static_fixed_type (type), not_lval);
10572             }
10573         }
10574
10575       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10576       return ada_to_fixed_value (arg1);
10577
10578     case OP_FUNCALL:
10579       (*pos) += 2;
10580
10581       /* Allocate arg vector, including space for the function to be
10582          called in argvec[0] and a terminating NULL.  */
10583       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10584       argvec = XALLOCAVEC (struct value *, nargs + 2);
10585
10586       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10587           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10588         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10589                exp->elts[pc + 5].symbol->print_name ());
10590       else
10591         {
10592           for (tem = 0; tem <= nargs; tem += 1)
10593             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10594           argvec[tem] = 0;
10595
10596           if (noside == EVAL_SKIP)
10597             goto nosideret;
10598         }
10599
10600       if (ada_is_constrained_packed_array_type
10601           (desc_base_type (value_type (argvec[0]))))
10602         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10603       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10604                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10605         /* This is a packed array that has already been fixed, and
10606            therefore already coerced to a simple array.  Nothing further
10607            to do.  */
10608         ;
10609       else if (value_type (argvec[0])->code () == TYPE_CODE_REF)
10610         {
10611           /* Make sure we dereference references so that all the code below
10612              feels like it's really handling the referenced value.  Wrapping
10613              types (for alignment) may be there, so make sure we strip them as
10614              well.  */
10615           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10616         }
10617       else if (value_type (argvec[0])->code () == TYPE_CODE_ARRAY
10618                && VALUE_LVAL (argvec[0]) == lval_memory)
10619         argvec[0] = value_addr (argvec[0]);
10620
10621       type = ada_check_typedef (value_type (argvec[0]));
10622
10623       /* Ada allows us to implicitly dereference arrays when subscripting
10624          them.  So, if this is an array typedef (encoding use for array
10625          access types encoded as fat pointers), strip it now.  */
10626       if (type->code () == TYPE_CODE_TYPEDEF)
10627         type = ada_typedef_target_type (type);
10628
10629       if (type->code () == TYPE_CODE_PTR)
10630         {
10631           switch (ada_check_typedef (TYPE_TARGET_TYPE (type))->code ())
10632             {
10633             case TYPE_CODE_FUNC:
10634               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10635               break;
10636             case TYPE_CODE_ARRAY:
10637               break;
10638             case TYPE_CODE_STRUCT:
10639               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10640                 argvec[0] = ada_value_ind (argvec[0]);
10641               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10642               break;
10643             default:
10644               error (_("cannot subscript or call something of type `%s'"),
10645                      ada_type_name (value_type (argvec[0])));
10646               break;
10647             }
10648         }
10649
10650       switch (type->code ())
10651         {
10652         case TYPE_CODE_FUNC:
10653           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10654             {
10655               if (TYPE_TARGET_TYPE (type) == NULL)
10656                 error_call_unknown_return_type (NULL);
10657               return allocate_value (TYPE_TARGET_TYPE (type));
10658             }
10659           return call_function_by_hand (argvec[0], NULL,
10660                                         gdb::make_array_view (argvec + 1,
10661                                                               nargs));
10662         case TYPE_CODE_INTERNAL_FUNCTION:
10663           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10664             /* We don't know anything about what the internal
10665                function might return, but we have to return
10666                something.  */
10667             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10668                                not_lval);
10669           else
10670             return call_internal_function (exp->gdbarch, exp->language_defn,
10671                                            argvec[0], nargs, argvec + 1);
10672
10673         case TYPE_CODE_STRUCT:
10674           {
10675             int arity;
10676
10677             arity = ada_array_arity (type);
10678             type = ada_array_element_type (type, nargs);
10679             if (type == NULL)
10680               error (_("cannot subscript or call a record"));
10681             if (arity != nargs)
10682               error (_("wrong number of subscripts; expecting %d"), arity);
10683             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10684               return value_zero (ada_aligned_type (type), lval_memory);
10685             return
10686               unwrap_value (ada_value_subscript
10687                             (argvec[0], nargs, argvec + 1));
10688           }
10689         case TYPE_CODE_ARRAY:
10690           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10691             {
10692               type = ada_array_element_type (type, nargs);
10693               if (type == NULL)
10694                 error (_("element type of array unknown"));
10695               else
10696                 return value_zero (ada_aligned_type (type), lval_memory);
10697             }
10698           return
10699             unwrap_value (ada_value_subscript
10700                           (ada_coerce_to_simple_array (argvec[0]),
10701                            nargs, argvec + 1));
10702         case TYPE_CODE_PTR:     /* Pointer to array */
10703           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10704             {
10705               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10706               type = ada_array_element_type (type, nargs);
10707               if (type == NULL)
10708                 error (_("element type of array unknown"));
10709               else
10710                 return value_zero (ada_aligned_type (type), lval_memory);
10711             }
10712           return
10713             unwrap_value (ada_value_ptr_subscript (argvec[0],
10714                                                    nargs, argvec + 1));
10715
10716         default:
10717           error (_("Attempt to index or call something other than an "
10718                    "array or function"));
10719         }
10720
10721     case TERNOP_SLICE:
10722       {
10723         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10724         struct value *low_bound_val =
10725           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10726         struct value *high_bound_val =
10727           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10728         LONGEST low_bound;
10729         LONGEST high_bound;
10730
10731         low_bound_val = coerce_ref (low_bound_val);
10732         high_bound_val = coerce_ref (high_bound_val);
10733         low_bound = value_as_long (low_bound_val);
10734         high_bound = value_as_long (high_bound_val);
10735
10736         if (noside == EVAL_SKIP)
10737           goto nosideret;
10738
10739         /* If this is a reference to an aligner type, then remove all
10740            the aligners.  */
10741         if (value_type (array)->code () == TYPE_CODE_REF
10742             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10743           TYPE_TARGET_TYPE (value_type (array)) =
10744             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10745
10746         if (ada_is_constrained_packed_array_type (value_type (array)))
10747           error (_("cannot slice a packed array"));
10748
10749         /* If this is a reference to an array or an array lvalue,
10750            convert to a pointer.  */
10751         if (value_type (array)->code () == TYPE_CODE_REF
10752             || (value_type (array)->code () == TYPE_CODE_ARRAY
10753                 && VALUE_LVAL (array) == lval_memory))
10754           array = value_addr (array);
10755
10756         if (noside == EVAL_AVOID_SIDE_EFFECTS
10757             && ada_is_array_descriptor_type (ada_check_typedef
10758                                              (value_type (array))))
10759           return empty_array (ada_type_of_array (array, 0), low_bound,
10760                               high_bound);
10761
10762         array = ada_coerce_to_simple_array_ptr (array);
10763
10764         /* If we have more than one level of pointer indirection,
10765            dereference the value until we get only one level.  */
10766         while (value_type (array)->code () == TYPE_CODE_PTR
10767                && (TYPE_TARGET_TYPE (value_type (array))->code ()
10768                      == TYPE_CODE_PTR))
10769           array = value_ind (array);
10770
10771         /* Make sure we really do have an array type before going further,
10772            to avoid a SEGV when trying to get the index type or the target
10773            type later down the road if the debug info generated by
10774            the compiler is incorrect or incomplete.  */
10775         if (!ada_is_simple_array_type (value_type (array)))
10776           error (_("cannot take slice of non-array"));
10777
10778         if (ada_check_typedef (value_type (array))->code ()
10779             == TYPE_CODE_PTR)
10780           {
10781             struct type *type0 = ada_check_typedef (value_type (array));
10782
10783             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10784               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10785             else
10786               {
10787                 struct type *arr_type0 =
10788                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10789
10790                 return ada_value_slice_from_ptr (array, arr_type0,
10791                                                  longest_to_int (low_bound),
10792                                                  longest_to_int (high_bound));
10793               }
10794           }
10795         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10796           return array;
10797         else if (high_bound < low_bound)
10798           return empty_array (value_type (array), low_bound, high_bound);
10799         else
10800           return ada_value_slice (array, longest_to_int (low_bound),
10801                                   longest_to_int (high_bound));
10802       }
10803
10804     case UNOP_IN_RANGE:
10805       (*pos) += 2;
10806       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10807       type = check_typedef (exp->elts[pc + 1].type);
10808
10809       if (noside == EVAL_SKIP)
10810         goto nosideret;
10811
10812       switch (type->code ())
10813         {
10814         default:
10815           lim_warning (_("Membership test incompletely implemented; "
10816                          "always returns true"));
10817           type = language_bool_type (exp->language_defn, exp->gdbarch);
10818           return value_from_longest (type, (LONGEST) 1);
10819
10820         case TYPE_CODE_RANGE:
10821           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10822           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10823           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10824           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10825           type = language_bool_type (exp->language_defn, exp->gdbarch);
10826           return
10827             value_from_longest (type,
10828                                 (value_less (arg1, arg3)
10829                                  || value_equal (arg1, arg3))
10830                                 && (value_less (arg2, arg1)
10831                                     || value_equal (arg2, arg1)));
10832         }
10833
10834     case BINOP_IN_BOUNDS:
10835       (*pos) += 2;
10836       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10837       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10838
10839       if (noside == EVAL_SKIP)
10840         goto nosideret;
10841
10842       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10843         {
10844           type = language_bool_type (exp->language_defn, exp->gdbarch);
10845           return value_zero (type, not_lval);
10846         }
10847
10848       tem = longest_to_int (exp->elts[pc + 1].longconst);
10849
10850       type = ada_index_type (value_type (arg2), tem, "range");
10851       if (!type)
10852         type = value_type (arg1);
10853
10854       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
10855       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
10856
10857       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10858       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10859       type = language_bool_type (exp->language_defn, exp->gdbarch);
10860       return
10861         value_from_longest (type,
10862                             (value_less (arg1, arg3)
10863                              || value_equal (arg1, arg3))
10864                             && (value_less (arg2, arg1)
10865                                 || value_equal (arg2, arg1)));
10866
10867     case TERNOP_IN_RANGE:
10868       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10869       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10870       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10871
10872       if (noside == EVAL_SKIP)
10873         goto nosideret;
10874
10875       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10876       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10877       type = language_bool_type (exp->language_defn, exp->gdbarch);
10878       return
10879         value_from_longest (type,
10880                             (value_less (arg1, arg3)
10881                              || value_equal (arg1, arg3))
10882                             && (value_less (arg2, arg1)
10883                                 || value_equal (arg2, arg1)));
10884
10885     case OP_ATR_FIRST:
10886     case OP_ATR_LAST:
10887     case OP_ATR_LENGTH:
10888       {
10889         struct type *type_arg;
10890
10891         if (exp->elts[*pos].opcode == OP_TYPE)
10892           {
10893             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
10894             arg1 = NULL;
10895             type_arg = check_typedef (exp->elts[pc + 2].type);
10896           }
10897         else
10898           {
10899             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10900             type_arg = NULL;
10901           }
10902
10903         if (exp->elts[*pos].opcode != OP_LONG)
10904           error (_("Invalid operand to '%s"), ada_attribute_name (op));
10905         tem = longest_to_int (exp->elts[*pos + 2].longconst);
10906         *pos += 4;
10907
10908         if (noside == EVAL_SKIP)
10909           goto nosideret;
10910         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10911           {
10912             if (type_arg == NULL)
10913               type_arg = value_type (arg1);
10914
10915             if (ada_is_constrained_packed_array_type (type_arg))
10916               type_arg = decode_constrained_packed_array_type (type_arg);
10917
10918             if (!discrete_type_p (type_arg))
10919               {
10920                 switch (op)
10921                   {
10922                   default:          /* Should never happen.  */
10923                     error (_("unexpected attribute encountered"));
10924                   case OP_ATR_FIRST:
10925                   case OP_ATR_LAST:
10926                     type_arg = ada_index_type (type_arg, tem,
10927                                                ada_attribute_name (op));
10928                     break;
10929                   case OP_ATR_LENGTH:
10930                     type_arg = builtin_type (exp->gdbarch)->builtin_int;
10931                     break;
10932                   }
10933               }
10934
10935             return value_zero (type_arg, not_lval);
10936           }
10937         else if (type_arg == NULL)
10938           {
10939             arg1 = ada_coerce_ref (arg1);
10940
10941             if (ada_is_constrained_packed_array_type (value_type (arg1)))
10942               arg1 = ada_coerce_to_simple_array (arg1);
10943
10944             if (op == OP_ATR_LENGTH)
10945               type = builtin_type (exp->gdbarch)->builtin_int;
10946             else
10947               {
10948                 type = ada_index_type (value_type (arg1), tem,
10949                                        ada_attribute_name (op));
10950                 if (type == NULL)
10951                   type = builtin_type (exp->gdbarch)->builtin_int;
10952               }
10953
10954             switch (op)
10955               {
10956               default:          /* Should never happen.  */
10957                 error (_("unexpected attribute encountered"));
10958               case OP_ATR_FIRST:
10959                 return value_from_longest
10960                         (type, ada_array_bound (arg1, tem, 0));
10961               case OP_ATR_LAST:
10962                 return value_from_longest
10963                         (type, ada_array_bound (arg1, tem, 1));
10964               case OP_ATR_LENGTH:
10965                 return value_from_longest
10966                         (type, ada_array_length (arg1, tem));
10967               }
10968           }
10969         else if (discrete_type_p (type_arg))
10970           {
10971             struct type *range_type;
10972             const char *name = ada_type_name (type_arg);
10973
10974             range_type = NULL;
10975             if (name != NULL && type_arg->code () != TYPE_CODE_ENUM)
10976               range_type = to_fixed_range_type (type_arg, NULL);
10977             if (range_type == NULL)
10978               range_type = type_arg;
10979             switch (op)
10980               {
10981               default:
10982                 error (_("unexpected attribute encountered"));
10983               case OP_ATR_FIRST:
10984                 return value_from_longest 
10985                   (range_type, ada_discrete_type_low_bound (range_type));
10986               case OP_ATR_LAST:
10987                 return value_from_longest
10988                   (range_type, ada_discrete_type_high_bound (range_type));
10989               case OP_ATR_LENGTH:
10990                 error (_("the 'length attribute applies only to array types"));
10991               }
10992           }
10993         else if (type_arg->code () == TYPE_CODE_FLT)
10994           error (_("unimplemented type attribute"));
10995         else
10996           {
10997             LONGEST low, high;
10998
10999             if (ada_is_constrained_packed_array_type (type_arg))
11000               type_arg = decode_constrained_packed_array_type (type_arg);
11001
11002             if (op == OP_ATR_LENGTH)
11003               type = builtin_type (exp->gdbarch)->builtin_int;
11004             else
11005               {
11006                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11007                 if (type == NULL)
11008                   type = builtin_type (exp->gdbarch)->builtin_int;
11009               }
11010
11011             switch (op)
11012               {
11013               default:
11014                 error (_("unexpected attribute encountered"));
11015               case OP_ATR_FIRST:
11016                 low = ada_array_bound_from_type (type_arg, tem, 0);
11017                 return value_from_longest (type, low);
11018               case OP_ATR_LAST:
11019                 high = ada_array_bound_from_type (type_arg, tem, 1);
11020                 return value_from_longest (type, high);
11021               case OP_ATR_LENGTH:
11022                 low = ada_array_bound_from_type (type_arg, tem, 0);
11023                 high = ada_array_bound_from_type (type_arg, tem, 1);
11024                 return value_from_longest (type, high - low + 1);
11025               }
11026           }
11027       }
11028
11029     case OP_ATR_TAG:
11030       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11031       if (noside == EVAL_SKIP)
11032         goto nosideret;
11033
11034       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11035         return value_zero (ada_tag_type (arg1), not_lval);
11036
11037       return ada_value_tag (arg1);
11038
11039     case OP_ATR_MIN:
11040     case OP_ATR_MAX:
11041       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11042       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11043       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11044       if (noside == EVAL_SKIP)
11045         goto nosideret;
11046       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11047         return value_zero (value_type (arg1), not_lval);
11048       else
11049         {
11050           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11051           return value_binop (arg1, arg2,
11052                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11053         }
11054
11055     case OP_ATR_MODULUS:
11056       {
11057         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11058
11059         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11060         if (noside == EVAL_SKIP)
11061           goto nosideret;
11062
11063         if (!ada_is_modular_type (type_arg))
11064           error (_("'modulus must be applied to modular type"));
11065
11066         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11067                                    ada_modulus (type_arg));
11068       }
11069
11070
11071     case OP_ATR_POS:
11072       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11073       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11074       if (noside == EVAL_SKIP)
11075         goto nosideret;
11076       type = builtin_type (exp->gdbarch)->builtin_int;
11077       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11078         return value_zero (type, not_lval);
11079       else
11080         return value_pos_atr (type, arg1);
11081
11082     case OP_ATR_SIZE:
11083       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11084       type = value_type (arg1);
11085
11086       /* If the argument is a reference, then dereference its type, since
11087          the user is really asking for the size of the actual object,
11088          not the size of the pointer.  */
11089       if (type->code () == TYPE_CODE_REF)
11090         type = TYPE_TARGET_TYPE (type);
11091
11092       if (noside == EVAL_SKIP)
11093         goto nosideret;
11094       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11095         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11096       else
11097         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11098                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11099
11100     case OP_ATR_VAL:
11101       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11102       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11103       type = exp->elts[pc + 2].type;
11104       if (noside == EVAL_SKIP)
11105         goto nosideret;
11106       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11107         return value_zero (type, not_lval);
11108       else
11109         return value_val_atr (type, arg1);
11110
11111     case BINOP_EXP:
11112       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11113       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11114       if (noside == EVAL_SKIP)
11115         goto nosideret;
11116       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11117         return value_zero (value_type (arg1), not_lval);
11118       else
11119         {
11120           /* For integer exponentiation operations,
11121              only promote the first argument.  */
11122           if (is_integral_type (value_type (arg2)))
11123             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11124           else
11125             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11126
11127           return value_binop (arg1, arg2, op);
11128         }
11129
11130     case UNOP_PLUS:
11131       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11132       if (noside == EVAL_SKIP)
11133         goto nosideret;
11134       else
11135         return arg1;
11136
11137     case UNOP_ABS:
11138       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11139       if (noside == EVAL_SKIP)
11140         goto nosideret;
11141       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11142       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11143         return value_neg (arg1);
11144       else
11145         return arg1;
11146
11147     case UNOP_IND:
11148       preeval_pos = *pos;
11149       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11150       if (noside == EVAL_SKIP)
11151         goto nosideret;
11152       type = ada_check_typedef (value_type (arg1));
11153       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11154         {
11155           if (ada_is_array_descriptor_type (type))
11156             /* GDB allows dereferencing GNAT array descriptors.  */
11157             {
11158               struct type *arrType = ada_type_of_array (arg1, 0);
11159
11160               if (arrType == NULL)
11161                 error (_("Attempt to dereference null array pointer."));
11162               return value_at_lazy (arrType, 0);
11163             }
11164           else if (type->code () == TYPE_CODE_PTR
11165                    || type->code () == TYPE_CODE_REF
11166                    /* In C you can dereference an array to get the 1st elt.  */
11167                    || type->code () == TYPE_CODE_ARRAY)
11168             {
11169             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11170                only be determined by inspecting the object's tag.
11171                This means that we need to evaluate completely the
11172                expression in order to get its type.  */
11173
11174               if ((type->code () == TYPE_CODE_REF
11175                    || type->code () == TYPE_CODE_PTR)
11176                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11177                 {
11178                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11179                                           EVAL_NORMAL);
11180                   type = value_type (ada_value_ind (arg1));
11181                 }
11182               else
11183                 {
11184                   type = to_static_fixed_type
11185                     (ada_aligned_type
11186                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11187                 }
11188               ada_ensure_varsize_limit (type);
11189               return value_zero (type, lval_memory);
11190             }
11191           else if (type->code () == TYPE_CODE_INT)
11192             {
11193               /* GDB allows dereferencing an int.  */
11194               if (expect_type == NULL)
11195                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11196                                    lval_memory);
11197               else
11198                 {
11199                   expect_type = 
11200                     to_static_fixed_type (ada_aligned_type (expect_type));
11201                   return value_zero (expect_type, lval_memory);
11202                 }
11203             }
11204           else
11205             error (_("Attempt to take contents of a non-pointer value."));
11206         }
11207       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11208       type = ada_check_typedef (value_type (arg1));
11209
11210       if (type->code () == TYPE_CODE_INT)
11211           /* GDB allows dereferencing an int.  If we were given
11212              the expect_type, then use that as the target type.
11213              Otherwise, assume that the target type is an int.  */
11214         {
11215           if (expect_type != NULL)
11216             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11217                                               arg1));
11218           else
11219             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11220                                   (CORE_ADDR) value_as_address (arg1));
11221         }
11222
11223       if (ada_is_array_descriptor_type (type))
11224         /* GDB allows dereferencing GNAT array descriptors.  */
11225         return ada_coerce_to_simple_array (arg1);
11226       else
11227         return ada_value_ind (arg1);
11228
11229     case STRUCTOP_STRUCT:
11230       tem = longest_to_int (exp->elts[pc + 1].longconst);
11231       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11232       preeval_pos = *pos;
11233       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11234       if (noside == EVAL_SKIP)
11235         goto nosideret;
11236       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11237         {
11238           struct type *type1 = value_type (arg1);
11239
11240           if (ada_is_tagged_type (type1, 1))
11241             {
11242               type = ada_lookup_struct_elt_type (type1,
11243                                                  &exp->elts[pc + 2].string,
11244                                                  1, 1);
11245
11246               /* If the field is not found, check if it exists in the
11247                  extension of this object's type. This means that we
11248                  need to evaluate completely the expression.  */
11249
11250               if (type == NULL)
11251                 {
11252                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11253                                           EVAL_NORMAL);
11254                   arg1 = ada_value_struct_elt (arg1,
11255                                                &exp->elts[pc + 2].string,
11256                                                0);
11257                   arg1 = unwrap_value (arg1);
11258                   type = value_type (ada_to_fixed_value (arg1));
11259                 }
11260             }
11261           else
11262             type =
11263               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11264                                           0);
11265
11266           return value_zero (ada_aligned_type (type), lval_memory);
11267         }
11268       else
11269         {
11270           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11271           arg1 = unwrap_value (arg1);
11272           return ada_to_fixed_value (arg1);
11273         }
11274
11275     case OP_TYPE:
11276       /* The value is not supposed to be used.  This is here to make it
11277          easier to accommodate expressions that contain types.  */
11278       (*pos) += 2;
11279       if (noside == EVAL_SKIP)
11280         goto nosideret;
11281       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11282         return allocate_value (exp->elts[pc + 1].type);
11283       else
11284         error (_("Attempt to use a type name as an expression"));
11285
11286     case OP_AGGREGATE:
11287     case OP_CHOICES:
11288     case OP_OTHERS:
11289     case OP_DISCRETE_RANGE:
11290     case OP_POSITIONAL:
11291     case OP_NAME:
11292       if (noside == EVAL_NORMAL)
11293         switch (op) 
11294           {
11295           case OP_NAME:
11296             error (_("Undefined name, ambiguous name, or renaming used in "
11297                      "component association: %s."), &exp->elts[pc+2].string);
11298           case OP_AGGREGATE:
11299             error (_("Aggregates only allowed on the right of an assignment"));
11300           default:
11301             internal_error (__FILE__, __LINE__,
11302                             _("aggregate apparently mangled"));
11303           }
11304
11305       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11306       *pos += oplen - 1;
11307       for (tem = 0; tem < nargs; tem += 1) 
11308         ada_evaluate_subexp (NULL, exp, pos, noside);
11309       goto nosideret;
11310     }
11311
11312 nosideret:
11313   return eval_skip_value (exp);
11314 }
11315 \f
11316
11317                                 /* Fixed point */
11318
11319 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11320    type name that encodes the 'small and 'delta information.
11321    Otherwise, return NULL.  */
11322
11323 static const char *
11324 gnat_encoded_fixed_type_info (struct type *type)
11325 {
11326   const char *name = ada_type_name (type);
11327   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : type->code ();
11328
11329   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11330     {
11331       const char *tail = strstr (name, "___XF_");
11332
11333       if (tail == NULL)
11334         return NULL;
11335       else
11336         return tail + 5;
11337     }
11338   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11339     return gnat_encoded_fixed_type_info (TYPE_TARGET_TYPE (type));
11340   else
11341     return NULL;
11342 }
11343
11344 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11345
11346 int
11347 ada_is_gnat_encoded_fixed_point_type (struct type *type)
11348 {
11349   return gnat_encoded_fixed_type_info (type) != NULL;
11350 }
11351
11352 /* Return non-zero iff TYPE represents a System.Address type.  */
11353
11354 int
11355 ada_is_system_address_type (struct type *type)
11356 {
11357   return (type->name () && strcmp (type->name (), "system__address") == 0);
11358 }
11359
11360 /* Assuming that TYPE is the representation of an Ada fixed-point
11361    type, return the target floating-point type to be used to represent
11362    of this type during internal computation.  */
11363
11364 static struct type *
11365 ada_scaling_type (struct type *type)
11366 {
11367   return builtin_type (get_type_arch (type))->builtin_long_double;
11368 }
11369
11370 /* Assuming that TYPE is the representation of an Ada fixed-point
11371    type, return its delta, or NULL if the type is malformed and the
11372    delta cannot be determined.  */
11373
11374 struct value *
11375 gnat_encoded_fixed_point_delta (struct type *type)
11376 {
11377   const char *encoding = gnat_encoded_fixed_type_info (type);
11378   struct type *scale_type = ada_scaling_type (type);
11379
11380   long long num, den;
11381
11382   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11383     return nullptr;
11384   else
11385     return value_binop (value_from_longest (scale_type, num),
11386                         value_from_longest (scale_type, den), BINOP_DIV);
11387 }
11388
11389 /* Assuming that ada_is_gnat_encoded_fixed_point_type (TYPE), return
11390    the scaling factor ('SMALL value) associated with the type.  */
11391
11392 struct value *
11393 ada_scaling_factor (struct type *type)
11394 {
11395   const char *encoding = gnat_encoded_fixed_type_info (type);
11396   struct type *scale_type = ada_scaling_type (type);
11397
11398   long long num0, den0, num1, den1;
11399   int n;
11400
11401   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11402               &num0, &den0, &num1, &den1);
11403
11404   if (n < 2)
11405     return value_from_longest (scale_type, 1);
11406   else if (n == 4)
11407     return value_binop (value_from_longest (scale_type, num1),
11408                         value_from_longest (scale_type, den1), BINOP_DIV);
11409   else
11410     return value_binop (value_from_longest (scale_type, num0),
11411                         value_from_longest (scale_type, den0), BINOP_DIV);
11412 }
11413
11414 \f
11415
11416                                 /* Range types */
11417
11418 /* Scan STR beginning at position K for a discriminant name, and
11419    return the value of that discriminant field of DVAL in *PX.  If
11420    PNEW_K is not null, put the position of the character beyond the
11421    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11422    not alter *PX and *PNEW_K if unsuccessful.  */
11423
11424 static int
11425 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11426                     int *pnew_k)
11427 {
11428   static char *bound_buffer = NULL;
11429   static size_t bound_buffer_len = 0;
11430   const char *pstart, *pend, *bound;
11431   struct value *bound_val;
11432
11433   if (dval == NULL || str == NULL || str[k] == '\0')
11434     return 0;
11435
11436   pstart = str + k;
11437   pend = strstr (pstart, "__");
11438   if (pend == NULL)
11439     {
11440       bound = pstart;
11441       k += strlen (bound);
11442     }
11443   else
11444     {
11445       int len = pend - pstart;
11446
11447       /* Strip __ and beyond.  */
11448       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11449       strncpy (bound_buffer, pstart, len);
11450       bound_buffer[len] = '\0';
11451
11452       bound = bound_buffer;
11453       k = pend - str;
11454     }
11455
11456   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11457   if (bound_val == NULL)
11458     return 0;
11459
11460   *px = value_as_long (bound_val);
11461   if (pnew_k != NULL)
11462     *pnew_k = k;
11463   return 1;
11464 }
11465
11466 /* Value of variable named NAME in the current environment.  If
11467    no such variable found, then if ERR_MSG is null, returns 0, and
11468    otherwise causes an error with message ERR_MSG.  */
11469
11470 static struct value *
11471 get_var_value (const char *name, const char *err_msg)
11472 {
11473   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11474
11475   std::vector<struct block_symbol> syms;
11476   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11477                                              get_selected_block (0),
11478                                              VAR_DOMAIN, &syms, 1);
11479
11480   if (nsyms != 1)
11481     {
11482       if (err_msg == NULL)
11483         return 0;
11484       else
11485         error (("%s"), err_msg);
11486     }
11487
11488   return value_of_variable (syms[0].symbol, syms[0].block);
11489 }
11490
11491 /* Value of integer variable named NAME in the current environment.
11492    If no such variable is found, returns false.  Otherwise, sets VALUE
11493    to the variable's value and returns true.  */
11494
11495 bool
11496 get_int_var_value (const char *name, LONGEST &value)
11497 {
11498   struct value *var_val = get_var_value (name, 0);
11499
11500   if (var_val == 0)
11501     return false;
11502
11503   value = value_as_long (var_val);
11504   return true;
11505 }
11506
11507
11508 /* Return a range type whose base type is that of the range type named
11509    NAME in the current environment, and whose bounds are calculated
11510    from NAME according to the GNAT range encoding conventions.
11511    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11512    corresponding range type from debug information; fall back to using it
11513    if symbol lookup fails.  If a new type must be created, allocate it
11514    like ORIG_TYPE was.  The bounds information, in general, is encoded
11515    in NAME, the base type given in the named range type.  */
11516
11517 static struct type *
11518 to_fixed_range_type (struct type *raw_type, struct value *dval)
11519 {
11520   const char *name;
11521   struct type *base_type;
11522   const char *subtype_info;
11523
11524   gdb_assert (raw_type != NULL);
11525   gdb_assert (raw_type->name () != NULL);
11526
11527   if (raw_type->code () == TYPE_CODE_RANGE)
11528     base_type = TYPE_TARGET_TYPE (raw_type);
11529   else
11530     base_type = raw_type;
11531
11532   name = raw_type->name ();
11533   subtype_info = strstr (name, "___XD");
11534   if (subtype_info == NULL)
11535     {
11536       LONGEST L = ada_discrete_type_low_bound (raw_type);
11537       LONGEST U = ada_discrete_type_high_bound (raw_type);
11538
11539       if (L < INT_MIN || U > INT_MAX)
11540         return raw_type;
11541       else
11542         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11543                                          L, U);
11544     }
11545   else
11546     {
11547       static char *name_buf = NULL;
11548       static size_t name_len = 0;
11549       int prefix_len = subtype_info - name;
11550       LONGEST L, U;
11551       struct type *type;
11552       const char *bounds_str;
11553       int n;
11554
11555       GROW_VECT (name_buf, name_len, prefix_len + 5);
11556       strncpy (name_buf, name, prefix_len);
11557       name_buf[prefix_len] = '\0';
11558
11559       subtype_info += 5;
11560       bounds_str = strchr (subtype_info, '_');
11561       n = 1;
11562
11563       if (*subtype_info == 'L')
11564         {
11565           if (!ada_scan_number (bounds_str, n, &L, &n)
11566               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11567             return raw_type;
11568           if (bounds_str[n] == '_')
11569             n += 2;
11570           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11571             n += 1;
11572           subtype_info += 1;
11573         }
11574       else
11575         {
11576           strcpy (name_buf + prefix_len, "___L");
11577           if (!get_int_var_value (name_buf, L))
11578             {
11579               lim_warning (_("Unknown lower bound, using 1."));
11580               L = 1;
11581             }
11582         }
11583
11584       if (*subtype_info == 'U')
11585         {
11586           if (!ada_scan_number (bounds_str, n, &U, &n)
11587               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11588             return raw_type;
11589         }
11590       else
11591         {
11592           strcpy (name_buf + prefix_len, "___U");
11593           if (!get_int_var_value (name_buf, U))
11594             {
11595               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11596               U = L;
11597             }
11598         }
11599
11600       type = create_static_range_type (alloc_type_copy (raw_type),
11601                                        base_type, L, U);
11602       /* create_static_range_type alters the resulting type's length
11603          to match the size of the base_type, which is not what we want.
11604          Set it back to the original range type's length.  */
11605       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11606       type->set_name (name);
11607       return type;
11608     }
11609 }
11610
11611 /* True iff NAME is the name of a range type.  */
11612
11613 int
11614 ada_is_range_type_name (const char *name)
11615 {
11616   return (name != NULL && strstr (name, "___XD"));
11617 }
11618 \f
11619
11620                                 /* Modular types */
11621
11622 /* True iff TYPE is an Ada modular type.  */
11623
11624 int
11625 ada_is_modular_type (struct type *type)
11626 {
11627   struct type *subranged_type = get_base_type (type);
11628
11629   return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
11630           && subranged_type->code () == TYPE_CODE_INT
11631           && TYPE_UNSIGNED (subranged_type));
11632 }
11633
11634 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11635
11636 ULONGEST
11637 ada_modulus (struct type *type)
11638 {
11639   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11640 }
11641 \f
11642
11643 /* Ada exception catchpoint support:
11644    ---------------------------------
11645
11646    We support 3 kinds of exception catchpoints:
11647      . catchpoints on Ada exceptions
11648      . catchpoints on unhandled Ada exceptions
11649      . catchpoints on failed assertions
11650
11651    Exceptions raised during failed assertions, or unhandled exceptions
11652    could perfectly be caught with the general catchpoint on Ada exceptions.
11653    However, we can easily differentiate these two special cases, and having
11654    the option to distinguish these two cases from the rest can be useful
11655    to zero-in on certain situations.
11656
11657    Exception catchpoints are a specialized form of breakpoint,
11658    since they rely on inserting breakpoints inside known routines
11659    of the GNAT runtime.  The implementation therefore uses a standard
11660    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11661    of breakpoint_ops.
11662
11663    Support in the runtime for exception catchpoints have been changed
11664    a few times already, and these changes affect the implementation
11665    of these catchpoints.  In order to be able to support several
11666    variants of the runtime, we use a sniffer that will determine
11667    the runtime variant used by the program being debugged.  */
11668
11669 /* Ada's standard exceptions.
11670
11671    The Ada 83 standard also defined Numeric_Error.  But there so many
11672    situations where it was unclear from the Ada 83 Reference Manual
11673    (RM) whether Constraint_Error or Numeric_Error should be raised,
11674    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11675    Interpretation saying that anytime the RM says that Numeric_Error
11676    should be raised, the implementation may raise Constraint_Error.
11677    Ada 95 went one step further and pretty much removed Numeric_Error
11678    from the list of standard exceptions (it made it a renaming of
11679    Constraint_Error, to help preserve compatibility when compiling
11680    an Ada83 compiler). As such, we do not include Numeric_Error from
11681    this list of standard exceptions.  */
11682
11683 static const char *standard_exc[] = {
11684   "constraint_error",
11685   "program_error",
11686   "storage_error",
11687   "tasking_error"
11688 };
11689
11690 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11691
11692 /* A structure that describes how to support exception catchpoints
11693    for a given executable.  */
11694
11695 struct exception_support_info
11696 {
11697    /* The name of the symbol to break on in order to insert
11698       a catchpoint on exceptions.  */
11699    const char *catch_exception_sym;
11700
11701    /* The name of the symbol to break on in order to insert
11702       a catchpoint on unhandled exceptions.  */
11703    const char *catch_exception_unhandled_sym;
11704
11705    /* The name of the symbol to break on in order to insert
11706       a catchpoint on failed assertions.  */
11707    const char *catch_assert_sym;
11708
11709    /* The name of the symbol to break on in order to insert
11710       a catchpoint on exception handling.  */
11711    const char *catch_handlers_sym;
11712
11713    /* Assuming that the inferior just triggered an unhandled exception
11714       catchpoint, this function is responsible for returning the address
11715       in inferior memory where the name of that exception is stored.
11716       Return zero if the address could not be computed.  */
11717    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11718 };
11719
11720 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11721 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11722
11723 /* The following exception support info structure describes how to
11724    implement exception catchpoints with the latest version of the
11725    Ada runtime (as of 2019-08-??).  */
11726
11727 static const struct exception_support_info default_exception_support_info =
11728 {
11729   "__gnat_debug_raise_exception", /* catch_exception_sym */
11730   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11731   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11732   "__gnat_begin_handler_v1", /* catch_handlers_sym */
11733   ada_unhandled_exception_name_addr
11734 };
11735
11736 /* The following exception support info structure describes how to
11737    implement exception catchpoints with an earlier version of the
11738    Ada runtime (as of 2007-03-06) using v0 of the EH ABI.  */
11739
11740 static const struct exception_support_info exception_support_info_v0 =
11741 {
11742   "__gnat_debug_raise_exception", /* catch_exception_sym */
11743   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11744   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11745   "__gnat_begin_handler", /* catch_handlers_sym */
11746   ada_unhandled_exception_name_addr
11747 };
11748
11749 /* The following exception support info structure describes how to
11750    implement exception catchpoints with a slightly older version
11751    of the Ada runtime.  */
11752
11753 static const struct exception_support_info exception_support_info_fallback =
11754 {
11755   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11756   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11757   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11758   "__gnat_begin_handler", /* catch_handlers_sym */
11759   ada_unhandled_exception_name_addr_from_raise
11760 };
11761
11762 /* Return nonzero if we can detect the exception support routines
11763    described in EINFO.
11764
11765    This function errors out if an abnormal situation is detected
11766    (for instance, if we find the exception support routines, but
11767    that support is found to be incomplete).  */
11768
11769 static int
11770 ada_has_this_exception_support (const struct exception_support_info *einfo)
11771 {
11772   struct symbol *sym;
11773
11774   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11775      that should be compiled with debugging information.  As a result, we
11776      expect to find that symbol in the symtabs.  */
11777
11778   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11779   if (sym == NULL)
11780     {
11781       /* Perhaps we did not find our symbol because the Ada runtime was
11782          compiled without debugging info, or simply stripped of it.
11783          It happens on some GNU/Linux distributions for instance, where
11784          users have to install a separate debug package in order to get
11785          the runtime's debugging info.  In that situation, let the user
11786          know why we cannot insert an Ada exception catchpoint.
11787
11788          Note: Just for the purpose of inserting our Ada exception
11789          catchpoint, we could rely purely on the associated minimal symbol.
11790          But we would be operating in degraded mode anyway, since we are
11791          still lacking the debugging info needed later on to extract
11792          the name of the exception being raised (this name is printed in
11793          the catchpoint message, and is also used when trying to catch
11794          a specific exception).  We do not handle this case for now.  */
11795       struct bound_minimal_symbol msym
11796         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11797
11798       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11799         error (_("Your Ada runtime appears to be missing some debugging "
11800                  "information.\nCannot insert Ada exception catchpoint "
11801                  "in this configuration."));
11802
11803       return 0;
11804     }
11805
11806   /* Make sure that the symbol we found corresponds to a function.  */
11807
11808   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11809     {
11810       error (_("Symbol \"%s\" is not a function (class = %d)"),
11811              sym->linkage_name (), SYMBOL_CLASS (sym));
11812       return 0;
11813     }
11814
11815   sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
11816   if (sym == NULL)
11817     {
11818       struct bound_minimal_symbol msym
11819         = lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
11820
11821       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11822         error (_("Your Ada runtime appears to be missing some debugging "
11823                  "information.\nCannot insert Ada exception catchpoint "
11824                  "in this configuration."));
11825
11826       return 0;
11827     }
11828
11829   /* Make sure that the symbol we found corresponds to a function.  */
11830
11831   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11832     {
11833       error (_("Symbol \"%s\" is not a function (class = %d)"),
11834              sym->linkage_name (), SYMBOL_CLASS (sym));
11835       return 0;
11836     }
11837
11838   return 1;
11839 }
11840
11841 /* Inspect the Ada runtime and determine which exception info structure
11842    should be used to provide support for exception catchpoints.
11843
11844    This function will always set the per-inferior exception_info,
11845    or raise an error.  */
11846
11847 static void
11848 ada_exception_support_info_sniffer (void)
11849 {
11850   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11851
11852   /* If the exception info is already known, then no need to recompute it.  */
11853   if (data->exception_info != NULL)
11854     return;
11855
11856   /* Check the latest (default) exception support info.  */
11857   if (ada_has_this_exception_support (&default_exception_support_info))
11858     {
11859       data->exception_info = &default_exception_support_info;
11860       return;
11861     }
11862
11863   /* Try the v0 exception suport info.  */
11864   if (ada_has_this_exception_support (&exception_support_info_v0))
11865     {
11866       data->exception_info = &exception_support_info_v0;
11867       return;
11868     }
11869
11870   /* Try our fallback exception suport info.  */
11871   if (ada_has_this_exception_support (&exception_support_info_fallback))
11872     {
11873       data->exception_info = &exception_support_info_fallback;
11874       return;
11875     }
11876
11877   /* Sometimes, it is normal for us to not be able to find the routine
11878      we are looking for.  This happens when the program is linked with
11879      the shared version of the GNAT runtime, and the program has not been
11880      started yet.  Inform the user of these two possible causes if
11881      applicable.  */
11882
11883   if (ada_update_initial_language (language_unknown) != language_ada)
11884     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11885
11886   /* If the symbol does not exist, then check that the program is
11887      already started, to make sure that shared libraries have been
11888      loaded.  If it is not started, this may mean that the symbol is
11889      in a shared library.  */
11890
11891   if (inferior_ptid.pid () == 0)
11892     error (_("Unable to insert catchpoint. Try to start the program first."));
11893
11894   /* At this point, we know that we are debugging an Ada program and
11895      that the inferior has been started, but we still are not able to
11896      find the run-time symbols.  That can mean that we are in
11897      configurable run time mode, or that a-except as been optimized
11898      out by the linker...  In any case, at this point it is not worth
11899      supporting this feature.  */
11900
11901   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11902 }
11903
11904 /* True iff FRAME is very likely to be that of a function that is
11905    part of the runtime system.  This is all very heuristic, but is
11906    intended to be used as advice as to what frames are uninteresting
11907    to most users.  */
11908
11909 static int
11910 is_known_support_routine (struct frame_info *frame)
11911 {
11912   enum language func_lang;
11913   int i;
11914   const char *fullname;
11915
11916   /* If this code does not have any debugging information (no symtab),
11917      This cannot be any user code.  */
11918
11919   symtab_and_line sal = find_frame_sal (frame);
11920   if (sal.symtab == NULL)
11921     return 1;
11922
11923   /* If there is a symtab, but the associated source file cannot be
11924      located, then assume this is not user code:  Selecting a frame
11925      for which we cannot display the code would not be very helpful
11926      for the user.  This should also take care of case such as VxWorks
11927      where the kernel has some debugging info provided for a few units.  */
11928
11929   fullname = symtab_to_fullname (sal.symtab);
11930   if (access (fullname, R_OK) != 0)
11931     return 1;
11932
11933   /* Check the unit filename against the Ada runtime file naming.
11934      We also check the name of the objfile against the name of some
11935      known system libraries that sometimes come with debugging info
11936      too.  */
11937
11938   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
11939     {
11940       re_comp (known_runtime_file_name_patterns[i]);
11941       if (re_exec (lbasename (sal.symtab->filename)))
11942         return 1;
11943       if (SYMTAB_OBJFILE (sal.symtab) != NULL
11944           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
11945         return 1;
11946     }
11947
11948   /* Check whether the function is a GNAT-generated entity.  */
11949
11950   gdb::unique_xmalloc_ptr<char> func_name
11951     = find_frame_funname (frame, &func_lang, NULL);
11952   if (func_name == NULL)
11953     return 1;
11954
11955   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
11956     {
11957       re_comp (known_auxiliary_function_name_patterns[i]);
11958       if (re_exec (func_name.get ()))
11959         return 1;
11960     }
11961
11962   return 0;
11963 }
11964
11965 /* Find the first frame that contains debugging information and that is not
11966    part of the Ada run-time, starting from FI and moving upward.  */
11967
11968 void
11969 ada_find_printable_frame (struct frame_info *fi)
11970 {
11971   for (; fi != NULL; fi = get_prev_frame (fi))
11972     {
11973       if (!is_known_support_routine (fi))
11974         {
11975           select_frame (fi);
11976           break;
11977         }
11978     }
11979
11980 }
11981
11982 /* Assuming that the inferior just triggered an unhandled exception
11983    catchpoint, return the address in inferior memory where the name
11984    of the exception is stored.
11985    
11986    Return zero if the address could not be computed.  */
11987
11988 static CORE_ADDR
11989 ada_unhandled_exception_name_addr (void)
11990 {
11991   return parse_and_eval_address ("e.full_name");
11992 }
11993
11994 /* Same as ada_unhandled_exception_name_addr, except that this function
11995    should be used when the inferior uses an older version of the runtime,
11996    where the exception name needs to be extracted from a specific frame
11997    several frames up in the callstack.  */
11998
11999 static CORE_ADDR
12000 ada_unhandled_exception_name_addr_from_raise (void)
12001 {
12002   int frame_level;
12003   struct frame_info *fi;
12004   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12005
12006   /* To determine the name of this exception, we need to select
12007      the frame corresponding to RAISE_SYM_NAME.  This frame is
12008      at least 3 levels up, so we simply skip the first 3 frames
12009      without checking the name of their associated function.  */
12010   fi = get_current_frame ();
12011   for (frame_level = 0; frame_level < 3; frame_level += 1)
12012     if (fi != NULL)
12013       fi = get_prev_frame (fi); 
12014
12015   while (fi != NULL)
12016     {
12017       enum language func_lang;
12018
12019       gdb::unique_xmalloc_ptr<char> func_name
12020         = find_frame_funname (fi, &func_lang, NULL);
12021       if (func_name != NULL)
12022         {
12023           if (strcmp (func_name.get (),
12024                       data->exception_info->catch_exception_sym) == 0)
12025             break; /* We found the frame we were looking for...  */
12026         }
12027       fi = get_prev_frame (fi);
12028     }
12029
12030   if (fi == NULL)
12031     return 0;
12032
12033   select_frame (fi);
12034   return parse_and_eval_address ("id.full_name");
12035 }
12036
12037 /* Assuming the inferior just triggered an Ada exception catchpoint
12038    (of any type), return the address in inferior memory where the name
12039    of the exception is stored, if applicable.
12040
12041    Assumes the selected frame is the current frame.
12042
12043    Return zero if the address could not be computed, or if not relevant.  */
12044
12045 static CORE_ADDR
12046 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12047                            struct breakpoint *b)
12048 {
12049   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12050
12051   switch (ex)
12052     {
12053       case ada_catch_exception:
12054         return (parse_and_eval_address ("e.full_name"));
12055         break;
12056
12057       case ada_catch_exception_unhandled:
12058         return data->exception_info->unhandled_exception_name_addr ();
12059         break;
12060
12061       case ada_catch_handlers:
12062         return 0;  /* The runtimes does not provide access to the exception
12063                       name.  */
12064         break;
12065
12066       case ada_catch_assert:
12067         return 0;  /* Exception name is not relevant in this case.  */
12068         break;
12069
12070       default:
12071         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12072         break;
12073     }
12074
12075   return 0; /* Should never be reached.  */
12076 }
12077
12078 /* Assuming the inferior is stopped at an exception catchpoint,
12079    return the message which was associated to the exception, if
12080    available.  Return NULL if the message could not be retrieved.
12081
12082    Note: The exception message can be associated to an exception
12083    either through the use of the Raise_Exception function, or
12084    more simply (Ada 2005 and later), via:
12085
12086        raise Exception_Name with "exception message";
12087
12088    */
12089
12090 static gdb::unique_xmalloc_ptr<char>
12091 ada_exception_message_1 (void)
12092 {
12093   struct value *e_msg_val;
12094   int e_msg_len;
12095
12096   /* For runtimes that support this feature, the exception message
12097      is passed as an unbounded string argument called "message".  */
12098   e_msg_val = parse_and_eval ("message");
12099   if (e_msg_val == NULL)
12100     return NULL; /* Exception message not supported.  */
12101
12102   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12103   gdb_assert (e_msg_val != NULL);
12104   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12105
12106   /* If the message string is empty, then treat it as if there was
12107      no exception message.  */
12108   if (e_msg_len <= 0)
12109     return NULL;
12110
12111   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12112   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12113   e_msg.get ()[e_msg_len] = '\0';
12114
12115   return e_msg;
12116 }
12117
12118 /* Same as ada_exception_message_1, except that all exceptions are
12119    contained here (returning NULL instead).  */
12120
12121 static gdb::unique_xmalloc_ptr<char>
12122 ada_exception_message (void)
12123 {
12124   gdb::unique_xmalloc_ptr<char> e_msg;
12125
12126   try
12127     {
12128       e_msg = ada_exception_message_1 ();
12129     }
12130   catch (const gdb_exception_error &e)
12131     {
12132       e_msg.reset (nullptr);
12133     }
12134
12135   return e_msg;
12136 }
12137
12138 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12139    any error that ada_exception_name_addr_1 might cause to be thrown.
12140    When an error is intercepted, a warning with the error message is printed,
12141    and zero is returned.  */
12142
12143 static CORE_ADDR
12144 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12145                          struct breakpoint *b)
12146 {
12147   CORE_ADDR result = 0;
12148
12149   try
12150     {
12151       result = ada_exception_name_addr_1 (ex, b);
12152     }
12153
12154   catch (const gdb_exception_error &e)
12155     {
12156       warning (_("failed to get exception name: %s"), e.what ());
12157       return 0;
12158     }
12159
12160   return result;
12161 }
12162
12163 static std::string ada_exception_catchpoint_cond_string
12164   (const char *excep_string,
12165    enum ada_exception_catchpoint_kind ex);
12166
12167 /* Ada catchpoints.
12168
12169    In the case of catchpoints on Ada exceptions, the catchpoint will
12170    stop the target on every exception the program throws.  When a user
12171    specifies the name of a specific exception, we translate this
12172    request into a condition expression (in text form), and then parse
12173    it into an expression stored in each of the catchpoint's locations.
12174    We then use this condition to check whether the exception that was
12175    raised is the one the user is interested in.  If not, then the
12176    target is resumed again.  We store the name of the requested
12177    exception, in order to be able to re-set the condition expression
12178    when symbols change.  */
12179
12180 /* An instance of this type is used to represent an Ada catchpoint
12181    breakpoint location.  */
12182
12183 class ada_catchpoint_location : public bp_location
12184 {
12185 public:
12186   ada_catchpoint_location (breakpoint *owner)
12187     : bp_location (owner, bp_loc_software_breakpoint)
12188   {}
12189
12190   /* The condition that checks whether the exception that was raised
12191      is the specific exception the user specified on catchpoint
12192      creation.  */
12193   expression_up excep_cond_expr;
12194 };
12195
12196 /* An instance of this type is used to represent an Ada catchpoint.  */
12197
12198 struct ada_catchpoint : public breakpoint
12199 {
12200   explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
12201     : m_kind (kind)
12202   {
12203   }
12204
12205   /* The name of the specific exception the user specified.  */
12206   std::string excep_string;
12207
12208   /* What kind of catchpoint this is.  */
12209   enum ada_exception_catchpoint_kind m_kind;
12210 };
12211
12212 /* Parse the exception condition string in the context of each of the
12213    catchpoint's locations, and store them for later evaluation.  */
12214
12215 static void
12216 create_excep_cond_exprs (struct ada_catchpoint *c,
12217                          enum ada_exception_catchpoint_kind ex)
12218 {
12219   struct bp_location *bl;
12220
12221   /* Nothing to do if there's no specific exception to catch.  */
12222   if (c->excep_string.empty ())
12223     return;
12224
12225   /* Same if there are no locations... */
12226   if (c->loc == NULL)
12227     return;
12228
12229   /* Compute the condition expression in text form, from the specific
12230      expection we want to catch.  */
12231   std::string cond_string
12232     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12233
12234   /* Iterate over all the catchpoint's locations, and parse an
12235      expression for each.  */
12236   for (bl = c->loc; bl != NULL; bl = bl->next)
12237     {
12238       struct ada_catchpoint_location *ada_loc
12239         = (struct ada_catchpoint_location *) bl;
12240       expression_up exp;
12241
12242       if (!bl->shlib_disabled)
12243         {
12244           const char *s;
12245
12246           s = cond_string.c_str ();
12247           try
12248             {
12249               exp = parse_exp_1 (&s, bl->address,
12250                                  block_for_pc (bl->address),
12251                                  0);
12252             }
12253           catch (const gdb_exception_error &e)
12254             {
12255               warning (_("failed to reevaluate internal exception condition "
12256                          "for catchpoint %d: %s"),
12257                        c->number, e.what ());
12258             }
12259         }
12260
12261       ada_loc->excep_cond_expr = std::move (exp);
12262     }
12263 }
12264
12265 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12266    structure for all exception catchpoint kinds.  */
12267
12268 static struct bp_location *
12269 allocate_location_exception (struct breakpoint *self)
12270 {
12271   return new ada_catchpoint_location (self);
12272 }
12273
12274 /* Implement the RE_SET method in the breakpoint_ops structure for all
12275    exception catchpoint kinds.  */
12276
12277 static void
12278 re_set_exception (struct breakpoint *b)
12279 {
12280   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12281
12282   /* Call the base class's method.  This updates the catchpoint's
12283      locations.  */
12284   bkpt_breakpoint_ops.re_set (b);
12285
12286   /* Reparse the exception conditional expressions.  One for each
12287      location.  */
12288   create_excep_cond_exprs (c, c->m_kind);
12289 }
12290
12291 /* Returns true if we should stop for this breakpoint hit.  If the
12292    user specified a specific exception, we only want to cause a stop
12293    if the program thrown that exception.  */
12294
12295 static int
12296 should_stop_exception (const struct bp_location *bl)
12297 {
12298   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12299   const struct ada_catchpoint_location *ada_loc
12300     = (const struct ada_catchpoint_location *) bl;
12301   int stop;
12302
12303   struct internalvar *var = lookup_internalvar ("_ada_exception");
12304   if (c->m_kind == ada_catch_assert)
12305     clear_internalvar (var);
12306   else
12307     {
12308       try
12309         {
12310           const char *expr;
12311
12312           if (c->m_kind == ada_catch_handlers)
12313             expr = ("GNAT_GCC_exception_Access(gcc_exception)"
12314                     ".all.occurrence.id");
12315           else
12316             expr = "e";
12317
12318           struct value *exc = parse_and_eval (expr);
12319           set_internalvar (var, exc);
12320         }
12321       catch (const gdb_exception_error &ex)
12322         {
12323           clear_internalvar (var);
12324         }
12325     }
12326
12327   /* With no specific exception, should always stop.  */
12328   if (c->excep_string.empty ())
12329     return 1;
12330
12331   if (ada_loc->excep_cond_expr == NULL)
12332     {
12333       /* We will have a NULL expression if back when we were creating
12334          the expressions, this location's had failed to parse.  */
12335       return 1;
12336     }
12337
12338   stop = 1;
12339   try
12340     {
12341       struct value *mark;
12342
12343       mark = value_mark ();
12344       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12345       value_free_to_mark (mark);
12346     }
12347   catch (const gdb_exception &ex)
12348     {
12349       exception_fprintf (gdb_stderr, ex,
12350                          _("Error in testing exception condition:\n"));
12351     }
12352
12353   return stop;
12354 }
12355
12356 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12357    for all exception catchpoint kinds.  */
12358
12359 static void
12360 check_status_exception (bpstat bs)
12361 {
12362   bs->stop = should_stop_exception (bs->bp_location_at);
12363 }
12364
12365 /* Implement the PRINT_IT method in the breakpoint_ops structure
12366    for all exception catchpoint kinds.  */
12367
12368 static enum print_stop_action
12369 print_it_exception (bpstat bs)
12370 {
12371   struct ui_out *uiout = current_uiout;
12372   struct breakpoint *b = bs->breakpoint_at;
12373
12374   annotate_catchpoint (b->number);
12375
12376   if (uiout->is_mi_like_p ())
12377     {
12378       uiout->field_string ("reason",
12379                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12380       uiout->field_string ("disp", bpdisp_text (b->disposition));
12381     }
12382
12383   uiout->text (b->disposition == disp_del
12384                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12385   uiout->field_signed ("bkptno", b->number);
12386   uiout->text (", ");
12387
12388   /* ada_exception_name_addr relies on the selected frame being the
12389      current frame.  Need to do this here because this function may be
12390      called more than once when printing a stop, and below, we'll
12391      select the first frame past the Ada run-time (see
12392      ada_find_printable_frame).  */
12393   select_frame (get_current_frame ());
12394
12395   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12396   switch (c->m_kind)
12397     {
12398       case ada_catch_exception:
12399       case ada_catch_exception_unhandled:
12400       case ada_catch_handlers:
12401         {
12402           const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
12403           char exception_name[256];
12404
12405           if (addr != 0)
12406             {
12407               read_memory (addr, (gdb_byte *) exception_name,
12408                            sizeof (exception_name) - 1);
12409               exception_name [sizeof (exception_name) - 1] = '\0';
12410             }
12411           else
12412             {
12413               /* For some reason, we were unable to read the exception
12414                  name.  This could happen if the Runtime was compiled
12415                  without debugging info, for instance.  In that case,
12416                  just replace the exception name by the generic string
12417                  "exception" - it will read as "an exception" in the
12418                  notification we are about to print.  */
12419               memcpy (exception_name, "exception", sizeof ("exception"));
12420             }
12421           /* In the case of unhandled exception breakpoints, we print
12422              the exception name as "unhandled EXCEPTION_NAME", to make
12423              it clearer to the user which kind of catchpoint just got
12424              hit.  We used ui_out_text to make sure that this extra
12425              info does not pollute the exception name in the MI case.  */
12426           if (c->m_kind == ada_catch_exception_unhandled)
12427             uiout->text ("unhandled ");
12428           uiout->field_string ("exception-name", exception_name);
12429         }
12430         break;
12431       case ada_catch_assert:
12432         /* In this case, the name of the exception is not really
12433            important.  Just print "failed assertion" to make it clearer
12434            that his program just hit an assertion-failure catchpoint.
12435            We used ui_out_text because this info does not belong in
12436            the MI output.  */
12437         uiout->text ("failed assertion");
12438         break;
12439     }
12440
12441   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12442   if (exception_message != NULL)
12443     {
12444       uiout->text (" (");
12445       uiout->field_string ("exception-message", exception_message.get ());
12446       uiout->text (")");
12447     }
12448
12449   uiout->text (" at ");
12450   ada_find_printable_frame (get_current_frame ());
12451
12452   return PRINT_SRC_AND_LOC;
12453 }
12454
12455 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12456    for all exception catchpoint kinds.  */
12457
12458 static void
12459 print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
12460
12461   struct ui_out *uiout = current_uiout;
12462   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12463   struct value_print_options opts;
12464
12465   get_user_print_options (&opts);
12466
12467   if (opts.addressprint)
12468     uiout->field_skip ("addr");
12469
12470   annotate_field (5);
12471   switch (c->m_kind)
12472     {
12473       case ada_catch_exception:
12474         if (!c->excep_string.empty ())
12475           {
12476             std::string msg = string_printf (_("`%s' Ada exception"),
12477                                              c->excep_string.c_str ());
12478
12479             uiout->field_string ("what", msg);
12480           }
12481         else
12482           uiout->field_string ("what", "all Ada exceptions");
12483         
12484         break;
12485
12486       case ada_catch_exception_unhandled:
12487         uiout->field_string ("what", "unhandled Ada exceptions");
12488         break;
12489       
12490       case ada_catch_handlers:
12491         if (!c->excep_string.empty ())
12492           {
12493             uiout->field_fmt ("what",
12494                               _("`%s' Ada exception handlers"),
12495                               c->excep_string.c_str ());
12496           }
12497         else
12498           uiout->field_string ("what", "all Ada exceptions handlers");
12499         break;
12500
12501       case ada_catch_assert:
12502         uiout->field_string ("what", "failed Ada assertions");
12503         break;
12504
12505       default:
12506         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12507         break;
12508     }
12509 }
12510
12511 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12512    for all exception catchpoint kinds.  */
12513
12514 static void
12515 print_mention_exception (struct breakpoint *b)
12516 {
12517   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12518   struct ui_out *uiout = current_uiout;
12519
12520   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12521                                                  : _("Catchpoint "));
12522   uiout->field_signed ("bkptno", b->number);
12523   uiout->text (": ");
12524
12525   switch (c->m_kind)
12526     {
12527       case ada_catch_exception:
12528         if (!c->excep_string.empty ())
12529           {
12530             std::string info = string_printf (_("`%s' Ada exception"),
12531                                               c->excep_string.c_str ());
12532             uiout->text (info.c_str ());
12533           }
12534         else
12535           uiout->text (_("all Ada exceptions"));
12536         break;
12537
12538       case ada_catch_exception_unhandled:
12539         uiout->text (_("unhandled Ada exceptions"));
12540         break;
12541
12542       case ada_catch_handlers:
12543         if (!c->excep_string.empty ())
12544           {
12545             std::string info
12546               = string_printf (_("`%s' Ada exception handlers"),
12547                                c->excep_string.c_str ());
12548             uiout->text (info.c_str ());
12549           }
12550         else
12551           uiout->text (_("all Ada exceptions handlers"));
12552         break;
12553
12554       case ada_catch_assert:
12555         uiout->text (_("failed Ada assertions"));
12556         break;
12557
12558       default:
12559         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12560         break;
12561     }
12562 }
12563
12564 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12565    for all exception catchpoint kinds.  */
12566
12567 static void
12568 print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
12569 {
12570   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12571
12572   switch (c->m_kind)
12573     {
12574       case ada_catch_exception:
12575         fprintf_filtered (fp, "catch exception");
12576         if (!c->excep_string.empty ())
12577           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12578         break;
12579
12580       case ada_catch_exception_unhandled:
12581         fprintf_filtered (fp, "catch exception unhandled");
12582         break;
12583
12584       case ada_catch_handlers:
12585         fprintf_filtered (fp, "catch handlers");
12586         break;
12587
12588       case ada_catch_assert:
12589         fprintf_filtered (fp, "catch assert");
12590         break;
12591
12592       default:
12593         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12594     }
12595   print_recreate_thread (b, fp);
12596 }
12597
12598 /* Virtual tables for various breakpoint types.  */
12599 static struct breakpoint_ops catch_exception_breakpoint_ops;
12600 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12601 static struct breakpoint_ops catch_assert_breakpoint_ops;
12602 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12603
12604 /* See ada-lang.h.  */
12605
12606 bool
12607 is_ada_exception_catchpoint (breakpoint *bp)
12608 {
12609   return (bp->ops == &catch_exception_breakpoint_ops
12610           || bp->ops == &catch_exception_unhandled_breakpoint_ops
12611           || bp->ops == &catch_assert_breakpoint_ops
12612           || bp->ops == &catch_handlers_breakpoint_ops);
12613 }
12614
12615 /* Split the arguments specified in a "catch exception" command.  
12616    Set EX to the appropriate catchpoint type.
12617    Set EXCEP_STRING to the name of the specific exception if
12618    specified by the user.
12619    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12620    "catch handlers" command.  False otherwise.
12621    If a condition is found at the end of the arguments, the condition
12622    expression is stored in COND_STRING (memory must be deallocated
12623    after use).  Otherwise COND_STRING is set to NULL.  */
12624
12625 static void
12626 catch_ada_exception_command_split (const char *args,
12627                                    bool is_catch_handlers_cmd,
12628                                    enum ada_exception_catchpoint_kind *ex,
12629                                    std::string *excep_string,
12630                                    std::string *cond_string)
12631 {
12632   std::string exception_name;
12633
12634   exception_name = extract_arg (&args);
12635   if (exception_name == "if")
12636     {
12637       /* This is not an exception name; this is the start of a condition
12638          expression for a catchpoint on all exceptions.  So, "un-get"
12639          this token, and set exception_name to NULL.  */
12640       exception_name.clear ();
12641       args -= 2;
12642     }
12643
12644   /* Check to see if we have a condition.  */
12645
12646   args = skip_spaces (args);
12647   if (startswith (args, "if")
12648       && (isspace (args[2]) || args[2] == '\0'))
12649     {
12650       args += 2;
12651       args = skip_spaces (args);
12652
12653       if (args[0] == '\0')
12654         error (_("Condition missing after `if' keyword"));
12655       *cond_string = args;
12656
12657       args += strlen (args);
12658     }
12659
12660   /* Check that we do not have any more arguments.  Anything else
12661      is unexpected.  */
12662
12663   if (args[0] != '\0')
12664     error (_("Junk at end of expression"));
12665
12666   if (is_catch_handlers_cmd)
12667     {
12668       /* Catch handling of exceptions.  */
12669       *ex = ada_catch_handlers;
12670       *excep_string = exception_name;
12671     }
12672   else if (exception_name.empty ())
12673     {
12674       /* Catch all exceptions.  */
12675       *ex = ada_catch_exception;
12676       excep_string->clear ();
12677     }
12678   else if (exception_name == "unhandled")
12679     {
12680       /* Catch unhandled exceptions.  */
12681       *ex = ada_catch_exception_unhandled;
12682       excep_string->clear ();
12683     }
12684   else
12685     {
12686       /* Catch a specific exception.  */
12687       *ex = ada_catch_exception;
12688       *excep_string = exception_name;
12689     }
12690 }
12691
12692 /* Return the name of the symbol on which we should break in order to
12693    implement a catchpoint of the EX kind.  */
12694
12695 static const char *
12696 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12697 {
12698   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12699
12700   gdb_assert (data->exception_info != NULL);
12701
12702   switch (ex)
12703     {
12704       case ada_catch_exception:
12705         return (data->exception_info->catch_exception_sym);
12706         break;
12707       case ada_catch_exception_unhandled:
12708         return (data->exception_info->catch_exception_unhandled_sym);
12709         break;
12710       case ada_catch_assert:
12711         return (data->exception_info->catch_assert_sym);
12712         break;
12713       case ada_catch_handlers:
12714         return (data->exception_info->catch_handlers_sym);
12715         break;
12716       default:
12717         internal_error (__FILE__, __LINE__,
12718                         _("unexpected catchpoint kind (%d)"), ex);
12719     }
12720 }
12721
12722 /* Return the breakpoint ops "virtual table" used for catchpoints
12723    of the EX kind.  */
12724
12725 static const struct breakpoint_ops *
12726 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12727 {
12728   switch (ex)
12729     {
12730       case ada_catch_exception:
12731         return (&catch_exception_breakpoint_ops);
12732         break;
12733       case ada_catch_exception_unhandled:
12734         return (&catch_exception_unhandled_breakpoint_ops);
12735         break;
12736       case ada_catch_assert:
12737         return (&catch_assert_breakpoint_ops);
12738         break;
12739       case ada_catch_handlers:
12740         return (&catch_handlers_breakpoint_ops);
12741         break;
12742       default:
12743         internal_error (__FILE__, __LINE__,
12744                         _("unexpected catchpoint kind (%d)"), ex);
12745     }
12746 }
12747
12748 /* Return the condition that will be used to match the current exception
12749    being raised with the exception that the user wants to catch.  This
12750    assumes that this condition is used when the inferior just triggered
12751    an exception catchpoint.
12752    EX: the type of catchpoints used for catching Ada exceptions.  */
12753
12754 static std::string
12755 ada_exception_catchpoint_cond_string (const char *excep_string,
12756                                       enum ada_exception_catchpoint_kind ex)
12757 {
12758   int i;
12759   bool is_standard_exc = false;
12760   std::string result;
12761
12762   if (ex == ada_catch_handlers)
12763     {
12764       /* For exception handlers catchpoints, the condition string does
12765          not use the same parameter as for the other exceptions.  */
12766       result = ("long_integer (GNAT_GCC_exception_Access"
12767                 "(gcc_exception).all.occurrence.id)");
12768     }
12769   else
12770     result = "long_integer (e)";
12771
12772   /* The standard exceptions are a special case.  They are defined in
12773      runtime units that have been compiled without debugging info; if
12774      EXCEP_STRING is the not-fully-qualified name of a standard
12775      exception (e.g. "constraint_error") then, during the evaluation
12776      of the condition expression, the symbol lookup on this name would
12777      *not* return this standard exception.  The catchpoint condition
12778      may then be set only on user-defined exceptions which have the
12779      same not-fully-qualified name (e.g. my_package.constraint_error).
12780
12781      To avoid this unexcepted behavior, these standard exceptions are
12782      systematically prefixed by "standard".  This means that "catch
12783      exception constraint_error" is rewritten into "catch exception
12784      standard.constraint_error".
12785
12786      If an exception named constraint_error is defined in another package of
12787      the inferior program, then the only way to specify this exception as a
12788      breakpoint condition is to use its fully-qualified named:
12789      e.g. my_package.constraint_error.  */
12790
12791   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
12792     {
12793       if (strcmp (standard_exc [i], excep_string) == 0)
12794         {
12795           is_standard_exc = true;
12796           break;
12797         }
12798     }
12799
12800   result += " = ";
12801
12802   if (is_standard_exc)
12803     string_appendf (result, "long_integer (&standard.%s)", excep_string);
12804   else
12805     string_appendf (result, "long_integer (&%s)", excep_string);
12806
12807   return result;
12808 }
12809
12810 /* Return the symtab_and_line that should be used to insert an exception
12811    catchpoint of the TYPE kind.
12812
12813    ADDR_STRING returns the name of the function where the real
12814    breakpoint that implements the catchpoints is set, depending on the
12815    type of catchpoint we need to create.  */
12816
12817 static struct symtab_and_line
12818 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
12819                    std::string *addr_string, const struct breakpoint_ops **ops)
12820 {
12821   const char *sym_name;
12822   struct symbol *sym;
12823
12824   /* First, find out which exception support info to use.  */
12825   ada_exception_support_info_sniffer ();
12826
12827   /* Then lookup the function on which we will break in order to catch
12828      the Ada exceptions requested by the user.  */
12829   sym_name = ada_exception_sym_name (ex);
12830   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
12831
12832   if (sym == NULL)
12833     error (_("Catchpoint symbol not found: %s"), sym_name);
12834
12835   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12836     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
12837
12838   /* Set ADDR_STRING.  */
12839   *addr_string = sym_name;
12840
12841   /* Set OPS.  */
12842   *ops = ada_exception_breakpoint_ops (ex);
12843
12844   return find_function_start_sal (sym, 1);
12845 }
12846
12847 /* Create an Ada exception catchpoint.
12848
12849    EX_KIND is the kind of exception catchpoint to be created.
12850
12851    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
12852    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
12853    of the exception to which this catchpoint applies.
12854
12855    COND_STRING, if not empty, is the catchpoint condition.
12856
12857    TEMPFLAG, if nonzero, means that the underlying breakpoint
12858    should be temporary.
12859
12860    FROM_TTY is the usual argument passed to all commands implementations.  */
12861
12862 void
12863 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
12864                                  enum ada_exception_catchpoint_kind ex_kind,
12865                                  const std::string &excep_string,
12866                                  const std::string &cond_string,
12867                                  int tempflag,
12868                                  int disabled,
12869                                  int from_tty)
12870 {
12871   std::string addr_string;
12872   const struct breakpoint_ops *ops = NULL;
12873   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
12874
12875   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
12876   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
12877                                  ops, tempflag, disabled, from_tty);
12878   c->excep_string = excep_string;
12879   create_excep_cond_exprs (c.get (), ex_kind);
12880   if (!cond_string.empty ())
12881     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
12882   install_breakpoint (0, std::move (c), 1);
12883 }
12884
12885 /* Implement the "catch exception" command.  */
12886
12887 static void
12888 catch_ada_exception_command (const char *arg_entry, int from_tty,
12889                              struct cmd_list_element *command)
12890 {
12891   const char *arg = arg_entry;
12892   struct gdbarch *gdbarch = get_current_arch ();
12893   int tempflag;
12894   enum ada_exception_catchpoint_kind ex_kind;
12895   std::string excep_string;
12896   std::string cond_string;
12897
12898   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12899
12900   if (!arg)
12901     arg = "";
12902   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
12903                                      &cond_string);
12904   create_ada_exception_catchpoint (gdbarch, ex_kind,
12905                                    excep_string, cond_string,
12906                                    tempflag, 1 /* enabled */,
12907                                    from_tty);
12908 }
12909
12910 /* Implement the "catch handlers" command.  */
12911
12912 static void
12913 catch_ada_handlers_command (const char *arg_entry, int from_tty,
12914                             struct cmd_list_element *command)
12915 {
12916   const char *arg = arg_entry;
12917   struct gdbarch *gdbarch = get_current_arch ();
12918   int tempflag;
12919   enum ada_exception_catchpoint_kind ex_kind;
12920   std::string excep_string;
12921   std::string cond_string;
12922
12923   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12924
12925   if (!arg)
12926     arg = "";
12927   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
12928                                      &cond_string);
12929   create_ada_exception_catchpoint (gdbarch, ex_kind,
12930                                    excep_string, cond_string,
12931                                    tempflag, 1 /* enabled */,
12932                                    from_tty);
12933 }
12934
12935 /* Completion function for the Ada "catch" commands.  */
12936
12937 static void
12938 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
12939                      const char *text, const char *word)
12940 {
12941   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
12942
12943   for (const ada_exc_info &info : exceptions)
12944     {
12945       if (startswith (info.name, word))
12946         tracker.add_completion (make_unique_xstrdup (info.name));
12947     }
12948 }
12949
12950 /* Split the arguments specified in a "catch assert" command.
12951
12952    ARGS contains the command's arguments (or the empty string if
12953    no arguments were passed).
12954
12955    If ARGS contains a condition, set COND_STRING to that condition
12956    (the memory needs to be deallocated after use).  */
12957
12958 static void
12959 catch_ada_assert_command_split (const char *args, std::string &cond_string)
12960 {
12961   args = skip_spaces (args);
12962
12963   /* Check whether a condition was provided.  */
12964   if (startswith (args, "if")
12965       && (isspace (args[2]) || args[2] == '\0'))
12966     {
12967       args += 2;
12968       args = skip_spaces (args);
12969       if (args[0] == '\0')
12970         error (_("condition missing after `if' keyword"));
12971       cond_string.assign (args);
12972     }
12973
12974   /* Otherwise, there should be no other argument at the end of
12975      the command.  */
12976   else if (args[0] != '\0')
12977     error (_("Junk at end of arguments."));
12978 }
12979
12980 /* Implement the "catch assert" command.  */
12981
12982 static void
12983 catch_assert_command (const char *arg_entry, int from_tty,
12984                       struct cmd_list_element *command)
12985 {
12986   const char *arg = arg_entry;
12987   struct gdbarch *gdbarch = get_current_arch ();
12988   int tempflag;
12989   std::string cond_string;
12990
12991   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12992
12993   if (!arg)
12994     arg = "";
12995   catch_ada_assert_command_split (arg, cond_string);
12996   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
12997                                    "", cond_string,
12998                                    tempflag, 1 /* enabled */,
12999                                    from_tty);
13000 }
13001
13002 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13003
13004 static int
13005 ada_is_exception_sym (struct symbol *sym)
13006 {
13007   const char *type_name = SYMBOL_TYPE (sym)->name ();
13008
13009   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13010           && SYMBOL_CLASS (sym) != LOC_BLOCK
13011           && SYMBOL_CLASS (sym) != LOC_CONST
13012           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13013           && type_name != NULL && strcmp (type_name, "exception") == 0);
13014 }
13015
13016 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13017    Ada exception object.  This matches all exceptions except the ones
13018    defined by the Ada language.  */
13019
13020 static int
13021 ada_is_non_standard_exception_sym (struct symbol *sym)
13022 {
13023   int i;
13024
13025   if (!ada_is_exception_sym (sym))
13026     return 0;
13027
13028   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13029     if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
13030       return 0;  /* A standard exception.  */
13031
13032   /* Numeric_Error is also a standard exception, so exclude it.
13033      See the STANDARD_EXC description for more details as to why
13034      this exception is not listed in that array.  */
13035   if (strcmp (sym->linkage_name (), "numeric_error") == 0)
13036     return 0;
13037
13038   return 1;
13039 }
13040
13041 /* A helper function for std::sort, comparing two struct ada_exc_info
13042    objects.
13043
13044    The comparison is determined first by exception name, and then
13045    by exception address.  */
13046
13047 bool
13048 ada_exc_info::operator< (const ada_exc_info &other) const
13049 {
13050   int result;
13051
13052   result = strcmp (name, other.name);
13053   if (result < 0)
13054     return true;
13055   if (result == 0 && addr < other.addr)
13056     return true;
13057   return false;
13058 }
13059
13060 bool
13061 ada_exc_info::operator== (const ada_exc_info &other) const
13062 {
13063   return addr == other.addr && strcmp (name, other.name) == 0;
13064 }
13065
13066 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13067    routine, but keeping the first SKIP elements untouched.
13068
13069    All duplicates are also removed.  */
13070
13071 static void
13072 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13073                                       int skip)
13074 {
13075   std::sort (exceptions->begin () + skip, exceptions->end ());
13076   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13077                      exceptions->end ());
13078 }
13079
13080 /* Add all exceptions defined by the Ada standard whose name match
13081    a regular expression.
13082
13083    If PREG is not NULL, then this regexp_t object is used to
13084    perform the symbol name matching.  Otherwise, no name-based
13085    filtering is performed.
13086
13087    EXCEPTIONS is a vector of exceptions to which matching exceptions
13088    gets pushed.  */
13089
13090 static void
13091 ada_add_standard_exceptions (compiled_regex *preg,
13092                              std::vector<ada_exc_info> *exceptions)
13093 {
13094   int i;
13095
13096   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13097     {
13098       if (preg == NULL
13099           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13100         {
13101           struct bound_minimal_symbol msymbol
13102             = ada_lookup_simple_minsym (standard_exc[i]);
13103
13104           if (msymbol.minsym != NULL)
13105             {
13106               struct ada_exc_info info
13107                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13108
13109               exceptions->push_back (info);
13110             }
13111         }
13112     }
13113 }
13114
13115 /* Add all Ada exceptions defined locally and accessible from the given
13116    FRAME.
13117
13118    If PREG is not NULL, then this regexp_t object is used to
13119    perform the symbol name matching.  Otherwise, no name-based
13120    filtering is performed.
13121
13122    EXCEPTIONS is a vector of exceptions to which matching exceptions
13123    gets pushed.  */
13124
13125 static void
13126 ada_add_exceptions_from_frame (compiled_regex *preg,
13127                                struct frame_info *frame,
13128                                std::vector<ada_exc_info> *exceptions)
13129 {
13130   const struct block *block = get_frame_block (frame, 0);
13131
13132   while (block != 0)
13133     {
13134       struct block_iterator iter;
13135       struct symbol *sym;
13136
13137       ALL_BLOCK_SYMBOLS (block, iter, sym)
13138         {
13139           switch (SYMBOL_CLASS (sym))
13140             {
13141             case LOC_TYPEDEF:
13142             case LOC_BLOCK:
13143             case LOC_CONST:
13144               break;
13145             default:
13146               if (ada_is_exception_sym (sym))
13147                 {
13148                   struct ada_exc_info info = {sym->print_name (),
13149                                               SYMBOL_VALUE_ADDRESS (sym)};
13150
13151                   exceptions->push_back (info);
13152                 }
13153             }
13154         }
13155       if (BLOCK_FUNCTION (block) != NULL)
13156         break;
13157       block = BLOCK_SUPERBLOCK (block);
13158     }
13159 }
13160
13161 /* Return true if NAME matches PREG or if PREG is NULL.  */
13162
13163 static bool
13164 name_matches_regex (const char *name, compiled_regex *preg)
13165 {
13166   return (preg == NULL
13167           || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
13168 }
13169
13170 /* Add all exceptions defined globally whose name name match
13171    a regular expression, excluding standard exceptions.
13172
13173    The reason we exclude standard exceptions is that they need
13174    to be handled separately: Standard exceptions are defined inside
13175    a runtime unit which is normally not compiled with debugging info,
13176    and thus usually do not show up in our symbol search.  However,
13177    if the unit was in fact built with debugging info, we need to
13178    exclude them because they would duplicate the entry we found
13179    during the special loop that specifically searches for those
13180    standard exceptions.
13181
13182    If PREG is not NULL, then this regexp_t object is used to
13183    perform the symbol name matching.  Otherwise, no name-based
13184    filtering is performed.
13185
13186    EXCEPTIONS is a vector of exceptions to which matching exceptions
13187    gets pushed.  */
13188
13189 static void
13190 ada_add_global_exceptions (compiled_regex *preg,
13191                            std::vector<ada_exc_info> *exceptions)
13192 {
13193   /* In Ada, the symbol "search name" is a linkage name, whereas the
13194      regular expression used to do the matching refers to the natural
13195      name.  So match against the decoded name.  */
13196   expand_symtabs_matching (NULL,
13197                            lookup_name_info::match_any (),
13198                            [&] (const char *search_name)
13199                            {
13200                              std::string decoded = ada_decode (search_name);
13201                              return name_matches_regex (decoded.c_str (), preg);
13202                            },
13203                            NULL,
13204                            VARIABLES_DOMAIN);
13205
13206   for (objfile *objfile : current_program_space->objfiles ())
13207     {
13208       for (compunit_symtab *s : objfile->compunits ())
13209         {
13210           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13211           int i;
13212
13213           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13214             {
13215               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13216               struct block_iterator iter;
13217               struct symbol *sym;
13218
13219               ALL_BLOCK_SYMBOLS (b, iter, sym)
13220                 if (ada_is_non_standard_exception_sym (sym)
13221                     && name_matches_regex (sym->natural_name (), preg))
13222                   {
13223                     struct ada_exc_info info
13224                       = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
13225
13226                     exceptions->push_back (info);
13227                   }
13228             }
13229         }
13230     }
13231 }
13232
13233 /* Implements ada_exceptions_list with the regular expression passed
13234    as a regex_t, rather than a string.
13235
13236    If not NULL, PREG is used to filter out exceptions whose names
13237    do not match.  Otherwise, all exceptions are listed.  */
13238
13239 static std::vector<ada_exc_info>
13240 ada_exceptions_list_1 (compiled_regex *preg)
13241 {
13242   std::vector<ada_exc_info> result;
13243   int prev_len;
13244
13245   /* First, list the known standard exceptions.  These exceptions
13246      need to be handled separately, as they are usually defined in
13247      runtime units that have been compiled without debugging info.  */
13248
13249   ada_add_standard_exceptions (preg, &result);
13250
13251   /* Next, find all exceptions whose scope is local and accessible
13252      from the currently selected frame.  */
13253
13254   if (has_stack_frames ())
13255     {
13256       prev_len = result.size ();
13257       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13258                                      &result);
13259       if (result.size () > prev_len)
13260         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13261     }
13262
13263   /* Add all exceptions whose scope is global.  */
13264
13265   prev_len = result.size ();
13266   ada_add_global_exceptions (preg, &result);
13267   if (result.size () > prev_len)
13268     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13269
13270   return result;
13271 }
13272
13273 /* Return a vector of ada_exc_info.
13274
13275    If REGEXP is NULL, all exceptions are included in the result.
13276    Otherwise, it should contain a valid regular expression,
13277    and only the exceptions whose names match that regular expression
13278    are included in the result.
13279
13280    The exceptions are sorted in the following order:
13281      - Standard exceptions (defined by the Ada language), in
13282        alphabetical order;
13283      - Exceptions only visible from the current frame, in
13284        alphabetical order;
13285      - Exceptions whose scope is global, in alphabetical order.  */
13286
13287 std::vector<ada_exc_info>
13288 ada_exceptions_list (const char *regexp)
13289 {
13290   if (regexp == NULL)
13291     return ada_exceptions_list_1 (NULL);
13292
13293   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13294   return ada_exceptions_list_1 (&reg);
13295 }
13296
13297 /* Implement the "info exceptions" command.  */
13298
13299 static void
13300 info_exceptions_command (const char *regexp, int from_tty)
13301 {
13302   struct gdbarch *gdbarch = get_current_arch ();
13303
13304   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13305
13306   if (regexp != NULL)
13307     printf_filtered
13308       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13309   else
13310     printf_filtered (_("All defined Ada exceptions:\n"));
13311
13312   for (const ada_exc_info &info : exceptions)
13313     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13314 }
13315
13316                                 /* Operators */
13317 /* Information about operators given special treatment in functions
13318    below.  */
13319 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13320
13321 #define ADA_OPERATORS \
13322     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13323     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13324     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13325     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13326     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13327     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13328     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13329     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13330     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13331     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13332     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13333     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13334     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13335     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13336     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13337     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13338     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13339     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13340     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13341
13342 static void
13343 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13344                      int *argsp)
13345 {
13346   switch (exp->elts[pc - 1].opcode)
13347     {
13348     default:
13349       operator_length_standard (exp, pc, oplenp, argsp);
13350       break;
13351
13352 #define OP_DEFN(op, len, args, binop) \
13353     case op: *oplenp = len; *argsp = args; break;
13354       ADA_OPERATORS;
13355 #undef OP_DEFN
13356
13357     case OP_AGGREGATE:
13358       *oplenp = 3;
13359       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13360       break;
13361
13362     case OP_CHOICES:
13363       *oplenp = 3;
13364       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13365       break;
13366     }
13367 }
13368
13369 /* Implementation of the exp_descriptor method operator_check.  */
13370
13371 static int
13372 ada_operator_check (struct expression *exp, int pos,
13373                     int (*objfile_func) (struct objfile *objfile, void *data),
13374                     void *data)
13375 {
13376   const union exp_element *const elts = exp->elts;
13377   struct type *type = NULL;
13378
13379   switch (elts[pos].opcode)
13380     {
13381       case UNOP_IN_RANGE:
13382       case UNOP_QUAL:
13383         type = elts[pos + 1].type;
13384         break;
13385
13386       default:
13387         return operator_check_standard (exp, pos, objfile_func, data);
13388     }
13389
13390   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13391
13392   if (type && TYPE_OBJFILE (type)
13393       && (*objfile_func) (TYPE_OBJFILE (type), data))
13394     return 1;
13395
13396   return 0;
13397 }
13398
13399 static const char *
13400 ada_op_name (enum exp_opcode opcode)
13401 {
13402   switch (opcode)
13403     {
13404     default:
13405       return op_name_standard (opcode);
13406
13407 #define OP_DEFN(op, len, args, binop) case op: return #op;
13408       ADA_OPERATORS;
13409 #undef OP_DEFN
13410
13411     case OP_AGGREGATE:
13412       return "OP_AGGREGATE";
13413     case OP_CHOICES:
13414       return "OP_CHOICES";
13415     case OP_NAME:
13416       return "OP_NAME";
13417     }
13418 }
13419
13420 /* As for operator_length, but assumes PC is pointing at the first
13421    element of the operator, and gives meaningful results only for the 
13422    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13423
13424 static void
13425 ada_forward_operator_length (struct expression *exp, int pc,
13426                              int *oplenp, int *argsp)
13427 {
13428   switch (exp->elts[pc].opcode)
13429     {
13430     default:
13431       *oplenp = *argsp = 0;
13432       break;
13433
13434 #define OP_DEFN(op, len, args, binop) \
13435     case op: *oplenp = len; *argsp = args; break;
13436       ADA_OPERATORS;
13437 #undef OP_DEFN
13438
13439     case OP_AGGREGATE:
13440       *oplenp = 3;
13441       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13442       break;
13443
13444     case OP_CHOICES:
13445       *oplenp = 3;
13446       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13447       break;
13448
13449     case OP_STRING:
13450     case OP_NAME:
13451       {
13452         int len = longest_to_int (exp->elts[pc + 1].longconst);
13453
13454         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13455         *argsp = 0;
13456         break;
13457       }
13458     }
13459 }
13460
13461 static int
13462 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13463 {
13464   enum exp_opcode op = exp->elts[elt].opcode;
13465   int oplen, nargs;
13466   int pc = elt;
13467   int i;
13468
13469   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13470
13471   switch (op)
13472     {
13473       /* Ada attributes ('Foo).  */
13474     case OP_ATR_FIRST:
13475     case OP_ATR_LAST:
13476     case OP_ATR_LENGTH:
13477     case OP_ATR_IMAGE:
13478     case OP_ATR_MAX:
13479     case OP_ATR_MIN:
13480     case OP_ATR_MODULUS:
13481     case OP_ATR_POS:
13482     case OP_ATR_SIZE:
13483     case OP_ATR_TAG:
13484     case OP_ATR_VAL:
13485       break;
13486
13487     case UNOP_IN_RANGE:
13488     case UNOP_QUAL:
13489       /* XXX: gdb_sprint_host_address, type_sprint */
13490       fprintf_filtered (stream, _("Type @"));
13491       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13492       fprintf_filtered (stream, " (");
13493       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13494       fprintf_filtered (stream, ")");
13495       break;
13496     case BINOP_IN_BOUNDS:
13497       fprintf_filtered (stream, " (%d)",
13498                         longest_to_int (exp->elts[pc + 2].longconst));
13499       break;
13500     case TERNOP_IN_RANGE:
13501       break;
13502
13503     case OP_AGGREGATE:
13504     case OP_OTHERS:
13505     case OP_DISCRETE_RANGE:
13506     case OP_POSITIONAL:
13507     case OP_CHOICES:
13508       break;
13509
13510     case OP_NAME:
13511     case OP_STRING:
13512       {
13513         char *name = &exp->elts[elt + 2].string;
13514         int len = longest_to_int (exp->elts[elt + 1].longconst);
13515
13516         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13517         break;
13518       }
13519
13520     default:
13521       return dump_subexp_body_standard (exp, stream, elt);
13522     }
13523
13524   elt += oplen;
13525   for (i = 0; i < nargs; i += 1)
13526     elt = dump_subexp (exp, stream, elt);
13527
13528   return elt;
13529 }
13530
13531 /* The Ada extension of print_subexp (q.v.).  */
13532
13533 static void
13534 ada_print_subexp (struct expression *exp, int *pos,
13535                   struct ui_file *stream, enum precedence prec)
13536 {
13537   int oplen, nargs, i;
13538   int pc = *pos;
13539   enum exp_opcode op = exp->elts[pc].opcode;
13540
13541   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13542
13543   *pos += oplen;
13544   switch (op)
13545     {
13546     default:
13547       *pos -= oplen;
13548       print_subexp_standard (exp, pos, stream, prec);
13549       return;
13550
13551     case OP_VAR_VALUE:
13552       fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
13553       return;
13554
13555     case BINOP_IN_BOUNDS:
13556       /* XXX: sprint_subexp */
13557       print_subexp (exp, pos, stream, PREC_SUFFIX);
13558       fputs_filtered (" in ", stream);
13559       print_subexp (exp, pos, stream, PREC_SUFFIX);
13560       fputs_filtered ("'range", stream);
13561       if (exp->elts[pc + 1].longconst > 1)
13562         fprintf_filtered (stream, "(%ld)",
13563                           (long) exp->elts[pc + 1].longconst);
13564       return;
13565
13566     case TERNOP_IN_RANGE:
13567       if (prec >= PREC_EQUAL)
13568         fputs_filtered ("(", stream);
13569       /* XXX: sprint_subexp */
13570       print_subexp (exp, pos, stream, PREC_SUFFIX);
13571       fputs_filtered (" in ", stream);
13572       print_subexp (exp, pos, stream, PREC_EQUAL);
13573       fputs_filtered (" .. ", stream);
13574       print_subexp (exp, pos, stream, PREC_EQUAL);
13575       if (prec >= PREC_EQUAL)
13576         fputs_filtered (")", stream);
13577       return;
13578
13579     case OP_ATR_FIRST:
13580     case OP_ATR_LAST:
13581     case OP_ATR_LENGTH:
13582     case OP_ATR_IMAGE:
13583     case OP_ATR_MAX:
13584     case OP_ATR_MIN:
13585     case OP_ATR_MODULUS:
13586     case OP_ATR_POS:
13587     case OP_ATR_SIZE:
13588     case OP_ATR_TAG:
13589     case OP_ATR_VAL:
13590       if (exp->elts[*pos].opcode == OP_TYPE)
13591         {
13592           if (exp->elts[*pos + 1].type->code () != TYPE_CODE_VOID)
13593             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13594                            &type_print_raw_options);
13595           *pos += 3;
13596         }
13597       else
13598         print_subexp (exp, pos, stream, PREC_SUFFIX);
13599       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13600       if (nargs > 1)
13601         {
13602           int tem;
13603
13604           for (tem = 1; tem < nargs; tem += 1)
13605             {
13606               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13607               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13608             }
13609           fputs_filtered (")", stream);
13610         }
13611       return;
13612
13613     case UNOP_QUAL:
13614       type_print (exp->elts[pc + 1].type, "", stream, 0);
13615       fputs_filtered ("'(", stream);
13616       print_subexp (exp, pos, stream, PREC_PREFIX);
13617       fputs_filtered (")", stream);
13618       return;
13619
13620     case UNOP_IN_RANGE:
13621       /* XXX: sprint_subexp */
13622       print_subexp (exp, pos, stream, PREC_SUFFIX);
13623       fputs_filtered (" in ", stream);
13624       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13625                      &type_print_raw_options);
13626       return;
13627
13628     case OP_DISCRETE_RANGE:
13629       print_subexp (exp, pos, stream, PREC_SUFFIX);
13630       fputs_filtered ("..", stream);
13631       print_subexp (exp, pos, stream, PREC_SUFFIX);
13632       return;
13633
13634     case OP_OTHERS:
13635       fputs_filtered ("others => ", stream);
13636       print_subexp (exp, pos, stream, PREC_SUFFIX);
13637       return;
13638
13639     case OP_CHOICES:
13640       for (i = 0; i < nargs-1; i += 1)
13641         {
13642           if (i > 0)
13643             fputs_filtered ("|", stream);
13644           print_subexp (exp, pos, stream, PREC_SUFFIX);
13645         }
13646       fputs_filtered (" => ", stream);
13647       print_subexp (exp, pos, stream, PREC_SUFFIX);
13648       return;
13649       
13650     case OP_POSITIONAL:
13651       print_subexp (exp, pos, stream, PREC_SUFFIX);
13652       return;
13653
13654     case OP_AGGREGATE:
13655       fputs_filtered ("(", stream);
13656       for (i = 0; i < nargs; i += 1)
13657         {
13658           if (i > 0)
13659             fputs_filtered (", ", stream);
13660           print_subexp (exp, pos, stream, PREC_SUFFIX);
13661         }
13662       fputs_filtered (")", stream);
13663       return;
13664     }
13665 }
13666
13667 /* Table mapping opcodes into strings for printing operators
13668    and precedences of the operators.  */
13669
13670 static const struct op_print ada_op_print_tab[] = {
13671   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13672   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13673   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13674   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13675   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13676   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13677   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13678   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13679   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13680   {">=", BINOP_GEQ, PREC_ORDER, 0},
13681   {">", BINOP_GTR, PREC_ORDER, 0},
13682   {"<", BINOP_LESS, PREC_ORDER, 0},
13683   {">>", BINOP_RSH, PREC_SHIFT, 0},
13684   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13685   {"+", BINOP_ADD, PREC_ADD, 0},
13686   {"-", BINOP_SUB, PREC_ADD, 0},
13687   {"&", BINOP_CONCAT, PREC_ADD, 0},
13688   {"*", BINOP_MUL, PREC_MUL, 0},
13689   {"/", BINOP_DIV, PREC_MUL, 0},
13690   {"rem", BINOP_REM, PREC_MUL, 0},
13691   {"mod", BINOP_MOD, PREC_MUL, 0},
13692   {"**", BINOP_EXP, PREC_REPEAT, 0},
13693   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13694   {"-", UNOP_NEG, PREC_PREFIX, 0},
13695   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13696   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13697   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13698   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13699   {".all", UNOP_IND, PREC_SUFFIX, 1},
13700   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13701   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13702   {NULL, OP_NULL, PREC_SUFFIX, 0}
13703 };
13704 \f
13705 enum ada_primitive_types {
13706   ada_primitive_type_int,
13707   ada_primitive_type_long,
13708   ada_primitive_type_short,
13709   ada_primitive_type_char,
13710   ada_primitive_type_float,
13711   ada_primitive_type_double,
13712   ada_primitive_type_void,
13713   ada_primitive_type_long_long,
13714   ada_primitive_type_long_double,
13715   ada_primitive_type_natural,
13716   ada_primitive_type_positive,
13717   ada_primitive_type_system_address,
13718   ada_primitive_type_storage_offset,
13719   nr_ada_primitive_types
13720 };
13721
13722 \f
13723                                 /* Language vector */
13724
13725 /* Not really used, but needed in the ada_language_defn.  */
13726
13727 static void
13728 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
13729 {
13730   ada_emit_char (c, type, stream, quoter, 1);
13731 }
13732
13733 static int
13734 parse (struct parser_state *ps)
13735 {
13736   warnings_issued = 0;
13737   return ada_parse (ps);
13738 }
13739
13740 static const struct exp_descriptor ada_exp_descriptor = {
13741   ada_print_subexp,
13742   ada_operator_length,
13743   ada_operator_check,
13744   ada_op_name,
13745   ada_dump_subexp_body,
13746   ada_evaluate_subexp
13747 };
13748
13749 /* symbol_name_matcher_ftype adapter for wild_match.  */
13750
13751 static bool
13752 do_wild_match (const char *symbol_search_name,
13753                const lookup_name_info &lookup_name,
13754                completion_match_result *comp_match_res)
13755 {
13756   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
13757 }
13758
13759 /* symbol_name_matcher_ftype adapter for full_match.  */
13760
13761 static bool
13762 do_full_match (const char *symbol_search_name,
13763                const lookup_name_info &lookup_name,
13764                completion_match_result *comp_match_res)
13765 {
13766   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
13767 }
13768
13769 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
13770
13771 static bool
13772 do_exact_match (const char *symbol_search_name,
13773                 const lookup_name_info &lookup_name,
13774                 completion_match_result *comp_match_res)
13775 {
13776   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
13777 }
13778
13779 /* Build the Ada lookup name for LOOKUP_NAME.  */
13780
13781 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
13782 {
13783   gdb::string_view user_name = lookup_name.name ();
13784
13785   if (user_name[0] == '<')
13786     {
13787       if (user_name.back () == '>')
13788         m_encoded_name
13789           = user_name.substr (1, user_name.size () - 2).to_string ();
13790       else
13791         m_encoded_name
13792           = user_name.substr (1, user_name.size () - 1).to_string ();
13793       m_encoded_p = true;
13794       m_verbatim_p = true;
13795       m_wild_match_p = false;
13796       m_standard_p = false;
13797     }
13798   else
13799     {
13800       m_verbatim_p = false;
13801
13802       m_encoded_p = user_name.find ("__") != gdb::string_view::npos;
13803
13804       if (!m_encoded_p)
13805         {
13806           const char *folded = ada_fold_name (user_name);
13807           const char *encoded = ada_encode_1 (folded, false);
13808           if (encoded != NULL)
13809             m_encoded_name = encoded;
13810           else
13811             m_encoded_name = user_name.to_string ();
13812         }
13813       else
13814         m_encoded_name = user_name.to_string ();
13815
13816       /* Handle the 'package Standard' special case.  See description
13817          of m_standard_p.  */
13818       if (startswith (m_encoded_name.c_str (), "standard__"))
13819         {
13820           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
13821           m_standard_p = true;
13822         }
13823       else
13824         m_standard_p = false;
13825
13826       /* If the name contains a ".", then the user is entering a fully
13827          qualified entity name, and the match must not be done in wild
13828          mode.  Similarly, if the user wants to complete what looks
13829          like an encoded name, the match must not be done in wild
13830          mode.  Also, in the standard__ special case always do
13831          non-wild matching.  */
13832       m_wild_match_p
13833         = (lookup_name.match_type () != symbol_name_match_type::FULL
13834            && !m_encoded_p
13835            && !m_standard_p
13836            && user_name.find ('.') == std::string::npos);
13837     }
13838 }
13839
13840 /* symbol_name_matcher_ftype method for Ada.  This only handles
13841    completion mode.  */
13842
13843 static bool
13844 ada_symbol_name_matches (const char *symbol_search_name,
13845                          const lookup_name_info &lookup_name,
13846                          completion_match_result *comp_match_res)
13847 {
13848   return lookup_name.ada ().matches (symbol_search_name,
13849                                      lookup_name.match_type (),
13850                                      comp_match_res);
13851 }
13852
13853 /* A name matcher that matches the symbol name exactly, with
13854    strcmp.  */
13855
13856 static bool
13857 literal_symbol_name_matcher (const char *symbol_search_name,
13858                              const lookup_name_info &lookup_name,
13859                              completion_match_result *comp_match_res)
13860 {
13861   gdb::string_view name_view = lookup_name.name ();
13862
13863   if (lookup_name.completion_mode ()
13864       ? (strncmp (symbol_search_name, name_view.data (),
13865                   name_view.size ()) == 0)
13866       : symbol_search_name == name_view)
13867     {
13868       if (comp_match_res != NULL)
13869         comp_match_res->set_match (symbol_search_name);
13870       return true;
13871     }
13872   else
13873     return false;
13874 }
13875
13876 /* Implement the "la_get_symbol_name_matcher" language_defn method for
13877    Ada.  */
13878
13879 static symbol_name_matcher_ftype *
13880 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
13881 {
13882   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
13883     return literal_symbol_name_matcher;
13884
13885   if (lookup_name.completion_mode ())
13886     return ada_symbol_name_matches;
13887   else
13888     {
13889       if (lookup_name.ada ().wild_match_p ())
13890         return do_wild_match;
13891       else if (lookup_name.ada ().verbatim_p ())
13892         return do_exact_match;
13893       else
13894         return do_full_match;
13895     }
13896 }
13897
13898 static const char *ada_extensions[] =
13899 {
13900   ".adb", ".ads", ".a", ".ada", ".dg", NULL
13901 };
13902
13903 /* Constant data that describes the Ada language.  */
13904
13905 extern const struct language_data ada_language_data =
13906 {
13907   "ada",                        /* Language name */
13908   "Ada",
13909   language_ada,
13910   range_check_off,
13911   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
13912                                    that's not quite what this means.  */
13913   array_row_major,
13914   macro_expansion_no,
13915   ada_extensions,
13916   &ada_exp_descriptor,
13917   parse,
13918   resolve,
13919   ada_printchar,                /* Print a character constant */
13920   ada_printstr,                 /* Function to print string constant */
13921   emit_char,                    /* Function to print single char (not used) */
13922   ada_print_typedef,            /* Print a typedef using appropriate syntax */
13923   ada_value_print_inner,        /* la_value_print_inner */
13924   ada_value_print,              /* Print a top-level value */
13925   NULL,                         /* name_of_this */
13926   true,                         /* la_store_sym_names_in_linkage_form_p */
13927   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
13928   NULL,                         /* Language specific
13929                                    class_name_from_physname */
13930   ada_op_print_tab,             /* expression operators for printing */
13931   0,                            /* c-style arrays */
13932   1,                            /* String lower bound */
13933   ada_get_gdb_completer_word_break_characters,
13934   ada_collect_symbol_completion_matches,
13935   ada_watch_location_expression,
13936   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
13937   &ada_varobj_ops,
13938   NULL,
13939   ada_is_string_type,
13940   "(...)"                       /* la_struct_too_deep_ellipsis */
13941 };
13942
13943 /* Class representing the Ada language.  */
13944
13945 class ada_language : public language_defn
13946 {
13947 public:
13948   ada_language ()
13949     : language_defn (language_ada, ada_language_data)
13950   { /* Nothing.  */ }
13951
13952   /* Print an array element index using the Ada syntax.  */
13953
13954   void print_array_index (struct type *index_type,
13955                           LONGEST index,
13956                           struct ui_file *stream,
13957                           const value_print_options *options) const override
13958   {
13959     struct value *index_value = val_atr (index_type, index);
13960
13961     LA_VALUE_PRINT (index_value, stream, options);
13962     fprintf_filtered (stream, " => ");
13963   }
13964
13965   /* Implement the "read_var_value" language_defn method for Ada.  */
13966
13967   struct value *read_var_value (struct symbol *var,
13968                                 const struct block *var_block,
13969                                 struct frame_info *frame) const override
13970   {
13971     /* The only case where default_read_var_value is not sufficient
13972        is when VAR is a renaming...  */
13973     if (frame != nullptr)
13974       {
13975         const struct block *frame_block = get_frame_block (frame, NULL);
13976         if (frame_block != nullptr && ada_is_renaming_symbol (var))
13977           return ada_read_renaming_var_value (var, frame_block);
13978       }
13979
13980     /* This is a typical case where we expect the default_read_var_value
13981        function to work.  */
13982     return language_defn::read_var_value (var, var_block, frame);
13983   }
13984
13985   /* See language.h.  */
13986   void language_arch_info (struct gdbarch *gdbarch,
13987                            struct language_arch_info *lai) const override
13988   {
13989     const struct builtin_type *builtin = builtin_type (gdbarch);
13990
13991     lai->primitive_type_vector
13992       = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13993                                 struct type *);
13994
13995     lai->primitive_type_vector [ada_primitive_type_int]
13996       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13997                            0, "integer");
13998     lai->primitive_type_vector [ada_primitive_type_long]
13999       = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14000                            0, "long_integer");
14001     lai->primitive_type_vector [ada_primitive_type_short]
14002       = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14003                            0, "short_integer");
14004     lai->string_char_type
14005       = lai->primitive_type_vector [ada_primitive_type_char]
14006       = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14007     lai->primitive_type_vector [ada_primitive_type_float]
14008       = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14009                          "float", gdbarch_float_format (gdbarch));
14010     lai->primitive_type_vector [ada_primitive_type_double]
14011       = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14012                          "long_float", gdbarch_double_format (gdbarch));
14013     lai->primitive_type_vector [ada_primitive_type_long_long]
14014       = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14015                            0, "long_long_integer");
14016     lai->primitive_type_vector [ada_primitive_type_long_double]
14017       = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14018                          "long_long_float", gdbarch_long_double_format (gdbarch));
14019     lai->primitive_type_vector [ada_primitive_type_natural]
14020       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14021                            0, "natural");
14022     lai->primitive_type_vector [ada_primitive_type_positive]
14023       = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14024                            0, "positive");
14025     lai->primitive_type_vector [ada_primitive_type_void]
14026       = builtin->builtin_void;
14027
14028     lai->primitive_type_vector [ada_primitive_type_system_address]
14029       = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14030                                         "void"));
14031     lai->primitive_type_vector [ada_primitive_type_system_address]
14032       ->set_name ("system__address");
14033
14034     /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14035        type.  This is a signed integral type whose size is the same as
14036        the size of addresses.  */
14037     {
14038       unsigned int addr_length = TYPE_LENGTH
14039         (lai->primitive_type_vector [ada_primitive_type_system_address]);
14040
14041       lai->primitive_type_vector [ada_primitive_type_storage_offset]
14042         = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14043                              "storage_offset");
14044     }
14045
14046     lai->bool_type_symbol = NULL;
14047     lai->bool_type_default = builtin->builtin_bool;
14048   }
14049
14050   /* See language.h.  */
14051
14052   bool iterate_over_symbols
14053         (const struct block *block, const lookup_name_info &name,
14054          domain_enum domain,
14055          gdb::function_view<symbol_found_callback_ftype> callback) const override
14056   {
14057     std::vector<struct block_symbol> results;
14058
14059     ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
14060     for (block_symbol &sym : results)
14061       {
14062         if (!callback (&sym))
14063           return false;
14064       }
14065
14066     return true;
14067   }
14068
14069   /* See language.h.  */
14070   bool sniff_from_mangled_name (const char *mangled,
14071                                 char **out) const override
14072   {
14073     std::string demangled = ada_decode (mangled);
14074
14075     *out = NULL;
14076
14077     if (demangled != mangled && demangled[0] != '<')
14078       {
14079         /* Set the gsymbol language to Ada, but still return 0.
14080            Two reasons for that:
14081
14082            1. For Ada, we prefer computing the symbol's decoded name
14083            on the fly rather than pre-compute it, in order to save
14084            memory (Ada projects are typically very large).
14085
14086            2. There are some areas in the definition of the GNAT
14087            encoding where, with a bit of bad luck, we might be able
14088            to decode a non-Ada symbol, generating an incorrect
14089            demangled name (Eg: names ending with "TB" for instance
14090            are identified as task bodies and so stripped from
14091            the decoded name returned).
14092
14093            Returning true, here, but not setting *DEMANGLED, helps us get
14094            a little bit of the best of both worlds.  Because we're last,
14095            we should not affect any of the other languages that were
14096            able to demangle the symbol before us; we get to correctly
14097            tag Ada symbols as such; and even if we incorrectly tagged a
14098            non-Ada symbol, which should be rare, any routing through the
14099            Ada language should be transparent (Ada tries to behave much
14100            like C/C++ with non-Ada symbols).  */
14101         return true;
14102       }
14103
14104     return false;
14105   }
14106
14107   /* See language.h.  */
14108
14109   char *demangle (const char *mangled, int options) const override
14110   {
14111     return ada_la_decode (mangled, options);
14112   }
14113
14114   /* See language.h.  */
14115
14116   void print_type (struct type *type, const char *varstring,
14117                    struct ui_file *stream, int show, int level,
14118                    const struct type_print_options *flags) const override
14119   {
14120     ada_print_type (type, varstring, stream, show, level, flags);
14121   }
14122 };
14123
14124 /* Single instance of the Ada language class.  */
14125
14126 static ada_language ada_language_defn;
14127
14128 /* Command-list for the "set/show ada" prefix command.  */
14129 static struct cmd_list_element *set_ada_list;
14130 static struct cmd_list_element *show_ada_list;
14131
14132 static void
14133 initialize_ada_catchpoint_ops (void)
14134 {
14135   struct breakpoint_ops *ops;
14136
14137   initialize_breakpoint_ops ();
14138
14139   ops = &catch_exception_breakpoint_ops;
14140   *ops = bkpt_breakpoint_ops;
14141   ops->allocate_location = allocate_location_exception;
14142   ops->re_set = re_set_exception;
14143   ops->check_status = check_status_exception;
14144   ops->print_it = print_it_exception;
14145   ops->print_one = print_one_exception;
14146   ops->print_mention = print_mention_exception;
14147   ops->print_recreate = print_recreate_exception;
14148
14149   ops = &catch_exception_unhandled_breakpoint_ops;
14150   *ops = bkpt_breakpoint_ops;
14151   ops->allocate_location = allocate_location_exception;
14152   ops->re_set = re_set_exception;
14153   ops->check_status = check_status_exception;
14154   ops->print_it = print_it_exception;
14155   ops->print_one = print_one_exception;
14156   ops->print_mention = print_mention_exception;
14157   ops->print_recreate = print_recreate_exception;
14158
14159   ops = &catch_assert_breakpoint_ops;
14160   *ops = bkpt_breakpoint_ops;
14161   ops->allocate_location = allocate_location_exception;
14162   ops->re_set = re_set_exception;
14163   ops->check_status = check_status_exception;
14164   ops->print_it = print_it_exception;
14165   ops->print_one = print_one_exception;
14166   ops->print_mention = print_mention_exception;
14167   ops->print_recreate = print_recreate_exception;
14168
14169   ops = &catch_handlers_breakpoint_ops;
14170   *ops = bkpt_breakpoint_ops;
14171   ops->allocate_location = allocate_location_exception;
14172   ops->re_set = re_set_exception;
14173   ops->check_status = check_status_exception;
14174   ops->print_it = print_it_exception;
14175   ops->print_one = print_one_exception;
14176   ops->print_mention = print_mention_exception;
14177   ops->print_recreate = print_recreate_exception;
14178 }
14179
14180 /* This module's 'new_objfile' observer.  */
14181
14182 static void
14183 ada_new_objfile_observer (struct objfile *objfile)
14184 {
14185   ada_clear_symbol_cache ();
14186 }
14187
14188 /* This module's 'free_objfile' observer.  */
14189
14190 static void
14191 ada_free_objfile_observer (struct objfile *objfile)
14192 {
14193   ada_clear_symbol_cache ();
14194 }
14195
14196 void _initialize_ada_language ();
14197 void
14198 _initialize_ada_language ()
14199 {
14200   initialize_ada_catchpoint_ops ();
14201
14202   add_basic_prefix_cmd ("ada", no_class,
14203                         _("Prefix command for changing Ada-specific settings."),
14204                         &set_ada_list, "set ada ", 0, &setlist);
14205
14206   add_show_prefix_cmd ("ada", no_class,
14207                        _("Generic command for showing Ada-specific settings."),
14208                        &show_ada_list, "show ada ", 0, &showlist);
14209
14210   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14211                            &trust_pad_over_xvs, _("\
14212 Enable or disable an optimization trusting PAD types over XVS types."), _("\
14213 Show whether an optimization trusting PAD types over XVS types is activated."),
14214                            _("\
14215 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14216 should normally trust the contents of PAD types, but certain older versions\n\
14217 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14218 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14219 work around this bug.  It is always safe to turn this option \"off\", but\n\
14220 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14221 this option to \"off\" unless necessary."),
14222                             NULL, NULL, &set_ada_list, &show_ada_list);
14223
14224   add_setshow_boolean_cmd ("print-signatures", class_vars,
14225                            &print_signatures, _("\
14226 Enable or disable the output of formal and return types for functions in the \
14227 overloads selection menu."), _("\
14228 Show whether the output of formal and return types for functions in the \
14229 overloads selection menu is activated."),
14230                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14231
14232   add_catch_command ("exception", _("\
14233 Catch Ada exceptions, when raised.\n\
14234 Usage: catch exception [ARG] [if CONDITION]\n\
14235 Without any argument, stop when any Ada exception is raised.\n\
14236 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14237 being raised does not have a handler (and will therefore lead to the task's\n\
14238 termination).\n\
14239 Otherwise, the catchpoint only stops when the name of the exception being\n\
14240 raised is the same as ARG.\n\
14241 CONDITION is a boolean expression that is evaluated to see whether the\n\
14242 exception should cause a stop."),
14243                      catch_ada_exception_command,
14244                      catch_ada_completer,
14245                      CATCH_PERMANENT,
14246                      CATCH_TEMPORARY);
14247
14248   add_catch_command ("handlers", _("\
14249 Catch Ada exceptions, when handled.\n\
14250 Usage: catch handlers [ARG] [if CONDITION]\n\
14251 Without any argument, stop when any Ada exception is handled.\n\
14252 With an argument, catch only exceptions with the given name.\n\
14253 CONDITION is a boolean expression that is evaluated to see whether the\n\
14254 exception should cause a stop."),
14255                      catch_ada_handlers_command,
14256                      catch_ada_completer,
14257                      CATCH_PERMANENT,
14258                      CATCH_TEMPORARY);
14259   add_catch_command ("assert", _("\
14260 Catch failed Ada assertions, when raised.\n\
14261 Usage: catch assert [if CONDITION]\n\
14262 CONDITION is a boolean expression that is evaluated to see whether the\n\
14263 exception should cause a stop."),
14264                      catch_assert_command,
14265                      NULL,
14266                      CATCH_PERMANENT,
14267                      CATCH_TEMPORARY);
14268
14269   varsize_limit = 65536;
14270   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14271                             &varsize_limit, _("\
14272 Set the maximum number of bytes allowed in a variable-size object."), _("\
14273 Show the maximum number of bytes allowed in a variable-size object."), _("\
14274 Attempts to access an object whose size is not a compile-time constant\n\
14275 and exceeds this limit will cause an error."),
14276                             NULL, NULL, &setlist, &showlist);
14277
14278   add_info ("exceptions", info_exceptions_command,
14279             _("\
14280 List all Ada exception names.\n\
14281 Usage: info exceptions [REGEXP]\n\
14282 If a regular expression is passed as an argument, only those matching\n\
14283 the regular expression are listed."));
14284
14285   add_basic_prefix_cmd ("ada", class_maintenance,
14286                         _("Set Ada maintenance-related variables."),
14287                         &maint_set_ada_cmdlist, "maintenance set ada ",
14288                         0/*allow-unknown*/, &maintenance_set_cmdlist);
14289
14290   add_show_prefix_cmd ("ada", class_maintenance,
14291                        _("Show Ada maintenance-related variables."),
14292                        &maint_show_ada_cmdlist, "maintenance show ada ",
14293                        0/*allow-unknown*/, &maintenance_show_cmdlist);
14294
14295   add_setshow_boolean_cmd
14296     ("ignore-descriptive-types", class_maintenance,
14297      &ada_ignore_descriptive_types_p,
14298      _("Set whether descriptive types generated by GNAT should be ignored."),
14299      _("Show whether descriptive types generated by GNAT should be ignored."),
14300      _("\
14301 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14302 DWARF attribute."),
14303      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14304
14305   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14306                                            NULL, xcalloc, xfree);
14307
14308   /* The ada-lang observers.  */
14309   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14310   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14311   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14312 }
This page took 0.823596 seconds and 4 git commands to generate.