Fix assertion failure in coerce_unspec_val_to_type
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2019 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 "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "common/vec.h"
53 #include "stack.h"
54 #include "common/gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66 #include <map>
67
68 /* Define whether or not the C operator '/' truncates towards zero for
69    differently signed operands (truncation direction is undefined in C).
70    Copied from valarith.c.  */
71
72 #ifndef TRUNCATION_TOWARDS_ZERO
73 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
74 #endif
75
76 static struct type *desc_base_type (struct type *);
77
78 static struct type *desc_bounds_type (struct type *);
79
80 static struct value *desc_bounds (struct value *);
81
82 static int fat_pntr_bounds_bitpos (struct type *);
83
84 static int fat_pntr_bounds_bitsize (struct type *);
85
86 static struct type *desc_data_target_type (struct type *);
87
88 static struct value *desc_data (struct value *);
89
90 static int fat_pntr_data_bitpos (struct type *);
91
92 static int fat_pntr_data_bitsize (struct type *);
93
94 static struct value *desc_one_bound (struct value *, int, int);
95
96 static int desc_bound_bitpos (struct type *, int, int);
97
98 static int desc_bound_bitsize (struct type *, int, int);
99
100 static struct type *desc_index_type (struct type *, int);
101
102 static int desc_arity (struct type *);
103
104 static int ada_type_match (struct type *, struct type *, int);
105
106 static int ada_args_match (struct symbol *, struct value **, int);
107
108 static struct value *make_array_descriptor (struct type *, struct value *);
109
110 static void ada_add_block_symbols (struct obstack *,
111                                    const struct block *,
112                                    const lookup_name_info &lookup_name,
113                                    domain_enum, struct objfile *);
114
115 static void ada_add_all_symbols (struct obstack *, const struct block *,
116                                  const lookup_name_info &lookup_name,
117                                  domain_enum, int, int *);
118
119 static int is_nonfunction (struct block_symbol *, int);
120
121 static void add_defn_to_vec (struct obstack *, struct symbol *,
122                              const struct block *);
123
124 static int num_defns_collected (struct obstack *);
125
126 static struct block_symbol *defns_collected (struct obstack *, int);
127
128 static struct value *resolve_subexp (expression_up *, int *, int,
129                                      struct type *, int,
130                                      innermost_block_tracker *);
131
132 static void replace_operator_with_call (expression_up *, int, int, int,
133                                         struct symbol *, const struct block *);
134
135 static int possible_user_operator_p (enum exp_opcode, struct value **);
136
137 static const char *ada_op_name (enum exp_opcode);
138
139 static const char *ada_decoded_op_name (enum exp_opcode);
140
141 static int numeric_type_p (struct type *);
142
143 static int integer_type_p (struct type *);
144
145 static int scalar_type_p (struct type *);
146
147 static int discrete_type_p (struct type *);
148
149 static enum ada_renaming_category parse_old_style_renaming (struct type *,
150                                                             const char **,
151                                                             int *,
152                                                             const char **);
153
154 static struct symbol *find_old_style_renaming_symbol (const char *,
155                                                       const struct block *);
156
157 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
158                                                 int, int);
159
160 static struct value *evaluate_subexp_type (struct expression *, int *);
161
162 static struct type *ada_find_parallel_type_with_name (struct type *,
163                                                       const char *);
164
165 static int is_dynamic_field (struct type *, int);
166
167 static struct type *to_fixed_variant_branch_type (struct type *,
168                                                   const gdb_byte *,
169                                                   CORE_ADDR, struct value *);
170
171 static struct type *to_fixed_array_type (struct type *, struct value *, int);
172
173 static struct type *to_fixed_range_type (struct type *, struct value *);
174
175 static struct type *to_static_fixed_type (struct type *);
176 static struct type *static_unwrap_type (struct type *type);
177
178 static struct value *unwrap_value (struct value *);
179
180 static struct type *constrained_packed_array_type (struct type *, long *);
181
182 static struct type *decode_constrained_packed_array_type (struct type *);
183
184 static long decode_packed_array_bitsize (struct type *);
185
186 static struct value *decode_constrained_packed_array (struct value *);
187
188 static int ada_is_packed_array_type  (struct type *);
189
190 static int ada_is_unconstrained_packed_array_type (struct type *);
191
192 static struct value *value_subscript_packed (struct value *, int,
193                                              struct value **);
194
195 static struct value *coerce_unspec_val_to_type (struct value *,
196                                                 struct type *);
197
198 static int lesseq_defined_than (struct symbol *, struct symbol *);
199
200 static int equiv_types (struct type *, struct type *);
201
202 static int is_name_suffix (const char *);
203
204 static int advance_wild_match (const char **, const char *, int);
205
206 static bool wild_match (const char *name, const char *patn);
207
208 static struct value *ada_coerce_ref (struct value *);
209
210 static LONGEST pos_atr (struct value *);
211
212 static struct value *value_pos_atr (struct type *, struct value *);
213
214 static struct value *value_val_atr (struct type *, struct value *);
215
216 static struct symbol *standard_lookup (const char *, const struct block *,
217                                        domain_enum);
218
219 static struct value *ada_search_struct_field (const char *, struct value *, int,
220                                               struct type *);
221
222 static struct value *ada_value_primitive_field (struct value *, int, int,
223                                                 struct type *);
224
225 static int find_struct_field (const char *, struct type *, int,
226                               struct type **, int *, int *, int *, int *);
227
228 static int ada_resolve_function (struct block_symbol *, int,
229                                  struct value **, int, const char *,
230                                  struct type *, int);
231
232 static int ada_is_direct_array_type (struct type *);
233
234 static void ada_language_arch_info (struct gdbarch *,
235                                     struct language_arch_info *);
236
237 static struct value *ada_index_struct_field (int, struct value *, int,
238                                              struct type *);
239
240 static struct value *assign_aggregate (struct value *, struct value *, 
241                                        struct expression *,
242                                        int *, enum noside);
243
244 static void aggregate_assign_from_choices (struct value *, struct value *, 
245                                            struct expression *,
246                                            int *, LONGEST *, int *,
247                                            int, LONGEST, LONGEST);
248
249 static void aggregate_assign_positional (struct value *, struct value *,
250                                          struct expression *,
251                                          int *, LONGEST *, int *, int,
252                                          LONGEST, LONGEST);
253
254
255 static void aggregate_assign_others (struct value *, struct value *,
256                                      struct expression *,
257                                      int *, LONGEST *, int, LONGEST, LONGEST);
258
259
260 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
261
262
263 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
264                                           int *, enum noside);
265
266 static void ada_forward_operator_length (struct expression *, int, int *,
267                                          int *);
268
269 static struct type *ada_find_any_type (const char *name);
270
271 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
272   (const lookup_name_info &lookup_name);
273
274 \f
275
276 /* The result of a symbol lookup to be stored in our symbol cache.  */
277
278 struct cache_entry
279 {
280   /* The name used to perform the lookup.  */
281   const char *name;
282   /* The namespace used during the lookup.  */
283   domain_enum domain;
284   /* The symbol returned by the lookup, or NULL if no matching symbol
285      was found.  */
286   struct symbol *sym;
287   /* The block where the symbol was found, or NULL if no matching
288      symbol was found.  */
289   const struct block *block;
290   /* A pointer to the next entry with the same hash.  */
291   struct cache_entry *next;
292 };
293
294 /* The Ada symbol cache, used to store the result of Ada-mode symbol
295    lookups in the course of executing the user's commands.
296
297    The cache is implemented using a simple, fixed-sized hash.
298    The size is fixed on the grounds that there are not likely to be
299    all that many symbols looked up during any given session, regardless
300    of the size of the symbol table.  If we decide to go to a resizable
301    table, let's just use the stuff from libiberty instead.  */
302
303 #define HASH_SIZE 1009
304
305 struct ada_symbol_cache
306 {
307   /* An obstack used to store the entries in our cache.  */
308   struct obstack cache_space;
309
310   /* The root of the hash table used to implement our symbol cache.  */
311   struct cache_entry *root[HASH_SIZE];
312 };
313
314 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
315
316 /* Maximum-sized dynamic type.  */
317 static unsigned int varsize_limit;
318
319 static const char ada_completer_word_break_characters[] =
320 #ifdef VMS
321   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
322 #else
323   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
324 #endif
325
326 /* The name of the symbol to use to get the name of the main subprogram.  */
327 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
328   = "__gnat_ada_main_program_name";
329
330 /* Limit on the number of warnings to raise per expression evaluation.  */
331 static int warning_limit = 2;
332
333 /* Number of warning messages issued; reset to 0 by cleanups after
334    expression evaluation.  */
335 static int warnings_issued = 0;
336
337 static const char *known_runtime_file_name_patterns[] = {
338   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
339 };
340
341 static const char *known_auxiliary_function_name_patterns[] = {
342   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
343 };
344
345 /* Maintenance-related settings for this module.  */
346
347 static struct cmd_list_element *maint_set_ada_cmdlist;
348 static struct cmd_list_element *maint_show_ada_cmdlist;
349
350 /* Implement the "maintenance set ada" (prefix) command.  */
351
352 static void
353 maint_set_ada_cmd (const char *args, int from_tty)
354 {
355   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
356              gdb_stdout);
357 }
358
359 /* Implement the "maintenance show ada" (prefix) command.  */
360
361 static void
362 maint_show_ada_cmd (const char *args, int from_tty)
363 {
364   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
365 }
366
367 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
368
369 static int ada_ignore_descriptive_types_p = 0;
370
371                         /* Inferior-specific data.  */
372
373 /* Per-inferior data for this module.  */
374
375 struct ada_inferior_data
376 {
377   /* The ada__tags__type_specific_data type, which is used when decoding
378      tagged types.  With older versions of GNAT, this type was directly
379      accessible through a component ("tsd") in the object tag.  But this
380      is no longer the case, so we cache it for each inferior.  */
381   struct type *tsd_type = nullptr;
382
383   /* The exception_support_info data.  This data is used to determine
384      how to implement support for Ada exception catchpoints in a given
385      inferior.  */
386   const struct exception_support_info *exception_info = nullptr;
387 };
388
389 /* Our key to this module's inferior data.  */
390 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
391
392 /* Return our inferior data for the given inferior (INF).
393
394    This function always returns a valid pointer to an allocated
395    ada_inferior_data structure.  If INF's inferior data has not
396    been previously set, this functions creates a new one with all
397    fields set to zero, sets INF's inferior to it, and then returns
398    a pointer to that newly allocated ada_inferior_data.  */
399
400 static struct ada_inferior_data *
401 get_ada_inferior_data (struct inferior *inf)
402 {
403   struct ada_inferior_data *data;
404
405   data = ada_inferior_data.get (inf);
406   if (data == NULL)
407     data = ada_inferior_data.emplace (inf);
408
409   return data;
410 }
411
412 /* Perform all necessary cleanups regarding our module's inferior data
413    that is required after the inferior INF just exited.  */
414
415 static void
416 ada_inferior_exit (struct inferior *inf)
417 {
418   ada_inferior_data.clear (inf);
419 }
420
421
422                         /* program-space-specific data.  */
423
424 /* This module's per-program-space data.  */
425 struct ada_pspace_data
426 {
427   ~ada_pspace_data ()
428   {
429     if (sym_cache != NULL)
430       ada_free_symbol_cache (sym_cache);
431   }
432
433   /* The Ada symbol cache.  */
434   struct ada_symbol_cache *sym_cache = nullptr;
435 };
436
437 /* Key to our per-program-space data.  */
438 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
439
440 /* Return this module's data for the given program space (PSPACE).
441    If not is found, add a zero'ed one now.
442
443    This function always returns a valid object.  */
444
445 static struct ada_pspace_data *
446 get_ada_pspace_data (struct program_space *pspace)
447 {
448   struct ada_pspace_data *data;
449
450   data = ada_pspace_data_handle.get (pspace);
451   if (data == NULL)
452     data = ada_pspace_data_handle.emplace (pspace);
453
454   return data;
455 }
456
457                         /* Utilities */
458
459 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
460    all typedef layers have been peeled.  Otherwise, return TYPE.
461
462    Normally, we really expect a typedef type to only have 1 typedef layer.
463    In other words, we really expect the target type of a typedef type to be
464    a non-typedef type.  This is particularly true for Ada units, because
465    the language does not have a typedef vs not-typedef distinction.
466    In that respect, the Ada compiler has been trying to eliminate as many
467    typedef definitions in the debugging information, since they generally
468    do not bring any extra information (we still use typedef under certain
469    circumstances related mostly to the GNAT encoding).
470
471    Unfortunately, we have seen situations where the debugging information
472    generated by the compiler leads to such multiple typedef layers.  For
473    instance, consider the following example with stabs:
474
475      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
476      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
477
478    This is an error in the debugging information which causes type
479    pck__float_array___XUP to be defined twice, and the second time,
480    it is defined as a typedef of a typedef.
481
482    This is on the fringe of legality as far as debugging information is
483    concerned, and certainly unexpected.  But it is easy to handle these
484    situations correctly, so we can afford to be lenient in this case.  */
485
486 static struct type *
487 ada_typedef_target_type (struct type *type)
488 {
489   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
490     type = TYPE_TARGET_TYPE (type);
491   return type;
492 }
493
494 /* Given DECODED_NAME a string holding a symbol name in its
495    decoded form (ie using the Ada dotted notation), returns
496    its unqualified name.  */
497
498 static const char *
499 ada_unqualified_name (const char *decoded_name)
500 {
501   const char *result;
502   
503   /* If the decoded name starts with '<', it means that the encoded
504      name does not follow standard naming conventions, and thus that
505      it is not your typical Ada symbol name.  Trying to unqualify it
506      is therefore pointless and possibly erroneous.  */
507   if (decoded_name[0] == '<')
508     return decoded_name;
509
510   result = strrchr (decoded_name, '.');
511   if (result != NULL)
512     result++;                   /* Skip the dot...  */
513   else
514     result = decoded_name;
515
516   return result;
517 }
518
519 /* Return a string starting with '<', followed by STR, and '>'.  */
520
521 static std::string
522 add_angle_brackets (const char *str)
523 {
524   return string_printf ("<%s>", str);
525 }
526
527 static const char *
528 ada_get_gdb_completer_word_break_characters (void)
529 {
530   return ada_completer_word_break_characters;
531 }
532
533 /* Print an array element index using the Ada syntax.  */
534
535 static void
536 ada_print_array_index (struct value *index_value, struct ui_file *stream,
537                        const struct value_print_options *options)
538 {
539   LA_VALUE_PRINT (index_value, stream, options);
540   fprintf_filtered (stream, " => ");
541 }
542
543 /* la_watch_location_expression for Ada.  */
544
545 gdb::unique_xmalloc_ptr<char>
546 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
547 {
548   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
549   std::string name = type_to_string (type);
550   return gdb::unique_xmalloc_ptr<char>
551     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
552 }
553
554 /* Assuming VECT points to an array of *SIZE objects of size
555    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
556    updating *SIZE as necessary and returning the (new) array.  */
557
558 void *
559 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
560 {
561   if (*size < min_size)
562     {
563       *size *= 2;
564       if (*size < min_size)
565         *size = min_size;
566       vect = xrealloc (vect, *size * element_size);
567     }
568   return vect;
569 }
570
571 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
572    suffix of FIELD_NAME beginning "___".  */
573
574 static int
575 field_name_match (const char *field_name, const char *target)
576 {
577   int len = strlen (target);
578
579   return
580     (strncmp (field_name, target, len) == 0
581      && (field_name[len] == '\0'
582          || (startswith (field_name + len, "___")
583              && strcmp (field_name + strlen (field_name) - 6,
584                         "___XVN") != 0)));
585 }
586
587
588 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
589    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
590    and return its index.  This function also handles fields whose name
591    have ___ suffixes because the compiler sometimes alters their name
592    by adding such a suffix to represent fields with certain constraints.
593    If the field could not be found, return a negative number if
594    MAYBE_MISSING is set.  Otherwise raise an error.  */
595
596 int
597 ada_get_field_index (const struct type *type, const char *field_name,
598                      int maybe_missing)
599 {
600   int fieldno;
601   struct type *struct_type = check_typedef ((struct type *) type);
602
603   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
604     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
605       return fieldno;
606
607   if (!maybe_missing)
608     error (_("Unable to find field %s in struct %s.  Aborting"),
609            field_name, TYPE_NAME (struct_type));
610
611   return -1;
612 }
613
614 /* The length of the prefix of NAME prior to any "___" suffix.  */
615
616 int
617 ada_name_prefix_len (const char *name)
618 {
619   if (name == NULL)
620     return 0;
621   else
622     {
623       const char *p = strstr (name, "___");
624
625       if (p == NULL)
626         return strlen (name);
627       else
628         return p - name;
629     }
630 }
631
632 /* Return non-zero if SUFFIX is a suffix of STR.
633    Return zero if STR is null.  */
634
635 static int
636 is_suffix (const char *str, const char *suffix)
637 {
638   int len1, len2;
639
640   if (str == NULL)
641     return 0;
642   len1 = strlen (str);
643   len2 = strlen (suffix);
644   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
645 }
646
647 /* The contents of value VAL, treated as a value of type TYPE.  The
648    result is an lval in memory if VAL is.  */
649
650 static struct value *
651 coerce_unspec_val_to_type (struct value *val, struct type *type)
652 {
653   type = ada_check_typedef (type);
654   if (value_type (val) == type)
655     return val;
656   else
657     {
658       struct value *result;
659
660       /* Make sure that the object size is not unreasonable before
661          trying to allocate some memory for it.  */
662       ada_ensure_varsize_limit (type);
663
664       if (value_lazy (val)
665           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
666         result = allocate_value_lazy (type);
667       else
668         {
669           result = allocate_value (type);
670           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
671         }
672       set_value_component_location (result, val);
673       set_value_bitsize (result, value_bitsize (val));
674       set_value_bitpos (result, value_bitpos (val));
675       if (VALUE_LVAL (result) == lval_memory)
676         set_value_address (result, value_address (val));
677       return result;
678     }
679 }
680
681 static const gdb_byte *
682 cond_offset_host (const gdb_byte *valaddr, long offset)
683 {
684   if (valaddr == NULL)
685     return NULL;
686   else
687     return valaddr + offset;
688 }
689
690 static CORE_ADDR
691 cond_offset_target (CORE_ADDR address, long offset)
692 {
693   if (address == 0)
694     return 0;
695   else
696     return address + offset;
697 }
698
699 /* Issue a warning (as for the definition of warning in utils.c, but
700    with exactly one argument rather than ...), unless the limit on the
701    number of warnings has passed during the evaluation of the current
702    expression.  */
703
704 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
705    provided by "complaint".  */
706 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
707
708 static void
709 lim_warning (const char *format, ...)
710 {
711   va_list args;
712
713   va_start (args, format);
714   warnings_issued += 1;
715   if (warnings_issued <= warning_limit)
716     vwarning (format, args);
717
718   va_end (args);
719 }
720
721 /* Issue an error if the size of an object of type T is unreasonable,
722    i.e. if it would be a bad idea to allocate a value of this type in
723    GDB.  */
724
725 void
726 ada_ensure_varsize_limit (const struct type *type)
727 {
728   if (TYPE_LENGTH (type) > varsize_limit)
729     error (_("object size is larger than varsize-limit"));
730 }
731
732 /* Maximum value of a SIZE-byte signed integer type.  */
733 static LONGEST
734 max_of_size (int size)
735 {
736   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
737
738   return top_bit | (top_bit - 1);
739 }
740
741 /* Minimum value of a SIZE-byte signed integer type.  */
742 static LONGEST
743 min_of_size (int size)
744 {
745   return -max_of_size (size) - 1;
746 }
747
748 /* Maximum value of a SIZE-byte unsigned integer type.  */
749 static ULONGEST
750 umax_of_size (int size)
751 {
752   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
753
754   return top_bit | (top_bit - 1);
755 }
756
757 /* Maximum value of integral type T, as a signed quantity.  */
758 static LONGEST
759 max_of_type (struct type *t)
760 {
761   if (TYPE_UNSIGNED (t))
762     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
763   else
764     return max_of_size (TYPE_LENGTH (t));
765 }
766
767 /* Minimum value of integral type T, as a signed quantity.  */
768 static LONGEST
769 min_of_type (struct type *t)
770 {
771   if (TYPE_UNSIGNED (t)) 
772     return 0;
773   else
774     return min_of_size (TYPE_LENGTH (t));
775 }
776
777 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
778 LONGEST
779 ada_discrete_type_high_bound (struct type *type)
780 {
781   type = resolve_dynamic_type (type, NULL, 0);
782   switch (TYPE_CODE (type))
783     {
784     case TYPE_CODE_RANGE:
785       return TYPE_HIGH_BOUND (type);
786     case TYPE_CODE_ENUM:
787       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
788     case TYPE_CODE_BOOL:
789       return 1;
790     case TYPE_CODE_CHAR:
791     case TYPE_CODE_INT:
792       return max_of_type (type);
793     default:
794       error (_("Unexpected type in ada_discrete_type_high_bound."));
795     }
796 }
797
798 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
799 LONGEST
800 ada_discrete_type_low_bound (struct type *type)
801 {
802   type = resolve_dynamic_type (type, NULL, 0);
803   switch (TYPE_CODE (type))
804     {
805     case TYPE_CODE_RANGE:
806       return TYPE_LOW_BOUND (type);
807     case TYPE_CODE_ENUM:
808       return TYPE_FIELD_ENUMVAL (type, 0);
809     case TYPE_CODE_BOOL:
810       return 0;
811     case TYPE_CODE_CHAR:
812     case TYPE_CODE_INT:
813       return min_of_type (type);
814     default:
815       error (_("Unexpected type in ada_discrete_type_low_bound."));
816     }
817 }
818
819 /* The identity on non-range types.  For range types, the underlying
820    non-range scalar type.  */
821
822 static struct type *
823 get_base_type (struct type *type)
824 {
825   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
826     {
827       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
828         return type;
829       type = TYPE_TARGET_TYPE (type);
830     }
831   return type;
832 }
833
834 /* Return a decoded version of the given VALUE.  This means returning
835    a value whose type is obtained by applying all the GNAT-specific
836    encondings, making the resulting type a static but standard description
837    of the initial type.  */
838
839 struct value *
840 ada_get_decoded_value (struct value *value)
841 {
842   struct type *type = ada_check_typedef (value_type (value));
843
844   if (ada_is_array_descriptor_type (type)
845       || (ada_is_constrained_packed_array_type (type)
846           && TYPE_CODE (type) != TYPE_CODE_PTR))
847     {
848       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
849         value = ada_coerce_to_simple_array_ptr (value);
850       else
851         value = ada_coerce_to_simple_array (value);
852     }
853   else
854     value = ada_to_fixed_value (value);
855
856   return value;
857 }
858
859 /* Same as ada_get_decoded_value, but with the given TYPE.
860    Because there is no associated actual value for this type,
861    the resulting type might be a best-effort approximation in
862    the case of dynamic types.  */
863
864 struct type *
865 ada_get_decoded_type (struct type *type)
866 {
867   type = to_static_fixed_type (type);
868   if (ada_is_constrained_packed_array_type (type))
869     type = ada_coerce_to_simple_array_type (type);
870   return type;
871 }
872
873 \f
874
875                                 /* Language Selection */
876
877 /* If the main program is in Ada, return language_ada, otherwise return LANG
878    (the main program is in Ada iif the adainit symbol is found).  */
879
880 enum language
881 ada_update_initial_language (enum language lang)
882 {
883   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
884                              (struct objfile *) NULL).minsym != NULL)
885     return language_ada;
886
887   return lang;
888 }
889
890 /* If the main procedure is written in Ada, then return its name.
891    The result is good until the next call.  Return NULL if the main
892    procedure doesn't appear to be in Ada.  */
893
894 char *
895 ada_main_name (void)
896 {
897   struct bound_minimal_symbol msym;
898   static gdb::unique_xmalloc_ptr<char> main_program_name;
899
900   /* For Ada, the name of the main procedure is stored in a specific
901      string constant, generated by the binder.  Look for that symbol,
902      extract its address, and then read that string.  If we didn't find
903      that string, then most probably the main procedure is not written
904      in Ada.  */
905   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
906
907   if (msym.minsym != NULL)
908     {
909       CORE_ADDR main_program_name_addr;
910       int err_code;
911
912       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
913       if (main_program_name_addr == 0)
914         error (_("Invalid address for Ada main program name."));
915
916       target_read_string (main_program_name_addr, &main_program_name,
917                           1024, &err_code);
918
919       if (err_code != 0)
920         return NULL;
921       return main_program_name.get ();
922     }
923
924   /* The main procedure doesn't seem to be in Ada.  */
925   return NULL;
926 }
927 \f
928                                 /* Symbols */
929
930 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
931    of NULLs.  */
932
933 const struct ada_opname_map ada_opname_table[] = {
934   {"Oadd", "\"+\"", BINOP_ADD},
935   {"Osubtract", "\"-\"", BINOP_SUB},
936   {"Omultiply", "\"*\"", BINOP_MUL},
937   {"Odivide", "\"/\"", BINOP_DIV},
938   {"Omod", "\"mod\"", BINOP_MOD},
939   {"Orem", "\"rem\"", BINOP_REM},
940   {"Oexpon", "\"**\"", BINOP_EXP},
941   {"Olt", "\"<\"", BINOP_LESS},
942   {"Ole", "\"<=\"", BINOP_LEQ},
943   {"Ogt", "\">\"", BINOP_GTR},
944   {"Oge", "\">=\"", BINOP_GEQ},
945   {"Oeq", "\"=\"", BINOP_EQUAL},
946   {"One", "\"/=\"", BINOP_NOTEQUAL},
947   {"Oand", "\"and\"", BINOP_BITWISE_AND},
948   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
949   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
950   {"Oconcat", "\"&\"", BINOP_CONCAT},
951   {"Oabs", "\"abs\"", UNOP_ABS},
952   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
953   {"Oadd", "\"+\"", UNOP_PLUS},
954   {"Osubtract", "\"-\"", UNOP_NEG},
955   {NULL, NULL}
956 };
957
958 /* The "encoded" form of DECODED, according to GNAT conventions.  The
959    result is valid until the next call to ada_encode.  If
960    THROW_ERRORS, throw an error if invalid operator name is found.
961    Otherwise, return NULL in that case.  */
962
963 static char *
964 ada_encode_1 (const char *decoded, bool throw_errors)
965 {
966   static char *encoding_buffer = NULL;
967   static size_t encoding_buffer_size = 0;
968   const char *p;
969   int k;
970
971   if (decoded == NULL)
972     return NULL;
973
974   GROW_VECT (encoding_buffer, encoding_buffer_size,
975              2 * strlen (decoded) + 10);
976
977   k = 0;
978   for (p = decoded; *p != '\0'; p += 1)
979     {
980       if (*p == '.')
981         {
982           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
983           k += 2;
984         }
985       else if (*p == '"')
986         {
987           const struct ada_opname_map *mapping;
988
989           for (mapping = ada_opname_table;
990                mapping->encoded != NULL
991                && !startswith (p, mapping->decoded); mapping += 1)
992             ;
993           if (mapping->encoded == NULL)
994             {
995               if (throw_errors)
996                 error (_("invalid Ada operator name: %s"), p);
997               else
998                 return NULL;
999             }
1000           strcpy (encoding_buffer + k, mapping->encoded);
1001           k += strlen (mapping->encoded);
1002           break;
1003         }
1004       else
1005         {
1006           encoding_buffer[k] = *p;
1007           k += 1;
1008         }
1009     }
1010
1011   encoding_buffer[k] = '\0';
1012   return encoding_buffer;
1013 }
1014
1015 /* The "encoded" form of DECODED, according to GNAT conventions.
1016    The result is valid until the next call to ada_encode.  */
1017
1018 char *
1019 ada_encode (const char *decoded)
1020 {
1021   return ada_encode_1 (decoded, true);
1022 }
1023
1024 /* Return NAME folded to lower case, or, if surrounded by single
1025    quotes, unfolded, but with the quotes stripped away.  Result good
1026    to next call.  */
1027
1028 char *
1029 ada_fold_name (const char *name)
1030 {
1031   static char *fold_buffer = NULL;
1032   static size_t fold_buffer_size = 0;
1033
1034   int len = strlen (name);
1035   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1036
1037   if (name[0] == '\'')
1038     {
1039       strncpy (fold_buffer, name + 1, len - 2);
1040       fold_buffer[len - 2] = '\000';
1041     }
1042   else
1043     {
1044       int i;
1045
1046       for (i = 0; i <= len; i += 1)
1047         fold_buffer[i] = tolower (name[i]);
1048     }
1049
1050   return fold_buffer;
1051 }
1052
1053 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1054
1055 static int
1056 is_lower_alphanum (const char c)
1057 {
1058   return (isdigit (c) || (isalpha (c) && islower (c)));
1059 }
1060
1061 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1062    This function saves in LEN the length of that same symbol name but
1063    without either of these suffixes:
1064      . .{DIGIT}+
1065      . ${DIGIT}+
1066      . ___{DIGIT}+
1067      . __{DIGIT}+.
1068
1069    These are suffixes introduced by the compiler for entities such as
1070    nested subprogram for instance, in order to avoid name clashes.
1071    They do not serve any purpose for the debugger.  */
1072
1073 static void
1074 ada_remove_trailing_digits (const char *encoded, int *len)
1075 {
1076   if (*len > 1 && isdigit (encoded[*len - 1]))
1077     {
1078       int i = *len - 2;
1079
1080       while (i > 0 && isdigit (encoded[i]))
1081         i--;
1082       if (i >= 0 && encoded[i] == '.')
1083         *len = i;
1084       else if (i >= 0 && encoded[i] == '$')
1085         *len = i;
1086       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1087         *len = i - 2;
1088       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1089         *len = i - 1;
1090     }
1091 }
1092
1093 /* Remove the suffix introduced by the compiler for protected object
1094    subprograms.  */
1095
1096 static void
1097 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1098 {
1099   /* Remove trailing N.  */
1100
1101   /* Protected entry subprograms are broken into two
1102      separate subprograms: The first one is unprotected, and has
1103      a 'N' suffix; the second is the protected version, and has
1104      the 'P' suffix.  The second calls the first one after handling
1105      the protection.  Since the P subprograms are internally generated,
1106      we leave these names undecoded, giving the user a clue that this
1107      entity is internal.  */
1108
1109   if (*len > 1
1110       && encoded[*len - 1] == 'N'
1111       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1112     *len = *len - 1;
1113 }
1114
1115 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1116
1117 static void
1118 ada_remove_Xbn_suffix (const char *encoded, int *len)
1119 {
1120   int i = *len - 1;
1121
1122   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1123     i--;
1124
1125   if (encoded[i] != 'X')
1126     return;
1127
1128   if (i == 0)
1129     return;
1130
1131   if (isalnum (encoded[i-1]))
1132     *len = i;
1133 }
1134
1135 /* If ENCODED follows the GNAT entity encoding conventions, then return
1136    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1137    replaced by ENCODED.
1138
1139    The resulting string is valid until the next call of ada_decode.
1140    If the string is unchanged by decoding, the original string pointer
1141    is returned.  */
1142
1143 const char *
1144 ada_decode (const char *encoded)
1145 {
1146   int i, j;
1147   int len0;
1148   const char *p;
1149   char *decoded;
1150   int at_start_name;
1151   static char *decoding_buffer = NULL;
1152   static size_t decoding_buffer_size = 0;
1153
1154   /* With function descriptors on PPC64, the value of a symbol named
1155      ".FN", if it exists, is the entry point of the function "FN".  */
1156   if (encoded[0] == '.')
1157     encoded += 1;
1158
1159   /* The name of the Ada main procedure starts with "_ada_".
1160      This prefix is not part of the decoded name, so skip this part
1161      if we see this prefix.  */
1162   if (startswith (encoded, "_ada_"))
1163     encoded += 5;
1164
1165   /* If the name starts with '_', then it is not a properly encoded
1166      name, so do not attempt to decode it.  Similarly, if the name
1167      starts with '<', the name should not be decoded.  */
1168   if (encoded[0] == '_' || encoded[0] == '<')
1169     goto Suppress;
1170
1171   len0 = strlen (encoded);
1172
1173   ada_remove_trailing_digits (encoded, &len0);
1174   ada_remove_po_subprogram_suffix (encoded, &len0);
1175
1176   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1177      the suffix is located before the current "end" of ENCODED.  We want
1178      to avoid re-matching parts of ENCODED that have previously been
1179      marked as discarded (by decrementing LEN0).  */
1180   p = strstr (encoded, "___");
1181   if (p != NULL && p - encoded < len0 - 3)
1182     {
1183       if (p[3] == 'X')
1184         len0 = p - encoded;
1185       else
1186         goto Suppress;
1187     }
1188
1189   /* Remove any trailing TKB suffix.  It tells us that this symbol
1190      is for the body of a task, but that information does not actually
1191      appear in the decoded name.  */
1192
1193   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1194     len0 -= 3;
1195
1196   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1197      from the TKB suffix because it is used for non-anonymous task
1198      bodies.  */
1199
1200   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1201     len0 -= 2;
1202
1203   /* Remove trailing "B" suffixes.  */
1204   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1205
1206   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1207     len0 -= 1;
1208
1209   /* Make decoded big enough for possible expansion by operator name.  */
1210
1211   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1212   decoded = decoding_buffer;
1213
1214   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1215
1216   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1217     {
1218       i = len0 - 2;
1219       while ((i >= 0 && isdigit (encoded[i]))
1220              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1221         i -= 1;
1222       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1223         len0 = i - 1;
1224       else if (encoded[i] == '$')
1225         len0 = i;
1226     }
1227
1228   /* The first few characters that are not alphabetic are not part
1229      of any encoding we use, so we can copy them over verbatim.  */
1230
1231   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1232     decoded[j] = encoded[i];
1233
1234   at_start_name = 1;
1235   while (i < len0)
1236     {
1237       /* Is this a symbol function?  */
1238       if (at_start_name && encoded[i] == 'O')
1239         {
1240           int k;
1241
1242           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1243             {
1244               int op_len = strlen (ada_opname_table[k].encoded);
1245               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1246                             op_len - 1) == 0)
1247                   && !isalnum (encoded[i + op_len]))
1248                 {
1249                   strcpy (decoded + j, ada_opname_table[k].decoded);
1250                   at_start_name = 0;
1251                   i += op_len;
1252                   j += strlen (ada_opname_table[k].decoded);
1253                   break;
1254                 }
1255             }
1256           if (ada_opname_table[k].encoded != NULL)
1257             continue;
1258         }
1259       at_start_name = 0;
1260
1261       /* Replace "TK__" with "__", which will eventually be translated
1262          into "." (just below).  */
1263
1264       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1265         i += 2;
1266
1267       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1268          be translated into "." (just below).  These are internal names
1269          generated for anonymous blocks inside which our symbol is nested.  */
1270
1271       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1272           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1273           && isdigit (encoded [i+4]))
1274         {
1275           int k = i + 5;
1276           
1277           while (k < len0 && isdigit (encoded[k]))
1278             k++;  /* Skip any extra digit.  */
1279
1280           /* Double-check that the "__B_{DIGITS}+" sequence we found
1281              is indeed followed by "__".  */
1282           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1283             i = k;
1284         }
1285
1286       /* Remove _E{DIGITS}+[sb] */
1287
1288       /* Just as for protected object subprograms, there are 2 categories
1289          of subprograms created by the compiler for each entry.  The first
1290          one implements the actual entry code, and has a suffix following
1291          the convention above; the second one implements the barrier and
1292          uses the same convention as above, except that the 'E' is replaced
1293          by a 'B'.
1294
1295          Just as above, we do not decode the name of barrier functions
1296          to give the user a clue that the code he is debugging has been
1297          internally generated.  */
1298
1299       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1300           && isdigit (encoded[i+2]))
1301         {
1302           int k = i + 3;
1303
1304           while (k < len0 && isdigit (encoded[k]))
1305             k++;
1306
1307           if (k < len0
1308               && (encoded[k] == 'b' || encoded[k] == 's'))
1309             {
1310               k++;
1311               /* Just as an extra precaution, make sure that if this
1312                  suffix is followed by anything else, it is a '_'.
1313                  Otherwise, we matched this sequence by accident.  */
1314               if (k == len0
1315                   || (k < len0 && encoded[k] == '_'))
1316                 i = k;
1317             }
1318         }
1319
1320       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1321          the GNAT front-end in protected object subprograms.  */
1322
1323       if (i < len0 + 3
1324           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1325         {
1326           /* Backtrack a bit up until we reach either the begining of
1327              the encoded name, or "__".  Make sure that we only find
1328              digits or lowercase characters.  */
1329           const char *ptr = encoded + i - 1;
1330
1331           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1332             ptr--;
1333           if (ptr < encoded
1334               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1335             i++;
1336         }
1337
1338       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1339         {
1340           /* This is a X[bn]* sequence not separated from the previous
1341              part of the name with a non-alpha-numeric character (in other
1342              words, immediately following an alpha-numeric character), then
1343              verify that it is placed at the end of the encoded name.  If
1344              not, then the encoding is not valid and we should abort the
1345              decoding.  Otherwise, just skip it, it is used in body-nested
1346              package names.  */
1347           do
1348             i += 1;
1349           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1350           if (i < len0)
1351             goto Suppress;
1352         }
1353       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1354         {
1355          /* Replace '__' by '.'.  */
1356           decoded[j] = '.';
1357           at_start_name = 1;
1358           i += 2;
1359           j += 1;
1360         }
1361       else
1362         {
1363           /* It's a character part of the decoded name, so just copy it
1364              over.  */
1365           decoded[j] = encoded[i];
1366           i += 1;
1367           j += 1;
1368         }
1369     }
1370   decoded[j] = '\000';
1371
1372   /* Decoded names should never contain any uppercase character.
1373      Double-check this, and abort the decoding if we find one.  */
1374
1375   for (i = 0; decoded[i] != '\0'; i += 1)
1376     if (isupper (decoded[i]) || decoded[i] == ' ')
1377       goto Suppress;
1378
1379   if (strcmp (decoded, encoded) == 0)
1380     return encoded;
1381   else
1382     return decoded;
1383
1384 Suppress:
1385   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1386   decoded = decoding_buffer;
1387   if (encoded[0] == '<')
1388     strcpy (decoded, encoded);
1389   else
1390     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1391   return decoded;
1392
1393 }
1394
1395 /* Table for keeping permanent unique copies of decoded names.  Once
1396    allocated, names in this table are never released.  While this is a
1397    storage leak, it should not be significant unless there are massive
1398    changes in the set of decoded names in successive versions of a 
1399    symbol table loaded during a single session.  */
1400 static struct htab *decoded_names_store;
1401
1402 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1403    in the language-specific part of GSYMBOL, if it has not been
1404    previously computed.  Tries to save the decoded name in the same
1405    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1406    in any case, the decoded symbol has a lifetime at least that of
1407    GSYMBOL).
1408    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1409    const, but nevertheless modified to a semantically equivalent form
1410    when a decoded name is cached in it.  */
1411
1412 const char *
1413 ada_decode_symbol (const struct general_symbol_info *arg)
1414 {
1415   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1416   const char **resultp =
1417     &gsymbol->language_specific.demangled_name;
1418
1419   if (!gsymbol->ada_mangled)
1420     {
1421       const char *decoded = ada_decode (gsymbol->name);
1422       struct obstack *obstack = gsymbol->language_specific.obstack;
1423
1424       gsymbol->ada_mangled = 1;
1425
1426       if (obstack != NULL)
1427         *resultp
1428           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1429       else
1430         {
1431           /* Sometimes, we can't find a corresponding objfile, in
1432              which case, we put the result on the heap.  Since we only
1433              decode when needed, we hope this usually does not cause a
1434              significant memory leak (FIXME).  */
1435
1436           char **slot = (char **) htab_find_slot (decoded_names_store,
1437                                                   decoded, INSERT);
1438
1439           if (*slot == NULL)
1440             *slot = xstrdup (decoded);
1441           *resultp = *slot;
1442         }
1443     }
1444
1445   return *resultp;
1446 }
1447
1448 static char *
1449 ada_la_decode (const char *encoded, int options)
1450 {
1451   return xstrdup (ada_decode (encoded));
1452 }
1453
1454 /* Implement la_sniff_from_mangled_name for Ada.  */
1455
1456 static int
1457 ada_sniff_from_mangled_name (const char *mangled, char **out)
1458 {
1459   const char *demangled = ada_decode (mangled);
1460
1461   *out = NULL;
1462
1463   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1464     {
1465       /* Set the gsymbol language to Ada, but still return 0.
1466          Two reasons for that:
1467
1468          1. For Ada, we prefer computing the symbol's decoded name
1469          on the fly rather than pre-compute it, in order to save
1470          memory (Ada projects are typically very large).
1471
1472          2. There are some areas in the definition of the GNAT
1473          encoding where, with a bit of bad luck, we might be able
1474          to decode a non-Ada symbol, generating an incorrect
1475          demangled name (Eg: names ending with "TB" for instance
1476          are identified as task bodies and so stripped from
1477          the decoded name returned).
1478
1479          Returning 1, here, but not setting *DEMANGLED, helps us get a
1480          little bit of the best of both worlds.  Because we're last,
1481          we should not affect any of the other languages that were
1482          able to demangle the symbol before us; we get to correctly
1483          tag Ada symbols as such; and even if we incorrectly tagged a
1484          non-Ada symbol, which should be rare, any routing through the
1485          Ada language should be transparent (Ada tries to behave much
1486          like C/C++ with non-Ada symbols).  */
1487       return 1;
1488     }
1489
1490   return 0;
1491 }
1492
1493 \f
1494
1495                                 /* Arrays */
1496
1497 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1498    generated by the GNAT compiler to describe the index type used
1499    for each dimension of an array, check whether it follows the latest
1500    known encoding.  If not, fix it up to conform to the latest encoding.
1501    Otherwise, do nothing.  This function also does nothing if
1502    INDEX_DESC_TYPE is NULL.
1503
1504    The GNAT encoding used to describle the array index type evolved a bit.
1505    Initially, the information would be provided through the name of each
1506    field of the structure type only, while the type of these fields was
1507    described as unspecified and irrelevant.  The debugger was then expected
1508    to perform a global type lookup using the name of that field in order
1509    to get access to the full index type description.  Because these global
1510    lookups can be very expensive, the encoding was later enhanced to make
1511    the global lookup unnecessary by defining the field type as being
1512    the full index type description.
1513
1514    The purpose of this routine is to allow us to support older versions
1515    of the compiler by detecting the use of the older encoding, and by
1516    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1517    we essentially replace each field's meaningless type by the associated
1518    index subtype).  */
1519
1520 void
1521 ada_fixup_array_indexes_type (struct type *index_desc_type)
1522 {
1523   int i;
1524
1525   if (index_desc_type == NULL)
1526     return;
1527   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1528
1529   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1530      to check one field only, no need to check them all).  If not, return
1531      now.
1532
1533      If our INDEX_DESC_TYPE was generated using the older encoding,
1534      the field type should be a meaningless integer type whose name
1535      is not equal to the field name.  */
1536   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1537       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1538                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1539     return;
1540
1541   /* Fixup each field of INDEX_DESC_TYPE.  */
1542   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1543    {
1544      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1545      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1546
1547      if (raw_type)
1548        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1549    }
1550 }
1551
1552 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1553
1554 static const char *bound_name[] = {
1555   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1556   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1557 };
1558
1559 /* Maximum number of array dimensions we are prepared to handle.  */
1560
1561 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1562
1563
1564 /* The desc_* routines return primitive portions of array descriptors
1565    (fat pointers).  */
1566
1567 /* The descriptor or array type, if any, indicated by TYPE; removes
1568    level of indirection, if needed.  */
1569
1570 static struct type *
1571 desc_base_type (struct type *type)
1572 {
1573   if (type == NULL)
1574     return NULL;
1575   type = ada_check_typedef (type);
1576   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1577     type = ada_typedef_target_type (type);
1578
1579   if (type != NULL
1580       && (TYPE_CODE (type) == TYPE_CODE_PTR
1581           || TYPE_CODE (type) == TYPE_CODE_REF))
1582     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1583   else
1584     return type;
1585 }
1586
1587 /* True iff TYPE indicates a "thin" array pointer type.  */
1588
1589 static int
1590 is_thin_pntr (struct type *type)
1591 {
1592   return
1593     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1594     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1595 }
1596
1597 /* The descriptor type for thin pointer type TYPE.  */
1598
1599 static struct type *
1600 thin_descriptor_type (struct type *type)
1601 {
1602   struct type *base_type = desc_base_type (type);
1603
1604   if (base_type == NULL)
1605     return NULL;
1606   if (is_suffix (ada_type_name (base_type), "___XVE"))
1607     return base_type;
1608   else
1609     {
1610       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1611
1612       if (alt_type == NULL)
1613         return base_type;
1614       else
1615         return alt_type;
1616     }
1617 }
1618
1619 /* A pointer to the array data for thin-pointer value VAL.  */
1620
1621 static struct value *
1622 thin_data_pntr (struct value *val)
1623 {
1624   struct type *type = ada_check_typedef (value_type (val));
1625   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1626
1627   data_type = lookup_pointer_type (data_type);
1628
1629   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1630     return value_cast (data_type, value_copy (val));
1631   else
1632     return value_from_longest (data_type, value_address (val));
1633 }
1634
1635 /* True iff TYPE indicates a "thick" array pointer type.  */
1636
1637 static int
1638 is_thick_pntr (struct type *type)
1639 {
1640   type = desc_base_type (type);
1641   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1642           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1643 }
1644
1645 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1646    pointer to one, the type of its bounds data; otherwise, NULL.  */
1647
1648 static struct type *
1649 desc_bounds_type (struct type *type)
1650 {
1651   struct type *r;
1652
1653   type = desc_base_type (type);
1654
1655   if (type == NULL)
1656     return NULL;
1657   else if (is_thin_pntr (type))
1658     {
1659       type = thin_descriptor_type (type);
1660       if (type == NULL)
1661         return NULL;
1662       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1663       if (r != NULL)
1664         return ada_check_typedef (r);
1665     }
1666   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1667     {
1668       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1669       if (r != NULL)
1670         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1671     }
1672   return NULL;
1673 }
1674
1675 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1676    one, a pointer to its bounds data.   Otherwise NULL.  */
1677
1678 static struct value *
1679 desc_bounds (struct value *arr)
1680 {
1681   struct type *type = ada_check_typedef (value_type (arr));
1682
1683   if (is_thin_pntr (type))
1684     {
1685       struct type *bounds_type =
1686         desc_bounds_type (thin_descriptor_type (type));
1687       LONGEST addr;
1688
1689       if (bounds_type == NULL)
1690         error (_("Bad GNAT array descriptor"));
1691
1692       /* NOTE: The following calculation is not really kosher, but
1693          since desc_type is an XVE-encoded type (and shouldn't be),
1694          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1695       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1696         addr = value_as_long (arr);
1697       else
1698         addr = value_address (arr);
1699
1700       return
1701         value_from_longest (lookup_pointer_type (bounds_type),
1702                             addr - TYPE_LENGTH (bounds_type));
1703     }
1704
1705   else if (is_thick_pntr (type))
1706     {
1707       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1708                                                _("Bad GNAT array descriptor"));
1709       struct type *p_bounds_type = value_type (p_bounds);
1710
1711       if (p_bounds_type
1712           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1713         {
1714           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1715
1716           if (TYPE_STUB (target_type))
1717             p_bounds = value_cast (lookup_pointer_type
1718                                    (ada_check_typedef (target_type)),
1719                                    p_bounds);
1720         }
1721       else
1722         error (_("Bad GNAT array descriptor"));
1723
1724       return p_bounds;
1725     }
1726   else
1727     return NULL;
1728 }
1729
1730 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1731    position of the field containing the address of the bounds data.  */
1732
1733 static int
1734 fat_pntr_bounds_bitpos (struct type *type)
1735 {
1736   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1737 }
1738
1739 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1740    size of the field containing the address of the bounds data.  */
1741
1742 static int
1743 fat_pntr_bounds_bitsize (struct type *type)
1744 {
1745   type = desc_base_type (type);
1746
1747   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1748     return TYPE_FIELD_BITSIZE (type, 1);
1749   else
1750     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1751 }
1752
1753 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1754    pointer to one, the type of its array data (a array-with-no-bounds type);
1755    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1756    data.  */
1757
1758 static struct type *
1759 desc_data_target_type (struct type *type)
1760 {
1761   type = desc_base_type (type);
1762
1763   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1764   if (is_thin_pntr (type))
1765     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1766   else if (is_thick_pntr (type))
1767     {
1768       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1769
1770       if (data_type
1771           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1772         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1773     }
1774
1775   return NULL;
1776 }
1777
1778 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1779    its array data.  */
1780
1781 static struct value *
1782 desc_data (struct value *arr)
1783 {
1784   struct type *type = value_type (arr);
1785
1786   if (is_thin_pntr (type))
1787     return thin_data_pntr (arr);
1788   else if (is_thick_pntr (type))
1789     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1790                              _("Bad GNAT array descriptor"));
1791   else
1792     return NULL;
1793 }
1794
1795
1796 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1797    position of the field containing the address of the data.  */
1798
1799 static int
1800 fat_pntr_data_bitpos (struct type *type)
1801 {
1802   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1803 }
1804
1805 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1806    size of the field containing the address of the data.  */
1807
1808 static int
1809 fat_pntr_data_bitsize (struct type *type)
1810 {
1811   type = desc_base_type (type);
1812
1813   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1814     return TYPE_FIELD_BITSIZE (type, 0);
1815   else
1816     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1817 }
1818
1819 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1820    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1821    bound, if WHICH is 1.  The first bound is I=1.  */
1822
1823 static struct value *
1824 desc_one_bound (struct value *bounds, int i, int which)
1825 {
1826   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1827                            _("Bad GNAT array descriptor bounds"));
1828 }
1829
1830 /* If BOUNDS is an array-bounds structure type, return the bit position
1831    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1832    bound, if WHICH is 1.  The first bound is I=1.  */
1833
1834 static int
1835 desc_bound_bitpos (struct type *type, int i, int which)
1836 {
1837   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1838 }
1839
1840 /* If BOUNDS is an array-bounds structure type, return the bit field size
1841    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1842    bound, if WHICH is 1.  The first bound is I=1.  */
1843
1844 static int
1845 desc_bound_bitsize (struct type *type, int i, int which)
1846 {
1847   type = desc_base_type (type);
1848
1849   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1850     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1851   else
1852     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1853 }
1854
1855 /* If TYPE is the type of an array-bounds structure, the type of its
1856    Ith bound (numbering from 1).  Otherwise, NULL.  */
1857
1858 static struct type *
1859 desc_index_type (struct type *type, int i)
1860 {
1861   type = desc_base_type (type);
1862
1863   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1864     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1865   else
1866     return NULL;
1867 }
1868
1869 /* The number of index positions in the array-bounds type TYPE.
1870    Return 0 if TYPE is NULL.  */
1871
1872 static int
1873 desc_arity (struct type *type)
1874 {
1875   type = desc_base_type (type);
1876
1877   if (type != NULL)
1878     return TYPE_NFIELDS (type) / 2;
1879   return 0;
1880 }
1881
1882 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1883    an array descriptor type (representing an unconstrained array
1884    type).  */
1885
1886 static int
1887 ada_is_direct_array_type (struct type *type)
1888 {
1889   if (type == NULL)
1890     return 0;
1891   type = ada_check_typedef (type);
1892   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1893           || ada_is_array_descriptor_type (type));
1894 }
1895
1896 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1897  * to one.  */
1898
1899 static int
1900 ada_is_array_type (struct type *type)
1901 {
1902   while (type != NULL 
1903          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1904              || TYPE_CODE (type) == TYPE_CODE_REF))
1905     type = TYPE_TARGET_TYPE (type);
1906   return ada_is_direct_array_type (type);
1907 }
1908
1909 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1910
1911 int
1912 ada_is_simple_array_type (struct type *type)
1913 {
1914   if (type == NULL)
1915     return 0;
1916   type = ada_check_typedef (type);
1917   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1918           || (TYPE_CODE (type) == TYPE_CODE_PTR
1919               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1920                  == TYPE_CODE_ARRAY));
1921 }
1922
1923 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1924
1925 int
1926 ada_is_array_descriptor_type (struct type *type)
1927 {
1928   struct type *data_type = desc_data_target_type (type);
1929
1930   if (type == NULL)
1931     return 0;
1932   type = ada_check_typedef (type);
1933   return (data_type != NULL
1934           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1935           && desc_arity (desc_bounds_type (type)) > 0);
1936 }
1937
1938 /* Non-zero iff type is a partially mal-formed GNAT array
1939    descriptor.  FIXME: This is to compensate for some problems with
1940    debugging output from GNAT.  Re-examine periodically to see if it
1941    is still needed.  */
1942
1943 int
1944 ada_is_bogus_array_descriptor (struct type *type)
1945 {
1946   return
1947     type != NULL
1948     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1949     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1950         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1951     && !ada_is_array_descriptor_type (type);
1952 }
1953
1954
1955 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1956    (fat pointer) returns the type of the array data described---specifically,
1957    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1958    in from the descriptor; otherwise, they are left unspecified.  If
1959    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1960    returns NULL.  The result is simply the type of ARR if ARR is not
1961    a descriptor.  */
1962 struct type *
1963 ada_type_of_array (struct value *arr, int bounds)
1964 {
1965   if (ada_is_constrained_packed_array_type (value_type (arr)))
1966     return decode_constrained_packed_array_type (value_type (arr));
1967
1968   if (!ada_is_array_descriptor_type (value_type (arr)))
1969     return value_type (arr);
1970
1971   if (!bounds)
1972     {
1973       struct type *array_type =
1974         ada_check_typedef (desc_data_target_type (value_type (arr)));
1975
1976       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1977         TYPE_FIELD_BITSIZE (array_type, 0) =
1978           decode_packed_array_bitsize (value_type (arr));
1979       
1980       return array_type;
1981     }
1982   else
1983     {
1984       struct type *elt_type;
1985       int arity;
1986       struct value *descriptor;
1987
1988       elt_type = ada_array_element_type (value_type (arr), -1);
1989       arity = ada_array_arity (value_type (arr));
1990
1991       if (elt_type == NULL || arity == 0)
1992         return ada_check_typedef (value_type (arr));
1993
1994       descriptor = desc_bounds (arr);
1995       if (value_as_long (descriptor) == 0)
1996         return NULL;
1997       while (arity > 0)
1998         {
1999           struct type *range_type = alloc_type_copy (value_type (arr));
2000           struct type *array_type = alloc_type_copy (value_type (arr));
2001           struct value *low = desc_one_bound (descriptor, arity, 0);
2002           struct value *high = desc_one_bound (descriptor, arity, 1);
2003
2004           arity -= 1;
2005           create_static_range_type (range_type, value_type (low),
2006                                     longest_to_int (value_as_long (low)),
2007                                     longest_to_int (value_as_long (high)));
2008           elt_type = create_array_type (array_type, elt_type, range_type);
2009
2010           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2011             {
2012               /* We need to store the element packed bitsize, as well as
2013                  recompute the array size, because it was previously
2014                  computed based on the unpacked element size.  */
2015               LONGEST lo = value_as_long (low);
2016               LONGEST hi = value_as_long (high);
2017
2018               TYPE_FIELD_BITSIZE (elt_type, 0) =
2019                 decode_packed_array_bitsize (value_type (arr));
2020               /* If the array has no element, then the size is already
2021                  zero, and does not need to be recomputed.  */
2022               if (lo < hi)
2023                 {
2024                   int array_bitsize =
2025                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2026
2027                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2028                 }
2029             }
2030         }
2031
2032       return lookup_pointer_type (elt_type);
2033     }
2034 }
2035
2036 /* If ARR does not represent an array, returns ARR unchanged.
2037    Otherwise, returns either a standard GDB array with bounds set
2038    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2039    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2040
2041 struct value *
2042 ada_coerce_to_simple_array_ptr (struct value *arr)
2043 {
2044   if (ada_is_array_descriptor_type (value_type (arr)))
2045     {
2046       struct type *arrType = ada_type_of_array (arr, 1);
2047
2048       if (arrType == NULL)
2049         return NULL;
2050       return value_cast (arrType, value_copy (desc_data (arr)));
2051     }
2052   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2053     return decode_constrained_packed_array (arr);
2054   else
2055     return arr;
2056 }
2057
2058 /* If ARR does not represent an array, returns ARR unchanged.
2059    Otherwise, returns a standard GDB array describing ARR (which may
2060    be ARR itself if it already is in the proper form).  */
2061
2062 struct value *
2063 ada_coerce_to_simple_array (struct value *arr)
2064 {
2065   if (ada_is_array_descriptor_type (value_type (arr)))
2066     {
2067       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2068
2069       if (arrVal == NULL)
2070         error (_("Bounds unavailable for null array pointer."));
2071       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2072       return value_ind (arrVal);
2073     }
2074   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2075     return decode_constrained_packed_array (arr);
2076   else
2077     return arr;
2078 }
2079
2080 /* If TYPE represents a GNAT array type, return it translated to an
2081    ordinary GDB array type (possibly with BITSIZE fields indicating
2082    packing).  For other types, is the identity.  */
2083
2084 struct type *
2085 ada_coerce_to_simple_array_type (struct type *type)
2086 {
2087   if (ada_is_constrained_packed_array_type (type))
2088     return decode_constrained_packed_array_type (type);
2089
2090   if (ada_is_array_descriptor_type (type))
2091     return ada_check_typedef (desc_data_target_type (type));
2092
2093   return type;
2094 }
2095
2096 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2097
2098 static int
2099 ada_is_packed_array_type  (struct type *type)
2100 {
2101   if (type == NULL)
2102     return 0;
2103   type = desc_base_type (type);
2104   type = ada_check_typedef (type);
2105   return
2106     ada_type_name (type) != NULL
2107     && strstr (ada_type_name (type), "___XP") != NULL;
2108 }
2109
2110 /* Non-zero iff TYPE represents a standard GNAT constrained
2111    packed-array type.  */
2112
2113 int
2114 ada_is_constrained_packed_array_type (struct type *type)
2115 {
2116   return ada_is_packed_array_type (type)
2117     && !ada_is_array_descriptor_type (type);
2118 }
2119
2120 /* Non-zero iff TYPE represents an array descriptor for a
2121    unconstrained packed-array type.  */
2122
2123 static int
2124 ada_is_unconstrained_packed_array_type (struct type *type)
2125 {
2126   return ada_is_packed_array_type (type)
2127     && ada_is_array_descriptor_type (type);
2128 }
2129
2130 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2131    return the size of its elements in bits.  */
2132
2133 static long
2134 decode_packed_array_bitsize (struct type *type)
2135 {
2136   const char *raw_name;
2137   const char *tail;
2138   long bits;
2139
2140   /* Access to arrays implemented as fat pointers are encoded as a typedef
2141      of the fat pointer type.  We need the name of the fat pointer type
2142      to do the decoding, so strip the typedef layer.  */
2143   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2144     type = ada_typedef_target_type (type);
2145
2146   raw_name = ada_type_name (ada_check_typedef (type));
2147   if (!raw_name)
2148     raw_name = ada_type_name (desc_base_type (type));
2149
2150   if (!raw_name)
2151     return 0;
2152
2153   tail = strstr (raw_name, "___XP");
2154   gdb_assert (tail != NULL);
2155
2156   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2157     {
2158       lim_warning
2159         (_("could not understand bit size information on packed array"));
2160       return 0;
2161     }
2162
2163   return bits;
2164 }
2165
2166 /* Given that TYPE is a standard GDB array type with all bounds filled
2167    in, and that the element size of its ultimate scalar constituents
2168    (that is, either its elements, or, if it is an array of arrays, its
2169    elements' elements, etc.) is *ELT_BITS, return an identical type,
2170    but with the bit sizes of its elements (and those of any
2171    constituent arrays) recorded in the BITSIZE components of its
2172    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2173    in bits.
2174
2175    Note that, for arrays whose index type has an XA encoding where
2176    a bound references a record discriminant, getting that discriminant,
2177    and therefore the actual value of that bound, is not possible
2178    because none of the given parameters gives us access to the record.
2179    This function assumes that it is OK in the context where it is being
2180    used to return an array whose bounds are still dynamic and where
2181    the length is arbitrary.  */
2182
2183 static struct type *
2184 constrained_packed_array_type (struct type *type, long *elt_bits)
2185 {
2186   struct type *new_elt_type;
2187   struct type *new_type;
2188   struct type *index_type_desc;
2189   struct type *index_type;
2190   LONGEST low_bound, high_bound;
2191
2192   type = ada_check_typedef (type);
2193   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2194     return type;
2195
2196   index_type_desc = ada_find_parallel_type (type, "___XA");
2197   if (index_type_desc)
2198     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2199                                       NULL);
2200   else
2201     index_type = TYPE_INDEX_TYPE (type);
2202
2203   new_type = alloc_type_copy (type);
2204   new_elt_type =
2205     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2206                                    elt_bits);
2207   create_array_type (new_type, new_elt_type, index_type);
2208   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2209   TYPE_NAME (new_type) = ada_type_name (type);
2210
2211   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2212        && is_dynamic_type (check_typedef (index_type)))
2213       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2214     low_bound = high_bound = 0;
2215   if (high_bound < low_bound)
2216     *elt_bits = TYPE_LENGTH (new_type) = 0;
2217   else
2218     {
2219       *elt_bits *= (high_bound - low_bound + 1);
2220       TYPE_LENGTH (new_type) =
2221         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2222     }
2223
2224   TYPE_FIXED_INSTANCE (new_type) = 1;
2225   return new_type;
2226 }
2227
2228 /* The array type encoded by TYPE, where
2229    ada_is_constrained_packed_array_type (TYPE).  */
2230
2231 static struct type *
2232 decode_constrained_packed_array_type (struct type *type)
2233 {
2234   const char *raw_name = ada_type_name (ada_check_typedef (type));
2235   char *name;
2236   const char *tail;
2237   struct type *shadow_type;
2238   long bits;
2239
2240   if (!raw_name)
2241     raw_name = ada_type_name (desc_base_type (type));
2242
2243   if (!raw_name)
2244     return NULL;
2245
2246   name = (char *) alloca (strlen (raw_name) + 1);
2247   tail = strstr (raw_name, "___XP");
2248   type = desc_base_type (type);
2249
2250   memcpy (name, raw_name, tail - raw_name);
2251   name[tail - raw_name] = '\000';
2252
2253   shadow_type = ada_find_parallel_type_with_name (type, name);
2254
2255   if (shadow_type == NULL)
2256     {
2257       lim_warning (_("could not find bounds information on packed array"));
2258       return NULL;
2259     }
2260   shadow_type = check_typedef (shadow_type);
2261
2262   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2263     {
2264       lim_warning (_("could not understand bounds "
2265                      "information on packed array"));
2266       return NULL;
2267     }
2268
2269   bits = decode_packed_array_bitsize (type);
2270   return constrained_packed_array_type (shadow_type, &bits);
2271 }
2272
2273 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2274    array, returns a simple array that denotes that array.  Its type is a
2275    standard GDB array type except that the BITSIZEs of the array
2276    target types are set to the number of bits in each element, and the
2277    type length is set appropriately.  */
2278
2279 static struct value *
2280 decode_constrained_packed_array (struct value *arr)
2281 {
2282   struct type *type;
2283
2284   /* If our value is a pointer, then dereference it. Likewise if
2285      the value is a reference.  Make sure that this operation does not
2286      cause the target type to be fixed, as this would indirectly cause
2287      this array to be decoded.  The rest of the routine assumes that
2288      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2289      and "value_ind" routines to perform the dereferencing, as opposed
2290      to using "ada_coerce_ref" or "ada_value_ind".  */
2291   arr = coerce_ref (arr);
2292   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2293     arr = value_ind (arr);
2294
2295   type = decode_constrained_packed_array_type (value_type (arr));
2296   if (type == NULL)
2297     {
2298       error (_("can't unpack array"));
2299       return NULL;
2300     }
2301
2302   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2303       && ada_is_modular_type (value_type (arr)))
2304     {
2305        /* This is a (right-justified) modular type representing a packed
2306          array with no wrapper.  In order to interpret the value through
2307          the (left-justified) packed array type we just built, we must
2308          first left-justify it.  */
2309       int bit_size, bit_pos;
2310       ULONGEST mod;
2311
2312       mod = ada_modulus (value_type (arr)) - 1;
2313       bit_size = 0;
2314       while (mod > 0)
2315         {
2316           bit_size += 1;
2317           mod >>= 1;
2318         }
2319       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2320       arr = ada_value_primitive_packed_val (arr, NULL,
2321                                             bit_pos / HOST_CHAR_BIT,
2322                                             bit_pos % HOST_CHAR_BIT,
2323                                             bit_size,
2324                                             type);
2325     }
2326
2327   return coerce_unspec_val_to_type (arr, type);
2328 }
2329
2330
2331 /* The value of the element of packed array ARR at the ARITY indices
2332    given in IND.   ARR must be a simple array.  */
2333
2334 static struct value *
2335 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2336 {
2337   int i;
2338   int bits, elt_off, bit_off;
2339   long elt_total_bit_offset;
2340   struct type *elt_type;
2341   struct value *v;
2342
2343   bits = 0;
2344   elt_total_bit_offset = 0;
2345   elt_type = ada_check_typedef (value_type (arr));
2346   for (i = 0; i < arity; i += 1)
2347     {
2348       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2349           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2350         error
2351           (_("attempt to do packed indexing of "
2352              "something other than a packed array"));
2353       else
2354         {
2355           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2356           LONGEST lowerbound, upperbound;
2357           LONGEST idx;
2358
2359           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2360             {
2361               lim_warning (_("don't know bounds of array"));
2362               lowerbound = upperbound = 0;
2363             }
2364
2365           idx = pos_atr (ind[i]);
2366           if (idx < lowerbound || idx > upperbound)
2367             lim_warning (_("packed array index %ld out of bounds"),
2368                          (long) idx);
2369           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2370           elt_total_bit_offset += (idx - lowerbound) * bits;
2371           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2372         }
2373     }
2374   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2375   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2376
2377   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2378                                       bits, elt_type);
2379   return v;
2380 }
2381
2382 /* Non-zero iff TYPE includes negative integer values.  */
2383
2384 static int
2385 has_negatives (struct type *type)
2386 {
2387   switch (TYPE_CODE (type))
2388     {
2389     default:
2390       return 0;
2391     case TYPE_CODE_INT:
2392       return !TYPE_UNSIGNED (type);
2393     case TYPE_CODE_RANGE:
2394       return TYPE_LOW_BOUND (type) < 0;
2395     }
2396 }
2397
2398 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2399    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2400    the unpacked buffer.
2401
2402    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2403    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2404
2405    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2406    zero otherwise.
2407
2408    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2409
2410    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2411
2412 static void
2413 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2414                           gdb_byte *unpacked, int unpacked_len,
2415                           int is_big_endian, int is_signed_type,
2416                           int is_scalar)
2417 {
2418   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2419   int src_idx;                  /* Index into the source area */
2420   int src_bytes_left;           /* Number of source bytes left to process.  */
2421   int srcBitsLeft;              /* Number of source bits left to move */
2422   int unusedLS;                 /* Number of bits in next significant
2423                                    byte of source that are unused */
2424
2425   int unpacked_idx;             /* Index into the unpacked buffer */
2426   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2427
2428   unsigned long accum;          /* Staging area for bits being transferred */
2429   int accumSize;                /* Number of meaningful bits in accum */
2430   unsigned char sign;
2431
2432   /* Transmit bytes from least to most significant; delta is the direction
2433      the indices move.  */
2434   int delta = is_big_endian ? -1 : 1;
2435
2436   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2437      bits from SRC.  .*/
2438   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2439     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2440            bit_size, unpacked_len);
2441
2442   srcBitsLeft = bit_size;
2443   src_bytes_left = src_len;
2444   unpacked_bytes_left = unpacked_len;
2445   sign = 0;
2446
2447   if (is_big_endian)
2448     {
2449       src_idx = src_len - 1;
2450       if (is_signed_type
2451           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2452         sign = ~0;
2453
2454       unusedLS =
2455         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2456         % HOST_CHAR_BIT;
2457
2458       if (is_scalar)
2459         {
2460           accumSize = 0;
2461           unpacked_idx = unpacked_len - 1;
2462         }
2463       else
2464         {
2465           /* Non-scalar values must be aligned at a byte boundary...  */
2466           accumSize =
2467             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2468           /* ... And are placed at the beginning (most-significant) bytes
2469              of the target.  */
2470           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2471           unpacked_bytes_left = unpacked_idx + 1;
2472         }
2473     }
2474   else
2475     {
2476       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2477
2478       src_idx = unpacked_idx = 0;
2479       unusedLS = bit_offset;
2480       accumSize = 0;
2481
2482       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2483         sign = ~0;
2484     }
2485
2486   accum = 0;
2487   while (src_bytes_left > 0)
2488     {
2489       /* Mask for removing bits of the next source byte that are not
2490          part of the value.  */
2491       unsigned int unusedMSMask =
2492         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2493         1;
2494       /* Sign-extend bits for this byte.  */
2495       unsigned int signMask = sign & ~unusedMSMask;
2496
2497       accum |=
2498         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2499       accumSize += HOST_CHAR_BIT - unusedLS;
2500       if (accumSize >= HOST_CHAR_BIT)
2501         {
2502           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2503           accumSize -= HOST_CHAR_BIT;
2504           accum >>= HOST_CHAR_BIT;
2505           unpacked_bytes_left -= 1;
2506           unpacked_idx += delta;
2507         }
2508       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2509       unusedLS = 0;
2510       src_bytes_left -= 1;
2511       src_idx += delta;
2512     }
2513   while (unpacked_bytes_left > 0)
2514     {
2515       accum |= sign << accumSize;
2516       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2517       accumSize -= HOST_CHAR_BIT;
2518       if (accumSize < 0)
2519         accumSize = 0;
2520       accum >>= HOST_CHAR_BIT;
2521       unpacked_bytes_left -= 1;
2522       unpacked_idx += delta;
2523     }
2524 }
2525
2526 /* Create a new value of type TYPE from the contents of OBJ starting
2527    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2528    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2529    assigning through the result will set the field fetched from.
2530    VALADDR is ignored unless OBJ is NULL, in which case,
2531    VALADDR+OFFSET must address the start of storage containing the 
2532    packed value.  The value returned  in this case is never an lval.
2533    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2534
2535 struct value *
2536 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2537                                 long offset, int bit_offset, int bit_size,
2538                                 struct type *type)
2539 {
2540   struct value *v;
2541   const gdb_byte *src;                /* First byte containing data to unpack */
2542   gdb_byte *unpacked;
2543   const int is_scalar = is_scalar_type (type);
2544   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2545   gdb::byte_vector staging;
2546
2547   type = ada_check_typedef (type);
2548
2549   if (obj == NULL)
2550     src = valaddr + offset;
2551   else
2552     src = value_contents (obj) + offset;
2553
2554   if (is_dynamic_type (type))
2555     {
2556       /* The length of TYPE might by dynamic, so we need to resolve
2557          TYPE in order to know its actual size, which we then use
2558          to create the contents buffer of the value we return.
2559          The difficulty is that the data containing our object is
2560          packed, and therefore maybe not at a byte boundary.  So, what
2561          we do, is unpack the data into a byte-aligned buffer, and then
2562          use that buffer as our object's value for resolving the type.  */
2563       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2564       staging.resize (staging_len);
2565
2566       ada_unpack_from_contents (src, bit_offset, bit_size,
2567                                 staging.data (), staging.size (),
2568                                 is_big_endian, has_negatives (type),
2569                                 is_scalar);
2570       type = resolve_dynamic_type (type, staging.data (), 0);
2571       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2572         {
2573           /* This happens when the length of the object is dynamic,
2574              and is actually smaller than the space reserved for it.
2575              For instance, in an array of variant records, the bit_size
2576              we're given is the array stride, which is constant and
2577              normally equal to the maximum size of its element.
2578              But, in reality, each element only actually spans a portion
2579              of that stride.  */
2580           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2581         }
2582     }
2583
2584   if (obj == NULL)
2585     {
2586       v = allocate_value (type);
2587       src = valaddr + offset;
2588     }
2589   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2590     {
2591       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2592       gdb_byte *buf;
2593
2594       v = value_at (type, value_address (obj) + offset);
2595       buf = (gdb_byte *) alloca (src_len);
2596       read_memory (value_address (v), buf, src_len);
2597       src = buf;
2598     }
2599   else
2600     {
2601       v = allocate_value (type);
2602       src = value_contents (obj) + offset;
2603     }
2604
2605   if (obj != NULL)
2606     {
2607       long new_offset = offset;
2608
2609       set_value_component_location (v, obj);
2610       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2611       set_value_bitsize (v, bit_size);
2612       if (value_bitpos (v) >= HOST_CHAR_BIT)
2613         {
2614           ++new_offset;
2615           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2616         }
2617       set_value_offset (v, new_offset);
2618
2619       /* Also set the parent value.  This is needed when trying to
2620          assign a new value (in inferior memory).  */
2621       set_value_parent (v, obj);
2622     }
2623   else
2624     set_value_bitsize (v, bit_size);
2625   unpacked = value_contents_writeable (v);
2626
2627   if (bit_size == 0)
2628     {
2629       memset (unpacked, 0, TYPE_LENGTH (type));
2630       return v;
2631     }
2632
2633   if (staging.size () == TYPE_LENGTH (type))
2634     {
2635       /* Small short-cut: If we've unpacked the data into a buffer
2636          of the same size as TYPE's length, then we can reuse that,
2637          instead of doing the unpacking again.  */
2638       memcpy (unpacked, staging.data (), staging.size ());
2639     }
2640   else
2641     ada_unpack_from_contents (src, bit_offset, bit_size,
2642                               unpacked, TYPE_LENGTH (type),
2643                               is_big_endian, has_negatives (type), is_scalar);
2644
2645   return v;
2646 }
2647
2648 /* Store the contents of FROMVAL into the location of TOVAL.
2649    Return a new value with the location of TOVAL and contents of
2650    FROMVAL.   Handles assignment into packed fields that have
2651    floating-point or non-scalar types.  */
2652
2653 static struct value *
2654 ada_value_assign (struct value *toval, struct value *fromval)
2655 {
2656   struct type *type = value_type (toval);
2657   int bits = value_bitsize (toval);
2658
2659   toval = ada_coerce_ref (toval);
2660   fromval = ada_coerce_ref (fromval);
2661
2662   if (ada_is_direct_array_type (value_type (toval)))
2663     toval = ada_coerce_to_simple_array (toval);
2664   if (ada_is_direct_array_type (value_type (fromval)))
2665     fromval = ada_coerce_to_simple_array (fromval);
2666
2667   if (!deprecated_value_modifiable (toval))
2668     error (_("Left operand of assignment is not a modifiable lvalue."));
2669
2670   if (VALUE_LVAL (toval) == lval_memory
2671       && bits > 0
2672       && (TYPE_CODE (type) == TYPE_CODE_FLT
2673           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2674     {
2675       int len = (value_bitpos (toval)
2676                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2677       int from_size;
2678       gdb_byte *buffer = (gdb_byte *) alloca (len);
2679       struct value *val;
2680       CORE_ADDR to_addr = value_address (toval);
2681
2682       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2683         fromval = value_cast (type, fromval);
2684
2685       read_memory (to_addr, buffer, len);
2686       from_size = value_bitsize (fromval);
2687       if (from_size == 0)
2688         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2689
2690       const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2691       ULONGEST from_offset = 0;
2692       if (is_big_endian && is_scalar_type (value_type (fromval)))
2693         from_offset = from_size - bits;
2694       copy_bitwise (buffer, value_bitpos (toval),
2695                     value_contents (fromval), from_offset,
2696                     bits, is_big_endian);
2697       write_memory_with_notification (to_addr, buffer, len);
2698
2699       val = value_copy (toval);
2700       memcpy (value_contents_raw (val), value_contents (fromval),
2701               TYPE_LENGTH (type));
2702       deprecated_set_value_type (val, type);
2703
2704       return val;
2705     }
2706
2707   return value_assign (toval, fromval);
2708 }
2709
2710
2711 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2712    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2713    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2714    COMPONENT, and not the inferior's memory.  The current contents
2715    of COMPONENT are ignored.
2716
2717    Although not part of the initial design, this function also works
2718    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2719    had a null address, and COMPONENT had an address which is equal to
2720    its offset inside CONTAINER.  */
2721
2722 static void
2723 value_assign_to_component (struct value *container, struct value *component,
2724                            struct value *val)
2725 {
2726   LONGEST offset_in_container =
2727     (LONGEST)  (value_address (component) - value_address (container));
2728   int bit_offset_in_container =
2729     value_bitpos (component) - value_bitpos (container);
2730   int bits;
2731
2732   val = value_cast (value_type (component), val);
2733
2734   if (value_bitsize (component) == 0)
2735     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2736   else
2737     bits = value_bitsize (component);
2738
2739   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2740     {
2741       int src_offset;
2742
2743       if (is_scalar_type (check_typedef (value_type (component))))
2744         src_offset
2745           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2746       else
2747         src_offset = 0;
2748       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2749                     value_bitpos (container) + bit_offset_in_container,
2750                     value_contents (val), src_offset, bits, 1);
2751     }
2752   else
2753     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2754                   value_bitpos (container) + bit_offset_in_container,
2755                   value_contents (val), 0, bits, 0);
2756 }
2757
2758 /* Determine if TYPE is an access to an unconstrained array.  */
2759
2760 bool
2761 ada_is_access_to_unconstrained_array (struct type *type)
2762 {
2763   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2764           && is_thick_pntr (ada_typedef_target_type (type)));
2765 }
2766
2767 /* The value of the element of array ARR at the ARITY indices given in IND.
2768    ARR may be either a simple array, GNAT array descriptor, or pointer
2769    thereto.  */
2770
2771 struct value *
2772 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2773 {
2774   int k;
2775   struct value *elt;
2776   struct type *elt_type;
2777
2778   elt = ada_coerce_to_simple_array (arr);
2779
2780   elt_type = ada_check_typedef (value_type (elt));
2781   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2782       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2783     return value_subscript_packed (elt, arity, ind);
2784
2785   for (k = 0; k < arity; k += 1)
2786     {
2787       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2788
2789       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2790         error (_("too many subscripts (%d expected)"), k);
2791
2792       elt = value_subscript (elt, pos_atr (ind[k]));
2793
2794       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2795           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2796         {
2797           /* The element is a typedef to an unconstrained array,
2798              except that the value_subscript call stripped the
2799              typedef layer.  The typedef layer is GNAT's way to
2800              specify that the element is, at the source level, an
2801              access to the unconstrained array, rather than the
2802              unconstrained array.  So, we need to restore that
2803              typedef layer, which we can do by forcing the element's
2804              type back to its original type. Otherwise, the returned
2805              value is going to be printed as the array, rather
2806              than as an access.  Another symptom of the same issue
2807              would be that an expression trying to dereference the
2808              element would also be improperly rejected.  */
2809           deprecated_set_value_type (elt, saved_elt_type);
2810         }
2811
2812       elt_type = ada_check_typedef (value_type (elt));
2813     }
2814
2815   return elt;
2816 }
2817
2818 /* Assuming ARR is a pointer to a GDB array, the value of the element
2819    of *ARR at the ARITY indices given in IND.
2820    Does not read the entire array into memory.
2821
2822    Note: Unlike what one would expect, this function is used instead of
2823    ada_value_subscript for basically all non-packed array types.  The reason
2824    for this is that a side effect of doing our own pointer arithmetics instead
2825    of relying on value_subscript is that there is no implicit typedef peeling.
2826    This is important for arrays of array accesses, where it allows us to
2827    preserve the fact that the array's element is an array access, where the
2828    access part os encoded in a typedef layer.  */
2829
2830 static struct value *
2831 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2832 {
2833   int k;
2834   struct value *array_ind = ada_value_ind (arr);
2835   struct type *type
2836     = check_typedef (value_enclosing_type (array_ind));
2837
2838   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2839       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2840     return value_subscript_packed (array_ind, arity, ind);
2841
2842   for (k = 0; k < arity; k += 1)
2843     {
2844       LONGEST lwb, upb;
2845       struct value *lwb_value;
2846
2847       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2848         error (_("too many subscripts (%d expected)"), k);
2849       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2850                         value_copy (arr));
2851       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2852       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2853       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2854       type = TYPE_TARGET_TYPE (type);
2855     }
2856
2857   return value_ind (arr);
2858 }
2859
2860 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2861    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2862    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2863    this array is LOW, as per Ada rules.  */
2864 static struct value *
2865 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2866                           int low, int high)
2867 {
2868   struct type *type0 = ada_check_typedef (type);
2869   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2870   struct type *index_type
2871     = create_static_range_type (NULL, base_index_type, low, high);
2872   struct type *slice_type = create_array_type_with_stride
2873                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2874                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2875                                TYPE_FIELD_BITSIZE (type0, 0));
2876   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2877   LONGEST base_low_pos, low_pos;
2878   CORE_ADDR base;
2879
2880   if (!discrete_position (base_index_type, low, &low_pos)
2881       || !discrete_position (base_index_type, base_low, &base_low_pos))
2882     {
2883       warning (_("unable to get positions in slice, use bounds instead"));
2884       low_pos = low;
2885       base_low_pos = base_low;
2886     }
2887
2888   base = value_as_address (array_ptr)
2889     + ((low_pos - base_low_pos)
2890        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2891   return value_at_lazy (slice_type, base);
2892 }
2893
2894
2895 static struct value *
2896 ada_value_slice (struct value *array, int low, int high)
2897 {
2898   struct type *type = ada_check_typedef (value_type (array));
2899   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2900   struct type *index_type
2901     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2902   struct type *slice_type = create_array_type_with_stride
2903                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2904                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2905                                TYPE_FIELD_BITSIZE (type, 0));
2906   LONGEST low_pos, high_pos;
2907
2908   if (!discrete_position (base_index_type, low, &low_pos)
2909       || !discrete_position (base_index_type, high, &high_pos))
2910     {
2911       warning (_("unable to get positions in slice, use bounds instead"));
2912       low_pos = low;
2913       high_pos = high;
2914     }
2915
2916   return value_cast (slice_type,
2917                      value_slice (array, low, high_pos - low_pos + 1));
2918 }
2919
2920 /* If type is a record type in the form of a standard GNAT array
2921    descriptor, returns the number of dimensions for type.  If arr is a
2922    simple array, returns the number of "array of"s that prefix its
2923    type designation.  Otherwise, returns 0.  */
2924
2925 int
2926 ada_array_arity (struct type *type)
2927 {
2928   int arity;
2929
2930   if (type == NULL)
2931     return 0;
2932
2933   type = desc_base_type (type);
2934
2935   arity = 0;
2936   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2937     return desc_arity (desc_bounds_type (type));
2938   else
2939     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2940       {
2941         arity += 1;
2942         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2943       }
2944
2945   return arity;
2946 }
2947
2948 /* If TYPE is a record type in the form of a standard GNAT array
2949    descriptor or a simple array type, returns the element type for
2950    TYPE after indexing by NINDICES indices, or by all indices if
2951    NINDICES is -1.  Otherwise, returns NULL.  */
2952
2953 struct type *
2954 ada_array_element_type (struct type *type, int nindices)
2955 {
2956   type = desc_base_type (type);
2957
2958   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2959     {
2960       int k;
2961       struct type *p_array_type;
2962
2963       p_array_type = desc_data_target_type (type);
2964
2965       k = ada_array_arity (type);
2966       if (k == 0)
2967         return NULL;
2968
2969       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2970       if (nindices >= 0 && k > nindices)
2971         k = nindices;
2972       while (k > 0 && p_array_type != NULL)
2973         {
2974           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2975           k -= 1;
2976         }
2977       return p_array_type;
2978     }
2979   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2980     {
2981       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2982         {
2983           type = TYPE_TARGET_TYPE (type);
2984           nindices -= 1;
2985         }
2986       return type;
2987     }
2988
2989   return NULL;
2990 }
2991
2992 /* The type of nth index in arrays of given type (n numbering from 1).
2993    Does not examine memory.  Throws an error if N is invalid or TYPE
2994    is not an array type.  NAME is the name of the Ada attribute being
2995    evaluated ('range, 'first, 'last, or 'length); it is used in building
2996    the error message.  */
2997
2998 static struct type *
2999 ada_index_type (struct type *type, int n, const char *name)
3000 {
3001   struct type *result_type;
3002
3003   type = desc_base_type (type);
3004
3005   if (n < 0 || n > ada_array_arity (type))
3006     error (_("invalid dimension number to '%s"), name);
3007
3008   if (ada_is_simple_array_type (type))
3009     {
3010       int i;
3011
3012       for (i = 1; i < n; i += 1)
3013         type = TYPE_TARGET_TYPE (type);
3014       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3015       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3016          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3017          perhaps stabsread.c would make more sense.  */
3018       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3019         result_type = NULL;
3020     }
3021   else
3022     {
3023       result_type = desc_index_type (desc_bounds_type (type), n);
3024       if (result_type == NULL)
3025         error (_("attempt to take bound of something that is not an array"));
3026     }
3027
3028   return result_type;
3029 }
3030
3031 /* Given that arr is an array type, returns the lower bound of the
3032    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3033    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3034    array-descriptor type.  It works for other arrays with bounds supplied
3035    by run-time quantities other than discriminants.  */
3036
3037 static LONGEST
3038 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3039 {
3040   struct type *type, *index_type_desc, *index_type;
3041   int i;
3042
3043   gdb_assert (which == 0 || which == 1);
3044
3045   if (ada_is_constrained_packed_array_type (arr_type))
3046     arr_type = decode_constrained_packed_array_type (arr_type);
3047
3048   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3049     return (LONGEST) - which;
3050
3051   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3052     type = TYPE_TARGET_TYPE (arr_type);
3053   else
3054     type = arr_type;
3055
3056   if (TYPE_FIXED_INSTANCE (type))
3057     {
3058       /* The array has already been fixed, so we do not need to
3059          check the parallel ___XA type again.  That encoding has
3060          already been applied, so ignore it now.  */
3061       index_type_desc = NULL;
3062     }
3063   else
3064     {
3065       index_type_desc = ada_find_parallel_type (type, "___XA");
3066       ada_fixup_array_indexes_type (index_type_desc);
3067     }
3068
3069   if (index_type_desc != NULL)
3070     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3071                                       NULL);
3072   else
3073     {
3074       struct type *elt_type = check_typedef (type);
3075
3076       for (i = 1; i < n; i++)
3077         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3078
3079       index_type = TYPE_INDEX_TYPE (elt_type);
3080     }
3081
3082   return
3083     (LONGEST) (which == 0
3084                ? ada_discrete_type_low_bound (index_type)
3085                : ada_discrete_type_high_bound (index_type));
3086 }
3087
3088 /* Given that arr is an array value, returns the lower bound of the
3089    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3090    WHICH is 1.  This routine will also work for arrays with bounds
3091    supplied by run-time quantities other than discriminants.  */
3092
3093 static LONGEST
3094 ada_array_bound (struct value *arr, int n, int which)
3095 {
3096   struct type *arr_type;
3097
3098   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3099     arr = value_ind (arr);
3100   arr_type = value_enclosing_type (arr);
3101
3102   if (ada_is_constrained_packed_array_type (arr_type))
3103     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3104   else if (ada_is_simple_array_type (arr_type))
3105     return ada_array_bound_from_type (arr_type, n, which);
3106   else
3107     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3108 }
3109
3110 /* Given that arr is an array value, returns the length of the
3111    nth index.  This routine will also work for arrays with bounds
3112    supplied by run-time quantities other than discriminants.
3113    Does not work for arrays indexed by enumeration types with representation
3114    clauses at the moment.  */
3115
3116 static LONGEST
3117 ada_array_length (struct value *arr, int n)
3118 {
3119   struct type *arr_type, *index_type;
3120   int low, high;
3121
3122   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3123     arr = value_ind (arr);
3124   arr_type = value_enclosing_type (arr);
3125
3126   if (ada_is_constrained_packed_array_type (arr_type))
3127     return ada_array_length (decode_constrained_packed_array (arr), n);
3128
3129   if (ada_is_simple_array_type (arr_type))
3130     {
3131       low = ada_array_bound_from_type (arr_type, n, 0);
3132       high = ada_array_bound_from_type (arr_type, n, 1);
3133     }
3134   else
3135     {
3136       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3137       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3138     }
3139
3140   arr_type = check_typedef (arr_type);
3141   index_type = ada_index_type (arr_type, n, "length");
3142   if (index_type != NULL)
3143     {
3144       struct type *base_type;
3145       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3146         base_type = TYPE_TARGET_TYPE (index_type);
3147       else
3148         base_type = index_type;
3149
3150       low = pos_atr (value_from_longest (base_type, low));
3151       high = pos_atr (value_from_longest (base_type, high));
3152     }
3153   return high - low + 1;
3154 }
3155
3156 /* An array whose type is that of ARR_TYPE (an array type), with
3157    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3158    less than LOW, then LOW-1 is used.  */
3159
3160 static struct value *
3161 empty_array (struct type *arr_type, int low, int high)
3162 {
3163   struct type *arr_type0 = ada_check_typedef (arr_type);
3164   struct type *index_type
3165     = create_static_range_type
3166         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3167          high < low ? low - 1 : high);
3168   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3169
3170   return allocate_value (create_array_type (NULL, elt_type, index_type));
3171 }
3172 \f
3173
3174                                 /* Name resolution */
3175
3176 /* The "decoded" name for the user-definable Ada operator corresponding
3177    to OP.  */
3178
3179 static const char *
3180 ada_decoded_op_name (enum exp_opcode op)
3181 {
3182   int i;
3183
3184   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3185     {
3186       if (ada_opname_table[i].op == op)
3187         return ada_opname_table[i].decoded;
3188     }
3189   error (_("Could not find operator name for opcode"));
3190 }
3191
3192
3193 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3194    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3195    undefined namespace) and converts operators that are
3196    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3197    non-null, it provides a preferred result type [at the moment, only
3198    type void has any effect---causing procedures to be preferred over
3199    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3200    return type is preferred.  May change (expand) *EXP.  */
3201
3202 static void
3203 resolve (expression_up *expp, int void_context_p, int parse_completion,
3204          innermost_block_tracker *tracker)
3205 {
3206   struct type *context_type = NULL;
3207   int pc = 0;
3208
3209   if (void_context_p)
3210     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3211
3212   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3213 }
3214
3215 /* Resolve the operator of the subexpression beginning at
3216    position *POS of *EXPP.  "Resolving" consists of replacing
3217    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3218    with their resolutions, replacing built-in operators with
3219    function calls to user-defined operators, where appropriate, and,
3220    when DEPROCEDURE_P is non-zero, converting function-valued variables
3221    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3222    are as in ada_resolve, above.  */
3223
3224 static struct value *
3225 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3226                 struct type *context_type, int parse_completion,
3227                 innermost_block_tracker *tracker)
3228 {
3229   int pc = *pos;
3230   int i;
3231   struct expression *exp;       /* Convenience: == *expp.  */
3232   enum exp_opcode op = (*expp)->elts[pc].opcode;
3233   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3234   int nargs;                    /* Number of operands.  */
3235   int oplen;
3236
3237   argvec = NULL;
3238   nargs = 0;
3239   exp = expp->get ();
3240
3241   /* Pass one: resolve operands, saving their types and updating *pos,
3242      if needed.  */
3243   switch (op)
3244     {
3245     case OP_FUNCALL:
3246       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3247           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3248         *pos += 7;
3249       else
3250         {
3251           *pos += 3;
3252           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3253         }
3254       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3255       break;
3256
3257     case UNOP_ADDR:
3258       *pos += 1;
3259       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3260       break;
3261
3262     case UNOP_QUAL:
3263       *pos += 3;
3264       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3265                       parse_completion, tracker);
3266       break;
3267
3268     case OP_ATR_MODULUS:
3269     case OP_ATR_SIZE:
3270     case OP_ATR_TAG:
3271     case OP_ATR_FIRST:
3272     case OP_ATR_LAST:
3273     case OP_ATR_LENGTH:
3274     case OP_ATR_POS:
3275     case OP_ATR_VAL:
3276     case OP_ATR_MIN:
3277     case OP_ATR_MAX:
3278     case TERNOP_IN_RANGE:
3279     case BINOP_IN_BOUNDS:
3280     case UNOP_IN_RANGE:
3281     case OP_AGGREGATE:
3282     case OP_OTHERS:
3283     case OP_CHOICES:
3284     case OP_POSITIONAL:
3285     case OP_DISCRETE_RANGE:
3286     case OP_NAME:
3287       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3288       *pos += oplen;
3289       break;
3290
3291     case BINOP_ASSIGN:
3292       {
3293         struct value *arg1;
3294
3295         *pos += 1;
3296         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3297         if (arg1 == NULL)
3298           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3299         else
3300           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3301                           tracker);
3302         break;
3303       }
3304
3305     case UNOP_CAST:
3306       *pos += 3;
3307       nargs = 1;
3308       break;
3309
3310     case BINOP_ADD:
3311     case BINOP_SUB:
3312     case BINOP_MUL:
3313     case BINOP_DIV:
3314     case BINOP_REM:
3315     case BINOP_MOD:
3316     case BINOP_EXP:
3317     case BINOP_CONCAT:
3318     case BINOP_LOGICAL_AND:
3319     case BINOP_LOGICAL_OR:
3320     case BINOP_BITWISE_AND:
3321     case BINOP_BITWISE_IOR:
3322     case BINOP_BITWISE_XOR:
3323
3324     case BINOP_EQUAL:
3325     case BINOP_NOTEQUAL:
3326     case BINOP_LESS:
3327     case BINOP_GTR:
3328     case BINOP_LEQ:
3329     case BINOP_GEQ:
3330
3331     case BINOP_REPEAT:
3332     case BINOP_SUBSCRIPT:
3333     case BINOP_COMMA:
3334       *pos += 1;
3335       nargs = 2;
3336       break;
3337
3338     case UNOP_NEG:
3339     case UNOP_PLUS:
3340     case UNOP_LOGICAL_NOT:
3341     case UNOP_ABS:
3342     case UNOP_IND:
3343       *pos += 1;
3344       nargs = 1;
3345       break;
3346
3347     case OP_LONG:
3348     case OP_FLOAT:
3349     case OP_VAR_VALUE:
3350     case OP_VAR_MSYM_VALUE:
3351       *pos += 4;
3352       break;
3353
3354     case OP_TYPE:
3355     case OP_BOOL:
3356     case OP_LAST:
3357     case OP_INTERNALVAR:
3358       *pos += 3;
3359       break;
3360
3361     case UNOP_MEMVAL:
3362       *pos += 3;
3363       nargs = 1;
3364       break;
3365
3366     case OP_REGISTER:
3367       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3368       break;
3369
3370     case STRUCTOP_STRUCT:
3371       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3372       nargs = 1;
3373       break;
3374
3375     case TERNOP_SLICE:
3376       *pos += 1;
3377       nargs = 3;
3378       break;
3379
3380     case OP_STRING:
3381       break;
3382
3383     default:
3384       error (_("Unexpected operator during name resolution"));
3385     }
3386
3387   argvec = XALLOCAVEC (struct value *, nargs + 1);
3388   for (i = 0; i < nargs; i += 1)
3389     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3390                                 tracker);
3391   argvec[i] = NULL;
3392   exp = expp->get ();
3393
3394   /* Pass two: perform any resolution on principal operator.  */
3395   switch (op)
3396     {
3397     default:
3398       break;
3399
3400     case OP_VAR_VALUE:
3401       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3402         {
3403           std::vector<struct block_symbol> candidates;
3404           int n_candidates;
3405
3406           n_candidates =
3407             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3408                                     (exp->elts[pc + 2].symbol),
3409                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3410                                     &candidates);
3411
3412           if (n_candidates > 1)
3413             {
3414               /* Types tend to get re-introduced locally, so if there
3415                  are any local symbols that are not types, first filter
3416                  out all types.  */
3417               int j;
3418               for (j = 0; j < n_candidates; j += 1)
3419                 switch (SYMBOL_CLASS (candidates[j].symbol))
3420                   {
3421                   case LOC_REGISTER:
3422                   case LOC_ARG:
3423                   case LOC_REF_ARG:
3424                   case LOC_REGPARM_ADDR:
3425                   case LOC_LOCAL:
3426                   case LOC_COMPUTED:
3427                     goto FoundNonType;
3428                   default:
3429                     break;
3430                   }
3431             FoundNonType:
3432               if (j < n_candidates)
3433                 {
3434                   j = 0;
3435                   while (j < n_candidates)
3436                     {
3437                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3438                         {
3439                           candidates[j] = candidates[n_candidates - 1];
3440                           n_candidates -= 1;
3441                         }
3442                       else
3443                         j += 1;
3444                     }
3445                 }
3446             }
3447
3448           if (n_candidates == 0)
3449             error (_("No definition found for %s"),
3450                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3451           else if (n_candidates == 1)
3452             i = 0;
3453           else if (deprocedure_p
3454                    && !is_nonfunction (candidates.data (), n_candidates))
3455             {
3456               i = ada_resolve_function
3457                 (candidates.data (), n_candidates, NULL, 0,
3458                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3459                  context_type, parse_completion);
3460               if (i < 0)
3461                 error (_("Could not find a match for %s"),
3462                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3463             }
3464           else
3465             {
3466               printf_filtered (_("Multiple matches for %s\n"),
3467                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3468               user_select_syms (candidates.data (), n_candidates, 1);
3469               i = 0;
3470             }
3471
3472           exp->elts[pc + 1].block = candidates[i].block;
3473           exp->elts[pc + 2].symbol = candidates[i].symbol;
3474           tracker->update (candidates[i]);
3475         }
3476
3477       if (deprocedure_p
3478           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3479               == TYPE_CODE_FUNC))
3480         {
3481           replace_operator_with_call (expp, pc, 0, 4,
3482                                       exp->elts[pc + 2].symbol,
3483                                       exp->elts[pc + 1].block);
3484           exp = expp->get ();
3485         }
3486       break;
3487
3488     case OP_FUNCALL:
3489       {
3490         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3491             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3492           {
3493             std::vector<struct block_symbol> candidates;
3494             int n_candidates;
3495
3496             n_candidates =
3497               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3498                                       (exp->elts[pc + 5].symbol),
3499                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3500                                       &candidates);
3501
3502             if (n_candidates == 1)
3503               i = 0;
3504             else
3505               {
3506                 i = ada_resolve_function
3507                   (candidates.data (), n_candidates,
3508                    argvec, nargs,
3509                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3510                    context_type, parse_completion);
3511                 if (i < 0)
3512                   error (_("Could not find a match for %s"),
3513                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3514               }
3515
3516             exp->elts[pc + 4].block = candidates[i].block;
3517             exp->elts[pc + 5].symbol = candidates[i].symbol;
3518             tracker->update (candidates[i]);
3519           }
3520       }
3521       break;
3522     case BINOP_ADD:
3523     case BINOP_SUB:
3524     case BINOP_MUL:
3525     case BINOP_DIV:
3526     case BINOP_REM:
3527     case BINOP_MOD:
3528     case BINOP_CONCAT:
3529     case BINOP_BITWISE_AND:
3530     case BINOP_BITWISE_IOR:
3531     case BINOP_BITWISE_XOR:
3532     case BINOP_EQUAL:
3533     case BINOP_NOTEQUAL:
3534     case BINOP_LESS:
3535     case BINOP_GTR:
3536     case BINOP_LEQ:
3537     case BINOP_GEQ:
3538     case BINOP_EXP:
3539     case UNOP_NEG:
3540     case UNOP_PLUS:
3541     case UNOP_LOGICAL_NOT:
3542     case UNOP_ABS:
3543       if (possible_user_operator_p (op, argvec))
3544         {
3545           std::vector<struct block_symbol> candidates;
3546           int n_candidates;
3547
3548           n_candidates =
3549             ada_lookup_symbol_list (ada_decoded_op_name (op),
3550                                     NULL, VAR_DOMAIN,
3551                                     &candidates);
3552
3553           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3554                                     nargs, ada_decoded_op_name (op), NULL,
3555                                     parse_completion);
3556           if (i < 0)
3557             break;
3558
3559           replace_operator_with_call (expp, pc, nargs, 1,
3560                                       candidates[i].symbol,
3561                                       candidates[i].block);
3562           exp = expp->get ();
3563         }
3564       break;
3565
3566     case OP_TYPE:
3567     case OP_REGISTER:
3568       return NULL;
3569     }
3570
3571   *pos = pc;
3572   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3573     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3574                                     exp->elts[pc + 1].objfile,
3575                                     exp->elts[pc + 2].msymbol);
3576   else
3577     return evaluate_subexp_type (exp, pos);
3578 }
3579
3580 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3581    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3582    a non-pointer.  */
3583 /* The term "match" here is rather loose.  The match is heuristic and
3584    liberal.  */
3585
3586 static int
3587 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3588 {
3589   ftype = ada_check_typedef (ftype);
3590   atype = ada_check_typedef (atype);
3591
3592   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3593     ftype = TYPE_TARGET_TYPE (ftype);
3594   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3595     atype = TYPE_TARGET_TYPE (atype);
3596
3597   switch (TYPE_CODE (ftype))
3598     {
3599     default:
3600       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3601     case TYPE_CODE_PTR:
3602       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3603         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3604                                TYPE_TARGET_TYPE (atype), 0);
3605       else
3606         return (may_deref
3607                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3608     case TYPE_CODE_INT:
3609     case TYPE_CODE_ENUM:
3610     case TYPE_CODE_RANGE:
3611       switch (TYPE_CODE (atype))
3612         {
3613         case TYPE_CODE_INT:
3614         case TYPE_CODE_ENUM:
3615         case TYPE_CODE_RANGE:
3616           return 1;
3617         default:
3618           return 0;
3619         }
3620
3621     case TYPE_CODE_ARRAY:
3622       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3623               || ada_is_array_descriptor_type (atype));
3624
3625     case TYPE_CODE_STRUCT:
3626       if (ada_is_array_descriptor_type (ftype))
3627         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3628                 || ada_is_array_descriptor_type (atype));
3629       else
3630         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3631                 && !ada_is_array_descriptor_type (atype));
3632
3633     case TYPE_CODE_UNION:
3634     case TYPE_CODE_FLT:
3635       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3636     }
3637 }
3638
3639 /* Return non-zero if the formals of FUNC "sufficiently match" the
3640    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3641    may also be an enumeral, in which case it is treated as a 0-
3642    argument function.  */
3643
3644 static int
3645 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3646 {
3647   int i;
3648   struct type *func_type = SYMBOL_TYPE (func);
3649
3650   if (SYMBOL_CLASS (func) == LOC_CONST
3651       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3652     return (n_actuals == 0);
3653   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3654     return 0;
3655
3656   if (TYPE_NFIELDS (func_type) != n_actuals)
3657     return 0;
3658
3659   for (i = 0; i < n_actuals; i += 1)
3660     {
3661       if (actuals[i] == NULL)
3662         return 0;
3663       else
3664         {
3665           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3666                                                                    i));
3667           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3668
3669           if (!ada_type_match (ftype, atype, 1))
3670             return 0;
3671         }
3672     }
3673   return 1;
3674 }
3675
3676 /* False iff function type FUNC_TYPE definitely does not produce a value
3677    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3678    FUNC_TYPE is not a valid function type with a non-null return type
3679    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3680
3681 static int
3682 return_match (struct type *func_type, struct type *context_type)
3683 {
3684   struct type *return_type;
3685
3686   if (func_type == NULL)
3687     return 1;
3688
3689   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3690     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3691   else
3692     return_type = get_base_type (func_type);
3693   if (return_type == NULL)
3694     return 1;
3695
3696   context_type = get_base_type (context_type);
3697
3698   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3699     return context_type == NULL || return_type == context_type;
3700   else if (context_type == NULL)
3701     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3702   else
3703     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3704 }
3705
3706
3707 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3708    function (if any) that matches the types of the NARGS arguments in
3709    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3710    that returns that type, then eliminate matches that don't.  If
3711    CONTEXT_TYPE is void and there is at least one match that does not
3712    return void, eliminate all matches that do.
3713
3714    Asks the user if there is more than one match remaining.  Returns -1
3715    if there is no such symbol or none is selected.  NAME is used
3716    solely for messages.  May re-arrange and modify SYMS in
3717    the process; the index returned is for the modified vector.  */
3718
3719 static int
3720 ada_resolve_function (struct block_symbol syms[],
3721                       int nsyms, struct value **args, int nargs,
3722                       const char *name, struct type *context_type,
3723                       int parse_completion)
3724 {
3725   int fallback;
3726   int k;
3727   int m;                        /* Number of hits */
3728
3729   m = 0;
3730   /* In the first pass of the loop, we only accept functions matching
3731      context_type.  If none are found, we add a second pass of the loop
3732      where every function is accepted.  */
3733   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3734     {
3735       for (k = 0; k < nsyms; k += 1)
3736         {
3737           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3738
3739           if (ada_args_match (syms[k].symbol, args, nargs)
3740               && (fallback || return_match (type, context_type)))
3741             {
3742               syms[m] = syms[k];
3743               m += 1;
3744             }
3745         }
3746     }
3747
3748   /* If we got multiple matches, ask the user which one to use.  Don't do this
3749      interactive thing during completion, though, as the purpose of the
3750      completion is providing a list of all possible matches.  Prompting the
3751      user to filter it down would be completely unexpected in this case.  */
3752   if (m == 0)
3753     return -1;
3754   else if (m > 1 && !parse_completion)
3755     {
3756       printf_filtered (_("Multiple matches for %s\n"), name);
3757       user_select_syms (syms, m, 1);
3758       return 0;
3759     }
3760   return 0;
3761 }
3762
3763 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3764    in a listing of choices during disambiguation (see sort_choices, below).
3765    The idea is that overloadings of a subprogram name from the
3766    same package should sort in their source order.  We settle for ordering
3767    such symbols by their trailing number (__N  or $N).  */
3768
3769 static int
3770 encoded_ordered_before (const char *N0, const char *N1)
3771 {
3772   if (N1 == NULL)
3773     return 0;
3774   else if (N0 == NULL)
3775     return 1;
3776   else
3777     {
3778       int k0, k1;
3779
3780       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3781         ;
3782       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3783         ;
3784       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3785           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3786         {
3787           int n0, n1;
3788
3789           n0 = k0;
3790           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3791             n0 -= 1;
3792           n1 = k1;
3793           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3794             n1 -= 1;
3795           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3796             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3797         }
3798       return (strcmp (N0, N1) < 0);
3799     }
3800 }
3801
3802 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3803    encoded names.  */
3804
3805 static void
3806 sort_choices (struct block_symbol syms[], int nsyms)
3807 {
3808   int i;
3809
3810   for (i = 1; i < nsyms; i += 1)
3811     {
3812       struct block_symbol sym = syms[i];
3813       int j;
3814
3815       for (j = i - 1; j >= 0; j -= 1)
3816         {
3817           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3818                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3819             break;
3820           syms[j + 1] = syms[j];
3821         }
3822       syms[j + 1] = sym;
3823     }
3824 }
3825
3826 /* Whether GDB should display formals and return types for functions in the
3827    overloads selection menu.  */
3828 static int print_signatures = 1;
3829
3830 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3831    all but functions, the signature is just the name of the symbol.  For
3832    functions, this is the name of the function, the list of types for formals
3833    and the return type (if any).  */
3834
3835 static void
3836 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3837                             const struct type_print_options *flags)
3838 {
3839   struct type *type = SYMBOL_TYPE (sym);
3840
3841   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3842   if (!print_signatures
3843       || type == NULL
3844       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3845     return;
3846
3847   if (TYPE_NFIELDS (type) > 0)
3848     {
3849       int i;
3850
3851       fprintf_filtered (stream, " (");
3852       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3853         {
3854           if (i > 0)
3855             fprintf_filtered (stream, "; ");
3856           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3857                           flags);
3858         }
3859       fprintf_filtered (stream, ")");
3860     }
3861   if (TYPE_TARGET_TYPE (type) != NULL
3862       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3863     {
3864       fprintf_filtered (stream, " return ");
3865       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3866     }
3867 }
3868
3869 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3870    by asking the user (if necessary), returning the number selected, 
3871    and setting the first elements of SYMS items.  Error if no symbols
3872    selected.  */
3873
3874 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3875    to be re-integrated one of these days.  */
3876
3877 int
3878 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3879 {
3880   int i;
3881   int *chosen = XALLOCAVEC (int , nsyms);
3882   int n_chosen;
3883   int first_choice = (max_results == 1) ? 1 : 2;
3884   const char *select_mode = multiple_symbols_select_mode ();
3885
3886   if (max_results < 1)
3887     error (_("Request to select 0 symbols!"));
3888   if (nsyms <= 1)
3889     return nsyms;
3890
3891   if (select_mode == multiple_symbols_cancel)
3892     error (_("\
3893 canceled because the command is ambiguous\n\
3894 See set/show multiple-symbol."));
3895
3896   /* If select_mode is "all", then return all possible symbols.
3897      Only do that if more than one symbol can be selected, of course.
3898      Otherwise, display the menu as usual.  */
3899   if (select_mode == multiple_symbols_all && max_results > 1)
3900     return nsyms;
3901
3902   printf_filtered (_("[0] cancel\n"));
3903   if (max_results > 1)
3904     printf_filtered (_("[1] all\n"));
3905
3906   sort_choices (syms, nsyms);
3907
3908   for (i = 0; i < nsyms; i += 1)
3909     {
3910       if (syms[i].symbol == NULL)
3911         continue;
3912
3913       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3914         {
3915           struct symtab_and_line sal =
3916             find_function_start_sal (syms[i].symbol, 1);
3917
3918           printf_filtered ("[%d] ", i + first_choice);
3919           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3920                                       &type_print_raw_options);
3921           if (sal.symtab == NULL)
3922             printf_filtered (_(" at <no source file available>:%d\n"),
3923                              sal.line);
3924           else
3925             printf_filtered (_(" at %s:%d\n"),
3926                              symtab_to_filename_for_display (sal.symtab),
3927                              sal.line);
3928           continue;
3929         }
3930       else
3931         {
3932           int is_enumeral =
3933             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3934              && SYMBOL_TYPE (syms[i].symbol) != NULL
3935              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3936           struct symtab *symtab = NULL;
3937
3938           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3939             symtab = symbol_symtab (syms[i].symbol);
3940
3941           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3942             {
3943               printf_filtered ("[%d] ", i + first_choice);
3944               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3945                                           &type_print_raw_options);
3946               printf_filtered (_(" at %s:%d\n"),
3947                                symtab_to_filename_for_display (symtab),
3948                                SYMBOL_LINE (syms[i].symbol));
3949             }
3950           else if (is_enumeral
3951                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3952             {
3953               printf_filtered (("[%d] "), i + first_choice);
3954               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3955                               gdb_stdout, -1, 0, &type_print_raw_options);
3956               printf_filtered (_("'(%s) (enumeral)\n"),
3957                                SYMBOL_PRINT_NAME (syms[i].symbol));
3958             }
3959           else
3960             {
3961               printf_filtered ("[%d] ", i + first_choice);
3962               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3963                                           &type_print_raw_options);
3964
3965               if (symtab != NULL)
3966                 printf_filtered (is_enumeral
3967                                  ? _(" in %s (enumeral)\n")
3968                                  : _(" at %s:?\n"),
3969                                  symtab_to_filename_for_display (symtab));
3970               else
3971                 printf_filtered (is_enumeral
3972                                  ? _(" (enumeral)\n")
3973                                  : _(" at ?\n"));
3974             }
3975         }
3976     }
3977
3978   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3979                              "overload-choice");
3980
3981   for (i = 0; i < n_chosen; i += 1)
3982     syms[i] = syms[chosen[i]];
3983
3984   return n_chosen;
3985 }
3986
3987 /* Read and validate a set of numeric choices from the user in the
3988    range 0 .. N_CHOICES-1.  Place the results in increasing
3989    order in CHOICES[0 .. N-1], and return N.
3990
3991    The user types choices as a sequence of numbers on one line
3992    separated by blanks, encoding them as follows:
3993
3994      + A choice of 0 means to cancel the selection, throwing an error.
3995      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3996      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3997
3998    The user is not allowed to choose more than MAX_RESULTS values.
3999
4000    ANNOTATION_SUFFIX, if present, is used to annotate the input
4001    prompts (for use with the -f switch).  */
4002
4003 int
4004 get_selections (int *choices, int n_choices, int max_results,
4005                 int is_all_choice, const char *annotation_suffix)
4006 {
4007   char *args;
4008   const char *prompt;
4009   int n_chosen;
4010   int first_choice = is_all_choice ? 2 : 1;
4011
4012   prompt = getenv ("PS2");
4013   if (prompt == NULL)
4014     prompt = "> ";
4015
4016   args = command_line_input (prompt, annotation_suffix);
4017
4018   if (args == NULL)
4019     error_no_arg (_("one or more choice numbers"));
4020
4021   n_chosen = 0;
4022
4023   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4024      order, as given in args.  Choices are validated.  */
4025   while (1)
4026     {
4027       char *args2;
4028       int choice, j;
4029
4030       args = skip_spaces (args);
4031       if (*args == '\0' && n_chosen == 0)
4032         error_no_arg (_("one or more choice numbers"));
4033       else if (*args == '\0')
4034         break;
4035
4036       choice = strtol (args, &args2, 10);
4037       if (args == args2 || choice < 0
4038           || choice > n_choices + first_choice - 1)
4039         error (_("Argument must be choice number"));
4040       args = args2;
4041
4042       if (choice == 0)
4043         error (_("cancelled"));
4044
4045       if (choice < first_choice)
4046         {
4047           n_chosen = n_choices;
4048           for (j = 0; j < n_choices; j += 1)
4049             choices[j] = j;
4050           break;
4051         }
4052       choice -= first_choice;
4053
4054       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4055         {
4056         }
4057
4058       if (j < 0 || choice != choices[j])
4059         {
4060           int k;
4061
4062           for (k = n_chosen - 1; k > j; k -= 1)
4063             choices[k + 1] = choices[k];
4064           choices[j + 1] = choice;
4065           n_chosen += 1;
4066         }
4067     }
4068
4069   if (n_chosen > max_results)
4070     error (_("Select no more than %d of the above"), max_results);
4071
4072   return n_chosen;
4073 }
4074
4075 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4076    on the function identified by SYM and BLOCK, and taking NARGS
4077    arguments.  Update *EXPP as needed to hold more space.  */
4078
4079 static void
4080 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4081                             int oplen, struct symbol *sym,
4082                             const struct block *block)
4083 {
4084   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4085      symbol, -oplen for operator being replaced).  */
4086   struct expression *newexp = (struct expression *)
4087     xzalloc (sizeof (struct expression)
4088              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4089   struct expression *exp = expp->get ();
4090
4091   newexp->nelts = exp->nelts + 7 - oplen;
4092   newexp->language_defn = exp->language_defn;
4093   newexp->gdbarch = exp->gdbarch;
4094   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4095   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4096           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4097
4098   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4099   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4100
4101   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4102   newexp->elts[pc + 4].block = block;
4103   newexp->elts[pc + 5].symbol = sym;
4104
4105   expp->reset (newexp);
4106 }
4107
4108 /* Type-class predicates */
4109
4110 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4111    or FLOAT).  */
4112
4113 static int
4114 numeric_type_p (struct type *type)
4115 {
4116   if (type == NULL)
4117     return 0;
4118   else
4119     {
4120       switch (TYPE_CODE (type))
4121         {
4122         case TYPE_CODE_INT:
4123         case TYPE_CODE_FLT:
4124           return 1;
4125         case TYPE_CODE_RANGE:
4126           return (type == TYPE_TARGET_TYPE (type)
4127                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4128         default:
4129           return 0;
4130         }
4131     }
4132 }
4133
4134 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4135
4136 static int
4137 integer_type_p (struct type *type)
4138 {
4139   if (type == NULL)
4140     return 0;
4141   else
4142     {
4143       switch (TYPE_CODE (type))
4144         {
4145         case TYPE_CODE_INT:
4146           return 1;
4147         case TYPE_CODE_RANGE:
4148           return (type == TYPE_TARGET_TYPE (type)
4149                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4150         default:
4151           return 0;
4152         }
4153     }
4154 }
4155
4156 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4157
4158 static int
4159 scalar_type_p (struct type *type)
4160 {
4161   if (type == NULL)
4162     return 0;
4163   else
4164     {
4165       switch (TYPE_CODE (type))
4166         {
4167         case TYPE_CODE_INT:
4168         case TYPE_CODE_RANGE:
4169         case TYPE_CODE_ENUM:
4170         case TYPE_CODE_FLT:
4171           return 1;
4172         default:
4173           return 0;
4174         }
4175     }
4176 }
4177
4178 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4179
4180 static int
4181 discrete_type_p (struct type *type)
4182 {
4183   if (type == NULL)
4184     return 0;
4185   else
4186     {
4187       switch (TYPE_CODE (type))
4188         {
4189         case TYPE_CODE_INT:
4190         case TYPE_CODE_RANGE:
4191         case TYPE_CODE_ENUM:
4192         case TYPE_CODE_BOOL:
4193           return 1;
4194         default:
4195           return 0;
4196         }
4197     }
4198 }
4199
4200 /* Returns non-zero if OP with operands in the vector ARGS could be
4201    a user-defined function.  Errs on the side of pre-defined operators
4202    (i.e., result 0).  */
4203
4204 static int
4205 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4206 {
4207   struct type *type0 =
4208     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4209   struct type *type1 =
4210     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4211
4212   if (type0 == NULL)
4213     return 0;
4214
4215   switch (op)
4216     {
4217     default:
4218       return 0;
4219
4220     case BINOP_ADD:
4221     case BINOP_SUB:
4222     case BINOP_MUL:
4223     case BINOP_DIV:
4224       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4225
4226     case BINOP_REM:
4227     case BINOP_MOD:
4228     case BINOP_BITWISE_AND:
4229     case BINOP_BITWISE_IOR:
4230     case BINOP_BITWISE_XOR:
4231       return (!(integer_type_p (type0) && integer_type_p (type1)));
4232
4233     case BINOP_EQUAL:
4234     case BINOP_NOTEQUAL:
4235     case BINOP_LESS:
4236     case BINOP_GTR:
4237     case BINOP_LEQ:
4238     case BINOP_GEQ:
4239       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4240
4241     case BINOP_CONCAT:
4242       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4243
4244     case BINOP_EXP:
4245       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4246
4247     case UNOP_NEG:
4248     case UNOP_PLUS:
4249     case UNOP_LOGICAL_NOT:
4250     case UNOP_ABS:
4251       return (!numeric_type_p (type0));
4252
4253     }
4254 }
4255 \f
4256                                 /* Renaming */
4257
4258 /* NOTES: 
4259
4260    1. In the following, we assume that a renaming type's name may
4261       have an ___XD suffix.  It would be nice if this went away at some
4262       point.
4263    2. We handle both the (old) purely type-based representation of 
4264       renamings and the (new) variable-based encoding.  At some point,
4265       it is devoutly to be hoped that the former goes away 
4266       (FIXME: hilfinger-2007-07-09).
4267    3. Subprogram renamings are not implemented, although the XRS
4268       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4269
4270 /* If SYM encodes a renaming, 
4271
4272        <renaming> renames <renamed entity>,
4273
4274    sets *LEN to the length of the renamed entity's name,
4275    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4276    the string describing the subcomponent selected from the renamed
4277    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4278    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4279    are undefined).  Otherwise, returns a value indicating the category
4280    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4281    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4282    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4283    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4284    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4285    may be NULL, in which case they are not assigned.
4286
4287    [Currently, however, GCC does not generate subprogram renamings.]  */
4288
4289 enum ada_renaming_category
4290 ada_parse_renaming (struct symbol *sym,
4291                     const char **renamed_entity, int *len, 
4292                     const char **renaming_expr)
4293 {
4294   enum ada_renaming_category kind;
4295   const char *info;
4296   const char *suffix;
4297
4298   if (sym == NULL)
4299     return ADA_NOT_RENAMING;
4300   switch (SYMBOL_CLASS (sym)) 
4301     {
4302     default:
4303       return ADA_NOT_RENAMING;
4304     case LOC_TYPEDEF:
4305       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4306                                        renamed_entity, len, renaming_expr);
4307     case LOC_LOCAL:
4308     case LOC_STATIC:
4309     case LOC_COMPUTED:
4310     case LOC_OPTIMIZED_OUT:
4311       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4312       if (info == NULL)
4313         return ADA_NOT_RENAMING;
4314       switch (info[5])
4315         {
4316         case '_':
4317           kind = ADA_OBJECT_RENAMING;
4318           info += 6;
4319           break;
4320         case 'E':
4321           kind = ADA_EXCEPTION_RENAMING;
4322           info += 7;
4323           break;
4324         case 'P':
4325           kind = ADA_PACKAGE_RENAMING;
4326           info += 7;
4327           break;
4328         case 'S':
4329           kind = ADA_SUBPROGRAM_RENAMING;
4330           info += 7;
4331           break;
4332         default:
4333           return ADA_NOT_RENAMING;
4334         }
4335     }
4336
4337   if (renamed_entity != NULL)
4338     *renamed_entity = info;
4339   suffix = strstr (info, "___XE");
4340   if (suffix == NULL || suffix == info)
4341     return ADA_NOT_RENAMING;
4342   if (len != NULL)
4343     *len = strlen (info) - strlen (suffix);
4344   suffix += 5;
4345   if (renaming_expr != NULL)
4346     *renaming_expr = suffix;
4347   return kind;
4348 }
4349
4350 /* Assuming TYPE encodes a renaming according to the old encoding in
4351    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4352    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4353    ADA_NOT_RENAMING otherwise.  */
4354 static enum ada_renaming_category
4355 parse_old_style_renaming (struct type *type,
4356                           const char **renamed_entity, int *len, 
4357                           const char **renaming_expr)
4358 {
4359   enum ada_renaming_category kind;
4360   const char *name;
4361   const char *info;
4362   const char *suffix;
4363
4364   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4365       || TYPE_NFIELDS (type) != 1)
4366     return ADA_NOT_RENAMING;
4367
4368   name = TYPE_NAME (type);
4369   if (name == NULL)
4370     return ADA_NOT_RENAMING;
4371   
4372   name = strstr (name, "___XR");
4373   if (name == NULL)
4374     return ADA_NOT_RENAMING;
4375   switch (name[5])
4376     {
4377     case '\0':
4378     case '_':
4379       kind = ADA_OBJECT_RENAMING;
4380       break;
4381     case 'E':
4382       kind = ADA_EXCEPTION_RENAMING;
4383       break;
4384     case 'P':
4385       kind = ADA_PACKAGE_RENAMING;
4386       break;
4387     case 'S':
4388       kind = ADA_SUBPROGRAM_RENAMING;
4389       break;
4390     default:
4391       return ADA_NOT_RENAMING;
4392     }
4393
4394   info = TYPE_FIELD_NAME (type, 0);
4395   if (info == NULL)
4396     return ADA_NOT_RENAMING;
4397   if (renamed_entity != NULL)
4398     *renamed_entity = info;
4399   suffix = strstr (info, "___XE");
4400   if (renaming_expr != NULL)
4401     *renaming_expr = suffix + 5;
4402   if (suffix == NULL || suffix == info)
4403     return ADA_NOT_RENAMING;
4404   if (len != NULL)
4405     *len = suffix - info;
4406   return kind;
4407 }
4408
4409 /* Compute the value of the given RENAMING_SYM, which is expected to
4410    be a symbol encoding a renaming expression.  BLOCK is the block
4411    used to evaluate the renaming.  */
4412
4413 static struct value *
4414 ada_read_renaming_var_value (struct symbol *renaming_sym,
4415                              const struct block *block)
4416 {
4417   const char *sym_name;
4418
4419   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4420   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4421   return evaluate_expression (expr.get ());
4422 }
4423 \f
4424
4425                                 /* Evaluation: Function Calls */
4426
4427 /* Return an lvalue containing the value VAL.  This is the identity on
4428    lvalues, and otherwise has the side-effect of allocating memory
4429    in the inferior where a copy of the value contents is copied.  */
4430
4431 static struct value *
4432 ensure_lval (struct value *val)
4433 {
4434   if (VALUE_LVAL (val) == not_lval
4435       || VALUE_LVAL (val) == lval_internalvar)
4436     {
4437       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4438       const CORE_ADDR addr =
4439         value_as_long (value_allocate_space_in_inferior (len));
4440
4441       VALUE_LVAL (val) = lval_memory;
4442       set_value_address (val, addr);
4443       write_memory (addr, value_contents (val), len);
4444     }
4445
4446   return val;
4447 }
4448
4449 /* Return the value ACTUAL, converted to be an appropriate value for a
4450    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4451    allocating any necessary descriptors (fat pointers), or copies of
4452    values not residing in memory, updating it as needed.  */
4453
4454 struct value *
4455 ada_convert_actual (struct value *actual, struct type *formal_type0)
4456 {
4457   struct type *actual_type = ada_check_typedef (value_type (actual));
4458   struct type *formal_type = ada_check_typedef (formal_type0);
4459   struct type *formal_target =
4460     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4461     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4462   struct type *actual_target =
4463     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4464     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4465
4466   if (ada_is_array_descriptor_type (formal_target)
4467       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4468     return make_array_descriptor (formal_type, actual);
4469   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4470            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4471     {
4472       struct value *result;
4473
4474       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4475           && ada_is_array_descriptor_type (actual_target))
4476         result = desc_data (actual);
4477       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4478         {
4479           if (VALUE_LVAL (actual) != lval_memory)
4480             {
4481               struct value *val;
4482
4483               actual_type = ada_check_typedef (value_type (actual));
4484               val = allocate_value (actual_type);
4485               memcpy ((char *) value_contents_raw (val),
4486                       (char *) value_contents (actual),
4487                       TYPE_LENGTH (actual_type));
4488               actual = ensure_lval (val);
4489             }
4490           result = value_addr (actual);
4491         }
4492       else
4493         return actual;
4494       return value_cast_pointers (formal_type, result, 0);
4495     }
4496   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4497     return ada_value_ind (actual);
4498   else if (ada_is_aligner_type (formal_type))
4499     {
4500       /* We need to turn this parameter into an aligner type
4501          as well.  */
4502       struct value *aligner = allocate_value (formal_type);
4503       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4504
4505       value_assign_to_component (aligner, component, actual);
4506       return aligner;
4507     }
4508
4509   return actual;
4510 }
4511
4512 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4513    type TYPE.  This is usually an inefficient no-op except on some targets
4514    (such as AVR) where the representation of a pointer and an address
4515    differs.  */
4516
4517 static CORE_ADDR
4518 value_pointer (struct value *value, struct type *type)
4519 {
4520   struct gdbarch *gdbarch = get_type_arch (type);
4521   unsigned len = TYPE_LENGTH (type);
4522   gdb_byte *buf = (gdb_byte *) alloca (len);
4523   CORE_ADDR addr;
4524
4525   addr = value_address (value);
4526   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4527   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4528   return addr;
4529 }
4530
4531
4532 /* Push a descriptor of type TYPE for array value ARR on the stack at
4533    *SP, updating *SP to reflect the new descriptor.  Return either
4534    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4535    to-descriptor type rather than a descriptor type), a struct value *
4536    representing a pointer to this descriptor.  */
4537
4538 static struct value *
4539 make_array_descriptor (struct type *type, struct value *arr)
4540 {
4541   struct type *bounds_type = desc_bounds_type (type);
4542   struct type *desc_type = desc_base_type (type);
4543   struct value *descriptor = allocate_value (desc_type);
4544   struct value *bounds = allocate_value (bounds_type);
4545   int i;
4546
4547   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4548        i > 0; i -= 1)
4549     {
4550       modify_field (value_type (bounds), value_contents_writeable (bounds),
4551                     ada_array_bound (arr, i, 0),
4552                     desc_bound_bitpos (bounds_type, i, 0),
4553                     desc_bound_bitsize (bounds_type, i, 0));
4554       modify_field (value_type (bounds), value_contents_writeable (bounds),
4555                     ada_array_bound (arr, i, 1),
4556                     desc_bound_bitpos (bounds_type, i, 1),
4557                     desc_bound_bitsize (bounds_type, i, 1));
4558     }
4559
4560   bounds = ensure_lval (bounds);
4561
4562   modify_field (value_type (descriptor),
4563                 value_contents_writeable (descriptor),
4564                 value_pointer (ensure_lval (arr),
4565                                TYPE_FIELD_TYPE (desc_type, 0)),
4566                 fat_pntr_data_bitpos (desc_type),
4567                 fat_pntr_data_bitsize (desc_type));
4568
4569   modify_field (value_type (descriptor),
4570                 value_contents_writeable (descriptor),
4571                 value_pointer (bounds,
4572                                TYPE_FIELD_TYPE (desc_type, 1)),
4573                 fat_pntr_bounds_bitpos (desc_type),
4574                 fat_pntr_bounds_bitsize (desc_type));
4575
4576   descriptor = ensure_lval (descriptor);
4577
4578   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4579     return value_addr (descriptor);
4580   else
4581     return descriptor;
4582 }
4583 \f
4584                                 /* Symbol Cache Module */
4585
4586 /* Performance measurements made as of 2010-01-15 indicate that
4587    this cache does bring some noticeable improvements.  Depending
4588    on the type of entity being printed, the cache can make it as much
4589    as an order of magnitude faster than without it.
4590
4591    The descriptive type DWARF extension has significantly reduced
4592    the need for this cache, at least when DWARF is being used.  However,
4593    even in this case, some expensive name-based symbol searches are still
4594    sometimes necessary - to find an XVZ variable, mostly.  */
4595
4596 /* Initialize the contents of SYM_CACHE.  */
4597
4598 static void
4599 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4600 {
4601   obstack_init (&sym_cache->cache_space);
4602   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4603 }
4604
4605 /* Free the memory used by SYM_CACHE.  */
4606
4607 static void
4608 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4609 {
4610   obstack_free (&sym_cache->cache_space, NULL);
4611   xfree (sym_cache);
4612 }
4613
4614 /* Return the symbol cache associated to the given program space PSPACE.
4615    If not allocated for this PSPACE yet, allocate and initialize one.  */
4616
4617 static struct ada_symbol_cache *
4618 ada_get_symbol_cache (struct program_space *pspace)
4619 {
4620   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4621
4622   if (pspace_data->sym_cache == NULL)
4623     {
4624       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4625       ada_init_symbol_cache (pspace_data->sym_cache);
4626     }
4627
4628   return pspace_data->sym_cache;
4629 }
4630
4631 /* Clear all entries from the symbol cache.  */
4632
4633 static void
4634 ada_clear_symbol_cache (void)
4635 {
4636   struct ada_symbol_cache *sym_cache
4637     = ada_get_symbol_cache (current_program_space);
4638
4639   obstack_free (&sym_cache->cache_space, NULL);
4640   ada_init_symbol_cache (sym_cache);
4641 }
4642
4643 /* Search our cache for an entry matching NAME and DOMAIN.
4644    Return it if found, or NULL otherwise.  */
4645
4646 static struct cache_entry **
4647 find_entry (const char *name, domain_enum domain)
4648 {
4649   struct ada_symbol_cache *sym_cache
4650     = ada_get_symbol_cache (current_program_space);
4651   int h = msymbol_hash (name) % HASH_SIZE;
4652   struct cache_entry **e;
4653
4654   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4655     {
4656       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4657         return e;
4658     }
4659   return NULL;
4660 }
4661
4662 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4663    Return 1 if found, 0 otherwise.
4664
4665    If an entry was found and SYM is not NULL, set *SYM to the entry's
4666    SYM.  Same principle for BLOCK if not NULL.  */
4667
4668 static int
4669 lookup_cached_symbol (const char *name, domain_enum domain,
4670                       struct symbol **sym, const struct block **block)
4671 {
4672   struct cache_entry **e = find_entry (name, domain);
4673
4674   if (e == NULL)
4675     return 0;
4676   if (sym != NULL)
4677     *sym = (*e)->sym;
4678   if (block != NULL)
4679     *block = (*e)->block;
4680   return 1;
4681 }
4682
4683 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4684    in domain DOMAIN, save this result in our symbol cache.  */
4685
4686 static void
4687 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4688               const struct block *block)
4689 {
4690   struct ada_symbol_cache *sym_cache
4691     = ada_get_symbol_cache (current_program_space);
4692   int h;
4693   char *copy;
4694   struct cache_entry *e;
4695
4696   /* Symbols for builtin types don't have a block.
4697      For now don't cache such symbols.  */
4698   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4699     return;
4700
4701   /* If the symbol is a local symbol, then do not cache it, as a search
4702      for that symbol depends on the context.  To determine whether
4703      the symbol is local or not, we check the block where we found it
4704      against the global and static blocks of its associated symtab.  */
4705   if (sym
4706       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4707                             GLOBAL_BLOCK) != block
4708       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4709                             STATIC_BLOCK) != block)
4710     return;
4711
4712   h = msymbol_hash (name) % HASH_SIZE;
4713   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4714   e->next = sym_cache->root[h];
4715   sym_cache->root[h] = e;
4716   e->name = copy
4717     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4718   strcpy (copy, name);
4719   e->sym = sym;
4720   e->domain = domain;
4721   e->block = block;
4722 }
4723 \f
4724                                 /* Symbol Lookup */
4725
4726 /* Return the symbol name match type that should be used used when
4727    searching for all symbols matching LOOKUP_NAME.
4728
4729    LOOKUP_NAME is expected to be a symbol name after transformation
4730    for Ada lookups.  */
4731
4732 static symbol_name_match_type
4733 name_match_type_from_name (const char *lookup_name)
4734 {
4735   return (strstr (lookup_name, "__") == NULL
4736           ? symbol_name_match_type::WILD
4737           : symbol_name_match_type::FULL);
4738 }
4739
4740 /* Return the result of a standard (literal, C-like) lookup of NAME in
4741    given DOMAIN, visible from lexical block BLOCK.  */
4742
4743 static struct symbol *
4744 standard_lookup (const char *name, const struct block *block,
4745                  domain_enum domain)
4746 {
4747   /* Initialize it just to avoid a GCC false warning.  */
4748   struct block_symbol sym = {};
4749
4750   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4751     return sym.symbol;
4752   ada_lookup_encoded_symbol (name, block, domain, &sym);
4753   cache_symbol (name, domain, sym.symbol, sym.block);
4754   return sym.symbol;
4755 }
4756
4757
4758 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4759    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4760    since they contend in overloading in the same way.  */
4761 static int
4762 is_nonfunction (struct block_symbol syms[], int n)
4763 {
4764   int i;
4765
4766   for (i = 0; i < n; i += 1)
4767     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4768         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4769             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4770       return 1;
4771
4772   return 0;
4773 }
4774
4775 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4776    struct types.  Otherwise, they may not.  */
4777
4778 static int
4779 equiv_types (struct type *type0, struct type *type1)
4780 {
4781   if (type0 == type1)
4782     return 1;
4783   if (type0 == NULL || type1 == NULL
4784       || TYPE_CODE (type0) != TYPE_CODE (type1))
4785     return 0;
4786   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4787        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4788       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4789       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4790     return 1;
4791
4792   return 0;
4793 }
4794
4795 /* True iff SYM0 represents the same entity as SYM1, or one that is
4796    no more defined than that of SYM1.  */
4797
4798 static int
4799 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4800 {
4801   if (sym0 == sym1)
4802     return 1;
4803   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4804       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4805     return 0;
4806
4807   switch (SYMBOL_CLASS (sym0))
4808     {
4809     case LOC_UNDEF:
4810       return 1;
4811     case LOC_TYPEDEF:
4812       {
4813         struct type *type0 = SYMBOL_TYPE (sym0);
4814         struct type *type1 = SYMBOL_TYPE (sym1);
4815         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4816         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4817         int len0 = strlen (name0);
4818
4819         return
4820           TYPE_CODE (type0) == TYPE_CODE (type1)
4821           && (equiv_types (type0, type1)
4822               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4823                   && startswith (name1 + len0, "___XV")));
4824       }
4825     case LOC_CONST:
4826       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4827         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4828     default:
4829       return 0;
4830     }
4831 }
4832
4833 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4834    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4835
4836 static void
4837 add_defn_to_vec (struct obstack *obstackp,
4838                  struct symbol *sym,
4839                  const struct block *block)
4840 {
4841   int i;
4842   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4843
4844   /* Do not try to complete stub types, as the debugger is probably
4845      already scanning all symbols matching a certain name at the
4846      time when this function is called.  Trying to replace the stub
4847      type by its associated full type will cause us to restart a scan
4848      which may lead to an infinite recursion.  Instead, the client
4849      collecting the matching symbols will end up collecting several
4850      matches, with at least one of them complete.  It can then filter
4851      out the stub ones if needed.  */
4852
4853   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4854     {
4855       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4856         return;
4857       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4858         {
4859           prevDefns[i].symbol = sym;
4860           prevDefns[i].block = block;
4861           return;
4862         }
4863     }
4864
4865   {
4866     struct block_symbol info;
4867
4868     info.symbol = sym;
4869     info.block = block;
4870     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4871   }
4872 }
4873
4874 /* Number of block_symbol structures currently collected in current vector in
4875    OBSTACKP.  */
4876
4877 static int
4878 num_defns_collected (struct obstack *obstackp)
4879 {
4880   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4881 }
4882
4883 /* Vector of block_symbol structures currently collected in current vector in
4884    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4885
4886 static struct block_symbol *
4887 defns_collected (struct obstack *obstackp, int finish)
4888 {
4889   if (finish)
4890     return (struct block_symbol *) obstack_finish (obstackp);
4891   else
4892     return (struct block_symbol *) obstack_base (obstackp);
4893 }
4894
4895 /* Return a bound minimal symbol matching NAME according to Ada
4896    decoding rules.  Returns an invalid symbol if there is no such
4897    minimal symbol.  Names prefixed with "standard__" are handled
4898    specially: "standard__" is first stripped off, and only static and
4899    global symbols are searched.  */
4900
4901 struct bound_minimal_symbol
4902 ada_lookup_simple_minsym (const char *name)
4903 {
4904   struct bound_minimal_symbol result;
4905
4906   memset (&result, 0, sizeof (result));
4907
4908   symbol_name_match_type match_type = name_match_type_from_name (name);
4909   lookup_name_info lookup_name (name, match_type);
4910
4911   symbol_name_matcher_ftype *match_name
4912     = ada_get_symbol_name_matcher (lookup_name);
4913
4914   for (objfile *objfile : current_program_space->objfiles ())
4915     {
4916       for (minimal_symbol *msymbol : objfile->msymbols ())
4917         {
4918           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4919               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4920             {
4921               result.minsym = msymbol;
4922               result.objfile = objfile;
4923               break;
4924             }
4925         }
4926     }
4927
4928   return result;
4929 }
4930
4931 /* Return all the bound minimal symbols matching NAME according to Ada
4932    decoding rules.  Returns an empty vector if there is no such
4933    minimal symbol.  Names prefixed with "standard__" are handled
4934    specially: "standard__" is first stripped off, and only static and
4935    global symbols are searched.  */
4936
4937 static std::vector<struct bound_minimal_symbol>
4938 ada_lookup_simple_minsyms (const char *name)
4939 {
4940   std::vector<struct bound_minimal_symbol> result;
4941
4942   symbol_name_match_type match_type = name_match_type_from_name (name);
4943   lookup_name_info lookup_name (name, match_type);
4944
4945   symbol_name_matcher_ftype *match_name
4946     = ada_get_symbol_name_matcher (lookup_name);
4947
4948   for (objfile *objfile : current_program_space->objfiles ())
4949     {
4950       for (minimal_symbol *msymbol : objfile->msymbols ())
4951         {
4952           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4953               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4954             result.push_back ({msymbol, objfile});
4955         }
4956     }
4957
4958   return result;
4959 }
4960
4961 /* For all subprograms that statically enclose the subprogram of the
4962    selected frame, add symbols matching identifier NAME in DOMAIN
4963    and their blocks to the list of data in OBSTACKP, as for
4964    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4965    with a wildcard prefix.  */
4966
4967 static void
4968 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4969                                   const lookup_name_info &lookup_name,
4970                                   domain_enum domain)
4971 {
4972 }
4973
4974 /* True if TYPE is definitely an artificial type supplied to a symbol
4975    for which no debugging information was given in the symbol file.  */
4976
4977 static int
4978 is_nondebugging_type (struct type *type)
4979 {
4980   const char *name = ada_type_name (type);
4981
4982   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4983 }
4984
4985 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4986    that are deemed "identical" for practical purposes.
4987
4988    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4989    types and that their number of enumerals is identical (in other
4990    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4991
4992 static int
4993 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4994 {
4995   int i;
4996
4997   /* The heuristic we use here is fairly conservative.  We consider
4998      that 2 enumerate types are identical if they have the same
4999      number of enumerals and that all enumerals have the same
5000      underlying value and name.  */
5001
5002   /* All enums in the type should have an identical underlying value.  */
5003   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5004     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5005       return 0;
5006
5007   /* All enumerals should also have the same name (modulo any numerical
5008      suffix).  */
5009   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5010     {
5011       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5012       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5013       int len_1 = strlen (name_1);
5014       int len_2 = strlen (name_2);
5015
5016       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5017       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5018       if (len_1 != len_2
5019           || strncmp (TYPE_FIELD_NAME (type1, i),
5020                       TYPE_FIELD_NAME (type2, i),
5021                       len_1) != 0)
5022         return 0;
5023     }
5024
5025   return 1;
5026 }
5027
5028 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5029    that are deemed "identical" for practical purposes.  Sometimes,
5030    enumerals are not strictly identical, but their types are so similar
5031    that they can be considered identical.
5032
5033    For instance, consider the following code:
5034
5035       type Color is (Black, Red, Green, Blue, White);
5036       type RGB_Color is new Color range Red .. Blue;
5037
5038    Type RGB_Color is a subrange of an implicit type which is a copy
5039    of type Color. If we call that implicit type RGB_ColorB ("B" is
5040    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5041    As a result, when an expression references any of the enumeral
5042    by name (Eg. "print green"), the expression is technically
5043    ambiguous and the user should be asked to disambiguate. But
5044    doing so would only hinder the user, since it wouldn't matter
5045    what choice he makes, the outcome would always be the same.
5046    So, for practical purposes, we consider them as the same.  */
5047
5048 static int
5049 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5050 {
5051   int i;
5052
5053   /* Before performing a thorough comparison check of each type,
5054      we perform a series of inexpensive checks.  We expect that these
5055      checks will quickly fail in the vast majority of cases, and thus
5056      help prevent the unnecessary use of a more expensive comparison.
5057      Said comparison also expects us to make some of these checks
5058      (see ada_identical_enum_types_p).  */
5059
5060   /* Quick check: All symbols should have an enum type.  */
5061   for (i = 0; i < syms.size (); i++)
5062     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5063       return 0;
5064
5065   /* Quick check: They should all have the same value.  */
5066   for (i = 1; i < syms.size (); i++)
5067     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5068       return 0;
5069
5070   /* Quick check: They should all have the same number of enumerals.  */
5071   for (i = 1; i < syms.size (); i++)
5072     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5073         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5074       return 0;
5075
5076   /* All the sanity checks passed, so we might have a set of
5077      identical enumeration types.  Perform a more complete
5078      comparison of the type of each symbol.  */
5079   for (i = 1; i < syms.size (); i++)
5080     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5081                                      SYMBOL_TYPE (syms[0].symbol)))
5082       return 0;
5083
5084   return 1;
5085 }
5086
5087 /* Remove any non-debugging symbols in SYMS that definitely
5088    duplicate other symbols in the list (The only case I know of where
5089    this happens is when object files containing stabs-in-ecoff are
5090    linked with files containing ordinary ecoff debugging symbols (or no
5091    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5092    Returns the number of items in the modified list.  */
5093
5094 static int
5095 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5096 {
5097   int i, j;
5098
5099   /* We should never be called with less than 2 symbols, as there
5100      cannot be any extra symbol in that case.  But it's easy to
5101      handle, since we have nothing to do in that case.  */
5102   if (syms->size () < 2)
5103     return syms->size ();
5104
5105   i = 0;
5106   while (i < syms->size ())
5107     {
5108       int remove_p = 0;
5109
5110       /* If two symbols have the same name and one of them is a stub type,
5111          the get rid of the stub.  */
5112
5113       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5114           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5115         {
5116           for (j = 0; j < syms->size (); j++)
5117             {
5118               if (j != i
5119                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5120                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5121                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5122                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5123                 remove_p = 1;
5124             }
5125         }
5126
5127       /* Two symbols with the same name, same class and same address
5128          should be identical.  */
5129
5130       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5131           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5132           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5133         {
5134           for (j = 0; j < syms->size (); j += 1)
5135             {
5136               if (i != j
5137                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5138                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5139                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5140                   && SYMBOL_CLASS ((*syms)[i].symbol)
5141                        == SYMBOL_CLASS ((*syms)[j].symbol)
5142                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5143                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5144                 remove_p = 1;
5145             }
5146         }
5147       
5148       if (remove_p)
5149         syms->erase (syms->begin () + i);
5150
5151       i += 1;
5152     }
5153
5154   /* If all the remaining symbols are identical enumerals, then
5155      just keep the first one and discard the rest.
5156
5157      Unlike what we did previously, we do not discard any entry
5158      unless they are ALL identical.  This is because the symbol
5159      comparison is not a strict comparison, but rather a practical
5160      comparison.  If all symbols are considered identical, then
5161      we can just go ahead and use the first one and discard the rest.
5162      But if we cannot reduce the list to a single element, we have
5163      to ask the user to disambiguate anyways.  And if we have to
5164      present a multiple-choice menu, it's less confusing if the list
5165      isn't missing some choices that were identical and yet distinct.  */
5166   if (symbols_are_identical_enums (*syms))
5167     syms->resize (1);
5168
5169   return syms->size ();
5170 }
5171
5172 /* Given a type that corresponds to a renaming entity, use the type name
5173    to extract the scope (package name or function name, fully qualified,
5174    and following the GNAT encoding convention) where this renaming has been
5175    defined.  */
5176
5177 static std::string
5178 xget_renaming_scope (struct type *renaming_type)
5179 {
5180   /* The renaming types adhere to the following convention:
5181      <scope>__<rename>___<XR extension>.
5182      So, to extract the scope, we search for the "___XR" extension,
5183      and then backtrack until we find the first "__".  */
5184
5185   const char *name = TYPE_NAME (renaming_type);
5186   const char *suffix = strstr (name, "___XR");
5187   const char *last;
5188
5189   /* Now, backtrack a bit until we find the first "__".  Start looking
5190      at suffix - 3, as the <rename> part is at least one character long.  */
5191
5192   for (last = suffix - 3; last > name; last--)
5193     if (last[0] == '_' && last[1] == '_')
5194       break;
5195
5196   /* Make a copy of scope and return it.  */
5197   return std::string (name, last);
5198 }
5199
5200 /* Return nonzero if NAME corresponds to a package name.  */
5201
5202 static int
5203 is_package_name (const char *name)
5204 {
5205   /* Here, We take advantage of the fact that no symbols are generated
5206      for packages, while symbols are generated for each function.
5207      So the condition for NAME represent a package becomes equivalent
5208      to NAME not existing in our list of symbols.  There is only one
5209      small complication with library-level functions (see below).  */
5210
5211   /* If it is a function that has not been defined at library level,
5212      then we should be able to look it up in the symbols.  */
5213   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5214     return 0;
5215
5216   /* Library-level function names start with "_ada_".  See if function
5217      "_ada_" followed by NAME can be found.  */
5218
5219   /* Do a quick check that NAME does not contain "__", since library-level
5220      functions names cannot contain "__" in them.  */
5221   if (strstr (name, "__") != NULL)
5222     return 0;
5223
5224   std::string fun_name = string_printf ("_ada_%s", name);
5225
5226   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5227 }
5228
5229 /* Return nonzero if SYM corresponds to a renaming entity that is
5230    not visible from FUNCTION_NAME.  */
5231
5232 static int
5233 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5234 {
5235   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5236     return 0;
5237
5238   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5239
5240   /* If the rename has been defined in a package, then it is visible.  */
5241   if (is_package_name (scope.c_str ()))
5242     return 0;
5243
5244   /* Check that the rename is in the current function scope by checking
5245      that its name starts with SCOPE.  */
5246
5247   /* If the function name starts with "_ada_", it means that it is
5248      a library-level function.  Strip this prefix before doing the
5249      comparison, as the encoding for the renaming does not contain
5250      this prefix.  */
5251   if (startswith (function_name, "_ada_"))
5252     function_name += 5;
5253
5254   return !startswith (function_name, scope.c_str ());
5255 }
5256
5257 /* Remove entries from SYMS that corresponds to a renaming entity that
5258    is not visible from the function associated with CURRENT_BLOCK or
5259    that is superfluous due to the presence of more specific renaming
5260    information.  Places surviving symbols in the initial entries of
5261    SYMS and returns the number of surviving symbols.
5262    
5263    Rationale:
5264    First, in cases where an object renaming is implemented as a
5265    reference variable, GNAT may produce both the actual reference
5266    variable and the renaming encoding.  In this case, we discard the
5267    latter.
5268
5269    Second, GNAT emits a type following a specified encoding for each renaming
5270    entity.  Unfortunately, STABS currently does not support the definition
5271    of types that are local to a given lexical block, so all renamings types
5272    are emitted at library level.  As a consequence, if an application
5273    contains two renaming entities using the same name, and a user tries to
5274    print the value of one of these entities, the result of the ada symbol
5275    lookup will also contain the wrong renaming type.
5276
5277    This function partially covers for this limitation by attempting to
5278    remove from the SYMS list renaming symbols that should be visible
5279    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5280    method with the current information available.  The implementation
5281    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5282    
5283       - When the user tries to print a rename in a function while there
5284         is another rename entity defined in a package:  Normally, the
5285         rename in the function has precedence over the rename in the
5286         package, so the latter should be removed from the list.  This is
5287         currently not the case.
5288         
5289       - This function will incorrectly remove valid renames if
5290         the CURRENT_BLOCK corresponds to a function which symbol name
5291         has been changed by an "Export" pragma.  As a consequence,
5292         the user will be unable to print such rename entities.  */
5293
5294 static int
5295 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5296                              const struct block *current_block)
5297 {
5298   struct symbol *current_function;
5299   const char *current_function_name;
5300   int i;
5301   int is_new_style_renaming;
5302
5303   /* If there is both a renaming foo___XR... encoded as a variable and
5304      a simple variable foo in the same block, discard the latter.
5305      First, zero out such symbols, then compress.  */
5306   is_new_style_renaming = 0;
5307   for (i = 0; i < syms->size (); i += 1)
5308     {
5309       struct symbol *sym = (*syms)[i].symbol;
5310       const struct block *block = (*syms)[i].block;
5311       const char *name;
5312       const char *suffix;
5313
5314       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5315         continue;
5316       name = SYMBOL_LINKAGE_NAME (sym);
5317       suffix = strstr (name, "___XR");
5318
5319       if (suffix != NULL)
5320         {
5321           int name_len = suffix - name;
5322           int j;
5323
5324           is_new_style_renaming = 1;
5325           for (j = 0; j < syms->size (); j += 1)
5326             if (i != j && (*syms)[j].symbol != NULL
5327                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5328                             name_len) == 0
5329                 && block == (*syms)[j].block)
5330               (*syms)[j].symbol = NULL;
5331         }
5332     }
5333   if (is_new_style_renaming)
5334     {
5335       int j, k;
5336
5337       for (j = k = 0; j < syms->size (); j += 1)
5338         if ((*syms)[j].symbol != NULL)
5339             {
5340               (*syms)[k] = (*syms)[j];
5341               k += 1;
5342             }
5343       return k;
5344     }
5345
5346   /* Extract the function name associated to CURRENT_BLOCK.
5347      Abort if unable to do so.  */
5348
5349   if (current_block == NULL)
5350     return syms->size ();
5351
5352   current_function = block_linkage_function (current_block);
5353   if (current_function == NULL)
5354     return syms->size ();
5355
5356   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5357   if (current_function_name == NULL)
5358     return syms->size ();
5359
5360   /* Check each of the symbols, and remove it from the list if it is
5361      a type corresponding to a renaming that is out of the scope of
5362      the current block.  */
5363
5364   i = 0;
5365   while (i < syms->size ())
5366     {
5367       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5368           == ADA_OBJECT_RENAMING
5369           && old_renaming_is_invisible ((*syms)[i].symbol,
5370                                         current_function_name))
5371         syms->erase (syms->begin () + i);
5372       else
5373         i += 1;
5374     }
5375
5376   return syms->size ();
5377 }
5378
5379 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5380    whose name and domain match NAME and DOMAIN respectively.
5381    If no match was found, then extend the search to "enclosing"
5382    routines (in other words, if we're inside a nested function,
5383    search the symbols defined inside the enclosing functions).
5384    If WILD_MATCH_P is nonzero, perform the naming matching in
5385    "wild" mode (see function "wild_match" for more info).
5386
5387    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5388
5389 static void
5390 ada_add_local_symbols (struct obstack *obstackp,
5391                        const lookup_name_info &lookup_name,
5392                        const struct block *block, domain_enum domain)
5393 {
5394   int block_depth = 0;
5395
5396   while (block != NULL)
5397     {
5398       block_depth += 1;
5399       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5400
5401       /* If we found a non-function match, assume that's the one.  */
5402       if (is_nonfunction (defns_collected (obstackp, 0),
5403                           num_defns_collected (obstackp)))
5404         return;
5405
5406       block = BLOCK_SUPERBLOCK (block);
5407     }
5408
5409   /* If no luck so far, try to find NAME as a local symbol in some lexically
5410      enclosing subprogram.  */
5411   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5412     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5413 }
5414
5415 /* An object of this type is used as the user_data argument when
5416    calling the map_matching_symbols method.  */
5417
5418 struct match_data
5419 {
5420   struct objfile *objfile;
5421   struct obstack *obstackp;
5422   struct symbol *arg_sym;
5423   int found_sym;
5424 };
5425
5426 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5427    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5428    containing the obstack that collects the symbol list, the file that SYM
5429    must come from, a flag indicating whether a non-argument symbol has
5430    been found in the current block, and the last argument symbol
5431    passed in SYM within the current block (if any).  When SYM is null,
5432    marking the end of a block, the argument symbol is added if no
5433    other has been found.  */
5434
5435 static int
5436 aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
5437                           void *data0)
5438 {
5439   struct match_data *data = (struct match_data *) data0;
5440   
5441   if (sym == NULL)
5442     {
5443       if (!data->found_sym && data->arg_sym != NULL) 
5444         add_defn_to_vec (data->obstackp,
5445                          fixup_symbol_section (data->arg_sym, data->objfile),
5446                          block);
5447       data->found_sym = 0;
5448       data->arg_sym = NULL;
5449     }
5450   else 
5451     {
5452       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5453         return 0;
5454       else if (SYMBOL_IS_ARGUMENT (sym))
5455         data->arg_sym = sym;
5456       else
5457         {
5458           data->found_sym = 1;
5459           add_defn_to_vec (data->obstackp,
5460                            fixup_symbol_section (sym, data->objfile),
5461                            block);
5462         }
5463     }
5464   return 0;
5465 }
5466
5467 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5468    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5469    symbols to OBSTACKP.  Return whether we found such symbols.  */
5470
5471 static int
5472 ada_add_block_renamings (struct obstack *obstackp,
5473                          const struct block *block,
5474                          const lookup_name_info &lookup_name,
5475                          domain_enum domain)
5476 {
5477   struct using_direct *renaming;
5478   int defns_mark = num_defns_collected (obstackp);
5479
5480   symbol_name_matcher_ftype *name_match
5481     = ada_get_symbol_name_matcher (lookup_name);
5482
5483   for (renaming = block_using (block);
5484        renaming != NULL;
5485        renaming = renaming->next)
5486     {
5487       const char *r_name;
5488
5489       /* Avoid infinite recursions: skip this renaming if we are actually
5490          already traversing it.
5491
5492          Currently, symbol lookup in Ada don't use the namespace machinery from
5493          C++/Fortran support: skip namespace imports that use them.  */
5494       if (renaming->searched
5495           || (renaming->import_src != NULL
5496               && renaming->import_src[0] != '\0')
5497           || (renaming->import_dest != NULL
5498               && renaming->import_dest[0] != '\0'))
5499         continue;
5500       renaming->searched = 1;
5501
5502       /* TODO: here, we perform another name-based symbol lookup, which can
5503          pull its own multiple overloads.  In theory, we should be able to do
5504          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5505          not a simple name.  But in order to do this, we would need to enhance
5506          the DWARF reader to associate a symbol to this renaming, instead of a
5507          name.  So, for now, we do something simpler: re-use the C++/Fortran
5508          namespace machinery.  */
5509       r_name = (renaming->alias != NULL
5510                 ? renaming->alias
5511                 : renaming->declaration);
5512       if (name_match (r_name, lookup_name, NULL))
5513         {
5514           lookup_name_info decl_lookup_name (renaming->declaration,
5515                                              lookup_name.match_type ());
5516           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5517                                1, NULL);
5518         }
5519       renaming->searched = 0;
5520     }
5521   return num_defns_collected (obstackp) != defns_mark;
5522 }
5523
5524 /* Implements compare_names, but only applying the comparision using
5525    the given CASING.  */
5526
5527 static int
5528 compare_names_with_case (const char *string1, const char *string2,
5529                          enum case_sensitivity casing)
5530 {
5531   while (*string1 != '\0' && *string2 != '\0')
5532     {
5533       char c1, c2;
5534
5535       if (isspace (*string1) || isspace (*string2))
5536         return strcmp_iw_ordered (string1, string2);
5537
5538       if (casing == case_sensitive_off)
5539         {
5540           c1 = tolower (*string1);
5541           c2 = tolower (*string2);
5542         }
5543       else
5544         {
5545           c1 = *string1;
5546           c2 = *string2;
5547         }
5548       if (c1 != c2)
5549         break;
5550
5551       string1 += 1;
5552       string2 += 1;
5553     }
5554
5555   switch (*string1)
5556     {
5557     case '(':
5558       return strcmp_iw_ordered (string1, string2);
5559     case '_':
5560       if (*string2 == '\0')
5561         {
5562           if (is_name_suffix (string1))
5563             return 0;
5564           else
5565             return 1;
5566         }
5567       /* FALLTHROUGH */
5568     default:
5569       if (*string2 == '(')
5570         return strcmp_iw_ordered (string1, string2);
5571       else
5572         {
5573           if (casing == case_sensitive_off)
5574             return tolower (*string1) - tolower (*string2);
5575           else
5576             return *string1 - *string2;
5577         }
5578     }
5579 }
5580
5581 /* Compare STRING1 to STRING2, with results as for strcmp.
5582    Compatible with strcmp_iw_ordered in that...
5583
5584        strcmp_iw_ordered (STRING1, STRING2) <= 0
5585
5586    ... implies...
5587
5588        compare_names (STRING1, STRING2) <= 0
5589
5590    (they may differ as to what symbols compare equal).  */
5591
5592 static int
5593 compare_names (const char *string1, const char *string2)
5594 {
5595   int result;
5596
5597   /* Similar to what strcmp_iw_ordered does, we need to perform
5598      a case-insensitive comparison first, and only resort to
5599      a second, case-sensitive, comparison if the first one was
5600      not sufficient to differentiate the two strings.  */
5601
5602   result = compare_names_with_case (string1, string2, case_sensitive_off);
5603   if (result == 0)
5604     result = compare_names_with_case (string1, string2, case_sensitive_on);
5605
5606   return result;
5607 }
5608
5609 /* Convenience function to get at the Ada encoded lookup name for
5610    LOOKUP_NAME, as a C string.  */
5611
5612 static const char *
5613 ada_lookup_name (const lookup_name_info &lookup_name)
5614 {
5615   return lookup_name.ada ().lookup_name ().c_str ();
5616 }
5617
5618 /* Add to OBSTACKP all non-local symbols whose name and domain match
5619    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5620    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5621    symbols otherwise.  */
5622
5623 static void
5624 add_nonlocal_symbols (struct obstack *obstackp,
5625                       const lookup_name_info &lookup_name,
5626                       domain_enum domain, int global)
5627 {
5628   struct match_data data;
5629
5630   memset (&data, 0, sizeof data);
5631   data.obstackp = obstackp;
5632
5633   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5634
5635   for (objfile *objfile : current_program_space->objfiles ())
5636     {
5637       data.objfile = objfile;
5638
5639       if (is_wild_match)
5640         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5641                                                domain, global,
5642                                                aux_add_nonlocal_symbols, &data,
5643                                                symbol_name_match_type::WILD,
5644                                                NULL);
5645       else
5646         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5647                                                domain, global,
5648                                                aux_add_nonlocal_symbols, &data,
5649                                                symbol_name_match_type::FULL,
5650                                                compare_names);
5651
5652       for (compunit_symtab *cu : objfile->compunits ())
5653         {
5654           const struct block *global_block
5655             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5656
5657           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5658                                        domain))
5659             data.found_sym = 1;
5660         }
5661     }
5662
5663   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5664     {
5665       const char *name = ada_lookup_name (lookup_name);
5666       std::string name1 = std::string ("<_ada_") + name + '>';
5667
5668       for (objfile *objfile : current_program_space->objfiles ())
5669         {
5670           data.objfile = objfile;
5671           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5672                                                  domain, global,
5673                                                  aux_add_nonlocal_symbols,
5674                                                  &data,
5675                                                  symbol_name_match_type::FULL,
5676                                                  compare_names);
5677         }
5678     }           
5679 }
5680
5681 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5682    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5683    returning the number of matches.  Add these to OBSTACKP.
5684
5685    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5686    symbol match within the nest of blocks whose innermost member is BLOCK,
5687    is the one match returned (no other matches in that or
5688    enclosing blocks is returned).  If there are any matches in or
5689    surrounding BLOCK, then these alone are returned.
5690
5691    Names prefixed with "standard__" are handled specially:
5692    "standard__" is first stripped off (by the lookup_name
5693    constructor), and only static and global symbols are searched.
5694
5695    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5696    to lookup global symbols.  */
5697
5698 static void
5699 ada_add_all_symbols (struct obstack *obstackp,
5700                      const struct block *block,
5701                      const lookup_name_info &lookup_name,
5702                      domain_enum domain,
5703                      int full_search,
5704                      int *made_global_lookup_p)
5705 {
5706   struct symbol *sym;
5707
5708   if (made_global_lookup_p)
5709     *made_global_lookup_p = 0;
5710
5711   /* Special case: If the user specifies a symbol name inside package
5712      Standard, do a non-wild matching of the symbol name without
5713      the "standard__" prefix.  This was primarily introduced in order
5714      to allow the user to specifically access the standard exceptions
5715      using, for instance, Standard.Constraint_Error when Constraint_Error
5716      is ambiguous (due to the user defining its own Constraint_Error
5717      entity inside its program).  */
5718   if (lookup_name.ada ().standard_p ())
5719     block = NULL;
5720
5721   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5722
5723   if (block != NULL)
5724     {
5725       if (full_search)
5726         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5727       else
5728         {
5729           /* In the !full_search case we're are being called by
5730              ada_iterate_over_symbols, and we don't want to search
5731              superblocks.  */
5732           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5733         }
5734       if (num_defns_collected (obstackp) > 0 || !full_search)
5735         return;
5736     }
5737
5738   /* No non-global symbols found.  Check our cache to see if we have
5739      already performed this search before.  If we have, then return
5740      the same result.  */
5741
5742   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5743                             domain, &sym, &block))
5744     {
5745       if (sym != NULL)
5746         add_defn_to_vec (obstackp, sym, block);
5747       return;
5748     }
5749
5750   if (made_global_lookup_p)
5751     *made_global_lookup_p = 1;
5752
5753   /* Search symbols from all global blocks.  */
5754  
5755   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5756
5757   /* Now add symbols from all per-file blocks if we've gotten no hits
5758      (not strictly correct, but perhaps better than an error).  */
5759
5760   if (num_defns_collected (obstackp) == 0)
5761     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5762 }
5763
5764 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5765    is non-zero, enclosing scope and in global scopes, returning the number of
5766    matches.
5767    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5768    found and the blocks and symbol tables (if any) in which they were
5769    found.
5770
5771    When full_search is non-zero, any non-function/non-enumeral
5772    symbol match within the nest of blocks whose innermost member is BLOCK,
5773    is the one match returned (no other matches in that or
5774    enclosing blocks is returned).  If there are any matches in or
5775    surrounding BLOCK, then these alone are returned.
5776
5777    Names prefixed with "standard__" are handled specially: "standard__"
5778    is first stripped off, and only static and global symbols are searched.  */
5779
5780 static int
5781 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5782                                const struct block *block,
5783                                domain_enum domain,
5784                                std::vector<struct block_symbol> *results,
5785                                int full_search)
5786 {
5787   int syms_from_global_search;
5788   int ndefns;
5789   auto_obstack obstack;
5790
5791   ada_add_all_symbols (&obstack, block, lookup_name,
5792                        domain, full_search, &syms_from_global_search);
5793
5794   ndefns = num_defns_collected (&obstack);
5795
5796   struct block_symbol *base = defns_collected (&obstack, 1);
5797   for (int i = 0; i < ndefns; ++i)
5798     results->push_back (base[i]);
5799
5800   ndefns = remove_extra_symbols (results);
5801
5802   if (ndefns == 0 && full_search && syms_from_global_search)
5803     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5804
5805   if (ndefns == 1 && full_search && syms_from_global_search)
5806     cache_symbol (ada_lookup_name (lookup_name), domain,
5807                   (*results)[0].symbol, (*results)[0].block);
5808
5809   ndefns = remove_irrelevant_renamings (results, block);
5810
5811   return ndefns;
5812 }
5813
5814 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5815    in global scopes, returning the number of matches, and filling *RESULTS
5816    with (SYM,BLOCK) tuples.
5817
5818    See ada_lookup_symbol_list_worker for further details.  */
5819
5820 int
5821 ada_lookup_symbol_list (const char *name, const struct block *block,
5822                         domain_enum domain,
5823                         std::vector<struct block_symbol> *results)
5824 {
5825   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5826   lookup_name_info lookup_name (name, name_match_type);
5827
5828   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5829 }
5830
5831 /* Implementation of the la_iterate_over_symbols method.  */
5832
5833 static void
5834 ada_iterate_over_symbols
5835   (const struct block *block, const lookup_name_info &name,
5836    domain_enum domain,
5837    gdb::function_view<symbol_found_callback_ftype> callback)
5838 {
5839   int ndefs, i;
5840   std::vector<struct block_symbol> results;
5841
5842   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5843
5844   for (i = 0; i < ndefs; ++i)
5845     {
5846       if (!callback (&results[i]))
5847         break;
5848     }
5849 }
5850
5851 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5852    to 1, but choosing the first symbol found if there are multiple
5853    choices.
5854
5855    The result is stored in *INFO, which must be non-NULL.
5856    If no match is found, INFO->SYM is set to NULL.  */
5857
5858 void
5859 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5860                            domain_enum domain,
5861                            struct block_symbol *info)
5862 {
5863   /* Since we already have an encoded name, wrap it in '<>' to force a
5864      verbatim match.  Otherwise, if the name happens to not look like
5865      an encoded name (because it doesn't include a "__"),
5866      ada_lookup_name_info would re-encode/fold it again, and that
5867      would e.g., incorrectly lowercase object renaming names like
5868      "R28b" -> "r28b".  */
5869   std::string verbatim = std::string ("<") + name + '>';
5870
5871   gdb_assert (info != NULL);
5872   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5873 }
5874
5875 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5876    scope and in global scopes, or NULL if none.  NAME is folded and
5877    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5878    choosing the first symbol if there are multiple choices.
5879    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5880
5881 struct block_symbol
5882 ada_lookup_symbol (const char *name, const struct block *block0,
5883                    domain_enum domain, int *is_a_field_of_this)
5884 {
5885   if (is_a_field_of_this != NULL)
5886     *is_a_field_of_this = 0;
5887
5888   std::vector<struct block_symbol> candidates;
5889   int n_candidates;
5890
5891   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5892
5893   if (n_candidates == 0)
5894     return {};
5895
5896   block_symbol info = candidates[0];
5897   info.symbol = fixup_symbol_section (info.symbol, NULL);
5898   return info;
5899 }
5900
5901 static struct block_symbol
5902 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5903                             const char *name,
5904                             const struct block *block,
5905                             const domain_enum domain)
5906 {
5907   struct block_symbol sym;
5908
5909   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5910   if (sym.symbol != NULL)
5911     return sym;
5912
5913   /* If we haven't found a match at this point, try the primitive
5914      types.  In other languages, this search is performed before
5915      searching for global symbols in order to short-circuit that
5916      global-symbol search if it happens that the name corresponds
5917      to a primitive type.  But we cannot do the same in Ada, because
5918      it is perfectly legitimate for a program to declare a type which
5919      has the same name as a standard type.  If looking up a type in
5920      that situation, we have traditionally ignored the primitive type
5921      in favor of user-defined types.  This is why, unlike most other
5922      languages, we search the primitive types this late and only after
5923      having searched the global symbols without success.  */
5924
5925   if (domain == VAR_DOMAIN)
5926     {
5927       struct gdbarch *gdbarch;
5928
5929       if (block == NULL)
5930         gdbarch = target_gdbarch ();
5931       else
5932         gdbarch = block_gdbarch (block);
5933       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5934       if (sym.symbol != NULL)
5935         return sym;
5936     }
5937
5938   return {};
5939 }
5940
5941
5942 /* True iff STR is a possible encoded suffix of a normal Ada name
5943    that is to be ignored for matching purposes.  Suffixes of parallel
5944    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5945    are given by any of the regular expressions:
5946
5947    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5948    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5949    TKB              [subprogram suffix for task bodies]
5950    _E[0-9]+[bs]$    [protected object entry suffixes]
5951    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5952
5953    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5954    match is performed.  This sequence is used to differentiate homonyms,
5955    is an optional part of a valid name suffix.  */
5956
5957 static int
5958 is_name_suffix (const char *str)
5959 {
5960   int k;
5961   const char *matching;
5962   const int len = strlen (str);
5963
5964   /* Skip optional leading __[0-9]+.  */
5965
5966   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5967     {
5968       str += 3;
5969       while (isdigit (str[0]))
5970         str += 1;
5971     }
5972   
5973   /* [.$][0-9]+ */
5974
5975   if (str[0] == '.' || str[0] == '$')
5976     {
5977       matching = str + 1;
5978       while (isdigit (matching[0]))
5979         matching += 1;
5980       if (matching[0] == '\0')
5981         return 1;
5982     }
5983
5984   /* ___[0-9]+ */
5985
5986   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5987     {
5988       matching = str + 3;
5989       while (isdigit (matching[0]))
5990         matching += 1;
5991       if (matching[0] == '\0')
5992         return 1;
5993     }
5994
5995   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5996
5997   if (strcmp (str, "TKB") == 0)
5998     return 1;
5999
6000 #if 0
6001   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6002      with a N at the end.  Unfortunately, the compiler uses the same
6003      convention for other internal types it creates.  So treating
6004      all entity names that end with an "N" as a name suffix causes
6005      some regressions.  For instance, consider the case of an enumerated
6006      type.  To support the 'Image attribute, it creates an array whose
6007      name ends with N.
6008      Having a single character like this as a suffix carrying some
6009      information is a bit risky.  Perhaps we should change the encoding
6010      to be something like "_N" instead.  In the meantime, do not do
6011      the following check.  */
6012   /* Protected Object Subprograms */
6013   if (len == 1 && str [0] == 'N')
6014     return 1;
6015 #endif
6016
6017   /* _E[0-9]+[bs]$ */
6018   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6019     {
6020       matching = str + 3;
6021       while (isdigit (matching[0]))
6022         matching += 1;
6023       if ((matching[0] == 'b' || matching[0] == 's')
6024           && matching [1] == '\0')
6025         return 1;
6026     }
6027
6028   /* ??? We should not modify STR directly, as we are doing below.  This
6029      is fine in this case, but may become problematic later if we find
6030      that this alternative did not work, and want to try matching
6031      another one from the begining of STR.  Since we modified it, we
6032      won't be able to find the begining of the string anymore!  */
6033   if (str[0] == 'X')
6034     {
6035       str += 1;
6036       while (str[0] != '_' && str[0] != '\0')
6037         {
6038           if (str[0] != 'n' && str[0] != 'b')
6039             return 0;
6040           str += 1;
6041         }
6042     }
6043
6044   if (str[0] == '\000')
6045     return 1;
6046
6047   if (str[0] == '_')
6048     {
6049       if (str[1] != '_' || str[2] == '\000')
6050         return 0;
6051       if (str[2] == '_')
6052         {
6053           if (strcmp (str + 3, "JM") == 0)
6054             return 1;
6055           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6056              the LJM suffix in favor of the JM one.  But we will
6057              still accept LJM as a valid suffix for a reasonable
6058              amount of time, just to allow ourselves to debug programs
6059              compiled using an older version of GNAT.  */
6060           if (strcmp (str + 3, "LJM") == 0)
6061             return 1;
6062           if (str[3] != 'X')
6063             return 0;
6064           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6065               || str[4] == 'U' || str[4] == 'P')
6066             return 1;
6067           if (str[4] == 'R' && str[5] != 'T')
6068             return 1;
6069           return 0;
6070         }
6071       if (!isdigit (str[2]))
6072         return 0;
6073       for (k = 3; str[k] != '\0'; k += 1)
6074         if (!isdigit (str[k]) && str[k] != '_')
6075           return 0;
6076       return 1;
6077     }
6078   if (str[0] == '$' && isdigit (str[1]))
6079     {
6080       for (k = 2; str[k] != '\0'; k += 1)
6081         if (!isdigit (str[k]) && str[k] != '_')
6082           return 0;
6083       return 1;
6084     }
6085   return 0;
6086 }
6087
6088 /* Return non-zero if the string starting at NAME and ending before
6089    NAME_END contains no capital letters.  */
6090
6091 static int
6092 is_valid_name_for_wild_match (const char *name0)
6093 {
6094   const char *decoded_name = ada_decode (name0);
6095   int i;
6096
6097   /* If the decoded name starts with an angle bracket, it means that
6098      NAME0 does not follow the GNAT encoding format.  It should then
6099      not be allowed as a possible wild match.  */
6100   if (decoded_name[0] == '<')
6101     return 0;
6102
6103   for (i=0; decoded_name[i] != '\0'; i++)
6104     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6105       return 0;
6106
6107   return 1;
6108 }
6109
6110 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6111    that could start a simple name.  Assumes that *NAMEP points into
6112    the string beginning at NAME0.  */
6113
6114 static int
6115 advance_wild_match (const char **namep, const char *name0, int target0)
6116 {
6117   const char *name = *namep;
6118
6119   while (1)
6120     {
6121       int t0, t1;
6122
6123       t0 = *name;
6124       if (t0 == '_')
6125         {
6126           t1 = name[1];
6127           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6128             {
6129               name += 1;
6130               if (name == name0 + 5 && startswith (name0, "_ada"))
6131                 break;
6132               else
6133                 name += 1;
6134             }
6135           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6136                                  || name[2] == target0))
6137             {
6138               name += 2;
6139               break;
6140             }
6141           else
6142             return 0;
6143         }
6144       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6145         name += 1;
6146       else
6147         return 0;
6148     }
6149
6150   *namep = name;
6151   return 1;
6152 }
6153
6154 /* Return true iff NAME encodes a name of the form prefix.PATN.
6155    Ignores any informational suffixes of NAME (i.e., for which
6156    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6157    simple name.  */
6158
6159 static bool
6160 wild_match (const char *name, const char *patn)
6161 {
6162   const char *p;
6163   const char *name0 = name;
6164
6165   while (1)
6166     {
6167       const char *match = name;
6168
6169       if (*name == *patn)
6170         {
6171           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6172             if (*p != *name)
6173               break;
6174           if (*p == '\0' && is_name_suffix (name))
6175             return match == name0 || is_valid_name_for_wild_match (name0);
6176
6177           if (name[-1] == '_')
6178             name -= 1;
6179         }
6180       if (!advance_wild_match (&name, name0, *patn))
6181         return false;
6182     }
6183 }
6184
6185 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6186    any trailing suffixes that encode debugging information or leading
6187    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6188    information that is ignored).  */
6189
6190 static bool
6191 full_match (const char *sym_name, const char *search_name)
6192 {
6193   size_t search_name_len = strlen (search_name);
6194
6195   if (strncmp (sym_name, search_name, search_name_len) == 0
6196       && is_name_suffix (sym_name + search_name_len))
6197     return true;
6198
6199   if (startswith (sym_name, "_ada_")
6200       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6201       && is_name_suffix (sym_name + search_name_len + 5))
6202     return true;
6203
6204   return false;
6205 }
6206
6207 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6208    *defn_symbols, updating the list of symbols in OBSTACKP (if
6209    necessary).  OBJFILE is the section containing BLOCK.  */
6210
6211 static void
6212 ada_add_block_symbols (struct obstack *obstackp,
6213                        const struct block *block,
6214                        const lookup_name_info &lookup_name,
6215                        domain_enum domain, struct objfile *objfile)
6216 {
6217   struct block_iterator iter;
6218   /* A matching argument symbol, if any.  */
6219   struct symbol *arg_sym;
6220   /* Set true when we find a matching non-argument symbol.  */
6221   int found_sym;
6222   struct symbol *sym;
6223
6224   arg_sym = NULL;
6225   found_sym = 0;
6226   for (sym = block_iter_match_first (block, lookup_name, &iter);
6227        sym != NULL;
6228        sym = block_iter_match_next (lookup_name, &iter))
6229     {
6230       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6231                                  SYMBOL_DOMAIN (sym), domain))
6232         {
6233           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6234             {
6235               if (SYMBOL_IS_ARGUMENT (sym))
6236                 arg_sym = sym;
6237               else
6238                 {
6239                   found_sym = 1;
6240                   add_defn_to_vec (obstackp,
6241                                    fixup_symbol_section (sym, objfile),
6242                                    block);
6243                 }
6244             }
6245         }
6246     }
6247
6248   /* Handle renamings.  */
6249
6250   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6251     found_sym = 1;
6252
6253   if (!found_sym && arg_sym != NULL)
6254     {
6255       add_defn_to_vec (obstackp,
6256                        fixup_symbol_section (arg_sym, objfile),
6257                        block);
6258     }
6259
6260   if (!lookup_name.ada ().wild_match_p ())
6261     {
6262       arg_sym = NULL;
6263       found_sym = 0;
6264       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6265       const char *name = ada_lookup_name.c_str ();
6266       size_t name_len = ada_lookup_name.size ();
6267
6268       ALL_BLOCK_SYMBOLS (block, iter, sym)
6269       {
6270         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6271                                    SYMBOL_DOMAIN (sym), domain))
6272           {
6273             int cmp;
6274
6275             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6276             if (cmp == 0)
6277               {
6278                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6279                 if (cmp == 0)
6280                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6281                                  name_len);
6282               }
6283
6284             if (cmp == 0
6285                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6286               {
6287                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6288                   {
6289                     if (SYMBOL_IS_ARGUMENT (sym))
6290                       arg_sym = sym;
6291                     else
6292                       {
6293                         found_sym = 1;
6294                         add_defn_to_vec (obstackp,
6295                                          fixup_symbol_section (sym, objfile),
6296                                          block);
6297                       }
6298                   }
6299               }
6300           }
6301       }
6302
6303       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6304          They aren't parameters, right?  */
6305       if (!found_sym && arg_sym != NULL)
6306         {
6307           add_defn_to_vec (obstackp,
6308                            fixup_symbol_section (arg_sym, objfile),
6309                            block);
6310         }
6311     }
6312 }
6313 \f
6314
6315                                 /* Symbol Completion */
6316
6317 /* See symtab.h.  */
6318
6319 bool
6320 ada_lookup_name_info::matches
6321   (const char *sym_name,
6322    symbol_name_match_type match_type,
6323    completion_match_result *comp_match_res) const
6324 {
6325   bool match = false;
6326   const char *text = m_encoded_name.c_str ();
6327   size_t text_len = m_encoded_name.size ();
6328
6329   /* First, test against the fully qualified name of the symbol.  */
6330
6331   if (strncmp (sym_name, text, text_len) == 0)
6332     match = true;
6333
6334   if (match && !m_encoded_p)
6335     {
6336       /* One needed check before declaring a positive match is to verify
6337          that iff we are doing a verbatim match, the decoded version
6338          of the symbol name starts with '<'.  Otherwise, this symbol name
6339          is not a suitable completion.  */
6340       const char *sym_name_copy = sym_name;
6341       bool has_angle_bracket;
6342
6343       sym_name = ada_decode (sym_name);
6344       has_angle_bracket = (sym_name[0] == '<');
6345       match = (has_angle_bracket == m_verbatim_p);
6346       sym_name = sym_name_copy;
6347     }
6348
6349   if (match && !m_verbatim_p)
6350     {
6351       /* When doing non-verbatim match, another check that needs to
6352          be done is to verify that the potentially matching symbol name
6353          does not include capital letters, because the ada-mode would
6354          not be able to understand these symbol names without the
6355          angle bracket notation.  */
6356       const char *tmp;
6357
6358       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6359       if (*tmp != '\0')
6360         match = false;
6361     }
6362
6363   /* Second: Try wild matching...  */
6364
6365   if (!match && m_wild_match_p)
6366     {
6367       /* Since we are doing wild matching, this means that TEXT
6368          may represent an unqualified symbol name.  We therefore must
6369          also compare TEXT against the unqualified name of the symbol.  */
6370       sym_name = ada_unqualified_name (ada_decode (sym_name));
6371
6372       if (strncmp (sym_name, text, text_len) == 0)
6373         match = true;
6374     }
6375
6376   /* Finally: If we found a match, prepare the result to return.  */
6377
6378   if (!match)
6379     return false;
6380
6381   if (comp_match_res != NULL)
6382     {
6383       std::string &match_str = comp_match_res->match.storage ();
6384
6385       if (!m_encoded_p)
6386         match_str = ada_decode (sym_name);
6387       else
6388         {
6389           if (m_verbatim_p)
6390             match_str = add_angle_brackets (sym_name);
6391           else
6392             match_str = sym_name;
6393
6394         }
6395
6396       comp_match_res->set_match (match_str.c_str ());
6397     }
6398
6399   return true;
6400 }
6401
6402 /* Add the list of possible symbol names completing TEXT to TRACKER.
6403    WORD is the entire command on which completion is made.  */
6404
6405 static void
6406 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6407                                        complete_symbol_mode mode,
6408                                        symbol_name_match_type name_match_type,
6409                                        const char *text, const char *word,
6410                                        enum type_code code)
6411 {
6412   struct symbol *sym;
6413   const struct block *b, *surrounding_static_block = 0;
6414   struct block_iterator iter;
6415
6416   gdb_assert (code == TYPE_CODE_UNDEF);
6417
6418   lookup_name_info lookup_name (text, name_match_type, true);
6419
6420   /* First, look at the partial symtab symbols.  */
6421   expand_symtabs_matching (NULL,
6422                            lookup_name,
6423                            NULL,
6424                            NULL,
6425                            ALL_DOMAIN);
6426
6427   /* At this point scan through the misc symbol vectors and add each
6428      symbol you find to the list.  Eventually we want to ignore
6429      anything that isn't a text symbol (everything else will be
6430      handled by the psymtab code above).  */
6431
6432   for (objfile *objfile : current_program_space->objfiles ())
6433     {
6434       for (minimal_symbol *msymbol : objfile->msymbols ())
6435         {
6436           QUIT;
6437
6438           if (completion_skip_symbol (mode, msymbol))
6439             continue;
6440
6441           language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6442
6443           /* Ada minimal symbols won't have their language set to Ada.  If
6444              we let completion_list_add_name compare using the
6445              default/C-like matcher, then when completing e.g., symbols in a
6446              package named "pck", we'd match internal Ada symbols like
6447              "pckS", which are invalid in an Ada expression, unless you wrap
6448              them in '<' '>' to request a verbatim match.
6449
6450              Unfortunately, some Ada encoded names successfully demangle as
6451              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6452              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6453              with the wrong language set.  Paper over that issue here.  */
6454           if (symbol_language == language_auto
6455               || symbol_language == language_cplus)
6456             symbol_language = language_ada;
6457
6458           completion_list_add_name (tracker,
6459                                     symbol_language,
6460                                     MSYMBOL_LINKAGE_NAME (msymbol),
6461                                     lookup_name, text, word);
6462         }
6463     }
6464
6465   /* Search upwards from currently selected frame (so that we can
6466      complete on local vars.  */
6467
6468   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6469     {
6470       if (!BLOCK_SUPERBLOCK (b))
6471         surrounding_static_block = b;   /* For elmin of dups */
6472
6473       ALL_BLOCK_SYMBOLS (b, iter, sym)
6474       {
6475         if (completion_skip_symbol (mode, sym))
6476           continue;
6477
6478         completion_list_add_name (tracker,
6479                                   SYMBOL_LANGUAGE (sym),
6480                                   SYMBOL_LINKAGE_NAME (sym),
6481                                   lookup_name, text, word);
6482       }
6483     }
6484
6485   /* Go through the symtabs and check the externs and statics for
6486      symbols which match.  */
6487
6488   for (objfile *objfile : current_program_space->objfiles ())
6489     {
6490       for (compunit_symtab *s : objfile->compunits ())
6491         {
6492           QUIT;
6493           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6494           ALL_BLOCK_SYMBOLS (b, iter, sym)
6495             {
6496               if (completion_skip_symbol (mode, sym))
6497                 continue;
6498
6499               completion_list_add_name (tracker,
6500                                         SYMBOL_LANGUAGE (sym),
6501                                         SYMBOL_LINKAGE_NAME (sym),
6502                                         lookup_name, text, word);
6503             }
6504         }
6505     }
6506
6507   for (objfile *objfile : current_program_space->objfiles ())
6508     {
6509       for (compunit_symtab *s : objfile->compunits ())
6510         {
6511           QUIT;
6512           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6513           /* Don't do this block twice.  */
6514           if (b == surrounding_static_block)
6515             continue;
6516           ALL_BLOCK_SYMBOLS (b, iter, sym)
6517             {
6518               if (completion_skip_symbol (mode, sym))
6519                 continue;
6520
6521               completion_list_add_name (tracker,
6522                                         SYMBOL_LANGUAGE (sym),
6523                                         SYMBOL_LINKAGE_NAME (sym),
6524                                         lookup_name, text, word);
6525             }
6526         }
6527     }
6528 }
6529
6530                                 /* Field Access */
6531
6532 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6533    for tagged types.  */
6534
6535 static int
6536 ada_is_dispatch_table_ptr_type (struct type *type)
6537 {
6538   const char *name;
6539
6540   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6541     return 0;
6542
6543   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6544   if (name == NULL)
6545     return 0;
6546
6547   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6548 }
6549
6550 /* Return non-zero if TYPE is an interface tag.  */
6551
6552 static int
6553 ada_is_interface_tag (struct type *type)
6554 {
6555   const char *name = TYPE_NAME (type);
6556
6557   if (name == NULL)
6558     return 0;
6559
6560   return (strcmp (name, "ada__tags__interface_tag") == 0);
6561 }
6562
6563 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6564    to be invisible to users.  */
6565
6566 int
6567 ada_is_ignored_field (struct type *type, int field_num)
6568 {
6569   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6570     return 1;
6571
6572   /* Check the name of that field.  */
6573   {
6574     const char *name = TYPE_FIELD_NAME (type, field_num);
6575
6576     /* Anonymous field names should not be printed.
6577        brobecker/2007-02-20: I don't think this can actually happen
6578        but we don't want to print the value of annonymous fields anyway.  */
6579     if (name == NULL)
6580       return 1;
6581
6582     /* Normally, fields whose name start with an underscore ("_")
6583        are fields that have been internally generated by the compiler,
6584        and thus should not be printed.  The "_parent" field is special,
6585        however: This is a field internally generated by the compiler
6586        for tagged types, and it contains the components inherited from
6587        the parent type.  This field should not be printed as is, but
6588        should not be ignored either.  */
6589     if (name[0] == '_' && !startswith (name, "_parent"))
6590       return 1;
6591   }
6592
6593   /* If this is the dispatch table of a tagged type or an interface tag,
6594      then ignore.  */
6595   if (ada_is_tagged_type (type, 1)
6596       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6597           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6598     return 1;
6599
6600   /* Not a special field, so it should not be ignored.  */
6601   return 0;
6602 }
6603
6604 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6605    pointer or reference type whose ultimate target has a tag field.  */
6606
6607 int
6608 ada_is_tagged_type (struct type *type, int refok)
6609 {
6610   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6611 }
6612
6613 /* True iff TYPE represents the type of X'Tag */
6614
6615 int
6616 ada_is_tag_type (struct type *type)
6617 {
6618   type = ada_check_typedef (type);
6619
6620   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6621     return 0;
6622   else
6623     {
6624       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6625
6626       return (name != NULL
6627               && strcmp (name, "ada__tags__dispatch_table") == 0);
6628     }
6629 }
6630
6631 /* The type of the tag on VAL.  */
6632
6633 struct type *
6634 ada_tag_type (struct value *val)
6635 {
6636   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6637 }
6638
6639 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6640    retired at Ada 05).  */
6641
6642 static int
6643 is_ada95_tag (struct value *tag)
6644 {
6645   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6646 }
6647
6648 /* The value of the tag on VAL.  */
6649
6650 struct value *
6651 ada_value_tag (struct value *val)
6652 {
6653   return ada_value_struct_elt (val, "_tag", 0);
6654 }
6655
6656 /* The value of the tag on the object of type TYPE whose contents are
6657    saved at VALADDR, if it is non-null, or is at memory address
6658    ADDRESS.  */
6659
6660 static struct value *
6661 value_tag_from_contents_and_address (struct type *type,
6662                                      const gdb_byte *valaddr,
6663                                      CORE_ADDR address)
6664 {
6665   int tag_byte_offset;
6666   struct type *tag_type;
6667
6668   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6669                          NULL, NULL, NULL))
6670     {
6671       const gdb_byte *valaddr1 = ((valaddr == NULL)
6672                                   ? NULL
6673                                   : valaddr + tag_byte_offset);
6674       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6675
6676       return value_from_contents_and_address (tag_type, valaddr1, address1);
6677     }
6678   return NULL;
6679 }
6680
6681 static struct type *
6682 type_from_tag (struct value *tag)
6683 {
6684   const char *type_name = ada_tag_name (tag);
6685
6686   if (type_name != NULL)
6687     return ada_find_any_type (ada_encode (type_name));
6688   return NULL;
6689 }
6690
6691 /* Given a value OBJ of a tagged type, return a value of this
6692    type at the base address of the object.  The base address, as
6693    defined in Ada.Tags, it is the address of the primary tag of
6694    the object, and therefore where the field values of its full
6695    view can be fetched.  */
6696
6697 struct value *
6698 ada_tag_value_at_base_address (struct value *obj)
6699 {
6700   struct value *val;
6701   LONGEST offset_to_top = 0;
6702   struct type *ptr_type, *obj_type;
6703   struct value *tag;
6704   CORE_ADDR base_address;
6705
6706   obj_type = value_type (obj);
6707
6708   /* It is the responsability of the caller to deref pointers.  */
6709
6710   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6711       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6712     return obj;
6713
6714   tag = ada_value_tag (obj);
6715   if (!tag)
6716     return obj;
6717
6718   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6719
6720   if (is_ada95_tag (tag))
6721     return obj;
6722
6723   ptr_type = language_lookup_primitive_type
6724     (language_def (language_ada), target_gdbarch(), "storage_offset");
6725   ptr_type = lookup_pointer_type (ptr_type);
6726   val = value_cast (ptr_type, tag);
6727   if (!val)
6728     return obj;
6729
6730   /* It is perfectly possible that an exception be raised while
6731      trying to determine the base address, just like for the tag;
6732      see ada_tag_name for more details.  We do not print the error
6733      message for the same reason.  */
6734
6735   try
6736     {
6737       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6738     }
6739
6740   catch (const gdb_exception_error &e)
6741     {
6742       return obj;
6743     }
6744
6745   /* If offset is null, nothing to do.  */
6746
6747   if (offset_to_top == 0)
6748     return obj;
6749
6750   /* -1 is a special case in Ada.Tags; however, what should be done
6751      is not quite clear from the documentation.  So do nothing for
6752      now.  */
6753
6754   if (offset_to_top == -1)
6755     return obj;
6756
6757   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6758      from the base address.  This was however incompatible with
6759      C++ dispatch table: C++ uses a *negative* value to *add*
6760      to the base address.  Ada's convention has therefore been
6761      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6762      use the same convention.  Here, we support both cases by
6763      checking the sign of OFFSET_TO_TOP.  */
6764
6765   if (offset_to_top > 0)
6766     offset_to_top = -offset_to_top;
6767
6768   base_address = value_address (obj) + offset_to_top;
6769   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6770
6771   /* Make sure that we have a proper tag at the new address.
6772      Otherwise, offset_to_top is bogus (which can happen when
6773      the object is not initialized yet).  */
6774
6775   if (!tag)
6776     return obj;
6777
6778   obj_type = type_from_tag (tag);
6779
6780   if (!obj_type)
6781     return obj;
6782
6783   return value_from_contents_and_address (obj_type, NULL, base_address);
6784 }
6785
6786 /* Return the "ada__tags__type_specific_data" type.  */
6787
6788 static struct type *
6789 ada_get_tsd_type (struct inferior *inf)
6790 {
6791   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6792
6793   if (data->tsd_type == 0)
6794     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6795   return data->tsd_type;
6796 }
6797
6798 /* Return the TSD (type-specific data) associated to the given TAG.
6799    TAG is assumed to be the tag of a tagged-type entity.
6800
6801    May return NULL if we are unable to get the TSD.  */
6802
6803 static struct value *
6804 ada_get_tsd_from_tag (struct value *tag)
6805 {
6806   struct value *val;
6807   struct type *type;
6808
6809   /* First option: The TSD is simply stored as a field of our TAG.
6810      Only older versions of GNAT would use this format, but we have
6811      to test it first, because there are no visible markers for
6812      the current approach except the absence of that field.  */
6813
6814   val = ada_value_struct_elt (tag, "tsd", 1);
6815   if (val)
6816     return val;
6817
6818   /* Try the second representation for the dispatch table (in which
6819      there is no explicit 'tsd' field in the referent of the tag pointer,
6820      and instead the tsd pointer is stored just before the dispatch
6821      table.  */
6822
6823   type = ada_get_tsd_type (current_inferior());
6824   if (type == NULL)
6825     return NULL;
6826   type = lookup_pointer_type (lookup_pointer_type (type));
6827   val = value_cast (type, tag);
6828   if (val == NULL)
6829     return NULL;
6830   return value_ind (value_ptradd (val, -1));
6831 }
6832
6833 /* Given the TSD of a tag (type-specific data), return a string
6834    containing the name of the associated type.
6835
6836    The returned value is good until the next call.  May return NULL
6837    if we are unable to determine the tag name.  */
6838
6839 static char *
6840 ada_tag_name_from_tsd (struct value *tsd)
6841 {
6842   static char name[1024];
6843   char *p;
6844   struct value *val;
6845
6846   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6847   if (val == NULL)
6848     return NULL;
6849   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6850   for (p = name; *p != '\0'; p += 1)
6851     if (isalpha (*p))
6852       *p = tolower (*p);
6853   return name;
6854 }
6855
6856 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6857    a C string.
6858
6859    Return NULL if the TAG is not an Ada tag, or if we were unable to
6860    determine the name of that tag.  The result is good until the next
6861    call.  */
6862
6863 const char *
6864 ada_tag_name (struct value *tag)
6865 {
6866   char *name = NULL;
6867
6868   if (!ada_is_tag_type (value_type (tag)))
6869     return NULL;
6870
6871   /* It is perfectly possible that an exception be raised while trying
6872      to determine the TAG's name, even under normal circumstances:
6873      The associated variable may be uninitialized or corrupted, for
6874      instance. We do not let any exception propagate past this point.
6875      instead we return NULL.
6876
6877      We also do not print the error message either (which often is very
6878      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6879      the caller print a more meaningful message if necessary.  */
6880   try
6881     {
6882       struct value *tsd = ada_get_tsd_from_tag (tag);
6883
6884       if (tsd != NULL)
6885         name = ada_tag_name_from_tsd (tsd);
6886     }
6887   catch (const gdb_exception_error &e)
6888     {
6889     }
6890
6891   return name;
6892 }
6893
6894 /* The parent type of TYPE, or NULL if none.  */
6895
6896 struct type *
6897 ada_parent_type (struct type *type)
6898 {
6899   int i;
6900
6901   type = ada_check_typedef (type);
6902
6903   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6904     return NULL;
6905
6906   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6907     if (ada_is_parent_field (type, i))
6908       {
6909         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6910
6911         /* If the _parent field is a pointer, then dereference it.  */
6912         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6913           parent_type = TYPE_TARGET_TYPE (parent_type);
6914         /* If there is a parallel XVS type, get the actual base type.  */
6915         parent_type = ada_get_base_type (parent_type);
6916
6917         return ada_check_typedef (parent_type);
6918       }
6919
6920   return NULL;
6921 }
6922
6923 /* True iff field number FIELD_NUM of structure type TYPE contains the
6924    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6925    a structure type with at least FIELD_NUM+1 fields.  */
6926
6927 int
6928 ada_is_parent_field (struct type *type, int field_num)
6929 {
6930   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6931
6932   return (name != NULL
6933           && (startswith (name, "PARENT")
6934               || startswith (name, "_parent")));
6935 }
6936
6937 /* True iff field number FIELD_NUM of structure type TYPE is a
6938    transparent wrapper field (which should be silently traversed when doing
6939    field selection and flattened when printing).  Assumes TYPE is a
6940    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6941    structures.  */
6942
6943 int
6944 ada_is_wrapper_field (struct type *type, int field_num)
6945 {
6946   const char *name = TYPE_FIELD_NAME (type, field_num);
6947
6948   if (name != NULL && strcmp (name, "RETVAL") == 0)
6949     {
6950       /* This happens in functions with "out" or "in out" parameters
6951          which are passed by copy.  For such functions, GNAT describes
6952          the function's return type as being a struct where the return
6953          value is in a field called RETVAL, and where the other "out"
6954          or "in out" parameters are fields of that struct.  This is not
6955          a wrapper.  */
6956       return 0;
6957     }
6958
6959   return (name != NULL
6960           && (startswith (name, "PARENT")
6961               || strcmp (name, "REP") == 0
6962               || startswith (name, "_parent")
6963               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6964 }
6965
6966 /* True iff field number FIELD_NUM of structure or union type TYPE
6967    is a variant wrapper.  Assumes TYPE is a structure type with at least
6968    FIELD_NUM+1 fields.  */
6969
6970 int
6971 ada_is_variant_part (struct type *type, int field_num)
6972 {
6973   /* Only Ada types are eligible.  */
6974   if (!ADA_TYPE_P (type))
6975     return 0;
6976
6977   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6978
6979   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6980           || (is_dynamic_field (type, field_num)
6981               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6982                   == TYPE_CODE_UNION)));
6983 }
6984
6985 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6986    whose discriminants are contained in the record type OUTER_TYPE,
6987    returns the type of the controlling discriminant for the variant.
6988    May return NULL if the type could not be found.  */
6989
6990 struct type *
6991 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6992 {
6993   const char *name = ada_variant_discrim_name (var_type);
6994
6995   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6996 }
6997
6998 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6999    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7000    represents a 'when others' clause; otherwise 0.  */
7001
7002 int
7003 ada_is_others_clause (struct type *type, int field_num)
7004 {
7005   const char *name = TYPE_FIELD_NAME (type, field_num);
7006
7007   return (name != NULL && name[0] == 'O');
7008 }
7009
7010 /* Assuming that TYPE0 is the type of the variant part of a record,
7011    returns the name of the discriminant controlling the variant.
7012    The value is valid until the next call to ada_variant_discrim_name.  */
7013
7014 const char *
7015 ada_variant_discrim_name (struct type *type0)
7016 {
7017   static char *result = NULL;
7018   static size_t result_len = 0;
7019   struct type *type;
7020   const char *name;
7021   const char *discrim_end;
7022   const char *discrim_start;
7023
7024   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7025     type = TYPE_TARGET_TYPE (type0);
7026   else
7027     type = type0;
7028
7029   name = ada_type_name (type);
7030
7031   if (name == NULL || name[0] == '\000')
7032     return "";
7033
7034   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7035        discrim_end -= 1)
7036     {
7037       if (startswith (discrim_end, "___XVN"))
7038         break;
7039     }
7040   if (discrim_end == name)
7041     return "";
7042
7043   for (discrim_start = discrim_end; discrim_start != name + 3;
7044        discrim_start -= 1)
7045     {
7046       if (discrim_start == name + 1)
7047         return "";
7048       if ((discrim_start > name + 3
7049            && startswith (discrim_start - 3, "___"))
7050           || discrim_start[-1] == '.')
7051         break;
7052     }
7053
7054   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7055   strncpy (result, discrim_start, discrim_end - discrim_start);
7056   result[discrim_end - discrim_start] = '\0';
7057   return result;
7058 }
7059
7060 /* Scan STR for a subtype-encoded number, beginning at position K.
7061    Put the position of the character just past the number scanned in
7062    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7063    Return 1 if there was a valid number at the given position, and 0
7064    otherwise.  A "subtype-encoded" number consists of the absolute value
7065    in decimal, followed by the letter 'm' to indicate a negative number.
7066    Assumes 0m does not occur.  */
7067
7068 int
7069 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7070 {
7071   ULONGEST RU;
7072
7073   if (!isdigit (str[k]))
7074     return 0;
7075
7076   /* Do it the hard way so as not to make any assumption about
7077      the relationship of unsigned long (%lu scan format code) and
7078      LONGEST.  */
7079   RU = 0;
7080   while (isdigit (str[k]))
7081     {
7082       RU = RU * 10 + (str[k] - '0');
7083       k += 1;
7084     }
7085
7086   if (str[k] == 'm')
7087     {
7088       if (R != NULL)
7089         *R = (-(LONGEST) (RU - 1)) - 1;
7090       k += 1;
7091     }
7092   else if (R != NULL)
7093     *R = (LONGEST) RU;
7094
7095   /* NOTE on the above: Technically, C does not say what the results of
7096      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7097      number representable as a LONGEST (although either would probably work
7098      in most implementations).  When RU>0, the locution in the then branch
7099      above is always equivalent to the negative of RU.  */
7100
7101   if (new_k != NULL)
7102     *new_k = k;
7103   return 1;
7104 }
7105
7106 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7107    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7108    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7109
7110 int
7111 ada_in_variant (LONGEST val, struct type *type, int field_num)
7112 {
7113   const char *name = TYPE_FIELD_NAME (type, field_num);
7114   int p;
7115
7116   p = 0;
7117   while (1)
7118     {
7119       switch (name[p])
7120         {
7121         case '\0':
7122           return 0;
7123         case 'S':
7124           {
7125             LONGEST W;
7126
7127             if (!ada_scan_number (name, p + 1, &W, &p))
7128               return 0;
7129             if (val == W)
7130               return 1;
7131             break;
7132           }
7133         case 'R':
7134           {
7135             LONGEST L, U;
7136
7137             if (!ada_scan_number (name, p + 1, &L, &p)
7138                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7139               return 0;
7140             if (val >= L && val <= U)
7141               return 1;
7142             break;
7143           }
7144         case 'O':
7145           return 1;
7146         default:
7147           return 0;
7148         }
7149     }
7150 }
7151
7152 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7153
7154 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7155    ARG_TYPE, extract and return the value of one of its (non-static)
7156    fields.  FIELDNO says which field.   Differs from value_primitive_field
7157    only in that it can handle packed values of arbitrary type.  */
7158
7159 static struct value *
7160 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7161                            struct type *arg_type)
7162 {
7163   struct type *type;
7164
7165   arg_type = ada_check_typedef (arg_type);
7166   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7167
7168   /* Handle packed fields.  It might be that the field is not packed
7169      relative to its containing structure, but the structure itself is
7170      packed; in this case we must take the bit-field path.  */
7171   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7172     {
7173       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7174       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7175
7176       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7177                                              offset + bit_pos / 8,
7178                                              bit_pos % 8, bit_size, type);
7179     }
7180   else
7181     return value_primitive_field (arg1, offset, fieldno, arg_type);
7182 }
7183
7184 /* Find field with name NAME in object of type TYPE.  If found, 
7185    set the following for each argument that is non-null:
7186     - *FIELD_TYPE_P to the field's type; 
7187     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7188       an object of that type;
7189     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7190     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7191       0 otherwise;
7192    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7193    fields up to but not including the desired field, or by the total
7194    number of fields if not found.   A NULL value of NAME never
7195    matches; the function just counts visible fields in this case.
7196    
7197    Notice that we need to handle when a tagged record hierarchy
7198    has some components with the same name, like in this scenario:
7199
7200       type Top_T is tagged record
7201          N : Integer := 1;
7202          U : Integer := 974;
7203          A : Integer := 48;
7204       end record;
7205
7206       type Middle_T is new Top.Top_T with record
7207          N : Character := 'a';
7208          C : Integer := 3;
7209       end record;
7210
7211      type Bottom_T is new Middle.Middle_T with record
7212         N : Float := 4.0;
7213         C : Character := '5';
7214         X : Integer := 6;
7215         A : Character := 'J';
7216      end record;
7217
7218    Let's say we now have a variable declared and initialized as follow:
7219
7220      TC : Top_A := new Bottom_T;
7221
7222    And then we use this variable to call this function
7223
7224      procedure Assign (Obj: in out Top_T; TV : Integer);
7225
7226    as follow:
7227
7228       Assign (Top_T (B), 12);
7229
7230    Now, we're in the debugger, and we're inside that procedure
7231    then and we want to print the value of obj.c:
7232
7233    Usually, the tagged record or one of the parent type owns the
7234    component to print and there's no issue but in this particular
7235    case, what does it mean to ask for Obj.C? Since the actual
7236    type for object is type Bottom_T, it could mean two things: type
7237    component C from the Middle_T view, but also component C from
7238    Bottom_T.  So in that "undefined" case, when the component is
7239    not found in the non-resolved type (which includes all the
7240    components of the parent type), then resolve it and see if we
7241    get better luck once expanded.
7242
7243    In the case of homonyms in the derived tagged type, we don't
7244    guaranty anything, and pick the one that's easiest for us
7245    to program.
7246
7247    Returns 1 if found, 0 otherwise.  */
7248
7249 static int
7250 find_struct_field (const char *name, struct type *type, int offset,
7251                    struct type **field_type_p,
7252                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7253                    int *index_p)
7254 {
7255   int i;
7256   int parent_offset = -1;
7257
7258   type = ada_check_typedef (type);
7259
7260   if (field_type_p != NULL)
7261     *field_type_p = NULL;
7262   if (byte_offset_p != NULL)
7263     *byte_offset_p = 0;
7264   if (bit_offset_p != NULL)
7265     *bit_offset_p = 0;
7266   if (bit_size_p != NULL)
7267     *bit_size_p = 0;
7268
7269   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7270     {
7271       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7272       int fld_offset = offset + bit_pos / 8;
7273       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7274
7275       if (t_field_name == NULL)
7276         continue;
7277
7278       else if (ada_is_parent_field (type, i))
7279         {
7280           /* This is a field pointing us to the parent type of a tagged
7281              type.  As hinted in this function's documentation, we give
7282              preference to fields in the current record first, so what
7283              we do here is just record the index of this field before
7284              we skip it.  If it turns out we couldn't find our field
7285              in the current record, then we'll get back to it and search
7286              inside it whether the field might exist in the parent.  */
7287
7288           parent_offset = i;
7289           continue;
7290         }
7291
7292       else if (name != NULL && field_name_match (t_field_name, name))
7293         {
7294           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7295
7296           if (field_type_p != NULL)
7297             *field_type_p = TYPE_FIELD_TYPE (type, i);
7298           if (byte_offset_p != NULL)
7299             *byte_offset_p = fld_offset;
7300           if (bit_offset_p != NULL)
7301             *bit_offset_p = bit_pos % 8;
7302           if (bit_size_p != NULL)
7303             *bit_size_p = bit_size;
7304           return 1;
7305         }
7306       else if (ada_is_wrapper_field (type, i))
7307         {
7308           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7309                                  field_type_p, byte_offset_p, bit_offset_p,
7310                                  bit_size_p, index_p))
7311             return 1;
7312         }
7313       else if (ada_is_variant_part (type, i))
7314         {
7315           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7316              fixed type?? */
7317           int j;
7318           struct type *field_type
7319             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7320
7321           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7322             {
7323               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7324                                      fld_offset
7325                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7326                                      field_type_p, byte_offset_p,
7327                                      bit_offset_p, bit_size_p, index_p))
7328                 return 1;
7329             }
7330         }
7331       else if (index_p != NULL)
7332         *index_p += 1;
7333     }
7334
7335   /* Field not found so far.  If this is a tagged type which
7336      has a parent, try finding that field in the parent now.  */
7337
7338   if (parent_offset != -1)
7339     {
7340       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7341       int fld_offset = offset + bit_pos / 8;
7342
7343       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7344                              fld_offset, field_type_p, byte_offset_p,
7345                              bit_offset_p, bit_size_p, index_p))
7346         return 1;
7347     }
7348
7349   return 0;
7350 }
7351
7352 /* Number of user-visible fields in record type TYPE.  */
7353
7354 static int
7355 num_visible_fields (struct type *type)
7356 {
7357   int n;
7358
7359   n = 0;
7360   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7361   return n;
7362 }
7363
7364 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7365    and search in it assuming it has (class) type TYPE.
7366    If found, return value, else return NULL.
7367
7368    Searches recursively through wrapper fields (e.g., '_parent').
7369
7370    In the case of homonyms in the tagged types, please refer to the
7371    long explanation in find_struct_field's function documentation.  */
7372
7373 static struct value *
7374 ada_search_struct_field (const char *name, struct value *arg, int offset,
7375                          struct type *type)
7376 {
7377   int i;
7378   int parent_offset = -1;
7379
7380   type = ada_check_typedef (type);
7381   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7382     {
7383       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7384
7385       if (t_field_name == NULL)
7386         continue;
7387
7388       else if (ada_is_parent_field (type, i))
7389         {
7390           /* This is a field pointing us to the parent type of a tagged
7391              type.  As hinted in this function's documentation, we give
7392              preference to fields in the current record first, so what
7393              we do here is just record the index of this field before
7394              we skip it.  If it turns out we couldn't find our field
7395              in the current record, then we'll get back to it and search
7396              inside it whether the field might exist in the parent.  */
7397
7398           parent_offset = i;
7399           continue;
7400         }
7401
7402       else if (field_name_match (t_field_name, name))
7403         return ada_value_primitive_field (arg, offset, i, type);
7404
7405       else if (ada_is_wrapper_field (type, i))
7406         {
7407           struct value *v =     /* Do not let indent join lines here.  */
7408             ada_search_struct_field (name, arg,
7409                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7410                                      TYPE_FIELD_TYPE (type, i));
7411
7412           if (v != NULL)
7413             return v;
7414         }
7415
7416       else if (ada_is_variant_part (type, i))
7417         {
7418           /* PNH: Do we ever get here?  See find_struct_field.  */
7419           int j;
7420           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7421                                                                         i));
7422           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7423
7424           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7425             {
7426               struct value *v = ada_search_struct_field /* Force line
7427                                                            break.  */
7428                 (name, arg,
7429                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7430                  TYPE_FIELD_TYPE (field_type, j));
7431
7432               if (v != NULL)
7433                 return v;
7434             }
7435         }
7436     }
7437
7438   /* Field not found so far.  If this is a tagged type which
7439      has a parent, try finding that field in the parent now.  */
7440
7441   if (parent_offset != -1)
7442     {
7443       struct value *v = ada_search_struct_field (
7444         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7445         TYPE_FIELD_TYPE (type, parent_offset));
7446
7447       if (v != NULL)
7448         return v;
7449     }
7450
7451   return NULL;
7452 }
7453
7454 static struct value *ada_index_struct_field_1 (int *, struct value *,
7455                                                int, struct type *);
7456
7457
7458 /* Return field #INDEX in ARG, where the index is that returned by
7459  * find_struct_field through its INDEX_P argument.  Adjust the address
7460  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7461  * If found, return value, else return NULL.  */
7462
7463 static struct value *
7464 ada_index_struct_field (int index, struct value *arg, int offset,
7465                         struct type *type)
7466 {
7467   return ada_index_struct_field_1 (&index, arg, offset, type);
7468 }
7469
7470
7471 /* Auxiliary function for ada_index_struct_field.  Like
7472  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7473  * *INDEX_P.  */
7474
7475 static struct value *
7476 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7477                           struct type *type)
7478 {
7479   int i;
7480   type = ada_check_typedef (type);
7481
7482   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7483     {
7484       if (TYPE_FIELD_NAME (type, i) == NULL)
7485         continue;
7486       else if (ada_is_wrapper_field (type, i))
7487         {
7488           struct value *v =     /* Do not let indent join lines here.  */
7489             ada_index_struct_field_1 (index_p, arg,
7490                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7491                                       TYPE_FIELD_TYPE (type, i));
7492
7493           if (v != NULL)
7494             return v;
7495         }
7496
7497       else if (ada_is_variant_part (type, i))
7498         {
7499           /* PNH: Do we ever get here?  See ada_search_struct_field,
7500              find_struct_field.  */
7501           error (_("Cannot assign this kind of variant record"));
7502         }
7503       else if (*index_p == 0)
7504         return ada_value_primitive_field (arg, offset, i, type);
7505       else
7506         *index_p -= 1;
7507     }
7508   return NULL;
7509 }
7510
7511 /* Given ARG, a value of type (pointer or reference to a)*
7512    structure/union, extract the component named NAME from the ultimate
7513    target structure/union and return it as a value with its
7514    appropriate type.
7515
7516    The routine searches for NAME among all members of the structure itself
7517    and (recursively) among all members of any wrapper members
7518    (e.g., '_parent').
7519
7520    If NO_ERR, then simply return NULL in case of error, rather than 
7521    calling error.  */
7522
7523 struct value *
7524 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7525 {
7526   struct type *t, *t1;
7527   struct value *v;
7528   int check_tag;
7529
7530   v = NULL;
7531   t1 = t = ada_check_typedef (value_type (arg));
7532   if (TYPE_CODE (t) == TYPE_CODE_REF)
7533     {
7534       t1 = TYPE_TARGET_TYPE (t);
7535       if (t1 == NULL)
7536         goto BadValue;
7537       t1 = ada_check_typedef (t1);
7538       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7539         {
7540           arg = coerce_ref (arg);
7541           t = t1;
7542         }
7543     }
7544
7545   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7546     {
7547       t1 = TYPE_TARGET_TYPE (t);
7548       if (t1 == NULL)
7549         goto BadValue;
7550       t1 = ada_check_typedef (t1);
7551       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7552         {
7553           arg = value_ind (arg);
7554           t = t1;
7555         }
7556       else
7557         break;
7558     }
7559
7560   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7561     goto BadValue;
7562
7563   if (t1 == t)
7564     v = ada_search_struct_field (name, arg, 0, t);
7565   else
7566     {
7567       int bit_offset, bit_size, byte_offset;
7568       struct type *field_type;
7569       CORE_ADDR address;
7570
7571       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7572         address = value_address (ada_value_ind (arg));
7573       else
7574         address = value_address (ada_coerce_ref (arg));
7575
7576       /* Check to see if this is a tagged type.  We also need to handle
7577          the case where the type is a reference to a tagged type, but
7578          we have to be careful to exclude pointers to tagged types.
7579          The latter should be shown as usual (as a pointer), whereas
7580          a reference should mostly be transparent to the user.  */
7581
7582       if (ada_is_tagged_type (t1, 0)
7583           || (TYPE_CODE (t1) == TYPE_CODE_REF
7584               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7585         {
7586           /* We first try to find the searched field in the current type.
7587              If not found then let's look in the fixed type.  */
7588
7589           if (!find_struct_field (name, t1, 0,
7590                                   &field_type, &byte_offset, &bit_offset,
7591                                   &bit_size, NULL))
7592             check_tag = 1;
7593           else
7594             check_tag = 0;
7595         }
7596       else
7597         check_tag = 0;
7598
7599       /* Convert to fixed type in all cases, so that we have proper
7600          offsets to each field in unconstrained record types.  */
7601       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7602                               address, NULL, check_tag);
7603
7604       if (find_struct_field (name, t1, 0,
7605                              &field_type, &byte_offset, &bit_offset,
7606                              &bit_size, NULL))
7607         {
7608           if (bit_size != 0)
7609             {
7610               if (TYPE_CODE (t) == TYPE_CODE_REF)
7611                 arg = ada_coerce_ref (arg);
7612               else
7613                 arg = ada_value_ind (arg);
7614               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7615                                                   bit_offset, bit_size,
7616                                                   field_type);
7617             }
7618           else
7619             v = value_at_lazy (field_type, address + byte_offset);
7620         }
7621     }
7622
7623   if (v != NULL || no_err)
7624     return v;
7625   else
7626     error (_("There is no member named %s."), name);
7627
7628  BadValue:
7629   if (no_err)
7630     return NULL;
7631   else
7632     error (_("Attempt to extract a component of "
7633              "a value that is not a record."));
7634 }
7635
7636 /* Return a string representation of type TYPE.  */
7637
7638 static std::string
7639 type_as_string (struct type *type)
7640 {
7641   string_file tmp_stream;
7642
7643   type_print (type, "", &tmp_stream, -1);
7644
7645   return std::move (tmp_stream.string ());
7646 }
7647
7648 /* Given a type TYPE, look up the type of the component of type named NAME.
7649    If DISPP is non-null, add its byte displacement from the beginning of a
7650    structure (pointed to by a value) of type TYPE to *DISPP (does not
7651    work for packed fields).
7652
7653    Matches any field whose name has NAME as a prefix, possibly
7654    followed by "___".
7655
7656    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7657    be a (pointer or reference)+ to a struct or union, and the
7658    ultimate target type will be searched.
7659
7660    Looks recursively into variant clauses and parent types.
7661
7662    In the case of homonyms in the tagged types, please refer to the
7663    long explanation in find_struct_field's function documentation.
7664
7665    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7666    TYPE is not a type of the right kind.  */
7667
7668 static struct type *
7669 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7670                             int noerr)
7671 {
7672   int i;
7673   int parent_offset = -1;
7674
7675   if (name == NULL)
7676     goto BadName;
7677
7678   if (refok && type != NULL)
7679     while (1)
7680       {
7681         type = ada_check_typedef (type);
7682         if (TYPE_CODE (type) != TYPE_CODE_PTR
7683             && TYPE_CODE (type) != TYPE_CODE_REF)
7684           break;
7685         type = TYPE_TARGET_TYPE (type);
7686       }
7687
7688   if (type == NULL
7689       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7690           && TYPE_CODE (type) != TYPE_CODE_UNION))
7691     {
7692       if (noerr)
7693         return NULL;
7694
7695       error (_("Type %s is not a structure or union type"),
7696              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7697     }
7698
7699   type = to_static_fixed_type (type);
7700
7701   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7702     {
7703       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7704       struct type *t;
7705
7706       if (t_field_name == NULL)
7707         continue;
7708
7709       else if (ada_is_parent_field (type, i))
7710         {
7711           /* This is a field pointing us to the parent type of a tagged
7712              type.  As hinted in this function's documentation, we give
7713              preference to fields in the current record first, so what
7714              we do here is just record the index of this field before
7715              we skip it.  If it turns out we couldn't find our field
7716              in the current record, then we'll get back to it and search
7717              inside it whether the field might exist in the parent.  */
7718
7719           parent_offset = i;
7720           continue;
7721         }
7722
7723       else if (field_name_match (t_field_name, name))
7724         return TYPE_FIELD_TYPE (type, i);
7725
7726       else if (ada_is_wrapper_field (type, i))
7727         {
7728           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7729                                           0, 1);
7730           if (t != NULL)
7731             return t;
7732         }
7733
7734       else if (ada_is_variant_part (type, i))
7735         {
7736           int j;
7737           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7738                                                                         i));
7739
7740           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7741             {
7742               /* FIXME pnh 2008/01/26: We check for a field that is
7743                  NOT wrapped in a struct, since the compiler sometimes
7744                  generates these for unchecked variant types.  Revisit
7745                  if the compiler changes this practice.  */
7746               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7747
7748               if (v_field_name != NULL 
7749                   && field_name_match (v_field_name, name))
7750                 t = TYPE_FIELD_TYPE (field_type, j);
7751               else
7752                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7753                                                                  j),
7754                                                 name, 0, 1);
7755
7756               if (t != NULL)
7757                 return t;
7758             }
7759         }
7760
7761     }
7762
7763     /* Field not found so far.  If this is a tagged type which
7764        has a parent, try finding that field in the parent now.  */
7765
7766     if (parent_offset != -1)
7767       {
7768         struct type *t;
7769
7770         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7771                                         name, 0, 1);
7772         if (t != NULL)
7773           return t;
7774       }
7775
7776 BadName:
7777   if (!noerr)
7778     {
7779       const char *name_str = name != NULL ? name : _("<null>");
7780
7781       error (_("Type %s has no component named %s"),
7782              type_as_string (type).c_str (), name_str);
7783     }
7784
7785   return NULL;
7786 }
7787
7788 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7789    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7790    represents an unchecked union (that is, the variant part of a
7791    record that is named in an Unchecked_Union pragma).  */
7792
7793 static int
7794 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7795 {
7796   const char *discrim_name = ada_variant_discrim_name (var_type);
7797
7798   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7799 }
7800
7801
7802 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7803    within a value of type OUTER_TYPE that is stored in GDB at
7804    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7805    numbering from 0) is applicable.  Returns -1 if none are.  */
7806
7807 int
7808 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7809                            const gdb_byte *outer_valaddr)
7810 {
7811   int others_clause;
7812   int i;
7813   const char *discrim_name = ada_variant_discrim_name (var_type);
7814   struct value *outer;
7815   struct value *discrim;
7816   LONGEST discrim_val;
7817
7818   /* Using plain value_from_contents_and_address here causes problems
7819      because we will end up trying to resolve a type that is currently
7820      being constructed.  */
7821   outer = value_from_contents_and_address_unresolved (outer_type,
7822                                                       outer_valaddr, 0);
7823   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7824   if (discrim == NULL)
7825     return -1;
7826   discrim_val = value_as_long (discrim);
7827
7828   others_clause = -1;
7829   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7830     {
7831       if (ada_is_others_clause (var_type, i))
7832         others_clause = i;
7833       else if (ada_in_variant (discrim_val, var_type, i))
7834         return i;
7835     }
7836
7837   return others_clause;
7838 }
7839 \f
7840
7841
7842                                 /* Dynamic-Sized Records */
7843
7844 /* Strategy: The type ostensibly attached to a value with dynamic size
7845    (i.e., a size that is not statically recorded in the debugging
7846    data) does not accurately reflect the size or layout of the value.
7847    Our strategy is to convert these values to values with accurate,
7848    conventional types that are constructed on the fly.  */
7849
7850 /* There is a subtle and tricky problem here.  In general, we cannot
7851    determine the size of dynamic records without its data.  However,
7852    the 'struct value' data structure, which GDB uses to represent
7853    quantities in the inferior process (the target), requires the size
7854    of the type at the time of its allocation in order to reserve space
7855    for GDB's internal copy of the data.  That's why the
7856    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7857    rather than struct value*s.
7858
7859    However, GDB's internal history variables ($1, $2, etc.) are
7860    struct value*s containing internal copies of the data that are not, in
7861    general, the same as the data at their corresponding addresses in
7862    the target.  Fortunately, the types we give to these values are all
7863    conventional, fixed-size types (as per the strategy described
7864    above), so that we don't usually have to perform the
7865    'to_fixed_xxx_type' conversions to look at their values.
7866    Unfortunately, there is one exception: if one of the internal
7867    history variables is an array whose elements are unconstrained
7868    records, then we will need to create distinct fixed types for each
7869    element selected.  */
7870
7871 /* The upshot of all of this is that many routines take a (type, host
7872    address, target address) triple as arguments to represent a value.
7873    The host address, if non-null, is supposed to contain an internal
7874    copy of the relevant data; otherwise, the program is to consult the
7875    target at the target address.  */
7876
7877 /* Assuming that VAL0 represents a pointer value, the result of
7878    dereferencing it.  Differs from value_ind in its treatment of
7879    dynamic-sized types.  */
7880
7881 struct value *
7882 ada_value_ind (struct value *val0)
7883 {
7884   struct value *val = value_ind (val0);
7885
7886   if (ada_is_tagged_type (value_type (val), 0))
7887     val = ada_tag_value_at_base_address (val);
7888
7889   return ada_to_fixed_value (val);
7890 }
7891
7892 /* The value resulting from dereferencing any "reference to"
7893    qualifiers on VAL0.  */
7894
7895 static struct value *
7896 ada_coerce_ref (struct value *val0)
7897 {
7898   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7899     {
7900       struct value *val = val0;
7901
7902       val = coerce_ref (val);
7903
7904       if (ada_is_tagged_type (value_type (val), 0))
7905         val = ada_tag_value_at_base_address (val);
7906
7907       return ada_to_fixed_value (val);
7908     }
7909   else
7910     return val0;
7911 }
7912
7913 /* Return OFF rounded upward if necessary to a multiple of
7914    ALIGNMENT (a power of 2).  */
7915
7916 static unsigned int
7917 align_value (unsigned int off, unsigned int alignment)
7918 {
7919   return (off + alignment - 1) & ~(alignment - 1);
7920 }
7921
7922 /* Return the bit alignment required for field #F of template type TYPE.  */
7923
7924 static unsigned int
7925 field_alignment (struct type *type, int f)
7926 {
7927   const char *name = TYPE_FIELD_NAME (type, f);
7928   int len;
7929   int align_offset;
7930
7931   /* The field name should never be null, unless the debugging information
7932      is somehow malformed.  In this case, we assume the field does not
7933      require any alignment.  */
7934   if (name == NULL)
7935     return 1;
7936
7937   len = strlen (name);
7938
7939   if (!isdigit (name[len - 1]))
7940     return 1;
7941
7942   if (isdigit (name[len - 2]))
7943     align_offset = len - 2;
7944   else
7945     align_offset = len - 1;
7946
7947   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7948     return TARGET_CHAR_BIT;
7949
7950   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7951 }
7952
7953 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7954
7955 static struct symbol *
7956 ada_find_any_type_symbol (const char *name)
7957 {
7958   struct symbol *sym;
7959
7960   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7961   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7962     return sym;
7963
7964   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7965   return sym;
7966 }
7967
7968 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7969    solely for types defined by debug info, it will not search the GDB
7970    primitive types.  */
7971
7972 static struct type *
7973 ada_find_any_type (const char *name)
7974 {
7975   struct symbol *sym = ada_find_any_type_symbol (name);
7976
7977   if (sym != NULL)
7978     return SYMBOL_TYPE (sym);
7979
7980   return NULL;
7981 }
7982
7983 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7984    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7985    symbol, in which case it is returned.  Otherwise, this looks for
7986    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7987    Return symbol if found, and NULL otherwise.  */
7988
7989 struct symbol *
7990 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7991 {
7992   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7993   struct symbol *sym;
7994
7995   if (strstr (name, "___XR") != NULL)
7996      return name_sym;
7997
7998   sym = find_old_style_renaming_symbol (name, block);
7999
8000   if (sym != NULL)
8001     return sym;
8002
8003   /* Not right yet.  FIXME pnh 7/20/2007.  */
8004   sym = ada_find_any_type_symbol (name);
8005   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8006     return sym;
8007   else
8008     return NULL;
8009 }
8010
8011 static struct symbol *
8012 find_old_style_renaming_symbol (const char *name, const struct block *block)
8013 {
8014   const struct symbol *function_sym = block_linkage_function (block);
8015   char *rename;
8016
8017   if (function_sym != NULL)
8018     {
8019       /* If the symbol is defined inside a function, NAME is not fully
8020          qualified.  This means we need to prepend the function name
8021          as well as adding the ``___XR'' suffix to build the name of
8022          the associated renaming symbol.  */
8023       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8024       /* Function names sometimes contain suffixes used
8025          for instance to qualify nested subprograms.  When building
8026          the XR type name, we need to make sure that this suffix is
8027          not included.  So do not include any suffix in the function
8028          name length below.  */
8029       int function_name_len = ada_name_prefix_len (function_name);
8030       const int rename_len = function_name_len + 2      /*  "__" */
8031         + strlen (name) + 6 /* "___XR\0" */ ;
8032
8033       /* Strip the suffix if necessary.  */
8034       ada_remove_trailing_digits (function_name, &function_name_len);
8035       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8036       ada_remove_Xbn_suffix (function_name, &function_name_len);
8037
8038       /* Library-level functions are a special case, as GNAT adds
8039          a ``_ada_'' prefix to the function name to avoid namespace
8040          pollution.  However, the renaming symbols themselves do not
8041          have this prefix, so we need to skip this prefix if present.  */
8042       if (function_name_len > 5 /* "_ada_" */
8043           && strstr (function_name, "_ada_") == function_name)
8044         {
8045           function_name += 5;
8046           function_name_len -= 5;
8047         }
8048
8049       rename = (char *) alloca (rename_len * sizeof (char));
8050       strncpy (rename, function_name, function_name_len);
8051       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8052                  "__%s___XR", name);
8053     }
8054   else
8055     {
8056       const int rename_len = strlen (name) + 6;
8057
8058       rename = (char *) alloca (rename_len * sizeof (char));
8059       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8060     }
8061
8062   return ada_find_any_type_symbol (rename);
8063 }
8064
8065 /* Because of GNAT encoding conventions, several GDB symbols may match a
8066    given type name.  If the type denoted by TYPE0 is to be preferred to
8067    that of TYPE1 for purposes of type printing, return non-zero;
8068    otherwise return 0.  */
8069
8070 int
8071 ada_prefer_type (struct type *type0, struct type *type1)
8072 {
8073   if (type1 == NULL)
8074     return 1;
8075   else if (type0 == NULL)
8076     return 0;
8077   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8078     return 1;
8079   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8080     return 0;
8081   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8082     return 1;
8083   else if (ada_is_constrained_packed_array_type (type0))
8084     return 1;
8085   else if (ada_is_array_descriptor_type (type0)
8086            && !ada_is_array_descriptor_type (type1))
8087     return 1;
8088   else
8089     {
8090       const char *type0_name = TYPE_NAME (type0);
8091       const char *type1_name = TYPE_NAME (type1);
8092
8093       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8094           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8095         return 1;
8096     }
8097   return 0;
8098 }
8099
8100 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8101    null.  */
8102
8103 const char *
8104 ada_type_name (struct type *type)
8105 {
8106   if (type == NULL)
8107     return NULL;
8108   return TYPE_NAME (type);
8109 }
8110
8111 /* Search the list of "descriptive" types associated to TYPE for a type
8112    whose name is NAME.  */
8113
8114 static struct type *
8115 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8116 {
8117   struct type *result, *tmp;
8118
8119   if (ada_ignore_descriptive_types_p)
8120     return NULL;
8121
8122   /* If there no descriptive-type info, then there is no parallel type
8123      to be found.  */
8124   if (!HAVE_GNAT_AUX_INFO (type))
8125     return NULL;
8126
8127   result = TYPE_DESCRIPTIVE_TYPE (type);
8128   while (result != NULL)
8129     {
8130       const char *result_name = ada_type_name (result);
8131
8132       if (result_name == NULL)
8133         {
8134           warning (_("unexpected null name on descriptive type"));
8135           return NULL;
8136         }
8137
8138       /* If the names match, stop.  */
8139       if (strcmp (result_name, name) == 0)
8140         break;
8141
8142       /* Otherwise, look at the next item on the list, if any.  */
8143       if (HAVE_GNAT_AUX_INFO (result))
8144         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8145       else
8146         tmp = NULL;
8147
8148       /* If not found either, try after having resolved the typedef.  */
8149       if (tmp != NULL)
8150         result = tmp;
8151       else
8152         {
8153           result = check_typedef (result);
8154           if (HAVE_GNAT_AUX_INFO (result))
8155             result = TYPE_DESCRIPTIVE_TYPE (result);
8156           else
8157             result = NULL;
8158         }
8159     }
8160
8161   /* If we didn't find a match, see whether this is a packed array.  With
8162      older compilers, the descriptive type information is either absent or
8163      irrelevant when it comes to packed arrays so the above lookup fails.
8164      Fall back to using a parallel lookup by name in this case.  */
8165   if (result == NULL && ada_is_constrained_packed_array_type (type))
8166     return ada_find_any_type (name);
8167
8168   return result;
8169 }
8170
8171 /* Find a parallel type to TYPE with the specified NAME, using the
8172    descriptive type taken from the debugging information, if available,
8173    and otherwise using the (slower) name-based method.  */
8174
8175 static struct type *
8176 ada_find_parallel_type_with_name (struct type *type, const char *name)
8177 {
8178   struct type *result = NULL;
8179
8180   if (HAVE_GNAT_AUX_INFO (type))
8181     result = find_parallel_type_by_descriptive_type (type, name);
8182   else
8183     result = ada_find_any_type (name);
8184
8185   return result;
8186 }
8187
8188 /* Same as above, but specify the name of the parallel type by appending
8189    SUFFIX to the name of TYPE.  */
8190
8191 struct type *
8192 ada_find_parallel_type (struct type *type, const char *suffix)
8193 {
8194   char *name;
8195   const char *type_name = ada_type_name (type);
8196   int len;
8197
8198   if (type_name == NULL)
8199     return NULL;
8200
8201   len = strlen (type_name);
8202
8203   name = (char *) alloca (len + strlen (suffix) + 1);
8204
8205   strcpy (name, type_name);
8206   strcpy (name + len, suffix);
8207
8208   return ada_find_parallel_type_with_name (type, name);
8209 }
8210
8211 /* If TYPE is a variable-size record type, return the corresponding template
8212    type describing its fields.  Otherwise, return NULL.  */
8213
8214 static struct type *
8215 dynamic_template_type (struct type *type)
8216 {
8217   type = ada_check_typedef (type);
8218
8219   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8220       || ada_type_name (type) == NULL)
8221     return NULL;
8222   else
8223     {
8224       int len = strlen (ada_type_name (type));
8225
8226       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8227         return type;
8228       else
8229         return ada_find_parallel_type (type, "___XVE");
8230     }
8231 }
8232
8233 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8234    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8235
8236 static int
8237 is_dynamic_field (struct type *templ_type, int field_num)
8238 {
8239   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8240
8241   return name != NULL
8242     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8243     && strstr (name, "___XVL") != NULL;
8244 }
8245
8246 /* The index of the variant field of TYPE, or -1 if TYPE does not
8247    represent a variant record type.  */
8248
8249 static int
8250 variant_field_index (struct type *type)
8251 {
8252   int f;
8253
8254   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8255     return -1;
8256
8257   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8258     {
8259       if (ada_is_variant_part (type, f))
8260         return f;
8261     }
8262   return -1;
8263 }
8264
8265 /* A record type with no fields.  */
8266
8267 static struct type *
8268 empty_record (struct type *templ)
8269 {
8270   struct type *type = alloc_type_copy (templ);
8271
8272   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8273   TYPE_NFIELDS (type) = 0;
8274   TYPE_FIELDS (type) = NULL;
8275   INIT_NONE_SPECIFIC (type);
8276   TYPE_NAME (type) = "<empty>";
8277   TYPE_LENGTH (type) = 0;
8278   return type;
8279 }
8280
8281 /* An ordinary record type (with fixed-length fields) that describes
8282    the value of type TYPE at VALADDR or ADDRESS (see comments at
8283    the beginning of this section) VAL according to GNAT conventions.
8284    DVAL0 should describe the (portion of a) record that contains any
8285    necessary discriminants.  It should be NULL if value_type (VAL) is
8286    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8287    variant field (unless unchecked) is replaced by a particular branch
8288    of the variant.
8289
8290    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8291    length are not statically known are discarded.  As a consequence,
8292    VALADDR, ADDRESS and DVAL0 are ignored.
8293
8294    NOTE: Limitations: For now, we assume that dynamic fields and
8295    variants occupy whole numbers of bytes.  However, they need not be
8296    byte-aligned.  */
8297
8298 struct type *
8299 ada_template_to_fixed_record_type_1 (struct type *type,
8300                                      const gdb_byte *valaddr,
8301                                      CORE_ADDR address, struct value *dval0,
8302                                      int keep_dynamic_fields)
8303 {
8304   struct value *mark = value_mark ();
8305   struct value *dval;
8306   struct type *rtype;
8307   int nfields, bit_len;
8308   int variant_field;
8309   long off;
8310   int fld_bit_len;
8311   int f;
8312
8313   /* Compute the number of fields in this record type that are going
8314      to be processed: unless keep_dynamic_fields, this includes only
8315      fields whose position and length are static will be processed.  */
8316   if (keep_dynamic_fields)
8317     nfields = TYPE_NFIELDS (type);
8318   else
8319     {
8320       nfields = 0;
8321       while (nfields < TYPE_NFIELDS (type)
8322              && !ada_is_variant_part (type, nfields)
8323              && !is_dynamic_field (type, nfields))
8324         nfields++;
8325     }
8326
8327   rtype = alloc_type_copy (type);
8328   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8329   INIT_NONE_SPECIFIC (rtype);
8330   TYPE_NFIELDS (rtype) = nfields;
8331   TYPE_FIELDS (rtype) = (struct field *)
8332     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8333   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8334   TYPE_NAME (rtype) = ada_type_name (type);
8335   TYPE_FIXED_INSTANCE (rtype) = 1;
8336
8337   off = 0;
8338   bit_len = 0;
8339   variant_field = -1;
8340
8341   for (f = 0; f < nfields; f += 1)
8342     {
8343       off = align_value (off, field_alignment (type, f))
8344         + TYPE_FIELD_BITPOS (type, f);
8345       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8346       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8347
8348       if (ada_is_variant_part (type, f))
8349         {
8350           variant_field = f;
8351           fld_bit_len = 0;
8352         }
8353       else if (is_dynamic_field (type, f))
8354         {
8355           const gdb_byte *field_valaddr = valaddr;
8356           CORE_ADDR field_address = address;
8357           struct type *field_type =
8358             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8359
8360           if (dval0 == NULL)
8361             {
8362               /* rtype's length is computed based on the run-time
8363                  value of discriminants.  If the discriminants are not
8364                  initialized, the type size may be completely bogus and
8365                  GDB may fail to allocate a value for it.  So check the
8366                  size first before creating the value.  */
8367               ada_ensure_varsize_limit (rtype);
8368               /* Using plain value_from_contents_and_address here
8369                  causes problems because we will end up trying to
8370                  resolve a type that is currently being
8371                  constructed.  */
8372               dval = value_from_contents_and_address_unresolved (rtype,
8373                                                                  valaddr,
8374                                                                  address);
8375               rtype = value_type (dval);
8376             }
8377           else
8378             dval = dval0;
8379
8380           /* If the type referenced by this field is an aligner type, we need
8381              to unwrap that aligner type, because its size might not be set.
8382              Keeping the aligner type would cause us to compute the wrong
8383              size for this field, impacting the offset of the all the fields
8384              that follow this one.  */
8385           if (ada_is_aligner_type (field_type))
8386             {
8387               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8388
8389               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8390               field_address = cond_offset_target (field_address, field_offset);
8391               field_type = ada_aligned_type (field_type);
8392             }
8393
8394           field_valaddr = cond_offset_host (field_valaddr,
8395                                             off / TARGET_CHAR_BIT);
8396           field_address = cond_offset_target (field_address,
8397                                               off / TARGET_CHAR_BIT);
8398
8399           /* Get the fixed type of the field.  Note that, in this case,
8400              we do not want to get the real type out of the tag: if
8401              the current field is the parent part of a tagged record,
8402              we will get the tag of the object.  Clearly wrong: the real
8403              type of the parent is not the real type of the child.  We
8404              would end up in an infinite loop.  */
8405           field_type = ada_get_base_type (field_type);
8406           field_type = ada_to_fixed_type (field_type, field_valaddr,
8407                                           field_address, dval, 0);
8408           /* If the field size is already larger than the maximum
8409              object size, then the record itself will necessarily
8410              be larger than the maximum object size.  We need to make
8411              this check now, because the size might be so ridiculously
8412              large (due to an uninitialized variable in the inferior)
8413              that it would cause an overflow when adding it to the
8414              record size.  */
8415           ada_ensure_varsize_limit (field_type);
8416
8417           TYPE_FIELD_TYPE (rtype, f) = field_type;
8418           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8419           /* The multiplication can potentially overflow.  But because
8420              the field length has been size-checked just above, and
8421              assuming that the maximum size is a reasonable value,
8422              an overflow should not happen in practice.  So rather than
8423              adding overflow recovery code to this already complex code,
8424              we just assume that it's not going to happen.  */
8425           fld_bit_len =
8426             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8427         }
8428       else
8429         {
8430           /* Note: If this field's type is a typedef, it is important
8431              to preserve the typedef layer.
8432
8433              Otherwise, we might be transforming a typedef to a fat
8434              pointer (encoding a pointer to an unconstrained array),
8435              into a basic fat pointer (encoding an unconstrained
8436              array).  As both types are implemented using the same
8437              structure, the typedef is the only clue which allows us
8438              to distinguish between the two options.  Stripping it
8439              would prevent us from printing this field appropriately.  */
8440           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8441           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8442           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8443             fld_bit_len =
8444               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8445           else
8446             {
8447               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8448
8449               /* We need to be careful of typedefs when computing
8450                  the length of our field.  If this is a typedef,
8451                  get the length of the target type, not the length
8452                  of the typedef.  */
8453               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8454                 field_type = ada_typedef_target_type (field_type);
8455
8456               fld_bit_len =
8457                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8458             }
8459         }
8460       if (off + fld_bit_len > bit_len)
8461         bit_len = off + fld_bit_len;
8462       off += fld_bit_len;
8463       TYPE_LENGTH (rtype) =
8464         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8465     }
8466
8467   /* We handle the variant part, if any, at the end because of certain
8468      odd cases in which it is re-ordered so as NOT to be the last field of
8469      the record.  This can happen in the presence of representation
8470      clauses.  */
8471   if (variant_field >= 0)
8472     {
8473       struct type *branch_type;
8474
8475       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8476
8477       if (dval0 == NULL)
8478         {
8479           /* Using plain value_from_contents_and_address here causes
8480              problems because we will end up trying to resolve a type
8481              that is currently being constructed.  */
8482           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8483                                                              address);
8484           rtype = value_type (dval);
8485         }
8486       else
8487         dval = dval0;
8488
8489       branch_type =
8490         to_fixed_variant_branch_type
8491         (TYPE_FIELD_TYPE (type, variant_field),
8492          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8493          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8494       if (branch_type == NULL)
8495         {
8496           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8497             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8498           TYPE_NFIELDS (rtype) -= 1;
8499         }
8500       else
8501         {
8502           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8503           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8504           fld_bit_len =
8505             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8506             TARGET_CHAR_BIT;
8507           if (off + fld_bit_len > bit_len)
8508             bit_len = off + fld_bit_len;
8509           TYPE_LENGTH (rtype) =
8510             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8511         }
8512     }
8513
8514   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8515      should contain the alignment of that record, which should be a strictly
8516      positive value.  If null or negative, then something is wrong, most
8517      probably in the debug info.  In that case, we don't round up the size
8518      of the resulting type.  If this record is not part of another structure,
8519      the current RTYPE length might be good enough for our purposes.  */
8520   if (TYPE_LENGTH (type) <= 0)
8521     {
8522       if (TYPE_NAME (rtype))
8523         warning (_("Invalid type size for `%s' detected: %s."),
8524                  TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
8525       else
8526         warning (_("Invalid type size for <unnamed> detected: %s."),
8527                  pulongest (TYPE_LENGTH (type)));
8528     }
8529   else
8530     {
8531       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8532                                          TYPE_LENGTH (type));
8533     }
8534
8535   value_free_to_mark (mark);
8536   if (TYPE_LENGTH (rtype) > varsize_limit)
8537     error (_("record type with dynamic size is larger than varsize-limit"));
8538   return rtype;
8539 }
8540
8541 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8542    of 1.  */
8543
8544 static struct type *
8545 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8546                                CORE_ADDR address, struct value *dval0)
8547 {
8548   return ada_template_to_fixed_record_type_1 (type, valaddr,
8549                                               address, dval0, 1);
8550 }
8551
8552 /* An ordinary record type in which ___XVL-convention fields and
8553    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8554    static approximations, containing all possible fields.  Uses
8555    no runtime values.  Useless for use in values, but that's OK,
8556    since the results are used only for type determinations.   Works on both
8557    structs and unions.  Representation note: to save space, we memorize
8558    the result of this function in the TYPE_TARGET_TYPE of the
8559    template type.  */
8560
8561 static struct type *
8562 template_to_static_fixed_type (struct type *type0)
8563 {
8564   struct type *type;
8565   int nfields;
8566   int f;
8567
8568   /* No need no do anything if the input type is already fixed.  */
8569   if (TYPE_FIXED_INSTANCE (type0))
8570     return type0;
8571
8572   /* Likewise if we already have computed the static approximation.  */
8573   if (TYPE_TARGET_TYPE (type0) != NULL)
8574     return TYPE_TARGET_TYPE (type0);
8575
8576   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8577   type = type0;
8578   nfields = TYPE_NFIELDS (type0);
8579
8580   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8581      recompute all over next time.  */
8582   TYPE_TARGET_TYPE (type0) = type;
8583
8584   for (f = 0; f < nfields; f += 1)
8585     {
8586       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8587       struct type *new_type;
8588
8589       if (is_dynamic_field (type0, f))
8590         {
8591           field_type = ada_check_typedef (field_type);
8592           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8593         }
8594       else
8595         new_type = static_unwrap_type (field_type);
8596
8597       if (new_type != field_type)
8598         {
8599           /* Clone TYPE0 only the first time we get a new field type.  */
8600           if (type == type0)
8601             {
8602               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8603               TYPE_CODE (type) = TYPE_CODE (type0);
8604               INIT_NONE_SPECIFIC (type);
8605               TYPE_NFIELDS (type) = nfields;
8606               TYPE_FIELDS (type) = (struct field *)
8607                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8608               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8609                       sizeof (struct field) * nfields);
8610               TYPE_NAME (type) = ada_type_name (type0);
8611               TYPE_FIXED_INSTANCE (type) = 1;
8612               TYPE_LENGTH (type) = 0;
8613             }
8614           TYPE_FIELD_TYPE (type, f) = new_type;
8615           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8616         }
8617     }
8618
8619   return type;
8620 }
8621
8622 /* Given an object of type TYPE whose contents are at VALADDR and
8623    whose address in memory is ADDRESS, returns a revision of TYPE,
8624    which should be a non-dynamic-sized record, in which the variant
8625    part, if any, is replaced with the appropriate branch.  Looks
8626    for discriminant values in DVAL0, which can be NULL if the record
8627    contains the necessary discriminant values.  */
8628
8629 static struct type *
8630 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8631                                    CORE_ADDR address, struct value *dval0)
8632 {
8633   struct value *mark = value_mark ();
8634   struct value *dval;
8635   struct type *rtype;
8636   struct type *branch_type;
8637   int nfields = TYPE_NFIELDS (type);
8638   int variant_field = variant_field_index (type);
8639
8640   if (variant_field == -1)
8641     return type;
8642
8643   if (dval0 == NULL)
8644     {
8645       dval = value_from_contents_and_address (type, valaddr, address);
8646       type = value_type (dval);
8647     }
8648   else
8649     dval = dval0;
8650
8651   rtype = alloc_type_copy (type);
8652   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8653   INIT_NONE_SPECIFIC (rtype);
8654   TYPE_NFIELDS (rtype) = nfields;
8655   TYPE_FIELDS (rtype) =
8656     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8657   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8658           sizeof (struct field) * nfields);
8659   TYPE_NAME (rtype) = ada_type_name (type);
8660   TYPE_FIXED_INSTANCE (rtype) = 1;
8661   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8662
8663   branch_type = to_fixed_variant_branch_type
8664     (TYPE_FIELD_TYPE (type, variant_field),
8665      cond_offset_host (valaddr,
8666                        TYPE_FIELD_BITPOS (type, variant_field)
8667                        / TARGET_CHAR_BIT),
8668      cond_offset_target (address,
8669                          TYPE_FIELD_BITPOS (type, variant_field)
8670                          / TARGET_CHAR_BIT), dval);
8671   if (branch_type == NULL)
8672     {
8673       int f;
8674
8675       for (f = variant_field + 1; f < nfields; f += 1)
8676         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8677       TYPE_NFIELDS (rtype) -= 1;
8678     }
8679   else
8680     {
8681       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8682       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8683       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8684       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8685     }
8686   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8687
8688   value_free_to_mark (mark);
8689   return rtype;
8690 }
8691
8692 /* An ordinary record type (with fixed-length fields) that describes
8693    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8694    beginning of this section].   Any necessary discriminants' values
8695    should be in DVAL, a record value; it may be NULL if the object
8696    at ADDR itself contains any necessary discriminant values.
8697    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8698    values from the record are needed.  Except in the case that DVAL,
8699    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8700    unchecked) is replaced by a particular branch of the variant.
8701
8702    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8703    is questionable and may be removed.  It can arise during the
8704    processing of an unconstrained-array-of-record type where all the
8705    variant branches have exactly the same size.  This is because in
8706    such cases, the compiler does not bother to use the XVS convention
8707    when encoding the record.  I am currently dubious of this
8708    shortcut and suspect the compiler should be altered.  FIXME.  */
8709
8710 static struct type *
8711 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8712                       CORE_ADDR address, struct value *dval)
8713 {
8714   struct type *templ_type;
8715
8716   if (TYPE_FIXED_INSTANCE (type0))
8717     return type0;
8718
8719   templ_type = dynamic_template_type (type0);
8720
8721   if (templ_type != NULL)
8722     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8723   else if (variant_field_index (type0) >= 0)
8724     {
8725       if (dval == NULL && valaddr == NULL && address == 0)
8726         return type0;
8727       return to_record_with_fixed_variant_part (type0, valaddr, address,
8728                                                 dval);
8729     }
8730   else
8731     {
8732       TYPE_FIXED_INSTANCE (type0) = 1;
8733       return type0;
8734     }
8735
8736 }
8737
8738 /* An ordinary record type (with fixed-length fields) that describes
8739    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8740    union type.  Any necessary discriminants' values should be in DVAL,
8741    a record value.  That is, this routine selects the appropriate
8742    branch of the union at ADDR according to the discriminant value
8743    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8744    it represents a variant subject to a pragma Unchecked_Union.  */
8745
8746 static struct type *
8747 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8748                               CORE_ADDR address, struct value *dval)
8749 {
8750   int which;
8751   struct type *templ_type;
8752   struct type *var_type;
8753
8754   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8755     var_type = TYPE_TARGET_TYPE (var_type0);
8756   else
8757     var_type = var_type0;
8758
8759   templ_type = ada_find_parallel_type (var_type, "___XVU");
8760
8761   if (templ_type != NULL)
8762     var_type = templ_type;
8763
8764   if (is_unchecked_variant (var_type, value_type (dval)))
8765       return var_type0;
8766   which =
8767     ada_which_variant_applies (var_type,
8768                                value_type (dval), value_contents (dval));
8769
8770   if (which < 0)
8771     return empty_record (var_type);
8772   else if (is_dynamic_field (var_type, which))
8773     return to_fixed_record_type
8774       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8775        valaddr, address, dval);
8776   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8777     return
8778       to_fixed_record_type
8779       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8780   else
8781     return TYPE_FIELD_TYPE (var_type, which);
8782 }
8783
8784 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8785    ENCODING_TYPE, a type following the GNAT conventions for discrete
8786    type encodings, only carries redundant information.  */
8787
8788 static int
8789 ada_is_redundant_range_encoding (struct type *range_type,
8790                                  struct type *encoding_type)
8791 {
8792   const char *bounds_str;
8793   int n;
8794   LONGEST lo, hi;
8795
8796   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8797
8798   if (TYPE_CODE (get_base_type (range_type))
8799       != TYPE_CODE (get_base_type (encoding_type)))
8800     {
8801       /* The compiler probably used a simple base type to describe
8802          the range type instead of the range's actual base type,
8803          expecting us to get the real base type from the encoding
8804          anyway.  In this situation, the encoding cannot be ignored
8805          as redundant.  */
8806       return 0;
8807     }
8808
8809   if (is_dynamic_type (range_type))
8810     return 0;
8811
8812   if (TYPE_NAME (encoding_type) == NULL)
8813     return 0;
8814
8815   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8816   if (bounds_str == NULL)
8817     return 0;
8818
8819   n = 8; /* Skip "___XDLU_".  */
8820   if (!ada_scan_number (bounds_str, n, &lo, &n))
8821     return 0;
8822   if (TYPE_LOW_BOUND (range_type) != lo)
8823     return 0;
8824
8825   n += 2; /* Skip the "__" separator between the two bounds.  */
8826   if (!ada_scan_number (bounds_str, n, &hi, &n))
8827     return 0;
8828   if (TYPE_HIGH_BOUND (range_type) != hi)
8829     return 0;
8830
8831   return 1;
8832 }
8833
8834 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8835    a type following the GNAT encoding for describing array type
8836    indices, only carries redundant information.  */
8837
8838 static int
8839 ada_is_redundant_index_type_desc (struct type *array_type,
8840                                   struct type *desc_type)
8841 {
8842   struct type *this_layer = check_typedef (array_type);
8843   int i;
8844
8845   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8846     {
8847       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8848                                             TYPE_FIELD_TYPE (desc_type, i)))
8849         return 0;
8850       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8851     }
8852
8853   return 1;
8854 }
8855
8856 /* Assuming that TYPE0 is an array type describing the type of a value
8857    at ADDR, and that DVAL describes a record containing any
8858    discriminants used in TYPE0, returns a type for the value that
8859    contains no dynamic components (that is, no components whose sizes
8860    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8861    true, gives an error message if the resulting type's size is over
8862    varsize_limit.  */
8863
8864 static struct type *
8865 to_fixed_array_type (struct type *type0, struct value *dval,
8866                      int ignore_too_big)
8867 {
8868   struct type *index_type_desc;
8869   struct type *result;
8870   int constrained_packed_array_p;
8871   static const char *xa_suffix = "___XA";
8872
8873   type0 = ada_check_typedef (type0);
8874   if (TYPE_FIXED_INSTANCE (type0))
8875     return type0;
8876
8877   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8878   if (constrained_packed_array_p)
8879     type0 = decode_constrained_packed_array_type (type0);
8880
8881   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8882
8883   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8884      encoding suffixed with 'P' may still be generated.  If so,
8885      it should be used to find the XA type.  */
8886
8887   if (index_type_desc == NULL)
8888     {
8889       const char *type_name = ada_type_name (type0);
8890
8891       if (type_name != NULL)
8892         {
8893           const int len = strlen (type_name);
8894           char *name = (char *) alloca (len + strlen (xa_suffix));
8895
8896           if (type_name[len - 1] == 'P')
8897             {
8898               strcpy (name, type_name);
8899               strcpy (name + len - 1, xa_suffix);
8900               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8901             }
8902         }
8903     }
8904
8905   ada_fixup_array_indexes_type (index_type_desc);
8906   if (index_type_desc != NULL
8907       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8908     {
8909       /* Ignore this ___XA parallel type, as it does not bring any
8910          useful information.  This allows us to avoid creating fixed
8911          versions of the array's index types, which would be identical
8912          to the original ones.  This, in turn, can also help avoid
8913          the creation of fixed versions of the array itself.  */
8914       index_type_desc = NULL;
8915     }
8916
8917   if (index_type_desc == NULL)
8918     {
8919       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8920
8921       /* NOTE: elt_type---the fixed version of elt_type0---should never
8922          depend on the contents of the array in properly constructed
8923          debugging data.  */
8924       /* Create a fixed version of the array element type.
8925          We're not providing the address of an element here,
8926          and thus the actual object value cannot be inspected to do
8927          the conversion.  This should not be a problem, since arrays of
8928          unconstrained objects are not allowed.  In particular, all
8929          the elements of an array of a tagged type should all be of
8930          the same type specified in the debugging info.  No need to
8931          consult the object tag.  */
8932       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8933
8934       /* Make sure we always create a new array type when dealing with
8935          packed array types, since we're going to fix-up the array
8936          type length and element bitsize a little further down.  */
8937       if (elt_type0 == elt_type && !constrained_packed_array_p)
8938         result = type0;
8939       else
8940         result = create_array_type (alloc_type_copy (type0),
8941                                     elt_type, TYPE_INDEX_TYPE (type0));
8942     }
8943   else
8944     {
8945       int i;
8946       struct type *elt_type0;
8947
8948       elt_type0 = type0;
8949       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8950         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8951
8952       /* NOTE: result---the fixed version of elt_type0---should never
8953          depend on the contents of the array in properly constructed
8954          debugging data.  */
8955       /* Create a fixed version of the array element type.
8956          We're not providing the address of an element here,
8957          and thus the actual object value cannot be inspected to do
8958          the conversion.  This should not be a problem, since arrays of
8959          unconstrained objects are not allowed.  In particular, all
8960          the elements of an array of a tagged type should all be of
8961          the same type specified in the debugging info.  No need to
8962          consult the object tag.  */
8963       result =
8964         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8965
8966       elt_type0 = type0;
8967       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8968         {
8969           struct type *range_type =
8970             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8971
8972           result = create_array_type (alloc_type_copy (elt_type0),
8973                                       result, range_type);
8974           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8975         }
8976       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8977         error (_("array type with dynamic size is larger than varsize-limit"));
8978     }
8979
8980   /* We want to preserve the type name.  This can be useful when
8981      trying to get the type name of a value that has already been
8982      printed (for instance, if the user did "print VAR; whatis $".  */
8983   TYPE_NAME (result) = TYPE_NAME (type0);
8984
8985   if (constrained_packed_array_p)
8986     {
8987       /* So far, the resulting type has been created as if the original
8988          type was a regular (non-packed) array type.  As a result, the
8989          bitsize of the array elements needs to be set again, and the array
8990          length needs to be recomputed based on that bitsize.  */
8991       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8992       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8993
8994       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8995       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8996       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8997         TYPE_LENGTH (result)++;
8998     }
8999
9000   TYPE_FIXED_INSTANCE (result) = 1;
9001   return result;
9002 }
9003
9004
9005 /* A standard type (containing no dynamically sized components)
9006    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9007    DVAL describes a record containing any discriminants used in TYPE0,
9008    and may be NULL if there are none, or if the object of type TYPE at
9009    ADDRESS or in VALADDR contains these discriminants.
9010    
9011    If CHECK_TAG is not null, in the case of tagged types, this function
9012    attempts to locate the object's tag and use it to compute the actual
9013    type.  However, when ADDRESS is null, we cannot use it to determine the
9014    location of the tag, and therefore compute the tagged type's actual type.
9015    So we return the tagged type without consulting the tag.  */
9016    
9017 static struct type *
9018 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9019                    CORE_ADDR address, struct value *dval, int check_tag)
9020 {
9021   type = ada_check_typedef (type);
9022
9023   /* Only un-fixed types need to be handled here.  */
9024   if (!HAVE_GNAT_AUX_INFO (type))
9025     return type;
9026
9027   switch (TYPE_CODE (type))
9028     {
9029     default:
9030       return type;
9031     case TYPE_CODE_STRUCT:
9032       {
9033         struct type *static_type = to_static_fixed_type (type);
9034         struct type *fixed_record_type =
9035           to_fixed_record_type (type, valaddr, address, NULL);
9036
9037         /* If STATIC_TYPE is a tagged type and we know the object's address,
9038            then we can determine its tag, and compute the object's actual
9039            type from there.  Note that we have to use the fixed record
9040            type (the parent part of the record may have dynamic fields
9041            and the way the location of _tag is expressed may depend on
9042            them).  */
9043
9044         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9045           {
9046             struct value *tag =
9047               value_tag_from_contents_and_address
9048               (fixed_record_type,
9049                valaddr,
9050                address);
9051             struct type *real_type = type_from_tag (tag);
9052             struct value *obj =
9053               value_from_contents_and_address (fixed_record_type,
9054                                                valaddr,
9055                                                address);
9056             fixed_record_type = value_type (obj);
9057             if (real_type != NULL)
9058               return to_fixed_record_type
9059                 (real_type, NULL,
9060                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9061           }
9062
9063         /* Check to see if there is a parallel ___XVZ variable.
9064            If there is, then it provides the actual size of our type.  */
9065         else if (ada_type_name (fixed_record_type) != NULL)
9066           {
9067             const char *name = ada_type_name (fixed_record_type);
9068             char *xvz_name
9069               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9070             bool xvz_found = false;
9071             LONGEST size;
9072
9073             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9074             try
9075               {
9076                 xvz_found = get_int_var_value (xvz_name, size);
9077               }
9078             catch (const gdb_exception_error &except)
9079               {
9080                 /* We found the variable, but somehow failed to read
9081                    its value.  Rethrow the same error, but with a little
9082                    bit more information, to help the user understand
9083                    what went wrong (Eg: the variable might have been
9084                    optimized out).  */
9085                 throw_error (except.error,
9086                              _("unable to read value of %s (%s)"),
9087                              xvz_name, except.what ());
9088               }
9089
9090             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9091               {
9092                 fixed_record_type = copy_type (fixed_record_type);
9093                 TYPE_LENGTH (fixed_record_type) = size;
9094
9095                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9096                    observed this when the debugging info is STABS, and
9097                    apparently it is something that is hard to fix.
9098
9099                    In practice, we don't need the actual type definition
9100                    at all, because the presence of the XVZ variable allows us
9101                    to assume that there must be a XVS type as well, which we
9102                    should be able to use later, when we need the actual type
9103                    definition.
9104
9105                    In the meantime, pretend that the "fixed" type we are
9106                    returning is NOT a stub, because this can cause trouble
9107                    when using this type to create new types targeting it.
9108                    Indeed, the associated creation routines often check
9109                    whether the target type is a stub and will try to replace
9110                    it, thus using a type with the wrong size.  This, in turn,
9111                    might cause the new type to have the wrong size too.
9112                    Consider the case of an array, for instance, where the size
9113                    of the array is computed from the number of elements in
9114                    our array multiplied by the size of its element.  */
9115                 TYPE_STUB (fixed_record_type) = 0;
9116               }
9117           }
9118         return fixed_record_type;
9119       }
9120     case TYPE_CODE_ARRAY:
9121       return to_fixed_array_type (type, dval, 1);
9122     case TYPE_CODE_UNION:
9123       if (dval == NULL)
9124         return type;
9125       else
9126         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9127     }
9128 }
9129
9130 /* The same as ada_to_fixed_type_1, except that it preserves the type
9131    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9132
9133    The typedef layer needs be preserved in order to differentiate between
9134    arrays and array pointers when both types are implemented using the same
9135    fat pointer.  In the array pointer case, the pointer is encoded as
9136    a typedef of the pointer type.  For instance, considering:
9137
9138           type String_Access is access String;
9139           S1 : String_Access := null;
9140
9141    To the debugger, S1 is defined as a typedef of type String.  But
9142    to the user, it is a pointer.  So if the user tries to print S1,
9143    we should not dereference the array, but print the array address
9144    instead.
9145
9146    If we didn't preserve the typedef layer, we would lose the fact that
9147    the type is to be presented as a pointer (needs de-reference before
9148    being printed).  And we would also use the source-level type name.  */
9149
9150 struct type *
9151 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9152                    CORE_ADDR address, struct value *dval, int check_tag)
9153
9154 {
9155   struct type *fixed_type =
9156     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9157
9158   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9159       then preserve the typedef layer.
9160
9161       Implementation note: We can only check the main-type portion of
9162       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9163       from TYPE now returns a type that has the same instance flags
9164       as TYPE.  For instance, if TYPE is a "typedef const", and its
9165       target type is a "struct", then the typedef elimination will return
9166       a "const" version of the target type.  See check_typedef for more
9167       details about how the typedef layer elimination is done.
9168
9169       brobecker/2010-11-19: It seems to me that the only case where it is
9170       useful to preserve the typedef layer is when dealing with fat pointers.
9171       Perhaps, we could add a check for that and preserve the typedef layer
9172       only in that situation.  But this seems unecessary so far, probably
9173       because we call check_typedef/ada_check_typedef pretty much everywhere.
9174       */
9175   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9176       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9177           == TYPE_MAIN_TYPE (fixed_type)))
9178     return type;
9179
9180   return fixed_type;
9181 }
9182
9183 /* A standard (static-sized) type corresponding as well as possible to
9184    TYPE0, but based on no runtime data.  */
9185
9186 static struct type *
9187 to_static_fixed_type (struct type *type0)
9188 {
9189   struct type *type;
9190
9191   if (type0 == NULL)
9192     return NULL;
9193
9194   if (TYPE_FIXED_INSTANCE (type0))
9195     return type0;
9196
9197   type0 = ada_check_typedef (type0);
9198
9199   switch (TYPE_CODE (type0))
9200     {
9201     default:
9202       return type0;
9203     case TYPE_CODE_STRUCT:
9204       type = dynamic_template_type (type0);
9205       if (type != NULL)
9206         return template_to_static_fixed_type (type);
9207       else
9208         return template_to_static_fixed_type (type0);
9209     case TYPE_CODE_UNION:
9210       type = ada_find_parallel_type (type0, "___XVU");
9211       if (type != NULL)
9212         return template_to_static_fixed_type (type);
9213       else
9214         return template_to_static_fixed_type (type0);
9215     }
9216 }
9217
9218 /* A static approximation of TYPE with all type wrappers removed.  */
9219
9220 static struct type *
9221 static_unwrap_type (struct type *type)
9222 {
9223   if (ada_is_aligner_type (type))
9224     {
9225       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9226       if (ada_type_name (type1) == NULL)
9227         TYPE_NAME (type1) = ada_type_name (type);
9228
9229       return static_unwrap_type (type1);
9230     }
9231   else
9232     {
9233       struct type *raw_real_type = ada_get_base_type (type);
9234
9235       if (raw_real_type == type)
9236         return type;
9237       else
9238         return to_static_fixed_type (raw_real_type);
9239     }
9240 }
9241
9242 /* In some cases, incomplete and private types require
9243    cross-references that are not resolved as records (for example,
9244       type Foo;
9245       type FooP is access Foo;
9246       V: FooP;
9247       type Foo is array ...;
9248    ).  In these cases, since there is no mechanism for producing
9249    cross-references to such types, we instead substitute for FooP a
9250    stub enumeration type that is nowhere resolved, and whose tag is
9251    the name of the actual type.  Call these types "non-record stubs".  */
9252
9253 /* A type equivalent to TYPE that is not a non-record stub, if one
9254    exists, otherwise TYPE.  */
9255
9256 struct type *
9257 ada_check_typedef (struct type *type)
9258 {
9259   if (type == NULL)
9260     return NULL;
9261
9262   /* If our type is an access to an unconstrained array, which is encoded
9263      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9264      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9265      what allows us to distinguish between fat pointers that represent
9266      array types, and fat pointers that represent array access types
9267      (in both cases, the compiler implements them as fat pointers).  */
9268   if (ada_is_access_to_unconstrained_array (type))
9269     return type;
9270
9271   type = check_typedef (type);
9272   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9273       || !TYPE_STUB (type)
9274       || TYPE_NAME (type) == NULL)
9275     return type;
9276   else
9277     {
9278       const char *name = TYPE_NAME (type);
9279       struct type *type1 = ada_find_any_type (name);
9280
9281       if (type1 == NULL)
9282         return type;
9283
9284       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9285          stubs pointing to arrays, as we don't create symbols for array
9286          types, only for the typedef-to-array types).  If that's the case,
9287          strip the typedef layer.  */
9288       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9289         type1 = ada_check_typedef (type1);
9290
9291       return type1;
9292     }
9293 }
9294
9295 /* A value representing the data at VALADDR/ADDRESS as described by
9296    type TYPE0, but with a standard (static-sized) type that correctly
9297    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9298    type, then return VAL0 [this feature is simply to avoid redundant
9299    creation of struct values].  */
9300
9301 static struct value *
9302 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9303                            struct value *val0)
9304 {
9305   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9306
9307   if (type == type0 && val0 != NULL)
9308     return val0;
9309
9310   if (VALUE_LVAL (val0) != lval_memory)
9311     {
9312       /* Our value does not live in memory; it could be a convenience
9313          variable, for instance.  Create a not_lval value using val0's
9314          contents.  */
9315       return value_from_contents (type, value_contents (val0));
9316     }
9317
9318   return value_from_contents_and_address (type, 0, address);
9319 }
9320
9321 /* A value representing VAL, but with a standard (static-sized) type
9322    that correctly describes it.  Does not necessarily create a new
9323    value.  */
9324
9325 struct value *
9326 ada_to_fixed_value (struct value *val)
9327 {
9328   val = unwrap_value (val);
9329   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9330   return val;
9331 }
9332 \f
9333
9334 /* Attributes */
9335
9336 /* Table mapping attribute numbers to names.
9337    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9338
9339 static const char *attribute_names[] = {
9340   "<?>",
9341
9342   "first",
9343   "last",
9344   "length",
9345   "image",
9346   "max",
9347   "min",
9348   "modulus",
9349   "pos",
9350   "size",
9351   "tag",
9352   "val",
9353   0
9354 };
9355
9356 const char *
9357 ada_attribute_name (enum exp_opcode n)
9358 {
9359   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9360     return attribute_names[n - OP_ATR_FIRST + 1];
9361   else
9362     return attribute_names[0];
9363 }
9364
9365 /* Evaluate the 'POS attribute applied to ARG.  */
9366
9367 static LONGEST
9368 pos_atr (struct value *arg)
9369 {
9370   struct value *val = coerce_ref (arg);
9371   struct type *type = value_type (val);
9372   LONGEST result;
9373
9374   if (!discrete_type_p (type))
9375     error (_("'POS only defined on discrete types"));
9376
9377   if (!discrete_position (type, value_as_long (val), &result))
9378     error (_("enumeration value is invalid: can't find 'POS"));
9379
9380   return result;
9381 }
9382
9383 static struct value *
9384 value_pos_atr (struct type *type, struct value *arg)
9385 {
9386   return value_from_longest (type, pos_atr (arg));
9387 }
9388
9389 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9390
9391 static struct value *
9392 value_val_atr (struct type *type, struct value *arg)
9393 {
9394   if (!discrete_type_p (type))
9395     error (_("'VAL only defined on discrete types"));
9396   if (!integer_type_p (value_type (arg)))
9397     error (_("'VAL requires integral argument"));
9398
9399   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9400     {
9401       long pos = value_as_long (arg);
9402
9403       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9404         error (_("argument to 'VAL out of range"));
9405       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9406     }
9407   else
9408     return value_from_longest (type, value_as_long (arg));
9409 }
9410 \f
9411
9412                                 /* Evaluation */
9413
9414 /* True if TYPE appears to be an Ada character type.
9415    [At the moment, this is true only for Character and Wide_Character;
9416    It is a heuristic test that could stand improvement].  */
9417
9418 bool
9419 ada_is_character_type (struct type *type)
9420 {
9421   const char *name;
9422
9423   /* If the type code says it's a character, then assume it really is,
9424      and don't check any further.  */
9425   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9426     return true;
9427   
9428   /* Otherwise, assume it's a character type iff it is a discrete type
9429      with a known character type name.  */
9430   name = ada_type_name (type);
9431   return (name != NULL
9432           && (TYPE_CODE (type) == TYPE_CODE_INT
9433               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9434           && (strcmp (name, "character") == 0
9435               || strcmp (name, "wide_character") == 0
9436               || strcmp (name, "wide_wide_character") == 0
9437               || strcmp (name, "unsigned char") == 0));
9438 }
9439
9440 /* True if TYPE appears to be an Ada string type.  */
9441
9442 bool
9443 ada_is_string_type (struct type *type)
9444 {
9445   type = ada_check_typedef (type);
9446   if (type != NULL
9447       && TYPE_CODE (type) != TYPE_CODE_PTR
9448       && (ada_is_simple_array_type (type)
9449           || ada_is_array_descriptor_type (type))
9450       && ada_array_arity (type) == 1)
9451     {
9452       struct type *elttype = ada_array_element_type (type, 1);
9453
9454       return ada_is_character_type (elttype);
9455     }
9456   else
9457     return false;
9458 }
9459
9460 /* The compiler sometimes provides a parallel XVS type for a given
9461    PAD type.  Normally, it is safe to follow the PAD type directly,
9462    but older versions of the compiler have a bug that causes the offset
9463    of its "F" field to be wrong.  Following that field in that case
9464    would lead to incorrect results, but this can be worked around
9465    by ignoring the PAD type and using the associated XVS type instead.
9466
9467    Set to True if the debugger should trust the contents of PAD types.
9468    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9469 static int trust_pad_over_xvs = 1;
9470
9471 /* True if TYPE is a struct type introduced by the compiler to force the
9472    alignment of a value.  Such types have a single field with a
9473    distinctive name.  */
9474
9475 int
9476 ada_is_aligner_type (struct type *type)
9477 {
9478   type = ada_check_typedef (type);
9479
9480   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9481     return 0;
9482
9483   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9484           && TYPE_NFIELDS (type) == 1
9485           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9486 }
9487
9488 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9489    the parallel type.  */
9490
9491 struct type *
9492 ada_get_base_type (struct type *raw_type)
9493 {
9494   struct type *real_type_namer;
9495   struct type *raw_real_type;
9496
9497   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9498     return raw_type;
9499
9500   if (ada_is_aligner_type (raw_type))
9501     /* The encoding specifies that we should always use the aligner type.
9502        So, even if this aligner type has an associated XVS type, we should
9503        simply ignore it.
9504
9505        According to the compiler gurus, an XVS type parallel to an aligner
9506        type may exist because of a stabs limitation.  In stabs, aligner
9507        types are empty because the field has a variable-sized type, and
9508        thus cannot actually be used as an aligner type.  As a result,
9509        we need the associated parallel XVS type to decode the type.
9510        Since the policy in the compiler is to not change the internal
9511        representation based on the debugging info format, we sometimes
9512        end up having a redundant XVS type parallel to the aligner type.  */
9513     return raw_type;
9514
9515   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9516   if (real_type_namer == NULL
9517       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9518       || TYPE_NFIELDS (real_type_namer) != 1)
9519     return raw_type;
9520
9521   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9522     {
9523       /* This is an older encoding form where the base type needs to be
9524          looked up by name.  We prefer the newer enconding because it is
9525          more efficient.  */
9526       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9527       if (raw_real_type == NULL)
9528         return raw_type;
9529       else
9530         return raw_real_type;
9531     }
9532
9533   /* The field in our XVS type is a reference to the base type.  */
9534   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9535 }
9536
9537 /* The type of value designated by TYPE, with all aligners removed.  */
9538
9539 struct type *
9540 ada_aligned_type (struct type *type)
9541 {
9542   if (ada_is_aligner_type (type))
9543     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9544   else
9545     return ada_get_base_type (type);
9546 }
9547
9548
9549 /* The address of the aligned value in an object at address VALADDR
9550    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9551
9552 const gdb_byte *
9553 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9554 {
9555   if (ada_is_aligner_type (type))
9556     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9557                                    valaddr +
9558                                    TYPE_FIELD_BITPOS (type,
9559                                                       0) / TARGET_CHAR_BIT);
9560   else
9561     return valaddr;
9562 }
9563
9564
9565
9566 /* The printed representation of an enumeration literal with encoded
9567    name NAME.  The value is good to the next call of ada_enum_name.  */
9568 const char *
9569 ada_enum_name (const char *name)
9570 {
9571   static char *result;
9572   static size_t result_len = 0;
9573   const char *tmp;
9574
9575   /* First, unqualify the enumeration name:
9576      1. Search for the last '.' character.  If we find one, then skip
9577      all the preceding characters, the unqualified name starts
9578      right after that dot.
9579      2. Otherwise, we may be debugging on a target where the compiler
9580      translates dots into "__".  Search forward for double underscores,
9581      but stop searching when we hit an overloading suffix, which is
9582      of the form "__" followed by digits.  */
9583
9584   tmp = strrchr (name, '.');
9585   if (tmp != NULL)
9586     name = tmp + 1;
9587   else
9588     {
9589       while ((tmp = strstr (name, "__")) != NULL)
9590         {
9591           if (isdigit (tmp[2]))
9592             break;
9593           else
9594             name = tmp + 2;
9595         }
9596     }
9597
9598   if (name[0] == 'Q')
9599     {
9600       int v;
9601
9602       if (name[1] == 'U' || name[1] == 'W')
9603         {
9604           if (sscanf (name + 2, "%x", &v) != 1)
9605             return name;
9606         }
9607       else
9608         return name;
9609
9610       GROW_VECT (result, result_len, 16);
9611       if (isascii (v) && isprint (v))
9612         xsnprintf (result, result_len, "'%c'", v);
9613       else if (name[1] == 'U')
9614         xsnprintf (result, result_len, "[\"%02x\"]", v);
9615       else
9616         xsnprintf (result, result_len, "[\"%04x\"]", v);
9617
9618       return result;
9619     }
9620   else
9621     {
9622       tmp = strstr (name, "__");
9623       if (tmp == NULL)
9624         tmp = strstr (name, "$");
9625       if (tmp != NULL)
9626         {
9627           GROW_VECT (result, result_len, tmp - name + 1);
9628           strncpy (result, name, tmp - name);
9629           result[tmp - name] = '\0';
9630           return result;
9631         }
9632
9633       return name;
9634     }
9635 }
9636
9637 /* Evaluate the subexpression of EXP starting at *POS as for
9638    evaluate_type, updating *POS to point just past the evaluated
9639    expression.  */
9640
9641 static struct value *
9642 evaluate_subexp_type (struct expression *exp, int *pos)
9643 {
9644   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9645 }
9646
9647 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9648    value it wraps.  */
9649
9650 static struct value *
9651 unwrap_value (struct value *val)
9652 {
9653   struct type *type = ada_check_typedef (value_type (val));
9654
9655   if (ada_is_aligner_type (type))
9656     {
9657       struct value *v = ada_value_struct_elt (val, "F", 0);
9658       struct type *val_type = ada_check_typedef (value_type (v));
9659
9660       if (ada_type_name (val_type) == NULL)
9661         TYPE_NAME (val_type) = ada_type_name (type);
9662
9663       return unwrap_value (v);
9664     }
9665   else
9666     {
9667       struct type *raw_real_type =
9668         ada_check_typedef (ada_get_base_type (type));
9669
9670       /* If there is no parallel XVS or XVE type, then the value is
9671          already unwrapped.  Return it without further modification.  */
9672       if ((type == raw_real_type)
9673           && ada_find_parallel_type (type, "___XVE") == NULL)
9674         return val;
9675
9676       return
9677         coerce_unspec_val_to_type
9678         (val, ada_to_fixed_type (raw_real_type, 0,
9679                                  value_address (val),
9680                                  NULL, 1));
9681     }
9682 }
9683
9684 static struct value *
9685 cast_from_fixed (struct type *type, struct value *arg)
9686 {
9687   struct value *scale = ada_scaling_factor (value_type (arg));
9688   arg = value_cast (value_type (scale), arg);
9689
9690   arg = value_binop (arg, scale, BINOP_MUL);
9691   return value_cast (type, arg);
9692 }
9693
9694 static struct value *
9695 cast_to_fixed (struct type *type, struct value *arg)
9696 {
9697   if (type == value_type (arg))
9698     return arg;
9699
9700   struct value *scale = ada_scaling_factor (type);
9701   if (ada_is_fixed_point_type (value_type (arg)))
9702     arg = cast_from_fixed (value_type (scale), arg);
9703   else
9704     arg = value_cast (value_type (scale), arg);
9705
9706   arg = value_binop (arg, scale, BINOP_DIV);
9707   return value_cast (type, arg);
9708 }
9709
9710 /* Given two array types T1 and T2, return nonzero iff both arrays
9711    contain the same number of elements.  */
9712
9713 static int
9714 ada_same_array_size_p (struct type *t1, struct type *t2)
9715 {
9716   LONGEST lo1, hi1, lo2, hi2;
9717
9718   /* Get the array bounds in order to verify that the size of
9719      the two arrays match.  */
9720   if (!get_array_bounds (t1, &lo1, &hi1)
9721       || !get_array_bounds (t2, &lo2, &hi2))
9722     error (_("unable to determine array bounds"));
9723
9724   /* To make things easier for size comparison, normalize a bit
9725      the case of empty arrays by making sure that the difference
9726      between upper bound and lower bound is always -1.  */
9727   if (lo1 > hi1)
9728     hi1 = lo1 - 1;
9729   if (lo2 > hi2)
9730     hi2 = lo2 - 1;
9731
9732   return (hi1 - lo1 == hi2 - lo2);
9733 }
9734
9735 /* Assuming that VAL is an array of integrals, and TYPE represents
9736    an array with the same number of elements, but with wider integral
9737    elements, return an array "casted" to TYPE.  In practice, this
9738    means that the returned array is built by casting each element
9739    of the original array into TYPE's (wider) element type.  */
9740
9741 static struct value *
9742 ada_promote_array_of_integrals (struct type *type, struct value *val)
9743 {
9744   struct type *elt_type = TYPE_TARGET_TYPE (type);
9745   LONGEST lo, hi;
9746   struct value *res;
9747   LONGEST i;
9748
9749   /* Verify that both val and type are arrays of scalars, and
9750      that the size of val's elements is smaller than the size
9751      of type's element.  */
9752   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9753   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9754   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9755   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9756   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9757               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9758
9759   if (!get_array_bounds (type, &lo, &hi))
9760     error (_("unable to determine array bounds"));
9761
9762   res = allocate_value (type);
9763
9764   /* Promote each array element.  */
9765   for (i = 0; i < hi - lo + 1; i++)
9766     {
9767       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9768
9769       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9770               value_contents_all (elt), TYPE_LENGTH (elt_type));
9771     }
9772
9773   return res;
9774 }
9775
9776 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9777    return the converted value.  */
9778
9779 static struct value *
9780 coerce_for_assign (struct type *type, struct value *val)
9781 {
9782   struct type *type2 = value_type (val);
9783
9784   if (type == type2)
9785     return val;
9786
9787   type2 = ada_check_typedef (type2);
9788   type = ada_check_typedef (type);
9789
9790   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9791       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9792     {
9793       val = ada_value_ind (val);
9794       type2 = value_type (val);
9795     }
9796
9797   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9798       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9799     {
9800       if (!ada_same_array_size_p (type, type2))
9801         error (_("cannot assign arrays of different length"));
9802
9803       if (is_integral_type (TYPE_TARGET_TYPE (type))
9804           && is_integral_type (TYPE_TARGET_TYPE (type2))
9805           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9806                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9807         {
9808           /* Allow implicit promotion of the array elements to
9809              a wider type.  */
9810           return ada_promote_array_of_integrals (type, val);
9811         }
9812
9813       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9814           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9815         error (_("Incompatible types in assignment"));
9816       deprecated_set_value_type (val, type);
9817     }
9818   return val;
9819 }
9820
9821 static struct value *
9822 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9823 {
9824   struct value *val;
9825   struct type *type1, *type2;
9826   LONGEST v, v1, v2;
9827
9828   arg1 = coerce_ref (arg1);
9829   arg2 = coerce_ref (arg2);
9830   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9831   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9832
9833   if (TYPE_CODE (type1) != TYPE_CODE_INT
9834       || TYPE_CODE (type2) != TYPE_CODE_INT)
9835     return value_binop (arg1, arg2, op);
9836
9837   switch (op)
9838     {
9839     case BINOP_MOD:
9840     case BINOP_DIV:
9841     case BINOP_REM:
9842       break;
9843     default:
9844       return value_binop (arg1, arg2, op);
9845     }
9846
9847   v2 = value_as_long (arg2);
9848   if (v2 == 0)
9849     error (_("second operand of %s must not be zero."), op_string (op));
9850
9851   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9852     return value_binop (arg1, arg2, op);
9853
9854   v1 = value_as_long (arg1);
9855   switch (op)
9856     {
9857     case BINOP_DIV:
9858       v = v1 / v2;
9859       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9860         v += v > 0 ? -1 : 1;
9861       break;
9862     case BINOP_REM:
9863       v = v1 % v2;
9864       if (v * v1 < 0)
9865         v -= v2;
9866       break;
9867     default:
9868       /* Should not reach this point.  */
9869       v = 0;
9870     }
9871
9872   val = allocate_value (type1);
9873   store_unsigned_integer (value_contents_raw (val),
9874                           TYPE_LENGTH (value_type (val)),
9875                           gdbarch_byte_order (get_type_arch (type1)), v);
9876   return val;
9877 }
9878
9879 static int
9880 ada_value_equal (struct value *arg1, struct value *arg2)
9881 {
9882   if (ada_is_direct_array_type (value_type (arg1))
9883       || ada_is_direct_array_type (value_type (arg2)))
9884     {
9885       struct type *arg1_type, *arg2_type;
9886
9887       /* Automatically dereference any array reference before
9888          we attempt to perform the comparison.  */
9889       arg1 = ada_coerce_ref (arg1);
9890       arg2 = ada_coerce_ref (arg2);
9891
9892       arg1 = ada_coerce_to_simple_array (arg1);
9893       arg2 = ada_coerce_to_simple_array (arg2);
9894
9895       arg1_type = ada_check_typedef (value_type (arg1));
9896       arg2_type = ada_check_typedef (value_type (arg2));
9897
9898       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9899           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9900         error (_("Attempt to compare array with non-array"));
9901       /* FIXME: The following works only for types whose
9902          representations use all bits (no padding or undefined bits)
9903          and do not have user-defined equality.  */
9904       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9905               && memcmp (value_contents (arg1), value_contents (arg2),
9906                          TYPE_LENGTH (arg1_type)) == 0);
9907     }
9908   return value_equal (arg1, arg2);
9909 }
9910
9911 /* Total number of component associations in the aggregate starting at
9912    index PC in EXP.  Assumes that index PC is the start of an
9913    OP_AGGREGATE.  */
9914
9915 static int
9916 num_component_specs (struct expression *exp, int pc)
9917 {
9918   int n, m, i;
9919
9920   m = exp->elts[pc + 1].longconst;
9921   pc += 3;
9922   n = 0;
9923   for (i = 0; i < m; i += 1)
9924     {
9925       switch (exp->elts[pc].opcode) 
9926         {
9927         default:
9928           n += 1;
9929           break;
9930         case OP_CHOICES:
9931           n += exp->elts[pc + 1].longconst;
9932           break;
9933         }
9934       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9935     }
9936   return n;
9937 }
9938
9939 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9940    component of LHS (a simple array or a record), updating *POS past
9941    the expression, assuming that LHS is contained in CONTAINER.  Does
9942    not modify the inferior's memory, nor does it modify LHS (unless
9943    LHS == CONTAINER).  */
9944
9945 static void
9946 assign_component (struct value *container, struct value *lhs, LONGEST index,
9947                   struct expression *exp, int *pos)
9948 {
9949   struct value *mark = value_mark ();
9950   struct value *elt;
9951   struct type *lhs_type = check_typedef (value_type (lhs));
9952
9953   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9954     {
9955       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9956       struct value *index_val = value_from_longest (index_type, index);
9957
9958       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9959     }
9960   else
9961     {
9962       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9963       elt = ada_to_fixed_value (elt);
9964     }
9965
9966   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9967     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9968   else
9969     value_assign_to_component (container, elt, 
9970                                ada_evaluate_subexp (NULL, exp, pos, 
9971                                                     EVAL_NORMAL));
9972
9973   value_free_to_mark (mark);
9974 }
9975
9976 /* Assuming that LHS represents an lvalue having a record or array
9977    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9978    of that aggregate's value to LHS, advancing *POS past the
9979    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9980    lvalue containing LHS (possibly LHS itself).  Does not modify
9981    the inferior's memory, nor does it modify the contents of 
9982    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9983
9984 static struct value *
9985 assign_aggregate (struct value *container, 
9986                   struct value *lhs, struct expression *exp, 
9987                   int *pos, enum noside noside)
9988 {
9989   struct type *lhs_type;
9990   int n = exp->elts[*pos+1].longconst;
9991   LONGEST low_index, high_index;
9992   int num_specs;
9993   LONGEST *indices;
9994   int max_indices, num_indices;
9995   int i;
9996
9997   *pos += 3;
9998   if (noside != EVAL_NORMAL)
9999     {
10000       for (i = 0; i < n; i += 1)
10001         ada_evaluate_subexp (NULL, exp, pos, noside);
10002       return container;
10003     }
10004
10005   container = ada_coerce_ref (container);
10006   if (ada_is_direct_array_type (value_type (container)))
10007     container = ada_coerce_to_simple_array (container);
10008   lhs = ada_coerce_ref (lhs);
10009   if (!deprecated_value_modifiable (lhs))
10010     error (_("Left operand of assignment is not a modifiable lvalue."));
10011
10012   lhs_type = check_typedef (value_type (lhs));
10013   if (ada_is_direct_array_type (lhs_type))
10014     {
10015       lhs = ada_coerce_to_simple_array (lhs);
10016       lhs_type = check_typedef (value_type (lhs));
10017       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10018       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10019     }
10020   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10021     {
10022       low_index = 0;
10023       high_index = num_visible_fields (lhs_type) - 1;
10024     }
10025   else
10026     error (_("Left-hand side must be array or record."));
10027
10028   num_specs = num_component_specs (exp, *pos - 3);
10029   max_indices = 4 * num_specs + 4;
10030   indices = XALLOCAVEC (LONGEST, max_indices);
10031   indices[0] = indices[1] = low_index - 1;
10032   indices[2] = indices[3] = high_index + 1;
10033   num_indices = 4;
10034
10035   for (i = 0; i < n; i += 1)
10036     {
10037       switch (exp->elts[*pos].opcode)
10038         {
10039           case OP_CHOICES:
10040             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10041                                            &num_indices, max_indices,
10042                                            low_index, high_index);
10043             break;
10044           case OP_POSITIONAL:
10045             aggregate_assign_positional (container, lhs, exp, pos, indices,
10046                                          &num_indices, max_indices,
10047                                          low_index, high_index);
10048             break;
10049           case OP_OTHERS:
10050             if (i != n-1)
10051               error (_("Misplaced 'others' clause"));
10052             aggregate_assign_others (container, lhs, exp, pos, indices, 
10053                                      num_indices, low_index, high_index);
10054             break;
10055           default:
10056             error (_("Internal error: bad aggregate clause"));
10057         }
10058     }
10059
10060   return container;
10061 }
10062               
10063 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10064    construct at *POS, updating *POS past the construct, given that
10065    the positions are relative to lower bound LOW, where HIGH is the 
10066    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10067    updating *NUM_INDICES as needed.  CONTAINER is as for
10068    assign_aggregate.  */
10069 static void
10070 aggregate_assign_positional (struct value *container,
10071                              struct value *lhs, struct expression *exp,
10072                              int *pos, LONGEST *indices, int *num_indices,
10073                              int max_indices, LONGEST low, LONGEST high) 
10074 {
10075   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10076   
10077   if (ind - 1 == high)
10078     warning (_("Extra components in aggregate ignored."));
10079   if (ind <= high)
10080     {
10081       add_component_interval (ind, ind, indices, num_indices, max_indices);
10082       *pos += 3;
10083       assign_component (container, lhs, ind, exp, pos);
10084     }
10085   else
10086     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10087 }
10088
10089 /* Assign into the components of LHS indexed by the OP_CHOICES
10090    construct at *POS, updating *POS past the construct, given that
10091    the allowable indices are LOW..HIGH.  Record the indices assigned
10092    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10093    needed.  CONTAINER is as for assign_aggregate.  */
10094 static void
10095 aggregate_assign_from_choices (struct value *container,
10096                                struct value *lhs, struct expression *exp,
10097                                int *pos, LONGEST *indices, int *num_indices,
10098                                int max_indices, LONGEST low, LONGEST high) 
10099 {
10100   int j;
10101   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10102   int choice_pos, expr_pc;
10103   int is_array = ada_is_direct_array_type (value_type (lhs));
10104
10105   choice_pos = *pos += 3;
10106
10107   for (j = 0; j < n_choices; j += 1)
10108     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10109   expr_pc = *pos;
10110   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10111   
10112   for (j = 0; j < n_choices; j += 1)
10113     {
10114       LONGEST lower, upper;
10115       enum exp_opcode op = exp->elts[choice_pos].opcode;
10116
10117       if (op == OP_DISCRETE_RANGE)
10118         {
10119           choice_pos += 1;
10120           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10121                                                       EVAL_NORMAL));
10122           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10123                                                       EVAL_NORMAL));
10124         }
10125       else if (is_array)
10126         {
10127           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10128                                                       EVAL_NORMAL));
10129           upper = lower;
10130         }
10131       else
10132         {
10133           int ind;
10134           const char *name;
10135
10136           switch (op)
10137             {
10138             case OP_NAME:
10139               name = &exp->elts[choice_pos + 2].string;
10140               break;
10141             case OP_VAR_VALUE:
10142               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10143               break;
10144             default:
10145               error (_("Invalid record component association."));
10146             }
10147           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10148           ind = 0;
10149           if (! find_struct_field (name, value_type (lhs), 0, 
10150                                    NULL, NULL, NULL, NULL, &ind))
10151             error (_("Unknown component name: %s."), name);
10152           lower = upper = ind;
10153         }
10154
10155       if (lower <= upper && (lower < low || upper > high))
10156         error (_("Index in component association out of bounds."));
10157
10158       add_component_interval (lower, upper, indices, num_indices,
10159                               max_indices);
10160       while (lower <= upper)
10161         {
10162           int pos1;
10163
10164           pos1 = expr_pc;
10165           assign_component (container, lhs, lower, exp, &pos1);
10166           lower += 1;
10167         }
10168     }
10169 }
10170
10171 /* Assign the value of the expression in the OP_OTHERS construct in
10172    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10173    have not been previously assigned.  The index intervals already assigned
10174    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10175    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10176 static void
10177 aggregate_assign_others (struct value *container,
10178                          struct value *lhs, struct expression *exp,
10179                          int *pos, LONGEST *indices, int num_indices,
10180                          LONGEST low, LONGEST high) 
10181 {
10182   int i;
10183   int expr_pc = *pos + 1;
10184   
10185   for (i = 0; i < num_indices - 2; i += 2)
10186     {
10187       LONGEST ind;
10188
10189       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10190         {
10191           int localpos;
10192
10193           localpos = expr_pc;
10194           assign_component (container, lhs, ind, exp, &localpos);
10195         }
10196     }
10197   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10198 }
10199
10200 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10201    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10202    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10203    MAX_SIZE.  The resulting intervals do not overlap.  */
10204 static void
10205 add_component_interval (LONGEST low, LONGEST high, 
10206                         LONGEST* indices, int *size, int max_size)
10207 {
10208   int i, j;
10209
10210   for (i = 0; i < *size; i += 2) {
10211     if (high >= indices[i] && low <= indices[i + 1])
10212       {
10213         int kh;
10214
10215         for (kh = i + 2; kh < *size; kh += 2)
10216           if (high < indices[kh])
10217             break;
10218         if (low < indices[i])
10219           indices[i] = low;
10220         indices[i + 1] = indices[kh - 1];
10221         if (high > indices[i + 1])
10222           indices[i + 1] = high;
10223         memcpy (indices + i + 2, indices + kh, *size - kh);
10224         *size -= kh - i - 2;
10225         return;
10226       }
10227     else if (high < indices[i])
10228       break;
10229   }
10230         
10231   if (*size == max_size)
10232     error (_("Internal error: miscounted aggregate components."));
10233   *size += 2;
10234   for (j = *size-1; j >= i+2; j -= 1)
10235     indices[j] = indices[j - 2];
10236   indices[i] = low;
10237   indices[i + 1] = high;
10238 }
10239
10240 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10241    is different.  */
10242
10243 static struct value *
10244 ada_value_cast (struct type *type, struct value *arg2)
10245 {
10246   if (type == ada_check_typedef (value_type (arg2)))
10247     return arg2;
10248
10249   if (ada_is_fixed_point_type (type))
10250     return cast_to_fixed (type, arg2);
10251
10252   if (ada_is_fixed_point_type (value_type (arg2)))
10253     return cast_from_fixed (type, arg2);
10254
10255   return value_cast (type, arg2);
10256 }
10257
10258 /*  Evaluating Ada expressions, and printing their result.
10259     ------------------------------------------------------
10260
10261     1. Introduction:
10262     ----------------
10263
10264     We usually evaluate an Ada expression in order to print its value.
10265     We also evaluate an expression in order to print its type, which
10266     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10267     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10268     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10269     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10270     similar.
10271
10272     Evaluating expressions is a little more complicated for Ada entities
10273     than it is for entities in languages such as C.  The main reason for
10274     this is that Ada provides types whose definition might be dynamic.
10275     One example of such types is variant records.  Or another example
10276     would be an array whose bounds can only be known at run time.
10277
10278     The following description is a general guide as to what should be
10279     done (and what should NOT be done) in order to evaluate an expression
10280     involving such types, and when.  This does not cover how the semantic
10281     information is encoded by GNAT as this is covered separatly.  For the
10282     document used as the reference for the GNAT encoding, see exp_dbug.ads
10283     in the GNAT sources.
10284
10285     Ideally, we should embed each part of this description next to its
10286     associated code.  Unfortunately, the amount of code is so vast right
10287     now that it's hard to see whether the code handling a particular
10288     situation might be duplicated or not.  One day, when the code is
10289     cleaned up, this guide might become redundant with the comments
10290     inserted in the code, and we might want to remove it.
10291
10292     2. ``Fixing'' an Entity, the Simple Case:
10293     -----------------------------------------
10294
10295     When evaluating Ada expressions, the tricky issue is that they may
10296     reference entities whose type contents and size are not statically
10297     known.  Consider for instance a variant record:
10298
10299        type Rec (Empty : Boolean := True) is record
10300           case Empty is
10301              when True => null;
10302              when False => Value : Integer;
10303           end case;
10304        end record;
10305        Yes : Rec := (Empty => False, Value => 1);
10306        No  : Rec := (empty => True);
10307
10308     The size and contents of that record depends on the value of the
10309     descriminant (Rec.Empty).  At this point, neither the debugging
10310     information nor the associated type structure in GDB are able to
10311     express such dynamic types.  So what the debugger does is to create
10312     "fixed" versions of the type that applies to the specific object.
10313     We also informally refer to this opperation as "fixing" an object,
10314     which means creating its associated fixed type.
10315
10316     Example: when printing the value of variable "Yes" above, its fixed
10317     type would look like this:
10318
10319        type Rec is record
10320           Empty : Boolean;
10321           Value : Integer;
10322        end record;
10323
10324     On the other hand, if we printed the value of "No", its fixed type
10325     would become:
10326
10327        type Rec is record
10328           Empty : Boolean;
10329        end record;
10330
10331     Things become a little more complicated when trying to fix an entity
10332     with a dynamic type that directly contains another dynamic type,
10333     such as an array of variant records, for instance.  There are
10334     two possible cases: Arrays, and records.
10335
10336     3. ``Fixing'' Arrays:
10337     ---------------------
10338
10339     The type structure in GDB describes an array in terms of its bounds,
10340     and the type of its elements.  By design, all elements in the array
10341     have the same type and we cannot represent an array of variant elements
10342     using the current type structure in GDB.  When fixing an array,
10343     we cannot fix the array element, as we would potentially need one
10344     fixed type per element of the array.  As a result, the best we can do
10345     when fixing an array is to produce an array whose bounds and size
10346     are correct (allowing us to read it from memory), but without having
10347     touched its element type.  Fixing each element will be done later,
10348     when (if) necessary.
10349
10350     Arrays are a little simpler to handle than records, because the same
10351     amount of memory is allocated for each element of the array, even if
10352     the amount of space actually used by each element differs from element
10353     to element.  Consider for instance the following array of type Rec:
10354
10355        type Rec_Array is array (1 .. 2) of Rec;
10356
10357     The actual amount of memory occupied by each element might be different
10358     from element to element, depending on the value of their discriminant.
10359     But the amount of space reserved for each element in the array remains
10360     fixed regardless.  So we simply need to compute that size using
10361     the debugging information available, from which we can then determine
10362     the array size (we multiply the number of elements of the array by
10363     the size of each element).
10364
10365     The simplest case is when we have an array of a constrained element
10366     type. For instance, consider the following type declarations:
10367
10368         type Bounded_String (Max_Size : Integer) is
10369            Length : Integer;
10370            Buffer : String (1 .. Max_Size);
10371         end record;
10372         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10373
10374     In this case, the compiler describes the array as an array of
10375     variable-size elements (identified by its XVS suffix) for which
10376     the size can be read in the parallel XVZ variable.
10377
10378     In the case of an array of an unconstrained element type, the compiler
10379     wraps the array element inside a private PAD type.  This type should not
10380     be shown to the user, and must be "unwrap"'ed before printing.  Note
10381     that we also use the adjective "aligner" in our code to designate
10382     these wrapper types.
10383
10384     In some cases, the size allocated for each element is statically
10385     known.  In that case, the PAD type already has the correct size,
10386     and the array element should remain unfixed.
10387
10388     But there are cases when this size is not statically known.
10389     For instance, assuming that "Five" is an integer variable:
10390
10391         type Dynamic is array (1 .. Five) of Integer;
10392         type Wrapper (Has_Length : Boolean := False) is record
10393            Data : Dynamic;
10394            case Has_Length is
10395               when True => Length : Integer;
10396               when False => null;
10397            end case;
10398         end record;
10399         type Wrapper_Array is array (1 .. 2) of Wrapper;
10400
10401         Hello : Wrapper_Array := (others => (Has_Length => True,
10402                                              Data => (others => 17),
10403                                              Length => 1));
10404
10405
10406     The debugging info would describe variable Hello as being an
10407     array of a PAD type.  The size of that PAD type is not statically
10408     known, but can be determined using a parallel XVZ variable.
10409     In that case, a copy of the PAD type with the correct size should
10410     be used for the fixed array.
10411
10412     3. ``Fixing'' record type objects:
10413     ----------------------------------
10414
10415     Things are slightly different from arrays in the case of dynamic
10416     record types.  In this case, in order to compute the associated
10417     fixed type, we need to determine the size and offset of each of
10418     its components.  This, in turn, requires us to compute the fixed
10419     type of each of these components.
10420
10421     Consider for instance the example:
10422
10423         type Bounded_String (Max_Size : Natural) is record
10424            Str : String (1 .. Max_Size);
10425            Length : Natural;
10426         end record;
10427         My_String : Bounded_String (Max_Size => 10);
10428
10429     In that case, the position of field "Length" depends on the size
10430     of field Str, which itself depends on the value of the Max_Size
10431     discriminant.  In order to fix the type of variable My_String,
10432     we need to fix the type of field Str.  Therefore, fixing a variant
10433     record requires us to fix each of its components.
10434
10435     However, if a component does not have a dynamic size, the component
10436     should not be fixed.  In particular, fields that use a PAD type
10437     should not fixed.  Here is an example where this might happen
10438     (assuming type Rec above):
10439
10440        type Container (Big : Boolean) is record
10441           First : Rec;
10442           After : Integer;
10443           case Big is
10444              when True => Another : Integer;
10445              when False => null;
10446           end case;
10447        end record;
10448        My_Container : Container := (Big => False,
10449                                     First => (Empty => True),
10450                                     After => 42);
10451
10452     In that example, the compiler creates a PAD type for component First,
10453     whose size is constant, and then positions the component After just
10454     right after it.  The offset of component After is therefore constant
10455     in this case.
10456
10457     The debugger computes the position of each field based on an algorithm
10458     that uses, among other things, the actual position and size of the field
10459     preceding it.  Let's now imagine that the user is trying to print
10460     the value of My_Container.  If the type fixing was recursive, we would
10461     end up computing the offset of field After based on the size of the
10462     fixed version of field First.  And since in our example First has
10463     only one actual field, the size of the fixed type is actually smaller
10464     than the amount of space allocated to that field, and thus we would
10465     compute the wrong offset of field After.
10466
10467     To make things more complicated, we need to watch out for dynamic
10468     components of variant records (identified by the ___XVL suffix in
10469     the component name).  Even if the target type is a PAD type, the size
10470     of that type might not be statically known.  So the PAD type needs
10471     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10472     we might end up with the wrong size for our component.  This can be
10473     observed with the following type declarations:
10474
10475         type Octal is new Integer range 0 .. 7;
10476         type Octal_Array is array (Positive range <>) of Octal;
10477         pragma Pack (Octal_Array);
10478
10479         type Octal_Buffer (Size : Positive) is record
10480            Buffer : Octal_Array (1 .. Size);
10481            Length : Integer;
10482         end record;
10483
10484     In that case, Buffer is a PAD type whose size is unset and needs
10485     to be computed by fixing the unwrapped type.
10486
10487     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10488     ----------------------------------------------------------
10489
10490     Lastly, when should the sub-elements of an entity that remained unfixed
10491     thus far, be actually fixed?
10492
10493     The answer is: Only when referencing that element.  For instance
10494     when selecting one component of a record, this specific component
10495     should be fixed at that point in time.  Or when printing the value
10496     of a record, each component should be fixed before its value gets
10497     printed.  Similarly for arrays, the element of the array should be
10498     fixed when printing each element of the array, or when extracting
10499     one element out of that array.  On the other hand, fixing should
10500     not be performed on the elements when taking a slice of an array!
10501
10502     Note that one of the side effects of miscomputing the offset and
10503     size of each field is that we end up also miscomputing the size
10504     of the containing type.  This can have adverse results when computing
10505     the value of an entity.  GDB fetches the value of an entity based
10506     on the size of its type, and thus a wrong size causes GDB to fetch
10507     the wrong amount of memory.  In the case where the computed size is
10508     too small, GDB fetches too little data to print the value of our
10509     entity.  Results in this case are unpredictable, as we usually read
10510     past the buffer containing the data =:-o.  */
10511
10512 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10513    for that subexpression cast to TO_TYPE.  Advance *POS over the
10514    subexpression.  */
10515
10516 static value *
10517 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10518                               enum noside noside, struct type *to_type)
10519 {
10520   int pc = *pos;
10521
10522   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10523       || exp->elts[pc].opcode == OP_VAR_VALUE)
10524     {
10525       (*pos) += 4;
10526
10527       value *val;
10528       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10529         {
10530           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10531             return value_zero (to_type, not_lval);
10532
10533           val = evaluate_var_msym_value (noside,
10534                                          exp->elts[pc + 1].objfile,
10535                                          exp->elts[pc + 2].msymbol);
10536         }
10537       else
10538         val = evaluate_var_value (noside,
10539                                   exp->elts[pc + 1].block,
10540                                   exp->elts[pc + 2].symbol);
10541
10542       if (noside == EVAL_SKIP)
10543         return eval_skip_value (exp);
10544
10545       val = ada_value_cast (to_type, val);
10546
10547       /* Follow the Ada language semantics that do not allow taking
10548          an address of the result of a cast (view conversion in Ada).  */
10549       if (VALUE_LVAL (val) == lval_memory)
10550         {
10551           if (value_lazy (val))
10552             value_fetch_lazy (val);
10553           VALUE_LVAL (val) = not_lval;
10554         }
10555       return val;
10556     }
10557
10558   value *val = evaluate_subexp (to_type, exp, pos, noside);
10559   if (noside == EVAL_SKIP)
10560     return eval_skip_value (exp);
10561   return ada_value_cast (to_type, val);
10562 }
10563
10564 /* Implement the evaluate_exp routine in the exp_descriptor structure
10565    for the Ada language.  */
10566
10567 static struct value *
10568 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10569                      int *pos, enum noside noside)
10570 {
10571   enum exp_opcode op;
10572   int tem;
10573   int pc;
10574   int preeval_pos;
10575   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10576   struct type *type;
10577   int nargs, oplen;
10578   struct value **argvec;
10579
10580   pc = *pos;
10581   *pos += 1;
10582   op = exp->elts[pc].opcode;
10583
10584   switch (op)
10585     {
10586     default:
10587       *pos -= 1;
10588       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10589
10590       if (noside == EVAL_NORMAL)
10591         arg1 = unwrap_value (arg1);
10592
10593       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10594          then we need to perform the conversion manually, because
10595          evaluate_subexp_standard doesn't do it.  This conversion is
10596          necessary in Ada because the different kinds of float/fixed
10597          types in Ada have different representations.
10598
10599          Similarly, we need to perform the conversion from OP_LONG
10600          ourselves.  */
10601       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10602         arg1 = ada_value_cast (expect_type, arg1);
10603
10604       return arg1;
10605
10606     case OP_STRING:
10607       {
10608         struct value *result;
10609
10610         *pos -= 1;
10611         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10612         /* The result type will have code OP_STRING, bashed there from 
10613            OP_ARRAY.  Bash it back.  */
10614         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10615           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10616         return result;
10617       }
10618
10619     case UNOP_CAST:
10620       (*pos) += 2;
10621       type = exp->elts[pc + 1].type;
10622       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10623
10624     case UNOP_QUAL:
10625       (*pos) += 2;
10626       type = exp->elts[pc + 1].type;
10627       return ada_evaluate_subexp (type, exp, pos, noside);
10628
10629     case BINOP_ASSIGN:
10630       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10631       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10632         {
10633           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10634           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10635             return arg1;
10636           return ada_value_assign (arg1, arg1);
10637         }
10638       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10639          except if the lhs of our assignment is a convenience variable.
10640          In the case of assigning to a convenience variable, the lhs
10641          should be exactly the result of the evaluation of the rhs.  */
10642       type = value_type (arg1);
10643       if (VALUE_LVAL (arg1) == lval_internalvar)
10644          type = NULL;
10645       arg2 = evaluate_subexp (type, exp, pos, noside);
10646       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10647         return arg1;
10648       if (ada_is_fixed_point_type (value_type (arg1)))
10649         arg2 = cast_to_fixed (value_type (arg1), arg2);
10650       else if (ada_is_fixed_point_type (value_type (arg2)))
10651         error
10652           (_("Fixed-point values must be assigned to fixed-point variables"));
10653       else
10654         arg2 = coerce_for_assign (value_type (arg1), arg2);
10655       return ada_value_assign (arg1, arg2);
10656
10657     case BINOP_ADD:
10658       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10659       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10660       if (noside == EVAL_SKIP)
10661         goto nosideret;
10662       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10663         return (value_from_longest
10664                  (value_type (arg1),
10665                   value_as_long (arg1) + value_as_long (arg2)));
10666       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10667         return (value_from_longest
10668                  (value_type (arg2),
10669                   value_as_long (arg1) + value_as_long (arg2)));
10670       if ((ada_is_fixed_point_type (value_type (arg1))
10671            || ada_is_fixed_point_type (value_type (arg2)))
10672           && value_type (arg1) != value_type (arg2))
10673         error (_("Operands of fixed-point addition must have the same type"));
10674       /* Do the addition, and cast the result to the type of the first
10675          argument.  We cannot cast the result to a reference type, so if
10676          ARG1 is a reference type, find its underlying type.  */
10677       type = value_type (arg1);
10678       while (TYPE_CODE (type) == TYPE_CODE_REF)
10679         type = TYPE_TARGET_TYPE (type);
10680       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10681       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10682
10683     case BINOP_SUB:
10684       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10685       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10686       if (noside == EVAL_SKIP)
10687         goto nosideret;
10688       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10689         return (value_from_longest
10690                  (value_type (arg1),
10691                   value_as_long (arg1) - value_as_long (arg2)));
10692       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10693         return (value_from_longest
10694                  (value_type (arg2),
10695                   value_as_long (arg1) - value_as_long (arg2)));
10696       if ((ada_is_fixed_point_type (value_type (arg1))
10697            || ada_is_fixed_point_type (value_type (arg2)))
10698           && value_type (arg1) != value_type (arg2))
10699         error (_("Operands of fixed-point subtraction "
10700                  "must have the same type"));
10701       /* Do the substraction, and cast the result to the type of the first
10702          argument.  We cannot cast the result to a reference type, so if
10703          ARG1 is a reference type, find its underlying type.  */
10704       type = value_type (arg1);
10705       while (TYPE_CODE (type) == TYPE_CODE_REF)
10706         type = TYPE_TARGET_TYPE (type);
10707       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10708       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10709
10710     case BINOP_MUL:
10711     case BINOP_DIV:
10712     case BINOP_REM:
10713     case BINOP_MOD:
10714       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10715       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10716       if (noside == EVAL_SKIP)
10717         goto nosideret;
10718       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10719         {
10720           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10721           return value_zero (value_type (arg1), not_lval);
10722         }
10723       else
10724         {
10725           type = builtin_type (exp->gdbarch)->builtin_double;
10726           if (ada_is_fixed_point_type (value_type (arg1)))
10727             arg1 = cast_from_fixed (type, arg1);
10728           if (ada_is_fixed_point_type (value_type (arg2)))
10729             arg2 = cast_from_fixed (type, arg2);
10730           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10731           return ada_value_binop (arg1, arg2, op);
10732         }
10733
10734     case BINOP_EQUAL:
10735     case BINOP_NOTEQUAL:
10736       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10737       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10738       if (noside == EVAL_SKIP)
10739         goto nosideret;
10740       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10741         tem = 0;
10742       else
10743         {
10744           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10745           tem = ada_value_equal (arg1, arg2);
10746         }
10747       if (op == BINOP_NOTEQUAL)
10748         tem = !tem;
10749       type = language_bool_type (exp->language_defn, exp->gdbarch);
10750       return value_from_longest (type, (LONGEST) tem);
10751
10752     case UNOP_NEG:
10753       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10754       if (noside == EVAL_SKIP)
10755         goto nosideret;
10756       else if (ada_is_fixed_point_type (value_type (arg1)))
10757         return value_cast (value_type (arg1), value_neg (arg1));
10758       else
10759         {
10760           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10761           return value_neg (arg1);
10762         }
10763
10764     case BINOP_LOGICAL_AND:
10765     case BINOP_LOGICAL_OR:
10766     case UNOP_LOGICAL_NOT:
10767       {
10768         struct value *val;
10769
10770         *pos -= 1;
10771         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10772         type = language_bool_type (exp->language_defn, exp->gdbarch);
10773         return value_cast (type, val);
10774       }
10775
10776     case BINOP_BITWISE_AND:
10777     case BINOP_BITWISE_IOR:
10778     case BINOP_BITWISE_XOR:
10779       {
10780         struct value *val;
10781
10782         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10783         *pos = pc;
10784         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10785
10786         return value_cast (value_type (arg1), val);
10787       }
10788
10789     case OP_VAR_VALUE:
10790       *pos -= 1;
10791
10792       if (noside == EVAL_SKIP)
10793         {
10794           *pos += 4;
10795           goto nosideret;
10796         }
10797
10798       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10799         /* Only encountered when an unresolved symbol occurs in a
10800            context other than a function call, in which case, it is
10801            invalid.  */
10802         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10803                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10804
10805       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10806         {
10807           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10808           /* Check to see if this is a tagged type.  We also need to handle
10809              the case where the type is a reference to a tagged type, but
10810              we have to be careful to exclude pointers to tagged types.
10811              The latter should be shown as usual (as a pointer), whereas
10812              a reference should mostly be transparent to the user.  */
10813           if (ada_is_tagged_type (type, 0)
10814               || (TYPE_CODE (type) == TYPE_CODE_REF
10815                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10816             {
10817               /* Tagged types are a little special in the fact that the real
10818                  type is dynamic and can only be determined by inspecting the
10819                  object's tag.  This means that we need to get the object's
10820                  value first (EVAL_NORMAL) and then extract the actual object
10821                  type from its tag.
10822
10823                  Note that we cannot skip the final step where we extract
10824                  the object type from its tag, because the EVAL_NORMAL phase
10825                  results in dynamic components being resolved into fixed ones.
10826                  This can cause problems when trying to print the type
10827                  description of tagged types whose parent has a dynamic size:
10828                  We use the type name of the "_parent" component in order
10829                  to print the name of the ancestor type in the type description.
10830                  If that component had a dynamic size, the resolution into
10831                  a fixed type would result in the loss of that type name,
10832                  thus preventing us from printing the name of the ancestor
10833                  type in the type description.  */
10834               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10835
10836               if (TYPE_CODE (type) != TYPE_CODE_REF)
10837                 {
10838                   struct type *actual_type;
10839
10840                   actual_type = type_from_tag (ada_value_tag (arg1));
10841                   if (actual_type == NULL)
10842                     /* If, for some reason, we were unable to determine
10843                        the actual type from the tag, then use the static
10844                        approximation that we just computed as a fallback.
10845                        This can happen if the debugging information is
10846                        incomplete, for instance.  */
10847                     actual_type = type;
10848                   return value_zero (actual_type, not_lval);
10849                 }
10850               else
10851                 {
10852                   /* In the case of a ref, ada_coerce_ref takes care
10853                      of determining the actual type.  But the evaluation
10854                      should return a ref as it should be valid to ask
10855                      for its address; so rebuild a ref after coerce.  */
10856                   arg1 = ada_coerce_ref (arg1);
10857                   return value_ref (arg1, TYPE_CODE_REF);
10858                 }
10859             }
10860
10861           /* Records and unions for which GNAT encodings have been
10862              generated need to be statically fixed as well.
10863              Otherwise, non-static fixing produces a type where
10864              all dynamic properties are removed, which prevents "ptype"
10865              from being able to completely describe the type.
10866              For instance, a case statement in a variant record would be
10867              replaced by the relevant components based on the actual
10868              value of the discriminants.  */
10869           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10870                && dynamic_template_type (type) != NULL)
10871               || (TYPE_CODE (type) == TYPE_CODE_UNION
10872                   && ada_find_parallel_type (type, "___XVU") != NULL))
10873             {
10874               *pos += 4;
10875               return value_zero (to_static_fixed_type (type), not_lval);
10876             }
10877         }
10878
10879       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10880       return ada_to_fixed_value (arg1);
10881
10882     case OP_FUNCALL:
10883       (*pos) += 2;
10884
10885       /* Allocate arg vector, including space for the function to be
10886          called in argvec[0] and a terminating NULL.  */
10887       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10888       argvec = XALLOCAVEC (struct value *, nargs + 2);
10889
10890       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10891           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10892         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10893                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10894       else
10895         {
10896           for (tem = 0; tem <= nargs; tem += 1)
10897             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10898           argvec[tem] = 0;
10899
10900           if (noside == EVAL_SKIP)
10901             goto nosideret;
10902         }
10903
10904       if (ada_is_constrained_packed_array_type
10905           (desc_base_type (value_type (argvec[0]))))
10906         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10907       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10908                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10909         /* This is a packed array that has already been fixed, and
10910            therefore already coerced to a simple array.  Nothing further
10911            to do.  */
10912         ;
10913       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10914         {
10915           /* Make sure we dereference references so that all the code below
10916              feels like it's really handling the referenced value.  Wrapping
10917              types (for alignment) may be there, so make sure we strip them as
10918              well.  */
10919           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10920         }
10921       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10922                && VALUE_LVAL (argvec[0]) == lval_memory)
10923         argvec[0] = value_addr (argvec[0]);
10924
10925       type = ada_check_typedef (value_type (argvec[0]));
10926
10927       /* Ada allows us to implicitly dereference arrays when subscripting
10928          them.  So, if this is an array typedef (encoding use for array
10929          access types encoded as fat pointers), strip it now.  */
10930       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10931         type = ada_typedef_target_type (type);
10932
10933       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10934         {
10935           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10936             {
10937             case TYPE_CODE_FUNC:
10938               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10939               break;
10940             case TYPE_CODE_ARRAY:
10941               break;
10942             case TYPE_CODE_STRUCT:
10943               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10944                 argvec[0] = ada_value_ind (argvec[0]);
10945               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10946               break;
10947             default:
10948               error (_("cannot subscript or call something of type `%s'"),
10949                      ada_type_name (value_type (argvec[0])));
10950               break;
10951             }
10952         }
10953
10954       switch (TYPE_CODE (type))
10955         {
10956         case TYPE_CODE_FUNC:
10957           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10958             {
10959               if (TYPE_TARGET_TYPE (type) == NULL)
10960                 error_call_unknown_return_type (NULL);
10961               return allocate_value (TYPE_TARGET_TYPE (type));
10962             }
10963           return call_function_by_hand (argvec[0], NULL,
10964                                         gdb::make_array_view (argvec + 1,
10965                                                               nargs));
10966         case TYPE_CODE_INTERNAL_FUNCTION:
10967           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10968             /* We don't know anything about what the internal
10969                function might return, but we have to return
10970                something.  */
10971             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10972                                not_lval);
10973           else
10974             return call_internal_function (exp->gdbarch, exp->language_defn,
10975                                            argvec[0], nargs, argvec + 1);
10976
10977         case TYPE_CODE_STRUCT:
10978           {
10979             int arity;
10980
10981             arity = ada_array_arity (type);
10982             type = ada_array_element_type (type, nargs);
10983             if (type == NULL)
10984               error (_("cannot subscript or call a record"));
10985             if (arity != nargs)
10986               error (_("wrong number of subscripts; expecting %d"), arity);
10987             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10988               return value_zero (ada_aligned_type (type), lval_memory);
10989             return
10990               unwrap_value (ada_value_subscript
10991                             (argvec[0], nargs, argvec + 1));
10992           }
10993         case TYPE_CODE_ARRAY:
10994           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10995             {
10996               type = ada_array_element_type (type, nargs);
10997               if (type == NULL)
10998                 error (_("element type of array unknown"));
10999               else
11000                 return value_zero (ada_aligned_type (type), lval_memory);
11001             }
11002           return
11003             unwrap_value (ada_value_subscript
11004                           (ada_coerce_to_simple_array (argvec[0]),
11005                            nargs, argvec + 1));
11006         case TYPE_CODE_PTR:     /* Pointer to array */
11007           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11008             {
11009               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11010               type = ada_array_element_type (type, nargs);
11011               if (type == NULL)
11012                 error (_("element type of array unknown"));
11013               else
11014                 return value_zero (ada_aligned_type (type), lval_memory);
11015             }
11016           return
11017             unwrap_value (ada_value_ptr_subscript (argvec[0],
11018                                                    nargs, argvec + 1));
11019
11020         default:
11021           error (_("Attempt to index or call something other than an "
11022                    "array or function"));
11023         }
11024
11025     case TERNOP_SLICE:
11026       {
11027         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11028         struct value *low_bound_val =
11029           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11030         struct value *high_bound_val =
11031           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11032         LONGEST low_bound;
11033         LONGEST high_bound;
11034
11035         low_bound_val = coerce_ref (low_bound_val);
11036         high_bound_val = coerce_ref (high_bound_val);
11037         low_bound = value_as_long (low_bound_val);
11038         high_bound = value_as_long (high_bound_val);
11039
11040         if (noside == EVAL_SKIP)
11041           goto nosideret;
11042
11043         /* If this is a reference to an aligner type, then remove all
11044            the aligners.  */
11045         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11046             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11047           TYPE_TARGET_TYPE (value_type (array)) =
11048             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11049
11050         if (ada_is_constrained_packed_array_type (value_type (array)))
11051           error (_("cannot slice a packed array"));
11052
11053         /* If this is a reference to an array or an array lvalue,
11054            convert to a pointer.  */
11055         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11056             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11057                 && VALUE_LVAL (array) == lval_memory))
11058           array = value_addr (array);
11059
11060         if (noside == EVAL_AVOID_SIDE_EFFECTS
11061             && ada_is_array_descriptor_type (ada_check_typedef
11062                                              (value_type (array))))
11063           return empty_array (ada_type_of_array (array, 0), low_bound,
11064                               high_bound);
11065
11066         array = ada_coerce_to_simple_array_ptr (array);
11067
11068         /* If we have more than one level of pointer indirection,
11069            dereference the value until we get only one level.  */
11070         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11071                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11072                      == TYPE_CODE_PTR))
11073           array = value_ind (array);
11074
11075         /* Make sure we really do have an array type before going further,
11076            to avoid a SEGV when trying to get the index type or the target
11077            type later down the road if the debug info generated by
11078            the compiler is incorrect or incomplete.  */
11079         if (!ada_is_simple_array_type (value_type (array)))
11080           error (_("cannot take slice of non-array"));
11081
11082         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11083             == TYPE_CODE_PTR)
11084           {
11085             struct type *type0 = ada_check_typedef (value_type (array));
11086
11087             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11088               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
11089             else
11090               {
11091                 struct type *arr_type0 =
11092                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11093
11094                 return ada_value_slice_from_ptr (array, arr_type0,
11095                                                  longest_to_int (low_bound),
11096                                                  longest_to_int (high_bound));
11097               }
11098           }
11099         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11100           return array;
11101         else if (high_bound < low_bound)
11102           return empty_array (value_type (array), low_bound, high_bound);
11103         else
11104           return ada_value_slice (array, longest_to_int (low_bound),
11105                                   longest_to_int (high_bound));
11106       }
11107
11108     case UNOP_IN_RANGE:
11109       (*pos) += 2;
11110       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11111       type = check_typedef (exp->elts[pc + 1].type);
11112
11113       if (noside == EVAL_SKIP)
11114         goto nosideret;
11115
11116       switch (TYPE_CODE (type))
11117         {
11118         default:
11119           lim_warning (_("Membership test incompletely implemented; "
11120                          "always returns true"));
11121           type = language_bool_type (exp->language_defn, exp->gdbarch);
11122           return value_from_longest (type, (LONGEST) 1);
11123
11124         case TYPE_CODE_RANGE:
11125           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11126           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11127           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11128           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11129           type = language_bool_type (exp->language_defn, exp->gdbarch);
11130           return
11131             value_from_longest (type,
11132                                 (value_less (arg1, arg3)
11133                                  || value_equal (arg1, arg3))
11134                                 && (value_less (arg2, arg1)
11135                                     || value_equal (arg2, arg1)));
11136         }
11137
11138     case BINOP_IN_BOUNDS:
11139       (*pos) += 2;
11140       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11141       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11142
11143       if (noside == EVAL_SKIP)
11144         goto nosideret;
11145
11146       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11147         {
11148           type = language_bool_type (exp->language_defn, exp->gdbarch);
11149           return value_zero (type, not_lval);
11150         }
11151
11152       tem = longest_to_int (exp->elts[pc + 1].longconst);
11153
11154       type = ada_index_type (value_type (arg2), tem, "range");
11155       if (!type)
11156         type = value_type (arg1);
11157
11158       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11159       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11160
11161       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11162       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11163       type = language_bool_type (exp->language_defn, exp->gdbarch);
11164       return
11165         value_from_longest (type,
11166                             (value_less (arg1, arg3)
11167                              || value_equal (arg1, arg3))
11168                             && (value_less (arg2, arg1)
11169                                 || value_equal (arg2, arg1)));
11170
11171     case TERNOP_IN_RANGE:
11172       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11173       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11174       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11175
11176       if (noside == EVAL_SKIP)
11177         goto nosideret;
11178
11179       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11180       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11181       type = language_bool_type (exp->language_defn, exp->gdbarch);
11182       return
11183         value_from_longest (type,
11184                             (value_less (arg1, arg3)
11185                              || value_equal (arg1, arg3))
11186                             && (value_less (arg2, arg1)
11187                                 || value_equal (arg2, arg1)));
11188
11189     case OP_ATR_FIRST:
11190     case OP_ATR_LAST:
11191     case OP_ATR_LENGTH:
11192       {
11193         struct type *type_arg;
11194
11195         if (exp->elts[*pos].opcode == OP_TYPE)
11196           {
11197             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11198             arg1 = NULL;
11199             type_arg = check_typedef (exp->elts[pc + 2].type);
11200           }
11201         else
11202           {
11203             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11204             type_arg = NULL;
11205           }
11206
11207         if (exp->elts[*pos].opcode != OP_LONG)
11208           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11209         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11210         *pos += 4;
11211
11212         if (noside == EVAL_SKIP)
11213           goto nosideret;
11214
11215         if (type_arg == NULL)
11216           {
11217             arg1 = ada_coerce_ref (arg1);
11218
11219             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11220               arg1 = ada_coerce_to_simple_array (arg1);
11221
11222             if (op == OP_ATR_LENGTH)
11223               type = builtin_type (exp->gdbarch)->builtin_int;
11224             else
11225               {
11226                 type = ada_index_type (value_type (arg1), tem,
11227                                        ada_attribute_name (op));
11228                 if (type == NULL)
11229                   type = builtin_type (exp->gdbarch)->builtin_int;
11230               }
11231
11232             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11233               return allocate_value (type);
11234
11235             switch (op)
11236               {
11237               default:          /* Should never happen.  */
11238                 error (_("unexpected attribute encountered"));
11239               case OP_ATR_FIRST:
11240                 return value_from_longest
11241                         (type, ada_array_bound (arg1, tem, 0));
11242               case OP_ATR_LAST:
11243                 return value_from_longest
11244                         (type, ada_array_bound (arg1, tem, 1));
11245               case OP_ATR_LENGTH:
11246                 return value_from_longest
11247                         (type, ada_array_length (arg1, tem));
11248               }
11249           }
11250         else if (discrete_type_p (type_arg))
11251           {
11252             struct type *range_type;
11253             const char *name = ada_type_name (type_arg);
11254
11255             range_type = NULL;
11256             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11257               range_type = to_fixed_range_type (type_arg, NULL);
11258             if (range_type == NULL)
11259               range_type = type_arg;
11260             switch (op)
11261               {
11262               default:
11263                 error (_("unexpected attribute encountered"));
11264               case OP_ATR_FIRST:
11265                 return value_from_longest 
11266                   (range_type, ada_discrete_type_low_bound (range_type));
11267               case OP_ATR_LAST:
11268                 return value_from_longest
11269                   (range_type, ada_discrete_type_high_bound (range_type));
11270               case OP_ATR_LENGTH:
11271                 error (_("the 'length attribute applies only to array types"));
11272               }
11273           }
11274         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11275           error (_("unimplemented type attribute"));
11276         else
11277           {
11278             LONGEST low, high;
11279
11280             if (ada_is_constrained_packed_array_type (type_arg))
11281               type_arg = decode_constrained_packed_array_type (type_arg);
11282
11283             if (op == OP_ATR_LENGTH)
11284               type = builtin_type (exp->gdbarch)->builtin_int;
11285             else
11286               {
11287                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11288                 if (type == NULL)
11289                   type = builtin_type (exp->gdbarch)->builtin_int;
11290               }
11291
11292             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11293               return allocate_value (type);
11294
11295             switch (op)
11296               {
11297               default:
11298                 error (_("unexpected attribute encountered"));
11299               case OP_ATR_FIRST:
11300                 low = ada_array_bound_from_type (type_arg, tem, 0);
11301                 return value_from_longest (type, low);
11302               case OP_ATR_LAST:
11303                 high = ada_array_bound_from_type (type_arg, tem, 1);
11304                 return value_from_longest (type, high);
11305               case OP_ATR_LENGTH:
11306                 low = ada_array_bound_from_type (type_arg, tem, 0);
11307                 high = ada_array_bound_from_type (type_arg, tem, 1);
11308                 return value_from_longest (type, high - low + 1);
11309               }
11310           }
11311       }
11312
11313     case OP_ATR_TAG:
11314       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11315       if (noside == EVAL_SKIP)
11316         goto nosideret;
11317
11318       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11319         return value_zero (ada_tag_type (arg1), not_lval);
11320
11321       return ada_value_tag (arg1);
11322
11323     case OP_ATR_MIN:
11324     case OP_ATR_MAX:
11325       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11326       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11327       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11328       if (noside == EVAL_SKIP)
11329         goto nosideret;
11330       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11331         return value_zero (value_type (arg1), not_lval);
11332       else
11333         {
11334           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11335           return value_binop (arg1, arg2,
11336                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11337         }
11338
11339     case OP_ATR_MODULUS:
11340       {
11341         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11342
11343         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11344         if (noside == EVAL_SKIP)
11345           goto nosideret;
11346
11347         if (!ada_is_modular_type (type_arg))
11348           error (_("'modulus must be applied to modular type"));
11349
11350         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11351                                    ada_modulus (type_arg));
11352       }
11353
11354
11355     case OP_ATR_POS:
11356       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11357       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11358       if (noside == EVAL_SKIP)
11359         goto nosideret;
11360       type = builtin_type (exp->gdbarch)->builtin_int;
11361       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11362         return value_zero (type, not_lval);
11363       else
11364         return value_pos_atr (type, arg1);
11365
11366     case OP_ATR_SIZE:
11367       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11368       type = value_type (arg1);
11369
11370       /* If the argument is a reference, then dereference its type, since
11371          the user is really asking for the size of the actual object,
11372          not the size of the pointer.  */
11373       if (TYPE_CODE (type) == TYPE_CODE_REF)
11374         type = TYPE_TARGET_TYPE (type);
11375
11376       if (noside == EVAL_SKIP)
11377         goto nosideret;
11378       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11379         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11380       else
11381         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11382                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11383
11384     case OP_ATR_VAL:
11385       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11386       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11387       type = exp->elts[pc + 2].type;
11388       if (noside == EVAL_SKIP)
11389         goto nosideret;
11390       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11391         return value_zero (type, not_lval);
11392       else
11393         return value_val_atr (type, arg1);
11394
11395     case BINOP_EXP:
11396       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11397       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11398       if (noside == EVAL_SKIP)
11399         goto nosideret;
11400       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11401         return value_zero (value_type (arg1), not_lval);
11402       else
11403         {
11404           /* For integer exponentiation operations,
11405              only promote the first argument.  */
11406           if (is_integral_type (value_type (arg2)))
11407             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11408           else
11409             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11410
11411           return value_binop (arg1, arg2, op);
11412         }
11413
11414     case UNOP_PLUS:
11415       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11416       if (noside == EVAL_SKIP)
11417         goto nosideret;
11418       else
11419         return arg1;
11420
11421     case UNOP_ABS:
11422       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11423       if (noside == EVAL_SKIP)
11424         goto nosideret;
11425       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11426       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11427         return value_neg (arg1);
11428       else
11429         return arg1;
11430
11431     case UNOP_IND:
11432       preeval_pos = *pos;
11433       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11434       if (noside == EVAL_SKIP)
11435         goto nosideret;
11436       type = ada_check_typedef (value_type (arg1));
11437       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11438         {
11439           if (ada_is_array_descriptor_type (type))
11440             /* GDB allows dereferencing GNAT array descriptors.  */
11441             {
11442               struct type *arrType = ada_type_of_array (arg1, 0);
11443
11444               if (arrType == NULL)
11445                 error (_("Attempt to dereference null array pointer."));
11446               return value_at_lazy (arrType, 0);
11447             }
11448           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11449                    || TYPE_CODE (type) == TYPE_CODE_REF
11450                    /* In C you can dereference an array to get the 1st elt.  */
11451                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11452             {
11453             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11454                only be determined by inspecting the object's tag.
11455                This means that we need to evaluate completely the
11456                expression in order to get its type.  */
11457
11458               if ((TYPE_CODE (type) == TYPE_CODE_REF
11459                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11460                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11461                 {
11462                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11463                                           EVAL_NORMAL);
11464                   type = value_type (ada_value_ind (arg1));
11465                 }
11466               else
11467                 {
11468                   type = to_static_fixed_type
11469                     (ada_aligned_type
11470                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11471                 }
11472               ada_ensure_varsize_limit (type);
11473               return value_zero (type, lval_memory);
11474             }
11475           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11476             {
11477               /* GDB allows dereferencing an int.  */
11478               if (expect_type == NULL)
11479                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11480                                    lval_memory);
11481               else
11482                 {
11483                   expect_type = 
11484                     to_static_fixed_type (ada_aligned_type (expect_type));
11485                   return value_zero (expect_type, lval_memory);
11486                 }
11487             }
11488           else
11489             error (_("Attempt to take contents of a non-pointer value."));
11490         }
11491       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11492       type = ada_check_typedef (value_type (arg1));
11493
11494       if (TYPE_CODE (type) == TYPE_CODE_INT)
11495           /* GDB allows dereferencing an int.  If we were given
11496              the expect_type, then use that as the target type.
11497              Otherwise, assume that the target type is an int.  */
11498         {
11499           if (expect_type != NULL)
11500             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11501                                               arg1));
11502           else
11503             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11504                                   (CORE_ADDR) value_as_address (arg1));
11505         }
11506
11507       if (ada_is_array_descriptor_type (type))
11508         /* GDB allows dereferencing GNAT array descriptors.  */
11509         return ada_coerce_to_simple_array (arg1);
11510       else
11511         return ada_value_ind (arg1);
11512
11513     case STRUCTOP_STRUCT:
11514       tem = longest_to_int (exp->elts[pc + 1].longconst);
11515       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11516       preeval_pos = *pos;
11517       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11518       if (noside == EVAL_SKIP)
11519         goto nosideret;
11520       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11521         {
11522           struct type *type1 = value_type (arg1);
11523
11524           if (ada_is_tagged_type (type1, 1))
11525             {
11526               type = ada_lookup_struct_elt_type (type1,
11527                                                  &exp->elts[pc + 2].string,
11528                                                  1, 1);
11529
11530               /* If the field is not found, check if it exists in the
11531                  extension of this object's type. This means that we
11532                  need to evaluate completely the expression.  */
11533
11534               if (type == NULL)
11535                 {
11536                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11537                                           EVAL_NORMAL);
11538                   arg1 = ada_value_struct_elt (arg1,
11539                                                &exp->elts[pc + 2].string,
11540                                                0);
11541                   arg1 = unwrap_value (arg1);
11542                   type = value_type (ada_to_fixed_value (arg1));
11543                 }
11544             }
11545           else
11546             type =
11547               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11548                                           0);
11549
11550           return value_zero (ada_aligned_type (type), lval_memory);
11551         }
11552       else
11553         {
11554           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11555           arg1 = unwrap_value (arg1);
11556           return ada_to_fixed_value (arg1);
11557         }
11558
11559     case OP_TYPE:
11560       /* The value is not supposed to be used.  This is here to make it
11561          easier to accommodate expressions that contain types.  */
11562       (*pos) += 2;
11563       if (noside == EVAL_SKIP)
11564         goto nosideret;
11565       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11566         return allocate_value (exp->elts[pc + 1].type);
11567       else
11568         error (_("Attempt to use a type name as an expression"));
11569
11570     case OP_AGGREGATE:
11571     case OP_CHOICES:
11572     case OP_OTHERS:
11573     case OP_DISCRETE_RANGE:
11574     case OP_POSITIONAL:
11575     case OP_NAME:
11576       if (noside == EVAL_NORMAL)
11577         switch (op) 
11578           {
11579           case OP_NAME:
11580             error (_("Undefined name, ambiguous name, or renaming used in "
11581                      "component association: %s."), &exp->elts[pc+2].string);
11582           case OP_AGGREGATE:
11583             error (_("Aggregates only allowed on the right of an assignment"));
11584           default:
11585             internal_error (__FILE__, __LINE__,
11586                             _("aggregate apparently mangled"));
11587           }
11588
11589       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11590       *pos += oplen - 1;
11591       for (tem = 0; tem < nargs; tem += 1) 
11592         ada_evaluate_subexp (NULL, exp, pos, noside);
11593       goto nosideret;
11594     }
11595
11596 nosideret:
11597   return eval_skip_value (exp);
11598 }
11599 \f
11600
11601                                 /* Fixed point */
11602
11603 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11604    type name that encodes the 'small and 'delta information.
11605    Otherwise, return NULL.  */
11606
11607 static const char *
11608 fixed_type_info (struct type *type)
11609 {
11610   const char *name = ada_type_name (type);
11611   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11612
11613   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11614     {
11615       const char *tail = strstr (name, "___XF_");
11616
11617       if (tail == NULL)
11618         return NULL;
11619       else
11620         return tail + 5;
11621     }
11622   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11623     return fixed_type_info (TYPE_TARGET_TYPE (type));
11624   else
11625     return NULL;
11626 }
11627
11628 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11629
11630 int
11631 ada_is_fixed_point_type (struct type *type)
11632 {
11633   return fixed_type_info (type) != NULL;
11634 }
11635
11636 /* Return non-zero iff TYPE represents a System.Address type.  */
11637
11638 int
11639 ada_is_system_address_type (struct type *type)
11640 {
11641   return (TYPE_NAME (type)
11642           && strcmp (TYPE_NAME (type), "system__address") == 0);
11643 }
11644
11645 /* Assuming that TYPE is the representation of an Ada fixed-point
11646    type, return the target floating-point type to be used to represent
11647    of this type during internal computation.  */
11648
11649 static struct type *
11650 ada_scaling_type (struct type *type)
11651 {
11652   return builtin_type (get_type_arch (type))->builtin_long_double;
11653 }
11654
11655 /* Assuming that TYPE is the representation of an Ada fixed-point
11656    type, return its delta, or NULL if the type is malformed and the
11657    delta cannot be determined.  */
11658
11659 struct value *
11660 ada_delta (struct type *type)
11661 {
11662   const char *encoding = fixed_type_info (type);
11663   struct type *scale_type = ada_scaling_type (type);
11664
11665   long long num, den;
11666
11667   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11668     return nullptr;
11669   else
11670     return value_binop (value_from_longest (scale_type, num),
11671                         value_from_longest (scale_type, den), BINOP_DIV);
11672 }
11673
11674 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11675    factor ('SMALL value) associated with the type.  */
11676
11677 struct value *
11678 ada_scaling_factor (struct type *type)
11679 {
11680   const char *encoding = fixed_type_info (type);
11681   struct type *scale_type = ada_scaling_type (type);
11682
11683   long long num0, den0, num1, den1;
11684   int n;
11685
11686   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11687               &num0, &den0, &num1, &den1);
11688
11689   if (n < 2)
11690     return value_from_longest (scale_type, 1);
11691   else if (n == 4)
11692     return value_binop (value_from_longest (scale_type, num1),
11693                         value_from_longest (scale_type, den1), BINOP_DIV);
11694   else
11695     return value_binop (value_from_longest (scale_type, num0),
11696                         value_from_longest (scale_type, den0), BINOP_DIV);
11697 }
11698
11699 \f
11700
11701                                 /* Range types */
11702
11703 /* Scan STR beginning at position K for a discriminant name, and
11704    return the value of that discriminant field of DVAL in *PX.  If
11705    PNEW_K is not null, put the position of the character beyond the
11706    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11707    not alter *PX and *PNEW_K if unsuccessful.  */
11708
11709 static int
11710 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11711                     int *pnew_k)
11712 {
11713   static char *bound_buffer = NULL;
11714   static size_t bound_buffer_len = 0;
11715   const char *pstart, *pend, *bound;
11716   struct value *bound_val;
11717
11718   if (dval == NULL || str == NULL || str[k] == '\0')
11719     return 0;
11720
11721   pstart = str + k;
11722   pend = strstr (pstart, "__");
11723   if (pend == NULL)
11724     {
11725       bound = pstart;
11726       k += strlen (bound);
11727     }
11728   else
11729     {
11730       int len = pend - pstart;
11731
11732       /* Strip __ and beyond.  */
11733       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11734       strncpy (bound_buffer, pstart, len);
11735       bound_buffer[len] = '\0';
11736
11737       bound = bound_buffer;
11738       k = pend - str;
11739     }
11740
11741   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11742   if (bound_val == NULL)
11743     return 0;
11744
11745   *px = value_as_long (bound_val);
11746   if (pnew_k != NULL)
11747     *pnew_k = k;
11748   return 1;
11749 }
11750
11751 /* Value of variable named NAME in the current environment.  If
11752    no such variable found, then if ERR_MSG is null, returns 0, and
11753    otherwise causes an error with message ERR_MSG.  */
11754
11755 static struct value *
11756 get_var_value (const char *name, const char *err_msg)
11757 {
11758   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11759
11760   std::vector<struct block_symbol> syms;
11761   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11762                                              get_selected_block (0),
11763                                              VAR_DOMAIN, &syms, 1);
11764
11765   if (nsyms != 1)
11766     {
11767       if (err_msg == NULL)
11768         return 0;
11769       else
11770         error (("%s"), err_msg);
11771     }
11772
11773   return value_of_variable (syms[0].symbol, syms[0].block);
11774 }
11775
11776 /* Value of integer variable named NAME in the current environment.
11777    If no such variable is found, returns false.  Otherwise, sets VALUE
11778    to the variable's value and returns true.  */
11779
11780 bool
11781 get_int_var_value (const char *name, LONGEST &value)
11782 {
11783   struct value *var_val = get_var_value (name, 0);
11784
11785   if (var_val == 0)
11786     return false;
11787
11788   value = value_as_long (var_val);
11789   return true;
11790 }
11791
11792
11793 /* Return a range type whose base type is that of the range type named
11794    NAME in the current environment, and whose bounds are calculated
11795    from NAME according to the GNAT range encoding conventions.
11796    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11797    corresponding range type from debug information; fall back to using it
11798    if symbol lookup fails.  If a new type must be created, allocate it
11799    like ORIG_TYPE was.  The bounds information, in general, is encoded
11800    in NAME, the base type given in the named range type.  */
11801
11802 static struct type *
11803 to_fixed_range_type (struct type *raw_type, struct value *dval)
11804 {
11805   const char *name;
11806   struct type *base_type;
11807   const char *subtype_info;
11808
11809   gdb_assert (raw_type != NULL);
11810   gdb_assert (TYPE_NAME (raw_type) != NULL);
11811
11812   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11813     base_type = TYPE_TARGET_TYPE (raw_type);
11814   else
11815     base_type = raw_type;
11816
11817   name = TYPE_NAME (raw_type);
11818   subtype_info = strstr (name, "___XD");
11819   if (subtype_info == NULL)
11820     {
11821       LONGEST L = ada_discrete_type_low_bound (raw_type);
11822       LONGEST U = ada_discrete_type_high_bound (raw_type);
11823
11824       if (L < INT_MIN || U > INT_MAX)
11825         return raw_type;
11826       else
11827         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11828                                          L, U);
11829     }
11830   else
11831     {
11832       static char *name_buf = NULL;
11833       static size_t name_len = 0;
11834       int prefix_len = subtype_info - name;
11835       LONGEST L, U;
11836       struct type *type;
11837       const char *bounds_str;
11838       int n;
11839
11840       GROW_VECT (name_buf, name_len, prefix_len + 5);
11841       strncpy (name_buf, name, prefix_len);
11842       name_buf[prefix_len] = '\0';
11843
11844       subtype_info += 5;
11845       bounds_str = strchr (subtype_info, '_');
11846       n = 1;
11847
11848       if (*subtype_info == 'L')
11849         {
11850           if (!ada_scan_number (bounds_str, n, &L, &n)
11851               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11852             return raw_type;
11853           if (bounds_str[n] == '_')
11854             n += 2;
11855           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11856             n += 1;
11857           subtype_info += 1;
11858         }
11859       else
11860         {
11861           strcpy (name_buf + prefix_len, "___L");
11862           if (!get_int_var_value (name_buf, L))
11863             {
11864               lim_warning (_("Unknown lower bound, using 1."));
11865               L = 1;
11866             }
11867         }
11868
11869       if (*subtype_info == 'U')
11870         {
11871           if (!ada_scan_number (bounds_str, n, &U, &n)
11872               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11873             return raw_type;
11874         }
11875       else
11876         {
11877           strcpy (name_buf + prefix_len, "___U");
11878           if (!get_int_var_value (name_buf, U))
11879             {
11880               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11881               U = L;
11882             }
11883         }
11884
11885       type = create_static_range_type (alloc_type_copy (raw_type),
11886                                        base_type, L, U);
11887       /* create_static_range_type alters the resulting type's length
11888          to match the size of the base_type, which is not what we want.
11889          Set it back to the original range type's length.  */
11890       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11891       TYPE_NAME (type) = name;
11892       return type;
11893     }
11894 }
11895
11896 /* True iff NAME is the name of a range type.  */
11897
11898 int
11899 ada_is_range_type_name (const char *name)
11900 {
11901   return (name != NULL && strstr (name, "___XD"));
11902 }
11903 \f
11904
11905                                 /* Modular types */
11906
11907 /* True iff TYPE is an Ada modular type.  */
11908
11909 int
11910 ada_is_modular_type (struct type *type)
11911 {
11912   struct type *subranged_type = get_base_type (type);
11913
11914   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11915           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11916           && TYPE_UNSIGNED (subranged_type));
11917 }
11918
11919 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11920
11921 ULONGEST
11922 ada_modulus (struct type *type)
11923 {
11924   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11925 }
11926 \f
11927
11928 /* Ada exception catchpoint support:
11929    ---------------------------------
11930
11931    We support 3 kinds of exception catchpoints:
11932      . catchpoints on Ada exceptions
11933      . catchpoints on unhandled Ada exceptions
11934      . catchpoints on failed assertions
11935
11936    Exceptions raised during failed assertions, or unhandled exceptions
11937    could perfectly be caught with the general catchpoint on Ada exceptions.
11938    However, we can easily differentiate these two special cases, and having
11939    the option to distinguish these two cases from the rest can be useful
11940    to zero-in on certain situations.
11941
11942    Exception catchpoints are a specialized form of breakpoint,
11943    since they rely on inserting breakpoints inside known routines
11944    of the GNAT runtime.  The implementation therefore uses a standard
11945    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11946    of breakpoint_ops.
11947
11948    Support in the runtime for exception catchpoints have been changed
11949    a few times already, and these changes affect the implementation
11950    of these catchpoints.  In order to be able to support several
11951    variants of the runtime, we use a sniffer that will determine
11952    the runtime variant used by the program being debugged.  */
11953
11954 /* Ada's standard exceptions.
11955
11956    The Ada 83 standard also defined Numeric_Error.  But there so many
11957    situations where it was unclear from the Ada 83 Reference Manual
11958    (RM) whether Constraint_Error or Numeric_Error should be raised,
11959    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11960    Interpretation saying that anytime the RM says that Numeric_Error
11961    should be raised, the implementation may raise Constraint_Error.
11962    Ada 95 went one step further and pretty much removed Numeric_Error
11963    from the list of standard exceptions (it made it a renaming of
11964    Constraint_Error, to help preserve compatibility when compiling
11965    an Ada83 compiler). As such, we do not include Numeric_Error from
11966    this list of standard exceptions.  */
11967
11968 static const char *standard_exc[] = {
11969   "constraint_error",
11970   "program_error",
11971   "storage_error",
11972   "tasking_error"
11973 };
11974
11975 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11976
11977 /* A structure that describes how to support exception catchpoints
11978    for a given executable.  */
11979
11980 struct exception_support_info
11981 {
11982    /* The name of the symbol to break on in order to insert
11983       a catchpoint on exceptions.  */
11984    const char *catch_exception_sym;
11985
11986    /* The name of the symbol to break on in order to insert
11987       a catchpoint on unhandled exceptions.  */
11988    const char *catch_exception_unhandled_sym;
11989
11990    /* The name of the symbol to break on in order to insert
11991       a catchpoint on failed assertions.  */
11992    const char *catch_assert_sym;
11993
11994    /* The name of the symbol to break on in order to insert
11995       a catchpoint on exception handling.  */
11996    const char *catch_handlers_sym;
11997
11998    /* Assuming that the inferior just triggered an unhandled exception
11999       catchpoint, this function is responsible for returning the address
12000       in inferior memory where the name of that exception is stored.
12001       Return zero if the address could not be computed.  */
12002    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12003 };
12004
12005 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12006 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12007
12008 /* The following exception support info structure describes how to
12009    implement exception catchpoints with the latest version of the
12010    Ada runtime (as of 2007-03-06).  */
12011
12012 static const struct exception_support_info default_exception_support_info =
12013 {
12014   "__gnat_debug_raise_exception", /* catch_exception_sym */
12015   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12016   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12017   "__gnat_begin_handler", /* catch_handlers_sym */
12018   ada_unhandled_exception_name_addr
12019 };
12020
12021 /* The following exception support info structure describes how to
12022    implement exception catchpoints with a slightly older version
12023    of the Ada runtime.  */
12024
12025 static const struct exception_support_info exception_support_info_fallback =
12026 {
12027   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12028   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12029   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12030   "__gnat_begin_handler", /* catch_handlers_sym */
12031   ada_unhandled_exception_name_addr_from_raise
12032 };
12033
12034 /* Return nonzero if we can detect the exception support routines
12035    described in EINFO.
12036
12037    This function errors out if an abnormal situation is detected
12038    (for instance, if we find the exception support routines, but
12039    that support is found to be incomplete).  */
12040
12041 static int
12042 ada_has_this_exception_support (const struct exception_support_info *einfo)
12043 {
12044   struct symbol *sym;
12045
12046   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12047      that should be compiled with debugging information.  As a result, we
12048      expect to find that symbol in the symtabs.  */
12049
12050   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12051   if (sym == NULL)
12052     {
12053       /* Perhaps we did not find our symbol because the Ada runtime was
12054          compiled without debugging info, or simply stripped of it.
12055          It happens on some GNU/Linux distributions for instance, where
12056          users have to install a separate debug package in order to get
12057          the runtime's debugging info.  In that situation, let the user
12058          know why we cannot insert an Ada exception catchpoint.
12059
12060          Note: Just for the purpose of inserting our Ada exception
12061          catchpoint, we could rely purely on the associated minimal symbol.
12062          But we would be operating in degraded mode anyway, since we are
12063          still lacking the debugging info needed later on to extract
12064          the name of the exception being raised (this name is printed in
12065          the catchpoint message, and is also used when trying to catch
12066          a specific exception).  We do not handle this case for now.  */
12067       struct bound_minimal_symbol msym
12068         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12069
12070       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12071         error (_("Your Ada runtime appears to be missing some debugging "
12072                  "information.\nCannot insert Ada exception catchpoint "
12073                  "in this configuration."));
12074
12075       return 0;
12076     }
12077
12078   /* Make sure that the symbol we found corresponds to a function.  */
12079
12080   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12081     error (_("Symbol \"%s\" is not a function (class = %d)"),
12082            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12083
12084   return 1;
12085 }
12086
12087 /* Inspect the Ada runtime and determine which exception info structure
12088    should be used to provide support for exception catchpoints.
12089
12090    This function will always set the per-inferior exception_info,
12091    or raise an error.  */
12092
12093 static void
12094 ada_exception_support_info_sniffer (void)
12095 {
12096   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12097
12098   /* If the exception info is already known, then no need to recompute it.  */
12099   if (data->exception_info != NULL)
12100     return;
12101
12102   /* Check the latest (default) exception support info.  */
12103   if (ada_has_this_exception_support (&default_exception_support_info))
12104     {
12105       data->exception_info = &default_exception_support_info;
12106       return;
12107     }
12108
12109   /* Try our fallback exception suport info.  */
12110   if (ada_has_this_exception_support (&exception_support_info_fallback))
12111     {
12112       data->exception_info = &exception_support_info_fallback;
12113       return;
12114     }
12115
12116   /* Sometimes, it is normal for us to not be able to find the routine
12117      we are looking for.  This happens when the program is linked with
12118      the shared version of the GNAT runtime, and the program has not been
12119      started yet.  Inform the user of these two possible causes if
12120      applicable.  */
12121
12122   if (ada_update_initial_language (language_unknown) != language_ada)
12123     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12124
12125   /* If the symbol does not exist, then check that the program is
12126      already started, to make sure that shared libraries have been
12127      loaded.  If it is not started, this may mean that the symbol is
12128      in a shared library.  */
12129
12130   if (inferior_ptid.pid () == 0)
12131     error (_("Unable to insert catchpoint. Try to start the program first."));
12132
12133   /* At this point, we know that we are debugging an Ada program and
12134      that the inferior has been started, but we still are not able to
12135      find the run-time symbols.  That can mean that we are in
12136      configurable run time mode, or that a-except as been optimized
12137      out by the linker...  In any case, at this point it is not worth
12138      supporting this feature.  */
12139
12140   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12141 }
12142
12143 /* True iff FRAME is very likely to be that of a function that is
12144    part of the runtime system.  This is all very heuristic, but is
12145    intended to be used as advice as to what frames are uninteresting
12146    to most users.  */
12147
12148 static int
12149 is_known_support_routine (struct frame_info *frame)
12150 {
12151   enum language func_lang;
12152   int i;
12153   const char *fullname;
12154
12155   /* If this code does not have any debugging information (no symtab),
12156      This cannot be any user code.  */
12157
12158   symtab_and_line sal = find_frame_sal (frame);
12159   if (sal.symtab == NULL)
12160     return 1;
12161
12162   /* If there is a symtab, but the associated source file cannot be
12163      located, then assume this is not user code:  Selecting a frame
12164      for which we cannot display the code would not be very helpful
12165      for the user.  This should also take care of case such as VxWorks
12166      where the kernel has some debugging info provided for a few units.  */
12167
12168   fullname = symtab_to_fullname (sal.symtab);
12169   if (access (fullname, R_OK) != 0)
12170     return 1;
12171
12172   /* Check the unit filename againt the Ada runtime file naming.
12173      We also check the name of the objfile against the name of some
12174      known system libraries that sometimes come with debugging info
12175      too.  */
12176
12177   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12178     {
12179       re_comp (known_runtime_file_name_patterns[i]);
12180       if (re_exec (lbasename (sal.symtab->filename)))
12181         return 1;
12182       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12183           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12184         return 1;
12185     }
12186
12187   /* Check whether the function is a GNAT-generated entity.  */
12188
12189   gdb::unique_xmalloc_ptr<char> func_name
12190     = find_frame_funname (frame, &func_lang, NULL);
12191   if (func_name == NULL)
12192     return 1;
12193
12194   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12195     {
12196       re_comp (known_auxiliary_function_name_patterns[i]);
12197       if (re_exec (func_name.get ()))
12198         return 1;
12199     }
12200
12201   return 0;
12202 }
12203
12204 /* Find the first frame that contains debugging information and that is not
12205    part of the Ada run-time, starting from FI and moving upward.  */
12206
12207 void
12208 ada_find_printable_frame (struct frame_info *fi)
12209 {
12210   for (; fi != NULL; fi = get_prev_frame (fi))
12211     {
12212       if (!is_known_support_routine (fi))
12213         {
12214           select_frame (fi);
12215           break;
12216         }
12217     }
12218
12219 }
12220
12221 /* Assuming that the inferior just triggered an unhandled exception
12222    catchpoint, return the address in inferior memory where the name
12223    of the exception is stored.
12224    
12225    Return zero if the address could not be computed.  */
12226
12227 static CORE_ADDR
12228 ada_unhandled_exception_name_addr (void)
12229 {
12230   return parse_and_eval_address ("e.full_name");
12231 }
12232
12233 /* Same as ada_unhandled_exception_name_addr, except that this function
12234    should be used when the inferior uses an older version of the runtime,
12235    where the exception name needs to be extracted from a specific frame
12236    several frames up in the callstack.  */
12237
12238 static CORE_ADDR
12239 ada_unhandled_exception_name_addr_from_raise (void)
12240 {
12241   int frame_level;
12242   struct frame_info *fi;
12243   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12244
12245   /* To determine the name of this exception, we need to select
12246      the frame corresponding to RAISE_SYM_NAME.  This frame is
12247      at least 3 levels up, so we simply skip the first 3 frames
12248      without checking the name of their associated function.  */
12249   fi = get_current_frame ();
12250   for (frame_level = 0; frame_level < 3; frame_level += 1)
12251     if (fi != NULL)
12252       fi = get_prev_frame (fi); 
12253
12254   while (fi != NULL)
12255     {
12256       enum language func_lang;
12257
12258       gdb::unique_xmalloc_ptr<char> func_name
12259         = find_frame_funname (fi, &func_lang, NULL);
12260       if (func_name != NULL)
12261         {
12262           if (strcmp (func_name.get (),
12263                       data->exception_info->catch_exception_sym) == 0)
12264             break; /* We found the frame we were looking for...  */
12265         }
12266       fi = get_prev_frame (fi);
12267     }
12268
12269   if (fi == NULL)
12270     return 0;
12271
12272   select_frame (fi);
12273   return parse_and_eval_address ("id.full_name");
12274 }
12275
12276 /* Assuming the inferior just triggered an Ada exception catchpoint
12277    (of any type), return the address in inferior memory where the name
12278    of the exception is stored, if applicable.
12279
12280    Assumes the selected frame is the current frame.
12281
12282    Return zero if the address could not be computed, or if not relevant.  */
12283
12284 static CORE_ADDR
12285 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12286                            struct breakpoint *b)
12287 {
12288   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12289
12290   switch (ex)
12291     {
12292       case ada_catch_exception:
12293         return (parse_and_eval_address ("e.full_name"));
12294         break;
12295
12296       case ada_catch_exception_unhandled:
12297         return data->exception_info->unhandled_exception_name_addr ();
12298         break;
12299
12300       case ada_catch_handlers:
12301         return 0;  /* The runtimes does not provide access to the exception
12302                       name.  */
12303         break;
12304
12305       case ada_catch_assert:
12306         return 0;  /* Exception name is not relevant in this case.  */
12307         break;
12308
12309       default:
12310         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12311         break;
12312     }
12313
12314   return 0; /* Should never be reached.  */
12315 }
12316
12317 /* Assuming the inferior is stopped at an exception catchpoint,
12318    return the message which was associated to the exception, if
12319    available.  Return NULL if the message could not be retrieved.
12320
12321    Note: The exception message can be associated to an exception
12322    either through the use of the Raise_Exception function, or
12323    more simply (Ada 2005 and later), via:
12324
12325        raise Exception_Name with "exception message";
12326
12327    */
12328
12329 static gdb::unique_xmalloc_ptr<char>
12330 ada_exception_message_1 (void)
12331 {
12332   struct value *e_msg_val;
12333   int e_msg_len;
12334
12335   /* For runtimes that support this feature, the exception message
12336      is passed as an unbounded string argument called "message".  */
12337   e_msg_val = parse_and_eval ("message");
12338   if (e_msg_val == NULL)
12339     return NULL; /* Exception message not supported.  */
12340
12341   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12342   gdb_assert (e_msg_val != NULL);
12343   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12344
12345   /* If the message string is empty, then treat it as if there was
12346      no exception message.  */
12347   if (e_msg_len <= 0)
12348     return NULL;
12349
12350   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12351   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12352   e_msg.get ()[e_msg_len] = '\0';
12353
12354   return e_msg;
12355 }
12356
12357 /* Same as ada_exception_message_1, except that all exceptions are
12358    contained here (returning NULL instead).  */
12359
12360 static gdb::unique_xmalloc_ptr<char>
12361 ada_exception_message (void)
12362 {
12363   gdb::unique_xmalloc_ptr<char> e_msg;
12364
12365   try
12366     {
12367       e_msg = ada_exception_message_1 ();
12368     }
12369   catch (const gdb_exception_error &e)
12370     {
12371       e_msg.reset (nullptr);
12372     }
12373
12374   return e_msg;
12375 }
12376
12377 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12378    any error that ada_exception_name_addr_1 might cause to be thrown.
12379    When an error is intercepted, a warning with the error message is printed,
12380    and zero is returned.  */
12381
12382 static CORE_ADDR
12383 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12384                          struct breakpoint *b)
12385 {
12386   CORE_ADDR result = 0;
12387
12388   try
12389     {
12390       result = ada_exception_name_addr_1 (ex, b);
12391     }
12392
12393   catch (const gdb_exception_error &e)
12394     {
12395       warning (_("failed to get exception name: %s"), e.what ());
12396       return 0;
12397     }
12398
12399   return result;
12400 }
12401
12402 static std::string ada_exception_catchpoint_cond_string
12403   (const char *excep_string,
12404    enum ada_exception_catchpoint_kind ex);
12405
12406 /* Ada catchpoints.
12407
12408    In the case of catchpoints on Ada exceptions, the catchpoint will
12409    stop the target on every exception the program throws.  When a user
12410    specifies the name of a specific exception, we translate this
12411    request into a condition expression (in text form), and then parse
12412    it into an expression stored in each of the catchpoint's locations.
12413    We then use this condition to check whether the exception that was
12414    raised is the one the user is interested in.  If not, then the
12415    target is resumed again.  We store the name of the requested
12416    exception, in order to be able to re-set the condition expression
12417    when symbols change.  */
12418
12419 /* An instance of this type is used to represent an Ada catchpoint
12420    breakpoint location.  */
12421
12422 class ada_catchpoint_location : public bp_location
12423 {
12424 public:
12425   ada_catchpoint_location (breakpoint *owner)
12426     : bp_location (owner)
12427   {}
12428
12429   /* The condition that checks whether the exception that was raised
12430      is the specific exception the user specified on catchpoint
12431      creation.  */
12432   expression_up excep_cond_expr;
12433 };
12434
12435 /* An instance of this type is used to represent an Ada catchpoint.  */
12436
12437 struct ada_catchpoint : public breakpoint
12438 {
12439   /* The name of the specific exception the user specified.  */
12440   std::string excep_string;
12441 };
12442
12443 /* Parse the exception condition string in the context of each of the
12444    catchpoint's locations, and store them for later evaluation.  */
12445
12446 static void
12447 create_excep_cond_exprs (struct ada_catchpoint *c,
12448                          enum ada_exception_catchpoint_kind ex)
12449 {
12450   /* Nothing to do if there's no specific exception to catch.  */
12451   if (c->excep_string.empty ())
12452     return;
12453
12454   /* Same if there are no locations... */
12455   if (c->loc == NULL)
12456     return;
12457
12458   /* We have to compute the expression once for each program space,
12459      because the expression may hold the addresses of multiple symbols
12460      in some cases.  */
12461   std::multimap<program_space *, struct bp_location *> loc_map;
12462   for (bp_location *bl = c->loc; bl != NULL; bl = bl->next)
12463     loc_map.emplace (bl->pspace, bl);
12464
12465   scoped_restore_current_program_space save_pspace;
12466
12467   std::string cond_string;
12468   program_space *last_ps = nullptr;
12469   for (auto iter : loc_map)
12470     {
12471       struct ada_catchpoint_location *ada_loc
12472         = (struct ada_catchpoint_location *) iter.second;
12473
12474       if (ada_loc->pspace != last_ps)
12475         {
12476           last_ps = ada_loc->pspace;
12477           set_current_program_space (last_ps);
12478
12479           /* Compute the condition expression in text form, from the
12480              specific expection we want to catch.  */
12481           cond_string
12482             = ada_exception_catchpoint_cond_string (c->excep_string.c_str (),
12483                                                     ex);
12484         }
12485
12486       expression_up exp;
12487
12488       if (!ada_loc->shlib_disabled)
12489         {
12490           const char *s;
12491
12492           s = cond_string.c_str ();
12493           try
12494             {
12495               exp = parse_exp_1 (&s, ada_loc->address,
12496                                  block_for_pc (ada_loc->address),
12497                                  0);
12498             }
12499           catch (const gdb_exception_error &e)
12500             {
12501               warning (_("failed to reevaluate internal exception condition "
12502                          "for catchpoint %d: %s"),
12503                        c->number, e.what ());
12504             }
12505         }
12506
12507       ada_loc->excep_cond_expr = std::move (exp);
12508     }
12509 }
12510
12511 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12512    structure for all exception catchpoint kinds.  */
12513
12514 static struct bp_location *
12515 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12516                              struct breakpoint *self)
12517 {
12518   return new ada_catchpoint_location (self);
12519 }
12520
12521 /* Implement the RE_SET method in the breakpoint_ops structure for all
12522    exception catchpoint kinds.  */
12523
12524 static void
12525 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12526 {
12527   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12528
12529   /* Call the base class's method.  This updates the catchpoint's
12530      locations.  */
12531   bkpt_breakpoint_ops.re_set (b);
12532
12533   /* Reparse the exception conditional expressions.  One for each
12534      location.  */
12535   create_excep_cond_exprs (c, ex);
12536 }
12537
12538 /* Returns true if we should stop for this breakpoint hit.  If the
12539    user specified a specific exception, we only want to cause a stop
12540    if the program thrown that exception.  */
12541
12542 static int
12543 should_stop_exception (const struct bp_location *bl)
12544 {
12545   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12546   const struct ada_catchpoint_location *ada_loc
12547     = (const struct ada_catchpoint_location *) bl;
12548   int stop;
12549
12550   /* With no specific exception, should always stop.  */
12551   if (c->excep_string.empty ())
12552     return 1;
12553
12554   if (ada_loc->excep_cond_expr == NULL)
12555     {
12556       /* We will have a NULL expression if back when we were creating
12557          the expressions, this location's had failed to parse.  */
12558       return 1;
12559     }
12560
12561   stop = 1;
12562   try
12563     {
12564       struct value *mark;
12565
12566       mark = value_mark ();
12567       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12568       value_free_to_mark (mark);
12569     }
12570   catch (const gdb_exception &ex)
12571     {
12572       exception_fprintf (gdb_stderr, ex,
12573                          _("Error in testing exception condition:\n"));
12574     }
12575
12576   return stop;
12577 }
12578
12579 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12580    for all exception catchpoint kinds.  */
12581
12582 static void
12583 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12584 {
12585   bs->stop = should_stop_exception (bs->bp_location_at);
12586 }
12587
12588 /* Implement the PRINT_IT method in the breakpoint_ops structure
12589    for all exception catchpoint kinds.  */
12590
12591 static enum print_stop_action
12592 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12593 {
12594   struct ui_out *uiout = current_uiout;
12595   struct breakpoint *b = bs->breakpoint_at;
12596
12597   annotate_catchpoint (b->number);
12598
12599   if (uiout->is_mi_like_p ())
12600     {
12601       uiout->field_string ("reason",
12602                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12603       uiout->field_string ("disp", bpdisp_text (b->disposition));
12604     }
12605
12606   uiout->text (b->disposition == disp_del
12607                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12608   uiout->field_int ("bkptno", b->number);
12609   uiout->text (", ");
12610
12611   /* ada_exception_name_addr relies on the selected frame being the
12612      current frame.  Need to do this here because this function may be
12613      called more than once when printing a stop, and below, we'll
12614      select the first frame past the Ada run-time (see
12615      ada_find_printable_frame).  */
12616   select_frame (get_current_frame ());
12617
12618   switch (ex)
12619     {
12620       case ada_catch_exception:
12621       case ada_catch_exception_unhandled:
12622       case ada_catch_handlers:
12623         {
12624           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12625           char exception_name[256];
12626
12627           if (addr != 0)
12628             {
12629               read_memory (addr, (gdb_byte *) exception_name,
12630                            sizeof (exception_name) - 1);
12631               exception_name [sizeof (exception_name) - 1] = '\0';
12632             }
12633           else
12634             {
12635               /* For some reason, we were unable to read the exception
12636                  name.  This could happen if the Runtime was compiled
12637                  without debugging info, for instance.  In that case,
12638                  just replace the exception name by the generic string
12639                  "exception" - it will read as "an exception" in the
12640                  notification we are about to print.  */
12641               memcpy (exception_name, "exception", sizeof ("exception"));
12642             }
12643           /* In the case of unhandled exception breakpoints, we print
12644              the exception name as "unhandled EXCEPTION_NAME", to make
12645              it clearer to the user which kind of catchpoint just got
12646              hit.  We used ui_out_text to make sure that this extra
12647              info does not pollute the exception name in the MI case.  */
12648           if (ex == ada_catch_exception_unhandled)
12649             uiout->text ("unhandled ");
12650           uiout->field_string ("exception-name", exception_name);
12651         }
12652         break;
12653       case ada_catch_assert:
12654         /* In this case, the name of the exception is not really
12655            important.  Just print "failed assertion" to make it clearer
12656            that his program just hit an assertion-failure catchpoint.
12657            We used ui_out_text because this info does not belong in
12658            the MI output.  */
12659         uiout->text ("failed assertion");
12660         break;
12661     }
12662
12663   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12664   if (exception_message != NULL)
12665     {
12666       uiout->text (" (");
12667       uiout->field_string ("exception-message", exception_message.get ());
12668       uiout->text (")");
12669     }
12670
12671   uiout->text (" at ");
12672   ada_find_printable_frame (get_current_frame ());
12673
12674   return PRINT_SRC_AND_LOC;
12675 }
12676
12677 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12678    for all exception catchpoint kinds.  */
12679
12680 static void
12681 print_one_exception (enum ada_exception_catchpoint_kind ex,
12682                      struct breakpoint *b, struct bp_location **last_loc)
12683
12684   struct ui_out *uiout = current_uiout;
12685   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12686   struct value_print_options opts;
12687
12688   get_user_print_options (&opts);
12689   if (opts.addressprint)
12690     {
12691       annotate_field (4);
12692       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12693     }
12694
12695   annotate_field (5);
12696   *last_loc = b->loc;
12697   switch (ex)
12698     {
12699       case ada_catch_exception:
12700         if (!c->excep_string.empty ())
12701           {
12702             std::string msg = string_printf (_("`%s' Ada exception"),
12703                                              c->excep_string.c_str ());
12704
12705             uiout->field_string ("what", msg);
12706           }
12707         else
12708           uiout->field_string ("what", "all Ada exceptions");
12709         
12710         break;
12711
12712       case ada_catch_exception_unhandled:
12713         uiout->field_string ("what", "unhandled Ada exceptions");
12714         break;
12715       
12716       case ada_catch_handlers:
12717         if (!c->excep_string.empty ())
12718           {
12719             uiout->field_fmt ("what",
12720                               _("`%s' Ada exception handlers"),
12721                               c->excep_string.c_str ());
12722           }
12723         else
12724           uiout->field_string ("what", "all Ada exceptions handlers");
12725         break;
12726
12727       case ada_catch_assert:
12728         uiout->field_string ("what", "failed Ada assertions");
12729         break;
12730
12731       default:
12732         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12733         break;
12734     }
12735 }
12736
12737 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12738    for all exception catchpoint kinds.  */
12739
12740 static void
12741 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12742                          struct breakpoint *b)
12743 {
12744   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12745   struct ui_out *uiout = current_uiout;
12746
12747   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12748                                                  : _("Catchpoint "));
12749   uiout->field_int ("bkptno", b->number);
12750   uiout->text (": ");
12751
12752   switch (ex)
12753     {
12754       case ada_catch_exception:
12755         if (!c->excep_string.empty ())
12756           {
12757             std::string info = string_printf (_("`%s' Ada exception"),
12758                                               c->excep_string.c_str ());
12759             uiout->text (info.c_str ());
12760           }
12761         else
12762           uiout->text (_("all Ada exceptions"));
12763         break;
12764
12765       case ada_catch_exception_unhandled:
12766         uiout->text (_("unhandled Ada exceptions"));
12767         break;
12768
12769       case ada_catch_handlers:
12770         if (!c->excep_string.empty ())
12771           {
12772             std::string info
12773               = string_printf (_("`%s' Ada exception handlers"),
12774                                c->excep_string.c_str ());
12775             uiout->text (info.c_str ());
12776           }
12777         else
12778           uiout->text (_("all Ada exceptions handlers"));
12779         break;
12780
12781       case ada_catch_assert:
12782         uiout->text (_("failed Ada assertions"));
12783         break;
12784
12785       default:
12786         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12787         break;
12788     }
12789 }
12790
12791 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12792    for all exception catchpoint kinds.  */
12793
12794 static void
12795 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12796                           struct breakpoint *b, struct ui_file *fp)
12797 {
12798   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12799
12800   switch (ex)
12801     {
12802       case ada_catch_exception:
12803         fprintf_filtered (fp, "catch exception");
12804         if (!c->excep_string.empty ())
12805           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12806         break;
12807
12808       case ada_catch_exception_unhandled:
12809         fprintf_filtered (fp, "catch exception unhandled");
12810         break;
12811
12812       case ada_catch_handlers:
12813         fprintf_filtered (fp, "catch handlers");
12814         break;
12815
12816       case ada_catch_assert:
12817         fprintf_filtered (fp, "catch assert");
12818         break;
12819
12820       default:
12821         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12822     }
12823   print_recreate_thread (b, fp);
12824 }
12825
12826 /* Virtual table for "catch exception" breakpoints.  */
12827
12828 static struct bp_location *
12829 allocate_location_catch_exception (struct breakpoint *self)
12830 {
12831   return allocate_location_exception (ada_catch_exception, self);
12832 }
12833
12834 static void
12835 re_set_catch_exception (struct breakpoint *b)
12836 {
12837   re_set_exception (ada_catch_exception, b);
12838 }
12839
12840 static void
12841 check_status_catch_exception (bpstat bs)
12842 {
12843   check_status_exception (ada_catch_exception, bs);
12844 }
12845
12846 static enum print_stop_action
12847 print_it_catch_exception (bpstat bs)
12848 {
12849   return print_it_exception (ada_catch_exception, bs);
12850 }
12851
12852 static void
12853 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12854 {
12855   print_one_exception (ada_catch_exception, b, last_loc);
12856 }
12857
12858 static void
12859 print_mention_catch_exception (struct breakpoint *b)
12860 {
12861   print_mention_exception (ada_catch_exception, b);
12862 }
12863
12864 static void
12865 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12866 {
12867   print_recreate_exception (ada_catch_exception, b, fp);
12868 }
12869
12870 static struct breakpoint_ops catch_exception_breakpoint_ops;
12871
12872 /* Virtual table for "catch exception unhandled" breakpoints.  */
12873
12874 static struct bp_location *
12875 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12876 {
12877   return allocate_location_exception (ada_catch_exception_unhandled, self);
12878 }
12879
12880 static void
12881 re_set_catch_exception_unhandled (struct breakpoint *b)
12882 {
12883   re_set_exception (ada_catch_exception_unhandled, b);
12884 }
12885
12886 static void
12887 check_status_catch_exception_unhandled (bpstat bs)
12888 {
12889   check_status_exception (ada_catch_exception_unhandled, bs);
12890 }
12891
12892 static enum print_stop_action
12893 print_it_catch_exception_unhandled (bpstat bs)
12894 {
12895   return print_it_exception (ada_catch_exception_unhandled, bs);
12896 }
12897
12898 static void
12899 print_one_catch_exception_unhandled (struct breakpoint *b,
12900                                      struct bp_location **last_loc)
12901 {
12902   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12903 }
12904
12905 static void
12906 print_mention_catch_exception_unhandled (struct breakpoint *b)
12907 {
12908   print_mention_exception (ada_catch_exception_unhandled, b);
12909 }
12910
12911 static void
12912 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12913                                           struct ui_file *fp)
12914 {
12915   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12916 }
12917
12918 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12919
12920 /* Virtual table for "catch assert" breakpoints.  */
12921
12922 static struct bp_location *
12923 allocate_location_catch_assert (struct breakpoint *self)
12924 {
12925   return allocate_location_exception (ada_catch_assert, self);
12926 }
12927
12928 static void
12929 re_set_catch_assert (struct breakpoint *b)
12930 {
12931   re_set_exception (ada_catch_assert, b);
12932 }
12933
12934 static void
12935 check_status_catch_assert (bpstat bs)
12936 {
12937   check_status_exception (ada_catch_assert, bs);
12938 }
12939
12940 static enum print_stop_action
12941 print_it_catch_assert (bpstat bs)
12942 {
12943   return print_it_exception (ada_catch_assert, bs);
12944 }
12945
12946 static void
12947 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12948 {
12949   print_one_exception (ada_catch_assert, b, last_loc);
12950 }
12951
12952 static void
12953 print_mention_catch_assert (struct breakpoint *b)
12954 {
12955   print_mention_exception (ada_catch_assert, b);
12956 }
12957
12958 static void
12959 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12960 {
12961   print_recreate_exception (ada_catch_assert, b, fp);
12962 }
12963
12964 static struct breakpoint_ops catch_assert_breakpoint_ops;
12965
12966 /* Virtual table for "catch handlers" breakpoints.  */
12967
12968 static struct bp_location *
12969 allocate_location_catch_handlers (struct breakpoint *self)
12970 {
12971   return allocate_location_exception (ada_catch_handlers, self);
12972 }
12973
12974 static void
12975 re_set_catch_handlers (struct breakpoint *b)
12976 {
12977   re_set_exception (ada_catch_handlers, b);
12978 }
12979
12980 static void
12981 check_status_catch_handlers (bpstat bs)
12982 {
12983   check_status_exception (ada_catch_handlers, bs);
12984 }
12985
12986 static enum print_stop_action
12987 print_it_catch_handlers (bpstat bs)
12988 {
12989   return print_it_exception (ada_catch_handlers, bs);
12990 }
12991
12992 static void
12993 print_one_catch_handlers (struct breakpoint *b,
12994                           struct bp_location **last_loc)
12995 {
12996   print_one_exception (ada_catch_handlers, b, last_loc);
12997 }
12998
12999 static void
13000 print_mention_catch_handlers (struct breakpoint *b)
13001 {
13002   print_mention_exception (ada_catch_handlers, b);
13003 }
13004
13005 static void
13006 print_recreate_catch_handlers (struct breakpoint *b,
13007                                struct ui_file *fp)
13008 {
13009   print_recreate_exception (ada_catch_handlers, b, fp);
13010 }
13011
13012 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13013
13014 /* Split the arguments specified in a "catch exception" command.  
13015    Set EX to the appropriate catchpoint type.
13016    Set EXCEP_STRING to the name of the specific exception if
13017    specified by the user.
13018    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13019    "catch handlers" command.  False otherwise.
13020    If a condition is found at the end of the arguments, the condition
13021    expression is stored in COND_STRING (memory must be deallocated
13022    after use).  Otherwise COND_STRING is set to NULL.  */
13023
13024 static void
13025 catch_ada_exception_command_split (const char *args,
13026                                    bool is_catch_handlers_cmd,
13027                                    enum ada_exception_catchpoint_kind *ex,
13028                                    std::string *excep_string,
13029                                    std::string *cond_string)
13030 {
13031   std::string exception_name;
13032
13033   exception_name = extract_arg (&args);
13034   if (exception_name == "if")
13035     {
13036       /* This is not an exception name; this is the start of a condition
13037          expression for a catchpoint on all exceptions.  So, "un-get"
13038          this token, and set exception_name to NULL.  */
13039       exception_name.clear ();
13040       args -= 2;
13041     }
13042
13043   /* Check to see if we have a condition.  */
13044
13045   args = skip_spaces (args);
13046   if (startswith (args, "if")
13047       && (isspace (args[2]) || args[2] == '\0'))
13048     {
13049       args += 2;
13050       args = skip_spaces (args);
13051
13052       if (args[0] == '\0')
13053         error (_("Condition missing after `if' keyword"));
13054       *cond_string = args;
13055
13056       args += strlen (args);
13057     }
13058
13059   /* Check that we do not have any more arguments.  Anything else
13060      is unexpected.  */
13061
13062   if (args[0] != '\0')
13063     error (_("Junk at end of expression"));
13064
13065   if (is_catch_handlers_cmd)
13066     {
13067       /* Catch handling of exceptions.  */
13068       *ex = ada_catch_handlers;
13069       *excep_string = exception_name;
13070     }
13071   else if (exception_name.empty ())
13072     {
13073       /* Catch all exceptions.  */
13074       *ex = ada_catch_exception;
13075       excep_string->clear ();
13076     }
13077   else if (exception_name == "unhandled")
13078     {
13079       /* Catch unhandled exceptions.  */
13080       *ex = ada_catch_exception_unhandled;
13081       excep_string->clear ();
13082     }
13083   else
13084     {
13085       /* Catch a specific exception.  */
13086       *ex = ada_catch_exception;
13087       *excep_string = exception_name;
13088     }
13089 }
13090
13091 /* Return the name of the symbol on which we should break in order to
13092    implement a catchpoint of the EX kind.  */
13093
13094 static const char *
13095 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13096 {
13097   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13098
13099   gdb_assert (data->exception_info != NULL);
13100
13101   switch (ex)
13102     {
13103       case ada_catch_exception:
13104         return (data->exception_info->catch_exception_sym);
13105         break;
13106       case ada_catch_exception_unhandled:
13107         return (data->exception_info->catch_exception_unhandled_sym);
13108         break;
13109       case ada_catch_assert:
13110         return (data->exception_info->catch_assert_sym);
13111         break;
13112       case ada_catch_handlers:
13113         return (data->exception_info->catch_handlers_sym);
13114         break;
13115       default:
13116         internal_error (__FILE__, __LINE__,
13117                         _("unexpected catchpoint kind (%d)"), ex);
13118     }
13119 }
13120
13121 /* Return the breakpoint ops "virtual table" used for catchpoints
13122    of the EX kind.  */
13123
13124 static const struct breakpoint_ops *
13125 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13126 {
13127   switch (ex)
13128     {
13129       case ada_catch_exception:
13130         return (&catch_exception_breakpoint_ops);
13131         break;
13132       case ada_catch_exception_unhandled:
13133         return (&catch_exception_unhandled_breakpoint_ops);
13134         break;
13135       case ada_catch_assert:
13136         return (&catch_assert_breakpoint_ops);
13137         break;
13138       case ada_catch_handlers:
13139         return (&catch_handlers_breakpoint_ops);
13140         break;
13141       default:
13142         internal_error (__FILE__, __LINE__,
13143                         _("unexpected catchpoint kind (%d)"), ex);
13144     }
13145 }
13146
13147 /* Return the condition that will be used to match the current exception
13148    being raised with the exception that the user wants to catch.  This
13149    assumes that this condition is used when the inferior just triggered
13150    an exception catchpoint.
13151    EX: the type of catchpoints used for catching Ada exceptions.  */
13152
13153 static std::string
13154 ada_exception_catchpoint_cond_string (const char *excep_string,
13155                                       enum ada_exception_catchpoint_kind ex)
13156 {
13157   int i;
13158   std::string result;
13159   const char *name;
13160
13161   if (ex == ada_catch_handlers)
13162     {
13163       /* For exception handlers catchpoints, the condition string does
13164          not use the same parameter as for the other exceptions.  */
13165       name = ("long_integer (GNAT_GCC_exception_Access"
13166               "(gcc_exception).all.occurrence.id)");
13167     }
13168   else
13169     name = "long_integer (e)";
13170
13171   /* The standard exceptions are a special case.  They are defined in
13172      runtime units that have been compiled without debugging info; if
13173      EXCEP_STRING is the not-fully-qualified name of a standard
13174      exception (e.g. "constraint_error") then, during the evaluation
13175      of the condition expression, the symbol lookup on this name would
13176      *not* return this standard exception.  The catchpoint condition
13177      may then be set only on user-defined exceptions which have the
13178      same not-fully-qualified name (e.g. my_package.constraint_error).
13179
13180      To avoid this unexcepted behavior, these standard exceptions are
13181      systematically prefixed by "standard".  This means that "catch
13182      exception constraint_error" is rewritten into "catch exception
13183      standard.constraint_error".
13184
13185      If an exception named contraint_error is defined in another package of
13186      the inferior program, then the only way to specify this exception as a
13187      breakpoint condition is to use its fully-qualified named:
13188      e.g. my_package.constraint_error.
13189
13190      Furthermore, in some situations a standard exception's symbol may
13191      be present in more than one objfile, because the compiler may
13192      choose to emit copy relocations for them.  So, we have to compare
13193      against all the possible addresses.  */
13194
13195   /* Storage for a rewritten symbol name.  */
13196   std::string std_name;
13197   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13198     {
13199       if (strcmp (standard_exc [i], excep_string) == 0)
13200         {
13201           std_name = std::string ("standard.") + excep_string;
13202           excep_string = std_name.c_str ();
13203           break;
13204         }
13205     }
13206
13207   excep_string = ada_encode (excep_string);
13208   std::vector<struct bound_minimal_symbol> symbols
13209     = ada_lookup_simple_minsyms (excep_string);
13210   for (const bound_minimal_symbol &msym : symbols)
13211     {
13212       if (!result.empty ())
13213         result += " or ";
13214       string_appendf (result, "%s = %s", name,
13215                       pulongest (BMSYMBOL_VALUE_ADDRESS (msym)));
13216     }
13217
13218   return result;
13219 }
13220
13221 /* Return the symtab_and_line that should be used to insert an exception
13222    catchpoint of the TYPE kind.
13223
13224    ADDR_STRING returns the name of the function where the real
13225    breakpoint that implements the catchpoints is set, depending on the
13226    type of catchpoint we need to create.  */
13227
13228 static struct symtab_and_line
13229 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13230                    std::string *addr_string, const struct breakpoint_ops **ops)
13231 {
13232   const char *sym_name;
13233   struct symbol *sym;
13234
13235   /* First, find out which exception support info to use.  */
13236   ada_exception_support_info_sniffer ();
13237
13238   /* Then lookup the function on which we will break in order to catch
13239      the Ada exceptions requested by the user.  */
13240   sym_name = ada_exception_sym_name (ex);
13241   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13242
13243   if (sym == NULL)
13244     error (_("Catchpoint symbol not found: %s"), sym_name);
13245
13246   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13247     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13248
13249   /* Set ADDR_STRING.  */
13250   *addr_string = sym_name;
13251
13252   /* Set OPS.  */
13253   *ops = ada_exception_breakpoint_ops (ex);
13254
13255   return find_function_start_sal (sym, 1);
13256 }
13257
13258 /* Create an Ada exception catchpoint.
13259
13260    EX_KIND is the kind of exception catchpoint to be created.
13261
13262    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13263    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13264    of the exception to which this catchpoint applies.
13265
13266    COND_STRING, if not empty, is the catchpoint condition.
13267
13268    TEMPFLAG, if nonzero, means that the underlying breakpoint
13269    should be temporary.
13270
13271    FROM_TTY is the usual argument passed to all commands implementations.  */
13272
13273 void
13274 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13275                                  enum ada_exception_catchpoint_kind ex_kind,
13276                                  const std::string &excep_string,
13277                                  const std::string &cond_string,
13278                                  int tempflag,
13279                                  int disabled,
13280                                  int from_tty)
13281 {
13282   std::string addr_string;
13283   const struct breakpoint_ops *ops = NULL;
13284   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13285
13286   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13287   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13288                                  ops, tempflag, disabled, from_tty);
13289   c->excep_string = excep_string;
13290   create_excep_cond_exprs (c.get (), ex_kind);
13291   if (!cond_string.empty ())
13292     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13293   install_breakpoint (0, std::move (c), 1);
13294 }
13295
13296 /* Implement the "catch exception" command.  */
13297
13298 static void
13299 catch_ada_exception_command (const char *arg_entry, int from_tty,
13300                              struct cmd_list_element *command)
13301 {
13302   const char *arg = arg_entry;
13303   struct gdbarch *gdbarch = get_current_arch ();
13304   int tempflag;
13305   enum ada_exception_catchpoint_kind ex_kind;
13306   std::string excep_string;
13307   std::string cond_string;
13308
13309   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13310
13311   if (!arg)
13312     arg = "";
13313   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13314                                      &cond_string);
13315   create_ada_exception_catchpoint (gdbarch, ex_kind,
13316                                    excep_string, cond_string,
13317                                    tempflag, 1 /* enabled */,
13318                                    from_tty);
13319 }
13320
13321 /* Implement the "catch handlers" command.  */
13322
13323 static void
13324 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13325                             struct cmd_list_element *command)
13326 {
13327   const char *arg = arg_entry;
13328   struct gdbarch *gdbarch = get_current_arch ();
13329   int tempflag;
13330   enum ada_exception_catchpoint_kind ex_kind;
13331   std::string excep_string;
13332   std::string cond_string;
13333
13334   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13335
13336   if (!arg)
13337     arg = "";
13338   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13339                                      &cond_string);
13340   create_ada_exception_catchpoint (gdbarch, ex_kind,
13341                                    excep_string, cond_string,
13342                                    tempflag, 1 /* enabled */,
13343                                    from_tty);
13344 }
13345
13346 /* Completion function for the Ada "catch" commands.  */
13347
13348 static void
13349 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
13350                      const char *text, const char *word)
13351 {
13352   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
13353
13354   for (const ada_exc_info &info : exceptions)
13355     {
13356       if (startswith (info.name, word))
13357         tracker.add_completion
13358           (gdb::unique_xmalloc_ptr<char> (xstrdup (info.name)));
13359     }
13360 }
13361
13362 /* Split the arguments specified in a "catch assert" command.
13363
13364    ARGS contains the command's arguments (or the empty string if
13365    no arguments were passed).
13366
13367    If ARGS contains a condition, set COND_STRING to that condition
13368    (the memory needs to be deallocated after use).  */
13369
13370 static void
13371 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13372 {
13373   args = skip_spaces (args);
13374
13375   /* Check whether a condition was provided.  */
13376   if (startswith (args, "if")
13377       && (isspace (args[2]) || args[2] == '\0'))
13378     {
13379       args += 2;
13380       args = skip_spaces (args);
13381       if (args[0] == '\0')
13382         error (_("condition missing after `if' keyword"));
13383       cond_string.assign (args);
13384     }
13385
13386   /* Otherwise, there should be no other argument at the end of
13387      the command.  */
13388   else if (args[0] != '\0')
13389     error (_("Junk at end of arguments."));
13390 }
13391
13392 /* Implement the "catch assert" command.  */
13393
13394 static void
13395 catch_assert_command (const char *arg_entry, int from_tty,
13396                       struct cmd_list_element *command)
13397 {
13398   const char *arg = arg_entry;
13399   struct gdbarch *gdbarch = get_current_arch ();
13400   int tempflag;
13401   std::string cond_string;
13402
13403   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13404
13405   if (!arg)
13406     arg = "";
13407   catch_ada_assert_command_split (arg, cond_string);
13408   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13409                                    "", cond_string,
13410                                    tempflag, 1 /* enabled */,
13411                                    from_tty);
13412 }
13413
13414 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13415
13416 static int
13417 ada_is_exception_sym (struct symbol *sym)
13418 {
13419   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13420
13421   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13422           && SYMBOL_CLASS (sym) != LOC_BLOCK
13423           && SYMBOL_CLASS (sym) != LOC_CONST
13424           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13425           && type_name != NULL && strcmp (type_name, "exception") == 0);
13426 }
13427
13428 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13429    Ada exception object.  This matches all exceptions except the ones
13430    defined by the Ada language.  */
13431
13432 static int
13433 ada_is_non_standard_exception_sym (struct symbol *sym)
13434 {
13435   int i;
13436
13437   if (!ada_is_exception_sym (sym))
13438     return 0;
13439
13440   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13441     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13442       return 0;  /* A standard exception.  */
13443
13444   /* Numeric_Error is also a standard exception, so exclude it.
13445      See the STANDARD_EXC description for more details as to why
13446      this exception is not listed in that array.  */
13447   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13448     return 0;
13449
13450   return 1;
13451 }
13452
13453 /* A helper function for std::sort, comparing two struct ada_exc_info
13454    objects.
13455
13456    The comparison is determined first by exception name, and then
13457    by exception address.  */
13458
13459 bool
13460 ada_exc_info::operator< (const ada_exc_info &other) const
13461 {
13462   int result;
13463
13464   result = strcmp (name, other.name);
13465   if (result < 0)
13466     return true;
13467   if (result == 0 && addr < other.addr)
13468     return true;
13469   return false;
13470 }
13471
13472 bool
13473 ada_exc_info::operator== (const ada_exc_info &other) const
13474 {
13475   return addr == other.addr && strcmp (name, other.name) == 0;
13476 }
13477
13478 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13479    routine, but keeping the first SKIP elements untouched.
13480
13481    All duplicates are also removed.  */
13482
13483 static void
13484 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13485                                       int skip)
13486 {
13487   std::sort (exceptions->begin () + skip, exceptions->end ());
13488   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13489                      exceptions->end ());
13490 }
13491
13492 /* Add all exceptions defined by the Ada standard whose name match
13493    a regular expression.
13494
13495    If PREG is not NULL, then this regexp_t object is used to
13496    perform the symbol name matching.  Otherwise, no name-based
13497    filtering is performed.
13498
13499    EXCEPTIONS is a vector of exceptions to which matching exceptions
13500    gets pushed.  */
13501
13502 static void
13503 ada_add_standard_exceptions (compiled_regex *preg,
13504                              std::vector<ada_exc_info> *exceptions)
13505 {
13506   int i;
13507
13508   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13509     {
13510       if (preg == NULL
13511           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13512         {
13513           struct bound_minimal_symbol msymbol
13514             = ada_lookup_simple_minsym (standard_exc[i]);
13515
13516           if (msymbol.minsym != NULL)
13517             {
13518               struct ada_exc_info info
13519                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13520
13521               exceptions->push_back (info);
13522             }
13523         }
13524     }
13525 }
13526
13527 /* Add all Ada exceptions defined locally and accessible from the given
13528    FRAME.
13529
13530    If PREG is not NULL, then this regexp_t object is used to
13531    perform the symbol name matching.  Otherwise, no name-based
13532    filtering is performed.
13533
13534    EXCEPTIONS is a vector of exceptions to which matching exceptions
13535    gets pushed.  */
13536
13537 static void
13538 ada_add_exceptions_from_frame (compiled_regex *preg,
13539                                struct frame_info *frame,
13540                                std::vector<ada_exc_info> *exceptions)
13541 {
13542   const struct block *block = get_frame_block (frame, 0);
13543
13544   while (block != 0)
13545     {
13546       struct block_iterator iter;
13547       struct symbol *sym;
13548
13549       ALL_BLOCK_SYMBOLS (block, iter, sym)
13550         {
13551           switch (SYMBOL_CLASS (sym))
13552             {
13553             case LOC_TYPEDEF:
13554             case LOC_BLOCK:
13555             case LOC_CONST:
13556               break;
13557             default:
13558               if (ada_is_exception_sym (sym))
13559                 {
13560                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13561                                               SYMBOL_VALUE_ADDRESS (sym)};
13562
13563                   exceptions->push_back (info);
13564                 }
13565             }
13566         }
13567       if (BLOCK_FUNCTION (block) != NULL)
13568         break;
13569       block = BLOCK_SUPERBLOCK (block);
13570     }
13571 }
13572
13573 /* Return true if NAME matches PREG or if PREG is NULL.  */
13574
13575 static bool
13576 name_matches_regex (const char *name, compiled_regex *preg)
13577 {
13578   return (preg == NULL
13579           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13580 }
13581
13582 /* Add all exceptions defined globally whose name name match
13583    a regular expression, excluding standard exceptions.
13584
13585    The reason we exclude standard exceptions is that they need
13586    to be handled separately: Standard exceptions are defined inside
13587    a runtime unit which is normally not compiled with debugging info,
13588    and thus usually do not show up in our symbol search.  However,
13589    if the unit was in fact built with debugging info, we need to
13590    exclude them because they would duplicate the entry we found
13591    during the special loop that specifically searches for those
13592    standard exceptions.
13593
13594    If PREG is not NULL, then this regexp_t object is used to
13595    perform the symbol name matching.  Otherwise, no name-based
13596    filtering is performed.
13597
13598    EXCEPTIONS is a vector of exceptions to which matching exceptions
13599    gets pushed.  */
13600
13601 static void
13602 ada_add_global_exceptions (compiled_regex *preg,
13603                            std::vector<ada_exc_info> *exceptions)
13604 {
13605   /* In Ada, the symbol "search name" is a linkage name, whereas the
13606      regular expression used to do the matching refers to the natural
13607      name.  So match against the decoded name.  */
13608   expand_symtabs_matching (NULL,
13609                            lookup_name_info::match_any (),
13610                            [&] (const char *search_name)
13611                            {
13612                              const char *decoded = ada_decode (search_name);
13613                              return name_matches_regex (decoded, preg);
13614                            },
13615                            NULL,
13616                            VARIABLES_DOMAIN);
13617
13618   for (objfile *objfile : current_program_space->objfiles ())
13619     {
13620       for (compunit_symtab *s : objfile->compunits ())
13621         {
13622           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13623           int i;
13624
13625           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13626             {
13627               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13628               struct block_iterator iter;
13629               struct symbol *sym;
13630
13631               ALL_BLOCK_SYMBOLS (b, iter, sym)
13632                 if (ada_is_non_standard_exception_sym (sym)
13633                     && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13634                   {
13635                     struct ada_exc_info info
13636                       = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13637
13638                     exceptions->push_back (info);
13639                   }
13640             }
13641         }
13642     }
13643 }
13644
13645 /* Implements ada_exceptions_list with the regular expression passed
13646    as a regex_t, rather than a string.
13647
13648    If not NULL, PREG is used to filter out exceptions whose names
13649    do not match.  Otherwise, all exceptions are listed.  */
13650
13651 static std::vector<ada_exc_info>
13652 ada_exceptions_list_1 (compiled_regex *preg)
13653 {
13654   std::vector<ada_exc_info> result;
13655   int prev_len;
13656
13657   /* First, list the known standard exceptions.  These exceptions
13658      need to be handled separately, as they are usually defined in
13659      runtime units that have been compiled without debugging info.  */
13660
13661   ada_add_standard_exceptions (preg, &result);
13662
13663   /* Next, find all exceptions whose scope is local and accessible
13664      from the currently selected frame.  */
13665
13666   if (has_stack_frames ())
13667     {
13668       prev_len = result.size ();
13669       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13670                                      &result);
13671       if (result.size () > prev_len)
13672         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13673     }
13674
13675   /* Add all exceptions whose scope is global.  */
13676
13677   prev_len = result.size ();
13678   ada_add_global_exceptions (preg, &result);
13679   if (result.size () > prev_len)
13680     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13681
13682   return result;
13683 }
13684
13685 /* Return a vector of ada_exc_info.
13686
13687    If REGEXP is NULL, all exceptions are included in the result.
13688    Otherwise, it should contain a valid regular expression,
13689    and only the exceptions whose names match that regular expression
13690    are included in the result.
13691
13692    The exceptions are sorted in the following order:
13693      - Standard exceptions (defined by the Ada language), in
13694        alphabetical order;
13695      - Exceptions only visible from the current frame, in
13696        alphabetical order;
13697      - Exceptions whose scope is global, in alphabetical order.  */
13698
13699 std::vector<ada_exc_info>
13700 ada_exceptions_list (const char *regexp)
13701 {
13702   if (regexp == NULL)
13703     return ada_exceptions_list_1 (NULL);
13704
13705   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13706   return ada_exceptions_list_1 (&reg);
13707 }
13708
13709 /* Implement the "info exceptions" command.  */
13710
13711 static void
13712 info_exceptions_command (const char *regexp, int from_tty)
13713 {
13714   struct gdbarch *gdbarch = get_current_arch ();
13715
13716   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13717
13718   if (regexp != NULL)
13719     printf_filtered
13720       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13721   else
13722     printf_filtered (_("All defined Ada exceptions:\n"));
13723
13724   for (const ada_exc_info &info : exceptions)
13725     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13726 }
13727
13728                                 /* Operators */
13729 /* Information about operators given special treatment in functions
13730    below.  */
13731 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13732
13733 #define ADA_OPERATORS \
13734     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13735     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13736     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13737     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13738     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13739     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13740     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13741     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13742     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13743     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13744     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13745     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13746     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13747     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13748     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13749     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13750     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13751     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13752     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13753
13754 static void
13755 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13756                      int *argsp)
13757 {
13758   switch (exp->elts[pc - 1].opcode)
13759     {
13760     default:
13761       operator_length_standard (exp, pc, oplenp, argsp);
13762       break;
13763
13764 #define OP_DEFN(op, len, args, binop) \
13765     case op: *oplenp = len; *argsp = args; break;
13766       ADA_OPERATORS;
13767 #undef OP_DEFN
13768
13769     case OP_AGGREGATE:
13770       *oplenp = 3;
13771       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13772       break;
13773
13774     case OP_CHOICES:
13775       *oplenp = 3;
13776       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13777       break;
13778     }
13779 }
13780
13781 /* Implementation of the exp_descriptor method operator_check.  */
13782
13783 static int
13784 ada_operator_check (struct expression *exp, int pos,
13785                     int (*objfile_func) (struct objfile *objfile, void *data),
13786                     void *data)
13787 {
13788   const union exp_element *const elts = exp->elts;
13789   struct type *type = NULL;
13790
13791   switch (elts[pos].opcode)
13792     {
13793       case UNOP_IN_RANGE:
13794       case UNOP_QUAL:
13795         type = elts[pos + 1].type;
13796         break;
13797
13798       default:
13799         return operator_check_standard (exp, pos, objfile_func, data);
13800     }
13801
13802   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13803
13804   if (type && TYPE_OBJFILE (type)
13805       && (*objfile_func) (TYPE_OBJFILE (type), data))
13806     return 1;
13807
13808   return 0;
13809 }
13810
13811 static const char *
13812 ada_op_name (enum exp_opcode opcode)
13813 {
13814   switch (opcode)
13815     {
13816     default:
13817       return op_name_standard (opcode);
13818
13819 #define OP_DEFN(op, len, args, binop) case op: return #op;
13820       ADA_OPERATORS;
13821 #undef OP_DEFN
13822
13823     case OP_AGGREGATE:
13824       return "OP_AGGREGATE";
13825     case OP_CHOICES:
13826       return "OP_CHOICES";
13827     case OP_NAME:
13828       return "OP_NAME";
13829     }
13830 }
13831
13832 /* As for operator_length, but assumes PC is pointing at the first
13833    element of the operator, and gives meaningful results only for the 
13834    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13835
13836 static void
13837 ada_forward_operator_length (struct expression *exp, int pc,
13838                              int *oplenp, int *argsp)
13839 {
13840   switch (exp->elts[pc].opcode)
13841     {
13842     default:
13843       *oplenp = *argsp = 0;
13844       break;
13845
13846 #define OP_DEFN(op, len, args, binop) \
13847     case op: *oplenp = len; *argsp = args; break;
13848       ADA_OPERATORS;
13849 #undef OP_DEFN
13850
13851     case OP_AGGREGATE:
13852       *oplenp = 3;
13853       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13854       break;
13855
13856     case OP_CHOICES:
13857       *oplenp = 3;
13858       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13859       break;
13860
13861     case OP_STRING:
13862     case OP_NAME:
13863       {
13864         int len = longest_to_int (exp->elts[pc + 1].longconst);
13865
13866         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13867         *argsp = 0;
13868         break;
13869       }
13870     }
13871 }
13872
13873 static int
13874 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13875 {
13876   enum exp_opcode op = exp->elts[elt].opcode;
13877   int oplen, nargs;
13878   int pc = elt;
13879   int i;
13880
13881   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13882
13883   switch (op)
13884     {
13885       /* Ada attributes ('Foo).  */
13886     case OP_ATR_FIRST:
13887     case OP_ATR_LAST:
13888     case OP_ATR_LENGTH:
13889     case OP_ATR_IMAGE:
13890     case OP_ATR_MAX:
13891     case OP_ATR_MIN:
13892     case OP_ATR_MODULUS:
13893     case OP_ATR_POS:
13894     case OP_ATR_SIZE:
13895     case OP_ATR_TAG:
13896     case OP_ATR_VAL:
13897       break;
13898
13899     case UNOP_IN_RANGE:
13900     case UNOP_QUAL:
13901       /* XXX: gdb_sprint_host_address, type_sprint */
13902       fprintf_filtered (stream, _("Type @"));
13903       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13904       fprintf_filtered (stream, " (");
13905       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13906       fprintf_filtered (stream, ")");
13907       break;
13908     case BINOP_IN_BOUNDS:
13909       fprintf_filtered (stream, " (%d)",
13910                         longest_to_int (exp->elts[pc + 2].longconst));
13911       break;
13912     case TERNOP_IN_RANGE:
13913       break;
13914
13915     case OP_AGGREGATE:
13916     case OP_OTHERS:
13917     case OP_DISCRETE_RANGE:
13918     case OP_POSITIONAL:
13919     case OP_CHOICES:
13920       break;
13921
13922     case OP_NAME:
13923     case OP_STRING:
13924       {
13925         char *name = &exp->elts[elt + 2].string;
13926         int len = longest_to_int (exp->elts[elt + 1].longconst);
13927
13928         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13929         break;
13930       }
13931
13932     default:
13933       return dump_subexp_body_standard (exp, stream, elt);
13934     }
13935
13936   elt += oplen;
13937   for (i = 0; i < nargs; i += 1)
13938     elt = dump_subexp (exp, stream, elt);
13939
13940   return elt;
13941 }
13942
13943 /* The Ada extension of print_subexp (q.v.).  */
13944
13945 static void
13946 ada_print_subexp (struct expression *exp, int *pos,
13947                   struct ui_file *stream, enum precedence prec)
13948 {
13949   int oplen, nargs, i;
13950   int pc = *pos;
13951   enum exp_opcode op = exp->elts[pc].opcode;
13952
13953   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13954
13955   *pos += oplen;
13956   switch (op)
13957     {
13958     default:
13959       *pos -= oplen;
13960       print_subexp_standard (exp, pos, stream, prec);
13961       return;
13962
13963     case OP_VAR_VALUE:
13964       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13965       return;
13966
13967     case BINOP_IN_BOUNDS:
13968       /* XXX: sprint_subexp */
13969       print_subexp (exp, pos, stream, PREC_SUFFIX);
13970       fputs_filtered (" in ", stream);
13971       print_subexp (exp, pos, stream, PREC_SUFFIX);
13972       fputs_filtered ("'range", stream);
13973       if (exp->elts[pc + 1].longconst > 1)
13974         fprintf_filtered (stream, "(%ld)",
13975                           (long) exp->elts[pc + 1].longconst);
13976       return;
13977
13978     case TERNOP_IN_RANGE:
13979       if (prec >= PREC_EQUAL)
13980         fputs_filtered ("(", stream);
13981       /* XXX: sprint_subexp */
13982       print_subexp (exp, pos, stream, PREC_SUFFIX);
13983       fputs_filtered (" in ", stream);
13984       print_subexp (exp, pos, stream, PREC_EQUAL);
13985       fputs_filtered (" .. ", stream);
13986       print_subexp (exp, pos, stream, PREC_EQUAL);
13987       if (prec >= PREC_EQUAL)
13988         fputs_filtered (")", stream);
13989       return;
13990
13991     case OP_ATR_FIRST:
13992     case OP_ATR_LAST:
13993     case OP_ATR_LENGTH:
13994     case OP_ATR_IMAGE:
13995     case OP_ATR_MAX:
13996     case OP_ATR_MIN:
13997     case OP_ATR_MODULUS:
13998     case OP_ATR_POS:
13999     case OP_ATR_SIZE:
14000     case OP_ATR_TAG:
14001     case OP_ATR_VAL:
14002       if (exp->elts[*pos].opcode == OP_TYPE)
14003         {
14004           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14005             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14006                            &type_print_raw_options);
14007           *pos += 3;
14008         }
14009       else
14010         print_subexp (exp, pos, stream, PREC_SUFFIX);
14011       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14012       if (nargs > 1)
14013         {
14014           int tem;
14015
14016           for (tem = 1; tem < nargs; tem += 1)
14017             {
14018               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14019               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14020             }
14021           fputs_filtered (")", stream);
14022         }
14023       return;
14024
14025     case UNOP_QUAL:
14026       type_print (exp->elts[pc + 1].type, "", stream, 0);
14027       fputs_filtered ("'(", stream);
14028       print_subexp (exp, pos, stream, PREC_PREFIX);
14029       fputs_filtered (")", stream);
14030       return;
14031
14032     case UNOP_IN_RANGE:
14033       /* XXX: sprint_subexp */
14034       print_subexp (exp, pos, stream, PREC_SUFFIX);
14035       fputs_filtered (" in ", stream);
14036       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14037                      &type_print_raw_options);
14038       return;
14039
14040     case OP_DISCRETE_RANGE:
14041       print_subexp (exp, pos, stream, PREC_SUFFIX);
14042       fputs_filtered ("..", stream);
14043       print_subexp (exp, pos, stream, PREC_SUFFIX);
14044       return;
14045
14046     case OP_OTHERS:
14047       fputs_filtered ("others => ", stream);
14048       print_subexp (exp, pos, stream, PREC_SUFFIX);
14049       return;
14050
14051     case OP_CHOICES:
14052       for (i = 0; i < nargs-1; i += 1)
14053         {
14054           if (i > 0)
14055             fputs_filtered ("|", stream);
14056           print_subexp (exp, pos, stream, PREC_SUFFIX);
14057         }
14058       fputs_filtered (" => ", stream);
14059       print_subexp (exp, pos, stream, PREC_SUFFIX);
14060       return;
14061       
14062     case OP_POSITIONAL:
14063       print_subexp (exp, pos, stream, PREC_SUFFIX);
14064       return;
14065
14066     case OP_AGGREGATE:
14067       fputs_filtered ("(", stream);
14068       for (i = 0; i < nargs; i += 1)
14069         {
14070           if (i > 0)
14071             fputs_filtered (", ", stream);
14072           print_subexp (exp, pos, stream, PREC_SUFFIX);
14073         }
14074       fputs_filtered (")", stream);
14075       return;
14076     }
14077 }
14078
14079 /* Table mapping opcodes into strings for printing operators
14080    and precedences of the operators.  */
14081
14082 static const struct op_print ada_op_print_tab[] = {
14083   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14084   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14085   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14086   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14087   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14088   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14089   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14090   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14091   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14092   {">=", BINOP_GEQ, PREC_ORDER, 0},
14093   {">", BINOP_GTR, PREC_ORDER, 0},
14094   {"<", BINOP_LESS, PREC_ORDER, 0},
14095   {">>", BINOP_RSH, PREC_SHIFT, 0},
14096   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14097   {"+", BINOP_ADD, PREC_ADD, 0},
14098   {"-", BINOP_SUB, PREC_ADD, 0},
14099   {"&", BINOP_CONCAT, PREC_ADD, 0},
14100   {"*", BINOP_MUL, PREC_MUL, 0},
14101   {"/", BINOP_DIV, PREC_MUL, 0},
14102   {"rem", BINOP_REM, PREC_MUL, 0},
14103   {"mod", BINOP_MOD, PREC_MUL, 0},
14104   {"**", BINOP_EXP, PREC_REPEAT, 0},
14105   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14106   {"-", UNOP_NEG, PREC_PREFIX, 0},
14107   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14108   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14109   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14110   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14111   {".all", UNOP_IND, PREC_SUFFIX, 1},
14112   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14113   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14114   {NULL, OP_NULL, PREC_SUFFIX, 0}
14115 };
14116 \f
14117 enum ada_primitive_types {
14118   ada_primitive_type_int,
14119   ada_primitive_type_long,
14120   ada_primitive_type_short,
14121   ada_primitive_type_char,
14122   ada_primitive_type_float,
14123   ada_primitive_type_double,
14124   ada_primitive_type_void,
14125   ada_primitive_type_long_long,
14126   ada_primitive_type_long_double,
14127   ada_primitive_type_natural,
14128   ada_primitive_type_positive,
14129   ada_primitive_type_system_address,
14130   ada_primitive_type_storage_offset,
14131   nr_ada_primitive_types
14132 };
14133
14134 static void
14135 ada_language_arch_info (struct gdbarch *gdbarch,
14136                         struct language_arch_info *lai)
14137 {
14138   const struct builtin_type *builtin = builtin_type (gdbarch);
14139
14140   lai->primitive_type_vector
14141     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14142                               struct type *);
14143
14144   lai->primitive_type_vector [ada_primitive_type_int]
14145     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14146                          0, "integer");
14147   lai->primitive_type_vector [ada_primitive_type_long]
14148     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14149                          0, "long_integer");
14150   lai->primitive_type_vector [ada_primitive_type_short]
14151     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14152                          0, "short_integer");
14153   lai->string_char_type
14154     = lai->primitive_type_vector [ada_primitive_type_char]
14155     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14156   lai->primitive_type_vector [ada_primitive_type_float]
14157     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14158                        "float", gdbarch_float_format (gdbarch));
14159   lai->primitive_type_vector [ada_primitive_type_double]
14160     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14161                        "long_float", gdbarch_double_format (gdbarch));
14162   lai->primitive_type_vector [ada_primitive_type_long_long]
14163     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14164                          0, "long_long_integer");
14165   lai->primitive_type_vector [ada_primitive_type_long_double]
14166     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14167                        "long_long_float", gdbarch_long_double_format (gdbarch));
14168   lai->primitive_type_vector [ada_primitive_type_natural]
14169     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14170                          0, "natural");
14171   lai->primitive_type_vector [ada_primitive_type_positive]
14172     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14173                          0, "positive");
14174   lai->primitive_type_vector [ada_primitive_type_void]
14175     = builtin->builtin_void;
14176
14177   lai->primitive_type_vector [ada_primitive_type_system_address]
14178     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14179                                       "void"));
14180   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14181     = "system__address";
14182
14183   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14184      type.  This is a signed integral type whose size is the same as
14185      the size of addresses.  */
14186   {
14187     unsigned int addr_length = TYPE_LENGTH
14188       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14189
14190     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14191       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14192                            "storage_offset");
14193   }
14194
14195   lai->bool_type_symbol = NULL;
14196   lai->bool_type_default = builtin->builtin_bool;
14197 }
14198 \f
14199                                 /* Language vector */
14200
14201 /* Not really used, but needed in the ada_language_defn.  */
14202
14203 static void
14204 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14205 {
14206   ada_emit_char (c, type, stream, quoter, 1);
14207 }
14208
14209 static int
14210 parse (struct parser_state *ps)
14211 {
14212   warnings_issued = 0;
14213   return ada_parse (ps);
14214 }
14215
14216 static const struct exp_descriptor ada_exp_descriptor = {
14217   ada_print_subexp,
14218   ada_operator_length,
14219   ada_operator_check,
14220   ada_op_name,
14221   ada_dump_subexp_body,
14222   ada_evaluate_subexp
14223 };
14224
14225 /* symbol_name_matcher_ftype adapter for wild_match.  */
14226
14227 static bool
14228 do_wild_match (const char *symbol_search_name,
14229                const lookup_name_info &lookup_name,
14230                completion_match_result *comp_match_res)
14231 {
14232   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14233 }
14234
14235 /* symbol_name_matcher_ftype adapter for full_match.  */
14236
14237 static bool
14238 do_full_match (const char *symbol_search_name,
14239                const lookup_name_info &lookup_name,
14240                completion_match_result *comp_match_res)
14241 {
14242   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14243 }
14244
14245 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
14246
14247 static bool
14248 do_exact_match (const char *symbol_search_name,
14249                 const lookup_name_info &lookup_name,
14250                 completion_match_result *comp_match_res)
14251 {
14252   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14253 }
14254
14255 /* Build the Ada lookup name for LOOKUP_NAME.  */
14256
14257 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14258 {
14259   const std::string &user_name = lookup_name.name ();
14260
14261   if (user_name[0] == '<')
14262     {
14263       if (user_name.back () == '>')
14264         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14265       else
14266         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14267       m_encoded_p = true;
14268       m_verbatim_p = true;
14269       m_wild_match_p = false;
14270       m_standard_p = false;
14271     }
14272   else
14273     {
14274       m_verbatim_p = false;
14275
14276       m_encoded_p = user_name.find ("__") != std::string::npos;
14277
14278       if (!m_encoded_p)
14279         {
14280           const char *folded = ada_fold_name (user_name.c_str ());
14281           const char *encoded = ada_encode_1 (folded, false);
14282           if (encoded != NULL)
14283             m_encoded_name = encoded;
14284           else
14285             m_encoded_name = user_name;
14286         }
14287       else
14288         m_encoded_name = user_name;
14289
14290       /* Handle the 'package Standard' special case.  See description
14291          of m_standard_p.  */
14292       if (startswith (m_encoded_name.c_str (), "standard__"))
14293         {
14294           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14295           m_standard_p = true;
14296         }
14297       else
14298         m_standard_p = false;
14299
14300       /* If the name contains a ".", then the user is entering a fully
14301          qualified entity name, and the match must not be done in wild
14302          mode.  Similarly, if the user wants to complete what looks
14303          like an encoded name, the match must not be done in wild
14304          mode.  Also, in the standard__ special case always do
14305          non-wild matching.  */
14306       m_wild_match_p
14307         = (lookup_name.match_type () != symbol_name_match_type::FULL
14308            && !m_encoded_p
14309            && !m_standard_p
14310            && user_name.find ('.') == std::string::npos);
14311     }
14312 }
14313
14314 /* symbol_name_matcher_ftype method for Ada.  This only handles
14315    completion mode.  */
14316
14317 static bool
14318 ada_symbol_name_matches (const char *symbol_search_name,
14319                          const lookup_name_info &lookup_name,
14320                          completion_match_result *comp_match_res)
14321 {
14322   return lookup_name.ada ().matches (symbol_search_name,
14323                                      lookup_name.match_type (),
14324                                      comp_match_res);
14325 }
14326
14327 /* A name matcher that matches the symbol name exactly, with
14328    strcmp.  */
14329
14330 static bool
14331 literal_symbol_name_matcher (const char *symbol_search_name,
14332                              const lookup_name_info &lookup_name,
14333                              completion_match_result *comp_match_res)
14334 {
14335   const std::string &name = lookup_name.name ();
14336
14337   int cmp = (lookup_name.completion_mode ()
14338              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14339              : strcmp (symbol_search_name, name.c_str ()));
14340   if (cmp == 0)
14341     {
14342       if (comp_match_res != NULL)
14343         comp_match_res->set_match (symbol_search_name);
14344       return true;
14345     }
14346   else
14347     return false;
14348 }
14349
14350 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14351    Ada.  */
14352
14353 static symbol_name_matcher_ftype *
14354 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14355 {
14356   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14357     return literal_symbol_name_matcher;
14358
14359   if (lookup_name.completion_mode ())
14360     return ada_symbol_name_matches;
14361   else
14362     {
14363       if (lookup_name.ada ().wild_match_p ())
14364         return do_wild_match;
14365       else if (lookup_name.ada ().verbatim_p ())
14366         return do_exact_match;
14367       else
14368         return do_full_match;
14369     }
14370 }
14371
14372 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14373
14374 static struct value *
14375 ada_read_var_value (struct symbol *var, const struct block *var_block,
14376                     struct frame_info *frame)
14377 {
14378   const struct block *frame_block = NULL;
14379   struct symbol *renaming_sym = NULL;
14380
14381   /* The only case where default_read_var_value is not sufficient
14382      is when VAR is a renaming...  */
14383   if (frame)
14384     frame_block = get_frame_block (frame, NULL);
14385   if (frame_block)
14386     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14387   if (renaming_sym != NULL)
14388     return ada_read_renaming_var_value (renaming_sym, frame_block);
14389
14390   /* This is a typical case where we expect the default_read_var_value
14391      function to work.  */
14392   return default_read_var_value (var, var_block, frame);
14393 }
14394
14395 static const char *ada_extensions[] =
14396 {
14397   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14398 };
14399
14400 extern const struct language_defn ada_language_defn = {
14401   "ada",                        /* Language name */
14402   "Ada",
14403   language_ada,
14404   range_check_off,
14405   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14406                                    that's not quite what this means.  */
14407   array_row_major,
14408   macro_expansion_no,
14409   ada_extensions,
14410   &ada_exp_descriptor,
14411   parse,
14412   resolve,
14413   ada_printchar,                /* Print a character constant */
14414   ada_printstr,                 /* Function to print string constant */
14415   emit_char,                    /* Function to print single char (not used) */
14416   ada_print_type,               /* Print a type using appropriate syntax */
14417   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14418   ada_val_print,                /* Print a value using appropriate syntax */
14419   ada_value_print,              /* Print a top-level value */
14420   ada_read_var_value,           /* la_read_var_value */
14421   NULL,                         /* Language specific skip_trampoline */
14422   NULL,                         /* name_of_this */
14423   true,                         /* la_store_sym_names_in_linkage_form_p */
14424   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14425   basic_lookup_transparent_type,        /* lookup_transparent_type */
14426   ada_la_decode,                /* Language specific symbol demangler */
14427   ada_sniff_from_mangled_name,
14428   NULL,                         /* Language specific
14429                                    class_name_from_physname */
14430   ada_op_print_tab,             /* expression operators for printing */
14431   0,                            /* c-style arrays */
14432   1,                            /* String lower bound */
14433   ada_get_gdb_completer_word_break_characters,
14434   ada_collect_symbol_completion_matches,
14435   ada_language_arch_info,
14436   ada_print_array_index,
14437   default_pass_by_reference,
14438   c_get_string,
14439   ada_watch_location_expression,
14440   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14441   ada_iterate_over_symbols,
14442   default_search_name_hash,
14443   &ada_varobj_ops,
14444   NULL,
14445   NULL,
14446   ada_is_string_type,
14447   "(...)"                       /* la_struct_too_deep_ellipsis */
14448 };
14449
14450 /* Command-list for the "set/show ada" prefix command.  */
14451 static struct cmd_list_element *set_ada_list;
14452 static struct cmd_list_element *show_ada_list;
14453
14454 /* Implement the "set ada" prefix command.  */
14455
14456 static void
14457 set_ada_command (const char *arg, int from_tty)
14458 {
14459   printf_unfiltered (_(\
14460 "\"set ada\" must be followed by the name of a setting.\n"));
14461   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14462 }
14463
14464 /* Implement the "show ada" prefix command.  */
14465
14466 static void
14467 show_ada_command (const char *args, int from_tty)
14468 {
14469   cmd_show_list (show_ada_list, from_tty, "");
14470 }
14471
14472 static void
14473 initialize_ada_catchpoint_ops (void)
14474 {
14475   struct breakpoint_ops *ops;
14476
14477   initialize_breakpoint_ops ();
14478
14479   ops = &catch_exception_breakpoint_ops;
14480   *ops = bkpt_breakpoint_ops;
14481   ops->allocate_location = allocate_location_catch_exception;
14482   ops->re_set = re_set_catch_exception;
14483   ops->check_status = check_status_catch_exception;
14484   ops->print_it = print_it_catch_exception;
14485   ops->print_one = print_one_catch_exception;
14486   ops->print_mention = print_mention_catch_exception;
14487   ops->print_recreate = print_recreate_catch_exception;
14488
14489   ops = &catch_exception_unhandled_breakpoint_ops;
14490   *ops = bkpt_breakpoint_ops;
14491   ops->allocate_location = allocate_location_catch_exception_unhandled;
14492   ops->re_set = re_set_catch_exception_unhandled;
14493   ops->check_status = check_status_catch_exception_unhandled;
14494   ops->print_it = print_it_catch_exception_unhandled;
14495   ops->print_one = print_one_catch_exception_unhandled;
14496   ops->print_mention = print_mention_catch_exception_unhandled;
14497   ops->print_recreate = print_recreate_catch_exception_unhandled;
14498
14499   ops = &catch_assert_breakpoint_ops;
14500   *ops = bkpt_breakpoint_ops;
14501   ops->allocate_location = allocate_location_catch_assert;
14502   ops->re_set = re_set_catch_assert;
14503   ops->check_status = check_status_catch_assert;
14504   ops->print_it = print_it_catch_assert;
14505   ops->print_one = print_one_catch_assert;
14506   ops->print_mention = print_mention_catch_assert;
14507   ops->print_recreate = print_recreate_catch_assert;
14508
14509   ops = &catch_handlers_breakpoint_ops;
14510   *ops = bkpt_breakpoint_ops;
14511   ops->allocate_location = allocate_location_catch_handlers;
14512   ops->re_set = re_set_catch_handlers;
14513   ops->check_status = check_status_catch_handlers;
14514   ops->print_it = print_it_catch_handlers;
14515   ops->print_one = print_one_catch_handlers;
14516   ops->print_mention = print_mention_catch_handlers;
14517   ops->print_recreate = print_recreate_catch_handlers;
14518 }
14519
14520 /* This module's 'new_objfile' observer.  */
14521
14522 static void
14523 ada_new_objfile_observer (struct objfile *objfile)
14524 {
14525   ada_clear_symbol_cache ();
14526 }
14527
14528 /* This module's 'free_objfile' observer.  */
14529
14530 static void
14531 ada_free_objfile_observer (struct objfile *objfile)
14532 {
14533   ada_clear_symbol_cache ();
14534 }
14535
14536 void
14537 _initialize_ada_language (void)
14538 {
14539   initialize_ada_catchpoint_ops ();
14540
14541   add_prefix_cmd ("ada", no_class, set_ada_command,
14542                   _("Prefix command for changing Ada-specific settings"),
14543                   &set_ada_list, "set ada ", 0, &setlist);
14544
14545   add_prefix_cmd ("ada", no_class, show_ada_command,
14546                   _("Generic command for showing Ada-specific settings."),
14547                   &show_ada_list, "show ada ", 0, &showlist);
14548
14549   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14550                            &trust_pad_over_xvs, _("\
14551 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14552 Show whether an optimization trusting PAD types over XVS types is activated"),
14553                            _("\
14554 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14555 should normally trust the contents of PAD types, but certain older versions\n\
14556 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14557 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14558 work around this bug.  It is always safe to turn this option \"off\", but\n\
14559 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14560 this option to \"off\" unless necessary."),
14561                             NULL, NULL, &set_ada_list, &show_ada_list);
14562
14563   add_setshow_boolean_cmd ("print-signatures", class_vars,
14564                            &print_signatures, _("\
14565 Enable or disable the output of formal and return types for functions in the \
14566 overloads selection menu"), _("\
14567 Show whether the output of formal and return types for functions in the \
14568 overloads selection menu is activated"),
14569                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14570
14571   add_catch_command ("exception", _("\
14572 Catch Ada exceptions, when raised.\n\
14573 Usage: catch exception [ ARG ]\n\
14574 \n\
14575 Without any argument, stop when any Ada exception is raised.\n\
14576 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14577 being raised does not have a handler (and will therefore lead to the task's\n\
14578 termination).\n\
14579 Otherwise, the catchpoint only stops when the name of the exception being\n\
14580 raised is the same as ARG."),
14581                      catch_ada_exception_command,
14582                      catch_ada_completer,
14583                      CATCH_PERMANENT,
14584                      CATCH_TEMPORARY);
14585
14586   add_catch_command ("handlers", _("\
14587 Catch Ada exceptions, when handled.\n\
14588 With an argument, catch only exceptions with the given name."),
14589                      catch_ada_handlers_command,
14590                      catch_ada_completer,
14591                      CATCH_PERMANENT,
14592                      CATCH_TEMPORARY);
14593   add_catch_command ("assert", _("\
14594 Catch failed Ada assertions, when raised.\n\
14595 With an argument, catch only exceptions with the given name."),
14596                      catch_assert_command,
14597                      NULL,
14598                      CATCH_PERMANENT,
14599                      CATCH_TEMPORARY);
14600
14601   varsize_limit = 65536;
14602   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14603                             &varsize_limit, _("\
14604 Set the maximum number of bytes allowed in a variable-size object."), _("\
14605 Show the maximum number of bytes allowed in a variable-size object."), _("\
14606 Attempts to access an object whose size is not a compile-time constant\n\
14607 and exceeds this limit will cause an error."),
14608                             NULL, NULL, &setlist, &showlist);
14609
14610   add_info ("exceptions", info_exceptions_command,
14611             _("\
14612 List all Ada exception names.\n\
14613 If a regular expression is passed as an argument, only those matching\n\
14614 the regular expression are listed."));
14615
14616   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14617                   _("Set Ada maintenance-related variables."),
14618                   &maint_set_ada_cmdlist, "maintenance set ada ",
14619                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14620
14621   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14622                   _("Show Ada maintenance-related variables"),
14623                   &maint_show_ada_cmdlist, "maintenance show ada ",
14624                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14625
14626   add_setshow_boolean_cmd
14627     ("ignore-descriptive-types", class_maintenance,
14628      &ada_ignore_descriptive_types_p,
14629      _("Set whether descriptive types generated by GNAT should be ignored."),
14630      _("Show whether descriptive types generated by GNAT should be ignored."),
14631      _("\
14632 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14633 DWARF attribute."),
14634      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14635
14636   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14637                                            NULL, xcalloc, xfree);
14638
14639   /* The ada-lang observers.  */
14640   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14641   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14642   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14643 }