Fix "catch exception" with dynamic linking
[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;
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;
387 };
388
389 /* Our key to this module's inferior data.  */
390 static const struct inferior_data *ada_inferior_data;
391
392 /* A cleanup routine for our inferior data.  */
393 static void
394 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
395 {
396   struct ada_inferior_data *data;
397
398   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
399   if (data != NULL)
400     xfree (data);
401 }
402
403 /* Return our inferior data for the given inferior (INF).
404
405    This function always returns a valid pointer to an allocated
406    ada_inferior_data structure.  If INF's inferior data has not
407    been previously set, this functions creates a new one with all
408    fields set to zero, sets INF's inferior to it, and then returns
409    a pointer to that newly allocated ada_inferior_data.  */
410
411 static struct ada_inferior_data *
412 get_ada_inferior_data (struct inferior *inf)
413 {
414   struct ada_inferior_data *data;
415
416   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
417   if (data == NULL)
418     {
419       data = XCNEW (struct ada_inferior_data);
420       set_inferior_data (inf, ada_inferior_data, data);
421     }
422
423   return data;
424 }
425
426 /* Perform all necessary cleanups regarding our module's inferior data
427    that is required after the inferior INF just exited.  */
428
429 static void
430 ada_inferior_exit (struct inferior *inf)
431 {
432   ada_inferior_data_cleanup (inf, NULL);
433   set_inferior_data (inf, ada_inferior_data, NULL);
434 }
435
436
437                         /* program-space-specific data.  */
438
439 /* This module's per-program-space data.  */
440 struct ada_pspace_data
441 {
442   /* The Ada symbol cache.  */
443   struct ada_symbol_cache *sym_cache;
444 };
445
446 /* Key to our per-program-space data.  */
447 static const struct program_space_data *ada_pspace_data_handle;
448
449 /* Return this module's data for the given program space (PSPACE).
450    If not is found, add a zero'ed one now.
451
452    This function always returns a valid object.  */
453
454 static struct ada_pspace_data *
455 get_ada_pspace_data (struct program_space *pspace)
456 {
457   struct ada_pspace_data *data;
458
459   data = ((struct ada_pspace_data *)
460           program_space_data (pspace, ada_pspace_data_handle));
461   if (data == NULL)
462     {
463       data = XCNEW (struct ada_pspace_data);
464       set_program_space_data (pspace, ada_pspace_data_handle, data);
465     }
466
467   return data;
468 }
469
470 /* The cleanup callback for this module's per-program-space data.  */
471
472 static void
473 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
474 {
475   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
476
477   if (pspace_data->sym_cache != NULL)
478     ada_free_symbol_cache (pspace_data->sym_cache);
479   xfree (pspace_data);
480 }
481
482                         /* Utilities */
483
484 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
485    all typedef layers have been peeled.  Otherwise, return TYPE.
486
487    Normally, we really expect a typedef type to only have 1 typedef layer.
488    In other words, we really expect the target type of a typedef type to be
489    a non-typedef type.  This is particularly true for Ada units, because
490    the language does not have a typedef vs not-typedef distinction.
491    In that respect, the Ada compiler has been trying to eliminate as many
492    typedef definitions in the debugging information, since they generally
493    do not bring any extra information (we still use typedef under certain
494    circumstances related mostly to the GNAT encoding).
495
496    Unfortunately, we have seen situations where the debugging information
497    generated by the compiler leads to such multiple typedef layers.  For
498    instance, consider the following example with stabs:
499
500      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
501      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
502
503    This is an error in the debugging information which causes type
504    pck__float_array___XUP to be defined twice, and the second time,
505    it is defined as a typedef of a typedef.
506
507    This is on the fringe of legality as far as debugging information is
508    concerned, and certainly unexpected.  But it is easy to handle these
509    situations correctly, so we can afford to be lenient in this case.  */
510
511 static struct type *
512 ada_typedef_target_type (struct type *type)
513 {
514   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
515     type = TYPE_TARGET_TYPE (type);
516   return type;
517 }
518
519 /* Given DECODED_NAME a string holding a symbol name in its
520    decoded form (ie using the Ada dotted notation), returns
521    its unqualified name.  */
522
523 static const char *
524 ada_unqualified_name (const char *decoded_name)
525 {
526   const char *result;
527   
528   /* If the decoded name starts with '<', it means that the encoded
529      name does not follow standard naming conventions, and thus that
530      it is not your typical Ada symbol name.  Trying to unqualify it
531      is therefore pointless and possibly erroneous.  */
532   if (decoded_name[0] == '<')
533     return decoded_name;
534
535   result = strrchr (decoded_name, '.');
536   if (result != NULL)
537     result++;                   /* Skip the dot...  */
538   else
539     result = decoded_name;
540
541   return result;
542 }
543
544 /* Return a string starting with '<', followed by STR, and '>'.  */
545
546 static std::string
547 add_angle_brackets (const char *str)
548 {
549   return string_printf ("<%s>", str);
550 }
551
552 static const char *
553 ada_get_gdb_completer_word_break_characters (void)
554 {
555   return ada_completer_word_break_characters;
556 }
557
558 /* Print an array element index using the Ada syntax.  */
559
560 static void
561 ada_print_array_index (struct value *index_value, struct ui_file *stream,
562                        const struct value_print_options *options)
563 {
564   LA_VALUE_PRINT (index_value, stream, options);
565   fprintf_filtered (stream, " => ");
566 }
567
568 /* la_watch_location_expression for Ada.  */
569
570 gdb::unique_xmalloc_ptr<char>
571 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
572 {
573   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
574   std::string name = type_to_string (type);
575   return gdb::unique_xmalloc_ptr<char>
576     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
577 }
578
579 /* Assuming VECT points to an array of *SIZE objects of size
580    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
581    updating *SIZE as necessary and returning the (new) array.  */
582
583 void *
584 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
585 {
586   if (*size < min_size)
587     {
588       *size *= 2;
589       if (*size < min_size)
590         *size = min_size;
591       vect = xrealloc (vect, *size * element_size);
592     }
593   return vect;
594 }
595
596 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
597    suffix of FIELD_NAME beginning "___".  */
598
599 static int
600 field_name_match (const char *field_name, const char *target)
601 {
602   int len = strlen (target);
603
604   return
605     (strncmp (field_name, target, len) == 0
606      && (field_name[len] == '\0'
607          || (startswith (field_name + len, "___")
608              && strcmp (field_name + strlen (field_name) - 6,
609                         "___XVN") != 0)));
610 }
611
612
613 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
614    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
615    and return its index.  This function also handles fields whose name
616    have ___ suffixes because the compiler sometimes alters their name
617    by adding such a suffix to represent fields with certain constraints.
618    If the field could not be found, return a negative number if
619    MAYBE_MISSING is set.  Otherwise raise an error.  */
620
621 int
622 ada_get_field_index (const struct type *type, const char *field_name,
623                      int maybe_missing)
624 {
625   int fieldno;
626   struct type *struct_type = check_typedef ((struct type *) type);
627
628   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
629     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
630       return fieldno;
631
632   if (!maybe_missing)
633     error (_("Unable to find field %s in struct %s.  Aborting"),
634            field_name, TYPE_NAME (struct_type));
635
636   return -1;
637 }
638
639 /* The length of the prefix of NAME prior to any "___" suffix.  */
640
641 int
642 ada_name_prefix_len (const char *name)
643 {
644   if (name == NULL)
645     return 0;
646   else
647     {
648       const char *p = strstr (name, "___");
649
650       if (p == NULL)
651         return strlen (name);
652       else
653         return p - name;
654     }
655 }
656
657 /* Return non-zero if SUFFIX is a suffix of STR.
658    Return zero if STR is null.  */
659
660 static int
661 is_suffix (const char *str, const char *suffix)
662 {
663   int len1, len2;
664
665   if (str == NULL)
666     return 0;
667   len1 = strlen (str);
668   len2 = strlen (suffix);
669   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
670 }
671
672 /* The contents of value VAL, treated as a value of type TYPE.  The
673    result is an lval in memory if VAL is.  */
674
675 static struct value *
676 coerce_unspec_val_to_type (struct value *val, struct type *type)
677 {
678   type = ada_check_typedef (type);
679   if (value_type (val) == type)
680     return val;
681   else
682     {
683       struct value *result;
684
685       /* Make sure that the object size is not unreasonable before
686          trying to allocate some memory for it.  */
687       ada_ensure_varsize_limit (type);
688
689       if (value_lazy (val)
690           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
691         result = allocate_value_lazy (type);
692       else
693         {
694           result = allocate_value (type);
695           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
696         }
697       set_value_component_location (result, val);
698       set_value_bitsize (result, value_bitsize (val));
699       set_value_bitpos (result, value_bitpos (val));
700       set_value_address (result, value_address (val));
701       return result;
702     }
703 }
704
705 static const gdb_byte *
706 cond_offset_host (const gdb_byte *valaddr, long offset)
707 {
708   if (valaddr == NULL)
709     return NULL;
710   else
711     return valaddr + offset;
712 }
713
714 static CORE_ADDR
715 cond_offset_target (CORE_ADDR address, long offset)
716 {
717   if (address == 0)
718     return 0;
719   else
720     return address + offset;
721 }
722
723 /* Issue a warning (as for the definition of warning in utils.c, but
724    with exactly one argument rather than ...), unless the limit on the
725    number of warnings has passed during the evaluation of the current
726    expression.  */
727
728 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
729    provided by "complaint".  */
730 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
731
732 static void
733 lim_warning (const char *format, ...)
734 {
735   va_list args;
736
737   va_start (args, format);
738   warnings_issued += 1;
739   if (warnings_issued <= warning_limit)
740     vwarning (format, args);
741
742   va_end (args);
743 }
744
745 /* Issue an error if the size of an object of type T is unreasonable,
746    i.e. if it would be a bad idea to allocate a value of this type in
747    GDB.  */
748
749 void
750 ada_ensure_varsize_limit (const struct type *type)
751 {
752   if (TYPE_LENGTH (type) > varsize_limit)
753     error (_("object size is larger than varsize-limit"));
754 }
755
756 /* Maximum value of a SIZE-byte signed integer type.  */
757 static LONGEST
758 max_of_size (int size)
759 {
760   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
761
762   return top_bit | (top_bit - 1);
763 }
764
765 /* Minimum value of a SIZE-byte signed integer type.  */
766 static LONGEST
767 min_of_size (int size)
768 {
769   return -max_of_size (size) - 1;
770 }
771
772 /* Maximum value of a SIZE-byte unsigned integer type.  */
773 static ULONGEST
774 umax_of_size (int size)
775 {
776   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
777
778   return top_bit | (top_bit - 1);
779 }
780
781 /* Maximum value of integral type T, as a signed quantity.  */
782 static LONGEST
783 max_of_type (struct type *t)
784 {
785   if (TYPE_UNSIGNED (t))
786     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
787   else
788     return max_of_size (TYPE_LENGTH (t));
789 }
790
791 /* Minimum value of integral type T, as a signed quantity.  */
792 static LONGEST
793 min_of_type (struct type *t)
794 {
795   if (TYPE_UNSIGNED (t)) 
796     return 0;
797   else
798     return min_of_size (TYPE_LENGTH (t));
799 }
800
801 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
802 LONGEST
803 ada_discrete_type_high_bound (struct type *type)
804 {
805   type = resolve_dynamic_type (type, NULL, 0);
806   switch (TYPE_CODE (type))
807     {
808     case TYPE_CODE_RANGE:
809       return TYPE_HIGH_BOUND (type);
810     case TYPE_CODE_ENUM:
811       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
812     case TYPE_CODE_BOOL:
813       return 1;
814     case TYPE_CODE_CHAR:
815     case TYPE_CODE_INT:
816       return max_of_type (type);
817     default:
818       error (_("Unexpected type in ada_discrete_type_high_bound."));
819     }
820 }
821
822 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
823 LONGEST
824 ada_discrete_type_low_bound (struct type *type)
825 {
826   type = resolve_dynamic_type (type, NULL, 0);
827   switch (TYPE_CODE (type))
828     {
829     case TYPE_CODE_RANGE:
830       return TYPE_LOW_BOUND (type);
831     case TYPE_CODE_ENUM:
832       return TYPE_FIELD_ENUMVAL (type, 0);
833     case TYPE_CODE_BOOL:
834       return 0;
835     case TYPE_CODE_CHAR:
836     case TYPE_CODE_INT:
837       return min_of_type (type);
838     default:
839       error (_("Unexpected type in ada_discrete_type_low_bound."));
840     }
841 }
842
843 /* The identity on non-range types.  For range types, the underlying
844    non-range scalar type.  */
845
846 static struct type *
847 get_base_type (struct type *type)
848 {
849   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
850     {
851       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
852         return type;
853       type = TYPE_TARGET_TYPE (type);
854     }
855   return type;
856 }
857
858 /* Return a decoded version of the given VALUE.  This means returning
859    a value whose type is obtained by applying all the GNAT-specific
860    encondings, making the resulting type a static but standard description
861    of the initial type.  */
862
863 struct value *
864 ada_get_decoded_value (struct value *value)
865 {
866   struct type *type = ada_check_typedef (value_type (value));
867
868   if (ada_is_array_descriptor_type (type)
869       || (ada_is_constrained_packed_array_type (type)
870           && TYPE_CODE (type) != TYPE_CODE_PTR))
871     {
872       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
873         value = ada_coerce_to_simple_array_ptr (value);
874       else
875         value = ada_coerce_to_simple_array (value);
876     }
877   else
878     value = ada_to_fixed_value (value);
879
880   return value;
881 }
882
883 /* Same as ada_get_decoded_value, but with the given TYPE.
884    Because there is no associated actual value for this type,
885    the resulting type might be a best-effort approximation in
886    the case of dynamic types.  */
887
888 struct type *
889 ada_get_decoded_type (struct type *type)
890 {
891   type = to_static_fixed_type (type);
892   if (ada_is_constrained_packed_array_type (type))
893     type = ada_coerce_to_simple_array_type (type);
894   return type;
895 }
896
897 \f
898
899                                 /* Language Selection */
900
901 /* If the main program is in Ada, return language_ada, otherwise return LANG
902    (the main program is in Ada iif the adainit symbol is found).  */
903
904 enum language
905 ada_update_initial_language (enum language lang)
906 {
907   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
908                              (struct objfile *) NULL).minsym != NULL)
909     return language_ada;
910
911   return lang;
912 }
913
914 /* If the main procedure is written in Ada, then return its name.
915    The result is good until the next call.  Return NULL if the main
916    procedure doesn't appear to be in Ada.  */
917
918 char *
919 ada_main_name (void)
920 {
921   struct bound_minimal_symbol msym;
922   static gdb::unique_xmalloc_ptr<char> main_program_name;
923
924   /* For Ada, the name of the main procedure is stored in a specific
925      string constant, generated by the binder.  Look for that symbol,
926      extract its address, and then read that string.  If we didn't find
927      that string, then most probably the main procedure is not written
928      in Ada.  */
929   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
930
931   if (msym.minsym != NULL)
932     {
933       CORE_ADDR main_program_name_addr;
934       int err_code;
935
936       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
937       if (main_program_name_addr == 0)
938         error (_("Invalid address for Ada main program name."));
939
940       target_read_string (main_program_name_addr, &main_program_name,
941                           1024, &err_code);
942
943       if (err_code != 0)
944         return NULL;
945       return main_program_name.get ();
946     }
947
948   /* The main procedure doesn't seem to be in Ada.  */
949   return NULL;
950 }
951 \f
952                                 /* Symbols */
953
954 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
955    of NULLs.  */
956
957 const struct ada_opname_map ada_opname_table[] = {
958   {"Oadd", "\"+\"", BINOP_ADD},
959   {"Osubtract", "\"-\"", BINOP_SUB},
960   {"Omultiply", "\"*\"", BINOP_MUL},
961   {"Odivide", "\"/\"", BINOP_DIV},
962   {"Omod", "\"mod\"", BINOP_MOD},
963   {"Orem", "\"rem\"", BINOP_REM},
964   {"Oexpon", "\"**\"", BINOP_EXP},
965   {"Olt", "\"<\"", BINOP_LESS},
966   {"Ole", "\"<=\"", BINOP_LEQ},
967   {"Ogt", "\">\"", BINOP_GTR},
968   {"Oge", "\">=\"", BINOP_GEQ},
969   {"Oeq", "\"=\"", BINOP_EQUAL},
970   {"One", "\"/=\"", BINOP_NOTEQUAL},
971   {"Oand", "\"and\"", BINOP_BITWISE_AND},
972   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
973   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
974   {"Oconcat", "\"&\"", BINOP_CONCAT},
975   {"Oabs", "\"abs\"", UNOP_ABS},
976   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
977   {"Oadd", "\"+\"", UNOP_PLUS},
978   {"Osubtract", "\"-\"", UNOP_NEG},
979   {NULL, NULL}
980 };
981
982 /* The "encoded" form of DECODED, according to GNAT conventions.  The
983    result is valid until the next call to ada_encode.  If
984    THROW_ERRORS, throw an error if invalid operator name is found.
985    Otherwise, return NULL in that case.  */
986
987 static char *
988 ada_encode_1 (const char *decoded, bool throw_errors)
989 {
990   static char *encoding_buffer = NULL;
991   static size_t encoding_buffer_size = 0;
992   const char *p;
993   int k;
994
995   if (decoded == NULL)
996     return NULL;
997
998   GROW_VECT (encoding_buffer, encoding_buffer_size,
999              2 * strlen (decoded) + 10);
1000
1001   k = 0;
1002   for (p = decoded; *p != '\0'; p += 1)
1003     {
1004       if (*p == '.')
1005         {
1006           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1007           k += 2;
1008         }
1009       else if (*p == '"')
1010         {
1011           const struct ada_opname_map *mapping;
1012
1013           for (mapping = ada_opname_table;
1014                mapping->encoded != NULL
1015                && !startswith (p, mapping->decoded); mapping += 1)
1016             ;
1017           if (mapping->encoded == NULL)
1018             {
1019               if (throw_errors)
1020                 error (_("invalid Ada operator name: %s"), p);
1021               else
1022                 return NULL;
1023             }
1024           strcpy (encoding_buffer + k, mapping->encoded);
1025           k += strlen (mapping->encoded);
1026           break;
1027         }
1028       else
1029         {
1030           encoding_buffer[k] = *p;
1031           k += 1;
1032         }
1033     }
1034
1035   encoding_buffer[k] = '\0';
1036   return encoding_buffer;
1037 }
1038
1039 /* The "encoded" form of DECODED, according to GNAT conventions.
1040    The result is valid until the next call to ada_encode.  */
1041
1042 char *
1043 ada_encode (const char *decoded)
1044 {
1045   return ada_encode_1 (decoded, true);
1046 }
1047
1048 /* Return NAME folded to lower case, or, if surrounded by single
1049    quotes, unfolded, but with the quotes stripped away.  Result good
1050    to next call.  */
1051
1052 char *
1053 ada_fold_name (const char *name)
1054 {
1055   static char *fold_buffer = NULL;
1056   static size_t fold_buffer_size = 0;
1057
1058   int len = strlen (name);
1059   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1060
1061   if (name[0] == '\'')
1062     {
1063       strncpy (fold_buffer, name + 1, len - 2);
1064       fold_buffer[len - 2] = '\000';
1065     }
1066   else
1067     {
1068       int i;
1069
1070       for (i = 0; i <= len; i += 1)
1071         fold_buffer[i] = tolower (name[i]);
1072     }
1073
1074   return fold_buffer;
1075 }
1076
1077 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1078
1079 static int
1080 is_lower_alphanum (const char c)
1081 {
1082   return (isdigit (c) || (isalpha (c) && islower (c)));
1083 }
1084
1085 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1086    This function saves in LEN the length of that same symbol name but
1087    without either of these suffixes:
1088      . .{DIGIT}+
1089      . ${DIGIT}+
1090      . ___{DIGIT}+
1091      . __{DIGIT}+.
1092
1093    These are suffixes introduced by the compiler for entities such as
1094    nested subprogram for instance, in order to avoid name clashes.
1095    They do not serve any purpose for the debugger.  */
1096
1097 static void
1098 ada_remove_trailing_digits (const char *encoded, int *len)
1099 {
1100   if (*len > 1 && isdigit (encoded[*len - 1]))
1101     {
1102       int i = *len - 2;
1103
1104       while (i > 0 && isdigit (encoded[i]))
1105         i--;
1106       if (i >= 0 && encoded[i] == '.')
1107         *len = i;
1108       else if (i >= 0 && encoded[i] == '$')
1109         *len = i;
1110       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1111         *len = i - 2;
1112       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1113         *len = i - 1;
1114     }
1115 }
1116
1117 /* Remove the suffix introduced by the compiler for protected object
1118    subprograms.  */
1119
1120 static void
1121 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1122 {
1123   /* Remove trailing N.  */
1124
1125   /* Protected entry subprograms are broken into two
1126      separate subprograms: The first one is unprotected, and has
1127      a 'N' suffix; the second is the protected version, and has
1128      the 'P' suffix.  The second calls the first one after handling
1129      the protection.  Since the P subprograms are internally generated,
1130      we leave these names undecoded, giving the user a clue that this
1131      entity is internal.  */
1132
1133   if (*len > 1
1134       && encoded[*len - 1] == 'N'
1135       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1136     *len = *len - 1;
1137 }
1138
1139 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1140
1141 static void
1142 ada_remove_Xbn_suffix (const char *encoded, int *len)
1143 {
1144   int i = *len - 1;
1145
1146   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1147     i--;
1148
1149   if (encoded[i] != 'X')
1150     return;
1151
1152   if (i == 0)
1153     return;
1154
1155   if (isalnum (encoded[i-1]))
1156     *len = i;
1157 }
1158
1159 /* If ENCODED follows the GNAT entity encoding conventions, then return
1160    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1161    replaced by ENCODED.
1162
1163    The resulting string is valid until the next call of ada_decode.
1164    If the string is unchanged by decoding, the original string pointer
1165    is returned.  */
1166
1167 const char *
1168 ada_decode (const char *encoded)
1169 {
1170   int i, j;
1171   int len0;
1172   const char *p;
1173   char *decoded;
1174   int at_start_name;
1175   static char *decoding_buffer = NULL;
1176   static size_t decoding_buffer_size = 0;
1177
1178   /* With function descriptors on PPC64, the value of a symbol named
1179      ".FN", if it exists, is the entry point of the function "FN".  */
1180   if (encoded[0] == '.')
1181     encoded += 1;
1182
1183   /* The name of the Ada main procedure starts with "_ada_".
1184      This prefix is not part of the decoded name, so skip this part
1185      if we see this prefix.  */
1186   if (startswith (encoded, "_ada_"))
1187     encoded += 5;
1188
1189   /* If the name starts with '_', then it is not a properly encoded
1190      name, so do not attempt to decode it.  Similarly, if the name
1191      starts with '<', the name should not be decoded.  */
1192   if (encoded[0] == '_' || encoded[0] == '<')
1193     goto Suppress;
1194
1195   len0 = strlen (encoded);
1196
1197   ada_remove_trailing_digits (encoded, &len0);
1198   ada_remove_po_subprogram_suffix (encoded, &len0);
1199
1200   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1201      the suffix is located before the current "end" of ENCODED.  We want
1202      to avoid re-matching parts of ENCODED that have previously been
1203      marked as discarded (by decrementing LEN0).  */
1204   p = strstr (encoded, "___");
1205   if (p != NULL && p - encoded < len0 - 3)
1206     {
1207       if (p[3] == 'X')
1208         len0 = p - encoded;
1209       else
1210         goto Suppress;
1211     }
1212
1213   /* Remove any trailing TKB suffix.  It tells us that this symbol
1214      is for the body of a task, but that information does not actually
1215      appear in the decoded name.  */
1216
1217   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1218     len0 -= 3;
1219
1220   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1221      from the TKB suffix because it is used for non-anonymous task
1222      bodies.  */
1223
1224   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1225     len0 -= 2;
1226
1227   /* Remove trailing "B" suffixes.  */
1228   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1229
1230   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1231     len0 -= 1;
1232
1233   /* Make decoded big enough for possible expansion by operator name.  */
1234
1235   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1236   decoded = decoding_buffer;
1237
1238   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1239
1240   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1241     {
1242       i = len0 - 2;
1243       while ((i >= 0 && isdigit (encoded[i]))
1244              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1245         i -= 1;
1246       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1247         len0 = i - 1;
1248       else if (encoded[i] == '$')
1249         len0 = i;
1250     }
1251
1252   /* The first few characters that are not alphabetic are not part
1253      of any encoding we use, so we can copy them over verbatim.  */
1254
1255   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1256     decoded[j] = encoded[i];
1257
1258   at_start_name = 1;
1259   while (i < len0)
1260     {
1261       /* Is this a symbol function?  */
1262       if (at_start_name && encoded[i] == 'O')
1263         {
1264           int k;
1265
1266           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1267             {
1268               int op_len = strlen (ada_opname_table[k].encoded);
1269               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1270                             op_len - 1) == 0)
1271                   && !isalnum (encoded[i + op_len]))
1272                 {
1273                   strcpy (decoded + j, ada_opname_table[k].decoded);
1274                   at_start_name = 0;
1275                   i += op_len;
1276                   j += strlen (ada_opname_table[k].decoded);
1277                   break;
1278                 }
1279             }
1280           if (ada_opname_table[k].encoded != NULL)
1281             continue;
1282         }
1283       at_start_name = 0;
1284
1285       /* Replace "TK__" with "__", which will eventually be translated
1286          into "." (just below).  */
1287
1288       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1289         i += 2;
1290
1291       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1292          be translated into "." (just below).  These are internal names
1293          generated for anonymous blocks inside which our symbol is nested.  */
1294
1295       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1296           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1297           && isdigit (encoded [i+4]))
1298         {
1299           int k = i + 5;
1300           
1301           while (k < len0 && isdigit (encoded[k]))
1302             k++;  /* Skip any extra digit.  */
1303
1304           /* Double-check that the "__B_{DIGITS}+" sequence we found
1305              is indeed followed by "__".  */
1306           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1307             i = k;
1308         }
1309
1310       /* Remove _E{DIGITS}+[sb] */
1311
1312       /* Just as for protected object subprograms, there are 2 categories
1313          of subprograms created by the compiler for each entry.  The first
1314          one implements the actual entry code, and has a suffix following
1315          the convention above; the second one implements the barrier and
1316          uses the same convention as above, except that the 'E' is replaced
1317          by a 'B'.
1318
1319          Just as above, we do not decode the name of barrier functions
1320          to give the user a clue that the code he is debugging has been
1321          internally generated.  */
1322
1323       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1324           && isdigit (encoded[i+2]))
1325         {
1326           int k = i + 3;
1327
1328           while (k < len0 && isdigit (encoded[k]))
1329             k++;
1330
1331           if (k < len0
1332               && (encoded[k] == 'b' || encoded[k] == 's'))
1333             {
1334               k++;
1335               /* Just as an extra precaution, make sure that if this
1336                  suffix is followed by anything else, it is a '_'.
1337                  Otherwise, we matched this sequence by accident.  */
1338               if (k == len0
1339                   || (k < len0 && encoded[k] == '_'))
1340                 i = k;
1341             }
1342         }
1343
1344       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1345          the GNAT front-end in protected object subprograms.  */
1346
1347       if (i < len0 + 3
1348           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1349         {
1350           /* Backtrack a bit up until we reach either the begining of
1351              the encoded name, or "__".  Make sure that we only find
1352              digits or lowercase characters.  */
1353           const char *ptr = encoded + i - 1;
1354
1355           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1356             ptr--;
1357           if (ptr < encoded
1358               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1359             i++;
1360         }
1361
1362       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1363         {
1364           /* This is a X[bn]* sequence not separated from the previous
1365              part of the name with a non-alpha-numeric character (in other
1366              words, immediately following an alpha-numeric character), then
1367              verify that it is placed at the end of the encoded name.  If
1368              not, then the encoding is not valid and we should abort the
1369              decoding.  Otherwise, just skip it, it is used in body-nested
1370              package names.  */
1371           do
1372             i += 1;
1373           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1374           if (i < len0)
1375             goto Suppress;
1376         }
1377       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1378         {
1379          /* Replace '__' by '.'.  */
1380           decoded[j] = '.';
1381           at_start_name = 1;
1382           i += 2;
1383           j += 1;
1384         }
1385       else
1386         {
1387           /* It's a character part of the decoded name, so just copy it
1388              over.  */
1389           decoded[j] = encoded[i];
1390           i += 1;
1391           j += 1;
1392         }
1393     }
1394   decoded[j] = '\000';
1395
1396   /* Decoded names should never contain any uppercase character.
1397      Double-check this, and abort the decoding if we find one.  */
1398
1399   for (i = 0; decoded[i] != '\0'; i += 1)
1400     if (isupper (decoded[i]) || decoded[i] == ' ')
1401       goto Suppress;
1402
1403   if (strcmp (decoded, encoded) == 0)
1404     return encoded;
1405   else
1406     return decoded;
1407
1408 Suppress:
1409   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1410   decoded = decoding_buffer;
1411   if (encoded[0] == '<')
1412     strcpy (decoded, encoded);
1413   else
1414     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1415   return decoded;
1416
1417 }
1418
1419 /* Table for keeping permanent unique copies of decoded names.  Once
1420    allocated, names in this table are never released.  While this is a
1421    storage leak, it should not be significant unless there are massive
1422    changes in the set of decoded names in successive versions of a 
1423    symbol table loaded during a single session.  */
1424 static struct htab *decoded_names_store;
1425
1426 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1427    in the language-specific part of GSYMBOL, if it has not been
1428    previously computed.  Tries to save the decoded name in the same
1429    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1430    in any case, the decoded symbol has a lifetime at least that of
1431    GSYMBOL).
1432    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1433    const, but nevertheless modified to a semantically equivalent form
1434    when a decoded name is cached in it.  */
1435
1436 const char *
1437 ada_decode_symbol (const struct general_symbol_info *arg)
1438 {
1439   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1440   const char **resultp =
1441     &gsymbol->language_specific.demangled_name;
1442
1443   if (!gsymbol->ada_mangled)
1444     {
1445       const char *decoded = ada_decode (gsymbol->name);
1446       struct obstack *obstack = gsymbol->language_specific.obstack;
1447
1448       gsymbol->ada_mangled = 1;
1449
1450       if (obstack != NULL)
1451         *resultp
1452           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1453       else
1454         {
1455           /* Sometimes, we can't find a corresponding objfile, in
1456              which case, we put the result on the heap.  Since we only
1457              decode when needed, we hope this usually does not cause a
1458              significant memory leak (FIXME).  */
1459
1460           char **slot = (char **) htab_find_slot (decoded_names_store,
1461                                                   decoded, INSERT);
1462
1463           if (*slot == NULL)
1464             *slot = xstrdup (decoded);
1465           *resultp = *slot;
1466         }
1467     }
1468
1469   return *resultp;
1470 }
1471
1472 static char *
1473 ada_la_decode (const char *encoded, int options)
1474 {
1475   return xstrdup (ada_decode (encoded));
1476 }
1477
1478 /* Implement la_sniff_from_mangled_name for Ada.  */
1479
1480 static int
1481 ada_sniff_from_mangled_name (const char *mangled, char **out)
1482 {
1483   const char *demangled = ada_decode (mangled);
1484
1485   *out = NULL;
1486
1487   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1488     {
1489       /* Set the gsymbol language to Ada, but still return 0.
1490          Two reasons for that:
1491
1492          1. For Ada, we prefer computing the symbol's decoded name
1493          on the fly rather than pre-compute it, in order to save
1494          memory (Ada projects are typically very large).
1495
1496          2. There are some areas in the definition of the GNAT
1497          encoding where, with a bit of bad luck, we might be able
1498          to decode a non-Ada symbol, generating an incorrect
1499          demangled name (Eg: names ending with "TB" for instance
1500          are identified as task bodies and so stripped from
1501          the decoded name returned).
1502
1503          Returning 1, here, but not setting *DEMANGLED, helps us get a
1504          little bit of the best of both worlds.  Because we're last,
1505          we should not affect any of the other languages that were
1506          able to demangle the symbol before us; we get to correctly
1507          tag Ada symbols as such; and even if we incorrectly tagged a
1508          non-Ada symbol, which should be rare, any routing through the
1509          Ada language should be transparent (Ada tries to behave much
1510          like C/C++ with non-Ada symbols).  */
1511       return 1;
1512     }
1513
1514   return 0;
1515 }
1516
1517 \f
1518
1519                                 /* Arrays */
1520
1521 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1522    generated by the GNAT compiler to describe the index type used
1523    for each dimension of an array, check whether it follows the latest
1524    known encoding.  If not, fix it up to conform to the latest encoding.
1525    Otherwise, do nothing.  This function also does nothing if
1526    INDEX_DESC_TYPE is NULL.
1527
1528    The GNAT encoding used to describle the array index type evolved a bit.
1529    Initially, the information would be provided through the name of each
1530    field of the structure type only, while the type of these fields was
1531    described as unspecified and irrelevant.  The debugger was then expected
1532    to perform a global type lookup using the name of that field in order
1533    to get access to the full index type description.  Because these global
1534    lookups can be very expensive, the encoding was later enhanced to make
1535    the global lookup unnecessary by defining the field type as being
1536    the full index type description.
1537
1538    The purpose of this routine is to allow us to support older versions
1539    of the compiler by detecting the use of the older encoding, and by
1540    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1541    we essentially replace each field's meaningless type by the associated
1542    index subtype).  */
1543
1544 void
1545 ada_fixup_array_indexes_type (struct type *index_desc_type)
1546 {
1547   int i;
1548
1549   if (index_desc_type == NULL)
1550     return;
1551   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1552
1553   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1554      to check one field only, no need to check them all).  If not, return
1555      now.
1556
1557      If our INDEX_DESC_TYPE was generated using the older encoding,
1558      the field type should be a meaningless integer type whose name
1559      is not equal to the field name.  */
1560   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1561       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1562                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1563     return;
1564
1565   /* Fixup each field of INDEX_DESC_TYPE.  */
1566   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1567    {
1568      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1569      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1570
1571      if (raw_type)
1572        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1573    }
1574 }
1575
1576 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1577
1578 static const char *bound_name[] = {
1579   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1580   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1581 };
1582
1583 /* Maximum number of array dimensions we are prepared to handle.  */
1584
1585 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1586
1587
1588 /* The desc_* routines return primitive portions of array descriptors
1589    (fat pointers).  */
1590
1591 /* The descriptor or array type, if any, indicated by TYPE; removes
1592    level of indirection, if needed.  */
1593
1594 static struct type *
1595 desc_base_type (struct type *type)
1596 {
1597   if (type == NULL)
1598     return NULL;
1599   type = ada_check_typedef (type);
1600   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1601     type = ada_typedef_target_type (type);
1602
1603   if (type != NULL
1604       && (TYPE_CODE (type) == TYPE_CODE_PTR
1605           || TYPE_CODE (type) == TYPE_CODE_REF))
1606     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1607   else
1608     return type;
1609 }
1610
1611 /* True iff TYPE indicates a "thin" array pointer type.  */
1612
1613 static int
1614 is_thin_pntr (struct type *type)
1615 {
1616   return
1617     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1618     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1619 }
1620
1621 /* The descriptor type for thin pointer type TYPE.  */
1622
1623 static struct type *
1624 thin_descriptor_type (struct type *type)
1625 {
1626   struct type *base_type = desc_base_type (type);
1627
1628   if (base_type == NULL)
1629     return NULL;
1630   if (is_suffix (ada_type_name (base_type), "___XVE"))
1631     return base_type;
1632   else
1633     {
1634       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1635
1636       if (alt_type == NULL)
1637         return base_type;
1638       else
1639         return alt_type;
1640     }
1641 }
1642
1643 /* A pointer to the array data for thin-pointer value VAL.  */
1644
1645 static struct value *
1646 thin_data_pntr (struct value *val)
1647 {
1648   struct type *type = ada_check_typedef (value_type (val));
1649   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1650
1651   data_type = lookup_pointer_type (data_type);
1652
1653   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1654     return value_cast (data_type, value_copy (val));
1655   else
1656     return value_from_longest (data_type, value_address (val));
1657 }
1658
1659 /* True iff TYPE indicates a "thick" array pointer type.  */
1660
1661 static int
1662 is_thick_pntr (struct type *type)
1663 {
1664   type = desc_base_type (type);
1665   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1666           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1667 }
1668
1669 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1670    pointer to one, the type of its bounds data; otherwise, NULL.  */
1671
1672 static struct type *
1673 desc_bounds_type (struct type *type)
1674 {
1675   struct type *r;
1676
1677   type = desc_base_type (type);
1678
1679   if (type == NULL)
1680     return NULL;
1681   else if (is_thin_pntr (type))
1682     {
1683       type = thin_descriptor_type (type);
1684       if (type == NULL)
1685         return NULL;
1686       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1687       if (r != NULL)
1688         return ada_check_typedef (r);
1689     }
1690   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1691     {
1692       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1693       if (r != NULL)
1694         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1695     }
1696   return NULL;
1697 }
1698
1699 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1700    one, a pointer to its bounds data.   Otherwise NULL.  */
1701
1702 static struct value *
1703 desc_bounds (struct value *arr)
1704 {
1705   struct type *type = ada_check_typedef (value_type (arr));
1706
1707   if (is_thin_pntr (type))
1708     {
1709       struct type *bounds_type =
1710         desc_bounds_type (thin_descriptor_type (type));
1711       LONGEST addr;
1712
1713       if (bounds_type == NULL)
1714         error (_("Bad GNAT array descriptor"));
1715
1716       /* NOTE: The following calculation is not really kosher, but
1717          since desc_type is an XVE-encoded type (and shouldn't be),
1718          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1719       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1720         addr = value_as_long (arr);
1721       else
1722         addr = value_address (arr);
1723
1724       return
1725         value_from_longest (lookup_pointer_type (bounds_type),
1726                             addr - TYPE_LENGTH (bounds_type));
1727     }
1728
1729   else if (is_thick_pntr (type))
1730     {
1731       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1732                                                _("Bad GNAT array descriptor"));
1733       struct type *p_bounds_type = value_type (p_bounds);
1734
1735       if (p_bounds_type
1736           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1737         {
1738           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1739
1740           if (TYPE_STUB (target_type))
1741             p_bounds = value_cast (lookup_pointer_type
1742                                    (ada_check_typedef (target_type)),
1743                                    p_bounds);
1744         }
1745       else
1746         error (_("Bad GNAT array descriptor"));
1747
1748       return p_bounds;
1749     }
1750   else
1751     return NULL;
1752 }
1753
1754 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1755    position of the field containing the address of the bounds data.  */
1756
1757 static int
1758 fat_pntr_bounds_bitpos (struct type *type)
1759 {
1760   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1761 }
1762
1763 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1764    size of the field containing the address of the bounds data.  */
1765
1766 static int
1767 fat_pntr_bounds_bitsize (struct type *type)
1768 {
1769   type = desc_base_type (type);
1770
1771   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1772     return TYPE_FIELD_BITSIZE (type, 1);
1773   else
1774     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1775 }
1776
1777 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1778    pointer to one, the type of its array data (a array-with-no-bounds type);
1779    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1780    data.  */
1781
1782 static struct type *
1783 desc_data_target_type (struct type *type)
1784 {
1785   type = desc_base_type (type);
1786
1787   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1788   if (is_thin_pntr (type))
1789     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1790   else if (is_thick_pntr (type))
1791     {
1792       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1793
1794       if (data_type
1795           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1796         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1797     }
1798
1799   return NULL;
1800 }
1801
1802 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1803    its array data.  */
1804
1805 static struct value *
1806 desc_data (struct value *arr)
1807 {
1808   struct type *type = value_type (arr);
1809
1810   if (is_thin_pntr (type))
1811     return thin_data_pntr (arr);
1812   else if (is_thick_pntr (type))
1813     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1814                              _("Bad GNAT array descriptor"));
1815   else
1816     return NULL;
1817 }
1818
1819
1820 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1821    position of the field containing the address of the data.  */
1822
1823 static int
1824 fat_pntr_data_bitpos (struct type *type)
1825 {
1826   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1827 }
1828
1829 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1830    size of the field containing the address of the data.  */
1831
1832 static int
1833 fat_pntr_data_bitsize (struct type *type)
1834 {
1835   type = desc_base_type (type);
1836
1837   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1838     return TYPE_FIELD_BITSIZE (type, 0);
1839   else
1840     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1841 }
1842
1843 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1844    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1845    bound, if WHICH is 1.  The first bound is I=1.  */
1846
1847 static struct value *
1848 desc_one_bound (struct value *bounds, int i, int which)
1849 {
1850   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1851                            _("Bad GNAT array descriptor bounds"));
1852 }
1853
1854 /* If BOUNDS is an array-bounds structure type, return the bit position
1855    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1856    bound, if WHICH is 1.  The first bound is I=1.  */
1857
1858 static int
1859 desc_bound_bitpos (struct type *type, int i, int which)
1860 {
1861   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1862 }
1863
1864 /* If BOUNDS is an array-bounds structure type, return the bit field size
1865    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1866    bound, if WHICH is 1.  The first bound is I=1.  */
1867
1868 static int
1869 desc_bound_bitsize (struct type *type, int i, int which)
1870 {
1871   type = desc_base_type (type);
1872
1873   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1874     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1875   else
1876     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1877 }
1878
1879 /* If TYPE is the type of an array-bounds structure, the type of its
1880    Ith bound (numbering from 1).  Otherwise, NULL.  */
1881
1882 static struct type *
1883 desc_index_type (struct type *type, int i)
1884 {
1885   type = desc_base_type (type);
1886
1887   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1888     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1889   else
1890     return NULL;
1891 }
1892
1893 /* The number of index positions in the array-bounds type TYPE.
1894    Return 0 if TYPE is NULL.  */
1895
1896 static int
1897 desc_arity (struct type *type)
1898 {
1899   type = desc_base_type (type);
1900
1901   if (type != NULL)
1902     return TYPE_NFIELDS (type) / 2;
1903   return 0;
1904 }
1905
1906 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1907    an array descriptor type (representing an unconstrained array
1908    type).  */
1909
1910 static int
1911 ada_is_direct_array_type (struct type *type)
1912 {
1913   if (type == NULL)
1914     return 0;
1915   type = ada_check_typedef (type);
1916   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1917           || ada_is_array_descriptor_type (type));
1918 }
1919
1920 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1921  * to one.  */
1922
1923 static int
1924 ada_is_array_type (struct type *type)
1925 {
1926   while (type != NULL 
1927          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1928              || TYPE_CODE (type) == TYPE_CODE_REF))
1929     type = TYPE_TARGET_TYPE (type);
1930   return ada_is_direct_array_type (type);
1931 }
1932
1933 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1934
1935 int
1936 ada_is_simple_array_type (struct type *type)
1937 {
1938   if (type == NULL)
1939     return 0;
1940   type = ada_check_typedef (type);
1941   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1942           || (TYPE_CODE (type) == TYPE_CODE_PTR
1943               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1944                  == TYPE_CODE_ARRAY));
1945 }
1946
1947 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1948
1949 int
1950 ada_is_array_descriptor_type (struct type *type)
1951 {
1952   struct type *data_type = desc_data_target_type (type);
1953
1954   if (type == NULL)
1955     return 0;
1956   type = ada_check_typedef (type);
1957   return (data_type != NULL
1958           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1959           && desc_arity (desc_bounds_type (type)) > 0);
1960 }
1961
1962 /* Non-zero iff type is a partially mal-formed GNAT array
1963    descriptor.  FIXME: This is to compensate for some problems with
1964    debugging output from GNAT.  Re-examine periodically to see if it
1965    is still needed.  */
1966
1967 int
1968 ada_is_bogus_array_descriptor (struct type *type)
1969 {
1970   return
1971     type != NULL
1972     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1973     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1974         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1975     && !ada_is_array_descriptor_type (type);
1976 }
1977
1978
1979 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1980    (fat pointer) returns the type of the array data described---specifically,
1981    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1982    in from the descriptor; otherwise, they are left unspecified.  If
1983    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1984    returns NULL.  The result is simply the type of ARR if ARR is not
1985    a descriptor.  */
1986 struct type *
1987 ada_type_of_array (struct value *arr, int bounds)
1988 {
1989   if (ada_is_constrained_packed_array_type (value_type (arr)))
1990     return decode_constrained_packed_array_type (value_type (arr));
1991
1992   if (!ada_is_array_descriptor_type (value_type (arr)))
1993     return value_type (arr);
1994
1995   if (!bounds)
1996     {
1997       struct type *array_type =
1998         ada_check_typedef (desc_data_target_type (value_type (arr)));
1999
2000       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2001         TYPE_FIELD_BITSIZE (array_type, 0) =
2002           decode_packed_array_bitsize (value_type (arr));
2003       
2004       return array_type;
2005     }
2006   else
2007     {
2008       struct type *elt_type;
2009       int arity;
2010       struct value *descriptor;
2011
2012       elt_type = ada_array_element_type (value_type (arr), -1);
2013       arity = ada_array_arity (value_type (arr));
2014
2015       if (elt_type == NULL || arity == 0)
2016         return ada_check_typedef (value_type (arr));
2017
2018       descriptor = desc_bounds (arr);
2019       if (value_as_long (descriptor) == 0)
2020         return NULL;
2021       while (arity > 0)
2022         {
2023           struct type *range_type = alloc_type_copy (value_type (arr));
2024           struct type *array_type = alloc_type_copy (value_type (arr));
2025           struct value *low = desc_one_bound (descriptor, arity, 0);
2026           struct value *high = desc_one_bound (descriptor, arity, 1);
2027
2028           arity -= 1;
2029           create_static_range_type (range_type, value_type (low),
2030                                     longest_to_int (value_as_long (low)),
2031                                     longest_to_int (value_as_long (high)));
2032           elt_type = create_array_type (array_type, elt_type, range_type);
2033
2034           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2035             {
2036               /* We need to store the element packed bitsize, as well as
2037                  recompute the array size, because it was previously
2038                  computed based on the unpacked element size.  */
2039               LONGEST lo = value_as_long (low);
2040               LONGEST hi = value_as_long (high);
2041
2042               TYPE_FIELD_BITSIZE (elt_type, 0) =
2043                 decode_packed_array_bitsize (value_type (arr));
2044               /* If the array has no element, then the size is already
2045                  zero, and does not need to be recomputed.  */
2046               if (lo < hi)
2047                 {
2048                   int array_bitsize =
2049                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2050
2051                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2052                 }
2053             }
2054         }
2055
2056       return lookup_pointer_type (elt_type);
2057     }
2058 }
2059
2060 /* If ARR does not represent an array, returns ARR unchanged.
2061    Otherwise, returns either a standard GDB array with bounds set
2062    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2063    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2064
2065 struct value *
2066 ada_coerce_to_simple_array_ptr (struct value *arr)
2067 {
2068   if (ada_is_array_descriptor_type (value_type (arr)))
2069     {
2070       struct type *arrType = ada_type_of_array (arr, 1);
2071
2072       if (arrType == NULL)
2073         return NULL;
2074       return value_cast (arrType, value_copy (desc_data (arr)));
2075     }
2076   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2077     return decode_constrained_packed_array (arr);
2078   else
2079     return arr;
2080 }
2081
2082 /* If ARR does not represent an array, returns ARR unchanged.
2083    Otherwise, returns a standard GDB array describing ARR (which may
2084    be ARR itself if it already is in the proper form).  */
2085
2086 struct value *
2087 ada_coerce_to_simple_array (struct value *arr)
2088 {
2089   if (ada_is_array_descriptor_type (value_type (arr)))
2090     {
2091       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2092
2093       if (arrVal == NULL)
2094         error (_("Bounds unavailable for null array pointer."));
2095       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2096       return value_ind (arrVal);
2097     }
2098   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2099     return decode_constrained_packed_array (arr);
2100   else
2101     return arr;
2102 }
2103
2104 /* If TYPE represents a GNAT array type, return it translated to an
2105    ordinary GDB array type (possibly with BITSIZE fields indicating
2106    packing).  For other types, is the identity.  */
2107
2108 struct type *
2109 ada_coerce_to_simple_array_type (struct type *type)
2110 {
2111   if (ada_is_constrained_packed_array_type (type))
2112     return decode_constrained_packed_array_type (type);
2113
2114   if (ada_is_array_descriptor_type (type))
2115     return ada_check_typedef (desc_data_target_type (type));
2116
2117   return type;
2118 }
2119
2120 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2121
2122 static int
2123 ada_is_packed_array_type  (struct type *type)
2124 {
2125   if (type == NULL)
2126     return 0;
2127   type = desc_base_type (type);
2128   type = ada_check_typedef (type);
2129   return
2130     ada_type_name (type) != NULL
2131     && strstr (ada_type_name (type), "___XP") != NULL;
2132 }
2133
2134 /* Non-zero iff TYPE represents a standard GNAT constrained
2135    packed-array type.  */
2136
2137 int
2138 ada_is_constrained_packed_array_type (struct type *type)
2139 {
2140   return ada_is_packed_array_type (type)
2141     && !ada_is_array_descriptor_type (type);
2142 }
2143
2144 /* Non-zero iff TYPE represents an array descriptor for a
2145    unconstrained packed-array type.  */
2146
2147 static int
2148 ada_is_unconstrained_packed_array_type (struct type *type)
2149 {
2150   return ada_is_packed_array_type (type)
2151     && ada_is_array_descriptor_type (type);
2152 }
2153
2154 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2155    return the size of its elements in bits.  */
2156
2157 static long
2158 decode_packed_array_bitsize (struct type *type)
2159 {
2160   const char *raw_name;
2161   const char *tail;
2162   long bits;
2163
2164   /* Access to arrays implemented as fat pointers are encoded as a typedef
2165      of the fat pointer type.  We need the name of the fat pointer type
2166      to do the decoding, so strip the typedef layer.  */
2167   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2168     type = ada_typedef_target_type (type);
2169
2170   raw_name = ada_type_name (ada_check_typedef (type));
2171   if (!raw_name)
2172     raw_name = ada_type_name (desc_base_type (type));
2173
2174   if (!raw_name)
2175     return 0;
2176
2177   tail = strstr (raw_name, "___XP");
2178   gdb_assert (tail != NULL);
2179
2180   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2181     {
2182       lim_warning
2183         (_("could not understand bit size information on packed array"));
2184       return 0;
2185     }
2186
2187   return bits;
2188 }
2189
2190 /* Given that TYPE is a standard GDB array type with all bounds filled
2191    in, and that the element size of its ultimate scalar constituents
2192    (that is, either its elements, or, if it is an array of arrays, its
2193    elements' elements, etc.) is *ELT_BITS, return an identical type,
2194    but with the bit sizes of its elements (and those of any
2195    constituent arrays) recorded in the BITSIZE components of its
2196    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2197    in bits.
2198
2199    Note that, for arrays whose index type has an XA encoding where
2200    a bound references a record discriminant, getting that discriminant,
2201    and therefore the actual value of that bound, is not possible
2202    because none of the given parameters gives us access to the record.
2203    This function assumes that it is OK in the context where it is being
2204    used to return an array whose bounds are still dynamic and where
2205    the length is arbitrary.  */
2206
2207 static struct type *
2208 constrained_packed_array_type (struct type *type, long *elt_bits)
2209 {
2210   struct type *new_elt_type;
2211   struct type *new_type;
2212   struct type *index_type_desc;
2213   struct type *index_type;
2214   LONGEST low_bound, high_bound;
2215
2216   type = ada_check_typedef (type);
2217   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2218     return type;
2219
2220   index_type_desc = ada_find_parallel_type (type, "___XA");
2221   if (index_type_desc)
2222     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2223                                       NULL);
2224   else
2225     index_type = TYPE_INDEX_TYPE (type);
2226
2227   new_type = alloc_type_copy (type);
2228   new_elt_type =
2229     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2230                                    elt_bits);
2231   create_array_type (new_type, new_elt_type, index_type);
2232   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2233   TYPE_NAME (new_type) = ada_type_name (type);
2234
2235   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2236        && is_dynamic_type (check_typedef (index_type)))
2237       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2238     low_bound = high_bound = 0;
2239   if (high_bound < low_bound)
2240     *elt_bits = TYPE_LENGTH (new_type) = 0;
2241   else
2242     {
2243       *elt_bits *= (high_bound - low_bound + 1);
2244       TYPE_LENGTH (new_type) =
2245         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2246     }
2247
2248   TYPE_FIXED_INSTANCE (new_type) = 1;
2249   return new_type;
2250 }
2251
2252 /* The array type encoded by TYPE, where
2253    ada_is_constrained_packed_array_type (TYPE).  */
2254
2255 static struct type *
2256 decode_constrained_packed_array_type (struct type *type)
2257 {
2258   const char *raw_name = ada_type_name (ada_check_typedef (type));
2259   char *name;
2260   const char *tail;
2261   struct type *shadow_type;
2262   long bits;
2263
2264   if (!raw_name)
2265     raw_name = ada_type_name (desc_base_type (type));
2266
2267   if (!raw_name)
2268     return NULL;
2269
2270   name = (char *) alloca (strlen (raw_name) + 1);
2271   tail = strstr (raw_name, "___XP");
2272   type = desc_base_type (type);
2273
2274   memcpy (name, raw_name, tail - raw_name);
2275   name[tail - raw_name] = '\000';
2276
2277   shadow_type = ada_find_parallel_type_with_name (type, name);
2278
2279   if (shadow_type == NULL)
2280     {
2281       lim_warning (_("could not find bounds information on packed array"));
2282       return NULL;
2283     }
2284   shadow_type = check_typedef (shadow_type);
2285
2286   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2287     {
2288       lim_warning (_("could not understand bounds "
2289                      "information on packed array"));
2290       return NULL;
2291     }
2292
2293   bits = decode_packed_array_bitsize (type);
2294   return constrained_packed_array_type (shadow_type, &bits);
2295 }
2296
2297 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2298    array, returns a simple array that denotes that array.  Its type is a
2299    standard GDB array type except that the BITSIZEs of the array
2300    target types are set to the number of bits in each element, and the
2301    type length is set appropriately.  */
2302
2303 static struct value *
2304 decode_constrained_packed_array (struct value *arr)
2305 {
2306   struct type *type;
2307
2308   /* If our value is a pointer, then dereference it. Likewise if
2309      the value is a reference.  Make sure that this operation does not
2310      cause the target type to be fixed, as this would indirectly cause
2311      this array to be decoded.  The rest of the routine assumes that
2312      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2313      and "value_ind" routines to perform the dereferencing, as opposed
2314      to using "ada_coerce_ref" or "ada_value_ind".  */
2315   arr = coerce_ref (arr);
2316   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2317     arr = value_ind (arr);
2318
2319   type = decode_constrained_packed_array_type (value_type (arr));
2320   if (type == NULL)
2321     {
2322       error (_("can't unpack array"));
2323       return NULL;
2324     }
2325
2326   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2327       && ada_is_modular_type (value_type (arr)))
2328     {
2329        /* This is a (right-justified) modular type representing a packed
2330          array with no wrapper.  In order to interpret the value through
2331          the (left-justified) packed array type we just built, we must
2332          first left-justify it.  */
2333       int bit_size, bit_pos;
2334       ULONGEST mod;
2335
2336       mod = ada_modulus (value_type (arr)) - 1;
2337       bit_size = 0;
2338       while (mod > 0)
2339         {
2340           bit_size += 1;
2341           mod >>= 1;
2342         }
2343       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2344       arr = ada_value_primitive_packed_val (arr, NULL,
2345                                             bit_pos / HOST_CHAR_BIT,
2346                                             bit_pos % HOST_CHAR_BIT,
2347                                             bit_size,
2348                                             type);
2349     }
2350
2351   return coerce_unspec_val_to_type (arr, type);
2352 }
2353
2354
2355 /* The value of the element of packed array ARR at the ARITY indices
2356    given in IND.   ARR must be a simple array.  */
2357
2358 static struct value *
2359 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2360 {
2361   int i;
2362   int bits, elt_off, bit_off;
2363   long elt_total_bit_offset;
2364   struct type *elt_type;
2365   struct value *v;
2366
2367   bits = 0;
2368   elt_total_bit_offset = 0;
2369   elt_type = ada_check_typedef (value_type (arr));
2370   for (i = 0; i < arity; i += 1)
2371     {
2372       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2373           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2374         error
2375           (_("attempt to do packed indexing of "
2376              "something other than a packed array"));
2377       else
2378         {
2379           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2380           LONGEST lowerbound, upperbound;
2381           LONGEST idx;
2382
2383           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2384             {
2385               lim_warning (_("don't know bounds of array"));
2386               lowerbound = upperbound = 0;
2387             }
2388
2389           idx = pos_atr (ind[i]);
2390           if (idx < lowerbound || idx > upperbound)
2391             lim_warning (_("packed array index %ld out of bounds"),
2392                          (long) idx);
2393           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2394           elt_total_bit_offset += (idx - lowerbound) * bits;
2395           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2396         }
2397     }
2398   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2399   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2400
2401   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2402                                       bits, elt_type);
2403   return v;
2404 }
2405
2406 /* Non-zero iff TYPE includes negative integer values.  */
2407
2408 static int
2409 has_negatives (struct type *type)
2410 {
2411   switch (TYPE_CODE (type))
2412     {
2413     default:
2414       return 0;
2415     case TYPE_CODE_INT:
2416       return !TYPE_UNSIGNED (type);
2417     case TYPE_CODE_RANGE:
2418       return TYPE_LOW_BOUND (type) < 0;
2419     }
2420 }
2421
2422 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2423    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2424    the unpacked buffer.
2425
2426    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2427    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2428
2429    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2430    zero otherwise.
2431
2432    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2433
2434    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2435
2436 static void
2437 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2438                           gdb_byte *unpacked, int unpacked_len,
2439                           int is_big_endian, int is_signed_type,
2440                           int is_scalar)
2441 {
2442   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2443   int src_idx;                  /* Index into the source area */
2444   int src_bytes_left;           /* Number of source bytes left to process.  */
2445   int srcBitsLeft;              /* Number of source bits left to move */
2446   int unusedLS;                 /* Number of bits in next significant
2447                                    byte of source that are unused */
2448
2449   int unpacked_idx;             /* Index into the unpacked buffer */
2450   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2451
2452   unsigned long accum;          /* Staging area for bits being transferred */
2453   int accumSize;                /* Number of meaningful bits in accum */
2454   unsigned char sign;
2455
2456   /* Transmit bytes from least to most significant; delta is the direction
2457      the indices move.  */
2458   int delta = is_big_endian ? -1 : 1;
2459
2460   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2461      bits from SRC.  .*/
2462   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2463     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2464            bit_size, unpacked_len);
2465
2466   srcBitsLeft = bit_size;
2467   src_bytes_left = src_len;
2468   unpacked_bytes_left = unpacked_len;
2469   sign = 0;
2470
2471   if (is_big_endian)
2472     {
2473       src_idx = src_len - 1;
2474       if (is_signed_type
2475           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2476         sign = ~0;
2477
2478       unusedLS =
2479         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2480         % HOST_CHAR_BIT;
2481
2482       if (is_scalar)
2483         {
2484           accumSize = 0;
2485           unpacked_idx = unpacked_len - 1;
2486         }
2487       else
2488         {
2489           /* Non-scalar values must be aligned at a byte boundary...  */
2490           accumSize =
2491             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2492           /* ... And are placed at the beginning (most-significant) bytes
2493              of the target.  */
2494           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2495           unpacked_bytes_left = unpacked_idx + 1;
2496         }
2497     }
2498   else
2499     {
2500       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2501
2502       src_idx = unpacked_idx = 0;
2503       unusedLS = bit_offset;
2504       accumSize = 0;
2505
2506       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2507         sign = ~0;
2508     }
2509
2510   accum = 0;
2511   while (src_bytes_left > 0)
2512     {
2513       /* Mask for removing bits of the next source byte that are not
2514          part of the value.  */
2515       unsigned int unusedMSMask =
2516         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2517         1;
2518       /* Sign-extend bits for this byte.  */
2519       unsigned int signMask = sign & ~unusedMSMask;
2520
2521       accum |=
2522         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2523       accumSize += HOST_CHAR_BIT - unusedLS;
2524       if (accumSize >= HOST_CHAR_BIT)
2525         {
2526           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2527           accumSize -= HOST_CHAR_BIT;
2528           accum >>= HOST_CHAR_BIT;
2529           unpacked_bytes_left -= 1;
2530           unpacked_idx += delta;
2531         }
2532       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2533       unusedLS = 0;
2534       src_bytes_left -= 1;
2535       src_idx += delta;
2536     }
2537   while (unpacked_bytes_left > 0)
2538     {
2539       accum |= sign << accumSize;
2540       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2541       accumSize -= HOST_CHAR_BIT;
2542       if (accumSize < 0)
2543         accumSize = 0;
2544       accum >>= HOST_CHAR_BIT;
2545       unpacked_bytes_left -= 1;
2546       unpacked_idx += delta;
2547     }
2548 }
2549
2550 /* Create a new value of type TYPE from the contents of OBJ starting
2551    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2552    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2553    assigning through the result will set the field fetched from.
2554    VALADDR is ignored unless OBJ is NULL, in which case,
2555    VALADDR+OFFSET must address the start of storage containing the 
2556    packed value.  The value returned  in this case is never an lval.
2557    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2558
2559 struct value *
2560 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2561                                 long offset, int bit_offset, int bit_size,
2562                                 struct type *type)
2563 {
2564   struct value *v;
2565   const gdb_byte *src;                /* First byte containing data to unpack */
2566   gdb_byte *unpacked;
2567   const int is_scalar = is_scalar_type (type);
2568   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2569   gdb::byte_vector staging;
2570
2571   type = ada_check_typedef (type);
2572
2573   if (obj == NULL)
2574     src = valaddr + offset;
2575   else
2576     src = value_contents (obj) + offset;
2577
2578   if (is_dynamic_type (type))
2579     {
2580       /* The length of TYPE might by dynamic, so we need to resolve
2581          TYPE in order to know its actual size, which we then use
2582          to create the contents buffer of the value we return.
2583          The difficulty is that the data containing our object is
2584          packed, and therefore maybe not at a byte boundary.  So, what
2585          we do, is unpack the data into a byte-aligned buffer, and then
2586          use that buffer as our object's value for resolving the type.  */
2587       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2588       staging.resize (staging_len);
2589
2590       ada_unpack_from_contents (src, bit_offset, bit_size,
2591                                 staging.data (), staging.size (),
2592                                 is_big_endian, has_negatives (type),
2593                                 is_scalar);
2594       type = resolve_dynamic_type (type, staging.data (), 0);
2595       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2596         {
2597           /* This happens when the length of the object is dynamic,
2598              and is actually smaller than the space reserved for it.
2599              For instance, in an array of variant records, the bit_size
2600              we're given is the array stride, which is constant and
2601              normally equal to the maximum size of its element.
2602              But, in reality, each element only actually spans a portion
2603              of that stride.  */
2604           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2605         }
2606     }
2607
2608   if (obj == NULL)
2609     {
2610       v = allocate_value (type);
2611       src = valaddr + offset;
2612     }
2613   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2614     {
2615       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2616       gdb_byte *buf;
2617
2618       v = value_at (type, value_address (obj) + offset);
2619       buf = (gdb_byte *) alloca (src_len);
2620       read_memory (value_address (v), buf, src_len);
2621       src = buf;
2622     }
2623   else
2624     {
2625       v = allocate_value (type);
2626       src = value_contents (obj) + offset;
2627     }
2628
2629   if (obj != NULL)
2630     {
2631       long new_offset = offset;
2632
2633       set_value_component_location (v, obj);
2634       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2635       set_value_bitsize (v, bit_size);
2636       if (value_bitpos (v) >= HOST_CHAR_BIT)
2637         {
2638           ++new_offset;
2639           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2640         }
2641       set_value_offset (v, new_offset);
2642
2643       /* Also set the parent value.  This is needed when trying to
2644          assign a new value (in inferior memory).  */
2645       set_value_parent (v, obj);
2646     }
2647   else
2648     set_value_bitsize (v, bit_size);
2649   unpacked = value_contents_writeable (v);
2650
2651   if (bit_size == 0)
2652     {
2653       memset (unpacked, 0, TYPE_LENGTH (type));
2654       return v;
2655     }
2656
2657   if (staging.size () == TYPE_LENGTH (type))
2658     {
2659       /* Small short-cut: If we've unpacked the data into a buffer
2660          of the same size as TYPE's length, then we can reuse that,
2661          instead of doing the unpacking again.  */
2662       memcpy (unpacked, staging.data (), staging.size ());
2663     }
2664   else
2665     ada_unpack_from_contents (src, bit_offset, bit_size,
2666                               unpacked, TYPE_LENGTH (type),
2667                               is_big_endian, has_negatives (type), is_scalar);
2668
2669   return v;
2670 }
2671
2672 /* Store the contents of FROMVAL into the location of TOVAL.
2673    Return a new value with the location of TOVAL and contents of
2674    FROMVAL.   Handles assignment into packed fields that have
2675    floating-point or non-scalar types.  */
2676
2677 static struct value *
2678 ada_value_assign (struct value *toval, struct value *fromval)
2679 {
2680   struct type *type = value_type (toval);
2681   int bits = value_bitsize (toval);
2682
2683   toval = ada_coerce_ref (toval);
2684   fromval = ada_coerce_ref (fromval);
2685
2686   if (ada_is_direct_array_type (value_type (toval)))
2687     toval = ada_coerce_to_simple_array (toval);
2688   if (ada_is_direct_array_type (value_type (fromval)))
2689     fromval = ada_coerce_to_simple_array (fromval);
2690
2691   if (!deprecated_value_modifiable (toval))
2692     error (_("Left operand of assignment is not a modifiable lvalue."));
2693
2694   if (VALUE_LVAL (toval) == lval_memory
2695       && bits > 0
2696       && (TYPE_CODE (type) == TYPE_CODE_FLT
2697           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2698     {
2699       int len = (value_bitpos (toval)
2700                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2701       int from_size;
2702       gdb_byte *buffer = (gdb_byte *) alloca (len);
2703       struct value *val;
2704       CORE_ADDR to_addr = value_address (toval);
2705
2706       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2707         fromval = value_cast (type, fromval);
2708
2709       read_memory (to_addr, buffer, len);
2710       from_size = value_bitsize (fromval);
2711       if (from_size == 0)
2712         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2713       if (gdbarch_bits_big_endian (get_type_arch (type)))
2714         copy_bitwise (buffer, value_bitpos (toval),
2715                       value_contents (fromval), from_size - bits, bits, 1);
2716       else
2717         copy_bitwise (buffer, value_bitpos (toval),
2718                       value_contents (fromval), 0, bits, 0);
2719       write_memory_with_notification (to_addr, buffer, len);
2720
2721       val = value_copy (toval);
2722       memcpy (value_contents_raw (val), value_contents (fromval),
2723               TYPE_LENGTH (type));
2724       deprecated_set_value_type (val, type);
2725
2726       return val;
2727     }
2728
2729   return value_assign (toval, fromval);
2730 }
2731
2732
2733 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2734    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2735    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2736    COMPONENT, and not the inferior's memory.  The current contents
2737    of COMPONENT are ignored.
2738
2739    Although not part of the initial design, this function also works
2740    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2741    had a null address, and COMPONENT had an address which is equal to
2742    its offset inside CONTAINER.  */
2743
2744 static void
2745 value_assign_to_component (struct value *container, struct value *component,
2746                            struct value *val)
2747 {
2748   LONGEST offset_in_container =
2749     (LONGEST)  (value_address (component) - value_address (container));
2750   int bit_offset_in_container =
2751     value_bitpos (component) - value_bitpos (container);
2752   int bits;
2753
2754   val = value_cast (value_type (component), val);
2755
2756   if (value_bitsize (component) == 0)
2757     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2758   else
2759     bits = value_bitsize (component);
2760
2761   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2762     {
2763       int src_offset;
2764
2765       if (is_scalar_type (check_typedef (value_type (component))))
2766         src_offset
2767           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2768       else
2769         src_offset = 0;
2770       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2771                     value_bitpos (container) + bit_offset_in_container,
2772                     value_contents (val), src_offset, bits, 1);
2773     }
2774   else
2775     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2776                   value_bitpos (container) + bit_offset_in_container,
2777                   value_contents (val), 0, bits, 0);
2778 }
2779
2780 /* Determine if TYPE is an access to an unconstrained array.  */
2781
2782 bool
2783 ada_is_access_to_unconstrained_array (struct type *type)
2784 {
2785   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2786           && is_thick_pntr (ada_typedef_target_type (type)));
2787 }
2788
2789 /* The value of the element of array ARR at the ARITY indices given in IND.
2790    ARR may be either a simple array, GNAT array descriptor, or pointer
2791    thereto.  */
2792
2793 struct value *
2794 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2795 {
2796   int k;
2797   struct value *elt;
2798   struct type *elt_type;
2799
2800   elt = ada_coerce_to_simple_array (arr);
2801
2802   elt_type = ada_check_typedef (value_type (elt));
2803   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2804       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2805     return value_subscript_packed (elt, arity, ind);
2806
2807   for (k = 0; k < arity; k += 1)
2808     {
2809       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2810
2811       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2812         error (_("too many subscripts (%d expected)"), k);
2813
2814       elt = value_subscript (elt, pos_atr (ind[k]));
2815
2816       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2817           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2818         {
2819           /* The element is a typedef to an unconstrained array,
2820              except that the value_subscript call stripped the
2821              typedef layer.  The typedef layer is GNAT's way to
2822              specify that the element is, at the source level, an
2823              access to the unconstrained array, rather than the
2824              unconstrained array.  So, we need to restore that
2825              typedef layer, which we can do by forcing the element's
2826              type back to its original type. Otherwise, the returned
2827              value is going to be printed as the array, rather
2828              than as an access.  Another symptom of the same issue
2829              would be that an expression trying to dereference the
2830              element would also be improperly rejected.  */
2831           deprecated_set_value_type (elt, saved_elt_type);
2832         }
2833
2834       elt_type = ada_check_typedef (value_type (elt));
2835     }
2836
2837   return elt;
2838 }
2839
2840 /* Assuming ARR is a pointer to a GDB array, the value of the element
2841    of *ARR at the ARITY indices given in IND.
2842    Does not read the entire array into memory.
2843
2844    Note: Unlike what one would expect, this function is used instead of
2845    ada_value_subscript for basically all non-packed array types.  The reason
2846    for this is that a side effect of doing our own pointer arithmetics instead
2847    of relying on value_subscript is that there is no implicit typedef peeling.
2848    This is important for arrays of array accesses, where it allows us to
2849    preserve the fact that the array's element is an array access, where the
2850    access part os encoded in a typedef layer.  */
2851
2852 static struct value *
2853 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2854 {
2855   int k;
2856   struct value *array_ind = ada_value_ind (arr);
2857   struct type *type
2858     = check_typedef (value_enclosing_type (array_ind));
2859
2860   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2861       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2862     return value_subscript_packed (array_ind, arity, ind);
2863
2864   for (k = 0; k < arity; k += 1)
2865     {
2866       LONGEST lwb, upb;
2867       struct value *lwb_value;
2868
2869       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2870         error (_("too many subscripts (%d expected)"), k);
2871       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2872                         value_copy (arr));
2873       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2874       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2875       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2876       type = TYPE_TARGET_TYPE (type);
2877     }
2878
2879   return value_ind (arr);
2880 }
2881
2882 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2883    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2884    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2885    this array is LOW, as per Ada rules.  */
2886 static struct value *
2887 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2888                           int low, int high)
2889 {
2890   struct type *type0 = ada_check_typedef (type);
2891   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2892   struct type *index_type
2893     = create_static_range_type (NULL, base_index_type, low, high);
2894   struct type *slice_type = create_array_type_with_stride
2895                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2896                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2897                                TYPE_FIELD_BITSIZE (type0, 0));
2898   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2899   LONGEST base_low_pos, low_pos;
2900   CORE_ADDR base;
2901
2902   if (!discrete_position (base_index_type, low, &low_pos)
2903       || !discrete_position (base_index_type, base_low, &base_low_pos))
2904     {
2905       warning (_("unable to get positions in slice, use bounds instead"));
2906       low_pos = low;
2907       base_low_pos = base_low;
2908     }
2909
2910   base = value_as_address (array_ptr)
2911     + ((low_pos - base_low_pos)
2912        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2913   return value_at_lazy (slice_type, base);
2914 }
2915
2916
2917 static struct value *
2918 ada_value_slice (struct value *array, int low, int high)
2919 {
2920   struct type *type = ada_check_typedef (value_type (array));
2921   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2922   struct type *index_type
2923     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2924   struct type *slice_type = create_array_type_with_stride
2925                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2926                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2927                                TYPE_FIELD_BITSIZE (type, 0));
2928   LONGEST low_pos, high_pos;
2929
2930   if (!discrete_position (base_index_type, low, &low_pos)
2931       || !discrete_position (base_index_type, high, &high_pos))
2932     {
2933       warning (_("unable to get positions in slice, use bounds instead"));
2934       low_pos = low;
2935       high_pos = high;
2936     }
2937
2938   return value_cast (slice_type,
2939                      value_slice (array, low, high_pos - low_pos + 1));
2940 }
2941
2942 /* If type is a record type in the form of a standard GNAT array
2943    descriptor, returns the number of dimensions for type.  If arr is a
2944    simple array, returns the number of "array of"s that prefix its
2945    type designation.  Otherwise, returns 0.  */
2946
2947 int
2948 ada_array_arity (struct type *type)
2949 {
2950   int arity;
2951
2952   if (type == NULL)
2953     return 0;
2954
2955   type = desc_base_type (type);
2956
2957   arity = 0;
2958   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2959     return desc_arity (desc_bounds_type (type));
2960   else
2961     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2962       {
2963         arity += 1;
2964         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2965       }
2966
2967   return arity;
2968 }
2969
2970 /* If TYPE is a record type in the form of a standard GNAT array
2971    descriptor or a simple array type, returns the element type for
2972    TYPE after indexing by NINDICES indices, or by all indices if
2973    NINDICES is -1.  Otherwise, returns NULL.  */
2974
2975 struct type *
2976 ada_array_element_type (struct type *type, int nindices)
2977 {
2978   type = desc_base_type (type);
2979
2980   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2981     {
2982       int k;
2983       struct type *p_array_type;
2984
2985       p_array_type = desc_data_target_type (type);
2986
2987       k = ada_array_arity (type);
2988       if (k == 0)
2989         return NULL;
2990
2991       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2992       if (nindices >= 0 && k > nindices)
2993         k = nindices;
2994       while (k > 0 && p_array_type != NULL)
2995         {
2996           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2997           k -= 1;
2998         }
2999       return p_array_type;
3000     }
3001   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3002     {
3003       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3004         {
3005           type = TYPE_TARGET_TYPE (type);
3006           nindices -= 1;
3007         }
3008       return type;
3009     }
3010
3011   return NULL;
3012 }
3013
3014 /* The type of nth index in arrays of given type (n numbering from 1).
3015    Does not examine memory.  Throws an error if N is invalid or TYPE
3016    is not an array type.  NAME is the name of the Ada attribute being
3017    evaluated ('range, 'first, 'last, or 'length); it is used in building
3018    the error message.  */
3019
3020 static struct type *
3021 ada_index_type (struct type *type, int n, const char *name)
3022 {
3023   struct type *result_type;
3024
3025   type = desc_base_type (type);
3026
3027   if (n < 0 || n > ada_array_arity (type))
3028     error (_("invalid dimension number to '%s"), name);
3029
3030   if (ada_is_simple_array_type (type))
3031     {
3032       int i;
3033
3034       for (i = 1; i < n; i += 1)
3035         type = TYPE_TARGET_TYPE (type);
3036       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3037       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3038          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3039          perhaps stabsread.c would make more sense.  */
3040       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3041         result_type = NULL;
3042     }
3043   else
3044     {
3045       result_type = desc_index_type (desc_bounds_type (type), n);
3046       if (result_type == NULL)
3047         error (_("attempt to take bound of something that is not an array"));
3048     }
3049
3050   return result_type;
3051 }
3052
3053 /* Given that arr is an array type, returns the lower bound of the
3054    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3055    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3056    array-descriptor type.  It works for other arrays with bounds supplied
3057    by run-time quantities other than discriminants.  */
3058
3059 static LONGEST
3060 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3061 {
3062   struct type *type, *index_type_desc, *index_type;
3063   int i;
3064
3065   gdb_assert (which == 0 || which == 1);
3066
3067   if (ada_is_constrained_packed_array_type (arr_type))
3068     arr_type = decode_constrained_packed_array_type (arr_type);
3069
3070   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3071     return (LONGEST) - which;
3072
3073   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3074     type = TYPE_TARGET_TYPE (arr_type);
3075   else
3076     type = arr_type;
3077
3078   if (TYPE_FIXED_INSTANCE (type))
3079     {
3080       /* The array has already been fixed, so we do not need to
3081          check the parallel ___XA type again.  That encoding has
3082          already been applied, so ignore it now.  */
3083       index_type_desc = NULL;
3084     }
3085   else
3086     {
3087       index_type_desc = ada_find_parallel_type (type, "___XA");
3088       ada_fixup_array_indexes_type (index_type_desc);
3089     }
3090
3091   if (index_type_desc != NULL)
3092     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3093                                       NULL);
3094   else
3095     {
3096       struct type *elt_type = check_typedef (type);
3097
3098       for (i = 1; i < n; i++)
3099         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3100
3101       index_type = TYPE_INDEX_TYPE (elt_type);
3102     }
3103
3104   return
3105     (LONGEST) (which == 0
3106                ? ada_discrete_type_low_bound (index_type)
3107                : ada_discrete_type_high_bound (index_type));
3108 }
3109
3110 /* Given that arr is an array value, returns the lower bound of the
3111    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3112    WHICH is 1.  This routine will also work for arrays with bounds
3113    supplied by run-time quantities other than discriminants.  */
3114
3115 static LONGEST
3116 ada_array_bound (struct value *arr, int n, int which)
3117 {
3118   struct type *arr_type;
3119
3120   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3121     arr = value_ind (arr);
3122   arr_type = value_enclosing_type (arr);
3123
3124   if (ada_is_constrained_packed_array_type (arr_type))
3125     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3126   else if (ada_is_simple_array_type (arr_type))
3127     return ada_array_bound_from_type (arr_type, n, which);
3128   else
3129     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3130 }
3131
3132 /* Given that arr is an array value, returns the length of the
3133    nth index.  This routine will also work for arrays with bounds
3134    supplied by run-time quantities other than discriminants.
3135    Does not work for arrays indexed by enumeration types with representation
3136    clauses at the moment.  */
3137
3138 static LONGEST
3139 ada_array_length (struct value *arr, int n)
3140 {
3141   struct type *arr_type, *index_type;
3142   int low, high;
3143
3144   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3145     arr = value_ind (arr);
3146   arr_type = value_enclosing_type (arr);
3147
3148   if (ada_is_constrained_packed_array_type (arr_type))
3149     return ada_array_length (decode_constrained_packed_array (arr), n);
3150
3151   if (ada_is_simple_array_type (arr_type))
3152     {
3153       low = ada_array_bound_from_type (arr_type, n, 0);
3154       high = ada_array_bound_from_type (arr_type, n, 1);
3155     }
3156   else
3157     {
3158       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3159       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3160     }
3161
3162   arr_type = check_typedef (arr_type);
3163   index_type = ada_index_type (arr_type, n, "length");
3164   if (index_type != NULL)
3165     {
3166       struct type *base_type;
3167       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3168         base_type = TYPE_TARGET_TYPE (index_type);
3169       else
3170         base_type = index_type;
3171
3172       low = pos_atr (value_from_longest (base_type, low));
3173       high = pos_atr (value_from_longest (base_type, high));
3174     }
3175   return high - low + 1;
3176 }
3177
3178 /* An array whose type is that of ARR_TYPE (an array type), with
3179    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3180    less than LOW, then LOW-1 is used.  */
3181
3182 static struct value *
3183 empty_array (struct type *arr_type, int low, int high)
3184 {
3185   struct type *arr_type0 = ada_check_typedef (arr_type);
3186   struct type *index_type
3187     = create_static_range_type
3188         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3189          high < low ? low - 1 : high);
3190   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3191
3192   return allocate_value (create_array_type (NULL, elt_type, index_type));
3193 }
3194 \f
3195
3196                                 /* Name resolution */
3197
3198 /* The "decoded" name for the user-definable Ada operator corresponding
3199    to OP.  */
3200
3201 static const char *
3202 ada_decoded_op_name (enum exp_opcode op)
3203 {
3204   int i;
3205
3206   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3207     {
3208       if (ada_opname_table[i].op == op)
3209         return ada_opname_table[i].decoded;
3210     }
3211   error (_("Could not find operator name for opcode"));
3212 }
3213
3214
3215 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3216    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3217    undefined namespace) and converts operators that are
3218    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3219    non-null, it provides a preferred result type [at the moment, only
3220    type void has any effect---causing procedures to be preferred over
3221    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3222    return type is preferred.  May change (expand) *EXP.  */
3223
3224 static void
3225 resolve (expression_up *expp, int void_context_p, int parse_completion,
3226          innermost_block_tracker *tracker)
3227 {
3228   struct type *context_type = NULL;
3229   int pc = 0;
3230
3231   if (void_context_p)
3232     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3233
3234   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3235 }
3236
3237 /* Resolve the operator of the subexpression beginning at
3238    position *POS of *EXPP.  "Resolving" consists of replacing
3239    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3240    with their resolutions, replacing built-in operators with
3241    function calls to user-defined operators, where appropriate, and,
3242    when DEPROCEDURE_P is non-zero, converting function-valued variables
3243    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3244    are as in ada_resolve, above.  */
3245
3246 static struct value *
3247 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3248                 struct type *context_type, int parse_completion,
3249                 innermost_block_tracker *tracker)
3250 {
3251   int pc = *pos;
3252   int i;
3253   struct expression *exp;       /* Convenience: == *expp.  */
3254   enum exp_opcode op = (*expp)->elts[pc].opcode;
3255   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3256   int nargs;                    /* Number of operands.  */
3257   int oplen;
3258
3259   argvec = NULL;
3260   nargs = 0;
3261   exp = expp->get ();
3262
3263   /* Pass one: resolve operands, saving their types and updating *pos,
3264      if needed.  */
3265   switch (op)
3266     {
3267     case OP_FUNCALL:
3268       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3269           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3270         *pos += 7;
3271       else
3272         {
3273           *pos += 3;
3274           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3275         }
3276       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3277       break;
3278
3279     case UNOP_ADDR:
3280       *pos += 1;
3281       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3282       break;
3283
3284     case UNOP_QUAL:
3285       *pos += 3;
3286       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3287                       parse_completion, tracker);
3288       break;
3289
3290     case OP_ATR_MODULUS:
3291     case OP_ATR_SIZE:
3292     case OP_ATR_TAG:
3293     case OP_ATR_FIRST:
3294     case OP_ATR_LAST:
3295     case OP_ATR_LENGTH:
3296     case OP_ATR_POS:
3297     case OP_ATR_VAL:
3298     case OP_ATR_MIN:
3299     case OP_ATR_MAX:
3300     case TERNOP_IN_RANGE:
3301     case BINOP_IN_BOUNDS:
3302     case UNOP_IN_RANGE:
3303     case OP_AGGREGATE:
3304     case OP_OTHERS:
3305     case OP_CHOICES:
3306     case OP_POSITIONAL:
3307     case OP_DISCRETE_RANGE:
3308     case OP_NAME:
3309       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3310       *pos += oplen;
3311       break;
3312
3313     case BINOP_ASSIGN:
3314       {
3315         struct value *arg1;
3316
3317         *pos += 1;
3318         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3319         if (arg1 == NULL)
3320           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3321         else
3322           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3323                           tracker);
3324         break;
3325       }
3326
3327     case UNOP_CAST:
3328       *pos += 3;
3329       nargs = 1;
3330       break;
3331
3332     case BINOP_ADD:
3333     case BINOP_SUB:
3334     case BINOP_MUL:
3335     case BINOP_DIV:
3336     case BINOP_REM:
3337     case BINOP_MOD:
3338     case BINOP_EXP:
3339     case BINOP_CONCAT:
3340     case BINOP_LOGICAL_AND:
3341     case BINOP_LOGICAL_OR:
3342     case BINOP_BITWISE_AND:
3343     case BINOP_BITWISE_IOR:
3344     case BINOP_BITWISE_XOR:
3345
3346     case BINOP_EQUAL:
3347     case BINOP_NOTEQUAL:
3348     case BINOP_LESS:
3349     case BINOP_GTR:
3350     case BINOP_LEQ:
3351     case BINOP_GEQ:
3352
3353     case BINOP_REPEAT:
3354     case BINOP_SUBSCRIPT:
3355     case BINOP_COMMA:
3356       *pos += 1;
3357       nargs = 2;
3358       break;
3359
3360     case UNOP_NEG:
3361     case UNOP_PLUS:
3362     case UNOP_LOGICAL_NOT:
3363     case UNOP_ABS:
3364     case UNOP_IND:
3365       *pos += 1;
3366       nargs = 1;
3367       break;
3368
3369     case OP_LONG:
3370     case OP_FLOAT:
3371     case OP_VAR_VALUE:
3372     case OP_VAR_MSYM_VALUE:
3373       *pos += 4;
3374       break;
3375
3376     case OP_TYPE:
3377     case OP_BOOL:
3378     case OP_LAST:
3379     case OP_INTERNALVAR:
3380       *pos += 3;
3381       break;
3382
3383     case UNOP_MEMVAL:
3384       *pos += 3;
3385       nargs = 1;
3386       break;
3387
3388     case OP_REGISTER:
3389       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3390       break;
3391
3392     case STRUCTOP_STRUCT:
3393       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3394       nargs = 1;
3395       break;
3396
3397     case TERNOP_SLICE:
3398       *pos += 1;
3399       nargs = 3;
3400       break;
3401
3402     case OP_STRING:
3403       break;
3404
3405     default:
3406       error (_("Unexpected operator during name resolution"));
3407     }
3408
3409   argvec = XALLOCAVEC (struct value *, nargs + 1);
3410   for (i = 0; i < nargs; i += 1)
3411     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3412                                 tracker);
3413   argvec[i] = NULL;
3414   exp = expp->get ();
3415
3416   /* Pass two: perform any resolution on principal operator.  */
3417   switch (op)
3418     {
3419     default:
3420       break;
3421
3422     case OP_VAR_VALUE:
3423       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3424         {
3425           std::vector<struct block_symbol> candidates;
3426           int n_candidates;
3427
3428           n_candidates =
3429             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3430                                     (exp->elts[pc + 2].symbol),
3431                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3432                                     &candidates);
3433
3434           if (n_candidates > 1)
3435             {
3436               /* Types tend to get re-introduced locally, so if there
3437                  are any local symbols that are not types, first filter
3438                  out all types.  */
3439               int j;
3440               for (j = 0; j < n_candidates; j += 1)
3441                 switch (SYMBOL_CLASS (candidates[j].symbol))
3442                   {
3443                   case LOC_REGISTER:
3444                   case LOC_ARG:
3445                   case LOC_REF_ARG:
3446                   case LOC_REGPARM_ADDR:
3447                   case LOC_LOCAL:
3448                   case LOC_COMPUTED:
3449                     goto FoundNonType;
3450                   default:
3451                     break;
3452                   }
3453             FoundNonType:
3454               if (j < n_candidates)
3455                 {
3456                   j = 0;
3457                   while (j < n_candidates)
3458                     {
3459                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3460                         {
3461                           candidates[j] = candidates[n_candidates - 1];
3462                           n_candidates -= 1;
3463                         }
3464                       else
3465                         j += 1;
3466                     }
3467                 }
3468             }
3469
3470           if (n_candidates == 0)
3471             error (_("No definition found for %s"),
3472                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3473           else if (n_candidates == 1)
3474             i = 0;
3475           else if (deprocedure_p
3476                    && !is_nonfunction (candidates.data (), n_candidates))
3477             {
3478               i = ada_resolve_function
3479                 (candidates.data (), n_candidates, NULL, 0,
3480                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3481                  context_type, parse_completion);
3482               if (i < 0)
3483                 error (_("Could not find a match for %s"),
3484                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3485             }
3486           else
3487             {
3488               printf_filtered (_("Multiple matches for %s\n"),
3489                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3490               user_select_syms (candidates.data (), n_candidates, 1);
3491               i = 0;
3492             }
3493
3494           exp->elts[pc + 1].block = candidates[i].block;
3495           exp->elts[pc + 2].symbol = candidates[i].symbol;
3496           tracker->update (candidates[i]);
3497         }
3498
3499       if (deprocedure_p
3500           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3501               == TYPE_CODE_FUNC))
3502         {
3503           replace_operator_with_call (expp, pc, 0, 4,
3504                                       exp->elts[pc + 2].symbol,
3505                                       exp->elts[pc + 1].block);
3506           exp = expp->get ();
3507         }
3508       break;
3509
3510     case OP_FUNCALL:
3511       {
3512         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3513             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3514           {
3515             std::vector<struct block_symbol> candidates;
3516             int n_candidates;
3517
3518             n_candidates =
3519               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3520                                       (exp->elts[pc + 5].symbol),
3521                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3522                                       &candidates);
3523
3524             if (n_candidates == 1)
3525               i = 0;
3526             else
3527               {
3528                 i = ada_resolve_function
3529                   (candidates.data (), n_candidates,
3530                    argvec, nargs,
3531                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3532                    context_type, parse_completion);
3533                 if (i < 0)
3534                   error (_("Could not find a match for %s"),
3535                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3536               }
3537
3538             exp->elts[pc + 4].block = candidates[i].block;
3539             exp->elts[pc + 5].symbol = candidates[i].symbol;
3540             tracker->update (candidates[i]);
3541           }
3542       }
3543       break;
3544     case BINOP_ADD:
3545     case BINOP_SUB:
3546     case BINOP_MUL:
3547     case BINOP_DIV:
3548     case BINOP_REM:
3549     case BINOP_MOD:
3550     case BINOP_CONCAT:
3551     case BINOP_BITWISE_AND:
3552     case BINOP_BITWISE_IOR:
3553     case BINOP_BITWISE_XOR:
3554     case BINOP_EQUAL:
3555     case BINOP_NOTEQUAL:
3556     case BINOP_LESS:
3557     case BINOP_GTR:
3558     case BINOP_LEQ:
3559     case BINOP_GEQ:
3560     case BINOP_EXP:
3561     case UNOP_NEG:
3562     case UNOP_PLUS:
3563     case UNOP_LOGICAL_NOT:
3564     case UNOP_ABS:
3565       if (possible_user_operator_p (op, argvec))
3566         {
3567           std::vector<struct block_symbol> candidates;
3568           int n_candidates;
3569
3570           n_candidates =
3571             ada_lookup_symbol_list (ada_decoded_op_name (op),
3572                                     NULL, VAR_DOMAIN,
3573                                     &candidates);
3574
3575           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3576                                     nargs, ada_decoded_op_name (op), NULL,
3577                                     parse_completion);
3578           if (i < 0)
3579             break;
3580
3581           replace_operator_with_call (expp, pc, nargs, 1,
3582                                       candidates[i].symbol,
3583                                       candidates[i].block);
3584           exp = expp->get ();
3585         }
3586       break;
3587
3588     case OP_TYPE:
3589     case OP_REGISTER:
3590       return NULL;
3591     }
3592
3593   *pos = pc;
3594   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3595     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3596                                     exp->elts[pc + 1].objfile,
3597                                     exp->elts[pc + 2].msymbol);
3598   else
3599     return evaluate_subexp_type (exp, pos);
3600 }
3601
3602 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3603    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3604    a non-pointer.  */
3605 /* The term "match" here is rather loose.  The match is heuristic and
3606    liberal.  */
3607
3608 static int
3609 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3610 {
3611   ftype = ada_check_typedef (ftype);
3612   atype = ada_check_typedef (atype);
3613
3614   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3615     ftype = TYPE_TARGET_TYPE (ftype);
3616   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3617     atype = TYPE_TARGET_TYPE (atype);
3618
3619   switch (TYPE_CODE (ftype))
3620     {
3621     default:
3622       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3623     case TYPE_CODE_PTR:
3624       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3625         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3626                                TYPE_TARGET_TYPE (atype), 0);
3627       else
3628         return (may_deref
3629                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3630     case TYPE_CODE_INT:
3631     case TYPE_CODE_ENUM:
3632     case TYPE_CODE_RANGE:
3633       switch (TYPE_CODE (atype))
3634         {
3635         case TYPE_CODE_INT:
3636         case TYPE_CODE_ENUM:
3637         case TYPE_CODE_RANGE:
3638           return 1;
3639         default:
3640           return 0;
3641         }
3642
3643     case TYPE_CODE_ARRAY:
3644       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3645               || ada_is_array_descriptor_type (atype));
3646
3647     case TYPE_CODE_STRUCT:
3648       if (ada_is_array_descriptor_type (ftype))
3649         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3650                 || ada_is_array_descriptor_type (atype));
3651       else
3652         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3653                 && !ada_is_array_descriptor_type (atype));
3654
3655     case TYPE_CODE_UNION:
3656     case TYPE_CODE_FLT:
3657       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3658     }
3659 }
3660
3661 /* Return non-zero if the formals of FUNC "sufficiently match" the
3662    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3663    may also be an enumeral, in which case it is treated as a 0-
3664    argument function.  */
3665
3666 static int
3667 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3668 {
3669   int i;
3670   struct type *func_type = SYMBOL_TYPE (func);
3671
3672   if (SYMBOL_CLASS (func) == LOC_CONST
3673       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3674     return (n_actuals == 0);
3675   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3676     return 0;
3677
3678   if (TYPE_NFIELDS (func_type) != n_actuals)
3679     return 0;
3680
3681   for (i = 0; i < n_actuals; i += 1)
3682     {
3683       if (actuals[i] == NULL)
3684         return 0;
3685       else
3686         {
3687           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3688                                                                    i));
3689           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3690
3691           if (!ada_type_match (ftype, atype, 1))
3692             return 0;
3693         }
3694     }
3695   return 1;
3696 }
3697
3698 /* False iff function type FUNC_TYPE definitely does not produce a value
3699    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3700    FUNC_TYPE is not a valid function type with a non-null return type
3701    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3702
3703 static int
3704 return_match (struct type *func_type, struct type *context_type)
3705 {
3706   struct type *return_type;
3707
3708   if (func_type == NULL)
3709     return 1;
3710
3711   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3712     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3713   else
3714     return_type = get_base_type (func_type);
3715   if (return_type == NULL)
3716     return 1;
3717
3718   context_type = get_base_type (context_type);
3719
3720   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3721     return context_type == NULL || return_type == context_type;
3722   else if (context_type == NULL)
3723     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3724   else
3725     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3726 }
3727
3728
3729 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3730    function (if any) that matches the types of the NARGS arguments in
3731    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3732    that returns that type, then eliminate matches that don't.  If
3733    CONTEXT_TYPE is void and there is at least one match that does not
3734    return void, eliminate all matches that do.
3735
3736    Asks the user if there is more than one match remaining.  Returns -1
3737    if there is no such symbol or none is selected.  NAME is used
3738    solely for messages.  May re-arrange and modify SYMS in
3739    the process; the index returned is for the modified vector.  */
3740
3741 static int
3742 ada_resolve_function (struct block_symbol syms[],
3743                       int nsyms, struct value **args, int nargs,
3744                       const char *name, struct type *context_type,
3745                       int parse_completion)
3746 {
3747   int fallback;
3748   int k;
3749   int m;                        /* Number of hits */
3750
3751   m = 0;
3752   /* In the first pass of the loop, we only accept functions matching
3753      context_type.  If none are found, we add a second pass of the loop
3754      where every function is accepted.  */
3755   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3756     {
3757       for (k = 0; k < nsyms; k += 1)
3758         {
3759           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3760
3761           if (ada_args_match (syms[k].symbol, args, nargs)
3762               && (fallback || return_match (type, context_type)))
3763             {
3764               syms[m] = syms[k];
3765               m += 1;
3766             }
3767         }
3768     }
3769
3770   /* If we got multiple matches, ask the user which one to use.  Don't do this
3771      interactive thing during completion, though, as the purpose of the
3772      completion is providing a list of all possible matches.  Prompting the
3773      user to filter it down would be completely unexpected in this case.  */
3774   if (m == 0)
3775     return -1;
3776   else if (m > 1 && !parse_completion)
3777     {
3778       printf_filtered (_("Multiple matches for %s\n"), name);
3779       user_select_syms (syms, m, 1);
3780       return 0;
3781     }
3782   return 0;
3783 }
3784
3785 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3786    in a listing of choices during disambiguation (see sort_choices, below).
3787    The idea is that overloadings of a subprogram name from the
3788    same package should sort in their source order.  We settle for ordering
3789    such symbols by their trailing number (__N  or $N).  */
3790
3791 static int
3792 encoded_ordered_before (const char *N0, const char *N1)
3793 {
3794   if (N1 == NULL)
3795     return 0;
3796   else if (N0 == NULL)
3797     return 1;
3798   else
3799     {
3800       int k0, k1;
3801
3802       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3803         ;
3804       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3805         ;
3806       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3807           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3808         {
3809           int n0, n1;
3810
3811           n0 = k0;
3812           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3813             n0 -= 1;
3814           n1 = k1;
3815           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3816             n1 -= 1;
3817           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3818             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3819         }
3820       return (strcmp (N0, N1) < 0);
3821     }
3822 }
3823
3824 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3825    encoded names.  */
3826
3827 static void
3828 sort_choices (struct block_symbol syms[], int nsyms)
3829 {
3830   int i;
3831
3832   for (i = 1; i < nsyms; i += 1)
3833     {
3834       struct block_symbol sym = syms[i];
3835       int j;
3836
3837       for (j = i - 1; j >= 0; j -= 1)
3838         {
3839           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3840                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3841             break;
3842           syms[j + 1] = syms[j];
3843         }
3844       syms[j + 1] = sym;
3845     }
3846 }
3847
3848 /* Whether GDB should display formals and return types for functions in the
3849    overloads selection menu.  */
3850 static int print_signatures = 1;
3851
3852 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3853    all but functions, the signature is just the name of the symbol.  For
3854    functions, this is the name of the function, the list of types for formals
3855    and the return type (if any).  */
3856
3857 static void
3858 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3859                             const struct type_print_options *flags)
3860 {
3861   struct type *type = SYMBOL_TYPE (sym);
3862
3863   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3864   if (!print_signatures
3865       || type == NULL
3866       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3867     return;
3868
3869   if (TYPE_NFIELDS (type) > 0)
3870     {
3871       int i;
3872
3873       fprintf_filtered (stream, " (");
3874       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3875         {
3876           if (i > 0)
3877             fprintf_filtered (stream, "; ");
3878           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3879                           flags);
3880         }
3881       fprintf_filtered (stream, ")");
3882     }
3883   if (TYPE_TARGET_TYPE (type) != NULL
3884       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3885     {
3886       fprintf_filtered (stream, " return ");
3887       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3888     }
3889 }
3890
3891 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3892    by asking the user (if necessary), returning the number selected, 
3893    and setting the first elements of SYMS items.  Error if no symbols
3894    selected.  */
3895
3896 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3897    to be re-integrated one of these days.  */
3898
3899 int
3900 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3901 {
3902   int i;
3903   int *chosen = XALLOCAVEC (int , nsyms);
3904   int n_chosen;
3905   int first_choice = (max_results == 1) ? 1 : 2;
3906   const char *select_mode = multiple_symbols_select_mode ();
3907
3908   if (max_results < 1)
3909     error (_("Request to select 0 symbols!"));
3910   if (nsyms <= 1)
3911     return nsyms;
3912
3913   if (select_mode == multiple_symbols_cancel)
3914     error (_("\
3915 canceled because the command is ambiguous\n\
3916 See set/show multiple-symbol."));
3917
3918   /* If select_mode is "all", then return all possible symbols.
3919      Only do that if more than one symbol can be selected, of course.
3920      Otherwise, display the menu as usual.  */
3921   if (select_mode == multiple_symbols_all && max_results > 1)
3922     return nsyms;
3923
3924   printf_filtered (_("[0] cancel\n"));
3925   if (max_results > 1)
3926     printf_filtered (_("[1] all\n"));
3927
3928   sort_choices (syms, nsyms);
3929
3930   for (i = 0; i < nsyms; i += 1)
3931     {
3932       if (syms[i].symbol == NULL)
3933         continue;
3934
3935       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3936         {
3937           struct symtab_and_line sal =
3938             find_function_start_sal (syms[i].symbol, 1);
3939
3940           printf_filtered ("[%d] ", i + first_choice);
3941           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3942                                       &type_print_raw_options);
3943           if (sal.symtab == NULL)
3944             printf_filtered (_(" at <no source file available>:%d\n"),
3945                              sal.line);
3946           else
3947             printf_filtered (_(" at %s:%d\n"),
3948                              symtab_to_filename_for_display (sal.symtab),
3949                              sal.line);
3950           continue;
3951         }
3952       else
3953         {
3954           int is_enumeral =
3955             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3956              && SYMBOL_TYPE (syms[i].symbol) != NULL
3957              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3958           struct symtab *symtab = NULL;
3959
3960           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3961             symtab = symbol_symtab (syms[i].symbol);
3962
3963           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3964             {
3965               printf_filtered ("[%d] ", i + first_choice);
3966               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3967                                           &type_print_raw_options);
3968               printf_filtered (_(" at %s:%d\n"),
3969                                symtab_to_filename_for_display (symtab),
3970                                SYMBOL_LINE (syms[i].symbol));
3971             }
3972           else if (is_enumeral
3973                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3974             {
3975               printf_filtered (("[%d] "), i + first_choice);
3976               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3977                               gdb_stdout, -1, 0, &type_print_raw_options);
3978               printf_filtered (_("'(%s) (enumeral)\n"),
3979                                SYMBOL_PRINT_NAME (syms[i].symbol));
3980             }
3981           else
3982             {
3983               printf_filtered ("[%d] ", i + first_choice);
3984               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3985                                           &type_print_raw_options);
3986
3987               if (symtab != NULL)
3988                 printf_filtered (is_enumeral
3989                                  ? _(" in %s (enumeral)\n")
3990                                  : _(" at %s:?\n"),
3991                                  symtab_to_filename_for_display (symtab));
3992               else
3993                 printf_filtered (is_enumeral
3994                                  ? _(" (enumeral)\n")
3995                                  : _(" at ?\n"));
3996             }
3997         }
3998     }
3999
4000   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
4001                              "overload-choice");
4002
4003   for (i = 0; i < n_chosen; i += 1)
4004     syms[i] = syms[chosen[i]];
4005
4006   return n_chosen;
4007 }
4008
4009 /* Read and validate a set of numeric choices from the user in the
4010    range 0 .. N_CHOICES-1.  Place the results in increasing
4011    order in CHOICES[0 .. N-1], and return N.
4012
4013    The user types choices as a sequence of numbers on one line
4014    separated by blanks, encoding them as follows:
4015
4016      + A choice of 0 means to cancel the selection, throwing an error.
4017      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4018      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4019
4020    The user is not allowed to choose more than MAX_RESULTS values.
4021
4022    ANNOTATION_SUFFIX, if present, is used to annotate the input
4023    prompts (for use with the -f switch).  */
4024
4025 int
4026 get_selections (int *choices, int n_choices, int max_results,
4027                 int is_all_choice, const char *annotation_suffix)
4028 {
4029   char *args;
4030   const char *prompt;
4031   int n_chosen;
4032   int first_choice = is_all_choice ? 2 : 1;
4033
4034   prompt = getenv ("PS2");
4035   if (prompt == NULL)
4036     prompt = "> ";
4037
4038   args = command_line_input (prompt, annotation_suffix);
4039
4040   if (args == NULL)
4041     error_no_arg (_("one or more choice numbers"));
4042
4043   n_chosen = 0;
4044
4045   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4046      order, as given in args.  Choices are validated.  */
4047   while (1)
4048     {
4049       char *args2;
4050       int choice, j;
4051
4052       args = skip_spaces (args);
4053       if (*args == '\0' && n_chosen == 0)
4054         error_no_arg (_("one or more choice numbers"));
4055       else if (*args == '\0')
4056         break;
4057
4058       choice = strtol (args, &args2, 10);
4059       if (args == args2 || choice < 0
4060           || choice > n_choices + first_choice - 1)
4061         error (_("Argument must be choice number"));
4062       args = args2;
4063
4064       if (choice == 0)
4065         error (_("cancelled"));
4066
4067       if (choice < first_choice)
4068         {
4069           n_chosen = n_choices;
4070           for (j = 0; j < n_choices; j += 1)
4071             choices[j] = j;
4072           break;
4073         }
4074       choice -= first_choice;
4075
4076       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4077         {
4078         }
4079
4080       if (j < 0 || choice != choices[j])
4081         {
4082           int k;
4083
4084           for (k = n_chosen - 1; k > j; k -= 1)
4085             choices[k + 1] = choices[k];
4086           choices[j + 1] = choice;
4087           n_chosen += 1;
4088         }
4089     }
4090
4091   if (n_chosen > max_results)
4092     error (_("Select no more than %d of the above"), max_results);
4093
4094   return n_chosen;
4095 }
4096
4097 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4098    on the function identified by SYM and BLOCK, and taking NARGS
4099    arguments.  Update *EXPP as needed to hold more space.  */
4100
4101 static void
4102 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4103                             int oplen, struct symbol *sym,
4104                             const struct block *block)
4105 {
4106   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4107      symbol, -oplen for operator being replaced).  */
4108   struct expression *newexp = (struct expression *)
4109     xzalloc (sizeof (struct expression)
4110              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4111   struct expression *exp = expp->get ();
4112
4113   newexp->nelts = exp->nelts + 7 - oplen;
4114   newexp->language_defn = exp->language_defn;
4115   newexp->gdbarch = exp->gdbarch;
4116   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4117   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4118           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4119
4120   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4121   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4122
4123   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4124   newexp->elts[pc + 4].block = block;
4125   newexp->elts[pc + 5].symbol = sym;
4126
4127   expp->reset (newexp);
4128 }
4129
4130 /* Type-class predicates */
4131
4132 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4133    or FLOAT).  */
4134
4135 static int
4136 numeric_type_p (struct type *type)
4137 {
4138   if (type == NULL)
4139     return 0;
4140   else
4141     {
4142       switch (TYPE_CODE (type))
4143         {
4144         case TYPE_CODE_INT:
4145         case TYPE_CODE_FLT:
4146           return 1;
4147         case TYPE_CODE_RANGE:
4148           return (type == TYPE_TARGET_TYPE (type)
4149                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4150         default:
4151           return 0;
4152         }
4153     }
4154 }
4155
4156 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4157
4158 static int
4159 integer_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           return 1;
4169         case TYPE_CODE_RANGE:
4170           return (type == TYPE_TARGET_TYPE (type)
4171                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4172         default:
4173           return 0;
4174         }
4175     }
4176 }
4177
4178 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4179
4180 static int
4181 scalar_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_FLT:
4193           return 1;
4194         default:
4195           return 0;
4196         }
4197     }
4198 }
4199
4200 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4201
4202 static int
4203 discrete_type_p (struct type *type)
4204 {
4205   if (type == NULL)
4206     return 0;
4207   else
4208     {
4209       switch (TYPE_CODE (type))
4210         {
4211         case TYPE_CODE_INT:
4212         case TYPE_CODE_RANGE:
4213         case TYPE_CODE_ENUM:
4214         case TYPE_CODE_BOOL:
4215           return 1;
4216         default:
4217           return 0;
4218         }
4219     }
4220 }
4221
4222 /* Returns non-zero if OP with operands in the vector ARGS could be
4223    a user-defined function.  Errs on the side of pre-defined operators
4224    (i.e., result 0).  */
4225
4226 static int
4227 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4228 {
4229   struct type *type0 =
4230     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4231   struct type *type1 =
4232     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4233
4234   if (type0 == NULL)
4235     return 0;
4236
4237   switch (op)
4238     {
4239     default:
4240       return 0;
4241
4242     case BINOP_ADD:
4243     case BINOP_SUB:
4244     case BINOP_MUL:
4245     case BINOP_DIV:
4246       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4247
4248     case BINOP_REM:
4249     case BINOP_MOD:
4250     case BINOP_BITWISE_AND:
4251     case BINOP_BITWISE_IOR:
4252     case BINOP_BITWISE_XOR:
4253       return (!(integer_type_p (type0) && integer_type_p (type1)));
4254
4255     case BINOP_EQUAL:
4256     case BINOP_NOTEQUAL:
4257     case BINOP_LESS:
4258     case BINOP_GTR:
4259     case BINOP_LEQ:
4260     case BINOP_GEQ:
4261       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4262
4263     case BINOP_CONCAT:
4264       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4265
4266     case BINOP_EXP:
4267       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4268
4269     case UNOP_NEG:
4270     case UNOP_PLUS:
4271     case UNOP_LOGICAL_NOT:
4272     case UNOP_ABS:
4273       return (!numeric_type_p (type0));
4274
4275     }
4276 }
4277 \f
4278                                 /* Renaming */
4279
4280 /* NOTES: 
4281
4282    1. In the following, we assume that a renaming type's name may
4283       have an ___XD suffix.  It would be nice if this went away at some
4284       point.
4285    2. We handle both the (old) purely type-based representation of 
4286       renamings and the (new) variable-based encoding.  At some point,
4287       it is devoutly to be hoped that the former goes away 
4288       (FIXME: hilfinger-2007-07-09).
4289    3. Subprogram renamings are not implemented, although the XRS
4290       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4291
4292 /* If SYM encodes a renaming, 
4293
4294        <renaming> renames <renamed entity>,
4295
4296    sets *LEN to the length of the renamed entity's name,
4297    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4298    the string describing the subcomponent selected from the renamed
4299    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4300    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4301    are undefined).  Otherwise, returns a value indicating the category
4302    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4303    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4304    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4305    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4306    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4307    may be NULL, in which case they are not assigned.
4308
4309    [Currently, however, GCC does not generate subprogram renamings.]  */
4310
4311 enum ada_renaming_category
4312 ada_parse_renaming (struct symbol *sym,
4313                     const char **renamed_entity, int *len, 
4314                     const char **renaming_expr)
4315 {
4316   enum ada_renaming_category kind;
4317   const char *info;
4318   const char *suffix;
4319
4320   if (sym == NULL)
4321     return ADA_NOT_RENAMING;
4322   switch (SYMBOL_CLASS (sym)) 
4323     {
4324     default:
4325       return ADA_NOT_RENAMING;
4326     case LOC_TYPEDEF:
4327       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4328                                        renamed_entity, len, renaming_expr);
4329     case LOC_LOCAL:
4330     case LOC_STATIC:
4331     case LOC_COMPUTED:
4332     case LOC_OPTIMIZED_OUT:
4333       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4334       if (info == NULL)
4335         return ADA_NOT_RENAMING;
4336       switch (info[5])
4337         {
4338         case '_':
4339           kind = ADA_OBJECT_RENAMING;
4340           info += 6;
4341           break;
4342         case 'E':
4343           kind = ADA_EXCEPTION_RENAMING;
4344           info += 7;
4345           break;
4346         case 'P':
4347           kind = ADA_PACKAGE_RENAMING;
4348           info += 7;
4349           break;
4350         case 'S':
4351           kind = ADA_SUBPROGRAM_RENAMING;
4352           info += 7;
4353           break;
4354         default:
4355           return ADA_NOT_RENAMING;
4356         }
4357     }
4358
4359   if (renamed_entity != NULL)
4360     *renamed_entity = info;
4361   suffix = strstr (info, "___XE");
4362   if (suffix == NULL || suffix == info)
4363     return ADA_NOT_RENAMING;
4364   if (len != NULL)
4365     *len = strlen (info) - strlen (suffix);
4366   suffix += 5;
4367   if (renaming_expr != NULL)
4368     *renaming_expr = suffix;
4369   return kind;
4370 }
4371
4372 /* Assuming TYPE encodes a renaming according to the old encoding in
4373    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4374    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4375    ADA_NOT_RENAMING otherwise.  */
4376 static enum ada_renaming_category
4377 parse_old_style_renaming (struct type *type,
4378                           const char **renamed_entity, int *len, 
4379                           const char **renaming_expr)
4380 {
4381   enum ada_renaming_category kind;
4382   const char *name;
4383   const char *info;
4384   const char *suffix;
4385
4386   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4387       || TYPE_NFIELDS (type) != 1)
4388     return ADA_NOT_RENAMING;
4389
4390   name = TYPE_NAME (type);
4391   if (name == NULL)
4392     return ADA_NOT_RENAMING;
4393   
4394   name = strstr (name, "___XR");
4395   if (name == NULL)
4396     return ADA_NOT_RENAMING;
4397   switch (name[5])
4398     {
4399     case '\0':
4400     case '_':
4401       kind = ADA_OBJECT_RENAMING;
4402       break;
4403     case 'E':
4404       kind = ADA_EXCEPTION_RENAMING;
4405       break;
4406     case 'P':
4407       kind = ADA_PACKAGE_RENAMING;
4408       break;
4409     case 'S':
4410       kind = ADA_SUBPROGRAM_RENAMING;
4411       break;
4412     default:
4413       return ADA_NOT_RENAMING;
4414     }
4415
4416   info = TYPE_FIELD_NAME (type, 0);
4417   if (info == NULL)
4418     return ADA_NOT_RENAMING;
4419   if (renamed_entity != NULL)
4420     *renamed_entity = info;
4421   suffix = strstr (info, "___XE");
4422   if (renaming_expr != NULL)
4423     *renaming_expr = suffix + 5;
4424   if (suffix == NULL || suffix == info)
4425     return ADA_NOT_RENAMING;
4426   if (len != NULL)
4427     *len = suffix - info;
4428   return kind;
4429 }
4430
4431 /* Compute the value of the given RENAMING_SYM, which is expected to
4432    be a symbol encoding a renaming expression.  BLOCK is the block
4433    used to evaluate the renaming.  */
4434
4435 static struct value *
4436 ada_read_renaming_var_value (struct symbol *renaming_sym,
4437                              const struct block *block)
4438 {
4439   const char *sym_name;
4440
4441   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4442   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4443   return evaluate_expression (expr.get ());
4444 }
4445 \f
4446
4447                                 /* Evaluation: Function Calls */
4448
4449 /* Return an lvalue containing the value VAL.  This is the identity on
4450    lvalues, and otherwise has the side-effect of allocating memory
4451    in the inferior where a copy of the value contents is copied.  */
4452
4453 static struct value *
4454 ensure_lval (struct value *val)
4455 {
4456   if (VALUE_LVAL (val) == not_lval
4457       || VALUE_LVAL (val) == lval_internalvar)
4458     {
4459       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4460       const CORE_ADDR addr =
4461         value_as_long (value_allocate_space_in_inferior (len));
4462
4463       VALUE_LVAL (val) = lval_memory;
4464       set_value_address (val, addr);
4465       write_memory (addr, value_contents (val), len);
4466     }
4467
4468   return val;
4469 }
4470
4471 /* Return the value ACTUAL, converted to be an appropriate value for a
4472    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4473    allocating any necessary descriptors (fat pointers), or copies of
4474    values not residing in memory, updating it as needed.  */
4475
4476 struct value *
4477 ada_convert_actual (struct value *actual, struct type *formal_type0)
4478 {
4479   struct type *actual_type = ada_check_typedef (value_type (actual));
4480   struct type *formal_type = ada_check_typedef (formal_type0);
4481   struct type *formal_target =
4482     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4483     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4484   struct type *actual_target =
4485     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4486     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4487
4488   if (ada_is_array_descriptor_type (formal_target)
4489       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4490     return make_array_descriptor (formal_type, actual);
4491   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4492            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4493     {
4494       struct value *result;
4495
4496       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4497           && ada_is_array_descriptor_type (actual_target))
4498         result = desc_data (actual);
4499       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4500         {
4501           if (VALUE_LVAL (actual) != lval_memory)
4502             {
4503               struct value *val;
4504
4505               actual_type = ada_check_typedef (value_type (actual));
4506               val = allocate_value (actual_type);
4507               memcpy ((char *) value_contents_raw (val),
4508                       (char *) value_contents (actual),
4509                       TYPE_LENGTH (actual_type));
4510               actual = ensure_lval (val);
4511             }
4512           result = value_addr (actual);
4513         }
4514       else
4515         return actual;
4516       return value_cast_pointers (formal_type, result, 0);
4517     }
4518   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4519     return ada_value_ind (actual);
4520   else if (ada_is_aligner_type (formal_type))
4521     {
4522       /* We need to turn this parameter into an aligner type
4523          as well.  */
4524       struct value *aligner = allocate_value (formal_type);
4525       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4526
4527       value_assign_to_component (aligner, component, actual);
4528       return aligner;
4529     }
4530
4531   return actual;
4532 }
4533
4534 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4535    type TYPE.  This is usually an inefficient no-op except on some targets
4536    (such as AVR) where the representation of a pointer and an address
4537    differs.  */
4538
4539 static CORE_ADDR
4540 value_pointer (struct value *value, struct type *type)
4541 {
4542   struct gdbarch *gdbarch = get_type_arch (type);
4543   unsigned len = TYPE_LENGTH (type);
4544   gdb_byte *buf = (gdb_byte *) alloca (len);
4545   CORE_ADDR addr;
4546
4547   addr = value_address (value);
4548   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4549   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4550   return addr;
4551 }
4552
4553
4554 /* Push a descriptor of type TYPE for array value ARR on the stack at
4555    *SP, updating *SP to reflect the new descriptor.  Return either
4556    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4557    to-descriptor type rather than a descriptor type), a struct value *
4558    representing a pointer to this descriptor.  */
4559
4560 static struct value *
4561 make_array_descriptor (struct type *type, struct value *arr)
4562 {
4563   struct type *bounds_type = desc_bounds_type (type);
4564   struct type *desc_type = desc_base_type (type);
4565   struct value *descriptor = allocate_value (desc_type);
4566   struct value *bounds = allocate_value (bounds_type);
4567   int i;
4568
4569   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4570        i > 0; i -= 1)
4571     {
4572       modify_field (value_type (bounds), value_contents_writeable (bounds),
4573                     ada_array_bound (arr, i, 0),
4574                     desc_bound_bitpos (bounds_type, i, 0),
4575                     desc_bound_bitsize (bounds_type, i, 0));
4576       modify_field (value_type (bounds), value_contents_writeable (bounds),
4577                     ada_array_bound (arr, i, 1),
4578                     desc_bound_bitpos (bounds_type, i, 1),
4579                     desc_bound_bitsize (bounds_type, i, 1));
4580     }
4581
4582   bounds = ensure_lval (bounds);
4583
4584   modify_field (value_type (descriptor),
4585                 value_contents_writeable (descriptor),
4586                 value_pointer (ensure_lval (arr),
4587                                TYPE_FIELD_TYPE (desc_type, 0)),
4588                 fat_pntr_data_bitpos (desc_type),
4589                 fat_pntr_data_bitsize (desc_type));
4590
4591   modify_field (value_type (descriptor),
4592                 value_contents_writeable (descriptor),
4593                 value_pointer (bounds,
4594                                TYPE_FIELD_TYPE (desc_type, 1)),
4595                 fat_pntr_bounds_bitpos (desc_type),
4596                 fat_pntr_bounds_bitsize (desc_type));
4597
4598   descriptor = ensure_lval (descriptor);
4599
4600   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4601     return value_addr (descriptor);
4602   else
4603     return descriptor;
4604 }
4605 \f
4606                                 /* Symbol Cache Module */
4607
4608 /* Performance measurements made as of 2010-01-15 indicate that
4609    this cache does bring some noticeable improvements.  Depending
4610    on the type of entity being printed, the cache can make it as much
4611    as an order of magnitude faster than without it.
4612
4613    The descriptive type DWARF extension has significantly reduced
4614    the need for this cache, at least when DWARF is being used.  However,
4615    even in this case, some expensive name-based symbol searches are still
4616    sometimes necessary - to find an XVZ variable, mostly.  */
4617
4618 /* Initialize the contents of SYM_CACHE.  */
4619
4620 static void
4621 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4622 {
4623   obstack_init (&sym_cache->cache_space);
4624   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4625 }
4626
4627 /* Free the memory used by SYM_CACHE.  */
4628
4629 static void
4630 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4631 {
4632   obstack_free (&sym_cache->cache_space, NULL);
4633   xfree (sym_cache);
4634 }
4635
4636 /* Return the symbol cache associated to the given program space PSPACE.
4637    If not allocated for this PSPACE yet, allocate and initialize one.  */
4638
4639 static struct ada_symbol_cache *
4640 ada_get_symbol_cache (struct program_space *pspace)
4641 {
4642   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4643
4644   if (pspace_data->sym_cache == NULL)
4645     {
4646       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4647       ada_init_symbol_cache (pspace_data->sym_cache);
4648     }
4649
4650   return pspace_data->sym_cache;
4651 }
4652
4653 /* Clear all entries from the symbol cache.  */
4654
4655 static void
4656 ada_clear_symbol_cache (void)
4657 {
4658   struct ada_symbol_cache *sym_cache
4659     = ada_get_symbol_cache (current_program_space);
4660
4661   obstack_free (&sym_cache->cache_space, NULL);
4662   ada_init_symbol_cache (sym_cache);
4663 }
4664
4665 /* Search our cache for an entry matching NAME and DOMAIN.
4666    Return it if found, or NULL otherwise.  */
4667
4668 static struct cache_entry **
4669 find_entry (const char *name, domain_enum domain)
4670 {
4671   struct ada_symbol_cache *sym_cache
4672     = ada_get_symbol_cache (current_program_space);
4673   int h = msymbol_hash (name) % HASH_SIZE;
4674   struct cache_entry **e;
4675
4676   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4677     {
4678       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4679         return e;
4680     }
4681   return NULL;
4682 }
4683
4684 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4685    Return 1 if found, 0 otherwise.
4686
4687    If an entry was found and SYM is not NULL, set *SYM to the entry's
4688    SYM.  Same principle for BLOCK if not NULL.  */
4689
4690 static int
4691 lookup_cached_symbol (const char *name, domain_enum domain,
4692                       struct symbol **sym, const struct block **block)
4693 {
4694   struct cache_entry **e = find_entry (name, domain);
4695
4696   if (e == NULL)
4697     return 0;
4698   if (sym != NULL)
4699     *sym = (*e)->sym;
4700   if (block != NULL)
4701     *block = (*e)->block;
4702   return 1;
4703 }
4704
4705 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4706    in domain DOMAIN, save this result in our symbol cache.  */
4707
4708 static void
4709 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4710               const struct block *block)
4711 {
4712   struct ada_symbol_cache *sym_cache
4713     = ada_get_symbol_cache (current_program_space);
4714   int h;
4715   char *copy;
4716   struct cache_entry *e;
4717
4718   /* Symbols for builtin types don't have a block.
4719      For now don't cache such symbols.  */
4720   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4721     return;
4722
4723   /* If the symbol is a local symbol, then do not cache it, as a search
4724      for that symbol depends on the context.  To determine whether
4725      the symbol is local or not, we check the block where we found it
4726      against the global and static blocks of its associated symtab.  */
4727   if (sym
4728       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4729                             GLOBAL_BLOCK) != block
4730       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4731                             STATIC_BLOCK) != block)
4732     return;
4733
4734   h = msymbol_hash (name) % HASH_SIZE;
4735   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4736   e->next = sym_cache->root[h];
4737   sym_cache->root[h] = e;
4738   e->name = copy
4739     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4740   strcpy (copy, name);
4741   e->sym = sym;
4742   e->domain = domain;
4743   e->block = block;
4744 }
4745 \f
4746                                 /* Symbol Lookup */
4747
4748 /* Return the symbol name match type that should be used used when
4749    searching for all symbols matching LOOKUP_NAME.
4750
4751    LOOKUP_NAME is expected to be a symbol name after transformation
4752    for Ada lookups.  */
4753
4754 static symbol_name_match_type
4755 name_match_type_from_name (const char *lookup_name)
4756 {
4757   return (strstr (lookup_name, "__") == NULL
4758           ? symbol_name_match_type::WILD
4759           : symbol_name_match_type::FULL);
4760 }
4761
4762 /* Return the result of a standard (literal, C-like) lookup of NAME in
4763    given DOMAIN, visible from lexical block BLOCK.  */
4764
4765 static struct symbol *
4766 standard_lookup (const char *name, const struct block *block,
4767                  domain_enum domain)
4768 {
4769   /* Initialize it just to avoid a GCC false warning.  */
4770   struct block_symbol sym = {};
4771
4772   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4773     return sym.symbol;
4774   ada_lookup_encoded_symbol (name, block, domain, &sym);
4775   cache_symbol (name, domain, sym.symbol, sym.block);
4776   return sym.symbol;
4777 }
4778
4779
4780 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4781    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4782    since they contend in overloading in the same way.  */
4783 static int
4784 is_nonfunction (struct block_symbol syms[], int n)
4785 {
4786   int i;
4787
4788   for (i = 0; i < n; i += 1)
4789     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4790         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4791             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4792       return 1;
4793
4794   return 0;
4795 }
4796
4797 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4798    struct types.  Otherwise, they may not.  */
4799
4800 static int
4801 equiv_types (struct type *type0, struct type *type1)
4802 {
4803   if (type0 == type1)
4804     return 1;
4805   if (type0 == NULL || type1 == NULL
4806       || TYPE_CODE (type0) != TYPE_CODE (type1))
4807     return 0;
4808   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4809        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4810       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4811       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4812     return 1;
4813
4814   return 0;
4815 }
4816
4817 /* True iff SYM0 represents the same entity as SYM1, or one that is
4818    no more defined than that of SYM1.  */
4819
4820 static int
4821 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4822 {
4823   if (sym0 == sym1)
4824     return 1;
4825   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4826       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4827     return 0;
4828
4829   switch (SYMBOL_CLASS (sym0))
4830     {
4831     case LOC_UNDEF:
4832       return 1;
4833     case LOC_TYPEDEF:
4834       {
4835         struct type *type0 = SYMBOL_TYPE (sym0);
4836         struct type *type1 = SYMBOL_TYPE (sym1);
4837         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4838         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4839         int len0 = strlen (name0);
4840
4841         return
4842           TYPE_CODE (type0) == TYPE_CODE (type1)
4843           && (equiv_types (type0, type1)
4844               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4845                   && startswith (name1 + len0, "___XV")));
4846       }
4847     case LOC_CONST:
4848       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4849         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4850     default:
4851       return 0;
4852     }
4853 }
4854
4855 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4856    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4857
4858 static void
4859 add_defn_to_vec (struct obstack *obstackp,
4860                  struct symbol *sym,
4861                  const struct block *block)
4862 {
4863   int i;
4864   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4865
4866   /* Do not try to complete stub types, as the debugger is probably
4867      already scanning all symbols matching a certain name at the
4868      time when this function is called.  Trying to replace the stub
4869      type by its associated full type will cause us to restart a scan
4870      which may lead to an infinite recursion.  Instead, the client
4871      collecting the matching symbols will end up collecting several
4872      matches, with at least one of them complete.  It can then filter
4873      out the stub ones if needed.  */
4874
4875   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4876     {
4877       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4878         return;
4879       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4880         {
4881           prevDefns[i].symbol = sym;
4882           prevDefns[i].block = block;
4883           return;
4884         }
4885     }
4886
4887   {
4888     struct block_symbol info;
4889
4890     info.symbol = sym;
4891     info.block = block;
4892     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4893   }
4894 }
4895
4896 /* Number of block_symbol structures currently collected in current vector in
4897    OBSTACKP.  */
4898
4899 static int
4900 num_defns_collected (struct obstack *obstackp)
4901 {
4902   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4903 }
4904
4905 /* Vector of block_symbol structures currently collected in current vector in
4906    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4907
4908 static struct block_symbol *
4909 defns_collected (struct obstack *obstackp, int finish)
4910 {
4911   if (finish)
4912     return (struct block_symbol *) obstack_finish (obstackp);
4913   else
4914     return (struct block_symbol *) obstack_base (obstackp);
4915 }
4916
4917 /* Return a bound minimal symbol matching NAME according to Ada
4918    decoding rules.  Returns an invalid symbol if there is no such
4919    minimal symbol.  Names prefixed with "standard__" are handled
4920    specially: "standard__" is first stripped off, and only static and
4921    global symbols are searched.  */
4922
4923 struct bound_minimal_symbol
4924 ada_lookup_simple_minsym (const char *name)
4925 {
4926   struct bound_minimal_symbol result;
4927
4928   memset (&result, 0, sizeof (result));
4929
4930   symbol_name_match_type match_type = name_match_type_from_name (name);
4931   lookup_name_info lookup_name (name, match_type);
4932
4933   symbol_name_matcher_ftype *match_name
4934     = ada_get_symbol_name_matcher (lookup_name);
4935
4936   for (objfile *objfile : current_program_space->objfiles ())
4937     {
4938       for (minimal_symbol *msymbol : objfile->msymbols ())
4939         {
4940           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4941               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4942             {
4943               result.minsym = msymbol;
4944               result.objfile = objfile;
4945               break;
4946             }
4947         }
4948     }
4949
4950   return result;
4951 }
4952
4953 /* Return all the bound minimal symbols matching NAME according to Ada
4954    decoding rules.  Returns an empty vector if there is no such
4955    minimal symbol.  Names prefixed with "standard__" are handled
4956    specially: "standard__" is first stripped off, and only static and
4957    global symbols are searched.  */
4958
4959 static std::vector<struct bound_minimal_symbol>
4960 ada_lookup_simple_minsyms (const char *name)
4961 {
4962   std::vector<struct bound_minimal_symbol> result;
4963
4964   symbol_name_match_type match_type = name_match_type_from_name (name);
4965   lookup_name_info lookup_name (name, match_type);
4966
4967   symbol_name_matcher_ftype *match_name
4968     = ada_get_symbol_name_matcher (lookup_name);
4969
4970   for (objfile *objfile : current_program_space->objfiles ())
4971     {
4972       for (minimal_symbol *msymbol : objfile->msymbols ())
4973         {
4974           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4975               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4976             result.push_back ({msymbol, objfile});
4977         }
4978     }
4979
4980   return result;
4981 }
4982
4983 /* For all subprograms that statically enclose the subprogram of the
4984    selected frame, add symbols matching identifier NAME in DOMAIN
4985    and their blocks to the list of data in OBSTACKP, as for
4986    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4987    with a wildcard prefix.  */
4988
4989 static void
4990 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4991                                   const lookup_name_info &lookup_name,
4992                                   domain_enum domain)
4993 {
4994 }
4995
4996 /* True if TYPE is definitely an artificial type supplied to a symbol
4997    for which no debugging information was given in the symbol file.  */
4998
4999 static int
5000 is_nondebugging_type (struct type *type)
5001 {
5002   const char *name = ada_type_name (type);
5003
5004   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
5005 }
5006
5007 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
5008    that are deemed "identical" for practical purposes.
5009
5010    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
5011    types and that their number of enumerals is identical (in other
5012    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
5013
5014 static int
5015 ada_identical_enum_types_p (struct type *type1, struct type *type2)
5016 {
5017   int i;
5018
5019   /* The heuristic we use here is fairly conservative.  We consider
5020      that 2 enumerate types are identical if they have the same
5021      number of enumerals and that all enumerals have the same
5022      underlying value and name.  */
5023
5024   /* All enums in the type should have an identical underlying value.  */
5025   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5026     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
5027       return 0;
5028
5029   /* All enumerals should also have the same name (modulo any numerical
5030      suffix).  */
5031   for (i = 0; i < TYPE_NFIELDS (type1); i++)
5032     {
5033       const char *name_1 = TYPE_FIELD_NAME (type1, i);
5034       const char *name_2 = TYPE_FIELD_NAME (type2, i);
5035       int len_1 = strlen (name_1);
5036       int len_2 = strlen (name_2);
5037
5038       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5039       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5040       if (len_1 != len_2
5041           || strncmp (TYPE_FIELD_NAME (type1, i),
5042                       TYPE_FIELD_NAME (type2, i),
5043                       len_1) != 0)
5044         return 0;
5045     }
5046
5047   return 1;
5048 }
5049
5050 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5051    that are deemed "identical" for practical purposes.  Sometimes,
5052    enumerals are not strictly identical, but their types are so similar
5053    that they can be considered identical.
5054
5055    For instance, consider the following code:
5056
5057       type Color is (Black, Red, Green, Blue, White);
5058       type RGB_Color is new Color range Red .. Blue;
5059
5060    Type RGB_Color is a subrange of an implicit type which is a copy
5061    of type Color. If we call that implicit type RGB_ColorB ("B" is
5062    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5063    As a result, when an expression references any of the enumeral
5064    by name (Eg. "print green"), the expression is technically
5065    ambiguous and the user should be asked to disambiguate. But
5066    doing so would only hinder the user, since it wouldn't matter
5067    what choice he makes, the outcome would always be the same.
5068    So, for practical purposes, we consider them as the same.  */
5069
5070 static int
5071 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5072 {
5073   int i;
5074
5075   /* Before performing a thorough comparison check of each type,
5076      we perform a series of inexpensive checks.  We expect that these
5077      checks will quickly fail in the vast majority of cases, and thus
5078      help prevent the unnecessary use of a more expensive comparison.
5079      Said comparison also expects us to make some of these checks
5080      (see ada_identical_enum_types_p).  */
5081
5082   /* Quick check: All symbols should have an enum type.  */
5083   for (i = 0; i < syms.size (); i++)
5084     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5085       return 0;
5086
5087   /* Quick check: They should all have the same value.  */
5088   for (i = 1; i < syms.size (); i++)
5089     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5090       return 0;
5091
5092   /* Quick check: They should all have the same number of enumerals.  */
5093   for (i = 1; i < syms.size (); i++)
5094     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5095         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5096       return 0;
5097
5098   /* All the sanity checks passed, so we might have a set of
5099      identical enumeration types.  Perform a more complete
5100      comparison of the type of each symbol.  */
5101   for (i = 1; i < syms.size (); i++)
5102     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5103                                      SYMBOL_TYPE (syms[0].symbol)))
5104       return 0;
5105
5106   return 1;
5107 }
5108
5109 /* Remove any non-debugging symbols in SYMS that definitely
5110    duplicate other symbols in the list (The only case I know of where
5111    this happens is when object files containing stabs-in-ecoff are
5112    linked with files containing ordinary ecoff debugging symbols (or no
5113    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5114    Returns the number of items in the modified list.  */
5115
5116 static int
5117 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5118 {
5119   int i, j;
5120
5121   /* We should never be called with less than 2 symbols, as there
5122      cannot be any extra symbol in that case.  But it's easy to
5123      handle, since we have nothing to do in that case.  */
5124   if (syms->size () < 2)
5125     return syms->size ();
5126
5127   i = 0;
5128   while (i < syms->size ())
5129     {
5130       int remove_p = 0;
5131
5132       /* If two symbols have the same name and one of them is a stub type,
5133          the get rid of the stub.  */
5134
5135       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5136           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5137         {
5138           for (j = 0; j < syms->size (); j++)
5139             {
5140               if (j != i
5141                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5142                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5143                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5144                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5145                 remove_p = 1;
5146             }
5147         }
5148
5149       /* Two symbols with the same name, same class and same address
5150          should be identical.  */
5151
5152       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5153           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5154           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5155         {
5156           for (j = 0; j < syms->size (); j += 1)
5157             {
5158               if (i != j
5159                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5160                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5161                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5162                   && SYMBOL_CLASS ((*syms)[i].symbol)
5163                        == SYMBOL_CLASS ((*syms)[j].symbol)
5164                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5165                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5166                 remove_p = 1;
5167             }
5168         }
5169       
5170       if (remove_p)
5171         syms->erase (syms->begin () + i);
5172
5173       i += 1;
5174     }
5175
5176   /* If all the remaining symbols are identical enumerals, then
5177      just keep the first one and discard the rest.
5178
5179      Unlike what we did previously, we do not discard any entry
5180      unless they are ALL identical.  This is because the symbol
5181      comparison is not a strict comparison, but rather a practical
5182      comparison.  If all symbols are considered identical, then
5183      we can just go ahead and use the first one and discard the rest.
5184      But if we cannot reduce the list to a single element, we have
5185      to ask the user to disambiguate anyways.  And if we have to
5186      present a multiple-choice menu, it's less confusing if the list
5187      isn't missing some choices that were identical and yet distinct.  */
5188   if (symbols_are_identical_enums (*syms))
5189     syms->resize (1);
5190
5191   return syms->size ();
5192 }
5193
5194 /* Given a type that corresponds to a renaming entity, use the type name
5195    to extract the scope (package name or function name, fully qualified,
5196    and following the GNAT encoding convention) where this renaming has been
5197    defined.  */
5198
5199 static std::string
5200 xget_renaming_scope (struct type *renaming_type)
5201 {
5202   /* The renaming types adhere to the following convention:
5203      <scope>__<rename>___<XR extension>.
5204      So, to extract the scope, we search for the "___XR" extension,
5205      and then backtrack until we find the first "__".  */
5206
5207   const char *name = TYPE_NAME (renaming_type);
5208   const char *suffix = strstr (name, "___XR");
5209   const char *last;
5210
5211   /* Now, backtrack a bit until we find the first "__".  Start looking
5212      at suffix - 3, as the <rename> part is at least one character long.  */
5213
5214   for (last = suffix - 3; last > name; last--)
5215     if (last[0] == '_' && last[1] == '_')
5216       break;
5217
5218   /* Make a copy of scope and return it.  */
5219   return std::string (name, last);
5220 }
5221
5222 /* Return nonzero if NAME corresponds to a package name.  */
5223
5224 static int
5225 is_package_name (const char *name)
5226 {
5227   /* Here, We take advantage of the fact that no symbols are generated
5228      for packages, while symbols are generated for each function.
5229      So the condition for NAME represent a package becomes equivalent
5230      to NAME not existing in our list of symbols.  There is only one
5231      small complication with library-level functions (see below).  */
5232
5233   /* If it is a function that has not been defined at library level,
5234      then we should be able to look it up in the symbols.  */
5235   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5236     return 0;
5237
5238   /* Library-level function names start with "_ada_".  See if function
5239      "_ada_" followed by NAME can be found.  */
5240
5241   /* Do a quick check that NAME does not contain "__", since library-level
5242      functions names cannot contain "__" in them.  */
5243   if (strstr (name, "__") != NULL)
5244     return 0;
5245
5246   std::string fun_name = string_printf ("_ada_%s", name);
5247
5248   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5249 }
5250
5251 /* Return nonzero if SYM corresponds to a renaming entity that is
5252    not visible from FUNCTION_NAME.  */
5253
5254 static int
5255 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5256 {
5257   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5258     return 0;
5259
5260   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5261
5262   /* If the rename has been defined in a package, then it is visible.  */
5263   if (is_package_name (scope.c_str ()))
5264     return 0;
5265
5266   /* Check that the rename is in the current function scope by checking
5267      that its name starts with SCOPE.  */
5268
5269   /* If the function name starts with "_ada_", it means that it is
5270      a library-level function.  Strip this prefix before doing the
5271      comparison, as the encoding for the renaming does not contain
5272      this prefix.  */
5273   if (startswith (function_name, "_ada_"))
5274     function_name += 5;
5275
5276   return !startswith (function_name, scope.c_str ());
5277 }
5278
5279 /* Remove entries from SYMS that corresponds to a renaming entity that
5280    is not visible from the function associated with CURRENT_BLOCK or
5281    that is superfluous due to the presence of more specific renaming
5282    information.  Places surviving symbols in the initial entries of
5283    SYMS and returns the number of surviving symbols.
5284    
5285    Rationale:
5286    First, in cases where an object renaming is implemented as a
5287    reference variable, GNAT may produce both the actual reference
5288    variable and the renaming encoding.  In this case, we discard the
5289    latter.
5290
5291    Second, GNAT emits a type following a specified encoding for each renaming
5292    entity.  Unfortunately, STABS currently does not support the definition
5293    of types that are local to a given lexical block, so all renamings types
5294    are emitted at library level.  As a consequence, if an application
5295    contains two renaming entities using the same name, and a user tries to
5296    print the value of one of these entities, the result of the ada symbol
5297    lookup will also contain the wrong renaming type.
5298
5299    This function partially covers for this limitation by attempting to
5300    remove from the SYMS list renaming symbols that should be visible
5301    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5302    method with the current information available.  The implementation
5303    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5304    
5305       - When the user tries to print a rename in a function while there
5306         is another rename entity defined in a package:  Normally, the
5307         rename in the function has precedence over the rename in the
5308         package, so the latter should be removed from the list.  This is
5309         currently not the case.
5310         
5311       - This function will incorrectly remove valid renames if
5312         the CURRENT_BLOCK corresponds to a function which symbol name
5313         has been changed by an "Export" pragma.  As a consequence,
5314         the user will be unable to print such rename entities.  */
5315
5316 static int
5317 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5318                              const struct block *current_block)
5319 {
5320   struct symbol *current_function;
5321   const char *current_function_name;
5322   int i;
5323   int is_new_style_renaming;
5324
5325   /* If there is both a renaming foo___XR... encoded as a variable and
5326      a simple variable foo in the same block, discard the latter.
5327      First, zero out such symbols, then compress.  */
5328   is_new_style_renaming = 0;
5329   for (i = 0; i < syms->size (); i += 1)
5330     {
5331       struct symbol *sym = (*syms)[i].symbol;
5332       const struct block *block = (*syms)[i].block;
5333       const char *name;
5334       const char *suffix;
5335
5336       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5337         continue;
5338       name = SYMBOL_LINKAGE_NAME (sym);
5339       suffix = strstr (name, "___XR");
5340
5341       if (suffix != NULL)
5342         {
5343           int name_len = suffix - name;
5344           int j;
5345
5346           is_new_style_renaming = 1;
5347           for (j = 0; j < syms->size (); j += 1)
5348             if (i != j && (*syms)[j].symbol != NULL
5349                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5350                             name_len) == 0
5351                 && block == (*syms)[j].block)
5352               (*syms)[j].symbol = NULL;
5353         }
5354     }
5355   if (is_new_style_renaming)
5356     {
5357       int j, k;
5358
5359       for (j = k = 0; j < syms->size (); j += 1)
5360         if ((*syms)[j].symbol != NULL)
5361             {
5362               (*syms)[k] = (*syms)[j];
5363               k += 1;
5364             }
5365       return k;
5366     }
5367
5368   /* Extract the function name associated to CURRENT_BLOCK.
5369      Abort if unable to do so.  */
5370
5371   if (current_block == NULL)
5372     return syms->size ();
5373
5374   current_function = block_linkage_function (current_block);
5375   if (current_function == NULL)
5376     return syms->size ();
5377
5378   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5379   if (current_function_name == NULL)
5380     return syms->size ();
5381
5382   /* Check each of the symbols, and remove it from the list if it is
5383      a type corresponding to a renaming that is out of the scope of
5384      the current block.  */
5385
5386   i = 0;
5387   while (i < syms->size ())
5388     {
5389       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5390           == ADA_OBJECT_RENAMING
5391           && old_renaming_is_invisible ((*syms)[i].symbol,
5392                                         current_function_name))
5393         syms->erase (syms->begin () + i);
5394       else
5395         i += 1;
5396     }
5397
5398   return syms->size ();
5399 }
5400
5401 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5402    whose name and domain match NAME and DOMAIN respectively.
5403    If no match was found, then extend the search to "enclosing"
5404    routines (in other words, if we're inside a nested function,
5405    search the symbols defined inside the enclosing functions).
5406    If WILD_MATCH_P is nonzero, perform the naming matching in
5407    "wild" mode (see function "wild_match" for more info).
5408
5409    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5410
5411 static void
5412 ada_add_local_symbols (struct obstack *obstackp,
5413                        const lookup_name_info &lookup_name,
5414                        const struct block *block, domain_enum domain)
5415 {
5416   int block_depth = 0;
5417
5418   while (block != NULL)
5419     {
5420       block_depth += 1;
5421       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5422
5423       /* If we found a non-function match, assume that's the one.  */
5424       if (is_nonfunction (defns_collected (obstackp, 0),
5425                           num_defns_collected (obstackp)))
5426         return;
5427
5428       block = BLOCK_SUPERBLOCK (block);
5429     }
5430
5431   /* If no luck so far, try to find NAME as a local symbol in some lexically
5432      enclosing subprogram.  */
5433   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5434     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5435 }
5436
5437 /* An object of this type is used as the user_data argument when
5438    calling the map_matching_symbols method.  */
5439
5440 struct match_data
5441 {
5442   struct objfile *objfile;
5443   struct obstack *obstackp;
5444   struct symbol *arg_sym;
5445   int found_sym;
5446 };
5447
5448 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5449    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5450    containing the obstack that collects the symbol list, the file that SYM
5451    must come from, a flag indicating whether a non-argument symbol has
5452    been found in the current block, and the last argument symbol
5453    passed in SYM within the current block (if any).  When SYM is null,
5454    marking the end of a block, the argument symbol is added if no
5455    other has been found.  */
5456
5457 static int
5458 aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
5459                           void *data0)
5460 {
5461   struct match_data *data = (struct match_data *) data0;
5462   
5463   if (sym == NULL)
5464     {
5465       if (!data->found_sym && data->arg_sym != NULL) 
5466         add_defn_to_vec (data->obstackp,
5467                          fixup_symbol_section (data->arg_sym, data->objfile),
5468                          block);
5469       data->found_sym = 0;
5470       data->arg_sym = NULL;
5471     }
5472   else 
5473     {
5474       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5475         return 0;
5476       else if (SYMBOL_IS_ARGUMENT (sym))
5477         data->arg_sym = sym;
5478       else
5479         {
5480           data->found_sym = 1;
5481           add_defn_to_vec (data->obstackp,
5482                            fixup_symbol_section (sym, data->objfile),
5483                            block);
5484         }
5485     }
5486   return 0;
5487 }
5488
5489 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5490    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5491    symbols to OBSTACKP.  Return whether we found such symbols.  */
5492
5493 static int
5494 ada_add_block_renamings (struct obstack *obstackp,
5495                          const struct block *block,
5496                          const lookup_name_info &lookup_name,
5497                          domain_enum domain)
5498 {
5499   struct using_direct *renaming;
5500   int defns_mark = num_defns_collected (obstackp);
5501
5502   symbol_name_matcher_ftype *name_match
5503     = ada_get_symbol_name_matcher (lookup_name);
5504
5505   for (renaming = block_using (block);
5506        renaming != NULL;
5507        renaming = renaming->next)
5508     {
5509       const char *r_name;
5510
5511       /* Avoid infinite recursions: skip this renaming if we are actually
5512          already traversing it.
5513
5514          Currently, symbol lookup in Ada don't use the namespace machinery from
5515          C++/Fortran support: skip namespace imports that use them.  */
5516       if (renaming->searched
5517           || (renaming->import_src != NULL
5518               && renaming->import_src[0] != '\0')
5519           || (renaming->import_dest != NULL
5520               && renaming->import_dest[0] != '\0'))
5521         continue;
5522       renaming->searched = 1;
5523
5524       /* TODO: here, we perform another name-based symbol lookup, which can
5525          pull its own multiple overloads.  In theory, we should be able to do
5526          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5527          not a simple name.  But in order to do this, we would need to enhance
5528          the DWARF reader to associate a symbol to this renaming, instead of a
5529          name.  So, for now, we do something simpler: re-use the C++/Fortran
5530          namespace machinery.  */
5531       r_name = (renaming->alias != NULL
5532                 ? renaming->alias
5533                 : renaming->declaration);
5534       if (name_match (r_name, lookup_name, NULL))
5535         {
5536           lookup_name_info decl_lookup_name (renaming->declaration,
5537                                              lookup_name.match_type ());
5538           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5539                                1, NULL);
5540         }
5541       renaming->searched = 0;
5542     }
5543   return num_defns_collected (obstackp) != defns_mark;
5544 }
5545
5546 /* Implements compare_names, but only applying the comparision using
5547    the given CASING.  */
5548
5549 static int
5550 compare_names_with_case (const char *string1, const char *string2,
5551                          enum case_sensitivity casing)
5552 {
5553   while (*string1 != '\0' && *string2 != '\0')
5554     {
5555       char c1, c2;
5556
5557       if (isspace (*string1) || isspace (*string2))
5558         return strcmp_iw_ordered (string1, string2);
5559
5560       if (casing == case_sensitive_off)
5561         {
5562           c1 = tolower (*string1);
5563           c2 = tolower (*string2);
5564         }
5565       else
5566         {
5567           c1 = *string1;
5568           c2 = *string2;
5569         }
5570       if (c1 != c2)
5571         break;
5572
5573       string1 += 1;
5574       string2 += 1;
5575     }
5576
5577   switch (*string1)
5578     {
5579     case '(':
5580       return strcmp_iw_ordered (string1, string2);
5581     case '_':
5582       if (*string2 == '\0')
5583         {
5584           if (is_name_suffix (string1))
5585             return 0;
5586           else
5587             return 1;
5588         }
5589       /* FALLTHROUGH */
5590     default:
5591       if (*string2 == '(')
5592         return strcmp_iw_ordered (string1, string2);
5593       else
5594         {
5595           if (casing == case_sensitive_off)
5596             return tolower (*string1) - tolower (*string2);
5597           else
5598             return *string1 - *string2;
5599         }
5600     }
5601 }
5602
5603 /* Compare STRING1 to STRING2, with results as for strcmp.
5604    Compatible with strcmp_iw_ordered in that...
5605
5606        strcmp_iw_ordered (STRING1, STRING2) <= 0
5607
5608    ... implies...
5609
5610        compare_names (STRING1, STRING2) <= 0
5611
5612    (they may differ as to what symbols compare equal).  */
5613
5614 static int
5615 compare_names (const char *string1, const char *string2)
5616 {
5617   int result;
5618
5619   /* Similar to what strcmp_iw_ordered does, we need to perform
5620      a case-insensitive comparison first, and only resort to
5621      a second, case-sensitive, comparison if the first one was
5622      not sufficient to differentiate the two strings.  */
5623
5624   result = compare_names_with_case (string1, string2, case_sensitive_off);
5625   if (result == 0)
5626     result = compare_names_with_case (string1, string2, case_sensitive_on);
5627
5628   return result;
5629 }
5630
5631 /* Convenience function to get at the Ada encoded lookup name for
5632    LOOKUP_NAME, as a C string.  */
5633
5634 static const char *
5635 ada_lookup_name (const lookup_name_info &lookup_name)
5636 {
5637   return lookup_name.ada ().lookup_name ().c_str ();
5638 }
5639
5640 /* Add to OBSTACKP all non-local symbols whose name and domain match
5641    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5642    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5643    symbols otherwise.  */
5644
5645 static void
5646 add_nonlocal_symbols (struct obstack *obstackp,
5647                       const lookup_name_info &lookup_name,
5648                       domain_enum domain, int global)
5649 {
5650   struct match_data data;
5651
5652   memset (&data, 0, sizeof data);
5653   data.obstackp = obstackp;
5654
5655   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5656
5657   for (objfile *objfile : current_program_space->objfiles ())
5658     {
5659       data.objfile = objfile;
5660
5661       if (is_wild_match)
5662         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5663                                                domain, global,
5664                                                aux_add_nonlocal_symbols, &data,
5665                                                symbol_name_match_type::WILD,
5666                                                NULL);
5667       else
5668         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5669                                                domain, global,
5670                                                aux_add_nonlocal_symbols, &data,
5671                                                symbol_name_match_type::FULL,
5672                                                compare_names);
5673
5674       for (compunit_symtab *cu : objfile->compunits ())
5675         {
5676           const struct block *global_block
5677             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5678
5679           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5680                                        domain))
5681             data.found_sym = 1;
5682         }
5683     }
5684
5685   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5686     {
5687       const char *name = ada_lookup_name (lookup_name);
5688       std::string name1 = std::string ("<_ada_") + name + '>';
5689
5690       for (objfile *objfile : current_program_space->objfiles ())
5691         {
5692           data.objfile = objfile;
5693           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5694                                                  domain, global,
5695                                                  aux_add_nonlocal_symbols,
5696                                                  &data,
5697                                                  symbol_name_match_type::FULL,
5698                                                  compare_names);
5699         }
5700     }           
5701 }
5702
5703 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5704    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5705    returning the number of matches.  Add these to OBSTACKP.
5706
5707    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5708    symbol match within the nest of blocks whose innermost member is BLOCK,
5709    is the one match returned (no other matches in that or
5710    enclosing blocks is returned).  If there are any matches in or
5711    surrounding BLOCK, then these alone are returned.
5712
5713    Names prefixed with "standard__" are handled specially:
5714    "standard__" is first stripped off (by the lookup_name
5715    constructor), and only static and global symbols are searched.
5716
5717    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5718    to lookup global symbols.  */
5719
5720 static void
5721 ada_add_all_symbols (struct obstack *obstackp,
5722                      const struct block *block,
5723                      const lookup_name_info &lookup_name,
5724                      domain_enum domain,
5725                      int full_search,
5726                      int *made_global_lookup_p)
5727 {
5728   struct symbol *sym;
5729
5730   if (made_global_lookup_p)
5731     *made_global_lookup_p = 0;
5732
5733   /* Special case: If the user specifies a symbol name inside package
5734      Standard, do a non-wild matching of the symbol name without
5735      the "standard__" prefix.  This was primarily introduced in order
5736      to allow the user to specifically access the standard exceptions
5737      using, for instance, Standard.Constraint_Error when Constraint_Error
5738      is ambiguous (due to the user defining its own Constraint_Error
5739      entity inside its program).  */
5740   if (lookup_name.ada ().standard_p ())
5741     block = NULL;
5742
5743   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5744
5745   if (block != NULL)
5746     {
5747       if (full_search)
5748         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5749       else
5750         {
5751           /* In the !full_search case we're are being called by
5752              ada_iterate_over_symbols, and we don't want to search
5753              superblocks.  */
5754           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5755         }
5756       if (num_defns_collected (obstackp) > 0 || !full_search)
5757         return;
5758     }
5759
5760   /* No non-global symbols found.  Check our cache to see if we have
5761      already performed this search before.  If we have, then return
5762      the same result.  */
5763
5764   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5765                             domain, &sym, &block))
5766     {
5767       if (sym != NULL)
5768         add_defn_to_vec (obstackp, sym, block);
5769       return;
5770     }
5771
5772   if (made_global_lookup_p)
5773     *made_global_lookup_p = 1;
5774
5775   /* Search symbols from all global blocks.  */
5776  
5777   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5778
5779   /* Now add symbols from all per-file blocks if we've gotten no hits
5780      (not strictly correct, but perhaps better than an error).  */
5781
5782   if (num_defns_collected (obstackp) == 0)
5783     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5784 }
5785
5786 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5787    is non-zero, enclosing scope and in global scopes, returning the number of
5788    matches.
5789    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5790    found and the blocks and symbol tables (if any) in which they were
5791    found.
5792
5793    When full_search is non-zero, any non-function/non-enumeral
5794    symbol match within the nest of blocks whose innermost member is BLOCK,
5795    is the one match returned (no other matches in that or
5796    enclosing blocks is returned).  If there are any matches in or
5797    surrounding BLOCK, then these alone are returned.
5798
5799    Names prefixed with "standard__" are handled specially: "standard__"
5800    is first stripped off, and only static and global symbols are searched.  */
5801
5802 static int
5803 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5804                                const struct block *block,
5805                                domain_enum domain,
5806                                std::vector<struct block_symbol> *results,
5807                                int full_search)
5808 {
5809   int syms_from_global_search;
5810   int ndefns;
5811   auto_obstack obstack;
5812
5813   ada_add_all_symbols (&obstack, block, lookup_name,
5814                        domain, full_search, &syms_from_global_search);
5815
5816   ndefns = num_defns_collected (&obstack);
5817
5818   struct block_symbol *base = defns_collected (&obstack, 1);
5819   for (int i = 0; i < ndefns; ++i)
5820     results->push_back (base[i]);
5821
5822   ndefns = remove_extra_symbols (results);
5823
5824   if (ndefns == 0 && full_search && syms_from_global_search)
5825     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5826
5827   if (ndefns == 1 && full_search && syms_from_global_search)
5828     cache_symbol (ada_lookup_name (lookup_name), domain,
5829                   (*results)[0].symbol, (*results)[0].block);
5830
5831   ndefns = remove_irrelevant_renamings (results, block);
5832
5833   return ndefns;
5834 }
5835
5836 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5837    in global scopes, returning the number of matches, and filling *RESULTS
5838    with (SYM,BLOCK) tuples.
5839
5840    See ada_lookup_symbol_list_worker for further details.  */
5841
5842 int
5843 ada_lookup_symbol_list (const char *name, const struct block *block,
5844                         domain_enum domain,
5845                         std::vector<struct block_symbol> *results)
5846 {
5847   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5848   lookup_name_info lookup_name (name, name_match_type);
5849
5850   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5851 }
5852
5853 /* Implementation of the la_iterate_over_symbols method.  */
5854
5855 static void
5856 ada_iterate_over_symbols
5857   (const struct block *block, const lookup_name_info &name,
5858    domain_enum domain,
5859    gdb::function_view<symbol_found_callback_ftype> callback)
5860 {
5861   int ndefs, i;
5862   std::vector<struct block_symbol> results;
5863
5864   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5865
5866   for (i = 0; i < ndefs; ++i)
5867     {
5868       if (!callback (&results[i]))
5869         break;
5870     }
5871 }
5872
5873 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5874    to 1, but choosing the first symbol found if there are multiple
5875    choices.
5876
5877    The result is stored in *INFO, which must be non-NULL.
5878    If no match is found, INFO->SYM is set to NULL.  */
5879
5880 void
5881 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5882                            domain_enum domain,
5883                            struct block_symbol *info)
5884 {
5885   /* Since we already have an encoded name, wrap it in '<>' to force a
5886      verbatim match.  Otherwise, if the name happens to not look like
5887      an encoded name (because it doesn't include a "__"),
5888      ada_lookup_name_info would re-encode/fold it again, and that
5889      would e.g., incorrectly lowercase object renaming names like
5890      "R28b" -> "r28b".  */
5891   std::string verbatim = std::string ("<") + name + '>';
5892
5893   gdb_assert (info != NULL);
5894   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5895 }
5896
5897 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5898    scope and in global scopes, or NULL if none.  NAME is folded and
5899    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5900    choosing the first symbol if there are multiple choices.
5901    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5902
5903 struct block_symbol
5904 ada_lookup_symbol (const char *name, const struct block *block0,
5905                    domain_enum domain, int *is_a_field_of_this)
5906 {
5907   if (is_a_field_of_this != NULL)
5908     *is_a_field_of_this = 0;
5909
5910   std::vector<struct block_symbol> candidates;
5911   int n_candidates;
5912
5913   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5914
5915   if (n_candidates == 0)
5916     return {};
5917
5918   block_symbol info = candidates[0];
5919   info.symbol = fixup_symbol_section (info.symbol, NULL);
5920   return info;
5921 }
5922
5923 static struct block_symbol
5924 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5925                             const char *name,
5926                             const struct block *block,
5927                             const domain_enum domain)
5928 {
5929   struct block_symbol sym;
5930
5931   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5932   if (sym.symbol != NULL)
5933     return sym;
5934
5935   /* If we haven't found a match at this point, try the primitive
5936      types.  In other languages, this search is performed before
5937      searching for global symbols in order to short-circuit that
5938      global-symbol search if it happens that the name corresponds
5939      to a primitive type.  But we cannot do the same in Ada, because
5940      it is perfectly legitimate for a program to declare a type which
5941      has the same name as a standard type.  If looking up a type in
5942      that situation, we have traditionally ignored the primitive type
5943      in favor of user-defined types.  This is why, unlike most other
5944      languages, we search the primitive types this late and only after
5945      having searched the global symbols without success.  */
5946
5947   if (domain == VAR_DOMAIN)
5948     {
5949       struct gdbarch *gdbarch;
5950
5951       if (block == NULL)
5952         gdbarch = target_gdbarch ();
5953       else
5954         gdbarch = block_gdbarch (block);
5955       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5956       if (sym.symbol != NULL)
5957         return sym;
5958     }
5959
5960   return {};
5961 }
5962
5963
5964 /* True iff STR is a possible encoded suffix of a normal Ada name
5965    that is to be ignored for matching purposes.  Suffixes of parallel
5966    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5967    are given by any of the regular expressions:
5968
5969    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5970    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5971    TKB              [subprogram suffix for task bodies]
5972    _E[0-9]+[bs]$    [protected object entry suffixes]
5973    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5974
5975    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5976    match is performed.  This sequence is used to differentiate homonyms,
5977    is an optional part of a valid name suffix.  */
5978
5979 static int
5980 is_name_suffix (const char *str)
5981 {
5982   int k;
5983   const char *matching;
5984   const int len = strlen (str);
5985
5986   /* Skip optional leading __[0-9]+.  */
5987
5988   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5989     {
5990       str += 3;
5991       while (isdigit (str[0]))
5992         str += 1;
5993     }
5994   
5995   /* [.$][0-9]+ */
5996
5997   if (str[0] == '.' || str[0] == '$')
5998     {
5999       matching = str + 1;
6000       while (isdigit (matching[0]))
6001         matching += 1;
6002       if (matching[0] == '\0')
6003         return 1;
6004     }
6005
6006   /* ___[0-9]+ */
6007
6008   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
6009     {
6010       matching = str + 3;
6011       while (isdigit (matching[0]))
6012         matching += 1;
6013       if (matching[0] == '\0')
6014         return 1;
6015     }
6016
6017   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
6018
6019   if (strcmp (str, "TKB") == 0)
6020     return 1;
6021
6022 #if 0
6023   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
6024      with a N at the end.  Unfortunately, the compiler uses the same
6025      convention for other internal types it creates.  So treating
6026      all entity names that end with an "N" as a name suffix causes
6027      some regressions.  For instance, consider the case of an enumerated
6028      type.  To support the 'Image attribute, it creates an array whose
6029      name ends with N.
6030      Having a single character like this as a suffix carrying some
6031      information is a bit risky.  Perhaps we should change the encoding
6032      to be something like "_N" instead.  In the meantime, do not do
6033      the following check.  */
6034   /* Protected Object Subprograms */
6035   if (len == 1 && str [0] == 'N')
6036     return 1;
6037 #endif
6038
6039   /* _E[0-9]+[bs]$ */
6040   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6041     {
6042       matching = str + 3;
6043       while (isdigit (matching[0]))
6044         matching += 1;
6045       if ((matching[0] == 'b' || matching[0] == 's')
6046           && matching [1] == '\0')
6047         return 1;
6048     }
6049
6050   /* ??? We should not modify STR directly, as we are doing below.  This
6051      is fine in this case, but may become problematic later if we find
6052      that this alternative did not work, and want to try matching
6053      another one from the begining of STR.  Since we modified it, we
6054      won't be able to find the begining of the string anymore!  */
6055   if (str[0] == 'X')
6056     {
6057       str += 1;
6058       while (str[0] != '_' && str[0] != '\0')
6059         {
6060           if (str[0] != 'n' && str[0] != 'b')
6061             return 0;
6062           str += 1;
6063         }
6064     }
6065
6066   if (str[0] == '\000')
6067     return 1;
6068
6069   if (str[0] == '_')
6070     {
6071       if (str[1] != '_' || str[2] == '\000')
6072         return 0;
6073       if (str[2] == '_')
6074         {
6075           if (strcmp (str + 3, "JM") == 0)
6076             return 1;
6077           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6078              the LJM suffix in favor of the JM one.  But we will
6079              still accept LJM as a valid suffix for a reasonable
6080              amount of time, just to allow ourselves to debug programs
6081              compiled using an older version of GNAT.  */
6082           if (strcmp (str + 3, "LJM") == 0)
6083             return 1;
6084           if (str[3] != 'X')
6085             return 0;
6086           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6087               || str[4] == 'U' || str[4] == 'P')
6088             return 1;
6089           if (str[4] == 'R' && str[5] != 'T')
6090             return 1;
6091           return 0;
6092         }
6093       if (!isdigit (str[2]))
6094         return 0;
6095       for (k = 3; str[k] != '\0'; k += 1)
6096         if (!isdigit (str[k]) && str[k] != '_')
6097           return 0;
6098       return 1;
6099     }
6100   if (str[0] == '$' && isdigit (str[1]))
6101     {
6102       for (k = 2; str[k] != '\0'; k += 1)
6103         if (!isdigit (str[k]) && str[k] != '_')
6104           return 0;
6105       return 1;
6106     }
6107   return 0;
6108 }
6109
6110 /* Return non-zero if the string starting at NAME and ending before
6111    NAME_END contains no capital letters.  */
6112
6113 static int
6114 is_valid_name_for_wild_match (const char *name0)
6115 {
6116   const char *decoded_name = ada_decode (name0);
6117   int i;
6118
6119   /* If the decoded name starts with an angle bracket, it means that
6120      NAME0 does not follow the GNAT encoding format.  It should then
6121      not be allowed as a possible wild match.  */
6122   if (decoded_name[0] == '<')
6123     return 0;
6124
6125   for (i=0; decoded_name[i] != '\0'; i++)
6126     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6127       return 0;
6128
6129   return 1;
6130 }
6131
6132 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6133    that could start a simple name.  Assumes that *NAMEP points into
6134    the string beginning at NAME0.  */
6135
6136 static int
6137 advance_wild_match (const char **namep, const char *name0, int target0)
6138 {
6139   const char *name = *namep;
6140
6141   while (1)
6142     {
6143       int t0, t1;
6144
6145       t0 = *name;
6146       if (t0 == '_')
6147         {
6148           t1 = name[1];
6149           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6150             {
6151               name += 1;
6152               if (name == name0 + 5 && startswith (name0, "_ada"))
6153                 break;
6154               else
6155                 name += 1;
6156             }
6157           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6158                                  || name[2] == target0))
6159             {
6160               name += 2;
6161               break;
6162             }
6163           else
6164             return 0;
6165         }
6166       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6167         name += 1;
6168       else
6169         return 0;
6170     }
6171
6172   *namep = name;
6173   return 1;
6174 }
6175
6176 /* Return true iff NAME encodes a name of the form prefix.PATN.
6177    Ignores any informational suffixes of NAME (i.e., for which
6178    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6179    simple name.  */
6180
6181 static bool
6182 wild_match (const char *name, const char *patn)
6183 {
6184   const char *p;
6185   const char *name0 = name;
6186
6187   while (1)
6188     {
6189       const char *match = name;
6190
6191       if (*name == *patn)
6192         {
6193           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6194             if (*p != *name)
6195               break;
6196           if (*p == '\0' && is_name_suffix (name))
6197             return match == name0 || is_valid_name_for_wild_match (name0);
6198
6199           if (name[-1] == '_')
6200             name -= 1;
6201         }
6202       if (!advance_wild_match (&name, name0, *patn))
6203         return false;
6204     }
6205 }
6206
6207 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6208    any trailing suffixes that encode debugging information or leading
6209    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6210    information that is ignored).  */
6211
6212 static bool
6213 full_match (const char *sym_name, const char *search_name)
6214 {
6215   size_t search_name_len = strlen (search_name);
6216
6217   if (strncmp (sym_name, search_name, search_name_len) == 0
6218       && is_name_suffix (sym_name + search_name_len))
6219     return true;
6220
6221   if (startswith (sym_name, "_ada_")
6222       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6223       && is_name_suffix (sym_name + search_name_len + 5))
6224     return true;
6225
6226   return false;
6227 }
6228
6229 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6230    *defn_symbols, updating the list of symbols in OBSTACKP (if
6231    necessary).  OBJFILE is the section containing BLOCK.  */
6232
6233 static void
6234 ada_add_block_symbols (struct obstack *obstackp,
6235                        const struct block *block,
6236                        const lookup_name_info &lookup_name,
6237                        domain_enum domain, struct objfile *objfile)
6238 {
6239   struct block_iterator iter;
6240   /* A matching argument symbol, if any.  */
6241   struct symbol *arg_sym;
6242   /* Set true when we find a matching non-argument symbol.  */
6243   int found_sym;
6244   struct symbol *sym;
6245
6246   arg_sym = NULL;
6247   found_sym = 0;
6248   for (sym = block_iter_match_first (block, lookup_name, &iter);
6249        sym != NULL;
6250        sym = block_iter_match_next (lookup_name, &iter))
6251     {
6252       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6253                                  SYMBOL_DOMAIN (sym), domain))
6254         {
6255           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6256             {
6257               if (SYMBOL_IS_ARGUMENT (sym))
6258                 arg_sym = sym;
6259               else
6260                 {
6261                   found_sym = 1;
6262                   add_defn_to_vec (obstackp,
6263                                    fixup_symbol_section (sym, objfile),
6264                                    block);
6265                 }
6266             }
6267         }
6268     }
6269
6270   /* Handle renamings.  */
6271
6272   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6273     found_sym = 1;
6274
6275   if (!found_sym && arg_sym != NULL)
6276     {
6277       add_defn_to_vec (obstackp,
6278                        fixup_symbol_section (arg_sym, objfile),
6279                        block);
6280     }
6281
6282   if (!lookup_name.ada ().wild_match_p ())
6283     {
6284       arg_sym = NULL;
6285       found_sym = 0;
6286       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6287       const char *name = ada_lookup_name.c_str ();
6288       size_t name_len = ada_lookup_name.size ();
6289
6290       ALL_BLOCK_SYMBOLS (block, iter, sym)
6291       {
6292         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6293                                    SYMBOL_DOMAIN (sym), domain))
6294           {
6295             int cmp;
6296
6297             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6298             if (cmp == 0)
6299               {
6300                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6301                 if (cmp == 0)
6302                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6303                                  name_len);
6304               }
6305
6306             if (cmp == 0
6307                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6308               {
6309                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6310                   {
6311                     if (SYMBOL_IS_ARGUMENT (sym))
6312                       arg_sym = sym;
6313                     else
6314                       {
6315                         found_sym = 1;
6316                         add_defn_to_vec (obstackp,
6317                                          fixup_symbol_section (sym, objfile),
6318                                          block);
6319                       }
6320                   }
6321               }
6322           }
6323       }
6324
6325       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6326          They aren't parameters, right?  */
6327       if (!found_sym && arg_sym != NULL)
6328         {
6329           add_defn_to_vec (obstackp,
6330                            fixup_symbol_section (arg_sym, objfile),
6331                            block);
6332         }
6333     }
6334 }
6335 \f
6336
6337                                 /* Symbol Completion */
6338
6339 /* See symtab.h.  */
6340
6341 bool
6342 ada_lookup_name_info::matches
6343   (const char *sym_name,
6344    symbol_name_match_type match_type,
6345    completion_match_result *comp_match_res) const
6346 {
6347   bool match = false;
6348   const char *text = m_encoded_name.c_str ();
6349   size_t text_len = m_encoded_name.size ();
6350
6351   /* First, test against the fully qualified name of the symbol.  */
6352
6353   if (strncmp (sym_name, text, text_len) == 0)
6354     match = true;
6355
6356   if (match && !m_encoded_p)
6357     {
6358       /* One needed check before declaring a positive match is to verify
6359          that iff we are doing a verbatim match, the decoded version
6360          of the symbol name starts with '<'.  Otherwise, this symbol name
6361          is not a suitable completion.  */
6362       const char *sym_name_copy = sym_name;
6363       bool has_angle_bracket;
6364
6365       sym_name = ada_decode (sym_name);
6366       has_angle_bracket = (sym_name[0] == '<');
6367       match = (has_angle_bracket == m_verbatim_p);
6368       sym_name = sym_name_copy;
6369     }
6370
6371   if (match && !m_verbatim_p)
6372     {
6373       /* When doing non-verbatim match, another check that needs to
6374          be done is to verify that the potentially matching symbol name
6375          does not include capital letters, because the ada-mode would
6376          not be able to understand these symbol names without the
6377          angle bracket notation.  */
6378       const char *tmp;
6379
6380       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6381       if (*tmp != '\0')
6382         match = false;
6383     }
6384
6385   /* Second: Try wild matching...  */
6386
6387   if (!match && m_wild_match_p)
6388     {
6389       /* Since we are doing wild matching, this means that TEXT
6390          may represent an unqualified symbol name.  We therefore must
6391          also compare TEXT against the unqualified name of the symbol.  */
6392       sym_name = ada_unqualified_name (ada_decode (sym_name));
6393
6394       if (strncmp (sym_name, text, text_len) == 0)
6395         match = true;
6396     }
6397
6398   /* Finally: If we found a match, prepare the result to return.  */
6399
6400   if (!match)
6401     return false;
6402
6403   if (comp_match_res != NULL)
6404     {
6405       std::string &match_str = comp_match_res->match.storage ();
6406
6407       if (!m_encoded_p)
6408         match_str = ada_decode (sym_name);
6409       else
6410         {
6411           if (m_verbatim_p)
6412             match_str = add_angle_brackets (sym_name);
6413           else
6414             match_str = sym_name;
6415
6416         }
6417
6418       comp_match_res->set_match (match_str.c_str ());
6419     }
6420
6421   return true;
6422 }
6423
6424 /* Add the list of possible symbol names completing TEXT to TRACKER.
6425    WORD is the entire command on which completion is made.  */
6426
6427 static void
6428 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6429                                        complete_symbol_mode mode,
6430                                        symbol_name_match_type name_match_type,
6431                                        const char *text, const char *word,
6432                                        enum type_code code)
6433 {
6434   struct symbol *sym;
6435   const struct block *b, *surrounding_static_block = 0;
6436   struct block_iterator iter;
6437
6438   gdb_assert (code == TYPE_CODE_UNDEF);
6439
6440   lookup_name_info lookup_name (text, name_match_type, true);
6441
6442   /* First, look at the partial symtab symbols.  */
6443   expand_symtabs_matching (NULL,
6444                            lookup_name,
6445                            NULL,
6446                            NULL,
6447                            ALL_DOMAIN);
6448
6449   /* At this point scan through the misc symbol vectors and add each
6450      symbol you find to the list.  Eventually we want to ignore
6451      anything that isn't a text symbol (everything else will be
6452      handled by the psymtab code above).  */
6453
6454   for (objfile *objfile : current_program_space->objfiles ())
6455     {
6456       for (minimal_symbol *msymbol : objfile->msymbols ())
6457         {
6458           QUIT;
6459
6460           if (completion_skip_symbol (mode, msymbol))
6461             continue;
6462
6463           language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6464
6465           /* Ada minimal symbols won't have their language set to Ada.  If
6466              we let completion_list_add_name compare using the
6467              default/C-like matcher, then when completing e.g., symbols in a
6468              package named "pck", we'd match internal Ada symbols like
6469              "pckS", which are invalid in an Ada expression, unless you wrap
6470              them in '<' '>' to request a verbatim match.
6471
6472              Unfortunately, some Ada encoded names successfully demangle as
6473              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6474              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6475              with the wrong language set.  Paper over that issue here.  */
6476           if (symbol_language == language_auto
6477               || symbol_language == language_cplus)
6478             symbol_language = language_ada;
6479
6480           completion_list_add_name (tracker,
6481                                     symbol_language,
6482                                     MSYMBOL_LINKAGE_NAME (msymbol),
6483                                     lookup_name, text, word);
6484         }
6485     }
6486
6487   /* Search upwards from currently selected frame (so that we can
6488      complete on local vars.  */
6489
6490   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6491     {
6492       if (!BLOCK_SUPERBLOCK (b))
6493         surrounding_static_block = b;   /* For elmin of dups */
6494
6495       ALL_BLOCK_SYMBOLS (b, iter, sym)
6496       {
6497         if (completion_skip_symbol (mode, sym))
6498           continue;
6499
6500         completion_list_add_name (tracker,
6501                                   SYMBOL_LANGUAGE (sym),
6502                                   SYMBOL_LINKAGE_NAME (sym),
6503                                   lookup_name, text, word);
6504       }
6505     }
6506
6507   /* Go through the symtabs and check the externs and statics for
6508      symbols which match.  */
6509
6510   for (objfile *objfile : current_program_space->objfiles ())
6511     {
6512       for (compunit_symtab *s : objfile->compunits ())
6513         {
6514           QUIT;
6515           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
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   for (objfile *objfile : current_program_space->objfiles ())
6530     {
6531       for (compunit_symtab *s : objfile->compunits ())
6532         {
6533           QUIT;
6534           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6535           /* Don't do this block twice.  */
6536           if (b == surrounding_static_block)
6537             continue;
6538           ALL_BLOCK_SYMBOLS (b, iter, sym)
6539             {
6540               if (completion_skip_symbol (mode, sym))
6541                 continue;
6542
6543               completion_list_add_name (tracker,
6544                                         SYMBOL_LANGUAGE (sym),
6545                                         SYMBOL_LINKAGE_NAME (sym),
6546                                         lookup_name, text, word);
6547             }
6548         }
6549     }
6550 }
6551
6552                                 /* Field Access */
6553
6554 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6555    for tagged types.  */
6556
6557 static int
6558 ada_is_dispatch_table_ptr_type (struct type *type)
6559 {
6560   const char *name;
6561
6562   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6563     return 0;
6564
6565   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6566   if (name == NULL)
6567     return 0;
6568
6569   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6570 }
6571
6572 /* Return non-zero if TYPE is an interface tag.  */
6573
6574 static int
6575 ada_is_interface_tag (struct type *type)
6576 {
6577   const char *name = TYPE_NAME (type);
6578
6579   if (name == NULL)
6580     return 0;
6581
6582   return (strcmp (name, "ada__tags__interface_tag") == 0);
6583 }
6584
6585 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6586    to be invisible to users.  */
6587
6588 int
6589 ada_is_ignored_field (struct type *type, int field_num)
6590 {
6591   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6592     return 1;
6593
6594   /* Check the name of that field.  */
6595   {
6596     const char *name = TYPE_FIELD_NAME (type, field_num);
6597
6598     /* Anonymous field names should not be printed.
6599        brobecker/2007-02-20: I don't think this can actually happen
6600        but we don't want to print the value of annonymous fields anyway.  */
6601     if (name == NULL)
6602       return 1;
6603
6604     /* Normally, fields whose name start with an underscore ("_")
6605        are fields that have been internally generated by the compiler,
6606        and thus should not be printed.  The "_parent" field is special,
6607        however: This is a field internally generated by the compiler
6608        for tagged types, and it contains the components inherited from
6609        the parent type.  This field should not be printed as is, but
6610        should not be ignored either.  */
6611     if (name[0] == '_' && !startswith (name, "_parent"))
6612       return 1;
6613   }
6614
6615   /* If this is the dispatch table of a tagged type or an interface tag,
6616      then ignore.  */
6617   if (ada_is_tagged_type (type, 1)
6618       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6619           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6620     return 1;
6621
6622   /* Not a special field, so it should not be ignored.  */
6623   return 0;
6624 }
6625
6626 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6627    pointer or reference type whose ultimate target has a tag field.  */
6628
6629 int
6630 ada_is_tagged_type (struct type *type, int refok)
6631 {
6632   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6633 }
6634
6635 /* True iff TYPE represents the type of X'Tag */
6636
6637 int
6638 ada_is_tag_type (struct type *type)
6639 {
6640   type = ada_check_typedef (type);
6641
6642   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6643     return 0;
6644   else
6645     {
6646       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6647
6648       return (name != NULL
6649               && strcmp (name, "ada__tags__dispatch_table") == 0);
6650     }
6651 }
6652
6653 /* The type of the tag on VAL.  */
6654
6655 struct type *
6656 ada_tag_type (struct value *val)
6657 {
6658   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6659 }
6660
6661 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6662    retired at Ada 05).  */
6663
6664 static int
6665 is_ada95_tag (struct value *tag)
6666 {
6667   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6668 }
6669
6670 /* The value of the tag on VAL.  */
6671
6672 struct value *
6673 ada_value_tag (struct value *val)
6674 {
6675   return ada_value_struct_elt (val, "_tag", 0);
6676 }
6677
6678 /* The value of the tag on the object of type TYPE whose contents are
6679    saved at VALADDR, if it is non-null, or is at memory address
6680    ADDRESS.  */
6681
6682 static struct value *
6683 value_tag_from_contents_and_address (struct type *type,
6684                                      const gdb_byte *valaddr,
6685                                      CORE_ADDR address)
6686 {
6687   int tag_byte_offset;
6688   struct type *tag_type;
6689
6690   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6691                          NULL, NULL, NULL))
6692     {
6693       const gdb_byte *valaddr1 = ((valaddr == NULL)
6694                                   ? NULL
6695                                   : valaddr + tag_byte_offset);
6696       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6697
6698       return value_from_contents_and_address (tag_type, valaddr1, address1);
6699     }
6700   return NULL;
6701 }
6702
6703 static struct type *
6704 type_from_tag (struct value *tag)
6705 {
6706   const char *type_name = ada_tag_name (tag);
6707
6708   if (type_name != NULL)
6709     return ada_find_any_type (ada_encode (type_name));
6710   return NULL;
6711 }
6712
6713 /* Given a value OBJ of a tagged type, return a value of this
6714    type at the base address of the object.  The base address, as
6715    defined in Ada.Tags, it is the address of the primary tag of
6716    the object, and therefore where the field values of its full
6717    view can be fetched.  */
6718
6719 struct value *
6720 ada_tag_value_at_base_address (struct value *obj)
6721 {
6722   struct value *val;
6723   LONGEST offset_to_top = 0;
6724   struct type *ptr_type, *obj_type;
6725   struct value *tag;
6726   CORE_ADDR base_address;
6727
6728   obj_type = value_type (obj);
6729
6730   /* It is the responsability of the caller to deref pointers.  */
6731
6732   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6733       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6734     return obj;
6735
6736   tag = ada_value_tag (obj);
6737   if (!tag)
6738     return obj;
6739
6740   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6741
6742   if (is_ada95_tag (tag))
6743     return obj;
6744
6745   ptr_type = language_lookup_primitive_type
6746     (language_def (language_ada), target_gdbarch(), "storage_offset");
6747   ptr_type = lookup_pointer_type (ptr_type);
6748   val = value_cast (ptr_type, tag);
6749   if (!val)
6750     return obj;
6751
6752   /* It is perfectly possible that an exception be raised while
6753      trying to determine the base address, just like for the tag;
6754      see ada_tag_name for more details.  We do not print the error
6755      message for the same reason.  */
6756
6757   try
6758     {
6759       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6760     }
6761
6762   catch (const gdb_exception_error &e)
6763     {
6764       return obj;
6765     }
6766
6767   /* If offset is null, nothing to do.  */
6768
6769   if (offset_to_top == 0)
6770     return obj;
6771
6772   /* -1 is a special case in Ada.Tags; however, what should be done
6773      is not quite clear from the documentation.  So do nothing for
6774      now.  */
6775
6776   if (offset_to_top == -1)
6777     return obj;
6778
6779   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6780      from the base address.  This was however incompatible with
6781      C++ dispatch table: C++ uses a *negative* value to *add*
6782      to the base address.  Ada's convention has therefore been
6783      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6784      use the same convention.  Here, we support both cases by
6785      checking the sign of OFFSET_TO_TOP.  */
6786
6787   if (offset_to_top > 0)
6788     offset_to_top = -offset_to_top;
6789
6790   base_address = value_address (obj) + offset_to_top;
6791   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6792
6793   /* Make sure that we have a proper tag at the new address.
6794      Otherwise, offset_to_top is bogus (which can happen when
6795      the object is not initialized yet).  */
6796
6797   if (!tag)
6798     return obj;
6799
6800   obj_type = type_from_tag (tag);
6801
6802   if (!obj_type)
6803     return obj;
6804
6805   return value_from_contents_and_address (obj_type, NULL, base_address);
6806 }
6807
6808 /* Return the "ada__tags__type_specific_data" type.  */
6809
6810 static struct type *
6811 ada_get_tsd_type (struct inferior *inf)
6812 {
6813   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6814
6815   if (data->tsd_type == 0)
6816     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6817   return data->tsd_type;
6818 }
6819
6820 /* Return the TSD (type-specific data) associated to the given TAG.
6821    TAG is assumed to be the tag of a tagged-type entity.
6822
6823    May return NULL if we are unable to get the TSD.  */
6824
6825 static struct value *
6826 ada_get_tsd_from_tag (struct value *tag)
6827 {
6828   struct value *val;
6829   struct type *type;
6830
6831   /* First option: The TSD is simply stored as a field of our TAG.
6832      Only older versions of GNAT would use this format, but we have
6833      to test it first, because there are no visible markers for
6834      the current approach except the absence of that field.  */
6835
6836   val = ada_value_struct_elt (tag, "tsd", 1);
6837   if (val)
6838     return val;
6839
6840   /* Try the second representation for the dispatch table (in which
6841      there is no explicit 'tsd' field in the referent of the tag pointer,
6842      and instead the tsd pointer is stored just before the dispatch
6843      table.  */
6844
6845   type = ada_get_tsd_type (current_inferior());
6846   if (type == NULL)
6847     return NULL;
6848   type = lookup_pointer_type (lookup_pointer_type (type));
6849   val = value_cast (type, tag);
6850   if (val == NULL)
6851     return NULL;
6852   return value_ind (value_ptradd (val, -1));
6853 }
6854
6855 /* Given the TSD of a tag (type-specific data), return a string
6856    containing the name of the associated type.
6857
6858    The returned value is good until the next call.  May return NULL
6859    if we are unable to determine the tag name.  */
6860
6861 static char *
6862 ada_tag_name_from_tsd (struct value *tsd)
6863 {
6864   static char name[1024];
6865   char *p;
6866   struct value *val;
6867
6868   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6869   if (val == NULL)
6870     return NULL;
6871   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6872   for (p = name; *p != '\0'; p += 1)
6873     if (isalpha (*p))
6874       *p = tolower (*p);
6875   return name;
6876 }
6877
6878 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6879    a C string.
6880
6881    Return NULL if the TAG is not an Ada tag, or if we were unable to
6882    determine the name of that tag.  The result is good until the next
6883    call.  */
6884
6885 const char *
6886 ada_tag_name (struct value *tag)
6887 {
6888   char *name = NULL;
6889
6890   if (!ada_is_tag_type (value_type (tag)))
6891     return NULL;
6892
6893   /* It is perfectly possible that an exception be raised while trying
6894      to determine the TAG's name, even under normal circumstances:
6895      The associated variable may be uninitialized or corrupted, for
6896      instance. We do not let any exception propagate past this point.
6897      instead we return NULL.
6898
6899      We also do not print the error message either (which often is very
6900      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6901      the caller print a more meaningful message if necessary.  */
6902   try
6903     {
6904       struct value *tsd = ada_get_tsd_from_tag (tag);
6905
6906       if (tsd != NULL)
6907         name = ada_tag_name_from_tsd (tsd);
6908     }
6909   catch (const gdb_exception_error &e)
6910     {
6911     }
6912
6913   return name;
6914 }
6915
6916 /* The parent type of TYPE, or NULL if none.  */
6917
6918 struct type *
6919 ada_parent_type (struct type *type)
6920 {
6921   int i;
6922
6923   type = ada_check_typedef (type);
6924
6925   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6926     return NULL;
6927
6928   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6929     if (ada_is_parent_field (type, i))
6930       {
6931         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6932
6933         /* If the _parent field is a pointer, then dereference it.  */
6934         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6935           parent_type = TYPE_TARGET_TYPE (parent_type);
6936         /* If there is a parallel XVS type, get the actual base type.  */
6937         parent_type = ada_get_base_type (parent_type);
6938
6939         return ada_check_typedef (parent_type);
6940       }
6941
6942   return NULL;
6943 }
6944
6945 /* True iff field number FIELD_NUM of structure type TYPE contains the
6946    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6947    a structure type with at least FIELD_NUM+1 fields.  */
6948
6949 int
6950 ada_is_parent_field (struct type *type, int field_num)
6951 {
6952   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6953
6954   return (name != NULL
6955           && (startswith (name, "PARENT")
6956               || startswith (name, "_parent")));
6957 }
6958
6959 /* True iff field number FIELD_NUM of structure type TYPE is a
6960    transparent wrapper field (which should be silently traversed when doing
6961    field selection and flattened when printing).  Assumes TYPE is a
6962    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6963    structures.  */
6964
6965 int
6966 ada_is_wrapper_field (struct type *type, int field_num)
6967 {
6968   const char *name = TYPE_FIELD_NAME (type, field_num);
6969
6970   if (name != NULL && strcmp (name, "RETVAL") == 0)
6971     {
6972       /* This happens in functions with "out" or "in out" parameters
6973          which are passed by copy.  For such functions, GNAT describes
6974          the function's return type as being a struct where the return
6975          value is in a field called RETVAL, and where the other "out"
6976          or "in out" parameters are fields of that struct.  This is not
6977          a wrapper.  */
6978       return 0;
6979     }
6980
6981   return (name != NULL
6982           && (startswith (name, "PARENT")
6983               || strcmp (name, "REP") == 0
6984               || startswith (name, "_parent")
6985               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6986 }
6987
6988 /* True iff field number FIELD_NUM of structure or union type TYPE
6989    is a variant wrapper.  Assumes TYPE is a structure type with at least
6990    FIELD_NUM+1 fields.  */
6991
6992 int
6993 ada_is_variant_part (struct type *type, int field_num)
6994 {
6995   /* Only Ada types are eligible.  */
6996   if (!ADA_TYPE_P (type))
6997     return 0;
6998
6999   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
7000
7001   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
7002           || (is_dynamic_field (type, field_num)
7003               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
7004                   == TYPE_CODE_UNION)));
7005 }
7006
7007 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
7008    whose discriminants are contained in the record type OUTER_TYPE,
7009    returns the type of the controlling discriminant for the variant.
7010    May return NULL if the type could not be found.  */
7011
7012 struct type *
7013 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
7014 {
7015   const char *name = ada_variant_discrim_name (var_type);
7016
7017   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
7018 }
7019
7020 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
7021    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
7022    represents a 'when others' clause; otherwise 0.  */
7023
7024 int
7025 ada_is_others_clause (struct type *type, int field_num)
7026 {
7027   const char *name = TYPE_FIELD_NAME (type, field_num);
7028
7029   return (name != NULL && name[0] == 'O');
7030 }
7031
7032 /* Assuming that TYPE0 is the type of the variant part of a record,
7033    returns the name of the discriminant controlling the variant.
7034    The value is valid until the next call to ada_variant_discrim_name.  */
7035
7036 const char *
7037 ada_variant_discrim_name (struct type *type0)
7038 {
7039   static char *result = NULL;
7040   static size_t result_len = 0;
7041   struct type *type;
7042   const char *name;
7043   const char *discrim_end;
7044   const char *discrim_start;
7045
7046   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7047     type = TYPE_TARGET_TYPE (type0);
7048   else
7049     type = type0;
7050
7051   name = ada_type_name (type);
7052
7053   if (name == NULL || name[0] == '\000')
7054     return "";
7055
7056   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7057        discrim_end -= 1)
7058     {
7059       if (startswith (discrim_end, "___XVN"))
7060         break;
7061     }
7062   if (discrim_end == name)
7063     return "";
7064
7065   for (discrim_start = discrim_end; discrim_start != name + 3;
7066        discrim_start -= 1)
7067     {
7068       if (discrim_start == name + 1)
7069         return "";
7070       if ((discrim_start > name + 3
7071            && startswith (discrim_start - 3, "___"))
7072           || discrim_start[-1] == '.')
7073         break;
7074     }
7075
7076   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7077   strncpy (result, discrim_start, discrim_end - discrim_start);
7078   result[discrim_end - discrim_start] = '\0';
7079   return result;
7080 }
7081
7082 /* Scan STR for a subtype-encoded number, beginning at position K.
7083    Put the position of the character just past the number scanned in
7084    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7085    Return 1 if there was a valid number at the given position, and 0
7086    otherwise.  A "subtype-encoded" number consists of the absolute value
7087    in decimal, followed by the letter 'm' to indicate a negative number.
7088    Assumes 0m does not occur.  */
7089
7090 int
7091 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7092 {
7093   ULONGEST RU;
7094
7095   if (!isdigit (str[k]))
7096     return 0;
7097
7098   /* Do it the hard way so as not to make any assumption about
7099      the relationship of unsigned long (%lu scan format code) and
7100      LONGEST.  */
7101   RU = 0;
7102   while (isdigit (str[k]))
7103     {
7104       RU = RU * 10 + (str[k] - '0');
7105       k += 1;
7106     }
7107
7108   if (str[k] == 'm')
7109     {
7110       if (R != NULL)
7111         *R = (-(LONGEST) (RU - 1)) - 1;
7112       k += 1;
7113     }
7114   else if (R != NULL)
7115     *R = (LONGEST) RU;
7116
7117   /* NOTE on the above: Technically, C does not say what the results of
7118      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7119      number representable as a LONGEST (although either would probably work
7120      in most implementations).  When RU>0, the locution in the then branch
7121      above is always equivalent to the negative of RU.  */
7122
7123   if (new_k != NULL)
7124     *new_k = k;
7125   return 1;
7126 }
7127
7128 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7129    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7130    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7131
7132 int
7133 ada_in_variant (LONGEST val, struct type *type, int field_num)
7134 {
7135   const char *name = TYPE_FIELD_NAME (type, field_num);
7136   int p;
7137
7138   p = 0;
7139   while (1)
7140     {
7141       switch (name[p])
7142         {
7143         case '\0':
7144           return 0;
7145         case 'S':
7146           {
7147             LONGEST W;
7148
7149             if (!ada_scan_number (name, p + 1, &W, &p))
7150               return 0;
7151             if (val == W)
7152               return 1;
7153             break;
7154           }
7155         case 'R':
7156           {
7157             LONGEST L, U;
7158
7159             if (!ada_scan_number (name, p + 1, &L, &p)
7160                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7161               return 0;
7162             if (val >= L && val <= U)
7163               return 1;
7164             break;
7165           }
7166         case 'O':
7167           return 1;
7168         default:
7169           return 0;
7170         }
7171     }
7172 }
7173
7174 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7175
7176 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7177    ARG_TYPE, extract and return the value of one of its (non-static)
7178    fields.  FIELDNO says which field.   Differs from value_primitive_field
7179    only in that it can handle packed values of arbitrary type.  */
7180
7181 static struct value *
7182 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7183                            struct type *arg_type)
7184 {
7185   struct type *type;
7186
7187   arg_type = ada_check_typedef (arg_type);
7188   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7189
7190   /* Handle packed fields.  */
7191
7192   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7193     {
7194       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7195       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7196
7197       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7198                                              offset + bit_pos / 8,
7199                                              bit_pos % 8, bit_size, type);
7200     }
7201   else
7202     return value_primitive_field (arg1, offset, fieldno, arg_type);
7203 }
7204
7205 /* Find field with name NAME in object of type TYPE.  If found, 
7206    set the following for each argument that is non-null:
7207     - *FIELD_TYPE_P to the field's type; 
7208     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7209       an object of that type;
7210     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7211     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7212       0 otherwise;
7213    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7214    fields up to but not including the desired field, or by the total
7215    number of fields if not found.   A NULL value of NAME never
7216    matches; the function just counts visible fields in this case.
7217    
7218    Notice that we need to handle when a tagged record hierarchy
7219    has some components with the same name, like in this scenario:
7220
7221       type Top_T is tagged record
7222          N : Integer := 1;
7223          U : Integer := 974;
7224          A : Integer := 48;
7225       end record;
7226
7227       type Middle_T is new Top.Top_T with record
7228          N : Character := 'a';
7229          C : Integer := 3;
7230       end record;
7231
7232      type Bottom_T is new Middle.Middle_T with record
7233         N : Float := 4.0;
7234         C : Character := '5';
7235         X : Integer := 6;
7236         A : Character := 'J';
7237      end record;
7238
7239    Let's say we now have a variable declared and initialized as follow:
7240
7241      TC : Top_A := new Bottom_T;
7242
7243    And then we use this variable to call this function
7244
7245      procedure Assign (Obj: in out Top_T; TV : Integer);
7246
7247    as follow:
7248
7249       Assign (Top_T (B), 12);
7250
7251    Now, we're in the debugger, and we're inside that procedure
7252    then and we want to print the value of obj.c:
7253
7254    Usually, the tagged record or one of the parent type owns the
7255    component to print and there's no issue but in this particular
7256    case, what does it mean to ask for Obj.C? Since the actual
7257    type for object is type Bottom_T, it could mean two things: type
7258    component C from the Middle_T view, but also component C from
7259    Bottom_T.  So in that "undefined" case, when the component is
7260    not found in the non-resolved type (which includes all the
7261    components of the parent type), then resolve it and see if we
7262    get better luck once expanded.
7263
7264    In the case of homonyms in the derived tagged type, we don't
7265    guaranty anything, and pick the one that's easiest for us
7266    to program.
7267
7268    Returns 1 if found, 0 otherwise.  */
7269
7270 static int
7271 find_struct_field (const char *name, struct type *type, int offset,
7272                    struct type **field_type_p,
7273                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7274                    int *index_p)
7275 {
7276   int i;
7277   int parent_offset = -1;
7278
7279   type = ada_check_typedef (type);
7280
7281   if (field_type_p != NULL)
7282     *field_type_p = NULL;
7283   if (byte_offset_p != NULL)
7284     *byte_offset_p = 0;
7285   if (bit_offset_p != NULL)
7286     *bit_offset_p = 0;
7287   if (bit_size_p != NULL)
7288     *bit_size_p = 0;
7289
7290   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7291     {
7292       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7293       int fld_offset = offset + bit_pos / 8;
7294       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7295
7296       if (t_field_name == NULL)
7297         continue;
7298
7299       else if (ada_is_parent_field (type, i))
7300         {
7301           /* This is a field pointing us to the parent type of a tagged
7302              type.  As hinted in this function's documentation, we give
7303              preference to fields in the current record first, so what
7304              we do here is just record the index of this field before
7305              we skip it.  If it turns out we couldn't find our field
7306              in the current record, then we'll get back to it and search
7307              inside it whether the field might exist in the parent.  */
7308
7309           parent_offset = i;
7310           continue;
7311         }
7312
7313       else if (name != NULL && field_name_match (t_field_name, name))
7314         {
7315           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7316
7317           if (field_type_p != NULL)
7318             *field_type_p = TYPE_FIELD_TYPE (type, i);
7319           if (byte_offset_p != NULL)
7320             *byte_offset_p = fld_offset;
7321           if (bit_offset_p != NULL)
7322             *bit_offset_p = bit_pos % 8;
7323           if (bit_size_p != NULL)
7324             *bit_size_p = bit_size;
7325           return 1;
7326         }
7327       else if (ada_is_wrapper_field (type, i))
7328         {
7329           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7330                                  field_type_p, byte_offset_p, bit_offset_p,
7331                                  bit_size_p, index_p))
7332             return 1;
7333         }
7334       else if (ada_is_variant_part (type, i))
7335         {
7336           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7337              fixed type?? */
7338           int j;
7339           struct type *field_type
7340             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7341
7342           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7343             {
7344               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7345                                      fld_offset
7346                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7347                                      field_type_p, byte_offset_p,
7348                                      bit_offset_p, bit_size_p, index_p))
7349                 return 1;
7350             }
7351         }
7352       else if (index_p != NULL)
7353         *index_p += 1;
7354     }
7355
7356   /* Field not found so far.  If this is a tagged type which
7357      has a parent, try finding that field in the parent now.  */
7358
7359   if (parent_offset != -1)
7360     {
7361       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7362       int fld_offset = offset + bit_pos / 8;
7363
7364       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7365                              fld_offset, field_type_p, byte_offset_p,
7366                              bit_offset_p, bit_size_p, index_p))
7367         return 1;
7368     }
7369
7370   return 0;
7371 }
7372
7373 /* Number of user-visible fields in record type TYPE.  */
7374
7375 static int
7376 num_visible_fields (struct type *type)
7377 {
7378   int n;
7379
7380   n = 0;
7381   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7382   return n;
7383 }
7384
7385 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7386    and search in it assuming it has (class) type TYPE.
7387    If found, return value, else return NULL.
7388
7389    Searches recursively through wrapper fields (e.g., '_parent').
7390
7391    In the case of homonyms in the tagged types, please refer to the
7392    long explanation in find_struct_field's function documentation.  */
7393
7394 static struct value *
7395 ada_search_struct_field (const char *name, struct value *arg, int offset,
7396                          struct type *type)
7397 {
7398   int i;
7399   int parent_offset = -1;
7400
7401   type = ada_check_typedef (type);
7402   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7403     {
7404       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7405
7406       if (t_field_name == NULL)
7407         continue;
7408
7409       else if (ada_is_parent_field (type, i))
7410         {
7411           /* This is a field pointing us to the parent type of a tagged
7412              type.  As hinted in this function's documentation, we give
7413              preference to fields in the current record first, so what
7414              we do here is just record the index of this field before
7415              we skip it.  If it turns out we couldn't find our field
7416              in the current record, then we'll get back to it and search
7417              inside it whether the field might exist in the parent.  */
7418
7419           parent_offset = i;
7420           continue;
7421         }
7422
7423       else if (field_name_match (t_field_name, name))
7424         return ada_value_primitive_field (arg, offset, i, type);
7425
7426       else if (ada_is_wrapper_field (type, i))
7427         {
7428           struct value *v =     /* Do not let indent join lines here.  */
7429             ada_search_struct_field (name, arg,
7430                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7431                                      TYPE_FIELD_TYPE (type, i));
7432
7433           if (v != NULL)
7434             return v;
7435         }
7436
7437       else if (ada_is_variant_part (type, i))
7438         {
7439           /* PNH: Do we ever get here?  See find_struct_field.  */
7440           int j;
7441           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7442                                                                         i));
7443           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7444
7445           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7446             {
7447               struct value *v = ada_search_struct_field /* Force line
7448                                                            break.  */
7449                 (name, arg,
7450                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7451                  TYPE_FIELD_TYPE (field_type, j));
7452
7453               if (v != NULL)
7454                 return v;
7455             }
7456         }
7457     }
7458
7459   /* Field not found so far.  If this is a tagged type which
7460      has a parent, try finding that field in the parent now.  */
7461
7462   if (parent_offset != -1)
7463     {
7464       struct value *v = ada_search_struct_field (
7465         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7466         TYPE_FIELD_TYPE (type, parent_offset));
7467
7468       if (v != NULL)
7469         return v;
7470     }
7471
7472   return NULL;
7473 }
7474
7475 static struct value *ada_index_struct_field_1 (int *, struct value *,
7476                                                int, struct type *);
7477
7478
7479 /* Return field #INDEX in ARG, where the index is that returned by
7480  * find_struct_field through its INDEX_P argument.  Adjust the address
7481  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7482  * If found, return value, else return NULL.  */
7483
7484 static struct value *
7485 ada_index_struct_field (int index, struct value *arg, int offset,
7486                         struct type *type)
7487 {
7488   return ada_index_struct_field_1 (&index, arg, offset, type);
7489 }
7490
7491
7492 /* Auxiliary function for ada_index_struct_field.  Like
7493  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7494  * *INDEX_P.  */
7495
7496 static struct value *
7497 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7498                           struct type *type)
7499 {
7500   int i;
7501   type = ada_check_typedef (type);
7502
7503   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7504     {
7505       if (TYPE_FIELD_NAME (type, i) == NULL)
7506         continue;
7507       else if (ada_is_wrapper_field (type, i))
7508         {
7509           struct value *v =     /* Do not let indent join lines here.  */
7510             ada_index_struct_field_1 (index_p, arg,
7511                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7512                                       TYPE_FIELD_TYPE (type, i));
7513
7514           if (v != NULL)
7515             return v;
7516         }
7517
7518       else if (ada_is_variant_part (type, i))
7519         {
7520           /* PNH: Do we ever get here?  See ada_search_struct_field,
7521              find_struct_field.  */
7522           error (_("Cannot assign this kind of variant record"));
7523         }
7524       else if (*index_p == 0)
7525         return ada_value_primitive_field (arg, offset, i, type);
7526       else
7527         *index_p -= 1;
7528     }
7529   return NULL;
7530 }
7531
7532 /* Given ARG, a value of type (pointer or reference to a)*
7533    structure/union, extract the component named NAME from the ultimate
7534    target structure/union and return it as a value with its
7535    appropriate type.
7536
7537    The routine searches for NAME among all members of the structure itself
7538    and (recursively) among all members of any wrapper members
7539    (e.g., '_parent').
7540
7541    If NO_ERR, then simply return NULL in case of error, rather than 
7542    calling error.  */
7543
7544 struct value *
7545 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7546 {
7547   struct type *t, *t1;
7548   struct value *v;
7549   int check_tag;
7550
7551   v = NULL;
7552   t1 = t = ada_check_typedef (value_type (arg));
7553   if (TYPE_CODE (t) == TYPE_CODE_REF)
7554     {
7555       t1 = TYPE_TARGET_TYPE (t);
7556       if (t1 == NULL)
7557         goto BadValue;
7558       t1 = ada_check_typedef (t1);
7559       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7560         {
7561           arg = coerce_ref (arg);
7562           t = t1;
7563         }
7564     }
7565
7566   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7567     {
7568       t1 = TYPE_TARGET_TYPE (t);
7569       if (t1 == NULL)
7570         goto BadValue;
7571       t1 = ada_check_typedef (t1);
7572       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7573         {
7574           arg = value_ind (arg);
7575           t = t1;
7576         }
7577       else
7578         break;
7579     }
7580
7581   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7582     goto BadValue;
7583
7584   if (t1 == t)
7585     v = ada_search_struct_field (name, arg, 0, t);
7586   else
7587     {
7588       int bit_offset, bit_size, byte_offset;
7589       struct type *field_type;
7590       CORE_ADDR address;
7591
7592       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7593         address = value_address (ada_value_ind (arg));
7594       else
7595         address = value_address (ada_coerce_ref (arg));
7596
7597       /* Check to see if this is a tagged type.  We also need to handle
7598          the case where the type is a reference to a tagged type, but
7599          we have to be careful to exclude pointers to tagged types.
7600          The latter should be shown as usual (as a pointer), whereas
7601          a reference should mostly be transparent to the user.  */
7602
7603       if (ada_is_tagged_type (t1, 0)
7604           || (TYPE_CODE (t1) == TYPE_CODE_REF
7605               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7606         {
7607           /* We first try to find the searched field in the current type.
7608              If not found then let's look in the fixed type.  */
7609
7610           if (!find_struct_field (name, t1, 0,
7611                                   &field_type, &byte_offset, &bit_offset,
7612                                   &bit_size, NULL))
7613             check_tag = 1;
7614           else
7615             check_tag = 0;
7616         }
7617       else
7618         check_tag = 0;
7619
7620       /* Convert to fixed type in all cases, so that we have proper
7621          offsets to each field in unconstrained record types.  */
7622       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7623                               address, NULL, check_tag);
7624
7625       if (find_struct_field (name, t1, 0,
7626                              &field_type, &byte_offset, &bit_offset,
7627                              &bit_size, NULL))
7628         {
7629           if (bit_size != 0)
7630             {
7631               if (TYPE_CODE (t) == TYPE_CODE_REF)
7632                 arg = ada_coerce_ref (arg);
7633               else
7634                 arg = ada_value_ind (arg);
7635               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7636                                                   bit_offset, bit_size,
7637                                                   field_type);
7638             }
7639           else
7640             v = value_at_lazy (field_type, address + byte_offset);
7641         }
7642     }
7643
7644   if (v != NULL || no_err)
7645     return v;
7646   else
7647     error (_("There is no member named %s."), name);
7648
7649  BadValue:
7650   if (no_err)
7651     return NULL;
7652   else
7653     error (_("Attempt to extract a component of "
7654              "a value that is not a record."));
7655 }
7656
7657 /* Return a string representation of type TYPE.  */
7658
7659 static std::string
7660 type_as_string (struct type *type)
7661 {
7662   string_file tmp_stream;
7663
7664   type_print (type, "", &tmp_stream, -1);
7665
7666   return std::move (tmp_stream.string ());
7667 }
7668
7669 /* Given a type TYPE, look up the type of the component of type named NAME.
7670    If DISPP is non-null, add its byte displacement from the beginning of a
7671    structure (pointed to by a value) of type TYPE to *DISPP (does not
7672    work for packed fields).
7673
7674    Matches any field whose name has NAME as a prefix, possibly
7675    followed by "___".
7676
7677    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7678    be a (pointer or reference)+ to a struct or union, and the
7679    ultimate target type will be searched.
7680
7681    Looks recursively into variant clauses and parent types.
7682
7683    In the case of homonyms in the tagged types, please refer to the
7684    long explanation in find_struct_field's function documentation.
7685
7686    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7687    TYPE is not a type of the right kind.  */
7688
7689 static struct type *
7690 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7691                             int noerr)
7692 {
7693   int i;
7694   int parent_offset = -1;
7695
7696   if (name == NULL)
7697     goto BadName;
7698
7699   if (refok && type != NULL)
7700     while (1)
7701       {
7702         type = ada_check_typedef (type);
7703         if (TYPE_CODE (type) != TYPE_CODE_PTR
7704             && TYPE_CODE (type) != TYPE_CODE_REF)
7705           break;
7706         type = TYPE_TARGET_TYPE (type);
7707       }
7708
7709   if (type == NULL
7710       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7711           && TYPE_CODE (type) != TYPE_CODE_UNION))
7712     {
7713       if (noerr)
7714         return NULL;
7715
7716       error (_("Type %s is not a structure or union type"),
7717              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7718     }
7719
7720   type = to_static_fixed_type (type);
7721
7722   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7723     {
7724       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7725       struct type *t;
7726
7727       if (t_field_name == NULL)
7728         continue;
7729
7730       else if (ada_is_parent_field (type, i))
7731         {
7732           /* This is a field pointing us to the parent type of a tagged
7733              type.  As hinted in this function's documentation, we give
7734              preference to fields in the current record first, so what
7735              we do here is just record the index of this field before
7736              we skip it.  If it turns out we couldn't find our field
7737              in the current record, then we'll get back to it and search
7738              inside it whether the field might exist in the parent.  */
7739
7740           parent_offset = i;
7741           continue;
7742         }
7743
7744       else if (field_name_match (t_field_name, name))
7745         return TYPE_FIELD_TYPE (type, i);
7746
7747       else if (ada_is_wrapper_field (type, i))
7748         {
7749           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7750                                           0, 1);
7751           if (t != NULL)
7752             return t;
7753         }
7754
7755       else if (ada_is_variant_part (type, i))
7756         {
7757           int j;
7758           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7759                                                                         i));
7760
7761           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7762             {
7763               /* FIXME pnh 2008/01/26: We check for a field that is
7764                  NOT wrapped in a struct, since the compiler sometimes
7765                  generates these for unchecked variant types.  Revisit
7766                  if the compiler changes this practice.  */
7767               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7768
7769               if (v_field_name != NULL 
7770                   && field_name_match (v_field_name, name))
7771                 t = TYPE_FIELD_TYPE (field_type, j);
7772               else
7773                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7774                                                                  j),
7775                                                 name, 0, 1);
7776
7777               if (t != NULL)
7778                 return t;
7779             }
7780         }
7781
7782     }
7783
7784     /* Field not found so far.  If this is a tagged type which
7785        has a parent, try finding that field in the parent now.  */
7786
7787     if (parent_offset != -1)
7788       {
7789         struct type *t;
7790
7791         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7792                                         name, 0, 1);
7793         if (t != NULL)
7794           return t;
7795       }
7796
7797 BadName:
7798   if (!noerr)
7799     {
7800       const char *name_str = name != NULL ? name : _("<null>");
7801
7802       error (_("Type %s has no component named %s"),
7803              type_as_string (type).c_str (), name_str);
7804     }
7805
7806   return NULL;
7807 }
7808
7809 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7810    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7811    represents an unchecked union (that is, the variant part of a
7812    record that is named in an Unchecked_Union pragma).  */
7813
7814 static int
7815 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7816 {
7817   const char *discrim_name = ada_variant_discrim_name (var_type);
7818
7819   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7820 }
7821
7822
7823 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7824    within a value of type OUTER_TYPE that is stored in GDB at
7825    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7826    numbering from 0) is applicable.  Returns -1 if none are.  */
7827
7828 int
7829 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7830                            const gdb_byte *outer_valaddr)
7831 {
7832   int others_clause;
7833   int i;
7834   const char *discrim_name = ada_variant_discrim_name (var_type);
7835   struct value *outer;
7836   struct value *discrim;
7837   LONGEST discrim_val;
7838
7839   /* Using plain value_from_contents_and_address here causes problems
7840      because we will end up trying to resolve a type that is currently
7841      being constructed.  */
7842   outer = value_from_contents_and_address_unresolved (outer_type,
7843                                                       outer_valaddr, 0);
7844   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7845   if (discrim == NULL)
7846     return -1;
7847   discrim_val = value_as_long (discrim);
7848
7849   others_clause = -1;
7850   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7851     {
7852       if (ada_is_others_clause (var_type, i))
7853         others_clause = i;
7854       else if (ada_in_variant (discrim_val, var_type, i))
7855         return i;
7856     }
7857
7858   return others_clause;
7859 }
7860 \f
7861
7862
7863                                 /* Dynamic-Sized Records */
7864
7865 /* Strategy: The type ostensibly attached to a value with dynamic size
7866    (i.e., a size that is not statically recorded in the debugging
7867    data) does not accurately reflect the size or layout of the value.
7868    Our strategy is to convert these values to values with accurate,
7869    conventional types that are constructed on the fly.  */
7870
7871 /* There is a subtle and tricky problem here.  In general, we cannot
7872    determine the size of dynamic records without its data.  However,
7873    the 'struct value' data structure, which GDB uses to represent
7874    quantities in the inferior process (the target), requires the size
7875    of the type at the time of its allocation in order to reserve space
7876    for GDB's internal copy of the data.  That's why the
7877    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7878    rather than struct value*s.
7879
7880    However, GDB's internal history variables ($1, $2, etc.) are
7881    struct value*s containing internal copies of the data that are not, in
7882    general, the same as the data at their corresponding addresses in
7883    the target.  Fortunately, the types we give to these values are all
7884    conventional, fixed-size types (as per the strategy described
7885    above), so that we don't usually have to perform the
7886    'to_fixed_xxx_type' conversions to look at their values.
7887    Unfortunately, there is one exception: if one of the internal
7888    history variables is an array whose elements are unconstrained
7889    records, then we will need to create distinct fixed types for each
7890    element selected.  */
7891
7892 /* The upshot of all of this is that many routines take a (type, host
7893    address, target address) triple as arguments to represent a value.
7894    The host address, if non-null, is supposed to contain an internal
7895    copy of the relevant data; otherwise, the program is to consult the
7896    target at the target address.  */
7897
7898 /* Assuming that VAL0 represents a pointer value, the result of
7899    dereferencing it.  Differs from value_ind in its treatment of
7900    dynamic-sized types.  */
7901
7902 struct value *
7903 ada_value_ind (struct value *val0)
7904 {
7905   struct value *val = value_ind (val0);
7906
7907   if (ada_is_tagged_type (value_type (val), 0))
7908     val = ada_tag_value_at_base_address (val);
7909
7910   return ada_to_fixed_value (val);
7911 }
7912
7913 /* The value resulting from dereferencing any "reference to"
7914    qualifiers on VAL0.  */
7915
7916 static struct value *
7917 ada_coerce_ref (struct value *val0)
7918 {
7919   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7920     {
7921       struct value *val = val0;
7922
7923       val = coerce_ref (val);
7924
7925       if (ada_is_tagged_type (value_type (val), 0))
7926         val = ada_tag_value_at_base_address (val);
7927
7928       return ada_to_fixed_value (val);
7929     }
7930   else
7931     return val0;
7932 }
7933
7934 /* Return OFF rounded upward if necessary to a multiple of
7935    ALIGNMENT (a power of 2).  */
7936
7937 static unsigned int
7938 align_value (unsigned int off, unsigned int alignment)
7939 {
7940   return (off + alignment - 1) & ~(alignment - 1);
7941 }
7942
7943 /* Return the bit alignment required for field #F of template type TYPE.  */
7944
7945 static unsigned int
7946 field_alignment (struct type *type, int f)
7947 {
7948   const char *name = TYPE_FIELD_NAME (type, f);
7949   int len;
7950   int align_offset;
7951
7952   /* The field name should never be null, unless the debugging information
7953      is somehow malformed.  In this case, we assume the field does not
7954      require any alignment.  */
7955   if (name == NULL)
7956     return 1;
7957
7958   len = strlen (name);
7959
7960   if (!isdigit (name[len - 1]))
7961     return 1;
7962
7963   if (isdigit (name[len - 2]))
7964     align_offset = len - 2;
7965   else
7966     align_offset = len - 1;
7967
7968   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7969     return TARGET_CHAR_BIT;
7970
7971   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7972 }
7973
7974 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7975
7976 static struct symbol *
7977 ada_find_any_type_symbol (const char *name)
7978 {
7979   struct symbol *sym;
7980
7981   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7982   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7983     return sym;
7984
7985   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7986   return sym;
7987 }
7988
7989 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7990    solely for types defined by debug info, it will not search the GDB
7991    primitive types.  */
7992
7993 static struct type *
7994 ada_find_any_type (const char *name)
7995 {
7996   struct symbol *sym = ada_find_any_type_symbol (name);
7997
7998   if (sym != NULL)
7999     return SYMBOL_TYPE (sym);
8000
8001   return NULL;
8002 }
8003
8004 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
8005    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
8006    symbol, in which case it is returned.  Otherwise, this looks for
8007    symbols whose name is that of NAME_SYM suffixed with  "___XR".
8008    Return symbol if found, and NULL otherwise.  */
8009
8010 struct symbol *
8011 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
8012 {
8013   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
8014   struct symbol *sym;
8015
8016   if (strstr (name, "___XR") != NULL)
8017      return name_sym;
8018
8019   sym = find_old_style_renaming_symbol (name, block);
8020
8021   if (sym != NULL)
8022     return sym;
8023
8024   /* Not right yet.  FIXME pnh 7/20/2007.  */
8025   sym = ada_find_any_type_symbol (name);
8026   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
8027     return sym;
8028   else
8029     return NULL;
8030 }
8031
8032 static struct symbol *
8033 find_old_style_renaming_symbol (const char *name, const struct block *block)
8034 {
8035   const struct symbol *function_sym = block_linkage_function (block);
8036   char *rename;
8037
8038   if (function_sym != NULL)
8039     {
8040       /* If the symbol is defined inside a function, NAME is not fully
8041          qualified.  This means we need to prepend the function name
8042          as well as adding the ``___XR'' suffix to build the name of
8043          the associated renaming symbol.  */
8044       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8045       /* Function names sometimes contain suffixes used
8046          for instance to qualify nested subprograms.  When building
8047          the XR type name, we need to make sure that this suffix is
8048          not included.  So do not include any suffix in the function
8049          name length below.  */
8050       int function_name_len = ada_name_prefix_len (function_name);
8051       const int rename_len = function_name_len + 2      /*  "__" */
8052         + strlen (name) + 6 /* "___XR\0" */ ;
8053
8054       /* Strip the suffix if necessary.  */
8055       ada_remove_trailing_digits (function_name, &function_name_len);
8056       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8057       ada_remove_Xbn_suffix (function_name, &function_name_len);
8058
8059       /* Library-level functions are a special case, as GNAT adds
8060          a ``_ada_'' prefix to the function name to avoid namespace
8061          pollution.  However, the renaming symbols themselves do not
8062          have this prefix, so we need to skip this prefix if present.  */
8063       if (function_name_len > 5 /* "_ada_" */
8064           && strstr (function_name, "_ada_") == function_name)
8065         {
8066           function_name += 5;
8067           function_name_len -= 5;
8068         }
8069
8070       rename = (char *) alloca (rename_len * sizeof (char));
8071       strncpy (rename, function_name, function_name_len);
8072       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8073                  "__%s___XR", name);
8074     }
8075   else
8076     {
8077       const int rename_len = strlen (name) + 6;
8078
8079       rename = (char *) alloca (rename_len * sizeof (char));
8080       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8081     }
8082
8083   return ada_find_any_type_symbol (rename);
8084 }
8085
8086 /* Because of GNAT encoding conventions, several GDB symbols may match a
8087    given type name.  If the type denoted by TYPE0 is to be preferred to
8088    that of TYPE1 for purposes of type printing, return non-zero;
8089    otherwise return 0.  */
8090
8091 int
8092 ada_prefer_type (struct type *type0, struct type *type1)
8093 {
8094   if (type1 == NULL)
8095     return 1;
8096   else if (type0 == NULL)
8097     return 0;
8098   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8099     return 1;
8100   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8101     return 0;
8102   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8103     return 1;
8104   else if (ada_is_constrained_packed_array_type (type0))
8105     return 1;
8106   else if (ada_is_array_descriptor_type (type0)
8107            && !ada_is_array_descriptor_type (type1))
8108     return 1;
8109   else
8110     {
8111       const char *type0_name = TYPE_NAME (type0);
8112       const char *type1_name = TYPE_NAME (type1);
8113
8114       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8115           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8116         return 1;
8117     }
8118   return 0;
8119 }
8120
8121 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8122    null.  */
8123
8124 const char *
8125 ada_type_name (struct type *type)
8126 {
8127   if (type == NULL)
8128     return NULL;
8129   return TYPE_NAME (type);
8130 }
8131
8132 /* Search the list of "descriptive" types associated to TYPE for a type
8133    whose name is NAME.  */
8134
8135 static struct type *
8136 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8137 {
8138   struct type *result, *tmp;
8139
8140   if (ada_ignore_descriptive_types_p)
8141     return NULL;
8142
8143   /* If there no descriptive-type info, then there is no parallel type
8144      to be found.  */
8145   if (!HAVE_GNAT_AUX_INFO (type))
8146     return NULL;
8147
8148   result = TYPE_DESCRIPTIVE_TYPE (type);
8149   while (result != NULL)
8150     {
8151       const char *result_name = ada_type_name (result);
8152
8153       if (result_name == NULL)
8154         {
8155           warning (_("unexpected null name on descriptive type"));
8156           return NULL;
8157         }
8158
8159       /* If the names match, stop.  */
8160       if (strcmp (result_name, name) == 0)
8161         break;
8162
8163       /* Otherwise, look at the next item on the list, if any.  */
8164       if (HAVE_GNAT_AUX_INFO (result))
8165         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8166       else
8167         tmp = NULL;
8168
8169       /* If not found either, try after having resolved the typedef.  */
8170       if (tmp != NULL)
8171         result = tmp;
8172       else
8173         {
8174           result = check_typedef (result);
8175           if (HAVE_GNAT_AUX_INFO (result))
8176             result = TYPE_DESCRIPTIVE_TYPE (result);
8177           else
8178             result = NULL;
8179         }
8180     }
8181
8182   /* If we didn't find a match, see whether this is a packed array.  With
8183      older compilers, the descriptive type information is either absent or
8184      irrelevant when it comes to packed arrays so the above lookup fails.
8185      Fall back to using a parallel lookup by name in this case.  */
8186   if (result == NULL && ada_is_constrained_packed_array_type (type))
8187     return ada_find_any_type (name);
8188
8189   return result;
8190 }
8191
8192 /* Find a parallel type to TYPE with the specified NAME, using the
8193    descriptive type taken from the debugging information, if available,
8194    and otherwise using the (slower) name-based method.  */
8195
8196 static struct type *
8197 ada_find_parallel_type_with_name (struct type *type, const char *name)
8198 {
8199   struct type *result = NULL;
8200
8201   if (HAVE_GNAT_AUX_INFO (type))
8202     result = find_parallel_type_by_descriptive_type (type, name);
8203   else
8204     result = ada_find_any_type (name);
8205
8206   return result;
8207 }
8208
8209 /* Same as above, but specify the name of the parallel type by appending
8210    SUFFIX to the name of TYPE.  */
8211
8212 struct type *
8213 ada_find_parallel_type (struct type *type, const char *suffix)
8214 {
8215   char *name;
8216   const char *type_name = ada_type_name (type);
8217   int len;
8218
8219   if (type_name == NULL)
8220     return NULL;
8221
8222   len = strlen (type_name);
8223
8224   name = (char *) alloca (len + strlen (suffix) + 1);
8225
8226   strcpy (name, type_name);
8227   strcpy (name + len, suffix);
8228
8229   return ada_find_parallel_type_with_name (type, name);
8230 }
8231
8232 /* If TYPE is a variable-size record type, return the corresponding template
8233    type describing its fields.  Otherwise, return NULL.  */
8234
8235 static struct type *
8236 dynamic_template_type (struct type *type)
8237 {
8238   type = ada_check_typedef (type);
8239
8240   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8241       || ada_type_name (type) == NULL)
8242     return NULL;
8243   else
8244     {
8245       int len = strlen (ada_type_name (type));
8246
8247       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8248         return type;
8249       else
8250         return ada_find_parallel_type (type, "___XVE");
8251     }
8252 }
8253
8254 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8255    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8256
8257 static int
8258 is_dynamic_field (struct type *templ_type, int field_num)
8259 {
8260   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8261
8262   return name != NULL
8263     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8264     && strstr (name, "___XVL") != NULL;
8265 }
8266
8267 /* The index of the variant field of TYPE, or -1 if TYPE does not
8268    represent a variant record type.  */
8269
8270 static int
8271 variant_field_index (struct type *type)
8272 {
8273   int f;
8274
8275   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8276     return -1;
8277
8278   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8279     {
8280       if (ada_is_variant_part (type, f))
8281         return f;
8282     }
8283   return -1;
8284 }
8285
8286 /* A record type with no fields.  */
8287
8288 static struct type *
8289 empty_record (struct type *templ)
8290 {
8291   struct type *type = alloc_type_copy (templ);
8292
8293   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8294   TYPE_NFIELDS (type) = 0;
8295   TYPE_FIELDS (type) = NULL;
8296   INIT_NONE_SPECIFIC (type);
8297   TYPE_NAME (type) = "<empty>";
8298   TYPE_LENGTH (type) = 0;
8299   return type;
8300 }
8301
8302 /* An ordinary record type (with fixed-length fields) that describes
8303    the value of type TYPE at VALADDR or ADDRESS (see comments at
8304    the beginning of this section) VAL according to GNAT conventions.
8305    DVAL0 should describe the (portion of a) record that contains any
8306    necessary discriminants.  It should be NULL if value_type (VAL) is
8307    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8308    variant field (unless unchecked) is replaced by a particular branch
8309    of the variant.
8310
8311    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8312    length are not statically known are discarded.  As a consequence,
8313    VALADDR, ADDRESS and DVAL0 are ignored.
8314
8315    NOTE: Limitations: For now, we assume that dynamic fields and
8316    variants occupy whole numbers of bytes.  However, they need not be
8317    byte-aligned.  */
8318
8319 struct type *
8320 ada_template_to_fixed_record_type_1 (struct type *type,
8321                                      const gdb_byte *valaddr,
8322                                      CORE_ADDR address, struct value *dval0,
8323                                      int keep_dynamic_fields)
8324 {
8325   struct value *mark = value_mark ();
8326   struct value *dval;
8327   struct type *rtype;
8328   int nfields, bit_len;
8329   int variant_field;
8330   long off;
8331   int fld_bit_len;
8332   int f;
8333
8334   /* Compute the number of fields in this record type that are going
8335      to be processed: unless keep_dynamic_fields, this includes only
8336      fields whose position and length are static will be processed.  */
8337   if (keep_dynamic_fields)
8338     nfields = TYPE_NFIELDS (type);
8339   else
8340     {
8341       nfields = 0;
8342       while (nfields < TYPE_NFIELDS (type)
8343              && !ada_is_variant_part (type, nfields)
8344              && !is_dynamic_field (type, nfields))
8345         nfields++;
8346     }
8347
8348   rtype = alloc_type_copy (type);
8349   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8350   INIT_NONE_SPECIFIC (rtype);
8351   TYPE_NFIELDS (rtype) = nfields;
8352   TYPE_FIELDS (rtype) = (struct field *)
8353     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8354   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8355   TYPE_NAME (rtype) = ada_type_name (type);
8356   TYPE_FIXED_INSTANCE (rtype) = 1;
8357
8358   off = 0;
8359   bit_len = 0;
8360   variant_field = -1;
8361
8362   for (f = 0; f < nfields; f += 1)
8363     {
8364       off = align_value (off, field_alignment (type, f))
8365         + TYPE_FIELD_BITPOS (type, f);
8366       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8367       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8368
8369       if (ada_is_variant_part (type, f))
8370         {
8371           variant_field = f;
8372           fld_bit_len = 0;
8373         }
8374       else if (is_dynamic_field (type, f))
8375         {
8376           const gdb_byte *field_valaddr = valaddr;
8377           CORE_ADDR field_address = address;
8378           struct type *field_type =
8379             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8380
8381           if (dval0 == NULL)
8382             {
8383               /* rtype's length is computed based on the run-time
8384                  value of discriminants.  If the discriminants are not
8385                  initialized, the type size may be completely bogus and
8386                  GDB may fail to allocate a value for it.  So check the
8387                  size first before creating the value.  */
8388               ada_ensure_varsize_limit (rtype);
8389               /* Using plain value_from_contents_and_address here
8390                  causes problems because we will end up trying to
8391                  resolve a type that is currently being
8392                  constructed.  */
8393               dval = value_from_contents_and_address_unresolved (rtype,
8394                                                                  valaddr,
8395                                                                  address);
8396               rtype = value_type (dval);
8397             }
8398           else
8399             dval = dval0;
8400
8401           /* If the type referenced by this field is an aligner type, we need
8402              to unwrap that aligner type, because its size might not be set.
8403              Keeping the aligner type would cause us to compute the wrong
8404              size for this field, impacting the offset of the all the fields
8405              that follow this one.  */
8406           if (ada_is_aligner_type (field_type))
8407             {
8408               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8409
8410               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8411               field_address = cond_offset_target (field_address, field_offset);
8412               field_type = ada_aligned_type (field_type);
8413             }
8414
8415           field_valaddr = cond_offset_host (field_valaddr,
8416                                             off / TARGET_CHAR_BIT);
8417           field_address = cond_offset_target (field_address,
8418                                               off / TARGET_CHAR_BIT);
8419
8420           /* Get the fixed type of the field.  Note that, in this case,
8421              we do not want to get the real type out of the tag: if
8422              the current field is the parent part of a tagged record,
8423              we will get the tag of the object.  Clearly wrong: the real
8424              type of the parent is not the real type of the child.  We
8425              would end up in an infinite loop.  */
8426           field_type = ada_get_base_type (field_type);
8427           field_type = ada_to_fixed_type (field_type, field_valaddr,
8428                                           field_address, dval, 0);
8429           /* If the field size is already larger than the maximum
8430              object size, then the record itself will necessarily
8431              be larger than the maximum object size.  We need to make
8432              this check now, because the size might be so ridiculously
8433              large (due to an uninitialized variable in the inferior)
8434              that it would cause an overflow when adding it to the
8435              record size.  */
8436           ada_ensure_varsize_limit (field_type);
8437
8438           TYPE_FIELD_TYPE (rtype, f) = field_type;
8439           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8440           /* The multiplication can potentially overflow.  But because
8441              the field length has been size-checked just above, and
8442              assuming that the maximum size is a reasonable value,
8443              an overflow should not happen in practice.  So rather than
8444              adding overflow recovery code to this already complex code,
8445              we just assume that it's not going to happen.  */
8446           fld_bit_len =
8447             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8448         }
8449       else
8450         {
8451           /* Note: If this field's type is a typedef, it is important
8452              to preserve the typedef layer.
8453
8454              Otherwise, we might be transforming a typedef to a fat
8455              pointer (encoding a pointer to an unconstrained array),
8456              into a basic fat pointer (encoding an unconstrained
8457              array).  As both types are implemented using the same
8458              structure, the typedef is the only clue which allows us
8459              to distinguish between the two options.  Stripping it
8460              would prevent us from printing this field appropriately.  */
8461           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8462           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8463           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8464             fld_bit_len =
8465               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8466           else
8467             {
8468               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8469
8470               /* We need to be careful of typedefs when computing
8471                  the length of our field.  If this is a typedef,
8472                  get the length of the target type, not the length
8473                  of the typedef.  */
8474               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8475                 field_type = ada_typedef_target_type (field_type);
8476
8477               fld_bit_len =
8478                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8479             }
8480         }
8481       if (off + fld_bit_len > bit_len)
8482         bit_len = off + fld_bit_len;
8483       off += fld_bit_len;
8484       TYPE_LENGTH (rtype) =
8485         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8486     }
8487
8488   /* We handle the variant part, if any, at the end because of certain
8489      odd cases in which it is re-ordered so as NOT to be the last field of
8490      the record.  This can happen in the presence of representation
8491      clauses.  */
8492   if (variant_field >= 0)
8493     {
8494       struct type *branch_type;
8495
8496       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8497
8498       if (dval0 == NULL)
8499         {
8500           /* Using plain value_from_contents_and_address here causes
8501              problems because we will end up trying to resolve a type
8502              that is currently being constructed.  */
8503           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8504                                                              address);
8505           rtype = value_type (dval);
8506         }
8507       else
8508         dval = dval0;
8509
8510       branch_type =
8511         to_fixed_variant_branch_type
8512         (TYPE_FIELD_TYPE (type, variant_field),
8513          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8514          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8515       if (branch_type == NULL)
8516         {
8517           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8518             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8519           TYPE_NFIELDS (rtype) -= 1;
8520         }
8521       else
8522         {
8523           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8524           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8525           fld_bit_len =
8526             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8527             TARGET_CHAR_BIT;
8528           if (off + fld_bit_len > bit_len)
8529             bit_len = off + fld_bit_len;
8530           TYPE_LENGTH (rtype) =
8531             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8532         }
8533     }
8534
8535   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8536      should contain the alignment of that record, which should be a strictly
8537      positive value.  If null or negative, then something is wrong, most
8538      probably in the debug info.  In that case, we don't round up the size
8539      of the resulting type.  If this record is not part of another structure,
8540      the current RTYPE length might be good enough for our purposes.  */
8541   if (TYPE_LENGTH (type) <= 0)
8542     {
8543       if (TYPE_NAME (rtype))
8544         warning (_("Invalid type size for `%s' detected: %s."),
8545                  TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
8546       else
8547         warning (_("Invalid type size for <unnamed> detected: %s."),
8548                  pulongest (TYPE_LENGTH (type)));
8549     }
8550   else
8551     {
8552       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8553                                          TYPE_LENGTH (type));
8554     }
8555
8556   value_free_to_mark (mark);
8557   if (TYPE_LENGTH (rtype) > varsize_limit)
8558     error (_("record type with dynamic size is larger than varsize-limit"));
8559   return rtype;
8560 }
8561
8562 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8563    of 1.  */
8564
8565 static struct type *
8566 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8567                                CORE_ADDR address, struct value *dval0)
8568 {
8569   return ada_template_to_fixed_record_type_1 (type, valaddr,
8570                                               address, dval0, 1);
8571 }
8572
8573 /* An ordinary record type in which ___XVL-convention fields and
8574    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8575    static approximations, containing all possible fields.  Uses
8576    no runtime values.  Useless for use in values, but that's OK,
8577    since the results are used only for type determinations.   Works on both
8578    structs and unions.  Representation note: to save space, we memorize
8579    the result of this function in the TYPE_TARGET_TYPE of the
8580    template type.  */
8581
8582 static struct type *
8583 template_to_static_fixed_type (struct type *type0)
8584 {
8585   struct type *type;
8586   int nfields;
8587   int f;
8588
8589   /* No need no do anything if the input type is already fixed.  */
8590   if (TYPE_FIXED_INSTANCE (type0))
8591     return type0;
8592
8593   /* Likewise if we already have computed the static approximation.  */
8594   if (TYPE_TARGET_TYPE (type0) != NULL)
8595     return TYPE_TARGET_TYPE (type0);
8596
8597   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8598   type = type0;
8599   nfields = TYPE_NFIELDS (type0);
8600
8601   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8602      recompute all over next time.  */
8603   TYPE_TARGET_TYPE (type0) = type;
8604
8605   for (f = 0; f < nfields; f += 1)
8606     {
8607       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8608       struct type *new_type;
8609
8610       if (is_dynamic_field (type0, f))
8611         {
8612           field_type = ada_check_typedef (field_type);
8613           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8614         }
8615       else
8616         new_type = static_unwrap_type (field_type);
8617
8618       if (new_type != field_type)
8619         {
8620           /* Clone TYPE0 only the first time we get a new field type.  */
8621           if (type == type0)
8622             {
8623               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8624               TYPE_CODE (type) = TYPE_CODE (type0);
8625               INIT_NONE_SPECIFIC (type);
8626               TYPE_NFIELDS (type) = nfields;
8627               TYPE_FIELDS (type) = (struct field *)
8628                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8629               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8630                       sizeof (struct field) * nfields);
8631               TYPE_NAME (type) = ada_type_name (type0);
8632               TYPE_FIXED_INSTANCE (type) = 1;
8633               TYPE_LENGTH (type) = 0;
8634             }
8635           TYPE_FIELD_TYPE (type, f) = new_type;
8636           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8637         }
8638     }
8639
8640   return type;
8641 }
8642
8643 /* Given an object of type TYPE whose contents are at VALADDR and
8644    whose address in memory is ADDRESS, returns a revision of TYPE,
8645    which should be a non-dynamic-sized record, in which the variant
8646    part, if any, is replaced with the appropriate branch.  Looks
8647    for discriminant values in DVAL0, which can be NULL if the record
8648    contains the necessary discriminant values.  */
8649
8650 static struct type *
8651 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8652                                    CORE_ADDR address, struct value *dval0)
8653 {
8654   struct value *mark = value_mark ();
8655   struct value *dval;
8656   struct type *rtype;
8657   struct type *branch_type;
8658   int nfields = TYPE_NFIELDS (type);
8659   int variant_field = variant_field_index (type);
8660
8661   if (variant_field == -1)
8662     return type;
8663
8664   if (dval0 == NULL)
8665     {
8666       dval = value_from_contents_and_address (type, valaddr, address);
8667       type = value_type (dval);
8668     }
8669   else
8670     dval = dval0;
8671
8672   rtype = alloc_type_copy (type);
8673   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8674   INIT_NONE_SPECIFIC (rtype);
8675   TYPE_NFIELDS (rtype) = nfields;
8676   TYPE_FIELDS (rtype) =
8677     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8678   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8679           sizeof (struct field) * nfields);
8680   TYPE_NAME (rtype) = ada_type_name (type);
8681   TYPE_FIXED_INSTANCE (rtype) = 1;
8682   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8683
8684   branch_type = to_fixed_variant_branch_type
8685     (TYPE_FIELD_TYPE (type, variant_field),
8686      cond_offset_host (valaddr,
8687                        TYPE_FIELD_BITPOS (type, variant_field)
8688                        / TARGET_CHAR_BIT),
8689      cond_offset_target (address,
8690                          TYPE_FIELD_BITPOS (type, variant_field)
8691                          / TARGET_CHAR_BIT), dval);
8692   if (branch_type == NULL)
8693     {
8694       int f;
8695
8696       for (f = variant_field + 1; f < nfields; f += 1)
8697         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8698       TYPE_NFIELDS (rtype) -= 1;
8699     }
8700   else
8701     {
8702       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8703       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8704       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8705       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8706     }
8707   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8708
8709   value_free_to_mark (mark);
8710   return rtype;
8711 }
8712
8713 /* An ordinary record type (with fixed-length fields) that describes
8714    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8715    beginning of this section].   Any necessary discriminants' values
8716    should be in DVAL, a record value; it may be NULL if the object
8717    at ADDR itself contains any necessary discriminant values.
8718    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8719    values from the record are needed.  Except in the case that DVAL,
8720    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8721    unchecked) is replaced by a particular branch of the variant.
8722
8723    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8724    is questionable and may be removed.  It can arise during the
8725    processing of an unconstrained-array-of-record type where all the
8726    variant branches have exactly the same size.  This is because in
8727    such cases, the compiler does not bother to use the XVS convention
8728    when encoding the record.  I am currently dubious of this
8729    shortcut and suspect the compiler should be altered.  FIXME.  */
8730
8731 static struct type *
8732 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8733                       CORE_ADDR address, struct value *dval)
8734 {
8735   struct type *templ_type;
8736
8737   if (TYPE_FIXED_INSTANCE (type0))
8738     return type0;
8739
8740   templ_type = dynamic_template_type (type0);
8741
8742   if (templ_type != NULL)
8743     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8744   else if (variant_field_index (type0) >= 0)
8745     {
8746       if (dval == NULL && valaddr == NULL && address == 0)
8747         return type0;
8748       return to_record_with_fixed_variant_part (type0, valaddr, address,
8749                                                 dval);
8750     }
8751   else
8752     {
8753       TYPE_FIXED_INSTANCE (type0) = 1;
8754       return type0;
8755     }
8756
8757 }
8758
8759 /* An ordinary record type (with fixed-length fields) that describes
8760    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8761    union type.  Any necessary discriminants' values should be in DVAL,
8762    a record value.  That is, this routine selects the appropriate
8763    branch of the union at ADDR according to the discriminant value
8764    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8765    it represents a variant subject to a pragma Unchecked_Union.  */
8766
8767 static struct type *
8768 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8769                               CORE_ADDR address, struct value *dval)
8770 {
8771   int which;
8772   struct type *templ_type;
8773   struct type *var_type;
8774
8775   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8776     var_type = TYPE_TARGET_TYPE (var_type0);
8777   else
8778     var_type = var_type0;
8779
8780   templ_type = ada_find_parallel_type (var_type, "___XVU");
8781
8782   if (templ_type != NULL)
8783     var_type = templ_type;
8784
8785   if (is_unchecked_variant (var_type, value_type (dval)))
8786       return var_type0;
8787   which =
8788     ada_which_variant_applies (var_type,
8789                                value_type (dval), value_contents (dval));
8790
8791   if (which < 0)
8792     return empty_record (var_type);
8793   else if (is_dynamic_field (var_type, which))
8794     return to_fixed_record_type
8795       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8796        valaddr, address, dval);
8797   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8798     return
8799       to_fixed_record_type
8800       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8801   else
8802     return TYPE_FIELD_TYPE (var_type, which);
8803 }
8804
8805 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8806    ENCODING_TYPE, a type following the GNAT conventions for discrete
8807    type encodings, only carries redundant information.  */
8808
8809 static int
8810 ada_is_redundant_range_encoding (struct type *range_type,
8811                                  struct type *encoding_type)
8812 {
8813   const char *bounds_str;
8814   int n;
8815   LONGEST lo, hi;
8816
8817   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8818
8819   if (TYPE_CODE (get_base_type (range_type))
8820       != TYPE_CODE (get_base_type (encoding_type)))
8821     {
8822       /* The compiler probably used a simple base type to describe
8823          the range type instead of the range's actual base type,
8824          expecting us to get the real base type from the encoding
8825          anyway.  In this situation, the encoding cannot be ignored
8826          as redundant.  */
8827       return 0;
8828     }
8829
8830   if (is_dynamic_type (range_type))
8831     return 0;
8832
8833   if (TYPE_NAME (encoding_type) == NULL)
8834     return 0;
8835
8836   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8837   if (bounds_str == NULL)
8838     return 0;
8839
8840   n = 8; /* Skip "___XDLU_".  */
8841   if (!ada_scan_number (bounds_str, n, &lo, &n))
8842     return 0;
8843   if (TYPE_LOW_BOUND (range_type) != lo)
8844     return 0;
8845
8846   n += 2; /* Skip the "__" separator between the two bounds.  */
8847   if (!ada_scan_number (bounds_str, n, &hi, &n))
8848     return 0;
8849   if (TYPE_HIGH_BOUND (range_type) != hi)
8850     return 0;
8851
8852   return 1;
8853 }
8854
8855 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8856    a type following the GNAT encoding for describing array type
8857    indices, only carries redundant information.  */
8858
8859 static int
8860 ada_is_redundant_index_type_desc (struct type *array_type,
8861                                   struct type *desc_type)
8862 {
8863   struct type *this_layer = check_typedef (array_type);
8864   int i;
8865
8866   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8867     {
8868       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8869                                             TYPE_FIELD_TYPE (desc_type, i)))
8870         return 0;
8871       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8872     }
8873
8874   return 1;
8875 }
8876
8877 /* Assuming that TYPE0 is an array type describing the type of a value
8878    at ADDR, and that DVAL describes a record containing any
8879    discriminants used in TYPE0, returns a type for the value that
8880    contains no dynamic components (that is, no components whose sizes
8881    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8882    true, gives an error message if the resulting type's size is over
8883    varsize_limit.  */
8884
8885 static struct type *
8886 to_fixed_array_type (struct type *type0, struct value *dval,
8887                      int ignore_too_big)
8888 {
8889   struct type *index_type_desc;
8890   struct type *result;
8891   int constrained_packed_array_p;
8892   static const char *xa_suffix = "___XA";
8893
8894   type0 = ada_check_typedef (type0);
8895   if (TYPE_FIXED_INSTANCE (type0))
8896     return type0;
8897
8898   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8899   if (constrained_packed_array_p)
8900     type0 = decode_constrained_packed_array_type (type0);
8901
8902   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8903
8904   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8905      encoding suffixed with 'P' may still be generated.  If so,
8906      it should be used to find the XA type.  */
8907
8908   if (index_type_desc == NULL)
8909     {
8910       const char *type_name = ada_type_name (type0);
8911
8912       if (type_name != NULL)
8913         {
8914           const int len = strlen (type_name);
8915           char *name = (char *) alloca (len + strlen (xa_suffix));
8916
8917           if (type_name[len - 1] == 'P')
8918             {
8919               strcpy (name, type_name);
8920               strcpy (name + len - 1, xa_suffix);
8921               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8922             }
8923         }
8924     }
8925
8926   ada_fixup_array_indexes_type (index_type_desc);
8927   if (index_type_desc != NULL
8928       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8929     {
8930       /* Ignore this ___XA parallel type, as it does not bring any
8931          useful information.  This allows us to avoid creating fixed
8932          versions of the array's index types, which would be identical
8933          to the original ones.  This, in turn, can also help avoid
8934          the creation of fixed versions of the array itself.  */
8935       index_type_desc = NULL;
8936     }
8937
8938   if (index_type_desc == NULL)
8939     {
8940       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8941
8942       /* NOTE: elt_type---the fixed version of elt_type0---should never
8943          depend on the contents of the array in properly constructed
8944          debugging data.  */
8945       /* Create a fixed version of the array element type.
8946          We're not providing the address of an element here,
8947          and thus the actual object value cannot be inspected to do
8948          the conversion.  This should not be a problem, since arrays of
8949          unconstrained objects are not allowed.  In particular, all
8950          the elements of an array of a tagged type should all be of
8951          the same type specified in the debugging info.  No need to
8952          consult the object tag.  */
8953       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8954
8955       /* Make sure we always create a new array type when dealing with
8956          packed array types, since we're going to fix-up the array
8957          type length and element bitsize a little further down.  */
8958       if (elt_type0 == elt_type && !constrained_packed_array_p)
8959         result = type0;
8960       else
8961         result = create_array_type (alloc_type_copy (type0),
8962                                     elt_type, TYPE_INDEX_TYPE (type0));
8963     }
8964   else
8965     {
8966       int i;
8967       struct type *elt_type0;
8968
8969       elt_type0 = type0;
8970       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8971         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8972
8973       /* NOTE: result---the fixed version of elt_type0---should never
8974          depend on the contents of the array in properly constructed
8975          debugging data.  */
8976       /* Create a fixed version of the array element type.
8977          We're not providing the address of an element here,
8978          and thus the actual object value cannot be inspected to do
8979          the conversion.  This should not be a problem, since arrays of
8980          unconstrained objects are not allowed.  In particular, all
8981          the elements of an array of a tagged type should all be of
8982          the same type specified in the debugging info.  No need to
8983          consult the object tag.  */
8984       result =
8985         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8986
8987       elt_type0 = type0;
8988       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8989         {
8990           struct type *range_type =
8991             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8992
8993           result = create_array_type (alloc_type_copy (elt_type0),
8994                                       result, range_type);
8995           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8996         }
8997       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8998         error (_("array type with dynamic size is larger than varsize-limit"));
8999     }
9000
9001   /* We want to preserve the type name.  This can be useful when
9002      trying to get the type name of a value that has already been
9003      printed (for instance, if the user did "print VAR; whatis $".  */
9004   TYPE_NAME (result) = TYPE_NAME (type0);
9005
9006   if (constrained_packed_array_p)
9007     {
9008       /* So far, the resulting type has been created as if the original
9009          type was a regular (non-packed) array type.  As a result, the
9010          bitsize of the array elements needs to be set again, and the array
9011          length needs to be recomputed based on that bitsize.  */
9012       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
9013       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
9014
9015       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
9016       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
9017       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
9018         TYPE_LENGTH (result)++;
9019     }
9020
9021   TYPE_FIXED_INSTANCE (result) = 1;
9022   return result;
9023 }
9024
9025
9026 /* A standard type (containing no dynamically sized components)
9027    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
9028    DVAL describes a record containing any discriminants used in TYPE0,
9029    and may be NULL if there are none, or if the object of type TYPE at
9030    ADDRESS or in VALADDR contains these discriminants.
9031    
9032    If CHECK_TAG is not null, in the case of tagged types, this function
9033    attempts to locate the object's tag and use it to compute the actual
9034    type.  However, when ADDRESS is null, we cannot use it to determine the
9035    location of the tag, and therefore compute the tagged type's actual type.
9036    So we return the tagged type without consulting the tag.  */
9037    
9038 static struct type *
9039 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
9040                    CORE_ADDR address, struct value *dval, int check_tag)
9041 {
9042   type = ada_check_typedef (type);
9043
9044   /* Only un-fixed types need to be handled here.  */
9045   if (!HAVE_GNAT_AUX_INFO (type))
9046     return type;
9047
9048   switch (TYPE_CODE (type))
9049     {
9050     default:
9051       return type;
9052     case TYPE_CODE_STRUCT:
9053       {
9054         struct type *static_type = to_static_fixed_type (type);
9055         struct type *fixed_record_type =
9056           to_fixed_record_type (type, valaddr, address, NULL);
9057
9058         /* If STATIC_TYPE is a tagged type and we know the object's address,
9059            then we can determine its tag, and compute the object's actual
9060            type from there.  Note that we have to use the fixed record
9061            type (the parent part of the record may have dynamic fields
9062            and the way the location of _tag is expressed may depend on
9063            them).  */
9064
9065         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9066           {
9067             struct value *tag =
9068               value_tag_from_contents_and_address
9069               (fixed_record_type,
9070                valaddr,
9071                address);
9072             struct type *real_type = type_from_tag (tag);
9073             struct value *obj =
9074               value_from_contents_and_address (fixed_record_type,
9075                                                valaddr,
9076                                                address);
9077             fixed_record_type = value_type (obj);
9078             if (real_type != NULL)
9079               return to_fixed_record_type
9080                 (real_type, NULL,
9081                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9082           }
9083
9084         /* Check to see if there is a parallel ___XVZ variable.
9085            If there is, then it provides the actual size of our type.  */
9086         else if (ada_type_name (fixed_record_type) != NULL)
9087           {
9088             const char *name = ada_type_name (fixed_record_type);
9089             char *xvz_name
9090               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9091             bool xvz_found = false;
9092             LONGEST size;
9093
9094             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9095             try
9096               {
9097                 xvz_found = get_int_var_value (xvz_name, size);
9098               }
9099             catch (const gdb_exception_error &except)
9100               {
9101                 /* We found the variable, but somehow failed to read
9102                    its value.  Rethrow the same error, but with a little
9103                    bit more information, to help the user understand
9104                    what went wrong (Eg: the variable might have been
9105                    optimized out).  */
9106                 throw_error (except.error,
9107                              _("unable to read value of %s (%s)"),
9108                              xvz_name, except.what ());
9109               }
9110
9111             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9112               {
9113                 fixed_record_type = copy_type (fixed_record_type);
9114                 TYPE_LENGTH (fixed_record_type) = size;
9115
9116                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9117                    observed this when the debugging info is STABS, and
9118                    apparently it is something that is hard to fix.
9119
9120                    In practice, we don't need the actual type definition
9121                    at all, because the presence of the XVZ variable allows us
9122                    to assume that there must be a XVS type as well, which we
9123                    should be able to use later, when we need the actual type
9124                    definition.
9125
9126                    In the meantime, pretend that the "fixed" type we are
9127                    returning is NOT a stub, because this can cause trouble
9128                    when using this type to create new types targeting it.
9129                    Indeed, the associated creation routines often check
9130                    whether the target type is a stub and will try to replace
9131                    it, thus using a type with the wrong size.  This, in turn,
9132                    might cause the new type to have the wrong size too.
9133                    Consider the case of an array, for instance, where the size
9134                    of the array is computed from the number of elements in
9135                    our array multiplied by the size of its element.  */
9136                 TYPE_STUB (fixed_record_type) = 0;
9137               }
9138           }
9139         return fixed_record_type;
9140       }
9141     case TYPE_CODE_ARRAY:
9142       return to_fixed_array_type (type, dval, 1);
9143     case TYPE_CODE_UNION:
9144       if (dval == NULL)
9145         return type;
9146       else
9147         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9148     }
9149 }
9150
9151 /* The same as ada_to_fixed_type_1, except that it preserves the type
9152    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9153
9154    The typedef layer needs be preserved in order to differentiate between
9155    arrays and array pointers when both types are implemented using the same
9156    fat pointer.  In the array pointer case, the pointer is encoded as
9157    a typedef of the pointer type.  For instance, considering:
9158
9159           type String_Access is access String;
9160           S1 : String_Access := null;
9161
9162    To the debugger, S1 is defined as a typedef of type String.  But
9163    to the user, it is a pointer.  So if the user tries to print S1,
9164    we should not dereference the array, but print the array address
9165    instead.
9166
9167    If we didn't preserve the typedef layer, we would lose the fact that
9168    the type is to be presented as a pointer (needs de-reference before
9169    being printed).  And we would also use the source-level type name.  */
9170
9171 struct type *
9172 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9173                    CORE_ADDR address, struct value *dval, int check_tag)
9174
9175 {
9176   struct type *fixed_type =
9177     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9178
9179   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9180       then preserve the typedef layer.
9181
9182       Implementation note: We can only check the main-type portion of
9183       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9184       from TYPE now returns a type that has the same instance flags
9185       as TYPE.  For instance, if TYPE is a "typedef const", and its
9186       target type is a "struct", then the typedef elimination will return
9187       a "const" version of the target type.  See check_typedef for more
9188       details about how the typedef layer elimination is done.
9189
9190       brobecker/2010-11-19: It seems to me that the only case where it is
9191       useful to preserve the typedef layer is when dealing with fat pointers.
9192       Perhaps, we could add a check for that and preserve the typedef layer
9193       only in that situation.  But this seems unecessary so far, probably
9194       because we call check_typedef/ada_check_typedef pretty much everywhere.
9195       */
9196   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9197       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9198           == TYPE_MAIN_TYPE (fixed_type)))
9199     return type;
9200
9201   return fixed_type;
9202 }
9203
9204 /* A standard (static-sized) type corresponding as well as possible to
9205    TYPE0, but based on no runtime data.  */
9206
9207 static struct type *
9208 to_static_fixed_type (struct type *type0)
9209 {
9210   struct type *type;
9211
9212   if (type0 == NULL)
9213     return NULL;
9214
9215   if (TYPE_FIXED_INSTANCE (type0))
9216     return type0;
9217
9218   type0 = ada_check_typedef (type0);
9219
9220   switch (TYPE_CODE (type0))
9221     {
9222     default:
9223       return type0;
9224     case TYPE_CODE_STRUCT:
9225       type = dynamic_template_type (type0);
9226       if (type != NULL)
9227         return template_to_static_fixed_type (type);
9228       else
9229         return template_to_static_fixed_type (type0);
9230     case TYPE_CODE_UNION:
9231       type = ada_find_parallel_type (type0, "___XVU");
9232       if (type != NULL)
9233         return template_to_static_fixed_type (type);
9234       else
9235         return template_to_static_fixed_type (type0);
9236     }
9237 }
9238
9239 /* A static approximation of TYPE with all type wrappers removed.  */
9240
9241 static struct type *
9242 static_unwrap_type (struct type *type)
9243 {
9244   if (ada_is_aligner_type (type))
9245     {
9246       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9247       if (ada_type_name (type1) == NULL)
9248         TYPE_NAME (type1) = ada_type_name (type);
9249
9250       return static_unwrap_type (type1);
9251     }
9252   else
9253     {
9254       struct type *raw_real_type = ada_get_base_type (type);
9255
9256       if (raw_real_type == type)
9257         return type;
9258       else
9259         return to_static_fixed_type (raw_real_type);
9260     }
9261 }
9262
9263 /* In some cases, incomplete and private types require
9264    cross-references that are not resolved as records (for example,
9265       type Foo;
9266       type FooP is access Foo;
9267       V: FooP;
9268       type Foo is array ...;
9269    ).  In these cases, since there is no mechanism for producing
9270    cross-references to such types, we instead substitute for FooP a
9271    stub enumeration type that is nowhere resolved, and whose tag is
9272    the name of the actual type.  Call these types "non-record stubs".  */
9273
9274 /* A type equivalent to TYPE that is not a non-record stub, if one
9275    exists, otherwise TYPE.  */
9276
9277 struct type *
9278 ada_check_typedef (struct type *type)
9279 {
9280   if (type == NULL)
9281     return NULL;
9282
9283   /* If our type is an access to an unconstrained array, which is encoded
9284      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9285      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9286      what allows us to distinguish between fat pointers that represent
9287      array types, and fat pointers that represent array access types
9288      (in both cases, the compiler implements them as fat pointers).  */
9289   if (ada_is_access_to_unconstrained_array (type))
9290     return type;
9291
9292   type = check_typedef (type);
9293   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9294       || !TYPE_STUB (type)
9295       || TYPE_NAME (type) == NULL)
9296     return type;
9297   else
9298     {
9299       const char *name = TYPE_NAME (type);
9300       struct type *type1 = ada_find_any_type (name);
9301
9302       if (type1 == NULL)
9303         return type;
9304
9305       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9306          stubs pointing to arrays, as we don't create symbols for array
9307          types, only for the typedef-to-array types).  If that's the case,
9308          strip the typedef layer.  */
9309       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9310         type1 = ada_check_typedef (type1);
9311
9312       return type1;
9313     }
9314 }
9315
9316 /* A value representing the data at VALADDR/ADDRESS as described by
9317    type TYPE0, but with a standard (static-sized) type that correctly
9318    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9319    type, then return VAL0 [this feature is simply to avoid redundant
9320    creation of struct values].  */
9321
9322 static struct value *
9323 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9324                            struct value *val0)
9325 {
9326   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9327
9328   if (type == type0 && val0 != NULL)
9329     return val0;
9330
9331   if (VALUE_LVAL (val0) != lval_memory)
9332     {
9333       /* Our value does not live in memory; it could be a convenience
9334          variable, for instance.  Create a not_lval value using val0's
9335          contents.  */
9336       return value_from_contents (type, value_contents (val0));
9337     }
9338
9339   return value_from_contents_and_address (type, 0, address);
9340 }
9341
9342 /* A value representing VAL, but with a standard (static-sized) type
9343    that correctly describes it.  Does not necessarily create a new
9344    value.  */
9345
9346 struct value *
9347 ada_to_fixed_value (struct value *val)
9348 {
9349   val = unwrap_value (val);
9350   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9351   return val;
9352 }
9353 \f
9354
9355 /* Attributes */
9356
9357 /* Table mapping attribute numbers to names.
9358    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9359
9360 static const char *attribute_names[] = {
9361   "<?>",
9362
9363   "first",
9364   "last",
9365   "length",
9366   "image",
9367   "max",
9368   "min",
9369   "modulus",
9370   "pos",
9371   "size",
9372   "tag",
9373   "val",
9374   0
9375 };
9376
9377 const char *
9378 ada_attribute_name (enum exp_opcode n)
9379 {
9380   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9381     return attribute_names[n - OP_ATR_FIRST + 1];
9382   else
9383     return attribute_names[0];
9384 }
9385
9386 /* Evaluate the 'POS attribute applied to ARG.  */
9387
9388 static LONGEST
9389 pos_atr (struct value *arg)
9390 {
9391   struct value *val = coerce_ref (arg);
9392   struct type *type = value_type (val);
9393   LONGEST result;
9394
9395   if (!discrete_type_p (type))
9396     error (_("'POS only defined on discrete types"));
9397
9398   if (!discrete_position (type, value_as_long (val), &result))
9399     error (_("enumeration value is invalid: can't find 'POS"));
9400
9401   return result;
9402 }
9403
9404 static struct value *
9405 value_pos_atr (struct type *type, struct value *arg)
9406 {
9407   return value_from_longest (type, pos_atr (arg));
9408 }
9409
9410 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9411
9412 static struct value *
9413 value_val_atr (struct type *type, struct value *arg)
9414 {
9415   if (!discrete_type_p (type))
9416     error (_("'VAL only defined on discrete types"));
9417   if (!integer_type_p (value_type (arg)))
9418     error (_("'VAL requires integral argument"));
9419
9420   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9421     {
9422       long pos = value_as_long (arg);
9423
9424       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9425         error (_("argument to 'VAL out of range"));
9426       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9427     }
9428   else
9429     return value_from_longest (type, value_as_long (arg));
9430 }
9431 \f
9432
9433                                 /* Evaluation */
9434
9435 /* True if TYPE appears to be an Ada character type.
9436    [At the moment, this is true only for Character and Wide_Character;
9437    It is a heuristic test that could stand improvement].  */
9438
9439 bool
9440 ada_is_character_type (struct type *type)
9441 {
9442   const char *name;
9443
9444   /* If the type code says it's a character, then assume it really is,
9445      and don't check any further.  */
9446   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9447     return true;
9448   
9449   /* Otherwise, assume it's a character type iff it is a discrete type
9450      with a known character type name.  */
9451   name = ada_type_name (type);
9452   return (name != NULL
9453           && (TYPE_CODE (type) == TYPE_CODE_INT
9454               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9455           && (strcmp (name, "character") == 0
9456               || strcmp (name, "wide_character") == 0
9457               || strcmp (name, "wide_wide_character") == 0
9458               || strcmp (name, "unsigned char") == 0));
9459 }
9460
9461 /* True if TYPE appears to be an Ada string type.  */
9462
9463 bool
9464 ada_is_string_type (struct type *type)
9465 {
9466   type = ada_check_typedef (type);
9467   if (type != NULL
9468       && TYPE_CODE (type) != TYPE_CODE_PTR
9469       && (ada_is_simple_array_type (type)
9470           || ada_is_array_descriptor_type (type))
9471       && ada_array_arity (type) == 1)
9472     {
9473       struct type *elttype = ada_array_element_type (type, 1);
9474
9475       return ada_is_character_type (elttype);
9476     }
9477   else
9478     return false;
9479 }
9480
9481 /* The compiler sometimes provides a parallel XVS type for a given
9482    PAD type.  Normally, it is safe to follow the PAD type directly,
9483    but older versions of the compiler have a bug that causes the offset
9484    of its "F" field to be wrong.  Following that field in that case
9485    would lead to incorrect results, but this can be worked around
9486    by ignoring the PAD type and using the associated XVS type instead.
9487
9488    Set to True if the debugger should trust the contents of PAD types.
9489    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9490 static int trust_pad_over_xvs = 1;
9491
9492 /* True if TYPE is a struct type introduced by the compiler to force the
9493    alignment of a value.  Such types have a single field with a
9494    distinctive name.  */
9495
9496 int
9497 ada_is_aligner_type (struct type *type)
9498 {
9499   type = ada_check_typedef (type);
9500
9501   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9502     return 0;
9503
9504   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9505           && TYPE_NFIELDS (type) == 1
9506           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9507 }
9508
9509 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9510    the parallel type.  */
9511
9512 struct type *
9513 ada_get_base_type (struct type *raw_type)
9514 {
9515   struct type *real_type_namer;
9516   struct type *raw_real_type;
9517
9518   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9519     return raw_type;
9520
9521   if (ada_is_aligner_type (raw_type))
9522     /* The encoding specifies that we should always use the aligner type.
9523        So, even if this aligner type has an associated XVS type, we should
9524        simply ignore it.
9525
9526        According to the compiler gurus, an XVS type parallel to an aligner
9527        type may exist because of a stabs limitation.  In stabs, aligner
9528        types are empty because the field has a variable-sized type, and
9529        thus cannot actually be used as an aligner type.  As a result,
9530        we need the associated parallel XVS type to decode the type.
9531        Since the policy in the compiler is to not change the internal
9532        representation based on the debugging info format, we sometimes
9533        end up having a redundant XVS type parallel to the aligner type.  */
9534     return raw_type;
9535
9536   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9537   if (real_type_namer == NULL
9538       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9539       || TYPE_NFIELDS (real_type_namer) != 1)
9540     return raw_type;
9541
9542   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9543     {
9544       /* This is an older encoding form where the base type needs to be
9545          looked up by name.  We prefer the newer enconding because it is
9546          more efficient.  */
9547       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9548       if (raw_real_type == NULL)
9549         return raw_type;
9550       else
9551         return raw_real_type;
9552     }
9553
9554   /* The field in our XVS type is a reference to the base type.  */
9555   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9556 }
9557
9558 /* The type of value designated by TYPE, with all aligners removed.  */
9559
9560 struct type *
9561 ada_aligned_type (struct type *type)
9562 {
9563   if (ada_is_aligner_type (type))
9564     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9565   else
9566     return ada_get_base_type (type);
9567 }
9568
9569
9570 /* The address of the aligned value in an object at address VALADDR
9571    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9572
9573 const gdb_byte *
9574 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9575 {
9576   if (ada_is_aligner_type (type))
9577     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9578                                    valaddr +
9579                                    TYPE_FIELD_BITPOS (type,
9580                                                       0) / TARGET_CHAR_BIT);
9581   else
9582     return valaddr;
9583 }
9584
9585
9586
9587 /* The printed representation of an enumeration literal with encoded
9588    name NAME.  The value is good to the next call of ada_enum_name.  */
9589 const char *
9590 ada_enum_name (const char *name)
9591 {
9592   static char *result;
9593   static size_t result_len = 0;
9594   const char *tmp;
9595
9596   /* First, unqualify the enumeration name:
9597      1. Search for the last '.' character.  If we find one, then skip
9598      all the preceding characters, the unqualified name starts
9599      right after that dot.
9600      2. Otherwise, we may be debugging on a target where the compiler
9601      translates dots into "__".  Search forward for double underscores,
9602      but stop searching when we hit an overloading suffix, which is
9603      of the form "__" followed by digits.  */
9604
9605   tmp = strrchr (name, '.');
9606   if (tmp != NULL)
9607     name = tmp + 1;
9608   else
9609     {
9610       while ((tmp = strstr (name, "__")) != NULL)
9611         {
9612           if (isdigit (tmp[2]))
9613             break;
9614           else
9615             name = tmp + 2;
9616         }
9617     }
9618
9619   if (name[0] == 'Q')
9620     {
9621       int v;
9622
9623       if (name[1] == 'U' || name[1] == 'W')
9624         {
9625           if (sscanf (name + 2, "%x", &v) != 1)
9626             return name;
9627         }
9628       else
9629         return name;
9630
9631       GROW_VECT (result, result_len, 16);
9632       if (isascii (v) && isprint (v))
9633         xsnprintf (result, result_len, "'%c'", v);
9634       else if (name[1] == 'U')
9635         xsnprintf (result, result_len, "[\"%02x\"]", v);
9636       else
9637         xsnprintf (result, result_len, "[\"%04x\"]", v);
9638
9639       return result;
9640     }
9641   else
9642     {
9643       tmp = strstr (name, "__");
9644       if (tmp == NULL)
9645         tmp = strstr (name, "$");
9646       if (tmp != NULL)
9647         {
9648           GROW_VECT (result, result_len, tmp - name + 1);
9649           strncpy (result, name, tmp - name);
9650           result[tmp - name] = '\0';
9651           return result;
9652         }
9653
9654       return name;
9655     }
9656 }
9657
9658 /* Evaluate the subexpression of EXP starting at *POS as for
9659    evaluate_type, updating *POS to point just past the evaluated
9660    expression.  */
9661
9662 static struct value *
9663 evaluate_subexp_type (struct expression *exp, int *pos)
9664 {
9665   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9666 }
9667
9668 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9669    value it wraps.  */
9670
9671 static struct value *
9672 unwrap_value (struct value *val)
9673 {
9674   struct type *type = ada_check_typedef (value_type (val));
9675
9676   if (ada_is_aligner_type (type))
9677     {
9678       struct value *v = ada_value_struct_elt (val, "F", 0);
9679       struct type *val_type = ada_check_typedef (value_type (v));
9680
9681       if (ada_type_name (val_type) == NULL)
9682         TYPE_NAME (val_type) = ada_type_name (type);
9683
9684       return unwrap_value (v);
9685     }
9686   else
9687     {
9688       struct type *raw_real_type =
9689         ada_check_typedef (ada_get_base_type (type));
9690
9691       /* If there is no parallel XVS or XVE type, then the value is
9692          already unwrapped.  Return it without further modification.  */
9693       if ((type == raw_real_type)
9694           && ada_find_parallel_type (type, "___XVE") == NULL)
9695         return val;
9696
9697       return
9698         coerce_unspec_val_to_type
9699         (val, ada_to_fixed_type (raw_real_type, 0,
9700                                  value_address (val),
9701                                  NULL, 1));
9702     }
9703 }
9704
9705 static struct value *
9706 cast_from_fixed (struct type *type, struct value *arg)
9707 {
9708   struct value *scale = ada_scaling_factor (value_type (arg));
9709   arg = value_cast (value_type (scale), arg);
9710
9711   arg = value_binop (arg, scale, BINOP_MUL);
9712   return value_cast (type, arg);
9713 }
9714
9715 static struct value *
9716 cast_to_fixed (struct type *type, struct value *arg)
9717 {
9718   if (type == value_type (arg))
9719     return arg;
9720
9721   struct value *scale = ada_scaling_factor (type);
9722   if (ada_is_fixed_point_type (value_type (arg)))
9723     arg = cast_from_fixed (value_type (scale), arg);
9724   else
9725     arg = value_cast (value_type (scale), arg);
9726
9727   arg = value_binop (arg, scale, BINOP_DIV);
9728   return value_cast (type, arg);
9729 }
9730
9731 /* Given two array types T1 and T2, return nonzero iff both arrays
9732    contain the same number of elements.  */
9733
9734 static int
9735 ada_same_array_size_p (struct type *t1, struct type *t2)
9736 {
9737   LONGEST lo1, hi1, lo2, hi2;
9738
9739   /* Get the array bounds in order to verify that the size of
9740      the two arrays match.  */
9741   if (!get_array_bounds (t1, &lo1, &hi1)
9742       || !get_array_bounds (t2, &lo2, &hi2))
9743     error (_("unable to determine array bounds"));
9744
9745   /* To make things easier for size comparison, normalize a bit
9746      the case of empty arrays by making sure that the difference
9747      between upper bound and lower bound is always -1.  */
9748   if (lo1 > hi1)
9749     hi1 = lo1 - 1;
9750   if (lo2 > hi2)
9751     hi2 = lo2 - 1;
9752
9753   return (hi1 - lo1 == hi2 - lo2);
9754 }
9755
9756 /* Assuming that VAL is an array of integrals, and TYPE represents
9757    an array with the same number of elements, but with wider integral
9758    elements, return an array "casted" to TYPE.  In practice, this
9759    means that the returned array is built by casting each element
9760    of the original array into TYPE's (wider) element type.  */
9761
9762 static struct value *
9763 ada_promote_array_of_integrals (struct type *type, struct value *val)
9764 {
9765   struct type *elt_type = TYPE_TARGET_TYPE (type);
9766   LONGEST lo, hi;
9767   struct value *res;
9768   LONGEST i;
9769
9770   /* Verify that both val and type are arrays of scalars, and
9771      that the size of val's elements is smaller than the size
9772      of type's element.  */
9773   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9774   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9775   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9776   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9777   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9778               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9779
9780   if (!get_array_bounds (type, &lo, &hi))
9781     error (_("unable to determine array bounds"));
9782
9783   res = allocate_value (type);
9784
9785   /* Promote each array element.  */
9786   for (i = 0; i < hi - lo + 1; i++)
9787     {
9788       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9789
9790       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9791               value_contents_all (elt), TYPE_LENGTH (elt_type));
9792     }
9793
9794   return res;
9795 }
9796
9797 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9798    return the converted value.  */
9799
9800 static struct value *
9801 coerce_for_assign (struct type *type, struct value *val)
9802 {
9803   struct type *type2 = value_type (val);
9804
9805   if (type == type2)
9806     return val;
9807
9808   type2 = ada_check_typedef (type2);
9809   type = ada_check_typedef (type);
9810
9811   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9812       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9813     {
9814       val = ada_value_ind (val);
9815       type2 = value_type (val);
9816     }
9817
9818   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9819       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9820     {
9821       if (!ada_same_array_size_p (type, type2))
9822         error (_("cannot assign arrays of different length"));
9823
9824       if (is_integral_type (TYPE_TARGET_TYPE (type))
9825           && is_integral_type (TYPE_TARGET_TYPE (type2))
9826           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9827                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9828         {
9829           /* Allow implicit promotion of the array elements to
9830              a wider type.  */
9831           return ada_promote_array_of_integrals (type, val);
9832         }
9833
9834       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9835           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9836         error (_("Incompatible types in assignment"));
9837       deprecated_set_value_type (val, type);
9838     }
9839   return val;
9840 }
9841
9842 static struct value *
9843 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9844 {
9845   struct value *val;
9846   struct type *type1, *type2;
9847   LONGEST v, v1, v2;
9848
9849   arg1 = coerce_ref (arg1);
9850   arg2 = coerce_ref (arg2);
9851   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9852   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9853
9854   if (TYPE_CODE (type1) != TYPE_CODE_INT
9855       || TYPE_CODE (type2) != TYPE_CODE_INT)
9856     return value_binop (arg1, arg2, op);
9857
9858   switch (op)
9859     {
9860     case BINOP_MOD:
9861     case BINOP_DIV:
9862     case BINOP_REM:
9863       break;
9864     default:
9865       return value_binop (arg1, arg2, op);
9866     }
9867
9868   v2 = value_as_long (arg2);
9869   if (v2 == 0)
9870     error (_("second operand of %s must not be zero."), op_string (op));
9871
9872   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9873     return value_binop (arg1, arg2, op);
9874
9875   v1 = value_as_long (arg1);
9876   switch (op)
9877     {
9878     case BINOP_DIV:
9879       v = v1 / v2;
9880       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9881         v += v > 0 ? -1 : 1;
9882       break;
9883     case BINOP_REM:
9884       v = v1 % v2;
9885       if (v * v1 < 0)
9886         v -= v2;
9887       break;
9888     default:
9889       /* Should not reach this point.  */
9890       v = 0;
9891     }
9892
9893   val = allocate_value (type1);
9894   store_unsigned_integer (value_contents_raw (val),
9895                           TYPE_LENGTH (value_type (val)),
9896                           gdbarch_byte_order (get_type_arch (type1)), v);
9897   return val;
9898 }
9899
9900 static int
9901 ada_value_equal (struct value *arg1, struct value *arg2)
9902 {
9903   if (ada_is_direct_array_type (value_type (arg1))
9904       || ada_is_direct_array_type (value_type (arg2)))
9905     {
9906       struct type *arg1_type, *arg2_type;
9907
9908       /* Automatically dereference any array reference before
9909          we attempt to perform the comparison.  */
9910       arg1 = ada_coerce_ref (arg1);
9911       arg2 = ada_coerce_ref (arg2);
9912
9913       arg1 = ada_coerce_to_simple_array (arg1);
9914       arg2 = ada_coerce_to_simple_array (arg2);
9915
9916       arg1_type = ada_check_typedef (value_type (arg1));
9917       arg2_type = ada_check_typedef (value_type (arg2));
9918
9919       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9920           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9921         error (_("Attempt to compare array with non-array"));
9922       /* FIXME: The following works only for types whose
9923          representations use all bits (no padding or undefined bits)
9924          and do not have user-defined equality.  */
9925       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9926               && memcmp (value_contents (arg1), value_contents (arg2),
9927                          TYPE_LENGTH (arg1_type)) == 0);
9928     }
9929   return value_equal (arg1, arg2);
9930 }
9931
9932 /* Total number of component associations in the aggregate starting at
9933    index PC in EXP.  Assumes that index PC is the start of an
9934    OP_AGGREGATE.  */
9935
9936 static int
9937 num_component_specs (struct expression *exp, int pc)
9938 {
9939   int n, m, i;
9940
9941   m = exp->elts[pc + 1].longconst;
9942   pc += 3;
9943   n = 0;
9944   for (i = 0; i < m; i += 1)
9945     {
9946       switch (exp->elts[pc].opcode) 
9947         {
9948         default:
9949           n += 1;
9950           break;
9951         case OP_CHOICES:
9952           n += exp->elts[pc + 1].longconst;
9953           break;
9954         }
9955       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9956     }
9957   return n;
9958 }
9959
9960 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9961    component of LHS (a simple array or a record), updating *POS past
9962    the expression, assuming that LHS is contained in CONTAINER.  Does
9963    not modify the inferior's memory, nor does it modify LHS (unless
9964    LHS == CONTAINER).  */
9965
9966 static void
9967 assign_component (struct value *container, struct value *lhs, LONGEST index,
9968                   struct expression *exp, int *pos)
9969 {
9970   struct value *mark = value_mark ();
9971   struct value *elt;
9972   struct type *lhs_type = check_typedef (value_type (lhs));
9973
9974   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9975     {
9976       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9977       struct value *index_val = value_from_longest (index_type, index);
9978
9979       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9980     }
9981   else
9982     {
9983       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9984       elt = ada_to_fixed_value (elt);
9985     }
9986
9987   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9988     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9989   else
9990     value_assign_to_component (container, elt, 
9991                                ada_evaluate_subexp (NULL, exp, pos, 
9992                                                     EVAL_NORMAL));
9993
9994   value_free_to_mark (mark);
9995 }
9996
9997 /* Assuming that LHS represents an lvalue having a record or array
9998    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9999    of that aggregate's value to LHS, advancing *POS past the
10000    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
10001    lvalue containing LHS (possibly LHS itself).  Does not modify
10002    the inferior's memory, nor does it modify the contents of 
10003    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
10004
10005 static struct value *
10006 assign_aggregate (struct value *container, 
10007                   struct value *lhs, struct expression *exp, 
10008                   int *pos, enum noside noside)
10009 {
10010   struct type *lhs_type;
10011   int n = exp->elts[*pos+1].longconst;
10012   LONGEST low_index, high_index;
10013   int num_specs;
10014   LONGEST *indices;
10015   int max_indices, num_indices;
10016   int i;
10017
10018   *pos += 3;
10019   if (noside != EVAL_NORMAL)
10020     {
10021       for (i = 0; i < n; i += 1)
10022         ada_evaluate_subexp (NULL, exp, pos, noside);
10023       return container;
10024     }
10025
10026   container = ada_coerce_ref (container);
10027   if (ada_is_direct_array_type (value_type (container)))
10028     container = ada_coerce_to_simple_array (container);
10029   lhs = ada_coerce_ref (lhs);
10030   if (!deprecated_value_modifiable (lhs))
10031     error (_("Left operand of assignment is not a modifiable lvalue."));
10032
10033   lhs_type = check_typedef (value_type (lhs));
10034   if (ada_is_direct_array_type (lhs_type))
10035     {
10036       lhs = ada_coerce_to_simple_array (lhs);
10037       lhs_type = check_typedef (value_type (lhs));
10038       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
10039       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
10040     }
10041   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
10042     {
10043       low_index = 0;
10044       high_index = num_visible_fields (lhs_type) - 1;
10045     }
10046   else
10047     error (_("Left-hand side must be array or record."));
10048
10049   num_specs = num_component_specs (exp, *pos - 3);
10050   max_indices = 4 * num_specs + 4;
10051   indices = XALLOCAVEC (LONGEST, max_indices);
10052   indices[0] = indices[1] = low_index - 1;
10053   indices[2] = indices[3] = high_index + 1;
10054   num_indices = 4;
10055
10056   for (i = 0; i < n; i += 1)
10057     {
10058       switch (exp->elts[*pos].opcode)
10059         {
10060           case OP_CHOICES:
10061             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10062                                            &num_indices, max_indices,
10063                                            low_index, high_index);
10064             break;
10065           case OP_POSITIONAL:
10066             aggregate_assign_positional (container, lhs, exp, pos, indices,
10067                                          &num_indices, max_indices,
10068                                          low_index, high_index);
10069             break;
10070           case OP_OTHERS:
10071             if (i != n-1)
10072               error (_("Misplaced 'others' clause"));
10073             aggregate_assign_others (container, lhs, exp, pos, indices, 
10074                                      num_indices, low_index, high_index);
10075             break;
10076           default:
10077             error (_("Internal error: bad aggregate clause"));
10078         }
10079     }
10080
10081   return container;
10082 }
10083               
10084 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10085    construct at *POS, updating *POS past the construct, given that
10086    the positions are relative to lower bound LOW, where HIGH is the 
10087    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10088    updating *NUM_INDICES as needed.  CONTAINER is as for
10089    assign_aggregate.  */
10090 static void
10091 aggregate_assign_positional (struct value *container,
10092                              struct value *lhs, struct expression *exp,
10093                              int *pos, LONGEST *indices, int *num_indices,
10094                              int max_indices, LONGEST low, LONGEST high) 
10095 {
10096   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10097   
10098   if (ind - 1 == high)
10099     warning (_("Extra components in aggregate ignored."));
10100   if (ind <= high)
10101     {
10102       add_component_interval (ind, ind, indices, num_indices, max_indices);
10103       *pos += 3;
10104       assign_component (container, lhs, ind, exp, pos);
10105     }
10106   else
10107     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10108 }
10109
10110 /* Assign into the components of LHS indexed by the OP_CHOICES
10111    construct at *POS, updating *POS past the construct, given that
10112    the allowable indices are LOW..HIGH.  Record the indices assigned
10113    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10114    needed.  CONTAINER is as for assign_aggregate.  */
10115 static void
10116 aggregate_assign_from_choices (struct value *container,
10117                                struct value *lhs, struct expression *exp,
10118                                int *pos, LONGEST *indices, int *num_indices,
10119                                int max_indices, LONGEST low, LONGEST high) 
10120 {
10121   int j;
10122   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10123   int choice_pos, expr_pc;
10124   int is_array = ada_is_direct_array_type (value_type (lhs));
10125
10126   choice_pos = *pos += 3;
10127
10128   for (j = 0; j < n_choices; j += 1)
10129     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10130   expr_pc = *pos;
10131   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10132   
10133   for (j = 0; j < n_choices; j += 1)
10134     {
10135       LONGEST lower, upper;
10136       enum exp_opcode op = exp->elts[choice_pos].opcode;
10137
10138       if (op == OP_DISCRETE_RANGE)
10139         {
10140           choice_pos += 1;
10141           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10142                                                       EVAL_NORMAL));
10143           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10144                                                       EVAL_NORMAL));
10145         }
10146       else if (is_array)
10147         {
10148           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10149                                                       EVAL_NORMAL));
10150           upper = lower;
10151         }
10152       else
10153         {
10154           int ind;
10155           const char *name;
10156
10157           switch (op)
10158             {
10159             case OP_NAME:
10160               name = &exp->elts[choice_pos + 2].string;
10161               break;
10162             case OP_VAR_VALUE:
10163               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10164               break;
10165             default:
10166               error (_("Invalid record component association."));
10167             }
10168           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10169           ind = 0;
10170           if (! find_struct_field (name, value_type (lhs), 0, 
10171                                    NULL, NULL, NULL, NULL, &ind))
10172             error (_("Unknown component name: %s."), name);
10173           lower = upper = ind;
10174         }
10175
10176       if (lower <= upper && (lower < low || upper > high))
10177         error (_("Index in component association out of bounds."));
10178
10179       add_component_interval (lower, upper, indices, num_indices,
10180                               max_indices);
10181       while (lower <= upper)
10182         {
10183           int pos1;
10184
10185           pos1 = expr_pc;
10186           assign_component (container, lhs, lower, exp, &pos1);
10187           lower += 1;
10188         }
10189     }
10190 }
10191
10192 /* Assign the value of the expression in the OP_OTHERS construct in
10193    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10194    have not been previously assigned.  The index intervals already assigned
10195    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10196    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10197 static void
10198 aggregate_assign_others (struct value *container,
10199                          struct value *lhs, struct expression *exp,
10200                          int *pos, LONGEST *indices, int num_indices,
10201                          LONGEST low, LONGEST high) 
10202 {
10203   int i;
10204   int expr_pc = *pos + 1;
10205   
10206   for (i = 0; i < num_indices - 2; i += 2)
10207     {
10208       LONGEST ind;
10209
10210       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10211         {
10212           int localpos;
10213
10214           localpos = expr_pc;
10215           assign_component (container, lhs, ind, exp, &localpos);
10216         }
10217     }
10218   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10219 }
10220
10221 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10222    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10223    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10224    MAX_SIZE.  The resulting intervals do not overlap.  */
10225 static void
10226 add_component_interval (LONGEST low, LONGEST high, 
10227                         LONGEST* indices, int *size, int max_size)
10228 {
10229   int i, j;
10230
10231   for (i = 0; i < *size; i += 2) {
10232     if (high >= indices[i] && low <= indices[i + 1])
10233       {
10234         int kh;
10235
10236         for (kh = i + 2; kh < *size; kh += 2)
10237           if (high < indices[kh])
10238             break;
10239         if (low < indices[i])
10240           indices[i] = low;
10241         indices[i + 1] = indices[kh - 1];
10242         if (high > indices[i + 1])
10243           indices[i + 1] = high;
10244         memcpy (indices + i + 2, indices + kh, *size - kh);
10245         *size -= kh - i - 2;
10246         return;
10247       }
10248     else if (high < indices[i])
10249       break;
10250   }
10251         
10252   if (*size == max_size)
10253     error (_("Internal error: miscounted aggregate components."));
10254   *size += 2;
10255   for (j = *size-1; j >= i+2; j -= 1)
10256     indices[j] = indices[j - 2];
10257   indices[i] = low;
10258   indices[i + 1] = high;
10259 }
10260
10261 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10262    is different.  */
10263
10264 static struct value *
10265 ada_value_cast (struct type *type, struct value *arg2)
10266 {
10267   if (type == ada_check_typedef (value_type (arg2)))
10268     return arg2;
10269
10270   if (ada_is_fixed_point_type (type))
10271     return cast_to_fixed (type, arg2);
10272
10273   if (ada_is_fixed_point_type (value_type (arg2)))
10274     return cast_from_fixed (type, arg2);
10275
10276   return value_cast (type, arg2);
10277 }
10278
10279 /*  Evaluating Ada expressions, and printing their result.
10280     ------------------------------------------------------
10281
10282     1. Introduction:
10283     ----------------
10284
10285     We usually evaluate an Ada expression in order to print its value.
10286     We also evaluate an expression in order to print its type, which
10287     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10288     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10289     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10290     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10291     similar.
10292
10293     Evaluating expressions is a little more complicated for Ada entities
10294     than it is for entities in languages such as C.  The main reason for
10295     this is that Ada provides types whose definition might be dynamic.
10296     One example of such types is variant records.  Or another example
10297     would be an array whose bounds can only be known at run time.
10298
10299     The following description is a general guide as to what should be
10300     done (and what should NOT be done) in order to evaluate an expression
10301     involving such types, and when.  This does not cover how the semantic
10302     information is encoded by GNAT as this is covered separatly.  For the
10303     document used as the reference for the GNAT encoding, see exp_dbug.ads
10304     in the GNAT sources.
10305
10306     Ideally, we should embed each part of this description next to its
10307     associated code.  Unfortunately, the amount of code is so vast right
10308     now that it's hard to see whether the code handling a particular
10309     situation might be duplicated or not.  One day, when the code is
10310     cleaned up, this guide might become redundant with the comments
10311     inserted in the code, and we might want to remove it.
10312
10313     2. ``Fixing'' an Entity, the Simple Case:
10314     -----------------------------------------
10315
10316     When evaluating Ada expressions, the tricky issue is that they may
10317     reference entities whose type contents and size are not statically
10318     known.  Consider for instance a variant record:
10319
10320        type Rec (Empty : Boolean := True) is record
10321           case Empty is
10322              when True => null;
10323              when False => Value : Integer;
10324           end case;
10325        end record;
10326        Yes : Rec := (Empty => False, Value => 1);
10327        No  : Rec := (empty => True);
10328
10329     The size and contents of that record depends on the value of the
10330     descriminant (Rec.Empty).  At this point, neither the debugging
10331     information nor the associated type structure in GDB are able to
10332     express such dynamic types.  So what the debugger does is to create
10333     "fixed" versions of the type that applies to the specific object.
10334     We also informally refer to this opperation as "fixing" an object,
10335     which means creating its associated fixed type.
10336
10337     Example: when printing the value of variable "Yes" above, its fixed
10338     type would look like this:
10339
10340        type Rec is record
10341           Empty : Boolean;
10342           Value : Integer;
10343        end record;
10344
10345     On the other hand, if we printed the value of "No", its fixed type
10346     would become:
10347
10348        type Rec is record
10349           Empty : Boolean;
10350        end record;
10351
10352     Things become a little more complicated when trying to fix an entity
10353     with a dynamic type that directly contains another dynamic type,
10354     such as an array of variant records, for instance.  There are
10355     two possible cases: Arrays, and records.
10356
10357     3. ``Fixing'' Arrays:
10358     ---------------------
10359
10360     The type structure in GDB describes an array in terms of its bounds,
10361     and the type of its elements.  By design, all elements in the array
10362     have the same type and we cannot represent an array of variant elements
10363     using the current type structure in GDB.  When fixing an array,
10364     we cannot fix the array element, as we would potentially need one
10365     fixed type per element of the array.  As a result, the best we can do
10366     when fixing an array is to produce an array whose bounds and size
10367     are correct (allowing us to read it from memory), but without having
10368     touched its element type.  Fixing each element will be done later,
10369     when (if) necessary.
10370
10371     Arrays are a little simpler to handle than records, because the same
10372     amount of memory is allocated for each element of the array, even if
10373     the amount of space actually used by each element differs from element
10374     to element.  Consider for instance the following array of type Rec:
10375
10376        type Rec_Array is array (1 .. 2) of Rec;
10377
10378     The actual amount of memory occupied by each element might be different
10379     from element to element, depending on the value of their discriminant.
10380     But the amount of space reserved for each element in the array remains
10381     fixed regardless.  So we simply need to compute that size using
10382     the debugging information available, from which we can then determine
10383     the array size (we multiply the number of elements of the array by
10384     the size of each element).
10385
10386     The simplest case is when we have an array of a constrained element
10387     type. For instance, consider the following type declarations:
10388
10389         type Bounded_String (Max_Size : Integer) is
10390            Length : Integer;
10391            Buffer : String (1 .. Max_Size);
10392         end record;
10393         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10394
10395     In this case, the compiler describes the array as an array of
10396     variable-size elements (identified by its XVS suffix) for which
10397     the size can be read in the parallel XVZ variable.
10398
10399     In the case of an array of an unconstrained element type, the compiler
10400     wraps the array element inside a private PAD type.  This type should not
10401     be shown to the user, and must be "unwrap"'ed before printing.  Note
10402     that we also use the adjective "aligner" in our code to designate
10403     these wrapper types.
10404
10405     In some cases, the size allocated for each element is statically
10406     known.  In that case, the PAD type already has the correct size,
10407     and the array element should remain unfixed.
10408
10409     But there are cases when this size is not statically known.
10410     For instance, assuming that "Five" is an integer variable:
10411
10412         type Dynamic is array (1 .. Five) of Integer;
10413         type Wrapper (Has_Length : Boolean := False) is record
10414            Data : Dynamic;
10415            case Has_Length is
10416               when True => Length : Integer;
10417               when False => null;
10418            end case;
10419         end record;
10420         type Wrapper_Array is array (1 .. 2) of Wrapper;
10421
10422         Hello : Wrapper_Array := (others => (Has_Length => True,
10423                                              Data => (others => 17),
10424                                              Length => 1));
10425
10426
10427     The debugging info would describe variable Hello as being an
10428     array of a PAD type.  The size of that PAD type is not statically
10429     known, but can be determined using a parallel XVZ variable.
10430     In that case, a copy of the PAD type with the correct size should
10431     be used for the fixed array.
10432
10433     3. ``Fixing'' record type objects:
10434     ----------------------------------
10435
10436     Things are slightly different from arrays in the case of dynamic
10437     record types.  In this case, in order to compute the associated
10438     fixed type, we need to determine the size and offset of each of
10439     its components.  This, in turn, requires us to compute the fixed
10440     type of each of these components.
10441
10442     Consider for instance the example:
10443
10444         type Bounded_String (Max_Size : Natural) is record
10445            Str : String (1 .. Max_Size);
10446            Length : Natural;
10447         end record;
10448         My_String : Bounded_String (Max_Size => 10);
10449
10450     In that case, the position of field "Length" depends on the size
10451     of field Str, which itself depends on the value of the Max_Size
10452     discriminant.  In order to fix the type of variable My_String,
10453     we need to fix the type of field Str.  Therefore, fixing a variant
10454     record requires us to fix each of its components.
10455
10456     However, if a component does not have a dynamic size, the component
10457     should not be fixed.  In particular, fields that use a PAD type
10458     should not fixed.  Here is an example where this might happen
10459     (assuming type Rec above):
10460
10461        type Container (Big : Boolean) is record
10462           First : Rec;
10463           After : Integer;
10464           case Big is
10465              when True => Another : Integer;
10466              when False => null;
10467           end case;
10468        end record;
10469        My_Container : Container := (Big => False,
10470                                     First => (Empty => True),
10471                                     After => 42);
10472
10473     In that example, the compiler creates a PAD type for component First,
10474     whose size is constant, and then positions the component After just
10475     right after it.  The offset of component After is therefore constant
10476     in this case.
10477
10478     The debugger computes the position of each field based on an algorithm
10479     that uses, among other things, the actual position and size of the field
10480     preceding it.  Let's now imagine that the user is trying to print
10481     the value of My_Container.  If the type fixing was recursive, we would
10482     end up computing the offset of field After based on the size of the
10483     fixed version of field First.  And since in our example First has
10484     only one actual field, the size of the fixed type is actually smaller
10485     than the amount of space allocated to that field, and thus we would
10486     compute the wrong offset of field After.
10487
10488     To make things more complicated, we need to watch out for dynamic
10489     components of variant records (identified by the ___XVL suffix in
10490     the component name).  Even if the target type is a PAD type, the size
10491     of that type might not be statically known.  So the PAD type needs
10492     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10493     we might end up with the wrong size for our component.  This can be
10494     observed with the following type declarations:
10495
10496         type Octal is new Integer range 0 .. 7;
10497         type Octal_Array is array (Positive range <>) of Octal;
10498         pragma Pack (Octal_Array);
10499
10500         type Octal_Buffer (Size : Positive) is record
10501            Buffer : Octal_Array (1 .. Size);
10502            Length : Integer;
10503         end record;
10504
10505     In that case, Buffer is a PAD type whose size is unset and needs
10506     to be computed by fixing the unwrapped type.
10507
10508     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10509     ----------------------------------------------------------
10510
10511     Lastly, when should the sub-elements of an entity that remained unfixed
10512     thus far, be actually fixed?
10513
10514     The answer is: Only when referencing that element.  For instance
10515     when selecting one component of a record, this specific component
10516     should be fixed at that point in time.  Or when printing the value
10517     of a record, each component should be fixed before its value gets
10518     printed.  Similarly for arrays, the element of the array should be
10519     fixed when printing each element of the array, or when extracting
10520     one element out of that array.  On the other hand, fixing should
10521     not be performed on the elements when taking a slice of an array!
10522
10523     Note that one of the side effects of miscomputing the offset and
10524     size of each field is that we end up also miscomputing the size
10525     of the containing type.  This can have adverse results when computing
10526     the value of an entity.  GDB fetches the value of an entity based
10527     on the size of its type, and thus a wrong size causes GDB to fetch
10528     the wrong amount of memory.  In the case where the computed size is
10529     too small, GDB fetches too little data to print the value of our
10530     entity.  Results in this case are unpredictable, as we usually read
10531     past the buffer containing the data =:-o.  */
10532
10533 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10534    for that subexpression cast to TO_TYPE.  Advance *POS over the
10535    subexpression.  */
10536
10537 static value *
10538 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10539                               enum noside noside, struct type *to_type)
10540 {
10541   int pc = *pos;
10542
10543   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10544       || exp->elts[pc].opcode == OP_VAR_VALUE)
10545     {
10546       (*pos) += 4;
10547
10548       value *val;
10549       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10550         {
10551           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10552             return value_zero (to_type, not_lval);
10553
10554           val = evaluate_var_msym_value (noside,
10555                                          exp->elts[pc + 1].objfile,
10556                                          exp->elts[pc + 2].msymbol);
10557         }
10558       else
10559         val = evaluate_var_value (noside,
10560                                   exp->elts[pc + 1].block,
10561                                   exp->elts[pc + 2].symbol);
10562
10563       if (noside == EVAL_SKIP)
10564         return eval_skip_value (exp);
10565
10566       val = ada_value_cast (to_type, val);
10567
10568       /* Follow the Ada language semantics that do not allow taking
10569          an address of the result of a cast (view conversion in Ada).  */
10570       if (VALUE_LVAL (val) == lval_memory)
10571         {
10572           if (value_lazy (val))
10573             value_fetch_lazy (val);
10574           VALUE_LVAL (val) = not_lval;
10575         }
10576       return val;
10577     }
10578
10579   value *val = evaluate_subexp (to_type, exp, pos, noside);
10580   if (noside == EVAL_SKIP)
10581     return eval_skip_value (exp);
10582   return ada_value_cast (to_type, val);
10583 }
10584
10585 /* Implement the evaluate_exp routine in the exp_descriptor structure
10586    for the Ada language.  */
10587
10588 static struct value *
10589 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10590                      int *pos, enum noside noside)
10591 {
10592   enum exp_opcode op;
10593   int tem;
10594   int pc;
10595   int preeval_pos;
10596   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10597   struct type *type;
10598   int nargs, oplen;
10599   struct value **argvec;
10600
10601   pc = *pos;
10602   *pos += 1;
10603   op = exp->elts[pc].opcode;
10604
10605   switch (op)
10606     {
10607     default:
10608       *pos -= 1;
10609       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10610
10611       if (noside == EVAL_NORMAL)
10612         arg1 = unwrap_value (arg1);
10613
10614       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10615          then we need to perform the conversion manually, because
10616          evaluate_subexp_standard doesn't do it.  This conversion is
10617          necessary in Ada because the different kinds of float/fixed
10618          types in Ada have different representations.
10619
10620          Similarly, we need to perform the conversion from OP_LONG
10621          ourselves.  */
10622       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10623         arg1 = ada_value_cast (expect_type, arg1);
10624
10625       return arg1;
10626
10627     case OP_STRING:
10628       {
10629         struct value *result;
10630
10631         *pos -= 1;
10632         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10633         /* The result type will have code OP_STRING, bashed there from 
10634            OP_ARRAY.  Bash it back.  */
10635         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10636           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10637         return result;
10638       }
10639
10640     case UNOP_CAST:
10641       (*pos) += 2;
10642       type = exp->elts[pc + 1].type;
10643       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10644
10645     case UNOP_QUAL:
10646       (*pos) += 2;
10647       type = exp->elts[pc + 1].type;
10648       return ada_evaluate_subexp (type, exp, pos, noside);
10649
10650     case BINOP_ASSIGN:
10651       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10652       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10653         {
10654           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10655           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10656             return arg1;
10657           return ada_value_assign (arg1, arg1);
10658         }
10659       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10660          except if the lhs of our assignment is a convenience variable.
10661          In the case of assigning to a convenience variable, the lhs
10662          should be exactly the result of the evaluation of the rhs.  */
10663       type = value_type (arg1);
10664       if (VALUE_LVAL (arg1) == lval_internalvar)
10665          type = NULL;
10666       arg2 = evaluate_subexp (type, exp, pos, noside);
10667       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10668         return arg1;
10669       if (ada_is_fixed_point_type (value_type (arg1)))
10670         arg2 = cast_to_fixed (value_type (arg1), arg2);
10671       else if (ada_is_fixed_point_type (value_type (arg2)))
10672         error
10673           (_("Fixed-point values must be assigned to fixed-point variables"));
10674       else
10675         arg2 = coerce_for_assign (value_type (arg1), arg2);
10676       return ada_value_assign (arg1, arg2);
10677
10678     case BINOP_ADD:
10679       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10680       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10681       if (noside == EVAL_SKIP)
10682         goto nosideret;
10683       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10684         return (value_from_longest
10685                  (value_type (arg1),
10686                   value_as_long (arg1) + value_as_long (arg2)));
10687       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10688         return (value_from_longest
10689                  (value_type (arg2),
10690                   value_as_long (arg1) + value_as_long (arg2)));
10691       if ((ada_is_fixed_point_type (value_type (arg1))
10692            || ada_is_fixed_point_type (value_type (arg2)))
10693           && value_type (arg1) != value_type (arg2))
10694         error (_("Operands of fixed-point addition must have the same type"));
10695       /* Do the addition, and cast the result to the type of the first
10696          argument.  We cannot cast the result to a reference type, so if
10697          ARG1 is a reference type, find its underlying type.  */
10698       type = value_type (arg1);
10699       while (TYPE_CODE (type) == TYPE_CODE_REF)
10700         type = TYPE_TARGET_TYPE (type);
10701       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10702       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10703
10704     case BINOP_SUB:
10705       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10706       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10707       if (noside == EVAL_SKIP)
10708         goto nosideret;
10709       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10710         return (value_from_longest
10711                  (value_type (arg1),
10712                   value_as_long (arg1) - value_as_long (arg2)));
10713       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10714         return (value_from_longest
10715                  (value_type (arg2),
10716                   value_as_long (arg1) - value_as_long (arg2)));
10717       if ((ada_is_fixed_point_type (value_type (arg1))
10718            || ada_is_fixed_point_type (value_type (arg2)))
10719           && value_type (arg1) != value_type (arg2))
10720         error (_("Operands of fixed-point subtraction "
10721                  "must have the same type"));
10722       /* Do the substraction, and cast the result to the type of the first
10723          argument.  We cannot cast the result to a reference type, so if
10724          ARG1 is a reference type, find its underlying type.  */
10725       type = value_type (arg1);
10726       while (TYPE_CODE (type) == TYPE_CODE_REF)
10727         type = TYPE_TARGET_TYPE (type);
10728       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10729       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10730
10731     case BINOP_MUL:
10732     case BINOP_DIV:
10733     case BINOP_REM:
10734     case BINOP_MOD:
10735       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10736       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10737       if (noside == EVAL_SKIP)
10738         goto nosideret;
10739       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10740         {
10741           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10742           return value_zero (value_type (arg1), not_lval);
10743         }
10744       else
10745         {
10746           type = builtin_type (exp->gdbarch)->builtin_double;
10747           if (ada_is_fixed_point_type (value_type (arg1)))
10748             arg1 = cast_from_fixed (type, arg1);
10749           if (ada_is_fixed_point_type (value_type (arg2)))
10750             arg2 = cast_from_fixed (type, arg2);
10751           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10752           return ada_value_binop (arg1, arg2, op);
10753         }
10754
10755     case BINOP_EQUAL:
10756     case BINOP_NOTEQUAL:
10757       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10758       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10759       if (noside == EVAL_SKIP)
10760         goto nosideret;
10761       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10762         tem = 0;
10763       else
10764         {
10765           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10766           tem = ada_value_equal (arg1, arg2);
10767         }
10768       if (op == BINOP_NOTEQUAL)
10769         tem = !tem;
10770       type = language_bool_type (exp->language_defn, exp->gdbarch);
10771       return value_from_longest (type, (LONGEST) tem);
10772
10773     case UNOP_NEG:
10774       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10775       if (noside == EVAL_SKIP)
10776         goto nosideret;
10777       else if (ada_is_fixed_point_type (value_type (arg1)))
10778         return value_cast (value_type (arg1), value_neg (arg1));
10779       else
10780         {
10781           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10782           return value_neg (arg1);
10783         }
10784
10785     case BINOP_LOGICAL_AND:
10786     case BINOP_LOGICAL_OR:
10787     case UNOP_LOGICAL_NOT:
10788       {
10789         struct value *val;
10790
10791         *pos -= 1;
10792         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10793         type = language_bool_type (exp->language_defn, exp->gdbarch);
10794         return value_cast (type, val);
10795       }
10796
10797     case BINOP_BITWISE_AND:
10798     case BINOP_BITWISE_IOR:
10799     case BINOP_BITWISE_XOR:
10800       {
10801         struct value *val;
10802
10803         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10804         *pos = pc;
10805         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10806
10807         return value_cast (value_type (arg1), val);
10808       }
10809
10810     case OP_VAR_VALUE:
10811       *pos -= 1;
10812
10813       if (noside == EVAL_SKIP)
10814         {
10815           *pos += 4;
10816           goto nosideret;
10817         }
10818
10819       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10820         /* Only encountered when an unresolved symbol occurs in a
10821            context other than a function call, in which case, it is
10822            invalid.  */
10823         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10824                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10825
10826       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10827         {
10828           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10829           /* Check to see if this is a tagged type.  We also need to handle
10830              the case where the type is a reference to a tagged type, but
10831              we have to be careful to exclude pointers to tagged types.
10832              The latter should be shown as usual (as a pointer), whereas
10833              a reference should mostly be transparent to the user.  */
10834           if (ada_is_tagged_type (type, 0)
10835               || (TYPE_CODE (type) == TYPE_CODE_REF
10836                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10837             {
10838               /* Tagged types are a little special in the fact that the real
10839                  type is dynamic and can only be determined by inspecting the
10840                  object's tag.  This means that we need to get the object's
10841                  value first (EVAL_NORMAL) and then extract the actual object
10842                  type from its tag.
10843
10844                  Note that we cannot skip the final step where we extract
10845                  the object type from its tag, because the EVAL_NORMAL phase
10846                  results in dynamic components being resolved into fixed ones.
10847                  This can cause problems when trying to print the type
10848                  description of tagged types whose parent has a dynamic size:
10849                  We use the type name of the "_parent" component in order
10850                  to print the name of the ancestor type in the type description.
10851                  If that component had a dynamic size, the resolution into
10852                  a fixed type would result in the loss of that type name,
10853                  thus preventing us from printing the name of the ancestor
10854                  type in the type description.  */
10855               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10856
10857               if (TYPE_CODE (type) != TYPE_CODE_REF)
10858                 {
10859                   struct type *actual_type;
10860
10861                   actual_type = type_from_tag (ada_value_tag (arg1));
10862                   if (actual_type == NULL)
10863                     /* If, for some reason, we were unable to determine
10864                        the actual type from the tag, then use the static
10865                        approximation that we just computed as a fallback.
10866                        This can happen if the debugging information is
10867                        incomplete, for instance.  */
10868                     actual_type = type;
10869                   return value_zero (actual_type, not_lval);
10870                 }
10871               else
10872                 {
10873                   /* In the case of a ref, ada_coerce_ref takes care
10874                      of determining the actual type.  But the evaluation
10875                      should return a ref as it should be valid to ask
10876                      for its address; so rebuild a ref after coerce.  */
10877                   arg1 = ada_coerce_ref (arg1);
10878                   return value_ref (arg1, TYPE_CODE_REF);
10879                 }
10880             }
10881
10882           /* Records and unions for which GNAT encodings have been
10883              generated need to be statically fixed as well.
10884              Otherwise, non-static fixing produces a type where
10885              all dynamic properties are removed, which prevents "ptype"
10886              from being able to completely describe the type.
10887              For instance, a case statement in a variant record would be
10888              replaced by the relevant components based on the actual
10889              value of the discriminants.  */
10890           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10891                && dynamic_template_type (type) != NULL)
10892               || (TYPE_CODE (type) == TYPE_CODE_UNION
10893                   && ada_find_parallel_type (type, "___XVU") != NULL))
10894             {
10895               *pos += 4;
10896               return value_zero (to_static_fixed_type (type), not_lval);
10897             }
10898         }
10899
10900       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10901       return ada_to_fixed_value (arg1);
10902
10903     case OP_FUNCALL:
10904       (*pos) += 2;
10905
10906       /* Allocate arg vector, including space for the function to be
10907          called in argvec[0] and a terminating NULL.  */
10908       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10909       argvec = XALLOCAVEC (struct value *, nargs + 2);
10910
10911       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10912           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10913         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10914                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10915       else
10916         {
10917           for (tem = 0; tem <= nargs; tem += 1)
10918             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10919           argvec[tem] = 0;
10920
10921           if (noside == EVAL_SKIP)
10922             goto nosideret;
10923         }
10924
10925       if (ada_is_constrained_packed_array_type
10926           (desc_base_type (value_type (argvec[0]))))
10927         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10928       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10929                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10930         /* This is a packed array that has already been fixed, and
10931            therefore already coerced to a simple array.  Nothing further
10932            to do.  */
10933         ;
10934       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10935         {
10936           /* Make sure we dereference references so that all the code below
10937              feels like it's really handling the referenced value.  Wrapping
10938              types (for alignment) may be there, so make sure we strip them as
10939              well.  */
10940           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10941         }
10942       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10943                && VALUE_LVAL (argvec[0]) == lval_memory)
10944         argvec[0] = value_addr (argvec[0]);
10945
10946       type = ada_check_typedef (value_type (argvec[0]));
10947
10948       /* Ada allows us to implicitly dereference arrays when subscripting
10949          them.  So, if this is an array typedef (encoding use for array
10950          access types encoded as fat pointers), strip it now.  */
10951       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10952         type = ada_typedef_target_type (type);
10953
10954       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10955         {
10956           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10957             {
10958             case TYPE_CODE_FUNC:
10959               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10960               break;
10961             case TYPE_CODE_ARRAY:
10962               break;
10963             case TYPE_CODE_STRUCT:
10964               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10965                 argvec[0] = ada_value_ind (argvec[0]);
10966               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10967               break;
10968             default:
10969               error (_("cannot subscript or call something of type `%s'"),
10970                      ada_type_name (value_type (argvec[0])));
10971               break;
10972             }
10973         }
10974
10975       switch (TYPE_CODE (type))
10976         {
10977         case TYPE_CODE_FUNC:
10978           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10979             {
10980               if (TYPE_TARGET_TYPE (type) == NULL)
10981                 error_call_unknown_return_type (NULL);
10982               return allocate_value (TYPE_TARGET_TYPE (type));
10983             }
10984           return call_function_by_hand (argvec[0], NULL,
10985                                         gdb::make_array_view (argvec + 1,
10986                                                               nargs));
10987         case TYPE_CODE_INTERNAL_FUNCTION:
10988           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10989             /* We don't know anything about what the internal
10990                function might return, but we have to return
10991                something.  */
10992             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10993                                not_lval);
10994           else
10995             return call_internal_function (exp->gdbarch, exp->language_defn,
10996                                            argvec[0], nargs, argvec + 1);
10997
10998         case TYPE_CODE_STRUCT:
10999           {
11000             int arity;
11001
11002             arity = ada_array_arity (type);
11003             type = ada_array_element_type (type, nargs);
11004             if (type == NULL)
11005               error (_("cannot subscript or call a record"));
11006             if (arity != nargs)
11007               error (_("wrong number of subscripts; expecting %d"), arity);
11008             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11009               return value_zero (ada_aligned_type (type), lval_memory);
11010             return
11011               unwrap_value (ada_value_subscript
11012                             (argvec[0], nargs, argvec + 1));
11013           }
11014         case TYPE_CODE_ARRAY:
11015           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11016             {
11017               type = ada_array_element_type (type, nargs);
11018               if (type == NULL)
11019                 error (_("element type of array unknown"));
11020               else
11021                 return value_zero (ada_aligned_type (type), lval_memory);
11022             }
11023           return
11024             unwrap_value (ada_value_subscript
11025                           (ada_coerce_to_simple_array (argvec[0]),
11026                            nargs, argvec + 1));
11027         case TYPE_CODE_PTR:     /* Pointer to array */
11028           if (noside == EVAL_AVOID_SIDE_EFFECTS)
11029             {
11030               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
11031               type = ada_array_element_type (type, nargs);
11032               if (type == NULL)
11033                 error (_("element type of array unknown"));
11034               else
11035                 return value_zero (ada_aligned_type (type), lval_memory);
11036             }
11037           return
11038             unwrap_value (ada_value_ptr_subscript (argvec[0],
11039                                                    nargs, argvec + 1));
11040
11041         default:
11042           error (_("Attempt to index or call something other than an "
11043                    "array or function"));
11044         }
11045
11046     case TERNOP_SLICE:
11047       {
11048         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11049         struct value *low_bound_val =
11050           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11051         struct value *high_bound_val =
11052           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11053         LONGEST low_bound;
11054         LONGEST high_bound;
11055
11056         low_bound_val = coerce_ref (low_bound_val);
11057         high_bound_val = coerce_ref (high_bound_val);
11058         low_bound = value_as_long (low_bound_val);
11059         high_bound = value_as_long (high_bound_val);
11060
11061         if (noside == EVAL_SKIP)
11062           goto nosideret;
11063
11064         /* If this is a reference to an aligner type, then remove all
11065            the aligners.  */
11066         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11067             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11068           TYPE_TARGET_TYPE (value_type (array)) =
11069             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11070
11071         if (ada_is_constrained_packed_array_type (value_type (array)))
11072           error (_("cannot slice a packed array"));
11073
11074         /* If this is a reference to an array or an array lvalue,
11075            convert to a pointer.  */
11076         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11077             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11078                 && VALUE_LVAL (array) == lval_memory))
11079           array = value_addr (array);
11080
11081         if (noside == EVAL_AVOID_SIDE_EFFECTS
11082             && ada_is_array_descriptor_type (ada_check_typedef
11083                                              (value_type (array))))
11084           return empty_array (ada_type_of_array (array, 0), low_bound,
11085                               high_bound);
11086
11087         array = ada_coerce_to_simple_array_ptr (array);
11088
11089         /* If we have more than one level of pointer indirection,
11090            dereference the value until we get only one level.  */
11091         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11092                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11093                      == TYPE_CODE_PTR))
11094           array = value_ind (array);
11095
11096         /* Make sure we really do have an array type before going further,
11097            to avoid a SEGV when trying to get the index type or the target
11098            type later down the road if the debug info generated by
11099            the compiler is incorrect or incomplete.  */
11100         if (!ada_is_simple_array_type (value_type (array)))
11101           error (_("cannot take slice of non-array"));
11102
11103         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11104             == TYPE_CODE_PTR)
11105           {
11106             struct type *type0 = ada_check_typedef (value_type (array));
11107
11108             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11109               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
11110             else
11111               {
11112                 struct type *arr_type0 =
11113                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11114
11115                 return ada_value_slice_from_ptr (array, arr_type0,
11116                                                  longest_to_int (low_bound),
11117                                                  longest_to_int (high_bound));
11118               }
11119           }
11120         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11121           return array;
11122         else if (high_bound < low_bound)
11123           return empty_array (value_type (array), low_bound, high_bound);
11124         else
11125           return ada_value_slice (array, longest_to_int (low_bound),
11126                                   longest_to_int (high_bound));
11127       }
11128
11129     case UNOP_IN_RANGE:
11130       (*pos) += 2;
11131       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11132       type = check_typedef (exp->elts[pc + 1].type);
11133
11134       if (noside == EVAL_SKIP)
11135         goto nosideret;
11136
11137       switch (TYPE_CODE (type))
11138         {
11139         default:
11140           lim_warning (_("Membership test incompletely implemented; "
11141                          "always returns true"));
11142           type = language_bool_type (exp->language_defn, exp->gdbarch);
11143           return value_from_longest (type, (LONGEST) 1);
11144
11145         case TYPE_CODE_RANGE:
11146           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11147           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11148           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11149           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11150           type = language_bool_type (exp->language_defn, exp->gdbarch);
11151           return
11152             value_from_longest (type,
11153                                 (value_less (arg1, arg3)
11154                                  || value_equal (arg1, arg3))
11155                                 && (value_less (arg2, arg1)
11156                                     || value_equal (arg2, arg1)));
11157         }
11158
11159     case BINOP_IN_BOUNDS:
11160       (*pos) += 2;
11161       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11162       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11163
11164       if (noside == EVAL_SKIP)
11165         goto nosideret;
11166
11167       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11168         {
11169           type = language_bool_type (exp->language_defn, exp->gdbarch);
11170           return value_zero (type, not_lval);
11171         }
11172
11173       tem = longest_to_int (exp->elts[pc + 1].longconst);
11174
11175       type = ada_index_type (value_type (arg2), tem, "range");
11176       if (!type)
11177         type = value_type (arg1);
11178
11179       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11180       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11181
11182       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11183       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11184       type = language_bool_type (exp->language_defn, exp->gdbarch);
11185       return
11186         value_from_longest (type,
11187                             (value_less (arg1, arg3)
11188                              || value_equal (arg1, arg3))
11189                             && (value_less (arg2, arg1)
11190                                 || value_equal (arg2, arg1)));
11191
11192     case TERNOP_IN_RANGE:
11193       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11194       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11195       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11196
11197       if (noside == EVAL_SKIP)
11198         goto nosideret;
11199
11200       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11201       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11202       type = language_bool_type (exp->language_defn, exp->gdbarch);
11203       return
11204         value_from_longest (type,
11205                             (value_less (arg1, arg3)
11206                              || value_equal (arg1, arg3))
11207                             && (value_less (arg2, arg1)
11208                                 || value_equal (arg2, arg1)));
11209
11210     case OP_ATR_FIRST:
11211     case OP_ATR_LAST:
11212     case OP_ATR_LENGTH:
11213       {
11214         struct type *type_arg;
11215
11216         if (exp->elts[*pos].opcode == OP_TYPE)
11217           {
11218             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11219             arg1 = NULL;
11220             type_arg = check_typedef (exp->elts[pc + 2].type);
11221           }
11222         else
11223           {
11224             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11225             type_arg = NULL;
11226           }
11227
11228         if (exp->elts[*pos].opcode != OP_LONG)
11229           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11230         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11231         *pos += 4;
11232
11233         if (noside == EVAL_SKIP)
11234           goto nosideret;
11235
11236         if (type_arg == NULL)
11237           {
11238             arg1 = ada_coerce_ref (arg1);
11239
11240             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11241               arg1 = ada_coerce_to_simple_array (arg1);
11242
11243             if (op == OP_ATR_LENGTH)
11244               type = builtin_type (exp->gdbarch)->builtin_int;
11245             else
11246               {
11247                 type = ada_index_type (value_type (arg1), tem,
11248                                        ada_attribute_name (op));
11249                 if (type == NULL)
11250                   type = builtin_type (exp->gdbarch)->builtin_int;
11251               }
11252
11253             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11254               return allocate_value (type);
11255
11256             switch (op)
11257               {
11258               default:          /* Should never happen.  */
11259                 error (_("unexpected attribute encountered"));
11260               case OP_ATR_FIRST:
11261                 return value_from_longest
11262                         (type, ada_array_bound (arg1, tem, 0));
11263               case OP_ATR_LAST:
11264                 return value_from_longest
11265                         (type, ada_array_bound (arg1, tem, 1));
11266               case OP_ATR_LENGTH:
11267                 return value_from_longest
11268                         (type, ada_array_length (arg1, tem));
11269               }
11270           }
11271         else if (discrete_type_p (type_arg))
11272           {
11273             struct type *range_type;
11274             const char *name = ada_type_name (type_arg);
11275
11276             range_type = NULL;
11277             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11278               range_type = to_fixed_range_type (type_arg, NULL);
11279             if (range_type == NULL)
11280               range_type = type_arg;
11281             switch (op)
11282               {
11283               default:
11284                 error (_("unexpected attribute encountered"));
11285               case OP_ATR_FIRST:
11286                 return value_from_longest 
11287                   (range_type, ada_discrete_type_low_bound (range_type));
11288               case OP_ATR_LAST:
11289                 return value_from_longest
11290                   (range_type, ada_discrete_type_high_bound (range_type));
11291               case OP_ATR_LENGTH:
11292                 error (_("the 'length attribute applies only to array types"));
11293               }
11294           }
11295         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11296           error (_("unimplemented type attribute"));
11297         else
11298           {
11299             LONGEST low, high;
11300
11301             if (ada_is_constrained_packed_array_type (type_arg))
11302               type_arg = decode_constrained_packed_array_type (type_arg);
11303
11304             if (op == OP_ATR_LENGTH)
11305               type = builtin_type (exp->gdbarch)->builtin_int;
11306             else
11307               {
11308                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11309                 if (type == NULL)
11310                   type = builtin_type (exp->gdbarch)->builtin_int;
11311               }
11312
11313             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11314               return allocate_value (type);
11315
11316             switch (op)
11317               {
11318               default:
11319                 error (_("unexpected attribute encountered"));
11320               case OP_ATR_FIRST:
11321                 low = ada_array_bound_from_type (type_arg, tem, 0);
11322                 return value_from_longest (type, low);
11323               case OP_ATR_LAST:
11324                 high = ada_array_bound_from_type (type_arg, tem, 1);
11325                 return value_from_longest (type, high);
11326               case OP_ATR_LENGTH:
11327                 low = ada_array_bound_from_type (type_arg, tem, 0);
11328                 high = ada_array_bound_from_type (type_arg, tem, 1);
11329                 return value_from_longest (type, high - low + 1);
11330               }
11331           }
11332       }
11333
11334     case OP_ATR_TAG:
11335       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11336       if (noside == EVAL_SKIP)
11337         goto nosideret;
11338
11339       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11340         return value_zero (ada_tag_type (arg1), not_lval);
11341
11342       return ada_value_tag (arg1);
11343
11344     case OP_ATR_MIN:
11345     case OP_ATR_MAX:
11346       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11347       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11348       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11349       if (noside == EVAL_SKIP)
11350         goto nosideret;
11351       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11352         return value_zero (value_type (arg1), not_lval);
11353       else
11354         {
11355           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11356           return value_binop (arg1, arg2,
11357                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11358         }
11359
11360     case OP_ATR_MODULUS:
11361       {
11362         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11363
11364         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11365         if (noside == EVAL_SKIP)
11366           goto nosideret;
11367
11368         if (!ada_is_modular_type (type_arg))
11369           error (_("'modulus must be applied to modular type"));
11370
11371         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11372                                    ada_modulus (type_arg));
11373       }
11374
11375
11376     case OP_ATR_POS:
11377       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11378       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11379       if (noside == EVAL_SKIP)
11380         goto nosideret;
11381       type = builtin_type (exp->gdbarch)->builtin_int;
11382       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11383         return value_zero (type, not_lval);
11384       else
11385         return value_pos_atr (type, arg1);
11386
11387     case OP_ATR_SIZE:
11388       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11389       type = value_type (arg1);
11390
11391       /* If the argument is a reference, then dereference its type, since
11392          the user is really asking for the size of the actual object,
11393          not the size of the pointer.  */
11394       if (TYPE_CODE (type) == TYPE_CODE_REF)
11395         type = TYPE_TARGET_TYPE (type);
11396
11397       if (noside == EVAL_SKIP)
11398         goto nosideret;
11399       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11400         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11401       else
11402         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11403                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11404
11405     case OP_ATR_VAL:
11406       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11407       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11408       type = exp->elts[pc + 2].type;
11409       if (noside == EVAL_SKIP)
11410         goto nosideret;
11411       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11412         return value_zero (type, not_lval);
11413       else
11414         return value_val_atr (type, arg1);
11415
11416     case BINOP_EXP:
11417       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11418       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11419       if (noside == EVAL_SKIP)
11420         goto nosideret;
11421       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11422         return value_zero (value_type (arg1), not_lval);
11423       else
11424         {
11425           /* For integer exponentiation operations,
11426              only promote the first argument.  */
11427           if (is_integral_type (value_type (arg2)))
11428             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11429           else
11430             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11431
11432           return value_binop (arg1, arg2, op);
11433         }
11434
11435     case UNOP_PLUS:
11436       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11437       if (noside == EVAL_SKIP)
11438         goto nosideret;
11439       else
11440         return arg1;
11441
11442     case UNOP_ABS:
11443       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11444       if (noside == EVAL_SKIP)
11445         goto nosideret;
11446       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11447       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11448         return value_neg (arg1);
11449       else
11450         return arg1;
11451
11452     case UNOP_IND:
11453       preeval_pos = *pos;
11454       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11455       if (noside == EVAL_SKIP)
11456         goto nosideret;
11457       type = ada_check_typedef (value_type (arg1));
11458       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11459         {
11460           if (ada_is_array_descriptor_type (type))
11461             /* GDB allows dereferencing GNAT array descriptors.  */
11462             {
11463               struct type *arrType = ada_type_of_array (arg1, 0);
11464
11465               if (arrType == NULL)
11466                 error (_("Attempt to dereference null array pointer."));
11467               return value_at_lazy (arrType, 0);
11468             }
11469           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11470                    || TYPE_CODE (type) == TYPE_CODE_REF
11471                    /* In C you can dereference an array to get the 1st elt.  */
11472                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11473             {
11474             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11475                only be determined by inspecting the object's tag.
11476                This means that we need to evaluate completely the
11477                expression in order to get its type.  */
11478
11479               if ((TYPE_CODE (type) == TYPE_CODE_REF
11480                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11481                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11482                 {
11483                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11484                                           EVAL_NORMAL);
11485                   type = value_type (ada_value_ind (arg1));
11486                 }
11487               else
11488                 {
11489                   type = to_static_fixed_type
11490                     (ada_aligned_type
11491                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11492                 }
11493               ada_ensure_varsize_limit (type);
11494               return value_zero (type, lval_memory);
11495             }
11496           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11497             {
11498               /* GDB allows dereferencing an int.  */
11499               if (expect_type == NULL)
11500                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11501                                    lval_memory);
11502               else
11503                 {
11504                   expect_type = 
11505                     to_static_fixed_type (ada_aligned_type (expect_type));
11506                   return value_zero (expect_type, lval_memory);
11507                 }
11508             }
11509           else
11510             error (_("Attempt to take contents of a non-pointer value."));
11511         }
11512       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11513       type = ada_check_typedef (value_type (arg1));
11514
11515       if (TYPE_CODE (type) == TYPE_CODE_INT)
11516           /* GDB allows dereferencing an int.  If we were given
11517              the expect_type, then use that as the target type.
11518              Otherwise, assume that the target type is an int.  */
11519         {
11520           if (expect_type != NULL)
11521             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11522                                               arg1));
11523           else
11524             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11525                                   (CORE_ADDR) value_as_address (arg1));
11526         }
11527
11528       if (ada_is_array_descriptor_type (type))
11529         /* GDB allows dereferencing GNAT array descriptors.  */
11530         return ada_coerce_to_simple_array (arg1);
11531       else
11532         return ada_value_ind (arg1);
11533
11534     case STRUCTOP_STRUCT:
11535       tem = longest_to_int (exp->elts[pc + 1].longconst);
11536       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11537       preeval_pos = *pos;
11538       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11539       if (noside == EVAL_SKIP)
11540         goto nosideret;
11541       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11542         {
11543           struct type *type1 = value_type (arg1);
11544
11545           if (ada_is_tagged_type (type1, 1))
11546             {
11547               type = ada_lookup_struct_elt_type (type1,
11548                                                  &exp->elts[pc + 2].string,
11549                                                  1, 1);
11550
11551               /* If the field is not found, check if it exists in the
11552                  extension of this object's type. This means that we
11553                  need to evaluate completely the expression.  */
11554
11555               if (type == NULL)
11556                 {
11557                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11558                                           EVAL_NORMAL);
11559                   arg1 = ada_value_struct_elt (arg1,
11560                                                &exp->elts[pc + 2].string,
11561                                                0);
11562                   arg1 = unwrap_value (arg1);
11563                   type = value_type (ada_to_fixed_value (arg1));
11564                 }
11565             }
11566           else
11567             type =
11568               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11569                                           0);
11570
11571           return value_zero (ada_aligned_type (type), lval_memory);
11572         }
11573       else
11574         {
11575           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11576           arg1 = unwrap_value (arg1);
11577           return ada_to_fixed_value (arg1);
11578         }
11579
11580     case OP_TYPE:
11581       /* The value is not supposed to be used.  This is here to make it
11582          easier to accommodate expressions that contain types.  */
11583       (*pos) += 2;
11584       if (noside == EVAL_SKIP)
11585         goto nosideret;
11586       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11587         return allocate_value (exp->elts[pc + 1].type);
11588       else
11589         error (_("Attempt to use a type name as an expression"));
11590
11591     case OP_AGGREGATE:
11592     case OP_CHOICES:
11593     case OP_OTHERS:
11594     case OP_DISCRETE_RANGE:
11595     case OP_POSITIONAL:
11596     case OP_NAME:
11597       if (noside == EVAL_NORMAL)
11598         switch (op) 
11599           {
11600           case OP_NAME:
11601             error (_("Undefined name, ambiguous name, or renaming used in "
11602                      "component association: %s."), &exp->elts[pc+2].string);
11603           case OP_AGGREGATE:
11604             error (_("Aggregates only allowed on the right of an assignment"));
11605           default:
11606             internal_error (__FILE__, __LINE__,
11607                             _("aggregate apparently mangled"));
11608           }
11609
11610       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11611       *pos += oplen - 1;
11612       for (tem = 0; tem < nargs; tem += 1) 
11613         ada_evaluate_subexp (NULL, exp, pos, noside);
11614       goto nosideret;
11615     }
11616
11617 nosideret:
11618   return eval_skip_value (exp);
11619 }
11620 \f
11621
11622                                 /* Fixed point */
11623
11624 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11625    type name that encodes the 'small and 'delta information.
11626    Otherwise, return NULL.  */
11627
11628 static const char *
11629 fixed_type_info (struct type *type)
11630 {
11631   const char *name = ada_type_name (type);
11632   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11633
11634   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11635     {
11636       const char *tail = strstr (name, "___XF_");
11637
11638       if (tail == NULL)
11639         return NULL;
11640       else
11641         return tail + 5;
11642     }
11643   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11644     return fixed_type_info (TYPE_TARGET_TYPE (type));
11645   else
11646     return NULL;
11647 }
11648
11649 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11650
11651 int
11652 ada_is_fixed_point_type (struct type *type)
11653 {
11654   return fixed_type_info (type) != NULL;
11655 }
11656
11657 /* Return non-zero iff TYPE represents a System.Address type.  */
11658
11659 int
11660 ada_is_system_address_type (struct type *type)
11661 {
11662   return (TYPE_NAME (type)
11663           && strcmp (TYPE_NAME (type), "system__address") == 0);
11664 }
11665
11666 /* Assuming that TYPE is the representation of an Ada fixed-point
11667    type, return the target floating-point type to be used to represent
11668    of this type during internal computation.  */
11669
11670 static struct type *
11671 ada_scaling_type (struct type *type)
11672 {
11673   return builtin_type (get_type_arch (type))->builtin_long_double;
11674 }
11675
11676 /* Assuming that TYPE is the representation of an Ada fixed-point
11677    type, return its delta, or NULL if the type is malformed and the
11678    delta cannot be determined.  */
11679
11680 struct value *
11681 ada_delta (struct type *type)
11682 {
11683   const char *encoding = fixed_type_info (type);
11684   struct type *scale_type = ada_scaling_type (type);
11685
11686   long long num, den;
11687
11688   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11689     return nullptr;
11690   else
11691     return value_binop (value_from_longest (scale_type, num),
11692                         value_from_longest (scale_type, den), BINOP_DIV);
11693 }
11694
11695 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11696    factor ('SMALL value) associated with the type.  */
11697
11698 struct value *
11699 ada_scaling_factor (struct type *type)
11700 {
11701   const char *encoding = fixed_type_info (type);
11702   struct type *scale_type = ada_scaling_type (type);
11703
11704   long long num0, den0, num1, den1;
11705   int n;
11706
11707   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11708               &num0, &den0, &num1, &den1);
11709
11710   if (n < 2)
11711     return value_from_longest (scale_type, 1);
11712   else if (n == 4)
11713     return value_binop (value_from_longest (scale_type, num1),
11714                         value_from_longest (scale_type, den1), BINOP_DIV);
11715   else
11716     return value_binop (value_from_longest (scale_type, num0),
11717                         value_from_longest (scale_type, den0), BINOP_DIV);
11718 }
11719
11720 \f
11721
11722                                 /* Range types */
11723
11724 /* Scan STR beginning at position K for a discriminant name, and
11725    return the value of that discriminant field of DVAL in *PX.  If
11726    PNEW_K is not null, put the position of the character beyond the
11727    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11728    not alter *PX and *PNEW_K if unsuccessful.  */
11729
11730 static int
11731 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11732                     int *pnew_k)
11733 {
11734   static char *bound_buffer = NULL;
11735   static size_t bound_buffer_len = 0;
11736   const char *pstart, *pend, *bound;
11737   struct value *bound_val;
11738
11739   if (dval == NULL || str == NULL || str[k] == '\0')
11740     return 0;
11741
11742   pstart = str + k;
11743   pend = strstr (pstart, "__");
11744   if (pend == NULL)
11745     {
11746       bound = pstart;
11747       k += strlen (bound);
11748     }
11749   else
11750     {
11751       int len = pend - pstart;
11752
11753       /* Strip __ and beyond.  */
11754       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11755       strncpy (bound_buffer, pstart, len);
11756       bound_buffer[len] = '\0';
11757
11758       bound = bound_buffer;
11759       k = pend - str;
11760     }
11761
11762   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11763   if (bound_val == NULL)
11764     return 0;
11765
11766   *px = value_as_long (bound_val);
11767   if (pnew_k != NULL)
11768     *pnew_k = k;
11769   return 1;
11770 }
11771
11772 /* Value of variable named NAME in the current environment.  If
11773    no such variable found, then if ERR_MSG is null, returns 0, and
11774    otherwise causes an error with message ERR_MSG.  */
11775
11776 static struct value *
11777 get_var_value (const char *name, const char *err_msg)
11778 {
11779   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11780
11781   std::vector<struct block_symbol> syms;
11782   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11783                                              get_selected_block (0),
11784                                              VAR_DOMAIN, &syms, 1);
11785
11786   if (nsyms != 1)
11787     {
11788       if (err_msg == NULL)
11789         return 0;
11790       else
11791         error (("%s"), err_msg);
11792     }
11793
11794   return value_of_variable (syms[0].symbol, syms[0].block);
11795 }
11796
11797 /* Value of integer variable named NAME in the current environment.
11798    If no such variable is found, returns false.  Otherwise, sets VALUE
11799    to the variable's value and returns true.  */
11800
11801 bool
11802 get_int_var_value (const char *name, LONGEST &value)
11803 {
11804   struct value *var_val = get_var_value (name, 0);
11805
11806   if (var_val == 0)
11807     return false;
11808
11809   value = value_as_long (var_val);
11810   return true;
11811 }
11812
11813
11814 /* Return a range type whose base type is that of the range type named
11815    NAME in the current environment, and whose bounds are calculated
11816    from NAME according to the GNAT range encoding conventions.
11817    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11818    corresponding range type from debug information; fall back to using it
11819    if symbol lookup fails.  If a new type must be created, allocate it
11820    like ORIG_TYPE was.  The bounds information, in general, is encoded
11821    in NAME, the base type given in the named range type.  */
11822
11823 static struct type *
11824 to_fixed_range_type (struct type *raw_type, struct value *dval)
11825 {
11826   const char *name;
11827   struct type *base_type;
11828   const char *subtype_info;
11829
11830   gdb_assert (raw_type != NULL);
11831   gdb_assert (TYPE_NAME (raw_type) != NULL);
11832
11833   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11834     base_type = TYPE_TARGET_TYPE (raw_type);
11835   else
11836     base_type = raw_type;
11837
11838   name = TYPE_NAME (raw_type);
11839   subtype_info = strstr (name, "___XD");
11840   if (subtype_info == NULL)
11841     {
11842       LONGEST L = ada_discrete_type_low_bound (raw_type);
11843       LONGEST U = ada_discrete_type_high_bound (raw_type);
11844
11845       if (L < INT_MIN || U > INT_MAX)
11846         return raw_type;
11847       else
11848         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11849                                          L, U);
11850     }
11851   else
11852     {
11853       static char *name_buf = NULL;
11854       static size_t name_len = 0;
11855       int prefix_len = subtype_info - name;
11856       LONGEST L, U;
11857       struct type *type;
11858       const char *bounds_str;
11859       int n;
11860
11861       GROW_VECT (name_buf, name_len, prefix_len + 5);
11862       strncpy (name_buf, name, prefix_len);
11863       name_buf[prefix_len] = '\0';
11864
11865       subtype_info += 5;
11866       bounds_str = strchr (subtype_info, '_');
11867       n = 1;
11868
11869       if (*subtype_info == 'L')
11870         {
11871           if (!ada_scan_number (bounds_str, n, &L, &n)
11872               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11873             return raw_type;
11874           if (bounds_str[n] == '_')
11875             n += 2;
11876           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11877             n += 1;
11878           subtype_info += 1;
11879         }
11880       else
11881         {
11882           strcpy (name_buf + prefix_len, "___L");
11883           if (!get_int_var_value (name_buf, L))
11884             {
11885               lim_warning (_("Unknown lower bound, using 1."));
11886               L = 1;
11887             }
11888         }
11889
11890       if (*subtype_info == 'U')
11891         {
11892           if (!ada_scan_number (bounds_str, n, &U, &n)
11893               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11894             return raw_type;
11895         }
11896       else
11897         {
11898           strcpy (name_buf + prefix_len, "___U");
11899           if (!get_int_var_value (name_buf, U))
11900             {
11901               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11902               U = L;
11903             }
11904         }
11905
11906       type = create_static_range_type (alloc_type_copy (raw_type),
11907                                        base_type, L, U);
11908       /* create_static_range_type alters the resulting type's length
11909          to match the size of the base_type, which is not what we want.
11910          Set it back to the original range type's length.  */
11911       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11912       TYPE_NAME (type) = name;
11913       return type;
11914     }
11915 }
11916
11917 /* True iff NAME is the name of a range type.  */
11918
11919 int
11920 ada_is_range_type_name (const char *name)
11921 {
11922   return (name != NULL && strstr (name, "___XD"));
11923 }
11924 \f
11925
11926                                 /* Modular types */
11927
11928 /* True iff TYPE is an Ada modular type.  */
11929
11930 int
11931 ada_is_modular_type (struct type *type)
11932 {
11933   struct type *subranged_type = get_base_type (type);
11934
11935   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11936           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11937           && TYPE_UNSIGNED (subranged_type));
11938 }
11939
11940 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11941
11942 ULONGEST
11943 ada_modulus (struct type *type)
11944 {
11945   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11946 }
11947 \f
11948
11949 /* Ada exception catchpoint support:
11950    ---------------------------------
11951
11952    We support 3 kinds of exception catchpoints:
11953      . catchpoints on Ada exceptions
11954      . catchpoints on unhandled Ada exceptions
11955      . catchpoints on failed assertions
11956
11957    Exceptions raised during failed assertions, or unhandled exceptions
11958    could perfectly be caught with the general catchpoint on Ada exceptions.
11959    However, we can easily differentiate these two special cases, and having
11960    the option to distinguish these two cases from the rest can be useful
11961    to zero-in on certain situations.
11962
11963    Exception catchpoints are a specialized form of breakpoint,
11964    since they rely on inserting breakpoints inside known routines
11965    of the GNAT runtime.  The implementation therefore uses a standard
11966    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11967    of breakpoint_ops.
11968
11969    Support in the runtime for exception catchpoints have been changed
11970    a few times already, and these changes affect the implementation
11971    of these catchpoints.  In order to be able to support several
11972    variants of the runtime, we use a sniffer that will determine
11973    the runtime variant used by the program being debugged.  */
11974
11975 /* Ada's standard exceptions.
11976
11977    The Ada 83 standard also defined Numeric_Error.  But there so many
11978    situations where it was unclear from the Ada 83 Reference Manual
11979    (RM) whether Constraint_Error or Numeric_Error should be raised,
11980    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11981    Interpretation saying that anytime the RM says that Numeric_Error
11982    should be raised, the implementation may raise Constraint_Error.
11983    Ada 95 went one step further and pretty much removed Numeric_Error
11984    from the list of standard exceptions (it made it a renaming of
11985    Constraint_Error, to help preserve compatibility when compiling
11986    an Ada83 compiler). As such, we do not include Numeric_Error from
11987    this list of standard exceptions.  */
11988
11989 static const char *standard_exc[] = {
11990   "constraint_error",
11991   "program_error",
11992   "storage_error",
11993   "tasking_error"
11994 };
11995
11996 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11997
11998 /* A structure that describes how to support exception catchpoints
11999    for a given executable.  */
12000
12001 struct exception_support_info
12002 {
12003    /* The name of the symbol to break on in order to insert
12004       a catchpoint on exceptions.  */
12005    const char *catch_exception_sym;
12006
12007    /* The name of the symbol to break on in order to insert
12008       a catchpoint on unhandled exceptions.  */
12009    const char *catch_exception_unhandled_sym;
12010
12011    /* The name of the symbol to break on in order to insert
12012       a catchpoint on failed assertions.  */
12013    const char *catch_assert_sym;
12014
12015    /* The name of the symbol to break on in order to insert
12016       a catchpoint on exception handling.  */
12017    const char *catch_handlers_sym;
12018
12019    /* Assuming that the inferior just triggered an unhandled exception
12020       catchpoint, this function is responsible for returning the address
12021       in inferior memory where the name of that exception is stored.
12022       Return zero if the address could not be computed.  */
12023    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
12024 };
12025
12026 static CORE_ADDR ada_unhandled_exception_name_addr (void);
12027 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
12028
12029 /* The following exception support info structure describes how to
12030    implement exception catchpoints with the latest version of the
12031    Ada runtime (as of 2007-03-06).  */
12032
12033 static const struct exception_support_info default_exception_support_info =
12034 {
12035   "__gnat_debug_raise_exception", /* catch_exception_sym */
12036   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12037   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
12038   "__gnat_begin_handler", /* catch_handlers_sym */
12039   ada_unhandled_exception_name_addr
12040 };
12041
12042 /* The following exception support info structure describes how to
12043    implement exception catchpoints with a slightly older version
12044    of the Ada runtime.  */
12045
12046 static const struct exception_support_info exception_support_info_fallback =
12047 {
12048   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12049   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12050   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12051   "__gnat_begin_handler", /* catch_handlers_sym */
12052   ada_unhandled_exception_name_addr_from_raise
12053 };
12054
12055 /* Return nonzero if we can detect the exception support routines
12056    described in EINFO.
12057
12058    This function errors out if an abnormal situation is detected
12059    (for instance, if we find the exception support routines, but
12060    that support is found to be incomplete).  */
12061
12062 static int
12063 ada_has_this_exception_support (const struct exception_support_info *einfo)
12064 {
12065   struct symbol *sym;
12066
12067   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12068      that should be compiled with debugging information.  As a result, we
12069      expect to find that symbol in the symtabs.  */
12070
12071   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12072   if (sym == NULL)
12073     {
12074       /* Perhaps we did not find our symbol because the Ada runtime was
12075          compiled without debugging info, or simply stripped of it.
12076          It happens on some GNU/Linux distributions for instance, where
12077          users have to install a separate debug package in order to get
12078          the runtime's debugging info.  In that situation, let the user
12079          know why we cannot insert an Ada exception catchpoint.
12080
12081          Note: Just for the purpose of inserting our Ada exception
12082          catchpoint, we could rely purely on the associated minimal symbol.
12083          But we would be operating in degraded mode anyway, since we are
12084          still lacking the debugging info needed later on to extract
12085          the name of the exception being raised (this name is printed in
12086          the catchpoint message, and is also used when trying to catch
12087          a specific exception).  We do not handle this case for now.  */
12088       struct bound_minimal_symbol msym
12089         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12090
12091       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12092         error (_("Your Ada runtime appears to be missing some debugging "
12093                  "information.\nCannot insert Ada exception catchpoint "
12094                  "in this configuration."));
12095
12096       return 0;
12097     }
12098
12099   /* Make sure that the symbol we found corresponds to a function.  */
12100
12101   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12102     error (_("Symbol \"%s\" is not a function (class = %d)"),
12103            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12104
12105   return 1;
12106 }
12107
12108 /* Inspect the Ada runtime and determine which exception info structure
12109    should be used to provide support for exception catchpoints.
12110
12111    This function will always set the per-inferior exception_info,
12112    or raise an error.  */
12113
12114 static void
12115 ada_exception_support_info_sniffer (void)
12116 {
12117   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12118
12119   /* If the exception info is already known, then no need to recompute it.  */
12120   if (data->exception_info != NULL)
12121     return;
12122
12123   /* Check the latest (default) exception support info.  */
12124   if (ada_has_this_exception_support (&default_exception_support_info))
12125     {
12126       data->exception_info = &default_exception_support_info;
12127       return;
12128     }
12129
12130   /* Try our fallback exception suport info.  */
12131   if (ada_has_this_exception_support (&exception_support_info_fallback))
12132     {
12133       data->exception_info = &exception_support_info_fallback;
12134       return;
12135     }
12136
12137   /* Sometimes, it is normal for us to not be able to find the routine
12138      we are looking for.  This happens when the program is linked with
12139      the shared version of the GNAT runtime, and the program has not been
12140      started yet.  Inform the user of these two possible causes if
12141      applicable.  */
12142
12143   if (ada_update_initial_language (language_unknown) != language_ada)
12144     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12145
12146   /* If the symbol does not exist, then check that the program is
12147      already started, to make sure that shared libraries have been
12148      loaded.  If it is not started, this may mean that the symbol is
12149      in a shared library.  */
12150
12151   if (inferior_ptid.pid () == 0)
12152     error (_("Unable to insert catchpoint. Try to start the program first."));
12153
12154   /* At this point, we know that we are debugging an Ada program and
12155      that the inferior has been started, but we still are not able to
12156      find the run-time symbols.  That can mean that we are in
12157      configurable run time mode, or that a-except as been optimized
12158      out by the linker...  In any case, at this point it is not worth
12159      supporting this feature.  */
12160
12161   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12162 }
12163
12164 /* True iff FRAME is very likely to be that of a function that is
12165    part of the runtime system.  This is all very heuristic, but is
12166    intended to be used as advice as to what frames are uninteresting
12167    to most users.  */
12168
12169 static int
12170 is_known_support_routine (struct frame_info *frame)
12171 {
12172   enum language func_lang;
12173   int i;
12174   const char *fullname;
12175
12176   /* If this code does not have any debugging information (no symtab),
12177      This cannot be any user code.  */
12178
12179   symtab_and_line sal = find_frame_sal (frame);
12180   if (sal.symtab == NULL)
12181     return 1;
12182
12183   /* If there is a symtab, but the associated source file cannot be
12184      located, then assume this is not user code:  Selecting a frame
12185      for which we cannot display the code would not be very helpful
12186      for the user.  This should also take care of case such as VxWorks
12187      where the kernel has some debugging info provided for a few units.  */
12188
12189   fullname = symtab_to_fullname (sal.symtab);
12190   if (access (fullname, R_OK) != 0)
12191     return 1;
12192
12193   /* Check the unit filename againt the Ada runtime file naming.
12194      We also check the name of the objfile against the name of some
12195      known system libraries that sometimes come with debugging info
12196      too.  */
12197
12198   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12199     {
12200       re_comp (known_runtime_file_name_patterns[i]);
12201       if (re_exec (lbasename (sal.symtab->filename)))
12202         return 1;
12203       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12204           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12205         return 1;
12206     }
12207
12208   /* Check whether the function is a GNAT-generated entity.  */
12209
12210   gdb::unique_xmalloc_ptr<char> func_name
12211     = find_frame_funname (frame, &func_lang, NULL);
12212   if (func_name == NULL)
12213     return 1;
12214
12215   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12216     {
12217       re_comp (known_auxiliary_function_name_patterns[i]);
12218       if (re_exec (func_name.get ()))
12219         return 1;
12220     }
12221
12222   return 0;
12223 }
12224
12225 /* Find the first frame that contains debugging information and that is not
12226    part of the Ada run-time, starting from FI and moving upward.  */
12227
12228 void
12229 ada_find_printable_frame (struct frame_info *fi)
12230 {
12231   for (; fi != NULL; fi = get_prev_frame (fi))
12232     {
12233       if (!is_known_support_routine (fi))
12234         {
12235           select_frame (fi);
12236           break;
12237         }
12238     }
12239
12240 }
12241
12242 /* Assuming that the inferior just triggered an unhandled exception
12243    catchpoint, return the address in inferior memory where the name
12244    of the exception is stored.
12245    
12246    Return zero if the address could not be computed.  */
12247
12248 static CORE_ADDR
12249 ada_unhandled_exception_name_addr (void)
12250 {
12251   return parse_and_eval_address ("e.full_name");
12252 }
12253
12254 /* Same as ada_unhandled_exception_name_addr, except that this function
12255    should be used when the inferior uses an older version of the runtime,
12256    where the exception name needs to be extracted from a specific frame
12257    several frames up in the callstack.  */
12258
12259 static CORE_ADDR
12260 ada_unhandled_exception_name_addr_from_raise (void)
12261 {
12262   int frame_level;
12263   struct frame_info *fi;
12264   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12265
12266   /* To determine the name of this exception, we need to select
12267      the frame corresponding to RAISE_SYM_NAME.  This frame is
12268      at least 3 levels up, so we simply skip the first 3 frames
12269      without checking the name of their associated function.  */
12270   fi = get_current_frame ();
12271   for (frame_level = 0; frame_level < 3; frame_level += 1)
12272     if (fi != NULL)
12273       fi = get_prev_frame (fi); 
12274
12275   while (fi != NULL)
12276     {
12277       enum language func_lang;
12278
12279       gdb::unique_xmalloc_ptr<char> func_name
12280         = find_frame_funname (fi, &func_lang, NULL);
12281       if (func_name != NULL)
12282         {
12283           if (strcmp (func_name.get (),
12284                       data->exception_info->catch_exception_sym) == 0)
12285             break; /* We found the frame we were looking for...  */
12286         }
12287       fi = get_prev_frame (fi);
12288     }
12289
12290   if (fi == NULL)
12291     return 0;
12292
12293   select_frame (fi);
12294   return parse_and_eval_address ("id.full_name");
12295 }
12296
12297 /* Assuming the inferior just triggered an Ada exception catchpoint
12298    (of any type), return the address in inferior memory where the name
12299    of the exception is stored, if applicable.
12300
12301    Assumes the selected frame is the current frame.
12302
12303    Return zero if the address could not be computed, or if not relevant.  */
12304
12305 static CORE_ADDR
12306 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12307                            struct breakpoint *b)
12308 {
12309   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12310
12311   switch (ex)
12312     {
12313       case ada_catch_exception:
12314         return (parse_and_eval_address ("e.full_name"));
12315         break;
12316
12317       case ada_catch_exception_unhandled:
12318         return data->exception_info->unhandled_exception_name_addr ();
12319         break;
12320
12321       case ada_catch_handlers:
12322         return 0;  /* The runtimes does not provide access to the exception
12323                       name.  */
12324         break;
12325
12326       case ada_catch_assert:
12327         return 0;  /* Exception name is not relevant in this case.  */
12328         break;
12329
12330       default:
12331         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12332         break;
12333     }
12334
12335   return 0; /* Should never be reached.  */
12336 }
12337
12338 /* Assuming the inferior is stopped at an exception catchpoint,
12339    return the message which was associated to the exception, if
12340    available.  Return NULL if the message could not be retrieved.
12341
12342    Note: The exception message can be associated to an exception
12343    either through the use of the Raise_Exception function, or
12344    more simply (Ada 2005 and later), via:
12345
12346        raise Exception_Name with "exception message";
12347
12348    */
12349
12350 static gdb::unique_xmalloc_ptr<char>
12351 ada_exception_message_1 (void)
12352 {
12353   struct value *e_msg_val;
12354   int e_msg_len;
12355
12356   /* For runtimes that support this feature, the exception message
12357      is passed as an unbounded string argument called "message".  */
12358   e_msg_val = parse_and_eval ("message");
12359   if (e_msg_val == NULL)
12360     return NULL; /* Exception message not supported.  */
12361
12362   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12363   gdb_assert (e_msg_val != NULL);
12364   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12365
12366   /* If the message string is empty, then treat it as if there was
12367      no exception message.  */
12368   if (e_msg_len <= 0)
12369     return NULL;
12370
12371   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12372   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12373   e_msg.get ()[e_msg_len] = '\0';
12374
12375   return e_msg;
12376 }
12377
12378 /* Same as ada_exception_message_1, except that all exceptions are
12379    contained here (returning NULL instead).  */
12380
12381 static gdb::unique_xmalloc_ptr<char>
12382 ada_exception_message (void)
12383 {
12384   gdb::unique_xmalloc_ptr<char> e_msg;
12385
12386   try
12387     {
12388       e_msg = ada_exception_message_1 ();
12389     }
12390   catch (const gdb_exception_error &e)
12391     {
12392       e_msg.reset (nullptr);
12393     }
12394
12395   return e_msg;
12396 }
12397
12398 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12399    any error that ada_exception_name_addr_1 might cause to be thrown.
12400    When an error is intercepted, a warning with the error message is printed,
12401    and zero is returned.  */
12402
12403 static CORE_ADDR
12404 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12405                          struct breakpoint *b)
12406 {
12407   CORE_ADDR result = 0;
12408
12409   try
12410     {
12411       result = ada_exception_name_addr_1 (ex, b);
12412     }
12413
12414   catch (const gdb_exception_error &e)
12415     {
12416       warning (_("failed to get exception name: %s"), e.what ());
12417       return 0;
12418     }
12419
12420   return result;
12421 }
12422
12423 static std::string ada_exception_catchpoint_cond_string
12424   (const char *excep_string,
12425    enum ada_exception_catchpoint_kind ex);
12426
12427 /* Ada catchpoints.
12428
12429    In the case of catchpoints on Ada exceptions, the catchpoint will
12430    stop the target on every exception the program throws.  When a user
12431    specifies the name of a specific exception, we translate this
12432    request into a condition expression (in text form), and then parse
12433    it into an expression stored in each of the catchpoint's locations.
12434    We then use this condition to check whether the exception that was
12435    raised is the one the user is interested in.  If not, then the
12436    target is resumed again.  We store the name of the requested
12437    exception, in order to be able to re-set the condition expression
12438    when symbols change.  */
12439
12440 /* An instance of this type is used to represent an Ada catchpoint
12441    breakpoint location.  */
12442
12443 class ada_catchpoint_location : public bp_location
12444 {
12445 public:
12446   ada_catchpoint_location (breakpoint *owner)
12447     : bp_location (owner)
12448   {}
12449
12450   /* The condition that checks whether the exception that was raised
12451      is the specific exception the user specified on catchpoint
12452      creation.  */
12453   expression_up excep_cond_expr;
12454 };
12455
12456 /* An instance of this type is used to represent an Ada catchpoint.  */
12457
12458 struct ada_catchpoint : public breakpoint
12459 {
12460   /* The name of the specific exception the user specified.  */
12461   std::string excep_string;
12462 };
12463
12464 /* Parse the exception condition string in the context of each of the
12465    catchpoint's locations, and store them for later evaluation.  */
12466
12467 static void
12468 create_excep_cond_exprs (struct ada_catchpoint *c,
12469                          enum ada_exception_catchpoint_kind ex)
12470 {
12471   /* Nothing to do if there's no specific exception to catch.  */
12472   if (c->excep_string.empty ())
12473     return;
12474
12475   /* Same if there are no locations... */
12476   if (c->loc == NULL)
12477     return;
12478
12479   /* We have to compute the expression once for each program space,
12480      because the expression may hold the addresses of multiple symbols
12481      in some cases.  */
12482   std::multimap<program_space *, struct bp_location *> loc_map;
12483   for (struct bp_location *bl = c->loc; bl != NULL; bl = bl->next)
12484     loc_map.emplace (bl->pspace, bl);
12485
12486   scoped_restore_current_program_space save_pspace;
12487
12488   std::string cond_string;
12489   program_space *last_ps = nullptr;
12490   for (auto iter : loc_map)
12491     {
12492       struct ada_catchpoint_location *ada_loc
12493         = (struct ada_catchpoint_location *) iter.second;
12494
12495       if (ada_loc->pspace != last_ps)
12496         {
12497           last_ps = ada_loc->pspace;
12498           set_current_program_space (last_ps);
12499
12500           /* Compute the condition expression in text form, from the
12501              specific expection we want to catch.  */
12502           cond_string
12503             = ada_exception_catchpoint_cond_string (c->excep_string.c_str (),
12504                                                     ex);
12505         }
12506
12507       expression_up exp;
12508
12509       if (!ada_loc->shlib_disabled)
12510         {
12511           const char *s;
12512
12513           s = cond_string.c_str ();
12514           try
12515             {
12516               exp = parse_exp_1 (&s, ada_loc->address,
12517                                  block_for_pc (ada_loc->address),
12518                                  0);
12519             }
12520           catch (const gdb_exception_error &e)
12521             {
12522               warning (_("failed to reevaluate internal exception condition "
12523                          "for catchpoint %d: %s"),
12524                        c->number, e.what ());
12525             }
12526         }
12527
12528       ada_loc->excep_cond_expr = std::move (exp);
12529     }
12530 }
12531
12532 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12533    structure for all exception catchpoint kinds.  */
12534
12535 static struct bp_location *
12536 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12537                              struct breakpoint *self)
12538 {
12539   return new ada_catchpoint_location (self);
12540 }
12541
12542 /* Implement the RE_SET method in the breakpoint_ops structure for all
12543    exception catchpoint kinds.  */
12544
12545 static void
12546 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12547 {
12548   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12549
12550   /* Call the base class's method.  This updates the catchpoint's
12551      locations.  */
12552   bkpt_breakpoint_ops.re_set (b);
12553
12554   /* Reparse the exception conditional expressions.  One for each
12555      location.  */
12556   create_excep_cond_exprs (c, ex);
12557 }
12558
12559 /* Returns true if we should stop for this breakpoint hit.  If the
12560    user specified a specific exception, we only want to cause a stop
12561    if the program thrown that exception.  */
12562
12563 static int
12564 should_stop_exception (const struct bp_location *bl)
12565 {
12566   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12567   const struct ada_catchpoint_location *ada_loc
12568     = (const struct ada_catchpoint_location *) bl;
12569   int stop;
12570
12571   /* With no specific exception, should always stop.  */
12572   if (c->excep_string.empty ())
12573     return 1;
12574
12575   if (ada_loc->excep_cond_expr == NULL)
12576     {
12577       /* We will have a NULL expression if back when we were creating
12578          the expressions, this location's had failed to parse.  */
12579       return 1;
12580     }
12581
12582   stop = 1;
12583   try
12584     {
12585       struct value *mark;
12586
12587       mark = value_mark ();
12588       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12589       value_free_to_mark (mark);
12590     }
12591   catch (const gdb_exception &ex)
12592     {
12593       exception_fprintf (gdb_stderr, ex,
12594                          _("Error in testing exception condition:\n"));
12595     }
12596
12597   return stop;
12598 }
12599
12600 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12601    for all exception catchpoint kinds.  */
12602
12603 static void
12604 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12605 {
12606   bs->stop = should_stop_exception (bs->bp_location_at);
12607 }
12608
12609 /* Implement the PRINT_IT method in the breakpoint_ops structure
12610    for all exception catchpoint kinds.  */
12611
12612 static enum print_stop_action
12613 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12614 {
12615   struct ui_out *uiout = current_uiout;
12616   struct breakpoint *b = bs->breakpoint_at;
12617
12618   annotate_catchpoint (b->number);
12619
12620   if (uiout->is_mi_like_p ())
12621     {
12622       uiout->field_string ("reason",
12623                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12624       uiout->field_string ("disp", bpdisp_text (b->disposition));
12625     }
12626
12627   uiout->text (b->disposition == disp_del
12628                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12629   uiout->field_int ("bkptno", b->number);
12630   uiout->text (", ");
12631
12632   /* ada_exception_name_addr relies on the selected frame being the
12633      current frame.  Need to do this here because this function may be
12634      called more than once when printing a stop, and below, we'll
12635      select the first frame past the Ada run-time (see
12636      ada_find_printable_frame).  */
12637   select_frame (get_current_frame ());
12638
12639   switch (ex)
12640     {
12641       case ada_catch_exception:
12642       case ada_catch_exception_unhandled:
12643       case ada_catch_handlers:
12644         {
12645           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12646           char exception_name[256];
12647
12648           if (addr != 0)
12649             {
12650               read_memory (addr, (gdb_byte *) exception_name,
12651                            sizeof (exception_name) - 1);
12652               exception_name [sizeof (exception_name) - 1] = '\0';
12653             }
12654           else
12655             {
12656               /* For some reason, we were unable to read the exception
12657                  name.  This could happen if the Runtime was compiled
12658                  without debugging info, for instance.  In that case,
12659                  just replace the exception name by the generic string
12660                  "exception" - it will read as "an exception" in the
12661                  notification we are about to print.  */
12662               memcpy (exception_name, "exception", sizeof ("exception"));
12663             }
12664           /* In the case of unhandled exception breakpoints, we print
12665              the exception name as "unhandled EXCEPTION_NAME", to make
12666              it clearer to the user which kind of catchpoint just got
12667              hit.  We used ui_out_text to make sure that this extra
12668              info does not pollute the exception name in the MI case.  */
12669           if (ex == ada_catch_exception_unhandled)
12670             uiout->text ("unhandled ");
12671           uiout->field_string ("exception-name", exception_name);
12672         }
12673         break;
12674       case ada_catch_assert:
12675         /* In this case, the name of the exception is not really
12676            important.  Just print "failed assertion" to make it clearer
12677            that his program just hit an assertion-failure catchpoint.
12678            We used ui_out_text because this info does not belong in
12679            the MI output.  */
12680         uiout->text ("failed assertion");
12681         break;
12682     }
12683
12684   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12685   if (exception_message != NULL)
12686     {
12687       uiout->text (" (");
12688       uiout->field_string ("exception-message", exception_message.get ());
12689       uiout->text (")");
12690     }
12691
12692   uiout->text (" at ");
12693   ada_find_printable_frame (get_current_frame ());
12694
12695   return PRINT_SRC_AND_LOC;
12696 }
12697
12698 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12699    for all exception catchpoint kinds.  */
12700
12701 static void
12702 print_one_exception (enum ada_exception_catchpoint_kind ex,
12703                      struct breakpoint *b, struct bp_location **last_loc)
12704
12705   struct ui_out *uiout = current_uiout;
12706   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12707   struct value_print_options opts;
12708
12709   get_user_print_options (&opts);
12710   if (opts.addressprint)
12711     {
12712       annotate_field (4);
12713       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12714     }
12715
12716   annotate_field (5);
12717   *last_loc = b->loc;
12718   switch (ex)
12719     {
12720       case ada_catch_exception:
12721         if (!c->excep_string.empty ())
12722           {
12723             std::string msg = string_printf (_("`%s' Ada exception"),
12724                                              c->excep_string.c_str ());
12725
12726             uiout->field_string ("what", msg);
12727           }
12728         else
12729           uiout->field_string ("what", "all Ada exceptions");
12730         
12731         break;
12732
12733       case ada_catch_exception_unhandled:
12734         uiout->field_string ("what", "unhandled Ada exceptions");
12735         break;
12736       
12737       case ada_catch_handlers:
12738         if (!c->excep_string.empty ())
12739           {
12740             uiout->field_fmt ("what",
12741                               _("`%s' Ada exception handlers"),
12742                               c->excep_string.c_str ());
12743           }
12744         else
12745           uiout->field_string ("what", "all Ada exceptions handlers");
12746         break;
12747
12748       case ada_catch_assert:
12749         uiout->field_string ("what", "failed Ada assertions");
12750         break;
12751
12752       default:
12753         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12754         break;
12755     }
12756 }
12757
12758 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12759    for all exception catchpoint kinds.  */
12760
12761 static void
12762 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12763                          struct breakpoint *b)
12764 {
12765   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12766   struct ui_out *uiout = current_uiout;
12767
12768   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12769                                                  : _("Catchpoint "));
12770   uiout->field_int ("bkptno", b->number);
12771   uiout->text (": ");
12772
12773   switch (ex)
12774     {
12775       case ada_catch_exception:
12776         if (!c->excep_string.empty ())
12777           {
12778             std::string info = string_printf (_("`%s' Ada exception"),
12779                                               c->excep_string.c_str ());
12780             uiout->text (info.c_str ());
12781           }
12782         else
12783           uiout->text (_("all Ada exceptions"));
12784         break;
12785
12786       case ada_catch_exception_unhandled:
12787         uiout->text (_("unhandled Ada exceptions"));
12788         break;
12789
12790       case ada_catch_handlers:
12791         if (!c->excep_string.empty ())
12792           {
12793             std::string info
12794               = string_printf (_("`%s' Ada exception handlers"),
12795                                c->excep_string.c_str ());
12796             uiout->text (info.c_str ());
12797           }
12798         else
12799           uiout->text (_("all Ada exceptions handlers"));
12800         break;
12801
12802       case ada_catch_assert:
12803         uiout->text (_("failed Ada assertions"));
12804         break;
12805
12806       default:
12807         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12808         break;
12809     }
12810 }
12811
12812 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12813    for all exception catchpoint kinds.  */
12814
12815 static void
12816 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12817                           struct breakpoint *b, struct ui_file *fp)
12818 {
12819   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12820
12821   switch (ex)
12822     {
12823       case ada_catch_exception:
12824         fprintf_filtered (fp, "catch exception");
12825         if (!c->excep_string.empty ())
12826           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12827         break;
12828
12829       case ada_catch_exception_unhandled:
12830         fprintf_filtered (fp, "catch exception unhandled");
12831         break;
12832
12833       case ada_catch_handlers:
12834         fprintf_filtered (fp, "catch handlers");
12835         break;
12836
12837       case ada_catch_assert:
12838         fprintf_filtered (fp, "catch assert");
12839         break;
12840
12841       default:
12842         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12843     }
12844   print_recreate_thread (b, fp);
12845 }
12846
12847 /* Virtual table for "catch exception" breakpoints.  */
12848
12849 static struct bp_location *
12850 allocate_location_catch_exception (struct breakpoint *self)
12851 {
12852   return allocate_location_exception (ada_catch_exception, self);
12853 }
12854
12855 static void
12856 re_set_catch_exception (struct breakpoint *b)
12857 {
12858   re_set_exception (ada_catch_exception, b);
12859 }
12860
12861 static void
12862 check_status_catch_exception (bpstat bs)
12863 {
12864   check_status_exception (ada_catch_exception, bs);
12865 }
12866
12867 static enum print_stop_action
12868 print_it_catch_exception (bpstat bs)
12869 {
12870   return print_it_exception (ada_catch_exception, bs);
12871 }
12872
12873 static void
12874 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12875 {
12876   print_one_exception (ada_catch_exception, b, last_loc);
12877 }
12878
12879 static void
12880 print_mention_catch_exception (struct breakpoint *b)
12881 {
12882   print_mention_exception (ada_catch_exception, b);
12883 }
12884
12885 static void
12886 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12887 {
12888   print_recreate_exception (ada_catch_exception, b, fp);
12889 }
12890
12891 static struct breakpoint_ops catch_exception_breakpoint_ops;
12892
12893 /* Virtual table for "catch exception unhandled" breakpoints.  */
12894
12895 static struct bp_location *
12896 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12897 {
12898   return allocate_location_exception (ada_catch_exception_unhandled, self);
12899 }
12900
12901 static void
12902 re_set_catch_exception_unhandled (struct breakpoint *b)
12903 {
12904   re_set_exception (ada_catch_exception_unhandled, b);
12905 }
12906
12907 static void
12908 check_status_catch_exception_unhandled (bpstat bs)
12909 {
12910   check_status_exception (ada_catch_exception_unhandled, bs);
12911 }
12912
12913 static enum print_stop_action
12914 print_it_catch_exception_unhandled (bpstat bs)
12915 {
12916   return print_it_exception (ada_catch_exception_unhandled, bs);
12917 }
12918
12919 static void
12920 print_one_catch_exception_unhandled (struct breakpoint *b,
12921                                      struct bp_location **last_loc)
12922 {
12923   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12924 }
12925
12926 static void
12927 print_mention_catch_exception_unhandled (struct breakpoint *b)
12928 {
12929   print_mention_exception (ada_catch_exception_unhandled, b);
12930 }
12931
12932 static void
12933 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12934                                           struct ui_file *fp)
12935 {
12936   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12937 }
12938
12939 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12940
12941 /* Virtual table for "catch assert" breakpoints.  */
12942
12943 static struct bp_location *
12944 allocate_location_catch_assert (struct breakpoint *self)
12945 {
12946   return allocate_location_exception (ada_catch_assert, self);
12947 }
12948
12949 static void
12950 re_set_catch_assert (struct breakpoint *b)
12951 {
12952   re_set_exception (ada_catch_assert, b);
12953 }
12954
12955 static void
12956 check_status_catch_assert (bpstat bs)
12957 {
12958   check_status_exception (ada_catch_assert, bs);
12959 }
12960
12961 static enum print_stop_action
12962 print_it_catch_assert (bpstat bs)
12963 {
12964   return print_it_exception (ada_catch_assert, bs);
12965 }
12966
12967 static void
12968 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12969 {
12970   print_one_exception (ada_catch_assert, b, last_loc);
12971 }
12972
12973 static void
12974 print_mention_catch_assert (struct breakpoint *b)
12975 {
12976   print_mention_exception (ada_catch_assert, b);
12977 }
12978
12979 static void
12980 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12981 {
12982   print_recreate_exception (ada_catch_assert, b, fp);
12983 }
12984
12985 static struct breakpoint_ops catch_assert_breakpoint_ops;
12986
12987 /* Virtual table for "catch handlers" breakpoints.  */
12988
12989 static struct bp_location *
12990 allocate_location_catch_handlers (struct breakpoint *self)
12991 {
12992   return allocate_location_exception (ada_catch_handlers, self);
12993 }
12994
12995 static void
12996 re_set_catch_handlers (struct breakpoint *b)
12997 {
12998   re_set_exception (ada_catch_handlers, b);
12999 }
13000
13001 static void
13002 check_status_catch_handlers (bpstat bs)
13003 {
13004   check_status_exception (ada_catch_handlers, bs);
13005 }
13006
13007 static enum print_stop_action
13008 print_it_catch_handlers (bpstat bs)
13009 {
13010   return print_it_exception (ada_catch_handlers, bs);
13011 }
13012
13013 static void
13014 print_one_catch_handlers (struct breakpoint *b,
13015                           struct bp_location **last_loc)
13016 {
13017   print_one_exception (ada_catch_handlers, b, last_loc);
13018 }
13019
13020 static void
13021 print_mention_catch_handlers (struct breakpoint *b)
13022 {
13023   print_mention_exception (ada_catch_handlers, b);
13024 }
13025
13026 static void
13027 print_recreate_catch_handlers (struct breakpoint *b,
13028                                struct ui_file *fp)
13029 {
13030   print_recreate_exception (ada_catch_handlers, b, fp);
13031 }
13032
13033 static struct breakpoint_ops catch_handlers_breakpoint_ops;
13034
13035 /* Split the arguments specified in a "catch exception" command.  
13036    Set EX to the appropriate catchpoint type.
13037    Set EXCEP_STRING to the name of the specific exception if
13038    specified by the user.
13039    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
13040    "catch handlers" command.  False otherwise.
13041    If a condition is found at the end of the arguments, the condition
13042    expression is stored in COND_STRING (memory must be deallocated
13043    after use).  Otherwise COND_STRING is set to NULL.  */
13044
13045 static void
13046 catch_ada_exception_command_split (const char *args,
13047                                    bool is_catch_handlers_cmd,
13048                                    enum ada_exception_catchpoint_kind *ex,
13049                                    std::string *excep_string,
13050                                    std::string *cond_string)
13051 {
13052   std::string exception_name;
13053
13054   exception_name = extract_arg (&args);
13055   if (exception_name == "if")
13056     {
13057       /* This is not an exception name; this is the start of a condition
13058          expression for a catchpoint on all exceptions.  So, "un-get"
13059          this token, and set exception_name to NULL.  */
13060       exception_name.clear ();
13061       args -= 2;
13062     }
13063
13064   /* Check to see if we have a condition.  */
13065
13066   args = skip_spaces (args);
13067   if (startswith (args, "if")
13068       && (isspace (args[2]) || args[2] == '\0'))
13069     {
13070       args += 2;
13071       args = skip_spaces (args);
13072
13073       if (args[0] == '\0')
13074         error (_("Condition missing after `if' keyword"));
13075       *cond_string = args;
13076
13077       args += strlen (args);
13078     }
13079
13080   /* Check that we do not have any more arguments.  Anything else
13081      is unexpected.  */
13082
13083   if (args[0] != '\0')
13084     error (_("Junk at end of expression"));
13085
13086   if (is_catch_handlers_cmd)
13087     {
13088       /* Catch handling of exceptions.  */
13089       *ex = ada_catch_handlers;
13090       *excep_string = exception_name;
13091     }
13092   else if (exception_name.empty ())
13093     {
13094       /* Catch all exceptions.  */
13095       *ex = ada_catch_exception;
13096       excep_string->clear ();
13097     }
13098   else if (exception_name == "unhandled")
13099     {
13100       /* Catch unhandled exceptions.  */
13101       *ex = ada_catch_exception_unhandled;
13102       excep_string->clear ();
13103     }
13104   else
13105     {
13106       /* Catch a specific exception.  */
13107       *ex = ada_catch_exception;
13108       *excep_string = exception_name;
13109     }
13110 }
13111
13112 /* Return the name of the symbol on which we should break in order to
13113    implement a catchpoint of the EX kind.  */
13114
13115 static const char *
13116 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13117 {
13118   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13119
13120   gdb_assert (data->exception_info != NULL);
13121
13122   switch (ex)
13123     {
13124       case ada_catch_exception:
13125         return (data->exception_info->catch_exception_sym);
13126         break;
13127       case ada_catch_exception_unhandled:
13128         return (data->exception_info->catch_exception_unhandled_sym);
13129         break;
13130       case ada_catch_assert:
13131         return (data->exception_info->catch_assert_sym);
13132         break;
13133       case ada_catch_handlers:
13134         return (data->exception_info->catch_handlers_sym);
13135         break;
13136       default:
13137         internal_error (__FILE__, __LINE__,
13138                         _("unexpected catchpoint kind (%d)"), ex);
13139     }
13140 }
13141
13142 /* Return the breakpoint ops "virtual table" used for catchpoints
13143    of the EX kind.  */
13144
13145 static const struct breakpoint_ops *
13146 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13147 {
13148   switch (ex)
13149     {
13150       case ada_catch_exception:
13151         return (&catch_exception_breakpoint_ops);
13152         break;
13153       case ada_catch_exception_unhandled:
13154         return (&catch_exception_unhandled_breakpoint_ops);
13155         break;
13156       case ada_catch_assert:
13157         return (&catch_assert_breakpoint_ops);
13158         break;
13159       case ada_catch_handlers:
13160         return (&catch_handlers_breakpoint_ops);
13161         break;
13162       default:
13163         internal_error (__FILE__, __LINE__,
13164                         _("unexpected catchpoint kind (%d)"), ex);
13165     }
13166 }
13167
13168 /* Return the condition that will be used to match the current exception
13169    being raised with the exception that the user wants to catch.  This
13170    assumes that this condition is used when the inferior just triggered
13171    an exception catchpoint.
13172    EX: the type of catchpoints used for catching Ada exceptions.  */
13173
13174 static std::string
13175 ada_exception_catchpoint_cond_string (const char *excep_string,
13176                                       enum ada_exception_catchpoint_kind ex)
13177 {
13178   int i;
13179   std::string result;
13180   const char *name;
13181
13182   if (ex == ada_catch_handlers)
13183     {
13184       /* For exception handlers catchpoints, the condition string does
13185          not use the same parameter as for the other exceptions.  */
13186       name = ("long_integer (GNAT_GCC_exception_Access"
13187               "(gcc_exception).all.occurrence.id)");
13188     }
13189   else
13190     name = "long_integer (e)";
13191
13192   /* The standard exceptions are a special case.  They are defined in
13193      runtime units that have been compiled without debugging info; if
13194      EXCEP_STRING is the not-fully-qualified name of a standard
13195      exception (e.g. "constraint_error") then, during the evaluation
13196      of the condition expression, the symbol lookup on this name would
13197      *not* return this standard exception.  The catchpoint condition
13198      may then be set only on user-defined exceptions which have the
13199      same not-fully-qualified name (e.g. my_package.constraint_error).
13200
13201      To avoid this unexcepted behavior, these standard exceptions are
13202      systematically prefixed by "standard".  This means that "catch
13203      exception constraint_error" is rewritten into "catch exception
13204      standard.constraint_error".
13205
13206      If an exception named contraint_error is defined in another package of
13207      the inferior program, then the only way to specify this exception as a
13208      breakpoint condition is to use its fully-qualified named:
13209      e.g. my_package.constraint_error.
13210
13211      Furthermore, in some situations a standard exception's symbol may
13212      be present in more than one objfile, because the compiler may
13213      choose to emit copy relocations for them.  So, we have to compare
13214      against all the possible addresses.  */
13215
13216   /* Storage for a rewritten symbol name.  */
13217   std::string std_name;
13218   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13219     {
13220       if (strcmp (standard_exc [i], excep_string) == 0)
13221         {
13222           std_name = std::string ("standard.") + excep_string;
13223           excep_string = std_name.c_str ();
13224           break;
13225         }
13226     }
13227
13228   excep_string = ada_encode (excep_string);
13229   std::vector<struct bound_minimal_symbol> symbols
13230     = ada_lookup_simple_minsyms (excep_string);
13231   for (const struct bound_minimal_symbol &msym : symbols)
13232     {
13233       if (!result.empty ())
13234         result += " or ";
13235       string_appendf (result, "%s = %s", name,
13236                       pulongest (BMSYMBOL_VALUE_ADDRESS (msym)));
13237     }
13238
13239   return result;
13240 }
13241
13242 /* Return the symtab_and_line that should be used to insert an exception
13243    catchpoint of the TYPE kind.
13244
13245    ADDR_STRING returns the name of the function where the real
13246    breakpoint that implements the catchpoints is set, depending on the
13247    type of catchpoint we need to create.  */
13248
13249 static struct symtab_and_line
13250 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13251                    std::string *addr_string, const struct breakpoint_ops **ops)
13252 {
13253   const char *sym_name;
13254   struct symbol *sym;
13255
13256   /* First, find out which exception support info to use.  */
13257   ada_exception_support_info_sniffer ();
13258
13259   /* Then lookup the function on which we will break in order to catch
13260      the Ada exceptions requested by the user.  */
13261   sym_name = ada_exception_sym_name (ex);
13262   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13263
13264   if (sym == NULL)
13265     error (_("Catchpoint symbol not found: %s"), sym_name);
13266
13267   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13268     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13269
13270   /* Set ADDR_STRING.  */
13271   *addr_string = sym_name;
13272
13273   /* Set OPS.  */
13274   *ops = ada_exception_breakpoint_ops (ex);
13275
13276   return find_function_start_sal (sym, 1);
13277 }
13278
13279 /* Create an Ada exception catchpoint.
13280
13281    EX_KIND is the kind of exception catchpoint to be created.
13282
13283    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13284    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13285    of the exception to which this catchpoint applies.
13286
13287    COND_STRING, if not empty, is the catchpoint condition.
13288
13289    TEMPFLAG, if nonzero, means that the underlying breakpoint
13290    should be temporary.
13291
13292    FROM_TTY is the usual argument passed to all commands implementations.  */
13293
13294 void
13295 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13296                                  enum ada_exception_catchpoint_kind ex_kind,
13297                                  const std::string &excep_string,
13298                                  const std::string &cond_string,
13299                                  int tempflag,
13300                                  int disabled,
13301                                  int from_tty)
13302 {
13303   std::string addr_string;
13304   const struct breakpoint_ops *ops = NULL;
13305   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13306
13307   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13308   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13309                                  ops, tempflag, disabled, from_tty);
13310   c->excep_string = excep_string;
13311   create_excep_cond_exprs (c.get (), ex_kind);
13312   if (!cond_string.empty ())
13313     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13314   install_breakpoint (0, std::move (c), 1);
13315 }
13316
13317 /* Implement the "catch exception" command.  */
13318
13319 static void
13320 catch_ada_exception_command (const char *arg_entry, int from_tty,
13321                              struct cmd_list_element *command)
13322 {
13323   const char *arg = arg_entry;
13324   struct gdbarch *gdbarch = get_current_arch ();
13325   int tempflag;
13326   enum ada_exception_catchpoint_kind ex_kind;
13327   std::string excep_string;
13328   std::string cond_string;
13329
13330   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13331
13332   if (!arg)
13333     arg = "";
13334   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13335                                      &cond_string);
13336   create_ada_exception_catchpoint (gdbarch, ex_kind,
13337                                    excep_string, cond_string,
13338                                    tempflag, 1 /* enabled */,
13339                                    from_tty);
13340 }
13341
13342 /* Implement the "catch handlers" command.  */
13343
13344 static void
13345 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13346                             struct cmd_list_element *command)
13347 {
13348   const char *arg = arg_entry;
13349   struct gdbarch *gdbarch = get_current_arch ();
13350   int tempflag;
13351   enum ada_exception_catchpoint_kind ex_kind;
13352   std::string excep_string;
13353   std::string cond_string;
13354
13355   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13356
13357   if (!arg)
13358     arg = "";
13359   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13360                                      &cond_string);
13361   create_ada_exception_catchpoint (gdbarch, ex_kind,
13362                                    excep_string, cond_string,
13363                                    tempflag, 1 /* enabled */,
13364                                    from_tty);
13365 }
13366
13367 /* Split the arguments specified in a "catch assert" command.
13368
13369    ARGS contains the command's arguments (or the empty string if
13370    no arguments were passed).
13371
13372    If ARGS contains a condition, set COND_STRING to that condition
13373    (the memory needs to be deallocated after use).  */
13374
13375 static void
13376 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13377 {
13378   args = skip_spaces (args);
13379
13380   /* Check whether a condition was provided.  */
13381   if (startswith (args, "if")
13382       && (isspace (args[2]) || args[2] == '\0'))
13383     {
13384       args += 2;
13385       args = skip_spaces (args);
13386       if (args[0] == '\0')
13387         error (_("condition missing after `if' keyword"));
13388       cond_string.assign (args);
13389     }
13390
13391   /* Otherwise, there should be no other argument at the end of
13392      the command.  */
13393   else if (args[0] != '\0')
13394     error (_("Junk at end of arguments."));
13395 }
13396
13397 /* Implement the "catch assert" command.  */
13398
13399 static void
13400 catch_assert_command (const char *arg_entry, int from_tty,
13401                       struct cmd_list_element *command)
13402 {
13403   const char *arg = arg_entry;
13404   struct gdbarch *gdbarch = get_current_arch ();
13405   int tempflag;
13406   std::string cond_string;
13407
13408   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13409
13410   if (!arg)
13411     arg = "";
13412   catch_ada_assert_command_split (arg, cond_string);
13413   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13414                                    "", cond_string,
13415                                    tempflag, 1 /* enabled */,
13416                                    from_tty);
13417 }
13418
13419 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13420
13421 static int
13422 ada_is_exception_sym (struct symbol *sym)
13423 {
13424   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13425
13426   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13427           && SYMBOL_CLASS (sym) != LOC_BLOCK
13428           && SYMBOL_CLASS (sym) != LOC_CONST
13429           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13430           && type_name != NULL && strcmp (type_name, "exception") == 0);
13431 }
13432
13433 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13434    Ada exception object.  This matches all exceptions except the ones
13435    defined by the Ada language.  */
13436
13437 static int
13438 ada_is_non_standard_exception_sym (struct symbol *sym)
13439 {
13440   int i;
13441
13442   if (!ada_is_exception_sym (sym))
13443     return 0;
13444
13445   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13446     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13447       return 0;  /* A standard exception.  */
13448
13449   /* Numeric_Error is also a standard exception, so exclude it.
13450      See the STANDARD_EXC description for more details as to why
13451      this exception is not listed in that array.  */
13452   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13453     return 0;
13454
13455   return 1;
13456 }
13457
13458 /* A helper function for std::sort, comparing two struct ada_exc_info
13459    objects.
13460
13461    The comparison is determined first by exception name, and then
13462    by exception address.  */
13463
13464 bool
13465 ada_exc_info::operator< (const ada_exc_info &other) const
13466 {
13467   int result;
13468
13469   result = strcmp (name, other.name);
13470   if (result < 0)
13471     return true;
13472   if (result == 0 && addr < other.addr)
13473     return true;
13474   return false;
13475 }
13476
13477 bool
13478 ada_exc_info::operator== (const ada_exc_info &other) const
13479 {
13480   return addr == other.addr && strcmp (name, other.name) == 0;
13481 }
13482
13483 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13484    routine, but keeping the first SKIP elements untouched.
13485
13486    All duplicates are also removed.  */
13487
13488 static void
13489 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13490                                       int skip)
13491 {
13492   std::sort (exceptions->begin () + skip, exceptions->end ());
13493   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13494                      exceptions->end ());
13495 }
13496
13497 /* Add all exceptions defined by the Ada standard whose name match
13498    a regular expression.
13499
13500    If PREG is not NULL, then this regexp_t object is used to
13501    perform the symbol name matching.  Otherwise, no name-based
13502    filtering is performed.
13503
13504    EXCEPTIONS is a vector of exceptions to which matching exceptions
13505    gets pushed.  */
13506
13507 static void
13508 ada_add_standard_exceptions (compiled_regex *preg,
13509                              std::vector<ada_exc_info> *exceptions)
13510 {
13511   int i;
13512
13513   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13514     {
13515       if (preg == NULL
13516           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13517         {
13518           struct bound_minimal_symbol msymbol
13519             = ada_lookup_simple_minsym (standard_exc[i]);
13520
13521           if (msymbol.minsym != NULL)
13522             {
13523               struct ada_exc_info info
13524                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13525
13526               exceptions->push_back (info);
13527             }
13528         }
13529     }
13530 }
13531
13532 /* Add all Ada exceptions defined locally and accessible from the given
13533    FRAME.
13534
13535    If PREG is not NULL, then this regexp_t object is used to
13536    perform the symbol name matching.  Otherwise, no name-based
13537    filtering is performed.
13538
13539    EXCEPTIONS is a vector of exceptions to which matching exceptions
13540    gets pushed.  */
13541
13542 static void
13543 ada_add_exceptions_from_frame (compiled_regex *preg,
13544                                struct frame_info *frame,
13545                                std::vector<ada_exc_info> *exceptions)
13546 {
13547   const struct block *block = get_frame_block (frame, 0);
13548
13549   while (block != 0)
13550     {
13551       struct block_iterator iter;
13552       struct symbol *sym;
13553
13554       ALL_BLOCK_SYMBOLS (block, iter, sym)
13555         {
13556           switch (SYMBOL_CLASS (sym))
13557             {
13558             case LOC_TYPEDEF:
13559             case LOC_BLOCK:
13560             case LOC_CONST:
13561               break;
13562             default:
13563               if (ada_is_exception_sym (sym))
13564                 {
13565                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13566                                               SYMBOL_VALUE_ADDRESS (sym)};
13567
13568                   exceptions->push_back (info);
13569                 }
13570             }
13571         }
13572       if (BLOCK_FUNCTION (block) != NULL)
13573         break;
13574       block = BLOCK_SUPERBLOCK (block);
13575     }
13576 }
13577
13578 /* Return true if NAME matches PREG or if PREG is NULL.  */
13579
13580 static bool
13581 name_matches_regex (const char *name, compiled_regex *preg)
13582 {
13583   return (preg == NULL
13584           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13585 }
13586
13587 /* Add all exceptions defined globally whose name name match
13588    a regular expression, excluding standard exceptions.
13589
13590    The reason we exclude standard exceptions is that they need
13591    to be handled separately: Standard exceptions are defined inside
13592    a runtime unit which is normally not compiled with debugging info,
13593    and thus usually do not show up in our symbol search.  However,
13594    if the unit was in fact built with debugging info, we need to
13595    exclude them because they would duplicate the entry we found
13596    during the special loop that specifically searches for those
13597    standard exceptions.
13598
13599    If PREG is not NULL, then this regexp_t object is used to
13600    perform the symbol name matching.  Otherwise, no name-based
13601    filtering is performed.
13602
13603    EXCEPTIONS is a vector of exceptions to which matching exceptions
13604    gets pushed.  */
13605
13606 static void
13607 ada_add_global_exceptions (compiled_regex *preg,
13608                            std::vector<ada_exc_info> *exceptions)
13609 {
13610   /* In Ada, the symbol "search name" is a linkage name, whereas the
13611      regular expression used to do the matching refers to the natural
13612      name.  So match against the decoded name.  */
13613   expand_symtabs_matching (NULL,
13614                            lookup_name_info::match_any (),
13615                            [&] (const char *search_name)
13616                            {
13617                              const char *decoded = ada_decode (search_name);
13618                              return name_matches_regex (decoded, preg);
13619                            },
13620                            NULL,
13621                            VARIABLES_DOMAIN);
13622
13623   for (objfile *objfile : current_program_space->objfiles ())
13624     {
13625       for (compunit_symtab *s : objfile->compunits ())
13626         {
13627           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13628           int i;
13629
13630           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13631             {
13632               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13633               struct block_iterator iter;
13634               struct symbol *sym;
13635
13636               ALL_BLOCK_SYMBOLS (b, iter, sym)
13637                 if (ada_is_non_standard_exception_sym (sym)
13638                     && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13639                   {
13640                     struct ada_exc_info info
13641                       = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13642
13643                     exceptions->push_back (info);
13644                   }
13645             }
13646         }
13647     }
13648 }
13649
13650 /* Implements ada_exceptions_list with the regular expression passed
13651    as a regex_t, rather than a string.
13652
13653    If not NULL, PREG is used to filter out exceptions whose names
13654    do not match.  Otherwise, all exceptions are listed.  */
13655
13656 static std::vector<ada_exc_info>
13657 ada_exceptions_list_1 (compiled_regex *preg)
13658 {
13659   std::vector<ada_exc_info> result;
13660   int prev_len;
13661
13662   /* First, list the known standard exceptions.  These exceptions
13663      need to be handled separately, as they are usually defined in
13664      runtime units that have been compiled without debugging info.  */
13665
13666   ada_add_standard_exceptions (preg, &result);
13667
13668   /* Next, find all exceptions whose scope is local and accessible
13669      from the currently selected frame.  */
13670
13671   if (has_stack_frames ())
13672     {
13673       prev_len = result.size ();
13674       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13675                                      &result);
13676       if (result.size () > prev_len)
13677         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13678     }
13679
13680   /* Add all exceptions whose scope is global.  */
13681
13682   prev_len = result.size ();
13683   ada_add_global_exceptions (preg, &result);
13684   if (result.size () > prev_len)
13685     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13686
13687   return result;
13688 }
13689
13690 /* Return a vector of ada_exc_info.
13691
13692    If REGEXP is NULL, all exceptions are included in the result.
13693    Otherwise, it should contain a valid regular expression,
13694    and only the exceptions whose names match that regular expression
13695    are included in the result.
13696
13697    The exceptions are sorted in the following order:
13698      - Standard exceptions (defined by the Ada language), in
13699        alphabetical order;
13700      - Exceptions only visible from the current frame, in
13701        alphabetical order;
13702      - Exceptions whose scope is global, in alphabetical order.  */
13703
13704 std::vector<ada_exc_info>
13705 ada_exceptions_list (const char *regexp)
13706 {
13707   if (regexp == NULL)
13708     return ada_exceptions_list_1 (NULL);
13709
13710   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13711   return ada_exceptions_list_1 (&reg);
13712 }
13713
13714 /* Implement the "info exceptions" command.  */
13715
13716 static void
13717 info_exceptions_command (const char *regexp, int from_tty)
13718 {
13719   struct gdbarch *gdbarch = get_current_arch ();
13720
13721   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13722
13723   if (regexp != NULL)
13724     printf_filtered
13725       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13726   else
13727     printf_filtered (_("All defined Ada exceptions:\n"));
13728
13729   for (const ada_exc_info &info : exceptions)
13730     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13731 }
13732
13733                                 /* Operators */
13734 /* Information about operators given special treatment in functions
13735    below.  */
13736 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13737
13738 #define ADA_OPERATORS \
13739     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13740     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13741     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13742     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13743     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13744     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13745     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13746     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13747     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13748     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13749     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13750     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13751     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13752     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13753     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13754     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13755     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13756     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13757     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13758
13759 static void
13760 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13761                      int *argsp)
13762 {
13763   switch (exp->elts[pc - 1].opcode)
13764     {
13765     default:
13766       operator_length_standard (exp, pc, oplenp, argsp);
13767       break;
13768
13769 #define OP_DEFN(op, len, args, binop) \
13770     case op: *oplenp = len; *argsp = args; break;
13771       ADA_OPERATORS;
13772 #undef OP_DEFN
13773
13774     case OP_AGGREGATE:
13775       *oplenp = 3;
13776       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13777       break;
13778
13779     case OP_CHOICES:
13780       *oplenp = 3;
13781       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13782       break;
13783     }
13784 }
13785
13786 /* Implementation of the exp_descriptor method operator_check.  */
13787
13788 static int
13789 ada_operator_check (struct expression *exp, int pos,
13790                     int (*objfile_func) (struct objfile *objfile, void *data),
13791                     void *data)
13792 {
13793   const union exp_element *const elts = exp->elts;
13794   struct type *type = NULL;
13795
13796   switch (elts[pos].opcode)
13797     {
13798       case UNOP_IN_RANGE:
13799       case UNOP_QUAL:
13800         type = elts[pos + 1].type;
13801         break;
13802
13803       default:
13804         return operator_check_standard (exp, pos, objfile_func, data);
13805     }
13806
13807   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13808
13809   if (type && TYPE_OBJFILE (type)
13810       && (*objfile_func) (TYPE_OBJFILE (type), data))
13811     return 1;
13812
13813   return 0;
13814 }
13815
13816 static const char *
13817 ada_op_name (enum exp_opcode opcode)
13818 {
13819   switch (opcode)
13820     {
13821     default:
13822       return op_name_standard (opcode);
13823
13824 #define OP_DEFN(op, len, args, binop) case op: return #op;
13825       ADA_OPERATORS;
13826 #undef OP_DEFN
13827
13828     case OP_AGGREGATE:
13829       return "OP_AGGREGATE";
13830     case OP_CHOICES:
13831       return "OP_CHOICES";
13832     case OP_NAME:
13833       return "OP_NAME";
13834     }
13835 }
13836
13837 /* As for operator_length, but assumes PC is pointing at the first
13838    element of the operator, and gives meaningful results only for the 
13839    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13840
13841 static void
13842 ada_forward_operator_length (struct expression *exp, int pc,
13843                              int *oplenp, int *argsp)
13844 {
13845   switch (exp->elts[pc].opcode)
13846     {
13847     default:
13848       *oplenp = *argsp = 0;
13849       break;
13850
13851 #define OP_DEFN(op, len, args, binop) \
13852     case op: *oplenp = len; *argsp = args; break;
13853       ADA_OPERATORS;
13854 #undef OP_DEFN
13855
13856     case OP_AGGREGATE:
13857       *oplenp = 3;
13858       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13859       break;
13860
13861     case OP_CHOICES:
13862       *oplenp = 3;
13863       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13864       break;
13865
13866     case OP_STRING:
13867     case OP_NAME:
13868       {
13869         int len = longest_to_int (exp->elts[pc + 1].longconst);
13870
13871         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13872         *argsp = 0;
13873         break;
13874       }
13875     }
13876 }
13877
13878 static int
13879 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13880 {
13881   enum exp_opcode op = exp->elts[elt].opcode;
13882   int oplen, nargs;
13883   int pc = elt;
13884   int i;
13885
13886   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13887
13888   switch (op)
13889     {
13890       /* Ada attributes ('Foo).  */
13891     case OP_ATR_FIRST:
13892     case OP_ATR_LAST:
13893     case OP_ATR_LENGTH:
13894     case OP_ATR_IMAGE:
13895     case OP_ATR_MAX:
13896     case OP_ATR_MIN:
13897     case OP_ATR_MODULUS:
13898     case OP_ATR_POS:
13899     case OP_ATR_SIZE:
13900     case OP_ATR_TAG:
13901     case OP_ATR_VAL:
13902       break;
13903
13904     case UNOP_IN_RANGE:
13905     case UNOP_QUAL:
13906       /* XXX: gdb_sprint_host_address, type_sprint */
13907       fprintf_filtered (stream, _("Type @"));
13908       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13909       fprintf_filtered (stream, " (");
13910       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13911       fprintf_filtered (stream, ")");
13912       break;
13913     case BINOP_IN_BOUNDS:
13914       fprintf_filtered (stream, " (%d)",
13915                         longest_to_int (exp->elts[pc + 2].longconst));
13916       break;
13917     case TERNOP_IN_RANGE:
13918       break;
13919
13920     case OP_AGGREGATE:
13921     case OP_OTHERS:
13922     case OP_DISCRETE_RANGE:
13923     case OP_POSITIONAL:
13924     case OP_CHOICES:
13925       break;
13926
13927     case OP_NAME:
13928     case OP_STRING:
13929       {
13930         char *name = &exp->elts[elt + 2].string;
13931         int len = longest_to_int (exp->elts[elt + 1].longconst);
13932
13933         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13934         break;
13935       }
13936
13937     default:
13938       return dump_subexp_body_standard (exp, stream, elt);
13939     }
13940
13941   elt += oplen;
13942   for (i = 0; i < nargs; i += 1)
13943     elt = dump_subexp (exp, stream, elt);
13944
13945   return elt;
13946 }
13947
13948 /* The Ada extension of print_subexp (q.v.).  */
13949
13950 static void
13951 ada_print_subexp (struct expression *exp, int *pos,
13952                   struct ui_file *stream, enum precedence prec)
13953 {
13954   int oplen, nargs, i;
13955   int pc = *pos;
13956   enum exp_opcode op = exp->elts[pc].opcode;
13957
13958   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13959
13960   *pos += oplen;
13961   switch (op)
13962     {
13963     default:
13964       *pos -= oplen;
13965       print_subexp_standard (exp, pos, stream, prec);
13966       return;
13967
13968     case OP_VAR_VALUE:
13969       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13970       return;
13971
13972     case BINOP_IN_BOUNDS:
13973       /* XXX: sprint_subexp */
13974       print_subexp (exp, pos, stream, PREC_SUFFIX);
13975       fputs_filtered (" in ", stream);
13976       print_subexp (exp, pos, stream, PREC_SUFFIX);
13977       fputs_filtered ("'range", stream);
13978       if (exp->elts[pc + 1].longconst > 1)
13979         fprintf_filtered (stream, "(%ld)",
13980                           (long) exp->elts[pc + 1].longconst);
13981       return;
13982
13983     case TERNOP_IN_RANGE:
13984       if (prec >= PREC_EQUAL)
13985         fputs_filtered ("(", stream);
13986       /* XXX: sprint_subexp */
13987       print_subexp (exp, pos, stream, PREC_SUFFIX);
13988       fputs_filtered (" in ", stream);
13989       print_subexp (exp, pos, stream, PREC_EQUAL);
13990       fputs_filtered (" .. ", stream);
13991       print_subexp (exp, pos, stream, PREC_EQUAL);
13992       if (prec >= PREC_EQUAL)
13993         fputs_filtered (")", stream);
13994       return;
13995
13996     case OP_ATR_FIRST:
13997     case OP_ATR_LAST:
13998     case OP_ATR_LENGTH:
13999     case OP_ATR_IMAGE:
14000     case OP_ATR_MAX:
14001     case OP_ATR_MIN:
14002     case OP_ATR_MODULUS:
14003     case OP_ATR_POS:
14004     case OP_ATR_SIZE:
14005     case OP_ATR_TAG:
14006     case OP_ATR_VAL:
14007       if (exp->elts[*pos].opcode == OP_TYPE)
14008         {
14009           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
14010             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
14011                            &type_print_raw_options);
14012           *pos += 3;
14013         }
14014       else
14015         print_subexp (exp, pos, stream, PREC_SUFFIX);
14016       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
14017       if (nargs > 1)
14018         {
14019           int tem;
14020
14021           for (tem = 1; tem < nargs; tem += 1)
14022             {
14023               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
14024               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
14025             }
14026           fputs_filtered (")", stream);
14027         }
14028       return;
14029
14030     case UNOP_QUAL:
14031       type_print (exp->elts[pc + 1].type, "", stream, 0);
14032       fputs_filtered ("'(", stream);
14033       print_subexp (exp, pos, stream, PREC_PREFIX);
14034       fputs_filtered (")", stream);
14035       return;
14036
14037     case UNOP_IN_RANGE:
14038       /* XXX: sprint_subexp */
14039       print_subexp (exp, pos, stream, PREC_SUFFIX);
14040       fputs_filtered (" in ", stream);
14041       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
14042                      &type_print_raw_options);
14043       return;
14044
14045     case OP_DISCRETE_RANGE:
14046       print_subexp (exp, pos, stream, PREC_SUFFIX);
14047       fputs_filtered ("..", stream);
14048       print_subexp (exp, pos, stream, PREC_SUFFIX);
14049       return;
14050
14051     case OP_OTHERS:
14052       fputs_filtered ("others => ", stream);
14053       print_subexp (exp, pos, stream, PREC_SUFFIX);
14054       return;
14055
14056     case OP_CHOICES:
14057       for (i = 0; i < nargs-1; i += 1)
14058         {
14059           if (i > 0)
14060             fputs_filtered ("|", stream);
14061           print_subexp (exp, pos, stream, PREC_SUFFIX);
14062         }
14063       fputs_filtered (" => ", stream);
14064       print_subexp (exp, pos, stream, PREC_SUFFIX);
14065       return;
14066       
14067     case OP_POSITIONAL:
14068       print_subexp (exp, pos, stream, PREC_SUFFIX);
14069       return;
14070
14071     case OP_AGGREGATE:
14072       fputs_filtered ("(", stream);
14073       for (i = 0; i < nargs; i += 1)
14074         {
14075           if (i > 0)
14076             fputs_filtered (", ", stream);
14077           print_subexp (exp, pos, stream, PREC_SUFFIX);
14078         }
14079       fputs_filtered (")", stream);
14080       return;
14081     }
14082 }
14083
14084 /* Table mapping opcodes into strings for printing operators
14085    and precedences of the operators.  */
14086
14087 static const struct op_print ada_op_print_tab[] = {
14088   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14089   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14090   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14091   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14092   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14093   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14094   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14095   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14096   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14097   {">=", BINOP_GEQ, PREC_ORDER, 0},
14098   {">", BINOP_GTR, PREC_ORDER, 0},
14099   {"<", BINOP_LESS, PREC_ORDER, 0},
14100   {">>", BINOP_RSH, PREC_SHIFT, 0},
14101   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14102   {"+", BINOP_ADD, PREC_ADD, 0},
14103   {"-", BINOP_SUB, PREC_ADD, 0},
14104   {"&", BINOP_CONCAT, PREC_ADD, 0},
14105   {"*", BINOP_MUL, PREC_MUL, 0},
14106   {"/", BINOP_DIV, PREC_MUL, 0},
14107   {"rem", BINOP_REM, PREC_MUL, 0},
14108   {"mod", BINOP_MOD, PREC_MUL, 0},
14109   {"**", BINOP_EXP, PREC_REPEAT, 0},
14110   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14111   {"-", UNOP_NEG, PREC_PREFIX, 0},
14112   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14113   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14114   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14115   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14116   {".all", UNOP_IND, PREC_SUFFIX, 1},
14117   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14118   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14119   {NULL, OP_NULL, PREC_SUFFIX, 0}
14120 };
14121 \f
14122 enum ada_primitive_types {
14123   ada_primitive_type_int,
14124   ada_primitive_type_long,
14125   ada_primitive_type_short,
14126   ada_primitive_type_char,
14127   ada_primitive_type_float,
14128   ada_primitive_type_double,
14129   ada_primitive_type_void,
14130   ada_primitive_type_long_long,
14131   ada_primitive_type_long_double,
14132   ada_primitive_type_natural,
14133   ada_primitive_type_positive,
14134   ada_primitive_type_system_address,
14135   ada_primitive_type_storage_offset,
14136   nr_ada_primitive_types
14137 };
14138
14139 static void
14140 ada_language_arch_info (struct gdbarch *gdbarch,
14141                         struct language_arch_info *lai)
14142 {
14143   const struct builtin_type *builtin = builtin_type (gdbarch);
14144
14145   lai->primitive_type_vector
14146     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14147                               struct type *);
14148
14149   lai->primitive_type_vector [ada_primitive_type_int]
14150     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14151                          0, "integer");
14152   lai->primitive_type_vector [ada_primitive_type_long]
14153     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14154                          0, "long_integer");
14155   lai->primitive_type_vector [ada_primitive_type_short]
14156     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14157                          0, "short_integer");
14158   lai->string_char_type
14159     = lai->primitive_type_vector [ada_primitive_type_char]
14160     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14161   lai->primitive_type_vector [ada_primitive_type_float]
14162     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14163                        "float", gdbarch_float_format (gdbarch));
14164   lai->primitive_type_vector [ada_primitive_type_double]
14165     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14166                        "long_float", gdbarch_double_format (gdbarch));
14167   lai->primitive_type_vector [ada_primitive_type_long_long]
14168     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14169                          0, "long_long_integer");
14170   lai->primitive_type_vector [ada_primitive_type_long_double]
14171     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14172                        "long_long_float", gdbarch_long_double_format (gdbarch));
14173   lai->primitive_type_vector [ada_primitive_type_natural]
14174     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14175                          0, "natural");
14176   lai->primitive_type_vector [ada_primitive_type_positive]
14177     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14178                          0, "positive");
14179   lai->primitive_type_vector [ada_primitive_type_void]
14180     = builtin->builtin_void;
14181
14182   lai->primitive_type_vector [ada_primitive_type_system_address]
14183     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14184                                       "void"));
14185   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14186     = "system__address";
14187
14188   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14189      type.  This is a signed integral type whose size is the same as
14190      the size of addresses.  */
14191   {
14192     unsigned int addr_length = TYPE_LENGTH
14193       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14194
14195     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14196       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14197                            "storage_offset");
14198   }
14199
14200   lai->bool_type_symbol = NULL;
14201   lai->bool_type_default = builtin->builtin_bool;
14202 }
14203 \f
14204                                 /* Language vector */
14205
14206 /* Not really used, but needed in the ada_language_defn.  */
14207
14208 static void
14209 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14210 {
14211   ada_emit_char (c, type, stream, quoter, 1);
14212 }
14213
14214 static int
14215 parse (struct parser_state *ps)
14216 {
14217   warnings_issued = 0;
14218   return ada_parse (ps);
14219 }
14220
14221 static const struct exp_descriptor ada_exp_descriptor = {
14222   ada_print_subexp,
14223   ada_operator_length,
14224   ada_operator_check,
14225   ada_op_name,
14226   ada_dump_subexp_body,
14227   ada_evaluate_subexp
14228 };
14229
14230 /* symbol_name_matcher_ftype adapter for wild_match.  */
14231
14232 static bool
14233 do_wild_match (const char *symbol_search_name,
14234                const lookup_name_info &lookup_name,
14235                completion_match_result *comp_match_res)
14236 {
14237   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14238 }
14239
14240 /* symbol_name_matcher_ftype adapter for full_match.  */
14241
14242 static bool
14243 do_full_match (const char *symbol_search_name,
14244                const lookup_name_info &lookup_name,
14245                completion_match_result *comp_match_res)
14246 {
14247   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14248 }
14249
14250 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
14251
14252 static bool
14253 do_exact_match (const char *symbol_search_name,
14254                 const lookup_name_info &lookup_name,
14255                 completion_match_result *comp_match_res)
14256 {
14257   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14258 }
14259
14260 /* Build the Ada lookup name for LOOKUP_NAME.  */
14261
14262 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14263 {
14264   const std::string &user_name = lookup_name.name ();
14265
14266   if (user_name[0] == '<')
14267     {
14268       if (user_name.back () == '>')
14269         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14270       else
14271         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14272       m_encoded_p = true;
14273       m_verbatim_p = true;
14274       m_wild_match_p = false;
14275       m_standard_p = false;
14276     }
14277   else
14278     {
14279       m_verbatim_p = false;
14280
14281       m_encoded_p = user_name.find ("__") != std::string::npos;
14282
14283       if (!m_encoded_p)
14284         {
14285           const char *folded = ada_fold_name (user_name.c_str ());
14286           const char *encoded = ada_encode_1 (folded, false);
14287           if (encoded != NULL)
14288             m_encoded_name = encoded;
14289           else
14290             m_encoded_name = user_name;
14291         }
14292       else
14293         m_encoded_name = user_name;
14294
14295       /* Handle the 'package Standard' special case.  See description
14296          of m_standard_p.  */
14297       if (startswith (m_encoded_name.c_str (), "standard__"))
14298         {
14299           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14300           m_standard_p = true;
14301         }
14302       else
14303         m_standard_p = false;
14304
14305       /* If the name contains a ".", then the user is entering a fully
14306          qualified entity name, and the match must not be done in wild
14307          mode.  Similarly, if the user wants to complete what looks
14308          like an encoded name, the match must not be done in wild
14309          mode.  Also, in the standard__ special case always do
14310          non-wild matching.  */
14311       m_wild_match_p
14312         = (lookup_name.match_type () != symbol_name_match_type::FULL
14313            && !m_encoded_p
14314            && !m_standard_p
14315            && user_name.find ('.') == std::string::npos);
14316     }
14317 }
14318
14319 /* symbol_name_matcher_ftype method for Ada.  This only handles
14320    completion mode.  */
14321
14322 static bool
14323 ada_symbol_name_matches (const char *symbol_search_name,
14324                          const lookup_name_info &lookup_name,
14325                          completion_match_result *comp_match_res)
14326 {
14327   return lookup_name.ada ().matches (symbol_search_name,
14328                                      lookup_name.match_type (),
14329                                      comp_match_res);
14330 }
14331
14332 /* A name matcher that matches the symbol name exactly, with
14333    strcmp.  */
14334
14335 static bool
14336 literal_symbol_name_matcher (const char *symbol_search_name,
14337                              const lookup_name_info &lookup_name,
14338                              completion_match_result *comp_match_res)
14339 {
14340   const std::string &name = lookup_name.name ();
14341
14342   int cmp = (lookup_name.completion_mode ()
14343              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14344              : strcmp (symbol_search_name, name.c_str ()));
14345   if (cmp == 0)
14346     {
14347       if (comp_match_res != NULL)
14348         comp_match_res->set_match (symbol_search_name);
14349       return true;
14350     }
14351   else
14352     return false;
14353 }
14354
14355 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14356    Ada.  */
14357
14358 static symbol_name_matcher_ftype *
14359 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14360 {
14361   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14362     return literal_symbol_name_matcher;
14363
14364   if (lookup_name.completion_mode ())
14365     return ada_symbol_name_matches;
14366   else
14367     {
14368       if (lookup_name.ada ().wild_match_p ())
14369         return do_wild_match;
14370       else if (lookup_name.ada ().verbatim_p ())
14371         return do_exact_match;
14372       else
14373         return do_full_match;
14374     }
14375 }
14376
14377 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14378
14379 static struct value *
14380 ada_read_var_value (struct symbol *var, const struct block *var_block,
14381                     struct frame_info *frame)
14382 {
14383   const struct block *frame_block = NULL;
14384   struct symbol *renaming_sym = NULL;
14385
14386   /* The only case where default_read_var_value is not sufficient
14387      is when VAR is a renaming...  */
14388   if (frame)
14389     frame_block = get_frame_block (frame, NULL);
14390   if (frame_block)
14391     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14392   if (renaming_sym != NULL)
14393     return ada_read_renaming_var_value (renaming_sym, frame_block);
14394
14395   /* This is a typical case where we expect the default_read_var_value
14396      function to work.  */
14397   return default_read_var_value (var, var_block, frame);
14398 }
14399
14400 static const char *ada_extensions[] =
14401 {
14402   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14403 };
14404
14405 extern const struct language_defn ada_language_defn = {
14406   "ada",                        /* Language name */
14407   "Ada",
14408   language_ada,
14409   range_check_off,
14410   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14411                                    that's not quite what this means.  */
14412   array_row_major,
14413   macro_expansion_no,
14414   ada_extensions,
14415   &ada_exp_descriptor,
14416   parse,
14417   resolve,
14418   ada_printchar,                /* Print a character constant */
14419   ada_printstr,                 /* Function to print string constant */
14420   emit_char,                    /* Function to print single char (not used) */
14421   ada_print_type,               /* Print a type using appropriate syntax */
14422   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14423   ada_val_print,                /* Print a value using appropriate syntax */
14424   ada_value_print,              /* Print a top-level value */
14425   ada_read_var_value,           /* la_read_var_value */
14426   NULL,                         /* Language specific skip_trampoline */
14427   NULL,                         /* name_of_this */
14428   true,                         /* la_store_sym_names_in_linkage_form_p */
14429   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14430   basic_lookup_transparent_type,        /* lookup_transparent_type */
14431   ada_la_decode,                /* Language specific symbol demangler */
14432   ada_sniff_from_mangled_name,
14433   NULL,                         /* Language specific
14434                                    class_name_from_physname */
14435   ada_op_print_tab,             /* expression operators for printing */
14436   0,                            /* c-style arrays */
14437   1,                            /* String lower bound */
14438   ada_get_gdb_completer_word_break_characters,
14439   ada_collect_symbol_completion_matches,
14440   ada_language_arch_info,
14441   ada_print_array_index,
14442   default_pass_by_reference,
14443   c_get_string,
14444   ada_watch_location_expression,
14445   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14446   ada_iterate_over_symbols,
14447   default_search_name_hash,
14448   &ada_varobj_ops,
14449   NULL,
14450   NULL,
14451   ada_is_string_type,
14452   "(...)"                       /* la_struct_too_deep_ellipsis */
14453 };
14454
14455 /* Command-list for the "set/show ada" prefix command.  */
14456 static struct cmd_list_element *set_ada_list;
14457 static struct cmd_list_element *show_ada_list;
14458
14459 /* Implement the "set ada" prefix command.  */
14460
14461 static void
14462 set_ada_command (const char *arg, int from_tty)
14463 {
14464   printf_unfiltered (_(\
14465 "\"set ada\" must be followed by the name of a setting.\n"));
14466   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14467 }
14468
14469 /* Implement the "show ada" prefix command.  */
14470
14471 static void
14472 show_ada_command (const char *args, int from_tty)
14473 {
14474   cmd_show_list (show_ada_list, from_tty, "");
14475 }
14476
14477 static void
14478 initialize_ada_catchpoint_ops (void)
14479 {
14480   struct breakpoint_ops *ops;
14481
14482   initialize_breakpoint_ops ();
14483
14484   ops = &catch_exception_breakpoint_ops;
14485   *ops = bkpt_breakpoint_ops;
14486   ops->allocate_location = allocate_location_catch_exception;
14487   ops->re_set = re_set_catch_exception;
14488   ops->check_status = check_status_catch_exception;
14489   ops->print_it = print_it_catch_exception;
14490   ops->print_one = print_one_catch_exception;
14491   ops->print_mention = print_mention_catch_exception;
14492   ops->print_recreate = print_recreate_catch_exception;
14493
14494   ops = &catch_exception_unhandled_breakpoint_ops;
14495   *ops = bkpt_breakpoint_ops;
14496   ops->allocate_location = allocate_location_catch_exception_unhandled;
14497   ops->re_set = re_set_catch_exception_unhandled;
14498   ops->check_status = check_status_catch_exception_unhandled;
14499   ops->print_it = print_it_catch_exception_unhandled;
14500   ops->print_one = print_one_catch_exception_unhandled;
14501   ops->print_mention = print_mention_catch_exception_unhandled;
14502   ops->print_recreate = print_recreate_catch_exception_unhandled;
14503
14504   ops = &catch_assert_breakpoint_ops;
14505   *ops = bkpt_breakpoint_ops;
14506   ops->allocate_location = allocate_location_catch_assert;
14507   ops->re_set = re_set_catch_assert;
14508   ops->check_status = check_status_catch_assert;
14509   ops->print_it = print_it_catch_assert;
14510   ops->print_one = print_one_catch_assert;
14511   ops->print_mention = print_mention_catch_assert;
14512   ops->print_recreate = print_recreate_catch_assert;
14513
14514   ops = &catch_handlers_breakpoint_ops;
14515   *ops = bkpt_breakpoint_ops;
14516   ops->allocate_location = allocate_location_catch_handlers;
14517   ops->re_set = re_set_catch_handlers;
14518   ops->check_status = check_status_catch_handlers;
14519   ops->print_it = print_it_catch_handlers;
14520   ops->print_one = print_one_catch_handlers;
14521   ops->print_mention = print_mention_catch_handlers;
14522   ops->print_recreate = print_recreate_catch_handlers;
14523 }
14524
14525 /* This module's 'new_objfile' observer.  */
14526
14527 static void
14528 ada_new_objfile_observer (struct objfile *objfile)
14529 {
14530   ada_clear_symbol_cache ();
14531 }
14532
14533 /* This module's 'free_objfile' observer.  */
14534
14535 static void
14536 ada_free_objfile_observer (struct objfile *objfile)
14537 {
14538   ada_clear_symbol_cache ();
14539 }
14540
14541 void
14542 _initialize_ada_language (void)
14543 {
14544   initialize_ada_catchpoint_ops ();
14545
14546   add_prefix_cmd ("ada", no_class, set_ada_command,
14547                   _("Prefix command for changing Ada-specific settings"),
14548                   &set_ada_list, "set ada ", 0, &setlist);
14549
14550   add_prefix_cmd ("ada", no_class, show_ada_command,
14551                   _("Generic command for showing Ada-specific settings."),
14552                   &show_ada_list, "show ada ", 0, &showlist);
14553
14554   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14555                            &trust_pad_over_xvs, _("\
14556 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14557 Show whether an optimization trusting PAD types over XVS types is activated"),
14558                            _("\
14559 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14560 should normally trust the contents of PAD types, but certain older versions\n\
14561 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14562 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14563 work around this bug.  It is always safe to turn this option \"off\", but\n\
14564 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14565 this option to \"off\" unless necessary."),
14566                             NULL, NULL, &set_ada_list, &show_ada_list);
14567
14568   add_setshow_boolean_cmd ("print-signatures", class_vars,
14569                            &print_signatures, _("\
14570 Enable or disable the output of formal and return types for functions in the \
14571 overloads selection menu"), _("\
14572 Show whether the output of formal and return types for functions in the \
14573 overloads selection menu is activated"),
14574                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14575
14576   add_catch_command ("exception", _("\
14577 Catch Ada exceptions, when raised.\n\
14578 Usage: catch exception [ ARG ]\n\
14579 \n\
14580 Without any argument, stop when any Ada exception is raised.\n\
14581 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14582 being raised does not have a handler (and will therefore lead to the task's\n\
14583 termination).\n\
14584 Otherwise, the catchpoint only stops when the name of the exception being\n\
14585 raised is the same as ARG."),
14586                      catch_ada_exception_command,
14587                      NULL,
14588                      CATCH_PERMANENT,
14589                      CATCH_TEMPORARY);
14590
14591   add_catch_command ("handlers", _("\
14592 Catch Ada exceptions, when handled.\n\
14593 With an argument, catch only exceptions with the given name."),
14594                      catch_ada_handlers_command,
14595                      NULL,
14596                      CATCH_PERMANENT,
14597                      CATCH_TEMPORARY);
14598   add_catch_command ("assert", _("\
14599 Catch failed Ada assertions, when raised.\n\
14600 With an argument, catch only exceptions with the given name."),
14601                      catch_assert_command,
14602                      NULL,
14603                      CATCH_PERMANENT,
14604                      CATCH_TEMPORARY);
14605
14606   varsize_limit = 65536;
14607   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14608                             &varsize_limit, _("\
14609 Set the maximum number of bytes allowed in a variable-size object."), _("\
14610 Show the maximum number of bytes allowed in a variable-size object."), _("\
14611 Attempts to access an object whose size is not a compile-time constant\n\
14612 and exceeds this limit will cause an error."),
14613                             NULL, NULL, &setlist, &showlist);
14614
14615   add_info ("exceptions", info_exceptions_command,
14616             _("\
14617 List all Ada exception names.\n\
14618 If a regular expression is passed as an argument, only those matching\n\
14619 the regular expression are listed."));
14620
14621   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14622                   _("Set Ada maintenance-related variables."),
14623                   &maint_set_ada_cmdlist, "maintenance set ada ",
14624                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14625
14626   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14627                   _("Show Ada maintenance-related variables"),
14628                   &maint_show_ada_cmdlist, "maintenance show ada ",
14629                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14630
14631   add_setshow_boolean_cmd
14632     ("ignore-descriptive-types", class_maintenance,
14633      &ada_ignore_descriptive_types_p,
14634      _("Set whether descriptive types generated by GNAT should be ignored."),
14635      _("Show whether descriptive types generated by GNAT should be ignored."),
14636      _("\
14637 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14638 DWARF attribute."),
14639      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14640
14641   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14642                                            NULL, xcalloc, xfree);
14643
14644   /* The ada-lang observers.  */
14645   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14646   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14647   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14648
14649   /* Setup various context-specific data.  */
14650   ada_inferior_data
14651     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14652   ada_pspace_data_handle
14653     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14654 }