AArch64: Use HWCAP to detect pauth feature
[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
67 /* Define whether or not the C operator '/' truncates towards zero for
68    differently signed operands (truncation direction is undefined in C).
69    Copied from valarith.c.  */
70
71 #ifndef TRUNCATION_TOWARDS_ZERO
72 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
73 #endif
74
75 static struct type *desc_base_type (struct type *);
76
77 static struct type *desc_bounds_type (struct type *);
78
79 static struct value *desc_bounds (struct value *);
80
81 static int fat_pntr_bounds_bitpos (struct type *);
82
83 static int fat_pntr_bounds_bitsize (struct type *);
84
85 static struct type *desc_data_target_type (struct type *);
86
87 static struct value *desc_data (struct value *);
88
89 static int fat_pntr_data_bitpos (struct type *);
90
91 static int fat_pntr_data_bitsize (struct type *);
92
93 static struct value *desc_one_bound (struct value *, int, int);
94
95 static int desc_bound_bitpos (struct type *, int, int);
96
97 static int desc_bound_bitsize (struct type *, int, int);
98
99 static struct type *desc_index_type (struct type *, int);
100
101 static int desc_arity (struct type *);
102
103 static int ada_type_match (struct type *, struct type *, int);
104
105 static int ada_args_match (struct symbol *, struct value **, int);
106
107 static struct value *make_array_descriptor (struct type *, struct value *);
108
109 static void ada_add_block_symbols (struct obstack *,
110                                    const struct block *,
111                                    const lookup_name_info &lookup_name,
112                                    domain_enum, struct objfile *);
113
114 static void ada_add_all_symbols (struct obstack *, const struct block *,
115                                  const lookup_name_info &lookup_name,
116                                  domain_enum, int, int *);
117
118 static int is_nonfunction (struct block_symbol *, int);
119
120 static void add_defn_to_vec (struct obstack *, struct symbol *,
121                              const struct block *);
122
123 static int num_defns_collected (struct obstack *);
124
125 static struct block_symbol *defns_collected (struct obstack *, int);
126
127 static struct value *resolve_subexp (expression_up *, int *, int,
128                                      struct type *);
129
130 static void replace_operator_with_call (expression_up *, int, int, int,
131                                         struct symbol *, const struct block *);
132
133 static int possible_user_operator_p (enum exp_opcode, struct value **);
134
135 static const char *ada_op_name (enum exp_opcode);
136
137 static const char *ada_decoded_op_name (enum exp_opcode);
138
139 static int numeric_type_p (struct type *);
140
141 static int integer_type_p (struct type *);
142
143 static int scalar_type_p (struct type *);
144
145 static int discrete_type_p (struct type *);
146
147 static enum ada_renaming_category parse_old_style_renaming (struct type *,
148                                                             const char **,
149                                                             int *,
150                                                             const char **);
151
152 static struct symbol *find_old_style_renaming_symbol (const char *,
153                                                       const struct block *);
154
155 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
156                                                 int, int);
157
158 static struct value *evaluate_subexp_type (struct expression *, int *);
159
160 static struct type *ada_find_parallel_type_with_name (struct type *,
161                                                       const char *);
162
163 static int is_dynamic_field (struct type *, int);
164
165 static struct type *to_fixed_variant_branch_type (struct type *,
166                                                   const gdb_byte *,
167                                                   CORE_ADDR, struct value *);
168
169 static struct type *to_fixed_array_type (struct type *, struct value *, int);
170
171 static struct type *to_fixed_range_type (struct type *, struct value *);
172
173 static struct type *to_static_fixed_type (struct type *);
174 static struct type *static_unwrap_type (struct type *type);
175
176 static struct value *unwrap_value (struct value *);
177
178 static struct type *constrained_packed_array_type (struct type *, long *);
179
180 static struct type *decode_constrained_packed_array_type (struct type *);
181
182 static long decode_packed_array_bitsize (struct type *);
183
184 static struct value *decode_constrained_packed_array (struct value *);
185
186 static int ada_is_packed_array_type  (struct type *);
187
188 static int ada_is_unconstrained_packed_array_type (struct type *);
189
190 static struct value *value_subscript_packed (struct value *, int,
191                                              struct value **);
192
193 static struct value *coerce_unspec_val_to_type (struct value *,
194                                                 struct type *);
195
196 static int lesseq_defined_than (struct symbol *, struct symbol *);
197
198 static int equiv_types (struct type *, struct type *);
199
200 static int is_name_suffix (const char *);
201
202 static int advance_wild_match (const char **, const char *, int);
203
204 static bool wild_match (const char *name, const char *patn);
205
206 static struct value *ada_coerce_ref (struct value *);
207
208 static LONGEST pos_atr (struct value *);
209
210 static struct value *value_pos_atr (struct type *, struct value *);
211
212 static struct value *value_val_atr (struct type *, struct value *);
213
214 static struct symbol *standard_lookup (const char *, const struct block *,
215                                        domain_enum);
216
217 static struct value *ada_search_struct_field (const char *, struct value *, int,
218                                               struct type *);
219
220 static struct value *ada_value_primitive_field (struct value *, int, int,
221                                                 struct type *);
222
223 static int find_struct_field (const char *, struct type *, int,
224                               struct type **, int *, int *, int *, int *);
225
226 static int ada_resolve_function (struct block_symbol *, int,
227                                  struct value **, int, const char *,
228                                  struct type *);
229
230 static int ada_is_direct_array_type (struct type *);
231
232 static void ada_language_arch_info (struct gdbarch *,
233                                     struct language_arch_info *);
234
235 static struct value *ada_index_struct_field (int, struct value *, int,
236                                              struct type *);
237
238 static struct value *assign_aggregate (struct value *, struct value *, 
239                                        struct expression *,
240                                        int *, enum noside);
241
242 static void aggregate_assign_from_choices (struct value *, struct value *, 
243                                            struct expression *,
244                                            int *, LONGEST *, int *,
245                                            int, LONGEST, LONGEST);
246
247 static void aggregate_assign_positional (struct value *, struct value *,
248                                          struct expression *,
249                                          int *, LONGEST *, int *, int,
250                                          LONGEST, LONGEST);
251
252
253 static void aggregate_assign_others (struct value *, struct value *,
254                                      struct expression *,
255                                      int *, LONGEST *, int, LONGEST, LONGEST);
256
257
258 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
259
260
261 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
262                                           int *, enum noside);
263
264 static void ada_forward_operator_length (struct expression *, int, int *,
265                                          int *);
266
267 static struct type *ada_find_any_type (const char *name);
268
269 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
270   (const lookup_name_info &lookup_name);
271
272 \f
273
274 /* The result of a symbol lookup to be stored in our symbol cache.  */
275
276 struct cache_entry
277 {
278   /* The name used to perform the lookup.  */
279   const char *name;
280   /* The namespace used during the lookup.  */
281   domain_enum domain;
282   /* The symbol returned by the lookup, or NULL if no matching symbol
283      was found.  */
284   struct symbol *sym;
285   /* The block where the symbol was found, or NULL if no matching
286      symbol was found.  */
287   const struct block *block;
288   /* A pointer to the next entry with the same hash.  */
289   struct cache_entry *next;
290 };
291
292 /* The Ada symbol cache, used to store the result of Ada-mode symbol
293    lookups in the course of executing the user's commands.
294
295    The cache is implemented using a simple, fixed-sized hash.
296    The size is fixed on the grounds that there are not likely to be
297    all that many symbols looked up during any given session, regardless
298    of the size of the symbol table.  If we decide to go to a resizable
299    table, let's just use the stuff from libiberty instead.  */
300
301 #define HASH_SIZE 1009
302
303 struct ada_symbol_cache
304 {
305   /* An obstack used to store the entries in our cache.  */
306   struct obstack cache_space;
307
308   /* The root of the hash table used to implement our symbol cache.  */
309   struct cache_entry *root[HASH_SIZE];
310 };
311
312 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
313
314 /* Maximum-sized dynamic type.  */
315 static unsigned int varsize_limit;
316
317 static const char ada_completer_word_break_characters[] =
318 #ifdef VMS
319   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
320 #else
321   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
322 #endif
323
324 /* The name of the symbol to use to get the name of the main subprogram.  */
325 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
326   = "__gnat_ada_main_program_name";
327
328 /* Limit on the number of warnings to raise per expression evaluation.  */
329 static int warning_limit = 2;
330
331 /* Number of warning messages issued; reset to 0 by cleanups after
332    expression evaluation.  */
333 static int warnings_issued = 0;
334
335 static const char *known_runtime_file_name_patterns[] = {
336   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
337 };
338
339 static const char *known_auxiliary_function_name_patterns[] = {
340   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
341 };
342
343 /* Maintenance-related settings for this module.  */
344
345 static struct cmd_list_element *maint_set_ada_cmdlist;
346 static struct cmd_list_element *maint_show_ada_cmdlist;
347
348 /* Implement the "maintenance set ada" (prefix) command.  */
349
350 static void
351 maint_set_ada_cmd (const char *args, int from_tty)
352 {
353   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
354              gdb_stdout);
355 }
356
357 /* Implement the "maintenance show ada" (prefix) command.  */
358
359 static void
360 maint_show_ada_cmd (const char *args, int from_tty)
361 {
362   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
363 }
364
365 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
366
367 static int ada_ignore_descriptive_types_p = 0;
368
369                         /* Inferior-specific data.  */
370
371 /* Per-inferior data for this module.  */
372
373 struct ada_inferior_data
374 {
375   /* The ada__tags__type_specific_data type, which is used when decoding
376      tagged types.  With older versions of GNAT, this type was directly
377      accessible through a component ("tsd") in the object tag.  But this
378      is no longer the case, so we cache it for each inferior.  */
379   struct type *tsd_type;
380
381   /* The exception_support_info data.  This data is used to determine
382      how to implement support for Ada exception catchpoints in a given
383      inferior.  */
384   const struct exception_support_info *exception_info;
385 };
386
387 /* Our key to this module's inferior data.  */
388 static const struct inferior_data *ada_inferior_data;
389
390 /* A cleanup routine for our inferior data.  */
391 static void
392 ada_inferior_data_cleanup (struct inferior *inf, void *arg)
393 {
394   struct ada_inferior_data *data;
395
396   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
397   if (data != NULL)
398     xfree (data);
399 }
400
401 /* Return our inferior data for the given inferior (INF).
402
403    This function always returns a valid pointer to an allocated
404    ada_inferior_data structure.  If INF's inferior data has not
405    been previously set, this functions creates a new one with all
406    fields set to zero, sets INF's inferior to it, and then returns
407    a pointer to that newly allocated ada_inferior_data.  */
408
409 static struct ada_inferior_data *
410 get_ada_inferior_data (struct inferior *inf)
411 {
412   struct ada_inferior_data *data;
413
414   data = (struct ada_inferior_data *) inferior_data (inf, ada_inferior_data);
415   if (data == NULL)
416     {
417       data = XCNEW (struct ada_inferior_data);
418       set_inferior_data (inf, ada_inferior_data, data);
419     }
420
421   return data;
422 }
423
424 /* Perform all necessary cleanups regarding our module's inferior data
425    that is required after the inferior INF just exited.  */
426
427 static void
428 ada_inferior_exit (struct inferior *inf)
429 {
430   ada_inferior_data_cleanup (inf, NULL);
431   set_inferior_data (inf, ada_inferior_data, NULL);
432 }
433
434
435                         /* program-space-specific data.  */
436
437 /* This module's per-program-space data.  */
438 struct ada_pspace_data
439 {
440   /* The Ada symbol cache.  */
441   struct ada_symbol_cache *sym_cache;
442 };
443
444 /* Key to our per-program-space data.  */
445 static const struct program_space_data *ada_pspace_data_handle;
446
447 /* Return this module's data for the given program space (PSPACE).
448    If not is found, add a zero'ed one now.
449
450    This function always returns a valid object.  */
451
452 static struct ada_pspace_data *
453 get_ada_pspace_data (struct program_space *pspace)
454 {
455   struct ada_pspace_data *data;
456
457   data = ((struct ada_pspace_data *)
458           program_space_data (pspace, ada_pspace_data_handle));
459   if (data == NULL)
460     {
461       data = XCNEW (struct ada_pspace_data);
462       set_program_space_data (pspace, ada_pspace_data_handle, data);
463     }
464
465   return data;
466 }
467
468 /* The cleanup callback for this module's per-program-space data.  */
469
470 static void
471 ada_pspace_data_cleanup (struct program_space *pspace, void *data)
472 {
473   struct ada_pspace_data *pspace_data = (struct ada_pspace_data *) data;
474
475   if (pspace_data->sym_cache != NULL)
476     ada_free_symbol_cache (pspace_data->sym_cache);
477   xfree (pspace_data);
478 }
479
480                         /* Utilities */
481
482 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
483    all typedef layers have been peeled.  Otherwise, return TYPE.
484
485    Normally, we really expect a typedef type to only have 1 typedef layer.
486    In other words, we really expect the target type of a typedef type to be
487    a non-typedef type.  This is particularly true for Ada units, because
488    the language does not have a typedef vs not-typedef distinction.
489    In that respect, the Ada compiler has been trying to eliminate as many
490    typedef definitions in the debugging information, since they generally
491    do not bring any extra information (we still use typedef under certain
492    circumstances related mostly to the GNAT encoding).
493
494    Unfortunately, we have seen situations where the debugging information
495    generated by the compiler leads to such multiple typedef layers.  For
496    instance, consider the following example with stabs:
497
498      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
499      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
500
501    This is an error in the debugging information which causes type
502    pck__float_array___XUP to be defined twice, and the second time,
503    it is defined as a typedef of a typedef.
504
505    This is on the fringe of legality as far as debugging information is
506    concerned, and certainly unexpected.  But it is easy to handle these
507    situations correctly, so we can afford to be lenient in this case.  */
508
509 static struct type *
510 ada_typedef_target_type (struct type *type)
511 {
512   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
513     type = TYPE_TARGET_TYPE (type);
514   return type;
515 }
516
517 /* Given DECODED_NAME a string holding a symbol name in its
518    decoded form (ie using the Ada dotted notation), returns
519    its unqualified name.  */
520
521 static const char *
522 ada_unqualified_name (const char *decoded_name)
523 {
524   const char *result;
525   
526   /* If the decoded name starts with '<', it means that the encoded
527      name does not follow standard naming conventions, and thus that
528      it is not your typical Ada symbol name.  Trying to unqualify it
529      is therefore pointless and possibly erroneous.  */
530   if (decoded_name[0] == '<')
531     return decoded_name;
532
533   result = strrchr (decoded_name, '.');
534   if (result != NULL)
535     result++;                   /* Skip the dot...  */
536   else
537     result = decoded_name;
538
539   return result;
540 }
541
542 /* Return a string starting with '<', followed by STR, and '>'.  */
543
544 static std::string
545 add_angle_brackets (const char *str)
546 {
547   return string_printf ("<%s>", str);
548 }
549
550 static const char *
551 ada_get_gdb_completer_word_break_characters (void)
552 {
553   return ada_completer_word_break_characters;
554 }
555
556 /* Print an array element index using the Ada syntax.  */
557
558 static void
559 ada_print_array_index (struct value *index_value, struct ui_file *stream,
560                        const struct value_print_options *options)
561 {
562   LA_VALUE_PRINT (index_value, stream, options);
563   fprintf_filtered (stream, " => ");
564 }
565
566 /* la_watch_location_expression for Ada.  */
567
568 gdb::unique_xmalloc_ptr<char>
569 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
570 {
571   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
572   std::string name = type_to_string (type);
573   return gdb::unique_xmalloc_ptr<char>
574     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
575 }
576
577 /* Assuming VECT points to an array of *SIZE objects of size
578    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
579    updating *SIZE as necessary and returning the (new) array.  */
580
581 void *
582 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
583 {
584   if (*size < min_size)
585     {
586       *size *= 2;
587       if (*size < min_size)
588         *size = min_size;
589       vect = xrealloc (vect, *size * element_size);
590     }
591   return vect;
592 }
593
594 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
595    suffix of FIELD_NAME beginning "___".  */
596
597 static int
598 field_name_match (const char *field_name, const char *target)
599 {
600   int len = strlen (target);
601
602   return
603     (strncmp (field_name, target, len) == 0
604      && (field_name[len] == '\0'
605          || (startswith (field_name + len, "___")
606              && strcmp (field_name + strlen (field_name) - 6,
607                         "___XVN") != 0)));
608 }
609
610
611 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
612    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
613    and return its index.  This function also handles fields whose name
614    have ___ suffixes because the compiler sometimes alters their name
615    by adding such a suffix to represent fields with certain constraints.
616    If the field could not be found, return a negative number if
617    MAYBE_MISSING is set.  Otherwise raise an error.  */
618
619 int
620 ada_get_field_index (const struct type *type, const char *field_name,
621                      int maybe_missing)
622 {
623   int fieldno;
624   struct type *struct_type = check_typedef ((struct type *) type);
625
626   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
627     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
628       return fieldno;
629
630   if (!maybe_missing)
631     error (_("Unable to find field %s in struct %s.  Aborting"),
632            field_name, TYPE_NAME (struct_type));
633
634   return -1;
635 }
636
637 /* The length of the prefix of NAME prior to any "___" suffix.  */
638
639 int
640 ada_name_prefix_len (const char *name)
641 {
642   if (name == NULL)
643     return 0;
644   else
645     {
646       const char *p = strstr (name, "___");
647
648       if (p == NULL)
649         return strlen (name);
650       else
651         return p - name;
652     }
653 }
654
655 /* Return non-zero if SUFFIX is a suffix of STR.
656    Return zero if STR is null.  */
657
658 static int
659 is_suffix (const char *str, const char *suffix)
660 {
661   int len1, len2;
662
663   if (str == NULL)
664     return 0;
665   len1 = strlen (str);
666   len2 = strlen (suffix);
667   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
668 }
669
670 /* The contents of value VAL, treated as a value of type TYPE.  The
671    result is an lval in memory if VAL is.  */
672
673 static struct value *
674 coerce_unspec_val_to_type (struct value *val, struct type *type)
675 {
676   type = ada_check_typedef (type);
677   if (value_type (val) == type)
678     return val;
679   else
680     {
681       struct value *result;
682
683       /* Make sure that the object size is not unreasonable before
684          trying to allocate some memory for it.  */
685       ada_ensure_varsize_limit (type);
686
687       if (value_lazy (val)
688           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
689         result = allocate_value_lazy (type);
690       else
691         {
692           result = allocate_value (type);
693           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
694         }
695       set_value_component_location (result, val);
696       set_value_bitsize (result, value_bitsize (val));
697       set_value_bitpos (result, value_bitpos (val));
698       set_value_address (result, value_address (val));
699       return result;
700     }
701 }
702
703 static const gdb_byte *
704 cond_offset_host (const gdb_byte *valaddr, long offset)
705 {
706   if (valaddr == NULL)
707     return NULL;
708   else
709     return valaddr + offset;
710 }
711
712 static CORE_ADDR
713 cond_offset_target (CORE_ADDR address, long offset)
714 {
715   if (address == 0)
716     return 0;
717   else
718     return address + offset;
719 }
720
721 /* Issue a warning (as for the definition of warning in utils.c, but
722    with exactly one argument rather than ...), unless the limit on the
723    number of warnings has passed during the evaluation of the current
724    expression.  */
725
726 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
727    provided by "complaint".  */
728 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
729
730 static void
731 lim_warning (const char *format, ...)
732 {
733   va_list args;
734
735   va_start (args, format);
736   warnings_issued += 1;
737   if (warnings_issued <= warning_limit)
738     vwarning (format, args);
739
740   va_end (args);
741 }
742
743 /* Issue an error if the size of an object of type T is unreasonable,
744    i.e. if it would be a bad idea to allocate a value of this type in
745    GDB.  */
746
747 void
748 ada_ensure_varsize_limit (const struct type *type)
749 {
750   if (TYPE_LENGTH (type) > varsize_limit)
751     error (_("object size is larger than varsize-limit"));
752 }
753
754 /* Maximum value of a SIZE-byte signed integer type.  */
755 static LONGEST
756 max_of_size (int size)
757 {
758   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
759
760   return top_bit | (top_bit - 1);
761 }
762
763 /* Minimum value of a SIZE-byte signed integer type.  */
764 static LONGEST
765 min_of_size (int size)
766 {
767   return -max_of_size (size) - 1;
768 }
769
770 /* Maximum value of a SIZE-byte unsigned integer type.  */
771 static ULONGEST
772 umax_of_size (int size)
773 {
774   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
775
776   return top_bit | (top_bit - 1);
777 }
778
779 /* Maximum value of integral type T, as a signed quantity.  */
780 static LONGEST
781 max_of_type (struct type *t)
782 {
783   if (TYPE_UNSIGNED (t))
784     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
785   else
786     return max_of_size (TYPE_LENGTH (t));
787 }
788
789 /* Minimum value of integral type T, as a signed quantity.  */
790 static LONGEST
791 min_of_type (struct type *t)
792 {
793   if (TYPE_UNSIGNED (t)) 
794     return 0;
795   else
796     return min_of_size (TYPE_LENGTH (t));
797 }
798
799 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
800 LONGEST
801 ada_discrete_type_high_bound (struct type *type)
802 {
803   type = resolve_dynamic_type (type, NULL, 0);
804   switch (TYPE_CODE (type))
805     {
806     case TYPE_CODE_RANGE:
807       return TYPE_HIGH_BOUND (type);
808     case TYPE_CODE_ENUM:
809       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
810     case TYPE_CODE_BOOL:
811       return 1;
812     case TYPE_CODE_CHAR:
813     case TYPE_CODE_INT:
814       return max_of_type (type);
815     default:
816       error (_("Unexpected type in ada_discrete_type_high_bound."));
817     }
818 }
819
820 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
821 LONGEST
822 ada_discrete_type_low_bound (struct type *type)
823 {
824   type = resolve_dynamic_type (type, NULL, 0);
825   switch (TYPE_CODE (type))
826     {
827     case TYPE_CODE_RANGE:
828       return TYPE_LOW_BOUND (type);
829     case TYPE_CODE_ENUM:
830       return TYPE_FIELD_ENUMVAL (type, 0);
831     case TYPE_CODE_BOOL:
832       return 0;
833     case TYPE_CODE_CHAR:
834     case TYPE_CODE_INT:
835       return min_of_type (type);
836     default:
837       error (_("Unexpected type in ada_discrete_type_low_bound."));
838     }
839 }
840
841 /* The identity on non-range types.  For range types, the underlying
842    non-range scalar type.  */
843
844 static struct type *
845 get_base_type (struct type *type)
846 {
847   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
848     {
849       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
850         return type;
851       type = TYPE_TARGET_TYPE (type);
852     }
853   return type;
854 }
855
856 /* Return a decoded version of the given VALUE.  This means returning
857    a value whose type is obtained by applying all the GNAT-specific
858    encondings, making the resulting type a static but standard description
859    of the initial type.  */
860
861 struct value *
862 ada_get_decoded_value (struct value *value)
863 {
864   struct type *type = ada_check_typedef (value_type (value));
865
866   if (ada_is_array_descriptor_type (type)
867       || (ada_is_constrained_packed_array_type (type)
868           && TYPE_CODE (type) != TYPE_CODE_PTR))
869     {
870       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
871         value = ada_coerce_to_simple_array_ptr (value);
872       else
873         value = ada_coerce_to_simple_array (value);
874     }
875   else
876     value = ada_to_fixed_value (value);
877
878   return value;
879 }
880
881 /* Same as ada_get_decoded_value, but with the given TYPE.
882    Because there is no associated actual value for this type,
883    the resulting type might be a best-effort approximation in
884    the case of dynamic types.  */
885
886 struct type *
887 ada_get_decoded_type (struct type *type)
888 {
889   type = to_static_fixed_type (type);
890   if (ada_is_constrained_packed_array_type (type))
891     type = ada_coerce_to_simple_array_type (type);
892   return type;
893 }
894
895 \f
896
897                                 /* Language Selection */
898
899 /* If the main program is in Ada, return language_ada, otherwise return LANG
900    (the main program is in Ada iif the adainit symbol is found).  */
901
902 enum language
903 ada_update_initial_language (enum language lang)
904 {
905   if (lookup_minimal_symbol ("adainit", (const char *) NULL,
906                              (struct objfile *) NULL).minsym != NULL)
907     return language_ada;
908
909   return lang;
910 }
911
912 /* If the main procedure is written in Ada, then return its name.
913    The result is good until the next call.  Return NULL if the main
914    procedure doesn't appear to be in Ada.  */
915
916 char *
917 ada_main_name (void)
918 {
919   struct bound_minimal_symbol msym;
920   static gdb::unique_xmalloc_ptr<char> main_program_name;
921
922   /* For Ada, the name of the main procedure is stored in a specific
923      string constant, generated by the binder.  Look for that symbol,
924      extract its address, and then read that string.  If we didn't find
925      that string, then most probably the main procedure is not written
926      in Ada.  */
927   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
928
929   if (msym.minsym != NULL)
930     {
931       CORE_ADDR main_program_name_addr;
932       int err_code;
933
934       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
935       if (main_program_name_addr == 0)
936         error (_("Invalid address for Ada main program name."));
937
938       target_read_string (main_program_name_addr, &main_program_name,
939                           1024, &err_code);
940
941       if (err_code != 0)
942         return NULL;
943       return main_program_name.get ();
944     }
945
946   /* The main procedure doesn't seem to be in Ada.  */
947   return NULL;
948 }
949 \f
950                                 /* Symbols */
951
952 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
953    of NULLs.  */
954
955 const struct ada_opname_map ada_opname_table[] = {
956   {"Oadd", "\"+\"", BINOP_ADD},
957   {"Osubtract", "\"-\"", BINOP_SUB},
958   {"Omultiply", "\"*\"", BINOP_MUL},
959   {"Odivide", "\"/\"", BINOP_DIV},
960   {"Omod", "\"mod\"", BINOP_MOD},
961   {"Orem", "\"rem\"", BINOP_REM},
962   {"Oexpon", "\"**\"", BINOP_EXP},
963   {"Olt", "\"<\"", BINOP_LESS},
964   {"Ole", "\"<=\"", BINOP_LEQ},
965   {"Ogt", "\">\"", BINOP_GTR},
966   {"Oge", "\">=\"", BINOP_GEQ},
967   {"Oeq", "\"=\"", BINOP_EQUAL},
968   {"One", "\"/=\"", BINOP_NOTEQUAL},
969   {"Oand", "\"and\"", BINOP_BITWISE_AND},
970   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
971   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
972   {"Oconcat", "\"&\"", BINOP_CONCAT},
973   {"Oabs", "\"abs\"", UNOP_ABS},
974   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
975   {"Oadd", "\"+\"", UNOP_PLUS},
976   {"Osubtract", "\"-\"", UNOP_NEG},
977   {NULL, NULL}
978 };
979
980 /* The "encoded" form of DECODED, according to GNAT conventions.  The
981    result is valid until the next call to ada_encode.  If
982    THROW_ERRORS, throw an error if invalid operator name is found.
983    Otherwise, return NULL in that case.  */
984
985 static char *
986 ada_encode_1 (const char *decoded, bool throw_errors)
987 {
988   static char *encoding_buffer = NULL;
989   static size_t encoding_buffer_size = 0;
990   const char *p;
991   int k;
992
993   if (decoded == NULL)
994     return NULL;
995
996   GROW_VECT (encoding_buffer, encoding_buffer_size,
997              2 * strlen (decoded) + 10);
998
999   k = 0;
1000   for (p = decoded; *p != '\0'; p += 1)
1001     {
1002       if (*p == '.')
1003         {
1004           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
1005           k += 2;
1006         }
1007       else if (*p == '"')
1008         {
1009           const struct ada_opname_map *mapping;
1010
1011           for (mapping = ada_opname_table;
1012                mapping->encoded != NULL
1013                && !startswith (p, mapping->decoded); mapping += 1)
1014             ;
1015           if (mapping->encoded == NULL)
1016             {
1017               if (throw_errors)
1018                 error (_("invalid Ada operator name: %s"), p);
1019               else
1020                 return NULL;
1021             }
1022           strcpy (encoding_buffer + k, mapping->encoded);
1023           k += strlen (mapping->encoded);
1024           break;
1025         }
1026       else
1027         {
1028           encoding_buffer[k] = *p;
1029           k += 1;
1030         }
1031     }
1032
1033   encoding_buffer[k] = '\0';
1034   return encoding_buffer;
1035 }
1036
1037 /* The "encoded" form of DECODED, according to GNAT conventions.
1038    The result is valid until the next call to ada_encode.  */
1039
1040 char *
1041 ada_encode (const char *decoded)
1042 {
1043   return ada_encode_1 (decoded, true);
1044 }
1045
1046 /* Return NAME folded to lower case, or, if surrounded by single
1047    quotes, unfolded, but with the quotes stripped away.  Result good
1048    to next call.  */
1049
1050 char *
1051 ada_fold_name (const char *name)
1052 {
1053   static char *fold_buffer = NULL;
1054   static size_t fold_buffer_size = 0;
1055
1056   int len = strlen (name);
1057   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1058
1059   if (name[0] == '\'')
1060     {
1061       strncpy (fold_buffer, name + 1, len - 2);
1062       fold_buffer[len - 2] = '\000';
1063     }
1064   else
1065     {
1066       int i;
1067
1068       for (i = 0; i <= len; i += 1)
1069         fold_buffer[i] = tolower (name[i]);
1070     }
1071
1072   return fold_buffer;
1073 }
1074
1075 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1076
1077 static int
1078 is_lower_alphanum (const char c)
1079 {
1080   return (isdigit (c) || (isalpha (c) && islower (c)));
1081 }
1082
1083 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1084    This function saves in LEN the length of that same symbol name but
1085    without either of these suffixes:
1086      . .{DIGIT}+
1087      . ${DIGIT}+
1088      . ___{DIGIT}+
1089      . __{DIGIT}+.
1090
1091    These are suffixes introduced by the compiler for entities such as
1092    nested subprogram for instance, in order to avoid name clashes.
1093    They do not serve any purpose for the debugger.  */
1094
1095 static void
1096 ada_remove_trailing_digits (const char *encoded, int *len)
1097 {
1098   if (*len > 1 && isdigit (encoded[*len - 1]))
1099     {
1100       int i = *len - 2;
1101
1102       while (i > 0 && isdigit (encoded[i]))
1103         i--;
1104       if (i >= 0 && encoded[i] == '.')
1105         *len = i;
1106       else if (i >= 0 && encoded[i] == '$')
1107         *len = i;
1108       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1109         *len = i - 2;
1110       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1111         *len = i - 1;
1112     }
1113 }
1114
1115 /* Remove the suffix introduced by the compiler for protected object
1116    subprograms.  */
1117
1118 static void
1119 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1120 {
1121   /* Remove trailing N.  */
1122
1123   /* Protected entry subprograms are broken into two
1124      separate subprograms: The first one is unprotected, and has
1125      a 'N' suffix; the second is the protected version, and has
1126      the 'P' suffix.  The second calls the first one after handling
1127      the protection.  Since the P subprograms are internally generated,
1128      we leave these names undecoded, giving the user a clue that this
1129      entity is internal.  */
1130
1131   if (*len > 1
1132       && encoded[*len - 1] == 'N'
1133       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1134     *len = *len - 1;
1135 }
1136
1137 /* Remove trailing X[bn]* suffixes (indicating names in package bodies).  */
1138
1139 static void
1140 ada_remove_Xbn_suffix (const char *encoded, int *len)
1141 {
1142   int i = *len - 1;
1143
1144   while (i > 0 && (encoded[i] == 'b' || encoded[i] == 'n'))
1145     i--;
1146
1147   if (encoded[i] != 'X')
1148     return;
1149
1150   if (i == 0)
1151     return;
1152
1153   if (isalnum (encoded[i-1]))
1154     *len = i;
1155 }
1156
1157 /* If ENCODED follows the GNAT entity encoding conventions, then return
1158    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1159    replaced by ENCODED.
1160
1161    The resulting string is valid until the next call of ada_decode.
1162    If the string is unchanged by decoding, the original string pointer
1163    is returned.  */
1164
1165 const char *
1166 ada_decode (const char *encoded)
1167 {
1168   int i, j;
1169   int len0;
1170   const char *p;
1171   char *decoded;
1172   int at_start_name;
1173   static char *decoding_buffer = NULL;
1174   static size_t decoding_buffer_size = 0;
1175
1176   /* With function descriptors on PPC64, the value of a symbol named
1177      ".FN", if it exists, is the entry point of the function "FN".  */
1178   if (encoded[0] == '.')
1179     encoded += 1;
1180
1181   /* The name of the Ada main procedure starts with "_ada_".
1182      This prefix is not part of the decoded name, so skip this part
1183      if we see this prefix.  */
1184   if (startswith (encoded, "_ada_"))
1185     encoded += 5;
1186
1187   /* If the name starts with '_', then it is not a properly encoded
1188      name, so do not attempt to decode it.  Similarly, if the name
1189      starts with '<', the name should not be decoded.  */
1190   if (encoded[0] == '_' || encoded[0] == '<')
1191     goto Suppress;
1192
1193   len0 = strlen (encoded);
1194
1195   ada_remove_trailing_digits (encoded, &len0);
1196   ada_remove_po_subprogram_suffix (encoded, &len0);
1197
1198   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1199      the suffix is located before the current "end" of ENCODED.  We want
1200      to avoid re-matching parts of ENCODED that have previously been
1201      marked as discarded (by decrementing LEN0).  */
1202   p = strstr (encoded, "___");
1203   if (p != NULL && p - encoded < len0 - 3)
1204     {
1205       if (p[3] == 'X')
1206         len0 = p - encoded;
1207       else
1208         goto Suppress;
1209     }
1210
1211   /* Remove any trailing TKB suffix.  It tells us that this symbol
1212      is for the body of a task, but that information does not actually
1213      appear in the decoded name.  */
1214
1215   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1216     len0 -= 3;
1217
1218   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1219      from the TKB suffix because it is used for non-anonymous task
1220      bodies.  */
1221
1222   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1223     len0 -= 2;
1224
1225   /* Remove trailing "B" suffixes.  */
1226   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1227
1228   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1229     len0 -= 1;
1230
1231   /* Make decoded big enough for possible expansion by operator name.  */
1232
1233   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1234   decoded = decoding_buffer;
1235
1236   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1237
1238   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1239     {
1240       i = len0 - 2;
1241       while ((i >= 0 && isdigit (encoded[i]))
1242              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1243         i -= 1;
1244       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1245         len0 = i - 1;
1246       else if (encoded[i] == '$')
1247         len0 = i;
1248     }
1249
1250   /* The first few characters that are not alphabetic are not part
1251      of any encoding we use, so we can copy them over verbatim.  */
1252
1253   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1254     decoded[j] = encoded[i];
1255
1256   at_start_name = 1;
1257   while (i < len0)
1258     {
1259       /* Is this a symbol function?  */
1260       if (at_start_name && encoded[i] == 'O')
1261         {
1262           int k;
1263
1264           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1265             {
1266               int op_len = strlen (ada_opname_table[k].encoded);
1267               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1268                             op_len - 1) == 0)
1269                   && !isalnum (encoded[i + op_len]))
1270                 {
1271                   strcpy (decoded + j, ada_opname_table[k].decoded);
1272                   at_start_name = 0;
1273                   i += op_len;
1274                   j += strlen (ada_opname_table[k].decoded);
1275                   break;
1276                 }
1277             }
1278           if (ada_opname_table[k].encoded != NULL)
1279             continue;
1280         }
1281       at_start_name = 0;
1282
1283       /* Replace "TK__" with "__", which will eventually be translated
1284          into "." (just below).  */
1285
1286       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1287         i += 2;
1288
1289       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1290          be translated into "." (just below).  These are internal names
1291          generated for anonymous blocks inside which our symbol is nested.  */
1292
1293       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1294           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1295           && isdigit (encoded [i+4]))
1296         {
1297           int k = i + 5;
1298           
1299           while (k < len0 && isdigit (encoded[k]))
1300             k++;  /* Skip any extra digit.  */
1301
1302           /* Double-check that the "__B_{DIGITS}+" sequence we found
1303              is indeed followed by "__".  */
1304           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1305             i = k;
1306         }
1307
1308       /* Remove _E{DIGITS}+[sb] */
1309
1310       /* Just as for protected object subprograms, there are 2 categories
1311          of subprograms created by the compiler for each entry.  The first
1312          one implements the actual entry code, and has a suffix following
1313          the convention above; the second one implements the barrier and
1314          uses the same convention as above, except that the 'E' is replaced
1315          by a 'B'.
1316
1317          Just as above, we do not decode the name of barrier functions
1318          to give the user a clue that the code he is debugging has been
1319          internally generated.  */
1320
1321       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1322           && isdigit (encoded[i+2]))
1323         {
1324           int k = i + 3;
1325
1326           while (k < len0 && isdigit (encoded[k]))
1327             k++;
1328
1329           if (k < len0
1330               && (encoded[k] == 'b' || encoded[k] == 's'))
1331             {
1332               k++;
1333               /* Just as an extra precaution, make sure that if this
1334                  suffix is followed by anything else, it is a '_'.
1335                  Otherwise, we matched this sequence by accident.  */
1336               if (k == len0
1337                   || (k < len0 && encoded[k] == '_'))
1338                 i = k;
1339             }
1340         }
1341
1342       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1343          the GNAT front-end in protected object subprograms.  */
1344
1345       if (i < len0 + 3
1346           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1347         {
1348           /* Backtrack a bit up until we reach either the begining of
1349              the encoded name, or "__".  Make sure that we only find
1350              digits or lowercase characters.  */
1351           const char *ptr = encoded + i - 1;
1352
1353           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1354             ptr--;
1355           if (ptr < encoded
1356               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1357             i++;
1358         }
1359
1360       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1361         {
1362           /* This is a X[bn]* sequence not separated from the previous
1363              part of the name with a non-alpha-numeric character (in other
1364              words, immediately following an alpha-numeric character), then
1365              verify that it is placed at the end of the encoded name.  If
1366              not, then the encoding is not valid and we should abort the
1367              decoding.  Otherwise, just skip it, it is used in body-nested
1368              package names.  */
1369           do
1370             i += 1;
1371           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1372           if (i < len0)
1373             goto Suppress;
1374         }
1375       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1376         {
1377          /* Replace '__' by '.'.  */
1378           decoded[j] = '.';
1379           at_start_name = 1;
1380           i += 2;
1381           j += 1;
1382         }
1383       else
1384         {
1385           /* It's a character part of the decoded name, so just copy it
1386              over.  */
1387           decoded[j] = encoded[i];
1388           i += 1;
1389           j += 1;
1390         }
1391     }
1392   decoded[j] = '\000';
1393
1394   /* Decoded names should never contain any uppercase character.
1395      Double-check this, and abort the decoding if we find one.  */
1396
1397   for (i = 0; decoded[i] != '\0'; i += 1)
1398     if (isupper (decoded[i]) || decoded[i] == ' ')
1399       goto Suppress;
1400
1401   if (strcmp (decoded, encoded) == 0)
1402     return encoded;
1403   else
1404     return decoded;
1405
1406 Suppress:
1407   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1408   decoded = decoding_buffer;
1409   if (encoded[0] == '<')
1410     strcpy (decoded, encoded);
1411   else
1412     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1413   return decoded;
1414
1415 }
1416
1417 /* Table for keeping permanent unique copies of decoded names.  Once
1418    allocated, names in this table are never released.  While this is a
1419    storage leak, it should not be significant unless there are massive
1420    changes in the set of decoded names in successive versions of a 
1421    symbol table loaded during a single session.  */
1422 static struct htab *decoded_names_store;
1423
1424 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1425    in the language-specific part of GSYMBOL, if it has not been
1426    previously computed.  Tries to save the decoded name in the same
1427    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1428    in any case, the decoded symbol has a lifetime at least that of
1429    GSYMBOL).
1430    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1431    const, but nevertheless modified to a semantically equivalent form
1432    when a decoded name is cached in it.  */
1433
1434 const char *
1435 ada_decode_symbol (const struct general_symbol_info *arg)
1436 {
1437   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1438   const char **resultp =
1439     &gsymbol->language_specific.demangled_name;
1440
1441   if (!gsymbol->ada_mangled)
1442     {
1443       const char *decoded = ada_decode (gsymbol->name);
1444       struct obstack *obstack = gsymbol->language_specific.obstack;
1445
1446       gsymbol->ada_mangled = 1;
1447
1448       if (obstack != NULL)
1449         *resultp
1450           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1451       else
1452         {
1453           /* Sometimes, we can't find a corresponding objfile, in
1454              which case, we put the result on the heap.  Since we only
1455              decode when needed, we hope this usually does not cause a
1456              significant memory leak (FIXME).  */
1457
1458           char **slot = (char **) htab_find_slot (decoded_names_store,
1459                                                   decoded, INSERT);
1460
1461           if (*slot == NULL)
1462             *slot = xstrdup (decoded);
1463           *resultp = *slot;
1464         }
1465     }
1466
1467   return *resultp;
1468 }
1469
1470 static char *
1471 ada_la_decode (const char *encoded, int options)
1472 {
1473   return xstrdup (ada_decode (encoded));
1474 }
1475
1476 /* Implement la_sniff_from_mangled_name for Ada.  */
1477
1478 static int
1479 ada_sniff_from_mangled_name (const char *mangled, char **out)
1480 {
1481   const char *demangled = ada_decode (mangled);
1482
1483   *out = NULL;
1484
1485   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1486     {
1487       /* Set the gsymbol language to Ada, but still return 0.
1488          Two reasons for that:
1489
1490          1. For Ada, we prefer computing the symbol's decoded name
1491          on the fly rather than pre-compute it, in order to save
1492          memory (Ada projects are typically very large).
1493
1494          2. There are some areas in the definition of the GNAT
1495          encoding where, with a bit of bad luck, we might be able
1496          to decode a non-Ada symbol, generating an incorrect
1497          demangled name (Eg: names ending with "TB" for instance
1498          are identified as task bodies and so stripped from
1499          the decoded name returned).
1500
1501          Returning 1, here, but not setting *DEMANGLED, helps us get a
1502          little bit of the best of both worlds.  Because we're last,
1503          we should not affect any of the other languages that were
1504          able to demangle the symbol before us; we get to correctly
1505          tag Ada symbols as such; and even if we incorrectly tagged a
1506          non-Ada symbol, which should be rare, any routing through the
1507          Ada language should be transparent (Ada tries to behave much
1508          like C/C++ with non-Ada symbols).  */
1509       return 1;
1510     }
1511
1512   return 0;
1513 }
1514
1515 \f
1516
1517                                 /* Arrays */
1518
1519 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1520    generated by the GNAT compiler to describe the index type used
1521    for each dimension of an array, check whether it follows the latest
1522    known encoding.  If not, fix it up to conform to the latest encoding.
1523    Otherwise, do nothing.  This function also does nothing if
1524    INDEX_DESC_TYPE is NULL.
1525
1526    The GNAT encoding used to describle the array index type evolved a bit.
1527    Initially, the information would be provided through the name of each
1528    field of the structure type only, while the type of these fields was
1529    described as unspecified and irrelevant.  The debugger was then expected
1530    to perform a global type lookup using the name of that field in order
1531    to get access to the full index type description.  Because these global
1532    lookups can be very expensive, the encoding was later enhanced to make
1533    the global lookup unnecessary by defining the field type as being
1534    the full index type description.
1535
1536    The purpose of this routine is to allow us to support older versions
1537    of the compiler by detecting the use of the older encoding, and by
1538    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1539    we essentially replace each field's meaningless type by the associated
1540    index subtype).  */
1541
1542 void
1543 ada_fixup_array_indexes_type (struct type *index_desc_type)
1544 {
1545   int i;
1546
1547   if (index_desc_type == NULL)
1548     return;
1549   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1550
1551   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1552      to check one field only, no need to check them all).  If not, return
1553      now.
1554
1555      If our INDEX_DESC_TYPE was generated using the older encoding,
1556      the field type should be a meaningless integer type whose name
1557      is not equal to the field name.  */
1558   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1559       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1560                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1561     return;
1562
1563   /* Fixup each field of INDEX_DESC_TYPE.  */
1564   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1565    {
1566      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1567      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1568
1569      if (raw_type)
1570        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1571    }
1572 }
1573
1574 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1575
1576 static const char *bound_name[] = {
1577   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1578   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1579 };
1580
1581 /* Maximum number of array dimensions we are prepared to handle.  */
1582
1583 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1584
1585
1586 /* The desc_* routines return primitive portions of array descriptors
1587    (fat pointers).  */
1588
1589 /* The descriptor or array type, if any, indicated by TYPE; removes
1590    level of indirection, if needed.  */
1591
1592 static struct type *
1593 desc_base_type (struct type *type)
1594 {
1595   if (type == NULL)
1596     return NULL;
1597   type = ada_check_typedef (type);
1598   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1599     type = ada_typedef_target_type (type);
1600
1601   if (type != NULL
1602       && (TYPE_CODE (type) == TYPE_CODE_PTR
1603           || TYPE_CODE (type) == TYPE_CODE_REF))
1604     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1605   else
1606     return type;
1607 }
1608
1609 /* True iff TYPE indicates a "thin" array pointer type.  */
1610
1611 static int
1612 is_thin_pntr (struct type *type)
1613 {
1614   return
1615     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1616     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1617 }
1618
1619 /* The descriptor type for thin pointer type TYPE.  */
1620
1621 static struct type *
1622 thin_descriptor_type (struct type *type)
1623 {
1624   struct type *base_type = desc_base_type (type);
1625
1626   if (base_type == NULL)
1627     return NULL;
1628   if (is_suffix (ada_type_name (base_type), "___XVE"))
1629     return base_type;
1630   else
1631     {
1632       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1633
1634       if (alt_type == NULL)
1635         return base_type;
1636       else
1637         return alt_type;
1638     }
1639 }
1640
1641 /* A pointer to the array data for thin-pointer value VAL.  */
1642
1643 static struct value *
1644 thin_data_pntr (struct value *val)
1645 {
1646   struct type *type = ada_check_typedef (value_type (val));
1647   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1648
1649   data_type = lookup_pointer_type (data_type);
1650
1651   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1652     return value_cast (data_type, value_copy (val));
1653   else
1654     return value_from_longest (data_type, value_address (val));
1655 }
1656
1657 /* True iff TYPE indicates a "thick" array pointer type.  */
1658
1659 static int
1660 is_thick_pntr (struct type *type)
1661 {
1662   type = desc_base_type (type);
1663   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1664           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1665 }
1666
1667 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1668    pointer to one, the type of its bounds data; otherwise, NULL.  */
1669
1670 static struct type *
1671 desc_bounds_type (struct type *type)
1672 {
1673   struct type *r;
1674
1675   type = desc_base_type (type);
1676
1677   if (type == NULL)
1678     return NULL;
1679   else if (is_thin_pntr (type))
1680     {
1681       type = thin_descriptor_type (type);
1682       if (type == NULL)
1683         return NULL;
1684       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1685       if (r != NULL)
1686         return ada_check_typedef (r);
1687     }
1688   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1689     {
1690       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1691       if (r != NULL)
1692         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1693     }
1694   return NULL;
1695 }
1696
1697 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1698    one, a pointer to its bounds data.   Otherwise NULL.  */
1699
1700 static struct value *
1701 desc_bounds (struct value *arr)
1702 {
1703   struct type *type = ada_check_typedef (value_type (arr));
1704
1705   if (is_thin_pntr (type))
1706     {
1707       struct type *bounds_type =
1708         desc_bounds_type (thin_descriptor_type (type));
1709       LONGEST addr;
1710
1711       if (bounds_type == NULL)
1712         error (_("Bad GNAT array descriptor"));
1713
1714       /* NOTE: The following calculation is not really kosher, but
1715          since desc_type is an XVE-encoded type (and shouldn't be),
1716          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1717       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1718         addr = value_as_long (arr);
1719       else
1720         addr = value_address (arr);
1721
1722       return
1723         value_from_longest (lookup_pointer_type (bounds_type),
1724                             addr - TYPE_LENGTH (bounds_type));
1725     }
1726
1727   else if (is_thick_pntr (type))
1728     {
1729       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1730                                                _("Bad GNAT array descriptor"));
1731       struct type *p_bounds_type = value_type (p_bounds);
1732
1733       if (p_bounds_type
1734           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1735         {
1736           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1737
1738           if (TYPE_STUB (target_type))
1739             p_bounds = value_cast (lookup_pointer_type
1740                                    (ada_check_typedef (target_type)),
1741                                    p_bounds);
1742         }
1743       else
1744         error (_("Bad GNAT array descriptor"));
1745
1746       return p_bounds;
1747     }
1748   else
1749     return NULL;
1750 }
1751
1752 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1753    position of the field containing the address of the bounds data.  */
1754
1755 static int
1756 fat_pntr_bounds_bitpos (struct type *type)
1757 {
1758   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1759 }
1760
1761 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1762    size of the field containing the address of the bounds data.  */
1763
1764 static int
1765 fat_pntr_bounds_bitsize (struct type *type)
1766 {
1767   type = desc_base_type (type);
1768
1769   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1770     return TYPE_FIELD_BITSIZE (type, 1);
1771   else
1772     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1773 }
1774
1775 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1776    pointer to one, the type of its array data (a array-with-no-bounds type);
1777    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1778    data.  */
1779
1780 static struct type *
1781 desc_data_target_type (struct type *type)
1782 {
1783   type = desc_base_type (type);
1784
1785   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1786   if (is_thin_pntr (type))
1787     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1788   else if (is_thick_pntr (type))
1789     {
1790       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1791
1792       if (data_type
1793           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1794         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1795     }
1796
1797   return NULL;
1798 }
1799
1800 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1801    its array data.  */
1802
1803 static struct value *
1804 desc_data (struct value *arr)
1805 {
1806   struct type *type = value_type (arr);
1807
1808   if (is_thin_pntr (type))
1809     return thin_data_pntr (arr);
1810   else if (is_thick_pntr (type))
1811     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1812                              _("Bad GNAT array descriptor"));
1813   else
1814     return NULL;
1815 }
1816
1817
1818 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1819    position of the field containing the address of the data.  */
1820
1821 static int
1822 fat_pntr_data_bitpos (struct type *type)
1823 {
1824   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1825 }
1826
1827 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1828    size of the field containing the address of the data.  */
1829
1830 static int
1831 fat_pntr_data_bitsize (struct type *type)
1832 {
1833   type = desc_base_type (type);
1834
1835   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1836     return TYPE_FIELD_BITSIZE (type, 0);
1837   else
1838     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1839 }
1840
1841 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1842    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1843    bound, if WHICH is 1.  The first bound is I=1.  */
1844
1845 static struct value *
1846 desc_one_bound (struct value *bounds, int i, int which)
1847 {
1848   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1849                            _("Bad GNAT array descriptor bounds"));
1850 }
1851
1852 /* If BOUNDS is an array-bounds structure type, return the bit position
1853    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1854    bound, if WHICH is 1.  The first bound is I=1.  */
1855
1856 static int
1857 desc_bound_bitpos (struct type *type, int i, int which)
1858 {
1859   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1860 }
1861
1862 /* If BOUNDS is an array-bounds structure type, return the bit field size
1863    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1864    bound, if WHICH is 1.  The first bound is I=1.  */
1865
1866 static int
1867 desc_bound_bitsize (struct type *type, int i, int which)
1868 {
1869   type = desc_base_type (type);
1870
1871   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1872     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1873   else
1874     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1875 }
1876
1877 /* If TYPE is the type of an array-bounds structure, the type of its
1878    Ith bound (numbering from 1).  Otherwise, NULL.  */
1879
1880 static struct type *
1881 desc_index_type (struct type *type, int i)
1882 {
1883   type = desc_base_type (type);
1884
1885   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1886     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1887   else
1888     return NULL;
1889 }
1890
1891 /* The number of index positions in the array-bounds type TYPE.
1892    Return 0 if TYPE is NULL.  */
1893
1894 static int
1895 desc_arity (struct type *type)
1896 {
1897   type = desc_base_type (type);
1898
1899   if (type != NULL)
1900     return TYPE_NFIELDS (type) / 2;
1901   return 0;
1902 }
1903
1904 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1905    an array descriptor type (representing an unconstrained array
1906    type).  */
1907
1908 static int
1909 ada_is_direct_array_type (struct type *type)
1910 {
1911   if (type == NULL)
1912     return 0;
1913   type = ada_check_typedef (type);
1914   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1915           || ada_is_array_descriptor_type (type));
1916 }
1917
1918 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1919  * to one.  */
1920
1921 static int
1922 ada_is_array_type (struct type *type)
1923 {
1924   while (type != NULL 
1925          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1926              || TYPE_CODE (type) == TYPE_CODE_REF))
1927     type = TYPE_TARGET_TYPE (type);
1928   return ada_is_direct_array_type (type);
1929 }
1930
1931 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1932
1933 int
1934 ada_is_simple_array_type (struct type *type)
1935 {
1936   if (type == NULL)
1937     return 0;
1938   type = ada_check_typedef (type);
1939   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1940           || (TYPE_CODE (type) == TYPE_CODE_PTR
1941               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1942                  == TYPE_CODE_ARRAY));
1943 }
1944
1945 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1946
1947 int
1948 ada_is_array_descriptor_type (struct type *type)
1949 {
1950   struct type *data_type = desc_data_target_type (type);
1951
1952   if (type == NULL)
1953     return 0;
1954   type = ada_check_typedef (type);
1955   return (data_type != NULL
1956           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1957           && desc_arity (desc_bounds_type (type)) > 0);
1958 }
1959
1960 /* Non-zero iff type is a partially mal-formed GNAT array
1961    descriptor.  FIXME: This is to compensate for some problems with
1962    debugging output from GNAT.  Re-examine periodically to see if it
1963    is still needed.  */
1964
1965 int
1966 ada_is_bogus_array_descriptor (struct type *type)
1967 {
1968   return
1969     type != NULL
1970     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1971     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1972         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1973     && !ada_is_array_descriptor_type (type);
1974 }
1975
1976
1977 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1978    (fat pointer) returns the type of the array data described---specifically,
1979    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1980    in from the descriptor; otherwise, they are left unspecified.  If
1981    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1982    returns NULL.  The result is simply the type of ARR if ARR is not
1983    a descriptor.  */
1984 struct type *
1985 ada_type_of_array (struct value *arr, int bounds)
1986 {
1987   if (ada_is_constrained_packed_array_type (value_type (arr)))
1988     return decode_constrained_packed_array_type (value_type (arr));
1989
1990   if (!ada_is_array_descriptor_type (value_type (arr)))
1991     return value_type (arr);
1992
1993   if (!bounds)
1994     {
1995       struct type *array_type =
1996         ada_check_typedef (desc_data_target_type (value_type (arr)));
1997
1998       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1999         TYPE_FIELD_BITSIZE (array_type, 0) =
2000           decode_packed_array_bitsize (value_type (arr));
2001       
2002       return array_type;
2003     }
2004   else
2005     {
2006       struct type *elt_type;
2007       int arity;
2008       struct value *descriptor;
2009
2010       elt_type = ada_array_element_type (value_type (arr), -1);
2011       arity = ada_array_arity (value_type (arr));
2012
2013       if (elt_type == NULL || arity == 0)
2014         return ada_check_typedef (value_type (arr));
2015
2016       descriptor = desc_bounds (arr);
2017       if (value_as_long (descriptor) == 0)
2018         return NULL;
2019       while (arity > 0)
2020         {
2021           struct type *range_type = alloc_type_copy (value_type (arr));
2022           struct type *array_type = alloc_type_copy (value_type (arr));
2023           struct value *low = desc_one_bound (descriptor, arity, 0);
2024           struct value *high = desc_one_bound (descriptor, arity, 1);
2025
2026           arity -= 1;
2027           create_static_range_type (range_type, value_type (low),
2028                                     longest_to_int (value_as_long (low)),
2029                                     longest_to_int (value_as_long (high)));
2030           elt_type = create_array_type (array_type, elt_type, range_type);
2031
2032           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
2033             {
2034               /* We need to store the element packed bitsize, as well as
2035                  recompute the array size, because it was previously
2036                  computed based on the unpacked element size.  */
2037               LONGEST lo = value_as_long (low);
2038               LONGEST hi = value_as_long (high);
2039
2040               TYPE_FIELD_BITSIZE (elt_type, 0) =
2041                 decode_packed_array_bitsize (value_type (arr));
2042               /* If the array has no element, then the size is already
2043                  zero, and does not need to be recomputed.  */
2044               if (lo < hi)
2045                 {
2046                   int array_bitsize =
2047                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
2048
2049                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
2050                 }
2051             }
2052         }
2053
2054       return lookup_pointer_type (elt_type);
2055     }
2056 }
2057
2058 /* If ARR does not represent an array, returns ARR unchanged.
2059    Otherwise, returns either a standard GDB array with bounds set
2060    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2061    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2062
2063 struct value *
2064 ada_coerce_to_simple_array_ptr (struct value *arr)
2065 {
2066   if (ada_is_array_descriptor_type (value_type (arr)))
2067     {
2068       struct type *arrType = ada_type_of_array (arr, 1);
2069
2070       if (arrType == NULL)
2071         return NULL;
2072       return value_cast (arrType, value_copy (desc_data (arr)));
2073     }
2074   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2075     return decode_constrained_packed_array (arr);
2076   else
2077     return arr;
2078 }
2079
2080 /* If ARR does not represent an array, returns ARR unchanged.
2081    Otherwise, returns a standard GDB array describing ARR (which may
2082    be ARR itself if it already is in the proper form).  */
2083
2084 struct value *
2085 ada_coerce_to_simple_array (struct value *arr)
2086 {
2087   if (ada_is_array_descriptor_type (value_type (arr)))
2088     {
2089       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2090
2091       if (arrVal == NULL)
2092         error (_("Bounds unavailable for null array pointer."));
2093       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2094       return value_ind (arrVal);
2095     }
2096   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2097     return decode_constrained_packed_array (arr);
2098   else
2099     return arr;
2100 }
2101
2102 /* If TYPE represents a GNAT array type, return it translated to an
2103    ordinary GDB array type (possibly with BITSIZE fields indicating
2104    packing).  For other types, is the identity.  */
2105
2106 struct type *
2107 ada_coerce_to_simple_array_type (struct type *type)
2108 {
2109   if (ada_is_constrained_packed_array_type (type))
2110     return decode_constrained_packed_array_type (type);
2111
2112   if (ada_is_array_descriptor_type (type))
2113     return ada_check_typedef (desc_data_target_type (type));
2114
2115   return type;
2116 }
2117
2118 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2119
2120 static int
2121 ada_is_packed_array_type  (struct type *type)
2122 {
2123   if (type == NULL)
2124     return 0;
2125   type = desc_base_type (type);
2126   type = ada_check_typedef (type);
2127   return
2128     ada_type_name (type) != NULL
2129     && strstr (ada_type_name (type), "___XP") != NULL;
2130 }
2131
2132 /* Non-zero iff TYPE represents a standard GNAT constrained
2133    packed-array type.  */
2134
2135 int
2136 ada_is_constrained_packed_array_type (struct type *type)
2137 {
2138   return ada_is_packed_array_type (type)
2139     && !ada_is_array_descriptor_type (type);
2140 }
2141
2142 /* Non-zero iff TYPE represents an array descriptor for a
2143    unconstrained packed-array type.  */
2144
2145 static int
2146 ada_is_unconstrained_packed_array_type (struct type *type)
2147 {
2148   return ada_is_packed_array_type (type)
2149     && ada_is_array_descriptor_type (type);
2150 }
2151
2152 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2153    return the size of its elements in bits.  */
2154
2155 static long
2156 decode_packed_array_bitsize (struct type *type)
2157 {
2158   const char *raw_name;
2159   const char *tail;
2160   long bits;
2161
2162   /* Access to arrays implemented as fat pointers are encoded as a typedef
2163      of the fat pointer type.  We need the name of the fat pointer type
2164      to do the decoding, so strip the typedef layer.  */
2165   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2166     type = ada_typedef_target_type (type);
2167
2168   raw_name = ada_type_name (ada_check_typedef (type));
2169   if (!raw_name)
2170     raw_name = ada_type_name (desc_base_type (type));
2171
2172   if (!raw_name)
2173     return 0;
2174
2175   tail = strstr (raw_name, "___XP");
2176   gdb_assert (tail != NULL);
2177
2178   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2179     {
2180       lim_warning
2181         (_("could not understand bit size information on packed array"));
2182       return 0;
2183     }
2184
2185   return bits;
2186 }
2187
2188 /* Given that TYPE is a standard GDB array type with all bounds filled
2189    in, and that the element size of its ultimate scalar constituents
2190    (that is, either its elements, or, if it is an array of arrays, its
2191    elements' elements, etc.) is *ELT_BITS, return an identical type,
2192    but with the bit sizes of its elements (and those of any
2193    constituent arrays) recorded in the BITSIZE components of its
2194    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2195    in bits.
2196
2197    Note that, for arrays whose index type has an XA encoding where
2198    a bound references a record discriminant, getting that discriminant,
2199    and therefore the actual value of that bound, is not possible
2200    because none of the given parameters gives us access to the record.
2201    This function assumes that it is OK in the context where it is being
2202    used to return an array whose bounds are still dynamic and where
2203    the length is arbitrary.  */
2204
2205 static struct type *
2206 constrained_packed_array_type (struct type *type, long *elt_bits)
2207 {
2208   struct type *new_elt_type;
2209   struct type *new_type;
2210   struct type *index_type_desc;
2211   struct type *index_type;
2212   LONGEST low_bound, high_bound;
2213
2214   type = ada_check_typedef (type);
2215   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2216     return type;
2217
2218   index_type_desc = ada_find_parallel_type (type, "___XA");
2219   if (index_type_desc)
2220     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2221                                       NULL);
2222   else
2223     index_type = TYPE_INDEX_TYPE (type);
2224
2225   new_type = alloc_type_copy (type);
2226   new_elt_type =
2227     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2228                                    elt_bits);
2229   create_array_type (new_type, new_elt_type, index_type);
2230   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2231   TYPE_NAME (new_type) = ada_type_name (type);
2232
2233   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2234        && is_dynamic_type (check_typedef (index_type)))
2235       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2236     low_bound = high_bound = 0;
2237   if (high_bound < low_bound)
2238     *elt_bits = TYPE_LENGTH (new_type) = 0;
2239   else
2240     {
2241       *elt_bits *= (high_bound - low_bound + 1);
2242       TYPE_LENGTH (new_type) =
2243         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2244     }
2245
2246   TYPE_FIXED_INSTANCE (new_type) = 1;
2247   return new_type;
2248 }
2249
2250 /* The array type encoded by TYPE, where
2251    ada_is_constrained_packed_array_type (TYPE).  */
2252
2253 static struct type *
2254 decode_constrained_packed_array_type (struct type *type)
2255 {
2256   const char *raw_name = ada_type_name (ada_check_typedef (type));
2257   char *name;
2258   const char *tail;
2259   struct type *shadow_type;
2260   long bits;
2261
2262   if (!raw_name)
2263     raw_name = ada_type_name (desc_base_type (type));
2264
2265   if (!raw_name)
2266     return NULL;
2267
2268   name = (char *) alloca (strlen (raw_name) + 1);
2269   tail = strstr (raw_name, "___XP");
2270   type = desc_base_type (type);
2271
2272   memcpy (name, raw_name, tail - raw_name);
2273   name[tail - raw_name] = '\000';
2274
2275   shadow_type = ada_find_parallel_type_with_name (type, name);
2276
2277   if (shadow_type == NULL)
2278     {
2279       lim_warning (_("could not find bounds information on packed array"));
2280       return NULL;
2281     }
2282   shadow_type = check_typedef (shadow_type);
2283
2284   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2285     {
2286       lim_warning (_("could not understand bounds "
2287                      "information on packed array"));
2288       return NULL;
2289     }
2290
2291   bits = decode_packed_array_bitsize (type);
2292   return constrained_packed_array_type (shadow_type, &bits);
2293 }
2294
2295 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2296    array, returns a simple array that denotes that array.  Its type is a
2297    standard GDB array type except that the BITSIZEs of the array
2298    target types are set to the number of bits in each element, and the
2299    type length is set appropriately.  */
2300
2301 static struct value *
2302 decode_constrained_packed_array (struct value *arr)
2303 {
2304   struct type *type;
2305
2306   /* If our value is a pointer, then dereference it. Likewise if
2307      the value is a reference.  Make sure that this operation does not
2308      cause the target type to be fixed, as this would indirectly cause
2309      this array to be decoded.  The rest of the routine assumes that
2310      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2311      and "value_ind" routines to perform the dereferencing, as opposed
2312      to using "ada_coerce_ref" or "ada_value_ind".  */
2313   arr = coerce_ref (arr);
2314   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2315     arr = value_ind (arr);
2316
2317   type = decode_constrained_packed_array_type (value_type (arr));
2318   if (type == NULL)
2319     {
2320       error (_("can't unpack array"));
2321       return NULL;
2322     }
2323
2324   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2325       && ada_is_modular_type (value_type (arr)))
2326     {
2327        /* This is a (right-justified) modular type representing a packed
2328          array with no wrapper.  In order to interpret the value through
2329          the (left-justified) packed array type we just built, we must
2330          first left-justify it.  */
2331       int bit_size, bit_pos;
2332       ULONGEST mod;
2333
2334       mod = ada_modulus (value_type (arr)) - 1;
2335       bit_size = 0;
2336       while (mod > 0)
2337         {
2338           bit_size += 1;
2339           mod >>= 1;
2340         }
2341       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2342       arr = ada_value_primitive_packed_val (arr, NULL,
2343                                             bit_pos / HOST_CHAR_BIT,
2344                                             bit_pos % HOST_CHAR_BIT,
2345                                             bit_size,
2346                                             type);
2347     }
2348
2349   return coerce_unspec_val_to_type (arr, type);
2350 }
2351
2352
2353 /* The value of the element of packed array ARR at the ARITY indices
2354    given in IND.   ARR must be a simple array.  */
2355
2356 static struct value *
2357 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2358 {
2359   int i;
2360   int bits, elt_off, bit_off;
2361   long elt_total_bit_offset;
2362   struct type *elt_type;
2363   struct value *v;
2364
2365   bits = 0;
2366   elt_total_bit_offset = 0;
2367   elt_type = ada_check_typedef (value_type (arr));
2368   for (i = 0; i < arity; i += 1)
2369     {
2370       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2371           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2372         error
2373           (_("attempt to do packed indexing of "
2374              "something other than a packed array"));
2375       else
2376         {
2377           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2378           LONGEST lowerbound, upperbound;
2379           LONGEST idx;
2380
2381           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2382             {
2383               lim_warning (_("don't know bounds of array"));
2384               lowerbound = upperbound = 0;
2385             }
2386
2387           idx = pos_atr (ind[i]);
2388           if (idx < lowerbound || idx > upperbound)
2389             lim_warning (_("packed array index %ld out of bounds"),
2390                          (long) idx);
2391           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2392           elt_total_bit_offset += (idx - lowerbound) * bits;
2393           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2394         }
2395     }
2396   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2397   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2398
2399   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2400                                       bits, elt_type);
2401   return v;
2402 }
2403
2404 /* Non-zero iff TYPE includes negative integer values.  */
2405
2406 static int
2407 has_negatives (struct type *type)
2408 {
2409   switch (TYPE_CODE (type))
2410     {
2411     default:
2412       return 0;
2413     case TYPE_CODE_INT:
2414       return !TYPE_UNSIGNED (type);
2415     case TYPE_CODE_RANGE:
2416       return TYPE_LOW_BOUND (type) < 0;
2417     }
2418 }
2419
2420 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2421    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2422    the unpacked buffer.
2423
2424    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2425    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2426
2427    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2428    zero otherwise.
2429
2430    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2431
2432    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2433
2434 static void
2435 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2436                           gdb_byte *unpacked, int unpacked_len,
2437                           int is_big_endian, int is_signed_type,
2438                           int is_scalar)
2439 {
2440   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2441   int src_idx;                  /* Index into the source area */
2442   int src_bytes_left;           /* Number of source bytes left to process.  */
2443   int srcBitsLeft;              /* Number of source bits left to move */
2444   int unusedLS;                 /* Number of bits in next significant
2445                                    byte of source that are unused */
2446
2447   int unpacked_idx;             /* Index into the unpacked buffer */
2448   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2449
2450   unsigned long accum;          /* Staging area for bits being transferred */
2451   int accumSize;                /* Number of meaningful bits in accum */
2452   unsigned char sign;
2453
2454   /* Transmit bytes from least to most significant; delta is the direction
2455      the indices move.  */
2456   int delta = is_big_endian ? -1 : 1;
2457
2458   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2459      bits from SRC.  .*/
2460   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2461     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2462            bit_size, unpacked_len);
2463
2464   srcBitsLeft = bit_size;
2465   src_bytes_left = src_len;
2466   unpacked_bytes_left = unpacked_len;
2467   sign = 0;
2468
2469   if (is_big_endian)
2470     {
2471       src_idx = src_len - 1;
2472       if (is_signed_type
2473           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2474         sign = ~0;
2475
2476       unusedLS =
2477         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2478         % HOST_CHAR_BIT;
2479
2480       if (is_scalar)
2481         {
2482           accumSize = 0;
2483           unpacked_idx = unpacked_len - 1;
2484         }
2485       else
2486         {
2487           /* Non-scalar values must be aligned at a byte boundary...  */
2488           accumSize =
2489             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2490           /* ... And are placed at the beginning (most-significant) bytes
2491              of the target.  */
2492           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2493           unpacked_bytes_left = unpacked_idx + 1;
2494         }
2495     }
2496   else
2497     {
2498       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2499
2500       src_idx = unpacked_idx = 0;
2501       unusedLS = bit_offset;
2502       accumSize = 0;
2503
2504       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2505         sign = ~0;
2506     }
2507
2508   accum = 0;
2509   while (src_bytes_left > 0)
2510     {
2511       /* Mask for removing bits of the next source byte that are not
2512          part of the value.  */
2513       unsigned int unusedMSMask =
2514         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2515         1;
2516       /* Sign-extend bits for this byte.  */
2517       unsigned int signMask = sign & ~unusedMSMask;
2518
2519       accum |=
2520         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2521       accumSize += HOST_CHAR_BIT - unusedLS;
2522       if (accumSize >= HOST_CHAR_BIT)
2523         {
2524           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2525           accumSize -= HOST_CHAR_BIT;
2526           accum >>= HOST_CHAR_BIT;
2527           unpacked_bytes_left -= 1;
2528           unpacked_idx += delta;
2529         }
2530       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2531       unusedLS = 0;
2532       src_bytes_left -= 1;
2533       src_idx += delta;
2534     }
2535   while (unpacked_bytes_left > 0)
2536     {
2537       accum |= sign << accumSize;
2538       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2539       accumSize -= HOST_CHAR_BIT;
2540       if (accumSize < 0)
2541         accumSize = 0;
2542       accum >>= HOST_CHAR_BIT;
2543       unpacked_bytes_left -= 1;
2544       unpacked_idx += delta;
2545     }
2546 }
2547
2548 /* Create a new value of type TYPE from the contents of OBJ starting
2549    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2550    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2551    assigning through the result will set the field fetched from.
2552    VALADDR is ignored unless OBJ is NULL, in which case,
2553    VALADDR+OFFSET must address the start of storage containing the 
2554    packed value.  The value returned  in this case is never an lval.
2555    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2556
2557 struct value *
2558 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2559                                 long offset, int bit_offset, int bit_size,
2560                                 struct type *type)
2561 {
2562   struct value *v;
2563   const gdb_byte *src;                /* First byte containing data to unpack */
2564   gdb_byte *unpacked;
2565   const int is_scalar = is_scalar_type (type);
2566   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2567   gdb::byte_vector staging;
2568
2569   type = ada_check_typedef (type);
2570
2571   if (obj == NULL)
2572     src = valaddr + offset;
2573   else
2574     src = value_contents (obj) + offset;
2575
2576   if (is_dynamic_type (type))
2577     {
2578       /* The length of TYPE might by dynamic, so we need to resolve
2579          TYPE in order to know its actual size, which we then use
2580          to create the contents buffer of the value we return.
2581          The difficulty is that the data containing our object is
2582          packed, and therefore maybe not at a byte boundary.  So, what
2583          we do, is unpack the data into a byte-aligned buffer, and then
2584          use that buffer as our object's value for resolving the type.  */
2585       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2586       staging.resize (staging_len);
2587
2588       ada_unpack_from_contents (src, bit_offset, bit_size,
2589                                 staging.data (), staging.size (),
2590                                 is_big_endian, has_negatives (type),
2591                                 is_scalar);
2592       type = resolve_dynamic_type (type, staging.data (), 0);
2593       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2594         {
2595           /* This happens when the length of the object is dynamic,
2596              and is actually smaller than the space reserved for it.
2597              For instance, in an array of variant records, the bit_size
2598              we're given is the array stride, which is constant and
2599              normally equal to the maximum size of its element.
2600              But, in reality, each element only actually spans a portion
2601              of that stride.  */
2602           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2603         }
2604     }
2605
2606   if (obj == NULL)
2607     {
2608       v = allocate_value (type);
2609       src = valaddr + offset;
2610     }
2611   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2612     {
2613       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2614       gdb_byte *buf;
2615
2616       v = value_at (type, value_address (obj) + offset);
2617       buf = (gdb_byte *) alloca (src_len);
2618       read_memory (value_address (v), buf, src_len);
2619       src = buf;
2620     }
2621   else
2622     {
2623       v = allocate_value (type);
2624       src = value_contents (obj) + offset;
2625     }
2626
2627   if (obj != NULL)
2628     {
2629       long new_offset = offset;
2630
2631       set_value_component_location (v, obj);
2632       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2633       set_value_bitsize (v, bit_size);
2634       if (value_bitpos (v) >= HOST_CHAR_BIT)
2635         {
2636           ++new_offset;
2637           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2638         }
2639       set_value_offset (v, new_offset);
2640
2641       /* Also set the parent value.  This is needed when trying to
2642          assign a new value (in inferior memory).  */
2643       set_value_parent (v, obj);
2644     }
2645   else
2646     set_value_bitsize (v, bit_size);
2647   unpacked = value_contents_writeable (v);
2648
2649   if (bit_size == 0)
2650     {
2651       memset (unpacked, 0, TYPE_LENGTH (type));
2652       return v;
2653     }
2654
2655   if (staging.size () == TYPE_LENGTH (type))
2656     {
2657       /* Small short-cut: If we've unpacked the data into a buffer
2658          of the same size as TYPE's length, then we can reuse that,
2659          instead of doing the unpacking again.  */
2660       memcpy (unpacked, staging.data (), staging.size ());
2661     }
2662   else
2663     ada_unpack_from_contents (src, bit_offset, bit_size,
2664                               unpacked, TYPE_LENGTH (type),
2665                               is_big_endian, has_negatives (type), is_scalar);
2666
2667   return v;
2668 }
2669
2670 /* Store the contents of FROMVAL into the location of TOVAL.
2671    Return a new value with the location of TOVAL and contents of
2672    FROMVAL.   Handles assignment into packed fields that have
2673    floating-point or non-scalar types.  */
2674
2675 static struct value *
2676 ada_value_assign (struct value *toval, struct value *fromval)
2677 {
2678   struct type *type = value_type (toval);
2679   int bits = value_bitsize (toval);
2680
2681   toval = ada_coerce_ref (toval);
2682   fromval = ada_coerce_ref (fromval);
2683
2684   if (ada_is_direct_array_type (value_type (toval)))
2685     toval = ada_coerce_to_simple_array (toval);
2686   if (ada_is_direct_array_type (value_type (fromval)))
2687     fromval = ada_coerce_to_simple_array (fromval);
2688
2689   if (!deprecated_value_modifiable (toval))
2690     error (_("Left operand of assignment is not a modifiable lvalue."));
2691
2692   if (VALUE_LVAL (toval) == lval_memory
2693       && bits > 0
2694       && (TYPE_CODE (type) == TYPE_CODE_FLT
2695           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2696     {
2697       int len = (value_bitpos (toval)
2698                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2699       int from_size;
2700       gdb_byte *buffer = (gdb_byte *) alloca (len);
2701       struct value *val;
2702       CORE_ADDR to_addr = value_address (toval);
2703
2704       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2705         fromval = value_cast (type, fromval);
2706
2707       read_memory (to_addr, buffer, len);
2708       from_size = value_bitsize (fromval);
2709       if (from_size == 0)
2710         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2711       if (gdbarch_bits_big_endian (get_type_arch (type)))
2712         copy_bitwise (buffer, value_bitpos (toval),
2713                       value_contents (fromval), from_size - bits, bits, 1);
2714       else
2715         copy_bitwise (buffer, value_bitpos (toval),
2716                       value_contents (fromval), 0, bits, 0);
2717       write_memory_with_notification (to_addr, buffer, len);
2718
2719       val = value_copy (toval);
2720       memcpy (value_contents_raw (val), value_contents (fromval),
2721               TYPE_LENGTH (type));
2722       deprecated_set_value_type (val, type);
2723
2724       return val;
2725     }
2726
2727   return value_assign (toval, fromval);
2728 }
2729
2730
2731 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2732    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2733    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2734    COMPONENT, and not the inferior's memory.  The current contents
2735    of COMPONENT are ignored.
2736
2737    Although not part of the initial design, this function also works
2738    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2739    had a null address, and COMPONENT had an address which is equal to
2740    its offset inside CONTAINER.  */
2741
2742 static void
2743 value_assign_to_component (struct value *container, struct value *component,
2744                            struct value *val)
2745 {
2746   LONGEST offset_in_container =
2747     (LONGEST)  (value_address (component) - value_address (container));
2748   int bit_offset_in_container =
2749     value_bitpos (component) - value_bitpos (container);
2750   int bits;
2751
2752   val = value_cast (value_type (component), val);
2753
2754   if (value_bitsize (component) == 0)
2755     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2756   else
2757     bits = value_bitsize (component);
2758
2759   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2760     {
2761       int src_offset;
2762
2763       if (is_scalar_type (check_typedef (value_type (component))))
2764         src_offset
2765           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2766       else
2767         src_offset = 0;
2768       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2769                     value_bitpos (container) + bit_offset_in_container,
2770                     value_contents (val), src_offset, bits, 1);
2771     }
2772   else
2773     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2774                   value_bitpos (container) + bit_offset_in_container,
2775                   value_contents (val), 0, bits, 0);
2776 }
2777
2778 /* Determine if TYPE is an access to an unconstrained array.  */
2779
2780 bool
2781 ada_is_access_to_unconstrained_array (struct type *type)
2782 {
2783   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2784           && is_thick_pntr (ada_typedef_target_type (type)));
2785 }
2786
2787 /* The value of the element of array ARR at the ARITY indices given in IND.
2788    ARR may be either a simple array, GNAT array descriptor, or pointer
2789    thereto.  */
2790
2791 struct value *
2792 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2793 {
2794   int k;
2795   struct value *elt;
2796   struct type *elt_type;
2797
2798   elt = ada_coerce_to_simple_array (arr);
2799
2800   elt_type = ada_check_typedef (value_type (elt));
2801   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2802       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2803     return value_subscript_packed (elt, arity, ind);
2804
2805   for (k = 0; k < arity; k += 1)
2806     {
2807       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2808
2809       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2810         error (_("too many subscripts (%d expected)"), k);
2811
2812       elt = value_subscript (elt, pos_atr (ind[k]));
2813
2814       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2815           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2816         {
2817           /* The element is a typedef to an unconstrained array,
2818              except that the value_subscript call stripped the
2819              typedef layer.  The typedef layer is GNAT's way to
2820              specify that the element is, at the source level, an
2821              access to the unconstrained array, rather than the
2822              unconstrained array.  So, we need to restore that
2823              typedef layer, which we can do by forcing the element's
2824              type back to its original type. Otherwise, the returned
2825              value is going to be printed as the array, rather
2826              than as an access.  Another symptom of the same issue
2827              would be that an expression trying to dereference the
2828              element would also be improperly rejected.  */
2829           deprecated_set_value_type (elt, saved_elt_type);
2830         }
2831
2832       elt_type = ada_check_typedef (value_type (elt));
2833     }
2834
2835   return elt;
2836 }
2837
2838 /* Assuming ARR is a pointer to a GDB array, the value of the element
2839    of *ARR at the ARITY indices given in IND.
2840    Does not read the entire array into memory.
2841
2842    Note: Unlike what one would expect, this function is used instead of
2843    ada_value_subscript for basically all non-packed array types.  The reason
2844    for this is that a side effect of doing our own pointer arithmetics instead
2845    of relying on value_subscript is that there is no implicit typedef peeling.
2846    This is important for arrays of array accesses, where it allows us to
2847    preserve the fact that the array's element is an array access, where the
2848    access part os encoded in a typedef layer.  */
2849
2850 static struct value *
2851 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2852 {
2853   int k;
2854   struct value *array_ind = ada_value_ind (arr);
2855   struct type *type
2856     = check_typedef (value_enclosing_type (array_ind));
2857
2858   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2859       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2860     return value_subscript_packed (array_ind, arity, ind);
2861
2862   for (k = 0; k < arity; k += 1)
2863     {
2864       LONGEST lwb, upb;
2865       struct value *lwb_value;
2866
2867       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2868         error (_("too many subscripts (%d expected)"), k);
2869       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2870                         value_copy (arr));
2871       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2872       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2873       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2874       type = TYPE_TARGET_TYPE (type);
2875     }
2876
2877   return value_ind (arr);
2878 }
2879
2880 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2881    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2882    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2883    this array is LOW, as per Ada rules.  */
2884 static struct value *
2885 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2886                           int low, int high)
2887 {
2888   struct type *type0 = ada_check_typedef (type);
2889   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2890   struct type *index_type
2891     = create_static_range_type (NULL, base_index_type, low, high);
2892   struct type *slice_type = create_array_type_with_stride
2893                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2894                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2895                                TYPE_FIELD_BITSIZE (type0, 0));
2896   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2897   LONGEST base_low_pos, low_pos;
2898   CORE_ADDR base;
2899
2900   if (!discrete_position (base_index_type, low, &low_pos)
2901       || !discrete_position (base_index_type, base_low, &base_low_pos))
2902     {
2903       warning (_("unable to get positions in slice, use bounds instead"));
2904       low_pos = low;
2905       base_low_pos = base_low;
2906     }
2907
2908   base = value_as_address (array_ptr)
2909     + ((low_pos - base_low_pos)
2910        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2911   return value_at_lazy (slice_type, base);
2912 }
2913
2914
2915 static struct value *
2916 ada_value_slice (struct value *array, int low, int high)
2917 {
2918   struct type *type = ada_check_typedef (value_type (array));
2919   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2920   struct type *index_type
2921     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2922   struct type *slice_type = create_array_type_with_stride
2923                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2924                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2925                                TYPE_FIELD_BITSIZE (type, 0));
2926   LONGEST low_pos, high_pos;
2927
2928   if (!discrete_position (base_index_type, low, &low_pos)
2929       || !discrete_position (base_index_type, high, &high_pos))
2930     {
2931       warning (_("unable to get positions in slice, use bounds instead"));
2932       low_pos = low;
2933       high_pos = high;
2934     }
2935
2936   return value_cast (slice_type,
2937                      value_slice (array, low, high_pos - low_pos + 1));
2938 }
2939
2940 /* If type is a record type in the form of a standard GNAT array
2941    descriptor, returns the number of dimensions for type.  If arr is a
2942    simple array, returns the number of "array of"s that prefix its
2943    type designation.  Otherwise, returns 0.  */
2944
2945 int
2946 ada_array_arity (struct type *type)
2947 {
2948   int arity;
2949
2950   if (type == NULL)
2951     return 0;
2952
2953   type = desc_base_type (type);
2954
2955   arity = 0;
2956   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2957     return desc_arity (desc_bounds_type (type));
2958   else
2959     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2960       {
2961         arity += 1;
2962         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2963       }
2964
2965   return arity;
2966 }
2967
2968 /* If TYPE is a record type in the form of a standard GNAT array
2969    descriptor or a simple array type, returns the element type for
2970    TYPE after indexing by NINDICES indices, or by all indices if
2971    NINDICES is -1.  Otherwise, returns NULL.  */
2972
2973 struct type *
2974 ada_array_element_type (struct type *type, int nindices)
2975 {
2976   type = desc_base_type (type);
2977
2978   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2979     {
2980       int k;
2981       struct type *p_array_type;
2982
2983       p_array_type = desc_data_target_type (type);
2984
2985       k = ada_array_arity (type);
2986       if (k == 0)
2987         return NULL;
2988
2989       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2990       if (nindices >= 0 && k > nindices)
2991         k = nindices;
2992       while (k > 0 && p_array_type != NULL)
2993         {
2994           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2995           k -= 1;
2996         }
2997       return p_array_type;
2998     }
2999   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
3000     {
3001       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
3002         {
3003           type = TYPE_TARGET_TYPE (type);
3004           nindices -= 1;
3005         }
3006       return type;
3007     }
3008
3009   return NULL;
3010 }
3011
3012 /* The type of nth index in arrays of given type (n numbering from 1).
3013    Does not examine memory.  Throws an error if N is invalid or TYPE
3014    is not an array type.  NAME is the name of the Ada attribute being
3015    evaluated ('range, 'first, 'last, or 'length); it is used in building
3016    the error message.  */
3017
3018 static struct type *
3019 ada_index_type (struct type *type, int n, const char *name)
3020 {
3021   struct type *result_type;
3022
3023   type = desc_base_type (type);
3024
3025   if (n < 0 || n > ada_array_arity (type))
3026     error (_("invalid dimension number to '%s"), name);
3027
3028   if (ada_is_simple_array_type (type))
3029     {
3030       int i;
3031
3032       for (i = 1; i < n; i += 1)
3033         type = TYPE_TARGET_TYPE (type);
3034       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
3035       /* FIXME: The stabs type r(0,0);bound;bound in an array type
3036          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
3037          perhaps stabsread.c would make more sense.  */
3038       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
3039         result_type = NULL;
3040     }
3041   else
3042     {
3043       result_type = desc_index_type (desc_bounds_type (type), n);
3044       if (result_type == NULL)
3045         error (_("attempt to take bound of something that is not an array"));
3046     }
3047
3048   return result_type;
3049 }
3050
3051 /* Given that arr is an array type, returns the lower bound of the
3052    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3053    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3054    array-descriptor type.  It works for other arrays with bounds supplied
3055    by run-time quantities other than discriminants.  */
3056
3057 static LONGEST
3058 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3059 {
3060   struct type *type, *index_type_desc, *index_type;
3061   int i;
3062
3063   gdb_assert (which == 0 || which == 1);
3064
3065   if (ada_is_constrained_packed_array_type (arr_type))
3066     arr_type = decode_constrained_packed_array_type (arr_type);
3067
3068   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3069     return (LONGEST) - which;
3070
3071   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3072     type = TYPE_TARGET_TYPE (arr_type);
3073   else
3074     type = arr_type;
3075
3076   if (TYPE_FIXED_INSTANCE (type))
3077     {
3078       /* The array has already been fixed, so we do not need to
3079          check the parallel ___XA type again.  That encoding has
3080          already been applied, so ignore it now.  */
3081       index_type_desc = NULL;
3082     }
3083   else
3084     {
3085       index_type_desc = ada_find_parallel_type (type, "___XA");
3086       ada_fixup_array_indexes_type (index_type_desc);
3087     }
3088
3089   if (index_type_desc != NULL)
3090     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3091                                       NULL);
3092   else
3093     {
3094       struct type *elt_type = check_typedef (type);
3095
3096       for (i = 1; i < n; i++)
3097         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3098
3099       index_type = TYPE_INDEX_TYPE (elt_type);
3100     }
3101
3102   return
3103     (LONGEST) (which == 0
3104                ? ada_discrete_type_low_bound (index_type)
3105                : ada_discrete_type_high_bound (index_type));
3106 }
3107
3108 /* Given that arr is an array value, returns the lower bound of the
3109    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3110    WHICH is 1.  This routine will also work for arrays with bounds
3111    supplied by run-time quantities other than discriminants.  */
3112
3113 static LONGEST
3114 ada_array_bound (struct value *arr, int n, int which)
3115 {
3116   struct type *arr_type;
3117
3118   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3119     arr = value_ind (arr);
3120   arr_type = value_enclosing_type (arr);
3121
3122   if (ada_is_constrained_packed_array_type (arr_type))
3123     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3124   else if (ada_is_simple_array_type (arr_type))
3125     return ada_array_bound_from_type (arr_type, n, which);
3126   else
3127     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3128 }
3129
3130 /* Given that arr is an array value, returns the length of the
3131    nth index.  This routine will also work for arrays with bounds
3132    supplied by run-time quantities other than discriminants.
3133    Does not work for arrays indexed by enumeration types with representation
3134    clauses at the moment.  */
3135
3136 static LONGEST
3137 ada_array_length (struct value *arr, int n)
3138 {
3139   struct type *arr_type, *index_type;
3140   int low, high;
3141
3142   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3143     arr = value_ind (arr);
3144   arr_type = value_enclosing_type (arr);
3145
3146   if (ada_is_constrained_packed_array_type (arr_type))
3147     return ada_array_length (decode_constrained_packed_array (arr), n);
3148
3149   if (ada_is_simple_array_type (arr_type))
3150     {
3151       low = ada_array_bound_from_type (arr_type, n, 0);
3152       high = ada_array_bound_from_type (arr_type, n, 1);
3153     }
3154   else
3155     {
3156       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3157       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3158     }
3159
3160   arr_type = check_typedef (arr_type);
3161   index_type = ada_index_type (arr_type, n, "length");
3162   if (index_type != NULL)
3163     {
3164       struct type *base_type;
3165       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3166         base_type = TYPE_TARGET_TYPE (index_type);
3167       else
3168         base_type = index_type;
3169
3170       low = pos_atr (value_from_longest (base_type, low));
3171       high = pos_atr (value_from_longest (base_type, high));
3172     }
3173   return high - low + 1;
3174 }
3175
3176 /* An array whose type is that of ARR_TYPE (an array type), with
3177    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3178    less than LOW, then LOW-1 is used.  */
3179
3180 static struct value *
3181 empty_array (struct type *arr_type, int low, int high)
3182 {
3183   struct type *arr_type0 = ada_check_typedef (arr_type);
3184   struct type *index_type
3185     = create_static_range_type
3186         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3187          high < low ? low - 1 : high);
3188   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3189
3190   return allocate_value (create_array_type (NULL, elt_type, index_type));
3191 }
3192 \f
3193
3194                                 /* Name resolution */
3195
3196 /* The "decoded" name for the user-definable Ada operator corresponding
3197    to OP.  */
3198
3199 static const char *
3200 ada_decoded_op_name (enum exp_opcode op)
3201 {
3202   int i;
3203
3204   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3205     {
3206       if (ada_opname_table[i].op == op)
3207         return ada_opname_table[i].decoded;
3208     }
3209   error (_("Could not find operator name for opcode"));
3210 }
3211
3212
3213 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3214    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3215    undefined namespace) and converts operators that are
3216    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3217    non-null, it provides a preferred result type [at the moment, only
3218    type void has any effect---causing procedures to be preferred over
3219    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3220    return type is preferred.  May change (expand) *EXP.  */
3221
3222 static void
3223 resolve (expression_up *expp, int void_context_p)
3224 {
3225   struct type *context_type = NULL;
3226   int pc = 0;
3227
3228   if (void_context_p)
3229     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3230
3231   resolve_subexp (expp, &pc, 1, context_type);
3232 }
3233
3234 /* Resolve the operator of the subexpression beginning at
3235    position *POS of *EXPP.  "Resolving" consists of replacing
3236    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3237    with their resolutions, replacing built-in operators with
3238    function calls to user-defined operators, where appropriate, and,
3239    when DEPROCEDURE_P is non-zero, converting function-valued variables
3240    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3241    are as in ada_resolve, above.  */
3242
3243 static struct value *
3244 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3245                 struct type *context_type)
3246 {
3247   int pc = *pos;
3248   int i;
3249   struct expression *exp;       /* Convenience: == *expp.  */
3250   enum exp_opcode op = (*expp)->elts[pc].opcode;
3251   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3252   int nargs;                    /* Number of operands.  */
3253   int oplen;
3254
3255   argvec = NULL;
3256   nargs = 0;
3257   exp = expp->get ();
3258
3259   /* Pass one: resolve operands, saving their types and updating *pos,
3260      if needed.  */
3261   switch (op)
3262     {
3263     case OP_FUNCALL:
3264       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3265           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3266         *pos += 7;
3267       else
3268         {
3269           *pos += 3;
3270           resolve_subexp (expp, pos, 0, NULL);
3271         }
3272       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3273       break;
3274
3275     case UNOP_ADDR:
3276       *pos += 1;
3277       resolve_subexp (expp, pos, 0, NULL);
3278       break;
3279
3280     case UNOP_QUAL:
3281       *pos += 3;
3282       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type));
3283       break;
3284
3285     case OP_ATR_MODULUS:
3286     case OP_ATR_SIZE:
3287     case OP_ATR_TAG:
3288     case OP_ATR_FIRST:
3289     case OP_ATR_LAST:
3290     case OP_ATR_LENGTH:
3291     case OP_ATR_POS:
3292     case OP_ATR_VAL:
3293     case OP_ATR_MIN:
3294     case OP_ATR_MAX:
3295     case TERNOP_IN_RANGE:
3296     case BINOP_IN_BOUNDS:
3297     case UNOP_IN_RANGE:
3298     case OP_AGGREGATE:
3299     case OP_OTHERS:
3300     case OP_CHOICES:
3301     case OP_POSITIONAL:
3302     case OP_DISCRETE_RANGE:
3303     case OP_NAME:
3304       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3305       *pos += oplen;
3306       break;
3307
3308     case BINOP_ASSIGN:
3309       {
3310         struct value *arg1;
3311
3312         *pos += 1;
3313         arg1 = resolve_subexp (expp, pos, 0, NULL);
3314         if (arg1 == NULL)
3315           resolve_subexp (expp, pos, 1, NULL);
3316         else
3317           resolve_subexp (expp, pos, 1, value_type (arg1));
3318         break;
3319       }
3320
3321     case UNOP_CAST:
3322       *pos += 3;
3323       nargs = 1;
3324       break;
3325
3326     case BINOP_ADD:
3327     case BINOP_SUB:
3328     case BINOP_MUL:
3329     case BINOP_DIV:
3330     case BINOP_REM:
3331     case BINOP_MOD:
3332     case BINOP_EXP:
3333     case BINOP_CONCAT:
3334     case BINOP_LOGICAL_AND:
3335     case BINOP_LOGICAL_OR:
3336     case BINOP_BITWISE_AND:
3337     case BINOP_BITWISE_IOR:
3338     case BINOP_BITWISE_XOR:
3339
3340     case BINOP_EQUAL:
3341     case BINOP_NOTEQUAL:
3342     case BINOP_LESS:
3343     case BINOP_GTR:
3344     case BINOP_LEQ:
3345     case BINOP_GEQ:
3346
3347     case BINOP_REPEAT:
3348     case BINOP_SUBSCRIPT:
3349     case BINOP_COMMA:
3350       *pos += 1;
3351       nargs = 2;
3352       break;
3353
3354     case UNOP_NEG:
3355     case UNOP_PLUS:
3356     case UNOP_LOGICAL_NOT:
3357     case UNOP_ABS:
3358     case UNOP_IND:
3359       *pos += 1;
3360       nargs = 1;
3361       break;
3362
3363     case OP_LONG:
3364     case OP_FLOAT:
3365     case OP_VAR_VALUE:
3366     case OP_VAR_MSYM_VALUE:
3367       *pos += 4;
3368       break;
3369
3370     case OP_TYPE:
3371     case OP_BOOL:
3372     case OP_LAST:
3373     case OP_INTERNALVAR:
3374       *pos += 3;
3375       break;
3376
3377     case UNOP_MEMVAL:
3378       *pos += 3;
3379       nargs = 1;
3380       break;
3381
3382     case OP_REGISTER:
3383       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3384       break;
3385
3386     case STRUCTOP_STRUCT:
3387       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3388       nargs = 1;
3389       break;
3390
3391     case TERNOP_SLICE:
3392       *pos += 1;
3393       nargs = 3;
3394       break;
3395
3396     case OP_STRING:
3397       break;
3398
3399     default:
3400       error (_("Unexpected operator during name resolution"));
3401     }
3402
3403   argvec = XALLOCAVEC (struct value *, nargs + 1);
3404   for (i = 0; i < nargs; i += 1)
3405     argvec[i] = resolve_subexp (expp, pos, 1, NULL);
3406   argvec[i] = NULL;
3407   exp = expp->get ();
3408
3409   /* Pass two: perform any resolution on principal operator.  */
3410   switch (op)
3411     {
3412     default:
3413       break;
3414
3415     case OP_VAR_VALUE:
3416       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3417         {
3418           std::vector<struct block_symbol> candidates;
3419           int n_candidates;
3420
3421           n_candidates =
3422             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3423                                     (exp->elts[pc + 2].symbol),
3424                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3425                                     &candidates);
3426
3427           if (n_candidates > 1)
3428             {
3429               /* Types tend to get re-introduced locally, so if there
3430                  are any local symbols that are not types, first filter
3431                  out all types.  */
3432               int j;
3433               for (j = 0; j < n_candidates; j += 1)
3434                 switch (SYMBOL_CLASS (candidates[j].symbol))
3435                   {
3436                   case LOC_REGISTER:
3437                   case LOC_ARG:
3438                   case LOC_REF_ARG:
3439                   case LOC_REGPARM_ADDR:
3440                   case LOC_LOCAL:
3441                   case LOC_COMPUTED:
3442                     goto FoundNonType;
3443                   default:
3444                     break;
3445                   }
3446             FoundNonType:
3447               if (j < n_candidates)
3448                 {
3449                   j = 0;
3450                   while (j < n_candidates)
3451                     {
3452                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3453                         {
3454                           candidates[j] = candidates[n_candidates - 1];
3455                           n_candidates -= 1;
3456                         }
3457                       else
3458                         j += 1;
3459                     }
3460                 }
3461             }
3462
3463           if (n_candidates == 0)
3464             error (_("No definition found for %s"),
3465                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3466           else if (n_candidates == 1)
3467             i = 0;
3468           else if (deprocedure_p
3469                    && !is_nonfunction (candidates.data (), n_candidates))
3470             {
3471               i = ada_resolve_function
3472                 (candidates.data (), n_candidates, NULL, 0,
3473                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3474                  context_type);
3475               if (i < 0)
3476                 error (_("Could not find a match for %s"),
3477                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3478             }
3479           else
3480             {
3481               printf_filtered (_("Multiple matches for %s\n"),
3482                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3483               user_select_syms (candidates.data (), n_candidates, 1);
3484               i = 0;
3485             }
3486
3487           exp->elts[pc + 1].block = candidates[i].block;
3488           exp->elts[pc + 2].symbol = candidates[i].symbol;
3489           innermost_block.update (candidates[i]);
3490         }
3491
3492       if (deprocedure_p
3493           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3494               == TYPE_CODE_FUNC))
3495         {
3496           replace_operator_with_call (expp, pc, 0, 4,
3497                                       exp->elts[pc + 2].symbol,
3498                                       exp->elts[pc + 1].block);
3499           exp = expp->get ();
3500         }
3501       break;
3502
3503     case OP_FUNCALL:
3504       {
3505         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3506             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3507           {
3508             std::vector<struct block_symbol> candidates;
3509             int n_candidates;
3510
3511             n_candidates =
3512               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3513                                       (exp->elts[pc + 5].symbol),
3514                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3515                                       &candidates);
3516
3517             if (n_candidates == 1)
3518               i = 0;
3519             else
3520               {
3521                 i = ada_resolve_function
3522                   (candidates.data (), n_candidates,
3523                    argvec, nargs,
3524                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3525                    context_type);
3526                 if (i < 0)
3527                   error (_("Could not find a match for %s"),
3528                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3529               }
3530
3531             exp->elts[pc + 4].block = candidates[i].block;
3532             exp->elts[pc + 5].symbol = candidates[i].symbol;
3533             innermost_block.update (candidates[i]);
3534           }
3535       }
3536       break;
3537     case BINOP_ADD:
3538     case BINOP_SUB:
3539     case BINOP_MUL:
3540     case BINOP_DIV:
3541     case BINOP_REM:
3542     case BINOP_MOD:
3543     case BINOP_CONCAT:
3544     case BINOP_BITWISE_AND:
3545     case BINOP_BITWISE_IOR:
3546     case BINOP_BITWISE_XOR:
3547     case BINOP_EQUAL:
3548     case BINOP_NOTEQUAL:
3549     case BINOP_LESS:
3550     case BINOP_GTR:
3551     case BINOP_LEQ:
3552     case BINOP_GEQ:
3553     case BINOP_EXP:
3554     case UNOP_NEG:
3555     case UNOP_PLUS:
3556     case UNOP_LOGICAL_NOT:
3557     case UNOP_ABS:
3558       if (possible_user_operator_p (op, argvec))
3559         {
3560           std::vector<struct block_symbol> candidates;
3561           int n_candidates;
3562
3563           n_candidates =
3564             ada_lookup_symbol_list (ada_decoded_op_name (op),
3565                                     (struct block *) NULL, VAR_DOMAIN,
3566                                     &candidates);
3567
3568           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3569                                     nargs, ada_decoded_op_name (op), NULL);
3570           if (i < 0)
3571             break;
3572
3573           replace_operator_with_call (expp, pc, nargs, 1,
3574                                       candidates[i].symbol,
3575                                       candidates[i].block);
3576           exp = expp->get ();
3577         }
3578       break;
3579
3580     case OP_TYPE:
3581     case OP_REGISTER:
3582       return NULL;
3583     }
3584
3585   *pos = pc;
3586   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3587     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3588                                     exp->elts[pc + 1].objfile,
3589                                     exp->elts[pc + 2].msymbol);
3590   else
3591     return evaluate_subexp_type (exp, pos);
3592 }
3593
3594 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3595    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3596    a non-pointer.  */
3597 /* The term "match" here is rather loose.  The match is heuristic and
3598    liberal.  */
3599
3600 static int
3601 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3602 {
3603   ftype = ada_check_typedef (ftype);
3604   atype = ada_check_typedef (atype);
3605
3606   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3607     ftype = TYPE_TARGET_TYPE (ftype);
3608   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3609     atype = TYPE_TARGET_TYPE (atype);
3610
3611   switch (TYPE_CODE (ftype))
3612     {
3613     default:
3614       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3615     case TYPE_CODE_PTR:
3616       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3617         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3618                                TYPE_TARGET_TYPE (atype), 0);
3619       else
3620         return (may_deref
3621                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3622     case TYPE_CODE_INT:
3623     case TYPE_CODE_ENUM:
3624     case TYPE_CODE_RANGE:
3625       switch (TYPE_CODE (atype))
3626         {
3627         case TYPE_CODE_INT:
3628         case TYPE_CODE_ENUM:
3629         case TYPE_CODE_RANGE:
3630           return 1;
3631         default:
3632           return 0;
3633         }
3634
3635     case TYPE_CODE_ARRAY:
3636       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3637               || ada_is_array_descriptor_type (atype));
3638
3639     case TYPE_CODE_STRUCT:
3640       if (ada_is_array_descriptor_type (ftype))
3641         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3642                 || ada_is_array_descriptor_type (atype));
3643       else
3644         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3645                 && !ada_is_array_descriptor_type (atype));
3646
3647     case TYPE_CODE_UNION:
3648     case TYPE_CODE_FLT:
3649       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3650     }
3651 }
3652
3653 /* Return non-zero if the formals of FUNC "sufficiently match" the
3654    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3655    may also be an enumeral, in which case it is treated as a 0-
3656    argument function.  */
3657
3658 static int
3659 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3660 {
3661   int i;
3662   struct type *func_type = SYMBOL_TYPE (func);
3663
3664   if (SYMBOL_CLASS (func) == LOC_CONST
3665       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3666     return (n_actuals == 0);
3667   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3668     return 0;
3669
3670   if (TYPE_NFIELDS (func_type) != n_actuals)
3671     return 0;
3672
3673   for (i = 0; i < n_actuals; i += 1)
3674     {
3675       if (actuals[i] == NULL)
3676         return 0;
3677       else
3678         {
3679           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3680                                                                    i));
3681           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3682
3683           if (!ada_type_match (ftype, atype, 1))
3684             return 0;
3685         }
3686     }
3687   return 1;
3688 }
3689
3690 /* False iff function type FUNC_TYPE definitely does not produce a value
3691    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3692    FUNC_TYPE is not a valid function type with a non-null return type
3693    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3694
3695 static int
3696 return_match (struct type *func_type, struct type *context_type)
3697 {
3698   struct type *return_type;
3699
3700   if (func_type == NULL)
3701     return 1;
3702
3703   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3704     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3705   else
3706     return_type = get_base_type (func_type);
3707   if (return_type == NULL)
3708     return 1;
3709
3710   context_type = get_base_type (context_type);
3711
3712   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3713     return context_type == NULL || return_type == context_type;
3714   else if (context_type == NULL)
3715     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3716   else
3717     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3718 }
3719
3720
3721 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3722    function (if any) that matches the types of the NARGS arguments in
3723    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3724    that returns that type, then eliminate matches that don't.  If
3725    CONTEXT_TYPE is void and there is at least one match that does not
3726    return void, eliminate all matches that do.
3727
3728    Asks the user if there is more than one match remaining.  Returns -1
3729    if there is no such symbol or none is selected.  NAME is used
3730    solely for messages.  May re-arrange and modify SYMS in
3731    the process; the index returned is for the modified vector.  */
3732
3733 static int
3734 ada_resolve_function (struct block_symbol syms[],
3735                       int nsyms, struct value **args, int nargs,
3736                       const char *name, struct type *context_type)
3737 {
3738   int fallback;
3739   int k;
3740   int m;                        /* Number of hits */
3741
3742   m = 0;
3743   /* In the first pass of the loop, we only accept functions matching
3744      context_type.  If none are found, we add a second pass of the loop
3745      where every function is accepted.  */
3746   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3747     {
3748       for (k = 0; k < nsyms; k += 1)
3749         {
3750           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3751
3752           if (ada_args_match (syms[k].symbol, args, nargs)
3753               && (fallback || return_match (type, context_type)))
3754             {
3755               syms[m] = syms[k];
3756               m += 1;
3757             }
3758         }
3759     }
3760
3761   /* If we got multiple matches, ask the user which one to use.  Don't do this
3762      interactive thing during completion, though, as the purpose of the
3763      completion is providing a list of all possible matches.  Prompting the
3764      user to filter it down would be completely unexpected in this case.  */
3765   if (m == 0)
3766     return -1;
3767   else if (m > 1 && !parse_completion)
3768     {
3769       printf_filtered (_("Multiple matches for %s\n"), name);
3770       user_select_syms (syms, m, 1);
3771       return 0;
3772     }
3773   return 0;
3774 }
3775
3776 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3777    in a listing of choices during disambiguation (see sort_choices, below).
3778    The idea is that overloadings of a subprogram name from the
3779    same package should sort in their source order.  We settle for ordering
3780    such symbols by their trailing number (__N  or $N).  */
3781
3782 static int
3783 encoded_ordered_before (const char *N0, const char *N1)
3784 {
3785   if (N1 == NULL)
3786     return 0;
3787   else if (N0 == NULL)
3788     return 1;
3789   else
3790     {
3791       int k0, k1;
3792
3793       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3794         ;
3795       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3796         ;
3797       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3798           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3799         {
3800           int n0, n1;
3801
3802           n0 = k0;
3803           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3804             n0 -= 1;
3805           n1 = k1;
3806           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3807             n1 -= 1;
3808           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3809             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3810         }
3811       return (strcmp (N0, N1) < 0);
3812     }
3813 }
3814
3815 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3816    encoded names.  */
3817
3818 static void
3819 sort_choices (struct block_symbol syms[], int nsyms)
3820 {
3821   int i;
3822
3823   for (i = 1; i < nsyms; i += 1)
3824     {
3825       struct block_symbol sym = syms[i];
3826       int j;
3827
3828       for (j = i - 1; j >= 0; j -= 1)
3829         {
3830           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3831                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3832             break;
3833           syms[j + 1] = syms[j];
3834         }
3835       syms[j + 1] = sym;
3836     }
3837 }
3838
3839 /* Whether GDB should display formals and return types for functions in the
3840    overloads selection menu.  */
3841 static int print_signatures = 1;
3842
3843 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3844    all but functions, the signature is just the name of the symbol.  For
3845    functions, this is the name of the function, the list of types for formals
3846    and the return type (if any).  */
3847
3848 static void
3849 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3850                             const struct type_print_options *flags)
3851 {
3852   struct type *type = SYMBOL_TYPE (sym);
3853
3854   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3855   if (!print_signatures
3856       || type == NULL
3857       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3858     return;
3859
3860   if (TYPE_NFIELDS (type) > 0)
3861     {
3862       int i;
3863
3864       fprintf_filtered (stream, " (");
3865       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3866         {
3867           if (i > 0)
3868             fprintf_filtered (stream, "; ");
3869           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3870                           flags);
3871         }
3872       fprintf_filtered (stream, ")");
3873     }
3874   if (TYPE_TARGET_TYPE (type) != NULL
3875       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3876     {
3877       fprintf_filtered (stream, " return ");
3878       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3879     }
3880 }
3881
3882 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3883    by asking the user (if necessary), returning the number selected, 
3884    and setting the first elements of SYMS items.  Error if no symbols
3885    selected.  */
3886
3887 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3888    to be re-integrated one of these days.  */
3889
3890 int
3891 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3892 {
3893   int i;
3894   int *chosen = XALLOCAVEC (int , nsyms);
3895   int n_chosen;
3896   int first_choice = (max_results == 1) ? 1 : 2;
3897   const char *select_mode = multiple_symbols_select_mode ();
3898
3899   if (max_results < 1)
3900     error (_("Request to select 0 symbols!"));
3901   if (nsyms <= 1)
3902     return nsyms;
3903
3904   if (select_mode == multiple_symbols_cancel)
3905     error (_("\
3906 canceled because the command is ambiguous\n\
3907 See set/show multiple-symbol."));
3908
3909   /* If select_mode is "all", then return all possible symbols.
3910      Only do that if more than one symbol can be selected, of course.
3911      Otherwise, display the menu as usual.  */
3912   if (select_mode == multiple_symbols_all && max_results > 1)
3913     return nsyms;
3914
3915   printf_filtered (_("[0] cancel\n"));
3916   if (max_results > 1)
3917     printf_filtered (_("[1] all\n"));
3918
3919   sort_choices (syms, nsyms);
3920
3921   for (i = 0; i < nsyms; i += 1)
3922     {
3923       if (syms[i].symbol == NULL)
3924         continue;
3925
3926       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3927         {
3928           struct symtab_and_line sal =
3929             find_function_start_sal (syms[i].symbol, 1);
3930
3931           printf_filtered ("[%d] ", i + first_choice);
3932           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3933                                       &type_print_raw_options);
3934           if (sal.symtab == NULL)
3935             printf_filtered (_(" at <no source file available>:%d\n"),
3936                              sal.line);
3937           else
3938             printf_filtered (_(" at %s:%d\n"),
3939                              symtab_to_filename_for_display (sal.symtab),
3940                              sal.line);
3941           continue;
3942         }
3943       else
3944         {
3945           int is_enumeral =
3946             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3947              && SYMBOL_TYPE (syms[i].symbol) != NULL
3948              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3949           struct symtab *symtab = NULL;
3950
3951           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3952             symtab = symbol_symtab (syms[i].symbol);
3953
3954           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3955             {
3956               printf_filtered ("[%d] ", i + first_choice);
3957               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3958                                           &type_print_raw_options);
3959               printf_filtered (_(" at %s:%d\n"),
3960                                symtab_to_filename_for_display (symtab),
3961                                SYMBOL_LINE (syms[i].symbol));
3962             }
3963           else if (is_enumeral
3964                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3965             {
3966               printf_filtered (("[%d] "), i + first_choice);
3967               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3968                               gdb_stdout, -1, 0, &type_print_raw_options);
3969               printf_filtered (_("'(%s) (enumeral)\n"),
3970                                SYMBOL_PRINT_NAME (syms[i].symbol));
3971             }
3972           else
3973             {
3974               printf_filtered ("[%d] ", i + first_choice);
3975               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3976                                           &type_print_raw_options);
3977
3978               if (symtab != NULL)
3979                 printf_filtered (is_enumeral
3980                                  ? _(" in %s (enumeral)\n")
3981                                  : _(" at %s:?\n"),
3982                                  symtab_to_filename_for_display (symtab));
3983               else
3984                 printf_filtered (is_enumeral
3985                                  ? _(" (enumeral)\n")
3986                                  : _(" at ?\n"));
3987             }
3988         }
3989     }
3990
3991   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3992                              "overload-choice");
3993
3994   for (i = 0; i < n_chosen; i += 1)
3995     syms[i] = syms[chosen[i]];
3996
3997   return n_chosen;
3998 }
3999
4000 /* Read and validate a set of numeric choices from the user in the
4001    range 0 .. N_CHOICES-1.  Place the results in increasing
4002    order in CHOICES[0 .. N-1], and return N.
4003
4004    The user types choices as a sequence of numbers on one line
4005    separated by blanks, encoding them as follows:
4006
4007      + A choice of 0 means to cancel the selection, throwing an error.
4008      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
4009      + The user chooses k by typing k+IS_ALL_CHOICE+1.
4010
4011    The user is not allowed to choose more than MAX_RESULTS values.
4012
4013    ANNOTATION_SUFFIX, if present, is used to annotate the input
4014    prompts (for use with the -f switch).  */
4015
4016 int
4017 get_selections (int *choices, int n_choices, int max_results,
4018                 int is_all_choice, const char *annotation_suffix)
4019 {
4020   char *args;
4021   const char *prompt;
4022   int n_chosen;
4023   int first_choice = is_all_choice ? 2 : 1;
4024
4025   prompt = getenv ("PS2");
4026   if (prompt == NULL)
4027     prompt = "> ";
4028
4029   args = command_line_input (prompt, annotation_suffix);
4030
4031   if (args == NULL)
4032     error_no_arg (_("one or more choice numbers"));
4033
4034   n_chosen = 0;
4035
4036   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
4037      order, as given in args.  Choices are validated.  */
4038   while (1)
4039     {
4040       char *args2;
4041       int choice, j;
4042
4043       args = skip_spaces (args);
4044       if (*args == '\0' && n_chosen == 0)
4045         error_no_arg (_("one or more choice numbers"));
4046       else if (*args == '\0')
4047         break;
4048
4049       choice = strtol (args, &args2, 10);
4050       if (args == args2 || choice < 0
4051           || choice > n_choices + first_choice - 1)
4052         error (_("Argument must be choice number"));
4053       args = args2;
4054
4055       if (choice == 0)
4056         error (_("cancelled"));
4057
4058       if (choice < first_choice)
4059         {
4060           n_chosen = n_choices;
4061           for (j = 0; j < n_choices; j += 1)
4062             choices[j] = j;
4063           break;
4064         }
4065       choice -= first_choice;
4066
4067       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4068         {
4069         }
4070
4071       if (j < 0 || choice != choices[j])
4072         {
4073           int k;
4074
4075           for (k = n_chosen - 1; k > j; k -= 1)
4076             choices[k + 1] = choices[k];
4077           choices[j + 1] = choice;
4078           n_chosen += 1;
4079         }
4080     }
4081
4082   if (n_chosen > max_results)
4083     error (_("Select no more than %d of the above"), max_results);
4084
4085   return n_chosen;
4086 }
4087
4088 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4089    on the function identified by SYM and BLOCK, and taking NARGS
4090    arguments.  Update *EXPP as needed to hold more space.  */
4091
4092 static void
4093 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4094                             int oplen, struct symbol *sym,
4095                             const struct block *block)
4096 {
4097   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4098      symbol, -oplen for operator being replaced).  */
4099   struct expression *newexp = (struct expression *)
4100     xzalloc (sizeof (struct expression)
4101              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4102   struct expression *exp = expp->get ();
4103
4104   newexp->nelts = exp->nelts + 7 - oplen;
4105   newexp->language_defn = exp->language_defn;
4106   newexp->gdbarch = exp->gdbarch;
4107   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4108   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4109           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4110
4111   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4112   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4113
4114   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4115   newexp->elts[pc + 4].block = block;
4116   newexp->elts[pc + 5].symbol = sym;
4117
4118   expp->reset (newexp);
4119 }
4120
4121 /* Type-class predicates */
4122
4123 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4124    or FLOAT).  */
4125
4126 static int
4127 numeric_type_p (struct type *type)
4128 {
4129   if (type == NULL)
4130     return 0;
4131   else
4132     {
4133       switch (TYPE_CODE (type))
4134         {
4135         case TYPE_CODE_INT:
4136         case TYPE_CODE_FLT:
4137           return 1;
4138         case TYPE_CODE_RANGE:
4139           return (type == TYPE_TARGET_TYPE (type)
4140                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4141         default:
4142           return 0;
4143         }
4144     }
4145 }
4146
4147 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4148
4149 static int
4150 integer_type_p (struct type *type)
4151 {
4152   if (type == NULL)
4153     return 0;
4154   else
4155     {
4156       switch (TYPE_CODE (type))
4157         {
4158         case TYPE_CODE_INT:
4159           return 1;
4160         case TYPE_CODE_RANGE:
4161           return (type == TYPE_TARGET_TYPE (type)
4162                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4163         default:
4164           return 0;
4165         }
4166     }
4167 }
4168
4169 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4170
4171 static int
4172 scalar_type_p (struct type *type)
4173 {
4174   if (type == NULL)
4175     return 0;
4176   else
4177     {
4178       switch (TYPE_CODE (type))
4179         {
4180         case TYPE_CODE_INT:
4181         case TYPE_CODE_RANGE:
4182         case TYPE_CODE_ENUM:
4183         case TYPE_CODE_FLT:
4184           return 1;
4185         default:
4186           return 0;
4187         }
4188     }
4189 }
4190
4191 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4192
4193 static int
4194 discrete_type_p (struct type *type)
4195 {
4196   if (type == NULL)
4197     return 0;
4198   else
4199     {
4200       switch (TYPE_CODE (type))
4201         {
4202         case TYPE_CODE_INT:
4203         case TYPE_CODE_RANGE:
4204         case TYPE_CODE_ENUM:
4205         case TYPE_CODE_BOOL:
4206           return 1;
4207         default:
4208           return 0;
4209         }
4210     }
4211 }
4212
4213 /* Returns non-zero if OP with operands in the vector ARGS could be
4214    a user-defined function.  Errs on the side of pre-defined operators
4215    (i.e., result 0).  */
4216
4217 static int
4218 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4219 {
4220   struct type *type0 =
4221     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4222   struct type *type1 =
4223     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4224
4225   if (type0 == NULL)
4226     return 0;
4227
4228   switch (op)
4229     {
4230     default:
4231       return 0;
4232
4233     case BINOP_ADD:
4234     case BINOP_SUB:
4235     case BINOP_MUL:
4236     case BINOP_DIV:
4237       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4238
4239     case BINOP_REM:
4240     case BINOP_MOD:
4241     case BINOP_BITWISE_AND:
4242     case BINOP_BITWISE_IOR:
4243     case BINOP_BITWISE_XOR:
4244       return (!(integer_type_p (type0) && integer_type_p (type1)));
4245
4246     case BINOP_EQUAL:
4247     case BINOP_NOTEQUAL:
4248     case BINOP_LESS:
4249     case BINOP_GTR:
4250     case BINOP_LEQ:
4251     case BINOP_GEQ:
4252       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4253
4254     case BINOP_CONCAT:
4255       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4256
4257     case BINOP_EXP:
4258       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4259
4260     case UNOP_NEG:
4261     case UNOP_PLUS:
4262     case UNOP_LOGICAL_NOT:
4263     case UNOP_ABS:
4264       return (!numeric_type_p (type0));
4265
4266     }
4267 }
4268 \f
4269                                 /* Renaming */
4270
4271 /* NOTES: 
4272
4273    1. In the following, we assume that a renaming type's name may
4274       have an ___XD suffix.  It would be nice if this went away at some
4275       point.
4276    2. We handle both the (old) purely type-based representation of 
4277       renamings and the (new) variable-based encoding.  At some point,
4278       it is devoutly to be hoped that the former goes away 
4279       (FIXME: hilfinger-2007-07-09).
4280    3. Subprogram renamings are not implemented, although the XRS
4281       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4282
4283 /* If SYM encodes a renaming, 
4284
4285        <renaming> renames <renamed entity>,
4286
4287    sets *LEN to the length of the renamed entity's name,
4288    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4289    the string describing the subcomponent selected from the renamed
4290    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4291    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4292    are undefined).  Otherwise, returns a value indicating the category
4293    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4294    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4295    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4296    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4297    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4298    may be NULL, in which case they are not assigned.
4299
4300    [Currently, however, GCC does not generate subprogram renamings.]  */
4301
4302 enum ada_renaming_category
4303 ada_parse_renaming (struct symbol *sym,
4304                     const char **renamed_entity, int *len, 
4305                     const char **renaming_expr)
4306 {
4307   enum ada_renaming_category kind;
4308   const char *info;
4309   const char *suffix;
4310
4311   if (sym == NULL)
4312     return ADA_NOT_RENAMING;
4313   switch (SYMBOL_CLASS (sym)) 
4314     {
4315     default:
4316       return ADA_NOT_RENAMING;
4317     case LOC_TYPEDEF:
4318       return parse_old_style_renaming (SYMBOL_TYPE (sym), 
4319                                        renamed_entity, len, renaming_expr);
4320     case LOC_LOCAL:
4321     case LOC_STATIC:
4322     case LOC_COMPUTED:
4323     case LOC_OPTIMIZED_OUT:
4324       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4325       if (info == NULL)
4326         return ADA_NOT_RENAMING;
4327       switch (info[5])
4328         {
4329         case '_':
4330           kind = ADA_OBJECT_RENAMING;
4331           info += 6;
4332           break;
4333         case 'E':
4334           kind = ADA_EXCEPTION_RENAMING;
4335           info += 7;
4336           break;
4337         case 'P':
4338           kind = ADA_PACKAGE_RENAMING;
4339           info += 7;
4340           break;
4341         case 'S':
4342           kind = ADA_SUBPROGRAM_RENAMING;
4343           info += 7;
4344           break;
4345         default:
4346           return ADA_NOT_RENAMING;
4347         }
4348     }
4349
4350   if (renamed_entity != NULL)
4351     *renamed_entity = info;
4352   suffix = strstr (info, "___XE");
4353   if (suffix == NULL || suffix == info)
4354     return ADA_NOT_RENAMING;
4355   if (len != NULL)
4356     *len = strlen (info) - strlen (suffix);
4357   suffix += 5;
4358   if (renaming_expr != NULL)
4359     *renaming_expr = suffix;
4360   return kind;
4361 }
4362
4363 /* Assuming TYPE encodes a renaming according to the old encoding in
4364    exp_dbug.ads, returns details of that renaming in *RENAMED_ENTITY,
4365    *LEN, and *RENAMING_EXPR, as for ada_parse_renaming, above.  Returns
4366    ADA_NOT_RENAMING otherwise.  */
4367 static enum ada_renaming_category
4368 parse_old_style_renaming (struct type *type,
4369                           const char **renamed_entity, int *len, 
4370                           const char **renaming_expr)
4371 {
4372   enum ada_renaming_category kind;
4373   const char *name;
4374   const char *info;
4375   const char *suffix;
4376
4377   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM 
4378       || TYPE_NFIELDS (type) != 1)
4379     return ADA_NOT_RENAMING;
4380
4381   name = TYPE_NAME (type);
4382   if (name == NULL)
4383     return ADA_NOT_RENAMING;
4384   
4385   name = strstr (name, "___XR");
4386   if (name == NULL)
4387     return ADA_NOT_RENAMING;
4388   switch (name[5])
4389     {
4390     case '\0':
4391     case '_':
4392       kind = ADA_OBJECT_RENAMING;
4393       break;
4394     case 'E':
4395       kind = ADA_EXCEPTION_RENAMING;
4396       break;
4397     case 'P':
4398       kind = ADA_PACKAGE_RENAMING;
4399       break;
4400     case 'S':
4401       kind = ADA_SUBPROGRAM_RENAMING;
4402       break;
4403     default:
4404       return ADA_NOT_RENAMING;
4405     }
4406
4407   info = TYPE_FIELD_NAME (type, 0);
4408   if (info == NULL)
4409     return ADA_NOT_RENAMING;
4410   if (renamed_entity != NULL)
4411     *renamed_entity = info;
4412   suffix = strstr (info, "___XE");
4413   if (renaming_expr != NULL)
4414     *renaming_expr = suffix + 5;
4415   if (suffix == NULL || suffix == info)
4416     return ADA_NOT_RENAMING;
4417   if (len != NULL)
4418     *len = suffix - info;
4419   return kind;
4420 }
4421
4422 /* Compute the value of the given RENAMING_SYM, which is expected to
4423    be a symbol encoding a renaming expression.  BLOCK is the block
4424    used to evaluate the renaming.  */
4425
4426 static struct value *
4427 ada_read_renaming_var_value (struct symbol *renaming_sym,
4428                              const struct block *block)
4429 {
4430   const char *sym_name;
4431
4432   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4433   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4434   return evaluate_expression (expr.get ());
4435 }
4436 \f
4437
4438                                 /* Evaluation: Function Calls */
4439
4440 /* Return an lvalue containing the value VAL.  This is the identity on
4441    lvalues, and otherwise has the side-effect of allocating memory
4442    in the inferior where a copy of the value contents is copied.  */
4443
4444 static struct value *
4445 ensure_lval (struct value *val)
4446 {
4447   if (VALUE_LVAL (val) == not_lval
4448       || VALUE_LVAL (val) == lval_internalvar)
4449     {
4450       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4451       const CORE_ADDR addr =
4452         value_as_long (value_allocate_space_in_inferior (len));
4453
4454       VALUE_LVAL (val) = lval_memory;
4455       set_value_address (val, addr);
4456       write_memory (addr, value_contents (val), len);
4457     }
4458
4459   return val;
4460 }
4461
4462 /* Return the value ACTUAL, converted to be an appropriate value for a
4463    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4464    allocating any necessary descriptors (fat pointers), or copies of
4465    values not residing in memory, updating it as needed.  */
4466
4467 struct value *
4468 ada_convert_actual (struct value *actual, struct type *formal_type0)
4469 {
4470   struct type *actual_type = ada_check_typedef (value_type (actual));
4471   struct type *formal_type = ada_check_typedef (formal_type0);
4472   struct type *formal_target =
4473     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4474     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4475   struct type *actual_target =
4476     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4477     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4478
4479   if (ada_is_array_descriptor_type (formal_target)
4480       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4481     return make_array_descriptor (formal_type, actual);
4482   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4483            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4484     {
4485       struct value *result;
4486
4487       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4488           && ada_is_array_descriptor_type (actual_target))
4489         result = desc_data (actual);
4490       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4491         {
4492           if (VALUE_LVAL (actual) != lval_memory)
4493             {
4494               struct value *val;
4495
4496               actual_type = ada_check_typedef (value_type (actual));
4497               val = allocate_value (actual_type);
4498               memcpy ((char *) value_contents_raw (val),
4499                       (char *) value_contents (actual),
4500                       TYPE_LENGTH (actual_type));
4501               actual = ensure_lval (val);
4502             }
4503           result = value_addr (actual);
4504         }
4505       else
4506         return actual;
4507       return value_cast_pointers (formal_type, result, 0);
4508     }
4509   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4510     return ada_value_ind (actual);
4511   else if (ada_is_aligner_type (formal_type))
4512     {
4513       /* We need to turn this parameter into an aligner type
4514          as well.  */
4515       struct value *aligner = allocate_value (formal_type);
4516       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4517
4518       value_assign_to_component (aligner, component, actual);
4519       return aligner;
4520     }
4521
4522   return actual;
4523 }
4524
4525 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4526    type TYPE.  This is usually an inefficient no-op except on some targets
4527    (such as AVR) where the representation of a pointer and an address
4528    differs.  */
4529
4530 static CORE_ADDR
4531 value_pointer (struct value *value, struct type *type)
4532 {
4533   struct gdbarch *gdbarch = get_type_arch (type);
4534   unsigned len = TYPE_LENGTH (type);
4535   gdb_byte *buf = (gdb_byte *) alloca (len);
4536   CORE_ADDR addr;
4537
4538   addr = value_address (value);
4539   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4540   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4541   return addr;
4542 }
4543
4544
4545 /* Push a descriptor of type TYPE for array value ARR on the stack at
4546    *SP, updating *SP to reflect the new descriptor.  Return either
4547    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4548    to-descriptor type rather than a descriptor type), a struct value *
4549    representing a pointer to this descriptor.  */
4550
4551 static struct value *
4552 make_array_descriptor (struct type *type, struct value *arr)
4553 {
4554   struct type *bounds_type = desc_bounds_type (type);
4555   struct type *desc_type = desc_base_type (type);
4556   struct value *descriptor = allocate_value (desc_type);
4557   struct value *bounds = allocate_value (bounds_type);
4558   int i;
4559
4560   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4561        i > 0; i -= 1)
4562     {
4563       modify_field (value_type (bounds), value_contents_writeable (bounds),
4564                     ada_array_bound (arr, i, 0),
4565                     desc_bound_bitpos (bounds_type, i, 0),
4566                     desc_bound_bitsize (bounds_type, i, 0));
4567       modify_field (value_type (bounds), value_contents_writeable (bounds),
4568                     ada_array_bound (arr, i, 1),
4569                     desc_bound_bitpos (bounds_type, i, 1),
4570                     desc_bound_bitsize (bounds_type, i, 1));
4571     }
4572
4573   bounds = ensure_lval (bounds);
4574
4575   modify_field (value_type (descriptor),
4576                 value_contents_writeable (descriptor),
4577                 value_pointer (ensure_lval (arr),
4578                                TYPE_FIELD_TYPE (desc_type, 0)),
4579                 fat_pntr_data_bitpos (desc_type),
4580                 fat_pntr_data_bitsize (desc_type));
4581
4582   modify_field (value_type (descriptor),
4583                 value_contents_writeable (descriptor),
4584                 value_pointer (bounds,
4585                                TYPE_FIELD_TYPE (desc_type, 1)),
4586                 fat_pntr_bounds_bitpos (desc_type),
4587                 fat_pntr_bounds_bitsize (desc_type));
4588
4589   descriptor = ensure_lval (descriptor);
4590
4591   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4592     return value_addr (descriptor);
4593   else
4594     return descriptor;
4595 }
4596 \f
4597                                 /* Symbol Cache Module */
4598
4599 /* Performance measurements made as of 2010-01-15 indicate that
4600    this cache does bring some noticeable improvements.  Depending
4601    on the type of entity being printed, the cache can make it as much
4602    as an order of magnitude faster than without it.
4603
4604    The descriptive type DWARF extension has significantly reduced
4605    the need for this cache, at least when DWARF is being used.  However,
4606    even in this case, some expensive name-based symbol searches are still
4607    sometimes necessary - to find an XVZ variable, mostly.  */
4608
4609 /* Initialize the contents of SYM_CACHE.  */
4610
4611 static void
4612 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4613 {
4614   obstack_init (&sym_cache->cache_space);
4615   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4616 }
4617
4618 /* Free the memory used by SYM_CACHE.  */
4619
4620 static void
4621 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4622 {
4623   obstack_free (&sym_cache->cache_space, NULL);
4624   xfree (sym_cache);
4625 }
4626
4627 /* Return the symbol cache associated to the given program space PSPACE.
4628    If not allocated for this PSPACE yet, allocate and initialize one.  */
4629
4630 static struct ada_symbol_cache *
4631 ada_get_symbol_cache (struct program_space *pspace)
4632 {
4633   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4634
4635   if (pspace_data->sym_cache == NULL)
4636     {
4637       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4638       ada_init_symbol_cache (pspace_data->sym_cache);
4639     }
4640
4641   return pspace_data->sym_cache;
4642 }
4643
4644 /* Clear all entries from the symbol cache.  */
4645
4646 static void
4647 ada_clear_symbol_cache (void)
4648 {
4649   struct ada_symbol_cache *sym_cache
4650     = ada_get_symbol_cache (current_program_space);
4651
4652   obstack_free (&sym_cache->cache_space, NULL);
4653   ada_init_symbol_cache (sym_cache);
4654 }
4655
4656 /* Search our cache for an entry matching NAME and DOMAIN.
4657    Return it if found, or NULL otherwise.  */
4658
4659 static struct cache_entry **
4660 find_entry (const char *name, domain_enum domain)
4661 {
4662   struct ada_symbol_cache *sym_cache
4663     = ada_get_symbol_cache (current_program_space);
4664   int h = msymbol_hash (name) % HASH_SIZE;
4665   struct cache_entry **e;
4666
4667   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4668     {
4669       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4670         return e;
4671     }
4672   return NULL;
4673 }
4674
4675 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4676    Return 1 if found, 0 otherwise.
4677
4678    If an entry was found and SYM is not NULL, set *SYM to the entry's
4679    SYM.  Same principle for BLOCK if not NULL.  */
4680
4681 static int
4682 lookup_cached_symbol (const char *name, domain_enum domain,
4683                       struct symbol **sym, const struct block **block)
4684 {
4685   struct cache_entry **e = find_entry (name, domain);
4686
4687   if (e == NULL)
4688     return 0;
4689   if (sym != NULL)
4690     *sym = (*e)->sym;
4691   if (block != NULL)
4692     *block = (*e)->block;
4693   return 1;
4694 }
4695
4696 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4697    in domain DOMAIN, save this result in our symbol cache.  */
4698
4699 static void
4700 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4701               const struct block *block)
4702 {
4703   struct ada_symbol_cache *sym_cache
4704     = ada_get_symbol_cache (current_program_space);
4705   int h;
4706   char *copy;
4707   struct cache_entry *e;
4708
4709   /* Symbols for builtin types don't have a block.
4710      For now don't cache such symbols.  */
4711   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4712     return;
4713
4714   /* If the symbol is a local symbol, then do not cache it, as a search
4715      for that symbol depends on the context.  To determine whether
4716      the symbol is local or not, we check the block where we found it
4717      against the global and static blocks of its associated symtab.  */
4718   if (sym
4719       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4720                             GLOBAL_BLOCK) != block
4721       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4722                             STATIC_BLOCK) != block)
4723     return;
4724
4725   h = msymbol_hash (name) % HASH_SIZE;
4726   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4727   e->next = sym_cache->root[h];
4728   sym_cache->root[h] = e;
4729   e->name = copy
4730     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4731   strcpy (copy, name);
4732   e->sym = sym;
4733   e->domain = domain;
4734   e->block = block;
4735 }
4736 \f
4737                                 /* Symbol Lookup */
4738
4739 /* Return the symbol name match type that should be used used when
4740    searching for all symbols matching LOOKUP_NAME.
4741
4742    LOOKUP_NAME is expected to be a symbol name after transformation
4743    for Ada lookups.  */
4744
4745 static symbol_name_match_type
4746 name_match_type_from_name (const char *lookup_name)
4747 {
4748   return (strstr (lookup_name, "__") == NULL
4749           ? symbol_name_match_type::WILD
4750           : symbol_name_match_type::FULL);
4751 }
4752
4753 /* Return the result of a standard (literal, C-like) lookup of NAME in
4754    given DOMAIN, visible from lexical block BLOCK.  */
4755
4756 static struct symbol *
4757 standard_lookup (const char *name, const struct block *block,
4758                  domain_enum domain)
4759 {
4760   /* Initialize it just to avoid a GCC false warning.  */
4761   struct block_symbol sym = {NULL, NULL};
4762
4763   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4764     return sym.symbol;
4765   ada_lookup_encoded_symbol (name, block, domain, &sym);
4766   cache_symbol (name, domain, sym.symbol, sym.block);
4767   return sym.symbol;
4768 }
4769
4770
4771 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4772    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4773    since they contend in overloading in the same way.  */
4774 static int
4775 is_nonfunction (struct block_symbol syms[], int n)
4776 {
4777   int i;
4778
4779   for (i = 0; i < n; i += 1)
4780     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4781         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4782             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4783       return 1;
4784
4785   return 0;
4786 }
4787
4788 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4789    struct types.  Otherwise, they may not.  */
4790
4791 static int
4792 equiv_types (struct type *type0, struct type *type1)
4793 {
4794   if (type0 == type1)
4795     return 1;
4796   if (type0 == NULL || type1 == NULL
4797       || TYPE_CODE (type0) != TYPE_CODE (type1))
4798     return 0;
4799   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4800        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4801       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4802       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4803     return 1;
4804
4805   return 0;
4806 }
4807
4808 /* True iff SYM0 represents the same entity as SYM1, or one that is
4809    no more defined than that of SYM1.  */
4810
4811 static int
4812 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4813 {
4814   if (sym0 == sym1)
4815     return 1;
4816   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4817       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4818     return 0;
4819
4820   switch (SYMBOL_CLASS (sym0))
4821     {
4822     case LOC_UNDEF:
4823       return 1;
4824     case LOC_TYPEDEF:
4825       {
4826         struct type *type0 = SYMBOL_TYPE (sym0);
4827         struct type *type1 = SYMBOL_TYPE (sym1);
4828         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4829         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4830         int len0 = strlen (name0);
4831
4832         return
4833           TYPE_CODE (type0) == TYPE_CODE (type1)
4834           && (equiv_types (type0, type1)
4835               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4836                   && startswith (name1 + len0, "___XV")));
4837       }
4838     case LOC_CONST:
4839       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4840         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4841     default:
4842       return 0;
4843     }
4844 }
4845
4846 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4847    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4848
4849 static void
4850 add_defn_to_vec (struct obstack *obstackp,
4851                  struct symbol *sym,
4852                  const struct block *block)
4853 {
4854   int i;
4855   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4856
4857   /* Do not try to complete stub types, as the debugger is probably
4858      already scanning all symbols matching a certain name at the
4859      time when this function is called.  Trying to replace the stub
4860      type by its associated full type will cause us to restart a scan
4861      which may lead to an infinite recursion.  Instead, the client
4862      collecting the matching symbols will end up collecting several
4863      matches, with at least one of them complete.  It can then filter
4864      out the stub ones if needed.  */
4865
4866   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4867     {
4868       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4869         return;
4870       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4871         {
4872           prevDefns[i].symbol = sym;
4873           prevDefns[i].block = block;
4874           return;
4875         }
4876     }
4877
4878   {
4879     struct block_symbol info;
4880
4881     info.symbol = sym;
4882     info.block = block;
4883     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4884   }
4885 }
4886
4887 /* Number of block_symbol structures currently collected in current vector in
4888    OBSTACKP.  */
4889
4890 static int
4891 num_defns_collected (struct obstack *obstackp)
4892 {
4893   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4894 }
4895
4896 /* Vector of block_symbol structures currently collected in current vector in
4897    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4898
4899 static struct block_symbol *
4900 defns_collected (struct obstack *obstackp, int finish)
4901 {
4902   if (finish)
4903     return (struct block_symbol *) obstack_finish (obstackp);
4904   else
4905     return (struct block_symbol *) obstack_base (obstackp);
4906 }
4907
4908 /* Return a bound minimal symbol matching NAME according to Ada
4909    decoding rules.  Returns an invalid symbol if there is no such
4910    minimal symbol.  Names prefixed with "standard__" are handled
4911    specially: "standard__" is first stripped off, and only static and
4912    global symbols are searched.  */
4913
4914 struct bound_minimal_symbol
4915 ada_lookup_simple_minsym (const char *name)
4916 {
4917   struct bound_minimal_symbol result;
4918
4919   memset (&result, 0, sizeof (result));
4920
4921   symbol_name_match_type match_type = name_match_type_from_name (name);
4922   lookup_name_info lookup_name (name, match_type);
4923
4924   symbol_name_matcher_ftype *match_name
4925     = ada_get_symbol_name_matcher (lookup_name);
4926
4927   for (objfile *objfile : current_program_space->objfiles ())
4928     {
4929       for (minimal_symbol *msymbol : objfile->msymbols ())
4930         {
4931           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4932               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4933             {
4934               result.minsym = msymbol;
4935               result.objfile = objfile;
4936               break;
4937             }
4938         }
4939     }
4940
4941   return result;
4942 }
4943
4944 /* For all subprograms that statically enclose the subprogram of the
4945    selected frame, add symbols matching identifier NAME in DOMAIN
4946    and their blocks to the list of data in OBSTACKP, as for
4947    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4948    with a wildcard prefix.  */
4949
4950 static void
4951 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4952                                   const lookup_name_info &lookup_name,
4953                                   domain_enum domain)
4954 {
4955 }
4956
4957 /* True if TYPE is definitely an artificial type supplied to a symbol
4958    for which no debugging information was given in the symbol file.  */
4959
4960 static int
4961 is_nondebugging_type (struct type *type)
4962 {
4963   const char *name = ada_type_name (type);
4964
4965   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4966 }
4967
4968 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4969    that are deemed "identical" for practical purposes.
4970
4971    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4972    types and that their number of enumerals is identical (in other
4973    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4974
4975 static int
4976 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4977 {
4978   int i;
4979
4980   /* The heuristic we use here is fairly conservative.  We consider
4981      that 2 enumerate types are identical if they have the same
4982      number of enumerals and that all enumerals have the same
4983      underlying value and name.  */
4984
4985   /* All enums in the type should have an identical underlying value.  */
4986   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4987     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4988       return 0;
4989
4990   /* All enumerals should also have the same name (modulo any numerical
4991      suffix).  */
4992   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4993     {
4994       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4995       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4996       int len_1 = strlen (name_1);
4997       int len_2 = strlen (name_2);
4998
4999       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
5000       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
5001       if (len_1 != len_2
5002           || strncmp (TYPE_FIELD_NAME (type1, i),
5003                       TYPE_FIELD_NAME (type2, i),
5004                       len_1) != 0)
5005         return 0;
5006     }
5007
5008   return 1;
5009 }
5010
5011 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
5012    that are deemed "identical" for practical purposes.  Sometimes,
5013    enumerals are not strictly identical, but their types are so similar
5014    that they can be considered identical.
5015
5016    For instance, consider the following code:
5017
5018       type Color is (Black, Red, Green, Blue, White);
5019       type RGB_Color is new Color range Red .. Blue;
5020
5021    Type RGB_Color is a subrange of an implicit type which is a copy
5022    of type Color. If we call that implicit type RGB_ColorB ("B" is
5023    for "Base Type"), then type RGB_ColorB is a copy of type Color.
5024    As a result, when an expression references any of the enumeral
5025    by name (Eg. "print green"), the expression is technically
5026    ambiguous and the user should be asked to disambiguate. But
5027    doing so would only hinder the user, since it wouldn't matter
5028    what choice he makes, the outcome would always be the same.
5029    So, for practical purposes, we consider them as the same.  */
5030
5031 static int
5032 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
5033 {
5034   int i;
5035
5036   /* Before performing a thorough comparison check of each type,
5037      we perform a series of inexpensive checks.  We expect that these
5038      checks will quickly fail in the vast majority of cases, and thus
5039      help prevent the unnecessary use of a more expensive comparison.
5040      Said comparison also expects us to make some of these checks
5041      (see ada_identical_enum_types_p).  */
5042
5043   /* Quick check: All symbols should have an enum type.  */
5044   for (i = 0; i < syms.size (); i++)
5045     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
5046       return 0;
5047
5048   /* Quick check: They should all have the same value.  */
5049   for (i = 1; i < syms.size (); i++)
5050     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
5051       return 0;
5052
5053   /* Quick check: They should all have the same number of enumerals.  */
5054   for (i = 1; i < syms.size (); i++)
5055     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
5056         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
5057       return 0;
5058
5059   /* All the sanity checks passed, so we might have a set of
5060      identical enumeration types.  Perform a more complete
5061      comparison of the type of each symbol.  */
5062   for (i = 1; i < syms.size (); i++)
5063     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
5064                                      SYMBOL_TYPE (syms[0].symbol)))
5065       return 0;
5066
5067   return 1;
5068 }
5069
5070 /* Remove any non-debugging symbols in SYMS that definitely
5071    duplicate other symbols in the list (The only case I know of where
5072    this happens is when object files containing stabs-in-ecoff are
5073    linked with files containing ordinary ecoff debugging symbols (or no
5074    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5075    Returns the number of items in the modified list.  */
5076
5077 static int
5078 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5079 {
5080   int i, j;
5081
5082   /* We should never be called with less than 2 symbols, as there
5083      cannot be any extra symbol in that case.  But it's easy to
5084      handle, since we have nothing to do in that case.  */
5085   if (syms->size () < 2)
5086     return syms->size ();
5087
5088   i = 0;
5089   while (i < syms->size ())
5090     {
5091       int remove_p = 0;
5092
5093       /* If two symbols have the same name and one of them is a stub type,
5094          the get rid of the stub.  */
5095
5096       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5097           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5098         {
5099           for (j = 0; j < syms->size (); j++)
5100             {
5101               if (j != i
5102                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5103                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5104                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5105                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5106                 remove_p = 1;
5107             }
5108         }
5109
5110       /* Two symbols with the same name, same class and same address
5111          should be identical.  */
5112
5113       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5114           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5115           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5116         {
5117           for (j = 0; j < syms->size (); j += 1)
5118             {
5119               if (i != j
5120                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5121                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5122                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5123                   && SYMBOL_CLASS ((*syms)[i].symbol)
5124                        == SYMBOL_CLASS ((*syms)[j].symbol)
5125                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5126                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5127                 remove_p = 1;
5128             }
5129         }
5130       
5131       if (remove_p)
5132         syms->erase (syms->begin () + i);
5133
5134       i += 1;
5135     }
5136
5137   /* If all the remaining symbols are identical enumerals, then
5138      just keep the first one and discard the rest.
5139
5140      Unlike what we did previously, we do not discard any entry
5141      unless they are ALL identical.  This is because the symbol
5142      comparison is not a strict comparison, but rather a practical
5143      comparison.  If all symbols are considered identical, then
5144      we can just go ahead and use the first one and discard the rest.
5145      But if we cannot reduce the list to a single element, we have
5146      to ask the user to disambiguate anyways.  And if we have to
5147      present a multiple-choice menu, it's less confusing if the list
5148      isn't missing some choices that were identical and yet distinct.  */
5149   if (symbols_are_identical_enums (*syms))
5150     syms->resize (1);
5151
5152   return syms->size ();
5153 }
5154
5155 /* Given a type that corresponds to a renaming entity, use the type name
5156    to extract the scope (package name or function name, fully qualified,
5157    and following the GNAT encoding convention) where this renaming has been
5158    defined.  */
5159
5160 static std::string
5161 xget_renaming_scope (struct type *renaming_type)
5162 {
5163   /* The renaming types adhere to the following convention:
5164      <scope>__<rename>___<XR extension>.
5165      So, to extract the scope, we search for the "___XR" extension,
5166      and then backtrack until we find the first "__".  */
5167
5168   const char *name = TYPE_NAME (renaming_type);
5169   const char *suffix = strstr (name, "___XR");
5170   const char *last;
5171
5172   /* Now, backtrack a bit until we find the first "__".  Start looking
5173      at suffix - 3, as the <rename> part is at least one character long.  */
5174
5175   for (last = suffix - 3; last > name; last--)
5176     if (last[0] == '_' && last[1] == '_')
5177       break;
5178
5179   /* Make a copy of scope and return it.  */
5180   return std::string (name, last);
5181 }
5182
5183 /* Return nonzero if NAME corresponds to a package name.  */
5184
5185 static int
5186 is_package_name (const char *name)
5187 {
5188   /* Here, We take advantage of the fact that no symbols are generated
5189      for packages, while symbols are generated for each function.
5190      So the condition for NAME represent a package becomes equivalent
5191      to NAME not existing in our list of symbols.  There is only one
5192      small complication with library-level functions (see below).  */
5193
5194   /* If it is a function that has not been defined at library level,
5195      then we should be able to look it up in the symbols.  */
5196   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5197     return 0;
5198
5199   /* Library-level function names start with "_ada_".  See if function
5200      "_ada_" followed by NAME can be found.  */
5201
5202   /* Do a quick check that NAME does not contain "__", since library-level
5203      functions names cannot contain "__" in them.  */
5204   if (strstr (name, "__") != NULL)
5205     return 0;
5206
5207   std::string fun_name = string_printf ("_ada_%s", name);
5208
5209   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5210 }
5211
5212 /* Return nonzero if SYM corresponds to a renaming entity that is
5213    not visible from FUNCTION_NAME.  */
5214
5215 static int
5216 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5217 {
5218   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5219     return 0;
5220
5221   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5222
5223   /* If the rename has been defined in a package, then it is visible.  */
5224   if (is_package_name (scope.c_str ()))
5225     return 0;
5226
5227   /* Check that the rename is in the current function scope by checking
5228      that its name starts with SCOPE.  */
5229
5230   /* If the function name starts with "_ada_", it means that it is
5231      a library-level function.  Strip this prefix before doing the
5232      comparison, as the encoding for the renaming does not contain
5233      this prefix.  */
5234   if (startswith (function_name, "_ada_"))
5235     function_name += 5;
5236
5237   return !startswith (function_name, scope.c_str ());
5238 }
5239
5240 /* Remove entries from SYMS that corresponds to a renaming entity that
5241    is not visible from the function associated with CURRENT_BLOCK or
5242    that is superfluous due to the presence of more specific renaming
5243    information.  Places surviving symbols in the initial entries of
5244    SYMS and returns the number of surviving symbols.
5245    
5246    Rationale:
5247    First, in cases where an object renaming is implemented as a
5248    reference variable, GNAT may produce both the actual reference
5249    variable and the renaming encoding.  In this case, we discard the
5250    latter.
5251
5252    Second, GNAT emits a type following a specified encoding for each renaming
5253    entity.  Unfortunately, STABS currently does not support the definition
5254    of types that are local to a given lexical block, so all renamings types
5255    are emitted at library level.  As a consequence, if an application
5256    contains two renaming entities using the same name, and a user tries to
5257    print the value of one of these entities, the result of the ada symbol
5258    lookup will also contain the wrong renaming type.
5259
5260    This function partially covers for this limitation by attempting to
5261    remove from the SYMS list renaming symbols that should be visible
5262    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5263    method with the current information available.  The implementation
5264    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5265    
5266       - When the user tries to print a rename in a function while there
5267         is another rename entity defined in a package:  Normally, the
5268         rename in the function has precedence over the rename in the
5269         package, so the latter should be removed from the list.  This is
5270         currently not the case.
5271         
5272       - This function will incorrectly remove valid renames if
5273         the CURRENT_BLOCK corresponds to a function which symbol name
5274         has been changed by an "Export" pragma.  As a consequence,
5275         the user will be unable to print such rename entities.  */
5276
5277 static int
5278 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5279                              const struct block *current_block)
5280 {
5281   struct symbol *current_function;
5282   const char *current_function_name;
5283   int i;
5284   int is_new_style_renaming;
5285
5286   /* If there is both a renaming foo___XR... encoded as a variable and
5287      a simple variable foo in the same block, discard the latter.
5288      First, zero out such symbols, then compress.  */
5289   is_new_style_renaming = 0;
5290   for (i = 0; i < syms->size (); i += 1)
5291     {
5292       struct symbol *sym = (*syms)[i].symbol;
5293       const struct block *block = (*syms)[i].block;
5294       const char *name;
5295       const char *suffix;
5296
5297       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5298         continue;
5299       name = SYMBOL_LINKAGE_NAME (sym);
5300       suffix = strstr (name, "___XR");
5301
5302       if (suffix != NULL)
5303         {
5304           int name_len = suffix - name;
5305           int j;
5306
5307           is_new_style_renaming = 1;
5308           for (j = 0; j < syms->size (); j += 1)
5309             if (i != j && (*syms)[j].symbol != NULL
5310                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5311                             name_len) == 0
5312                 && block == (*syms)[j].block)
5313               (*syms)[j].symbol = NULL;
5314         }
5315     }
5316   if (is_new_style_renaming)
5317     {
5318       int j, k;
5319
5320       for (j = k = 0; j < syms->size (); j += 1)
5321         if ((*syms)[j].symbol != NULL)
5322             {
5323               (*syms)[k] = (*syms)[j];
5324               k += 1;
5325             }
5326       return k;
5327     }
5328
5329   /* Extract the function name associated to CURRENT_BLOCK.
5330      Abort if unable to do so.  */
5331
5332   if (current_block == NULL)
5333     return syms->size ();
5334
5335   current_function = block_linkage_function (current_block);
5336   if (current_function == NULL)
5337     return syms->size ();
5338
5339   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5340   if (current_function_name == NULL)
5341     return syms->size ();
5342
5343   /* Check each of the symbols, and remove it from the list if it is
5344      a type corresponding to a renaming that is out of the scope of
5345      the current block.  */
5346
5347   i = 0;
5348   while (i < syms->size ())
5349     {
5350       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5351           == ADA_OBJECT_RENAMING
5352           && old_renaming_is_invisible ((*syms)[i].symbol,
5353                                         current_function_name))
5354         syms->erase (syms->begin () + i);
5355       else
5356         i += 1;
5357     }
5358
5359   return syms->size ();
5360 }
5361
5362 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5363    whose name and domain match NAME and DOMAIN respectively.
5364    If no match was found, then extend the search to "enclosing"
5365    routines (in other words, if we're inside a nested function,
5366    search the symbols defined inside the enclosing functions).
5367    If WILD_MATCH_P is nonzero, perform the naming matching in
5368    "wild" mode (see function "wild_match" for more info).
5369
5370    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5371
5372 static void
5373 ada_add_local_symbols (struct obstack *obstackp,
5374                        const lookup_name_info &lookup_name,
5375                        const struct block *block, domain_enum domain)
5376 {
5377   int block_depth = 0;
5378
5379   while (block != NULL)
5380     {
5381       block_depth += 1;
5382       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5383
5384       /* If we found a non-function match, assume that's the one.  */
5385       if (is_nonfunction (defns_collected (obstackp, 0),
5386                           num_defns_collected (obstackp)))
5387         return;
5388
5389       block = BLOCK_SUPERBLOCK (block);
5390     }
5391
5392   /* If no luck so far, try to find NAME as a local symbol in some lexically
5393      enclosing subprogram.  */
5394   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5395     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5396 }
5397
5398 /* An object of this type is used as the user_data argument when
5399    calling the map_matching_symbols method.  */
5400
5401 struct match_data
5402 {
5403   struct objfile *objfile;
5404   struct obstack *obstackp;
5405   struct symbol *arg_sym;
5406   int found_sym;
5407 };
5408
5409 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5410    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5411    containing the obstack that collects the symbol list, the file that SYM
5412    must come from, a flag indicating whether a non-argument symbol has
5413    been found in the current block, and the last argument symbol
5414    passed in SYM within the current block (if any).  When SYM is null,
5415    marking the end of a block, the argument symbol is added if no
5416    other has been found.  */
5417
5418 static int
5419 aux_add_nonlocal_symbols (struct block *block, struct symbol *sym, void *data0)
5420 {
5421   struct match_data *data = (struct match_data *) data0;
5422   
5423   if (sym == NULL)
5424     {
5425       if (!data->found_sym && data->arg_sym != NULL) 
5426         add_defn_to_vec (data->obstackp,
5427                          fixup_symbol_section (data->arg_sym, data->objfile),
5428                          block);
5429       data->found_sym = 0;
5430       data->arg_sym = NULL;
5431     }
5432   else 
5433     {
5434       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5435         return 0;
5436       else if (SYMBOL_IS_ARGUMENT (sym))
5437         data->arg_sym = sym;
5438       else
5439         {
5440           data->found_sym = 1;
5441           add_defn_to_vec (data->obstackp,
5442                            fixup_symbol_section (sym, data->objfile),
5443                            block);
5444         }
5445     }
5446   return 0;
5447 }
5448
5449 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5450    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5451    symbols to OBSTACKP.  Return whether we found such symbols.  */
5452
5453 static int
5454 ada_add_block_renamings (struct obstack *obstackp,
5455                          const struct block *block,
5456                          const lookup_name_info &lookup_name,
5457                          domain_enum domain)
5458 {
5459   struct using_direct *renaming;
5460   int defns_mark = num_defns_collected (obstackp);
5461
5462   symbol_name_matcher_ftype *name_match
5463     = ada_get_symbol_name_matcher (lookup_name);
5464
5465   for (renaming = block_using (block);
5466        renaming != NULL;
5467        renaming = renaming->next)
5468     {
5469       const char *r_name;
5470
5471       /* Avoid infinite recursions: skip this renaming if we are actually
5472          already traversing it.
5473
5474          Currently, symbol lookup in Ada don't use the namespace machinery from
5475          C++/Fortran support: skip namespace imports that use them.  */
5476       if (renaming->searched
5477           || (renaming->import_src != NULL
5478               && renaming->import_src[0] != '\0')
5479           || (renaming->import_dest != NULL
5480               && renaming->import_dest[0] != '\0'))
5481         continue;
5482       renaming->searched = 1;
5483
5484       /* TODO: here, we perform another name-based symbol lookup, which can
5485          pull its own multiple overloads.  In theory, we should be able to do
5486          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5487          not a simple name.  But in order to do this, we would need to enhance
5488          the DWARF reader to associate a symbol to this renaming, instead of a
5489          name.  So, for now, we do something simpler: re-use the C++/Fortran
5490          namespace machinery.  */
5491       r_name = (renaming->alias != NULL
5492                 ? renaming->alias
5493                 : renaming->declaration);
5494       if (name_match (r_name, lookup_name, NULL))
5495         {
5496           lookup_name_info decl_lookup_name (renaming->declaration,
5497                                              lookup_name.match_type ());
5498           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5499                                1, NULL);
5500         }
5501       renaming->searched = 0;
5502     }
5503   return num_defns_collected (obstackp) != defns_mark;
5504 }
5505
5506 /* Implements compare_names, but only applying the comparision using
5507    the given CASING.  */
5508
5509 static int
5510 compare_names_with_case (const char *string1, const char *string2,
5511                          enum case_sensitivity casing)
5512 {
5513   while (*string1 != '\0' && *string2 != '\0')
5514     {
5515       char c1, c2;
5516
5517       if (isspace (*string1) || isspace (*string2))
5518         return strcmp_iw_ordered (string1, string2);
5519
5520       if (casing == case_sensitive_off)
5521         {
5522           c1 = tolower (*string1);
5523           c2 = tolower (*string2);
5524         }
5525       else
5526         {
5527           c1 = *string1;
5528           c2 = *string2;
5529         }
5530       if (c1 != c2)
5531         break;
5532
5533       string1 += 1;
5534       string2 += 1;
5535     }
5536
5537   switch (*string1)
5538     {
5539     case '(':
5540       return strcmp_iw_ordered (string1, string2);
5541     case '_':
5542       if (*string2 == '\0')
5543         {
5544           if (is_name_suffix (string1))
5545             return 0;
5546           else
5547             return 1;
5548         }
5549       /* FALLTHROUGH */
5550     default:
5551       if (*string2 == '(')
5552         return strcmp_iw_ordered (string1, string2);
5553       else
5554         {
5555           if (casing == case_sensitive_off)
5556             return tolower (*string1) - tolower (*string2);
5557           else
5558             return *string1 - *string2;
5559         }
5560     }
5561 }
5562
5563 /* Compare STRING1 to STRING2, with results as for strcmp.
5564    Compatible with strcmp_iw_ordered in that...
5565
5566        strcmp_iw_ordered (STRING1, STRING2) <= 0
5567
5568    ... implies...
5569
5570        compare_names (STRING1, STRING2) <= 0
5571
5572    (they may differ as to what symbols compare equal).  */
5573
5574 static int
5575 compare_names (const char *string1, const char *string2)
5576 {
5577   int result;
5578
5579   /* Similar to what strcmp_iw_ordered does, we need to perform
5580      a case-insensitive comparison first, and only resort to
5581      a second, case-sensitive, comparison if the first one was
5582      not sufficient to differentiate the two strings.  */
5583
5584   result = compare_names_with_case (string1, string2, case_sensitive_off);
5585   if (result == 0)
5586     result = compare_names_with_case (string1, string2, case_sensitive_on);
5587
5588   return result;
5589 }
5590
5591 /* Convenience function to get at the Ada encoded lookup name for
5592    LOOKUP_NAME, as a C string.  */
5593
5594 static const char *
5595 ada_lookup_name (const lookup_name_info &lookup_name)
5596 {
5597   return lookup_name.ada ().lookup_name ().c_str ();
5598 }
5599
5600 /* Add to OBSTACKP all non-local symbols whose name and domain match
5601    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5602    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5603    symbols otherwise.  */
5604
5605 static void
5606 add_nonlocal_symbols (struct obstack *obstackp,
5607                       const lookup_name_info &lookup_name,
5608                       domain_enum domain, int global)
5609 {
5610   struct match_data data;
5611
5612   memset (&data, 0, sizeof data);
5613   data.obstackp = obstackp;
5614
5615   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5616
5617   for (objfile *objfile : current_program_space->objfiles ())
5618     {
5619       data.objfile = objfile;
5620
5621       if (is_wild_match)
5622         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5623                                                domain, global,
5624                                                aux_add_nonlocal_symbols, &data,
5625                                                symbol_name_match_type::WILD,
5626                                                NULL);
5627       else
5628         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5629                                                domain, global,
5630                                                aux_add_nonlocal_symbols, &data,
5631                                                symbol_name_match_type::FULL,
5632                                                compare_names);
5633
5634       for (compunit_symtab *cu : objfile->compunits ())
5635         {
5636           const struct block *global_block
5637             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5638
5639           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5640                                        domain))
5641             data.found_sym = 1;
5642         }
5643     }
5644
5645   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5646     {
5647       const char *name = ada_lookup_name (lookup_name);
5648       std::string name1 = std::string ("<_ada_") + name + '>';
5649
5650       for (objfile *objfile : current_program_space->objfiles ())
5651         {
5652           data.objfile = objfile;
5653           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5654                                                  domain, global,
5655                                                  aux_add_nonlocal_symbols,
5656                                                  &data,
5657                                                  symbol_name_match_type::FULL,
5658                                                  compare_names);
5659         }
5660     }           
5661 }
5662
5663 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5664    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5665    returning the number of matches.  Add these to OBSTACKP.
5666
5667    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5668    symbol match within the nest of blocks whose innermost member is BLOCK,
5669    is the one match returned (no other matches in that or
5670    enclosing blocks is returned).  If there are any matches in or
5671    surrounding BLOCK, then these alone are returned.
5672
5673    Names prefixed with "standard__" are handled specially:
5674    "standard__" is first stripped off (by the lookup_name
5675    constructor), and only static and global symbols are searched.
5676
5677    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5678    to lookup global symbols.  */
5679
5680 static void
5681 ada_add_all_symbols (struct obstack *obstackp,
5682                      const struct block *block,
5683                      const lookup_name_info &lookup_name,
5684                      domain_enum domain,
5685                      int full_search,
5686                      int *made_global_lookup_p)
5687 {
5688   struct symbol *sym;
5689
5690   if (made_global_lookup_p)
5691     *made_global_lookup_p = 0;
5692
5693   /* Special case: If the user specifies a symbol name inside package
5694      Standard, do a non-wild matching of the symbol name without
5695      the "standard__" prefix.  This was primarily introduced in order
5696      to allow the user to specifically access the standard exceptions
5697      using, for instance, Standard.Constraint_Error when Constraint_Error
5698      is ambiguous (due to the user defining its own Constraint_Error
5699      entity inside its program).  */
5700   if (lookup_name.ada ().standard_p ())
5701     block = NULL;
5702
5703   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5704
5705   if (block != NULL)
5706     {
5707       if (full_search)
5708         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5709       else
5710         {
5711           /* In the !full_search case we're are being called by
5712              ada_iterate_over_symbols, and we don't want to search
5713              superblocks.  */
5714           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5715         }
5716       if (num_defns_collected (obstackp) > 0 || !full_search)
5717         return;
5718     }
5719
5720   /* No non-global symbols found.  Check our cache to see if we have
5721      already performed this search before.  If we have, then return
5722      the same result.  */
5723
5724   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5725                             domain, &sym, &block))
5726     {
5727       if (sym != NULL)
5728         add_defn_to_vec (obstackp, sym, block);
5729       return;
5730     }
5731
5732   if (made_global_lookup_p)
5733     *made_global_lookup_p = 1;
5734
5735   /* Search symbols from all global blocks.  */
5736  
5737   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5738
5739   /* Now add symbols from all per-file blocks if we've gotten no hits
5740      (not strictly correct, but perhaps better than an error).  */
5741
5742   if (num_defns_collected (obstackp) == 0)
5743     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5744 }
5745
5746 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5747    is non-zero, enclosing scope and in global scopes, returning the number of
5748    matches.
5749    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5750    found and the blocks and symbol tables (if any) in which they were
5751    found.
5752
5753    When full_search is non-zero, any non-function/non-enumeral
5754    symbol match within the nest of blocks whose innermost member is BLOCK,
5755    is the one match returned (no other matches in that or
5756    enclosing blocks is returned).  If there are any matches in or
5757    surrounding BLOCK, then these alone are returned.
5758
5759    Names prefixed with "standard__" are handled specially: "standard__"
5760    is first stripped off, and only static and global symbols are searched.  */
5761
5762 static int
5763 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5764                                const struct block *block,
5765                                domain_enum domain,
5766                                std::vector<struct block_symbol> *results,
5767                                int full_search)
5768 {
5769   int syms_from_global_search;
5770   int ndefns;
5771   auto_obstack obstack;
5772
5773   ada_add_all_symbols (&obstack, block, lookup_name,
5774                        domain, full_search, &syms_from_global_search);
5775
5776   ndefns = num_defns_collected (&obstack);
5777
5778   struct block_symbol *base = defns_collected (&obstack, 1);
5779   for (int i = 0; i < ndefns; ++i)
5780     results->push_back (base[i]);
5781
5782   ndefns = remove_extra_symbols (results);
5783
5784   if (ndefns == 0 && full_search && syms_from_global_search)
5785     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5786
5787   if (ndefns == 1 && full_search && syms_from_global_search)
5788     cache_symbol (ada_lookup_name (lookup_name), domain,
5789                   (*results)[0].symbol, (*results)[0].block);
5790
5791   ndefns = remove_irrelevant_renamings (results, block);
5792
5793   return ndefns;
5794 }
5795
5796 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5797    in global scopes, returning the number of matches, and filling *RESULTS
5798    with (SYM,BLOCK) tuples.
5799
5800    See ada_lookup_symbol_list_worker for further details.  */
5801
5802 int
5803 ada_lookup_symbol_list (const char *name, const struct block *block,
5804                         domain_enum domain,
5805                         std::vector<struct block_symbol> *results)
5806 {
5807   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5808   lookup_name_info lookup_name (name, name_match_type);
5809
5810   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5811 }
5812
5813 /* Implementation of the la_iterate_over_symbols method.  */
5814
5815 static void
5816 ada_iterate_over_symbols
5817   (const struct block *block, const lookup_name_info &name,
5818    domain_enum domain,
5819    gdb::function_view<symbol_found_callback_ftype> callback)
5820 {
5821   int ndefs, i;
5822   std::vector<struct block_symbol> results;
5823
5824   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5825
5826   for (i = 0; i < ndefs; ++i)
5827     {
5828       if (!callback (&results[i]))
5829         break;
5830     }
5831 }
5832
5833 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5834    to 1, but choosing the first symbol found if there are multiple
5835    choices.
5836
5837    The result is stored in *INFO, which must be non-NULL.
5838    If no match is found, INFO->SYM is set to NULL.  */
5839
5840 void
5841 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5842                            domain_enum domain,
5843                            struct block_symbol *info)
5844 {
5845   /* Since we already have an encoded name, wrap it in '<>' to force a
5846      verbatim match.  Otherwise, if the name happens to not look like
5847      an encoded name (because it doesn't include a "__"),
5848      ada_lookup_name_info would re-encode/fold it again, and that
5849      would e.g., incorrectly lowercase object renaming names like
5850      "R28b" -> "r28b".  */
5851   std::string verbatim = std::string ("<") + name + '>';
5852
5853   gdb_assert (info != NULL);
5854   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5855 }
5856
5857 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5858    scope and in global scopes, or NULL if none.  NAME is folded and
5859    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5860    choosing the first symbol if there are multiple choices.
5861    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5862
5863 struct block_symbol
5864 ada_lookup_symbol (const char *name, const struct block *block0,
5865                    domain_enum domain, int *is_a_field_of_this)
5866 {
5867   if (is_a_field_of_this != NULL)
5868     *is_a_field_of_this = 0;
5869
5870   std::vector<struct block_symbol> candidates;
5871   int n_candidates;
5872
5873   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5874
5875   if (n_candidates == 0)
5876     return {};
5877
5878   block_symbol info = candidates[0];
5879   info.symbol = fixup_symbol_section (info.symbol, NULL);
5880   return info;
5881 }
5882
5883 static struct block_symbol
5884 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5885                             const char *name,
5886                             const struct block *block,
5887                             const domain_enum domain)
5888 {
5889   struct block_symbol sym;
5890
5891   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5892   if (sym.symbol != NULL)
5893     return sym;
5894
5895   /* If we haven't found a match at this point, try the primitive
5896      types.  In other languages, this search is performed before
5897      searching for global symbols in order to short-circuit that
5898      global-symbol search if it happens that the name corresponds
5899      to a primitive type.  But we cannot do the same in Ada, because
5900      it is perfectly legitimate for a program to declare a type which
5901      has the same name as a standard type.  If looking up a type in
5902      that situation, we have traditionally ignored the primitive type
5903      in favor of user-defined types.  This is why, unlike most other
5904      languages, we search the primitive types this late and only after
5905      having searched the global symbols without success.  */
5906
5907   if (domain == VAR_DOMAIN)
5908     {
5909       struct gdbarch *gdbarch;
5910
5911       if (block == NULL)
5912         gdbarch = target_gdbarch ();
5913       else
5914         gdbarch = block_gdbarch (block);
5915       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5916       if (sym.symbol != NULL)
5917         return sym;
5918     }
5919
5920   return (struct block_symbol) {NULL, NULL};
5921 }
5922
5923
5924 /* True iff STR is a possible encoded suffix of a normal Ada name
5925    that is to be ignored for matching purposes.  Suffixes of parallel
5926    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5927    are given by any of the regular expressions:
5928
5929    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5930    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5931    TKB              [subprogram suffix for task bodies]
5932    _E[0-9]+[bs]$    [protected object entry suffixes]
5933    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5934
5935    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5936    match is performed.  This sequence is used to differentiate homonyms,
5937    is an optional part of a valid name suffix.  */
5938
5939 static int
5940 is_name_suffix (const char *str)
5941 {
5942   int k;
5943   const char *matching;
5944   const int len = strlen (str);
5945
5946   /* Skip optional leading __[0-9]+.  */
5947
5948   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5949     {
5950       str += 3;
5951       while (isdigit (str[0]))
5952         str += 1;
5953     }
5954   
5955   /* [.$][0-9]+ */
5956
5957   if (str[0] == '.' || str[0] == '$')
5958     {
5959       matching = str + 1;
5960       while (isdigit (matching[0]))
5961         matching += 1;
5962       if (matching[0] == '\0')
5963         return 1;
5964     }
5965
5966   /* ___[0-9]+ */
5967
5968   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5969     {
5970       matching = str + 3;
5971       while (isdigit (matching[0]))
5972         matching += 1;
5973       if (matching[0] == '\0')
5974         return 1;
5975     }
5976
5977   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5978
5979   if (strcmp (str, "TKB") == 0)
5980     return 1;
5981
5982 #if 0
5983   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5984      with a N at the end.  Unfortunately, the compiler uses the same
5985      convention for other internal types it creates.  So treating
5986      all entity names that end with an "N" as a name suffix causes
5987      some regressions.  For instance, consider the case of an enumerated
5988      type.  To support the 'Image attribute, it creates an array whose
5989      name ends with N.
5990      Having a single character like this as a suffix carrying some
5991      information is a bit risky.  Perhaps we should change the encoding
5992      to be something like "_N" instead.  In the meantime, do not do
5993      the following check.  */
5994   /* Protected Object Subprograms */
5995   if (len == 1 && str [0] == 'N')
5996     return 1;
5997 #endif
5998
5999   /* _E[0-9]+[bs]$ */
6000   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
6001     {
6002       matching = str + 3;
6003       while (isdigit (matching[0]))
6004         matching += 1;
6005       if ((matching[0] == 'b' || matching[0] == 's')
6006           && matching [1] == '\0')
6007         return 1;
6008     }
6009
6010   /* ??? We should not modify STR directly, as we are doing below.  This
6011      is fine in this case, but may become problematic later if we find
6012      that this alternative did not work, and want to try matching
6013      another one from the begining of STR.  Since we modified it, we
6014      won't be able to find the begining of the string anymore!  */
6015   if (str[0] == 'X')
6016     {
6017       str += 1;
6018       while (str[0] != '_' && str[0] != '\0')
6019         {
6020           if (str[0] != 'n' && str[0] != 'b')
6021             return 0;
6022           str += 1;
6023         }
6024     }
6025
6026   if (str[0] == '\000')
6027     return 1;
6028
6029   if (str[0] == '_')
6030     {
6031       if (str[1] != '_' || str[2] == '\000')
6032         return 0;
6033       if (str[2] == '_')
6034         {
6035           if (strcmp (str + 3, "JM") == 0)
6036             return 1;
6037           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
6038              the LJM suffix in favor of the JM one.  But we will
6039              still accept LJM as a valid suffix for a reasonable
6040              amount of time, just to allow ourselves to debug programs
6041              compiled using an older version of GNAT.  */
6042           if (strcmp (str + 3, "LJM") == 0)
6043             return 1;
6044           if (str[3] != 'X')
6045             return 0;
6046           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
6047               || str[4] == 'U' || str[4] == 'P')
6048             return 1;
6049           if (str[4] == 'R' && str[5] != 'T')
6050             return 1;
6051           return 0;
6052         }
6053       if (!isdigit (str[2]))
6054         return 0;
6055       for (k = 3; str[k] != '\0'; k += 1)
6056         if (!isdigit (str[k]) && str[k] != '_')
6057           return 0;
6058       return 1;
6059     }
6060   if (str[0] == '$' && isdigit (str[1]))
6061     {
6062       for (k = 2; str[k] != '\0'; k += 1)
6063         if (!isdigit (str[k]) && str[k] != '_')
6064           return 0;
6065       return 1;
6066     }
6067   return 0;
6068 }
6069
6070 /* Return non-zero if the string starting at NAME and ending before
6071    NAME_END contains no capital letters.  */
6072
6073 static int
6074 is_valid_name_for_wild_match (const char *name0)
6075 {
6076   const char *decoded_name = ada_decode (name0);
6077   int i;
6078
6079   /* If the decoded name starts with an angle bracket, it means that
6080      NAME0 does not follow the GNAT encoding format.  It should then
6081      not be allowed as a possible wild match.  */
6082   if (decoded_name[0] == '<')
6083     return 0;
6084
6085   for (i=0; decoded_name[i] != '\0'; i++)
6086     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6087       return 0;
6088
6089   return 1;
6090 }
6091
6092 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6093    that could start a simple name.  Assumes that *NAMEP points into
6094    the string beginning at NAME0.  */
6095
6096 static int
6097 advance_wild_match (const char **namep, const char *name0, int target0)
6098 {
6099   const char *name = *namep;
6100
6101   while (1)
6102     {
6103       int t0, t1;
6104
6105       t0 = *name;
6106       if (t0 == '_')
6107         {
6108           t1 = name[1];
6109           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6110             {
6111               name += 1;
6112               if (name == name0 + 5 && startswith (name0, "_ada"))
6113                 break;
6114               else
6115                 name += 1;
6116             }
6117           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6118                                  || name[2] == target0))
6119             {
6120               name += 2;
6121               break;
6122             }
6123           else
6124             return 0;
6125         }
6126       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6127         name += 1;
6128       else
6129         return 0;
6130     }
6131
6132   *namep = name;
6133   return 1;
6134 }
6135
6136 /* Return true iff NAME encodes a name of the form prefix.PATN.
6137    Ignores any informational suffixes of NAME (i.e., for which
6138    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6139    simple name.  */
6140
6141 static bool
6142 wild_match (const char *name, const char *patn)
6143 {
6144   const char *p;
6145   const char *name0 = name;
6146
6147   while (1)
6148     {
6149       const char *match = name;
6150
6151       if (*name == *patn)
6152         {
6153           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6154             if (*p != *name)
6155               break;
6156           if (*p == '\0' && is_name_suffix (name))
6157             return match == name0 || is_valid_name_for_wild_match (name0);
6158
6159           if (name[-1] == '_')
6160             name -= 1;
6161         }
6162       if (!advance_wild_match (&name, name0, *patn))
6163         return false;
6164     }
6165 }
6166
6167 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6168    any trailing suffixes that encode debugging information or leading
6169    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6170    information that is ignored).  */
6171
6172 static bool
6173 full_match (const char *sym_name, const char *search_name)
6174 {
6175   size_t search_name_len = strlen (search_name);
6176
6177   if (strncmp (sym_name, search_name, search_name_len) == 0
6178       && is_name_suffix (sym_name + search_name_len))
6179     return true;
6180
6181   if (startswith (sym_name, "_ada_")
6182       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6183       && is_name_suffix (sym_name + search_name_len + 5))
6184     return true;
6185
6186   return false;
6187 }
6188
6189 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6190    *defn_symbols, updating the list of symbols in OBSTACKP (if
6191    necessary).  OBJFILE is the section containing BLOCK.  */
6192
6193 static void
6194 ada_add_block_symbols (struct obstack *obstackp,
6195                        const struct block *block,
6196                        const lookup_name_info &lookup_name,
6197                        domain_enum domain, struct objfile *objfile)
6198 {
6199   struct block_iterator iter;
6200   /* A matching argument symbol, if any.  */
6201   struct symbol *arg_sym;
6202   /* Set true when we find a matching non-argument symbol.  */
6203   int found_sym;
6204   struct symbol *sym;
6205
6206   arg_sym = NULL;
6207   found_sym = 0;
6208   for (sym = block_iter_match_first (block, lookup_name, &iter);
6209        sym != NULL;
6210        sym = block_iter_match_next (lookup_name, &iter))
6211     {
6212       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6213                                  SYMBOL_DOMAIN (sym), domain))
6214         {
6215           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6216             {
6217               if (SYMBOL_IS_ARGUMENT (sym))
6218                 arg_sym = sym;
6219               else
6220                 {
6221                   found_sym = 1;
6222                   add_defn_to_vec (obstackp,
6223                                    fixup_symbol_section (sym, objfile),
6224                                    block);
6225                 }
6226             }
6227         }
6228     }
6229
6230   /* Handle renamings.  */
6231
6232   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6233     found_sym = 1;
6234
6235   if (!found_sym && arg_sym != NULL)
6236     {
6237       add_defn_to_vec (obstackp,
6238                        fixup_symbol_section (arg_sym, objfile),
6239                        block);
6240     }
6241
6242   if (!lookup_name.ada ().wild_match_p ())
6243     {
6244       arg_sym = NULL;
6245       found_sym = 0;
6246       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6247       const char *name = ada_lookup_name.c_str ();
6248       size_t name_len = ada_lookup_name.size ();
6249
6250       ALL_BLOCK_SYMBOLS (block, iter, sym)
6251       {
6252         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6253                                    SYMBOL_DOMAIN (sym), domain))
6254           {
6255             int cmp;
6256
6257             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6258             if (cmp == 0)
6259               {
6260                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6261                 if (cmp == 0)
6262                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6263                                  name_len);
6264               }
6265
6266             if (cmp == 0
6267                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6268               {
6269                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6270                   {
6271                     if (SYMBOL_IS_ARGUMENT (sym))
6272                       arg_sym = sym;
6273                     else
6274                       {
6275                         found_sym = 1;
6276                         add_defn_to_vec (obstackp,
6277                                          fixup_symbol_section (sym, objfile),
6278                                          block);
6279                       }
6280                   }
6281               }
6282           }
6283       }
6284
6285       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6286          They aren't parameters, right?  */
6287       if (!found_sym && arg_sym != NULL)
6288         {
6289           add_defn_to_vec (obstackp,
6290                            fixup_symbol_section (arg_sym, objfile),
6291                            block);
6292         }
6293     }
6294 }
6295 \f
6296
6297                                 /* Symbol Completion */
6298
6299 /* See symtab.h.  */
6300
6301 bool
6302 ada_lookup_name_info::matches
6303   (const char *sym_name,
6304    symbol_name_match_type match_type,
6305    completion_match_result *comp_match_res) const
6306 {
6307   bool match = false;
6308   const char *text = m_encoded_name.c_str ();
6309   size_t text_len = m_encoded_name.size ();
6310
6311   /* First, test against the fully qualified name of the symbol.  */
6312
6313   if (strncmp (sym_name, text, text_len) == 0)
6314     match = true;
6315
6316   if (match && !m_encoded_p)
6317     {
6318       /* One needed check before declaring a positive match is to verify
6319          that iff we are doing a verbatim match, the decoded version
6320          of the symbol name starts with '<'.  Otherwise, this symbol name
6321          is not a suitable completion.  */
6322       const char *sym_name_copy = sym_name;
6323       bool has_angle_bracket;
6324
6325       sym_name = ada_decode (sym_name);
6326       has_angle_bracket = (sym_name[0] == '<');
6327       match = (has_angle_bracket == m_verbatim_p);
6328       sym_name = sym_name_copy;
6329     }
6330
6331   if (match && !m_verbatim_p)
6332     {
6333       /* When doing non-verbatim match, another check that needs to
6334          be done is to verify that the potentially matching symbol name
6335          does not include capital letters, because the ada-mode would
6336          not be able to understand these symbol names without the
6337          angle bracket notation.  */
6338       const char *tmp;
6339
6340       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6341       if (*tmp != '\0')
6342         match = false;
6343     }
6344
6345   /* Second: Try wild matching...  */
6346
6347   if (!match && m_wild_match_p)
6348     {
6349       /* Since we are doing wild matching, this means that TEXT
6350          may represent an unqualified symbol name.  We therefore must
6351          also compare TEXT against the unqualified name of the symbol.  */
6352       sym_name = ada_unqualified_name (ada_decode (sym_name));
6353
6354       if (strncmp (sym_name, text, text_len) == 0)
6355         match = true;
6356     }
6357
6358   /* Finally: If we found a match, prepare the result to return.  */
6359
6360   if (!match)
6361     return false;
6362
6363   if (comp_match_res != NULL)
6364     {
6365       std::string &match_str = comp_match_res->match.storage ();
6366
6367       if (!m_encoded_p)
6368         match_str = ada_decode (sym_name);
6369       else
6370         {
6371           if (m_verbatim_p)
6372             match_str = add_angle_brackets (sym_name);
6373           else
6374             match_str = sym_name;
6375
6376         }
6377
6378       comp_match_res->set_match (match_str.c_str ());
6379     }
6380
6381   return true;
6382 }
6383
6384 /* Add the list of possible symbol names completing TEXT to TRACKER.
6385    WORD is the entire command on which completion is made.  */
6386
6387 static void
6388 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6389                                        complete_symbol_mode mode,
6390                                        symbol_name_match_type name_match_type,
6391                                        const char *text, const char *word,
6392                                        enum type_code code)
6393 {
6394   struct symbol *sym;
6395   const struct block *b, *surrounding_static_block = 0;
6396   struct block_iterator iter;
6397
6398   gdb_assert (code == TYPE_CODE_UNDEF);
6399
6400   lookup_name_info lookup_name (text, name_match_type, true);
6401
6402   /* First, look at the partial symtab symbols.  */
6403   expand_symtabs_matching (NULL,
6404                            lookup_name,
6405                            NULL,
6406                            NULL,
6407                            ALL_DOMAIN);
6408
6409   /* At this point scan through the misc symbol vectors and add each
6410      symbol you find to the list.  Eventually we want to ignore
6411      anything that isn't a text symbol (everything else will be
6412      handled by the psymtab code above).  */
6413
6414   for (objfile *objfile : current_program_space->objfiles ())
6415     {
6416       for (minimal_symbol *msymbol : objfile->msymbols ())
6417         {
6418           QUIT;
6419
6420           if (completion_skip_symbol (mode, msymbol))
6421             continue;
6422
6423           language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6424
6425           /* Ada minimal symbols won't have their language set to Ada.  If
6426              we let completion_list_add_name compare using the
6427              default/C-like matcher, then when completing e.g., symbols in a
6428              package named "pck", we'd match internal Ada symbols like
6429              "pckS", which are invalid in an Ada expression, unless you wrap
6430              them in '<' '>' to request a verbatim match.
6431
6432              Unfortunately, some Ada encoded names successfully demangle as
6433              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6434              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6435              with the wrong language set.  Paper over that issue here.  */
6436           if (symbol_language == language_auto
6437               || symbol_language == language_cplus)
6438             symbol_language = language_ada;
6439
6440           completion_list_add_name (tracker,
6441                                     symbol_language,
6442                                     MSYMBOL_LINKAGE_NAME (msymbol),
6443                                     lookup_name, text, word);
6444         }
6445     }
6446
6447   /* Search upwards from currently selected frame (so that we can
6448      complete on local vars.  */
6449
6450   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6451     {
6452       if (!BLOCK_SUPERBLOCK (b))
6453         surrounding_static_block = b;   /* For elmin of dups */
6454
6455       ALL_BLOCK_SYMBOLS (b, iter, sym)
6456       {
6457         if (completion_skip_symbol (mode, sym))
6458           continue;
6459
6460         completion_list_add_name (tracker,
6461                                   SYMBOL_LANGUAGE (sym),
6462                                   SYMBOL_LINKAGE_NAME (sym),
6463                                   lookup_name, text, word);
6464       }
6465     }
6466
6467   /* Go through the symtabs and check the externs and statics for
6468      symbols which match.  */
6469
6470   for (objfile *objfile : current_program_space->objfiles ())
6471     {
6472       for (compunit_symtab *s : objfile->compunits ())
6473         {
6474           QUIT;
6475           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6476           ALL_BLOCK_SYMBOLS (b, iter, sym)
6477             {
6478               if (completion_skip_symbol (mode, sym))
6479                 continue;
6480
6481               completion_list_add_name (tracker,
6482                                         SYMBOL_LANGUAGE (sym),
6483                                         SYMBOL_LINKAGE_NAME (sym),
6484                                         lookup_name, text, word);
6485             }
6486         }
6487     }
6488
6489   for (objfile *objfile : current_program_space->objfiles ())
6490     {
6491       for (compunit_symtab *s : objfile->compunits ())
6492         {
6493           QUIT;
6494           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6495           /* Don't do this block twice.  */
6496           if (b == surrounding_static_block)
6497             continue;
6498           ALL_BLOCK_SYMBOLS (b, iter, sym)
6499             {
6500               if (completion_skip_symbol (mode, sym))
6501                 continue;
6502
6503               completion_list_add_name (tracker,
6504                                         SYMBOL_LANGUAGE (sym),
6505                                         SYMBOL_LINKAGE_NAME (sym),
6506                                         lookup_name, text, word);
6507             }
6508         }
6509     }
6510 }
6511
6512                                 /* Field Access */
6513
6514 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6515    for tagged types.  */
6516
6517 static int
6518 ada_is_dispatch_table_ptr_type (struct type *type)
6519 {
6520   const char *name;
6521
6522   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6523     return 0;
6524
6525   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6526   if (name == NULL)
6527     return 0;
6528
6529   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6530 }
6531
6532 /* Return non-zero if TYPE is an interface tag.  */
6533
6534 static int
6535 ada_is_interface_tag (struct type *type)
6536 {
6537   const char *name = TYPE_NAME (type);
6538
6539   if (name == NULL)
6540     return 0;
6541
6542   return (strcmp (name, "ada__tags__interface_tag") == 0);
6543 }
6544
6545 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6546    to be invisible to users.  */
6547
6548 int
6549 ada_is_ignored_field (struct type *type, int field_num)
6550 {
6551   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6552     return 1;
6553
6554   /* Check the name of that field.  */
6555   {
6556     const char *name = TYPE_FIELD_NAME (type, field_num);
6557
6558     /* Anonymous field names should not be printed.
6559        brobecker/2007-02-20: I don't think this can actually happen
6560        but we don't want to print the value of annonymous fields anyway.  */
6561     if (name == NULL)
6562       return 1;
6563
6564     /* Normally, fields whose name start with an underscore ("_")
6565        are fields that have been internally generated by the compiler,
6566        and thus should not be printed.  The "_parent" field is special,
6567        however: This is a field internally generated by the compiler
6568        for tagged types, and it contains the components inherited from
6569        the parent type.  This field should not be printed as is, but
6570        should not be ignored either.  */
6571     if (name[0] == '_' && !startswith (name, "_parent"))
6572       return 1;
6573   }
6574
6575   /* If this is the dispatch table of a tagged type or an interface tag,
6576      then ignore.  */
6577   if (ada_is_tagged_type (type, 1)
6578       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6579           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6580     return 1;
6581
6582   /* Not a special field, so it should not be ignored.  */
6583   return 0;
6584 }
6585
6586 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6587    pointer or reference type whose ultimate target has a tag field.  */
6588
6589 int
6590 ada_is_tagged_type (struct type *type, int refok)
6591 {
6592   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6593 }
6594
6595 /* True iff TYPE represents the type of X'Tag */
6596
6597 int
6598 ada_is_tag_type (struct type *type)
6599 {
6600   type = ada_check_typedef (type);
6601
6602   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6603     return 0;
6604   else
6605     {
6606       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6607
6608       return (name != NULL
6609               && strcmp (name, "ada__tags__dispatch_table") == 0);
6610     }
6611 }
6612
6613 /* The type of the tag on VAL.  */
6614
6615 struct type *
6616 ada_tag_type (struct value *val)
6617 {
6618   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6619 }
6620
6621 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6622    retired at Ada 05).  */
6623
6624 static int
6625 is_ada95_tag (struct value *tag)
6626 {
6627   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6628 }
6629
6630 /* The value of the tag on VAL.  */
6631
6632 struct value *
6633 ada_value_tag (struct value *val)
6634 {
6635   return ada_value_struct_elt (val, "_tag", 0);
6636 }
6637
6638 /* The value of the tag on the object of type TYPE whose contents are
6639    saved at VALADDR, if it is non-null, or is at memory address
6640    ADDRESS.  */
6641
6642 static struct value *
6643 value_tag_from_contents_and_address (struct type *type,
6644                                      const gdb_byte *valaddr,
6645                                      CORE_ADDR address)
6646 {
6647   int tag_byte_offset;
6648   struct type *tag_type;
6649
6650   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6651                          NULL, NULL, NULL))
6652     {
6653       const gdb_byte *valaddr1 = ((valaddr == NULL)
6654                                   ? NULL
6655                                   : valaddr + tag_byte_offset);
6656       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6657
6658       return value_from_contents_and_address (tag_type, valaddr1, address1);
6659     }
6660   return NULL;
6661 }
6662
6663 static struct type *
6664 type_from_tag (struct value *tag)
6665 {
6666   const char *type_name = ada_tag_name (tag);
6667
6668   if (type_name != NULL)
6669     return ada_find_any_type (ada_encode (type_name));
6670   return NULL;
6671 }
6672
6673 /* Given a value OBJ of a tagged type, return a value of this
6674    type at the base address of the object.  The base address, as
6675    defined in Ada.Tags, it is the address of the primary tag of
6676    the object, and therefore where the field values of its full
6677    view can be fetched.  */
6678
6679 struct value *
6680 ada_tag_value_at_base_address (struct value *obj)
6681 {
6682   struct value *val;
6683   LONGEST offset_to_top = 0;
6684   struct type *ptr_type, *obj_type;
6685   struct value *tag;
6686   CORE_ADDR base_address;
6687
6688   obj_type = value_type (obj);
6689
6690   /* It is the responsability of the caller to deref pointers.  */
6691
6692   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6693       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6694     return obj;
6695
6696   tag = ada_value_tag (obj);
6697   if (!tag)
6698     return obj;
6699
6700   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6701
6702   if (is_ada95_tag (tag))
6703     return obj;
6704
6705   ptr_type = language_lookup_primitive_type
6706     (language_def (language_ada), target_gdbarch(), "storage_offset");
6707   ptr_type = lookup_pointer_type (ptr_type);
6708   val = value_cast (ptr_type, tag);
6709   if (!val)
6710     return obj;
6711
6712   /* It is perfectly possible that an exception be raised while
6713      trying to determine the base address, just like for the tag;
6714      see ada_tag_name for more details.  We do not print the error
6715      message for the same reason.  */
6716
6717   TRY
6718     {
6719       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6720     }
6721
6722   CATCH (e, RETURN_MASK_ERROR)
6723     {
6724       return obj;
6725     }
6726   END_CATCH
6727
6728   /* If offset is null, nothing to do.  */
6729
6730   if (offset_to_top == 0)
6731     return obj;
6732
6733   /* -1 is a special case in Ada.Tags; however, what should be done
6734      is not quite clear from the documentation.  So do nothing for
6735      now.  */
6736
6737   if (offset_to_top == -1)
6738     return obj;
6739
6740   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6741      from the base address.  This was however incompatible with
6742      C++ dispatch table: C++ uses a *negative* value to *add*
6743      to the base address.  Ada's convention has therefore been
6744      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6745      use the same convention.  Here, we support both cases by
6746      checking the sign of OFFSET_TO_TOP.  */
6747
6748   if (offset_to_top > 0)
6749     offset_to_top = -offset_to_top;
6750
6751   base_address = value_address (obj) + offset_to_top;
6752   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6753
6754   /* Make sure that we have a proper tag at the new address.
6755      Otherwise, offset_to_top is bogus (which can happen when
6756      the object is not initialized yet).  */
6757
6758   if (!tag)
6759     return obj;
6760
6761   obj_type = type_from_tag (tag);
6762
6763   if (!obj_type)
6764     return obj;
6765
6766   return value_from_contents_and_address (obj_type, NULL, base_address);
6767 }
6768
6769 /* Return the "ada__tags__type_specific_data" type.  */
6770
6771 static struct type *
6772 ada_get_tsd_type (struct inferior *inf)
6773 {
6774   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6775
6776   if (data->tsd_type == 0)
6777     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6778   return data->tsd_type;
6779 }
6780
6781 /* Return the TSD (type-specific data) associated to the given TAG.
6782    TAG is assumed to be the tag of a tagged-type entity.
6783
6784    May return NULL if we are unable to get the TSD.  */
6785
6786 static struct value *
6787 ada_get_tsd_from_tag (struct value *tag)
6788 {
6789   struct value *val;
6790   struct type *type;
6791
6792   /* First option: The TSD is simply stored as a field of our TAG.
6793      Only older versions of GNAT would use this format, but we have
6794      to test it first, because there are no visible markers for
6795      the current approach except the absence of that field.  */
6796
6797   val = ada_value_struct_elt (tag, "tsd", 1);
6798   if (val)
6799     return val;
6800
6801   /* Try the second representation for the dispatch table (in which
6802      there is no explicit 'tsd' field in the referent of the tag pointer,
6803      and instead the tsd pointer is stored just before the dispatch
6804      table.  */
6805
6806   type = ada_get_tsd_type (current_inferior());
6807   if (type == NULL)
6808     return NULL;
6809   type = lookup_pointer_type (lookup_pointer_type (type));
6810   val = value_cast (type, tag);
6811   if (val == NULL)
6812     return NULL;
6813   return value_ind (value_ptradd (val, -1));
6814 }
6815
6816 /* Given the TSD of a tag (type-specific data), return a string
6817    containing the name of the associated type.
6818
6819    The returned value is good until the next call.  May return NULL
6820    if we are unable to determine the tag name.  */
6821
6822 static char *
6823 ada_tag_name_from_tsd (struct value *tsd)
6824 {
6825   static char name[1024];
6826   char *p;
6827   struct value *val;
6828
6829   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6830   if (val == NULL)
6831     return NULL;
6832   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6833   for (p = name; *p != '\0'; p += 1)
6834     if (isalpha (*p))
6835       *p = tolower (*p);
6836   return name;
6837 }
6838
6839 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6840    a C string.
6841
6842    Return NULL if the TAG is not an Ada tag, or if we were unable to
6843    determine the name of that tag.  The result is good until the next
6844    call.  */
6845
6846 const char *
6847 ada_tag_name (struct value *tag)
6848 {
6849   char *name = NULL;
6850
6851   if (!ada_is_tag_type (value_type (tag)))
6852     return NULL;
6853
6854   /* It is perfectly possible that an exception be raised while trying
6855      to determine the TAG's name, even under normal circumstances:
6856      The associated variable may be uninitialized or corrupted, for
6857      instance. We do not let any exception propagate past this point.
6858      instead we return NULL.
6859
6860      We also do not print the error message either (which often is very
6861      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6862      the caller print a more meaningful message if necessary.  */
6863   TRY
6864     {
6865       struct value *tsd = ada_get_tsd_from_tag (tag);
6866
6867       if (tsd != NULL)
6868         name = ada_tag_name_from_tsd (tsd);
6869     }
6870   CATCH (e, RETURN_MASK_ERROR)
6871     {
6872     }
6873   END_CATCH
6874
6875   return name;
6876 }
6877
6878 /* The parent type of TYPE, or NULL if none.  */
6879
6880 struct type *
6881 ada_parent_type (struct type *type)
6882 {
6883   int i;
6884
6885   type = ada_check_typedef (type);
6886
6887   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6888     return NULL;
6889
6890   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6891     if (ada_is_parent_field (type, i))
6892       {
6893         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6894
6895         /* If the _parent field is a pointer, then dereference it.  */
6896         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6897           parent_type = TYPE_TARGET_TYPE (parent_type);
6898         /* If there is a parallel XVS type, get the actual base type.  */
6899         parent_type = ada_get_base_type (parent_type);
6900
6901         return ada_check_typedef (parent_type);
6902       }
6903
6904   return NULL;
6905 }
6906
6907 /* True iff field number FIELD_NUM of structure type TYPE contains the
6908    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6909    a structure type with at least FIELD_NUM+1 fields.  */
6910
6911 int
6912 ada_is_parent_field (struct type *type, int field_num)
6913 {
6914   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6915
6916   return (name != NULL
6917           && (startswith (name, "PARENT")
6918               || startswith (name, "_parent")));
6919 }
6920
6921 /* True iff field number FIELD_NUM of structure type TYPE is a
6922    transparent wrapper field (which should be silently traversed when doing
6923    field selection and flattened when printing).  Assumes TYPE is a
6924    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6925    structures.  */
6926
6927 int
6928 ada_is_wrapper_field (struct type *type, int field_num)
6929 {
6930   const char *name = TYPE_FIELD_NAME (type, field_num);
6931
6932   if (name != NULL && strcmp (name, "RETVAL") == 0)
6933     {
6934       /* This happens in functions with "out" or "in out" parameters
6935          which are passed by copy.  For such functions, GNAT describes
6936          the function's return type as being a struct where the return
6937          value is in a field called RETVAL, and where the other "out"
6938          or "in out" parameters are fields of that struct.  This is not
6939          a wrapper.  */
6940       return 0;
6941     }
6942
6943   return (name != NULL
6944           && (startswith (name, "PARENT")
6945               || strcmp (name, "REP") == 0
6946               || startswith (name, "_parent")
6947               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6948 }
6949
6950 /* True iff field number FIELD_NUM of structure or union type TYPE
6951    is a variant wrapper.  Assumes TYPE is a structure type with at least
6952    FIELD_NUM+1 fields.  */
6953
6954 int
6955 ada_is_variant_part (struct type *type, int field_num)
6956 {
6957   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6958
6959   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6960           || (is_dynamic_field (type, field_num)
6961               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6962                   == TYPE_CODE_UNION)));
6963 }
6964
6965 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6966    whose discriminants are contained in the record type OUTER_TYPE,
6967    returns the type of the controlling discriminant for the variant.
6968    May return NULL if the type could not be found.  */
6969
6970 struct type *
6971 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6972 {
6973   const char *name = ada_variant_discrim_name (var_type);
6974
6975   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6976 }
6977
6978 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6979    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6980    represents a 'when others' clause; otherwise 0.  */
6981
6982 int
6983 ada_is_others_clause (struct type *type, int field_num)
6984 {
6985   const char *name = TYPE_FIELD_NAME (type, field_num);
6986
6987   return (name != NULL && name[0] == 'O');
6988 }
6989
6990 /* Assuming that TYPE0 is the type of the variant part of a record,
6991    returns the name of the discriminant controlling the variant.
6992    The value is valid until the next call to ada_variant_discrim_name.  */
6993
6994 const char *
6995 ada_variant_discrim_name (struct type *type0)
6996 {
6997   static char *result = NULL;
6998   static size_t result_len = 0;
6999   struct type *type;
7000   const char *name;
7001   const char *discrim_end;
7002   const char *discrim_start;
7003
7004   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
7005     type = TYPE_TARGET_TYPE (type0);
7006   else
7007     type = type0;
7008
7009   name = ada_type_name (type);
7010
7011   if (name == NULL || name[0] == '\000')
7012     return "";
7013
7014   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
7015        discrim_end -= 1)
7016     {
7017       if (startswith (discrim_end, "___XVN"))
7018         break;
7019     }
7020   if (discrim_end == name)
7021     return "";
7022
7023   for (discrim_start = discrim_end; discrim_start != name + 3;
7024        discrim_start -= 1)
7025     {
7026       if (discrim_start == name + 1)
7027         return "";
7028       if ((discrim_start > name + 3
7029            && startswith (discrim_start - 3, "___"))
7030           || discrim_start[-1] == '.')
7031         break;
7032     }
7033
7034   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
7035   strncpy (result, discrim_start, discrim_end - discrim_start);
7036   result[discrim_end - discrim_start] = '\0';
7037   return result;
7038 }
7039
7040 /* Scan STR for a subtype-encoded number, beginning at position K.
7041    Put the position of the character just past the number scanned in
7042    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
7043    Return 1 if there was a valid number at the given position, and 0
7044    otherwise.  A "subtype-encoded" number consists of the absolute value
7045    in decimal, followed by the letter 'm' to indicate a negative number.
7046    Assumes 0m does not occur.  */
7047
7048 int
7049 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
7050 {
7051   ULONGEST RU;
7052
7053   if (!isdigit (str[k]))
7054     return 0;
7055
7056   /* Do it the hard way so as not to make any assumption about
7057      the relationship of unsigned long (%lu scan format code) and
7058      LONGEST.  */
7059   RU = 0;
7060   while (isdigit (str[k]))
7061     {
7062       RU = RU * 10 + (str[k] - '0');
7063       k += 1;
7064     }
7065
7066   if (str[k] == 'm')
7067     {
7068       if (R != NULL)
7069         *R = (-(LONGEST) (RU - 1)) - 1;
7070       k += 1;
7071     }
7072   else if (R != NULL)
7073     *R = (LONGEST) RU;
7074
7075   /* NOTE on the above: Technically, C does not say what the results of
7076      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7077      number representable as a LONGEST (although either would probably work
7078      in most implementations).  When RU>0, the locution in the then branch
7079      above is always equivalent to the negative of RU.  */
7080
7081   if (new_k != NULL)
7082     *new_k = k;
7083   return 1;
7084 }
7085
7086 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7087    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7088    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7089
7090 int
7091 ada_in_variant (LONGEST val, struct type *type, int field_num)
7092 {
7093   const char *name = TYPE_FIELD_NAME (type, field_num);
7094   int p;
7095
7096   p = 0;
7097   while (1)
7098     {
7099       switch (name[p])
7100         {
7101         case '\0':
7102           return 0;
7103         case 'S':
7104           {
7105             LONGEST W;
7106
7107             if (!ada_scan_number (name, p + 1, &W, &p))
7108               return 0;
7109             if (val == W)
7110               return 1;
7111             break;
7112           }
7113         case 'R':
7114           {
7115             LONGEST L, U;
7116
7117             if (!ada_scan_number (name, p + 1, &L, &p)
7118                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7119               return 0;
7120             if (val >= L && val <= U)
7121               return 1;
7122             break;
7123           }
7124         case 'O':
7125           return 1;
7126         default:
7127           return 0;
7128         }
7129     }
7130 }
7131
7132 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7133
7134 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7135    ARG_TYPE, extract and return the value of one of its (non-static)
7136    fields.  FIELDNO says which field.   Differs from value_primitive_field
7137    only in that it can handle packed values of arbitrary type.  */
7138
7139 static struct value *
7140 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7141                            struct type *arg_type)
7142 {
7143   struct type *type;
7144
7145   arg_type = ada_check_typedef (arg_type);
7146   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7147
7148   /* Handle packed fields.  */
7149
7150   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
7151     {
7152       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7153       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7154
7155       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7156                                              offset + bit_pos / 8,
7157                                              bit_pos % 8, bit_size, type);
7158     }
7159   else
7160     return value_primitive_field (arg1, offset, fieldno, arg_type);
7161 }
7162
7163 /* Find field with name NAME in object of type TYPE.  If found, 
7164    set the following for each argument that is non-null:
7165     - *FIELD_TYPE_P to the field's type; 
7166     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7167       an object of that type;
7168     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7169     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7170       0 otherwise;
7171    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7172    fields up to but not including the desired field, or by the total
7173    number of fields if not found.   A NULL value of NAME never
7174    matches; the function just counts visible fields in this case.
7175    
7176    Notice that we need to handle when a tagged record hierarchy
7177    has some components with the same name, like in this scenario:
7178
7179       type Top_T is tagged record
7180          N : Integer := 1;
7181          U : Integer := 974;
7182          A : Integer := 48;
7183       end record;
7184
7185       type Middle_T is new Top.Top_T with record
7186          N : Character := 'a';
7187          C : Integer := 3;
7188       end record;
7189
7190      type Bottom_T is new Middle.Middle_T with record
7191         N : Float := 4.0;
7192         C : Character := '5';
7193         X : Integer := 6;
7194         A : Character := 'J';
7195      end record;
7196
7197    Let's say we now have a variable declared and initialized as follow:
7198
7199      TC : Top_A := new Bottom_T;
7200
7201    And then we use this variable to call this function
7202
7203      procedure Assign (Obj: in out Top_T; TV : Integer);
7204
7205    as follow:
7206
7207       Assign (Top_T (B), 12);
7208
7209    Now, we're in the debugger, and we're inside that procedure
7210    then and we want to print the value of obj.c:
7211
7212    Usually, the tagged record or one of the parent type owns the
7213    component to print and there's no issue but in this particular
7214    case, what does it mean to ask for Obj.C? Since the actual
7215    type for object is type Bottom_T, it could mean two things: type
7216    component C from the Middle_T view, but also component C from
7217    Bottom_T.  So in that "undefined" case, when the component is
7218    not found in the non-resolved type (which includes all the
7219    components of the parent type), then resolve it and see if we
7220    get better luck once expanded.
7221
7222    In the case of homonyms in the derived tagged type, we don't
7223    guaranty anything, and pick the one that's easiest for us
7224    to program.
7225
7226    Returns 1 if found, 0 otherwise.  */
7227
7228 static int
7229 find_struct_field (const char *name, struct type *type, int offset,
7230                    struct type **field_type_p,
7231                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7232                    int *index_p)
7233 {
7234   int i;
7235   int parent_offset = -1;
7236
7237   type = ada_check_typedef (type);
7238
7239   if (field_type_p != NULL)
7240     *field_type_p = NULL;
7241   if (byte_offset_p != NULL)
7242     *byte_offset_p = 0;
7243   if (bit_offset_p != NULL)
7244     *bit_offset_p = 0;
7245   if (bit_size_p != NULL)
7246     *bit_size_p = 0;
7247
7248   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7249     {
7250       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7251       int fld_offset = offset + bit_pos / 8;
7252       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7253
7254       if (t_field_name == NULL)
7255         continue;
7256
7257       else if (ada_is_parent_field (type, i))
7258         {
7259           /* This is a field pointing us to the parent type of a tagged
7260              type.  As hinted in this function's documentation, we give
7261              preference to fields in the current record first, so what
7262              we do here is just record the index of this field before
7263              we skip it.  If it turns out we couldn't find our field
7264              in the current record, then we'll get back to it and search
7265              inside it whether the field might exist in the parent.  */
7266
7267           parent_offset = i;
7268           continue;
7269         }
7270
7271       else if (name != NULL && field_name_match (t_field_name, name))
7272         {
7273           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7274
7275           if (field_type_p != NULL)
7276             *field_type_p = TYPE_FIELD_TYPE (type, i);
7277           if (byte_offset_p != NULL)
7278             *byte_offset_p = fld_offset;
7279           if (bit_offset_p != NULL)
7280             *bit_offset_p = bit_pos % 8;
7281           if (bit_size_p != NULL)
7282             *bit_size_p = bit_size;
7283           return 1;
7284         }
7285       else if (ada_is_wrapper_field (type, i))
7286         {
7287           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7288                                  field_type_p, byte_offset_p, bit_offset_p,
7289                                  bit_size_p, index_p))
7290             return 1;
7291         }
7292       else if (ada_is_variant_part (type, i))
7293         {
7294           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7295              fixed type?? */
7296           int j;
7297           struct type *field_type
7298             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7299
7300           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7301             {
7302               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7303                                      fld_offset
7304                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7305                                      field_type_p, byte_offset_p,
7306                                      bit_offset_p, bit_size_p, index_p))
7307                 return 1;
7308             }
7309         }
7310       else if (index_p != NULL)
7311         *index_p += 1;
7312     }
7313
7314   /* Field not found so far.  If this is a tagged type which
7315      has a parent, try finding that field in the parent now.  */
7316
7317   if (parent_offset != -1)
7318     {
7319       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7320       int fld_offset = offset + bit_pos / 8;
7321
7322       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7323                              fld_offset, field_type_p, byte_offset_p,
7324                              bit_offset_p, bit_size_p, index_p))
7325         return 1;
7326     }
7327
7328   return 0;
7329 }
7330
7331 /* Number of user-visible fields in record type TYPE.  */
7332
7333 static int
7334 num_visible_fields (struct type *type)
7335 {
7336   int n;
7337
7338   n = 0;
7339   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7340   return n;
7341 }
7342
7343 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7344    and search in it assuming it has (class) type TYPE.
7345    If found, return value, else return NULL.
7346
7347    Searches recursively through wrapper fields (e.g., '_parent').
7348
7349    In the case of homonyms in the tagged types, please refer to the
7350    long explanation in find_struct_field's function documentation.  */
7351
7352 static struct value *
7353 ada_search_struct_field (const char *name, struct value *arg, int offset,
7354                          struct type *type)
7355 {
7356   int i;
7357   int parent_offset = -1;
7358
7359   type = ada_check_typedef (type);
7360   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7361     {
7362       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7363
7364       if (t_field_name == NULL)
7365         continue;
7366
7367       else if (ada_is_parent_field (type, i))
7368         {
7369           /* This is a field pointing us to the parent type of a tagged
7370              type.  As hinted in this function's documentation, we give
7371              preference to fields in the current record first, so what
7372              we do here is just record the index of this field before
7373              we skip it.  If it turns out we couldn't find our field
7374              in the current record, then we'll get back to it and search
7375              inside it whether the field might exist in the parent.  */
7376
7377           parent_offset = i;
7378           continue;
7379         }
7380
7381       else if (field_name_match (t_field_name, name))
7382         return ada_value_primitive_field (arg, offset, i, type);
7383
7384       else if (ada_is_wrapper_field (type, i))
7385         {
7386           struct value *v =     /* Do not let indent join lines here.  */
7387             ada_search_struct_field (name, arg,
7388                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7389                                      TYPE_FIELD_TYPE (type, i));
7390
7391           if (v != NULL)
7392             return v;
7393         }
7394
7395       else if (ada_is_variant_part (type, i))
7396         {
7397           /* PNH: Do we ever get here?  See find_struct_field.  */
7398           int j;
7399           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7400                                                                         i));
7401           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7402
7403           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7404             {
7405               struct value *v = ada_search_struct_field /* Force line
7406                                                            break.  */
7407                 (name, arg,
7408                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7409                  TYPE_FIELD_TYPE (field_type, j));
7410
7411               if (v != NULL)
7412                 return v;
7413             }
7414         }
7415     }
7416
7417   /* Field not found so far.  If this is a tagged type which
7418      has a parent, try finding that field in the parent now.  */
7419
7420   if (parent_offset != -1)
7421     {
7422       struct value *v = ada_search_struct_field (
7423         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7424         TYPE_FIELD_TYPE (type, parent_offset));
7425
7426       if (v != NULL)
7427         return v;
7428     }
7429
7430   return NULL;
7431 }
7432
7433 static struct value *ada_index_struct_field_1 (int *, struct value *,
7434                                                int, struct type *);
7435
7436
7437 /* Return field #INDEX in ARG, where the index is that returned by
7438  * find_struct_field through its INDEX_P argument.  Adjust the address
7439  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7440  * If found, return value, else return NULL.  */
7441
7442 static struct value *
7443 ada_index_struct_field (int index, struct value *arg, int offset,
7444                         struct type *type)
7445 {
7446   return ada_index_struct_field_1 (&index, arg, offset, type);
7447 }
7448
7449
7450 /* Auxiliary function for ada_index_struct_field.  Like
7451  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7452  * *INDEX_P.  */
7453
7454 static struct value *
7455 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7456                           struct type *type)
7457 {
7458   int i;
7459   type = ada_check_typedef (type);
7460
7461   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7462     {
7463       if (TYPE_FIELD_NAME (type, i) == NULL)
7464         continue;
7465       else if (ada_is_wrapper_field (type, i))
7466         {
7467           struct value *v =     /* Do not let indent join lines here.  */
7468             ada_index_struct_field_1 (index_p, arg,
7469                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7470                                       TYPE_FIELD_TYPE (type, i));
7471
7472           if (v != NULL)
7473             return v;
7474         }
7475
7476       else if (ada_is_variant_part (type, i))
7477         {
7478           /* PNH: Do we ever get here?  See ada_search_struct_field,
7479              find_struct_field.  */
7480           error (_("Cannot assign this kind of variant record"));
7481         }
7482       else if (*index_p == 0)
7483         return ada_value_primitive_field (arg, offset, i, type);
7484       else
7485         *index_p -= 1;
7486     }
7487   return NULL;
7488 }
7489
7490 /* Given ARG, a value of type (pointer or reference to a)*
7491    structure/union, extract the component named NAME from the ultimate
7492    target structure/union and return it as a value with its
7493    appropriate type.
7494
7495    The routine searches for NAME among all members of the structure itself
7496    and (recursively) among all members of any wrapper members
7497    (e.g., '_parent').
7498
7499    If NO_ERR, then simply return NULL in case of error, rather than 
7500    calling error.  */
7501
7502 struct value *
7503 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7504 {
7505   struct type *t, *t1;
7506   struct value *v;
7507   int check_tag;
7508
7509   v = NULL;
7510   t1 = t = ada_check_typedef (value_type (arg));
7511   if (TYPE_CODE (t) == TYPE_CODE_REF)
7512     {
7513       t1 = TYPE_TARGET_TYPE (t);
7514       if (t1 == NULL)
7515         goto BadValue;
7516       t1 = ada_check_typedef (t1);
7517       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7518         {
7519           arg = coerce_ref (arg);
7520           t = t1;
7521         }
7522     }
7523
7524   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7525     {
7526       t1 = TYPE_TARGET_TYPE (t);
7527       if (t1 == NULL)
7528         goto BadValue;
7529       t1 = ada_check_typedef (t1);
7530       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7531         {
7532           arg = value_ind (arg);
7533           t = t1;
7534         }
7535       else
7536         break;
7537     }
7538
7539   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7540     goto BadValue;
7541
7542   if (t1 == t)
7543     v = ada_search_struct_field (name, arg, 0, t);
7544   else
7545     {
7546       int bit_offset, bit_size, byte_offset;
7547       struct type *field_type;
7548       CORE_ADDR address;
7549
7550       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7551         address = value_address (ada_value_ind (arg));
7552       else
7553         address = value_address (ada_coerce_ref (arg));
7554
7555       /* Check to see if this is a tagged type.  We also need to handle
7556          the case where the type is a reference to a tagged type, but
7557          we have to be careful to exclude pointers to tagged types.
7558          The latter should be shown as usual (as a pointer), whereas
7559          a reference should mostly be transparent to the user.  */
7560
7561       if (ada_is_tagged_type (t1, 0)
7562           || (TYPE_CODE (t1) == TYPE_CODE_REF
7563               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7564         {
7565           /* We first try to find the searched field in the current type.
7566              If not found then let's look in the fixed type.  */
7567
7568           if (!find_struct_field (name, t1, 0,
7569                                   &field_type, &byte_offset, &bit_offset,
7570                                   &bit_size, NULL))
7571             check_tag = 1;
7572           else
7573             check_tag = 0;
7574         }
7575       else
7576         check_tag = 0;
7577
7578       /* Convert to fixed type in all cases, so that we have proper
7579          offsets to each field in unconstrained record types.  */
7580       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7581                               address, NULL, check_tag);
7582
7583       if (find_struct_field (name, t1, 0,
7584                              &field_type, &byte_offset, &bit_offset,
7585                              &bit_size, NULL))
7586         {
7587           if (bit_size != 0)
7588             {
7589               if (TYPE_CODE (t) == TYPE_CODE_REF)
7590                 arg = ada_coerce_ref (arg);
7591               else
7592                 arg = ada_value_ind (arg);
7593               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7594                                                   bit_offset, bit_size,
7595                                                   field_type);
7596             }
7597           else
7598             v = value_at_lazy (field_type, address + byte_offset);
7599         }
7600     }
7601
7602   if (v != NULL || no_err)
7603     return v;
7604   else
7605     error (_("There is no member named %s."), name);
7606
7607  BadValue:
7608   if (no_err)
7609     return NULL;
7610   else
7611     error (_("Attempt to extract a component of "
7612              "a value that is not a record."));
7613 }
7614
7615 /* Return a string representation of type TYPE.  */
7616
7617 static std::string
7618 type_as_string (struct type *type)
7619 {
7620   string_file tmp_stream;
7621
7622   type_print (type, "", &tmp_stream, -1);
7623
7624   return std::move (tmp_stream.string ());
7625 }
7626
7627 /* Given a type TYPE, look up the type of the component of type named NAME.
7628    If DISPP is non-null, add its byte displacement from the beginning of a
7629    structure (pointed to by a value) of type TYPE to *DISPP (does not
7630    work for packed fields).
7631
7632    Matches any field whose name has NAME as a prefix, possibly
7633    followed by "___".
7634
7635    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7636    be a (pointer or reference)+ to a struct or union, and the
7637    ultimate target type will be searched.
7638
7639    Looks recursively into variant clauses and parent types.
7640
7641    In the case of homonyms in the tagged types, please refer to the
7642    long explanation in find_struct_field's function documentation.
7643
7644    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7645    TYPE is not a type of the right kind.  */
7646
7647 static struct type *
7648 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7649                             int noerr)
7650 {
7651   int i;
7652   int parent_offset = -1;
7653
7654   if (name == NULL)
7655     goto BadName;
7656
7657   if (refok && type != NULL)
7658     while (1)
7659       {
7660         type = ada_check_typedef (type);
7661         if (TYPE_CODE (type) != TYPE_CODE_PTR
7662             && TYPE_CODE (type) != TYPE_CODE_REF)
7663           break;
7664         type = TYPE_TARGET_TYPE (type);
7665       }
7666
7667   if (type == NULL
7668       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7669           && TYPE_CODE (type) != TYPE_CODE_UNION))
7670     {
7671       if (noerr)
7672         return NULL;
7673
7674       error (_("Type %s is not a structure or union type"),
7675              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7676     }
7677
7678   type = to_static_fixed_type (type);
7679
7680   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7681     {
7682       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7683       struct type *t;
7684
7685       if (t_field_name == NULL)
7686         continue;
7687
7688       else if (ada_is_parent_field (type, i))
7689         {
7690           /* This is a field pointing us to the parent type of a tagged
7691              type.  As hinted in this function's documentation, we give
7692              preference to fields in the current record first, so what
7693              we do here is just record the index of this field before
7694              we skip it.  If it turns out we couldn't find our field
7695              in the current record, then we'll get back to it and search
7696              inside it whether the field might exist in the parent.  */
7697
7698           parent_offset = i;
7699           continue;
7700         }
7701
7702       else if (field_name_match (t_field_name, name))
7703         return TYPE_FIELD_TYPE (type, i);
7704
7705       else if (ada_is_wrapper_field (type, i))
7706         {
7707           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7708                                           0, 1);
7709           if (t != NULL)
7710             return t;
7711         }
7712
7713       else if (ada_is_variant_part (type, i))
7714         {
7715           int j;
7716           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7717                                                                         i));
7718
7719           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7720             {
7721               /* FIXME pnh 2008/01/26: We check for a field that is
7722                  NOT wrapped in a struct, since the compiler sometimes
7723                  generates these for unchecked variant types.  Revisit
7724                  if the compiler changes this practice.  */
7725               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7726
7727               if (v_field_name != NULL 
7728                   && field_name_match (v_field_name, name))
7729                 t = TYPE_FIELD_TYPE (field_type, j);
7730               else
7731                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7732                                                                  j),
7733                                                 name, 0, 1);
7734
7735               if (t != NULL)
7736                 return t;
7737             }
7738         }
7739
7740     }
7741
7742     /* Field not found so far.  If this is a tagged type which
7743        has a parent, try finding that field in the parent now.  */
7744
7745     if (parent_offset != -1)
7746       {
7747         struct type *t;
7748
7749         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7750                                         name, 0, 1);
7751         if (t != NULL)
7752           return t;
7753       }
7754
7755 BadName:
7756   if (!noerr)
7757     {
7758       const char *name_str = name != NULL ? name : _("<null>");
7759
7760       error (_("Type %s has no component named %s"),
7761              type_as_string (type).c_str (), name_str);
7762     }
7763
7764   return NULL;
7765 }
7766
7767 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7768    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7769    represents an unchecked union (that is, the variant part of a
7770    record that is named in an Unchecked_Union pragma).  */
7771
7772 static int
7773 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7774 {
7775   const char *discrim_name = ada_variant_discrim_name (var_type);
7776
7777   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7778 }
7779
7780
7781 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7782    within a value of type OUTER_TYPE that is stored in GDB at
7783    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7784    numbering from 0) is applicable.  Returns -1 if none are.  */
7785
7786 int
7787 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7788                            const gdb_byte *outer_valaddr)
7789 {
7790   int others_clause;
7791   int i;
7792   const char *discrim_name = ada_variant_discrim_name (var_type);
7793   struct value *outer;
7794   struct value *discrim;
7795   LONGEST discrim_val;
7796
7797   /* Using plain value_from_contents_and_address here causes problems
7798      because we will end up trying to resolve a type that is currently
7799      being constructed.  */
7800   outer = value_from_contents_and_address_unresolved (outer_type,
7801                                                       outer_valaddr, 0);
7802   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7803   if (discrim == NULL)
7804     return -1;
7805   discrim_val = value_as_long (discrim);
7806
7807   others_clause = -1;
7808   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7809     {
7810       if (ada_is_others_clause (var_type, i))
7811         others_clause = i;
7812       else if (ada_in_variant (discrim_val, var_type, i))
7813         return i;
7814     }
7815
7816   return others_clause;
7817 }
7818 \f
7819
7820
7821                                 /* Dynamic-Sized Records */
7822
7823 /* Strategy: The type ostensibly attached to a value with dynamic size
7824    (i.e., a size that is not statically recorded in the debugging
7825    data) does not accurately reflect the size or layout of the value.
7826    Our strategy is to convert these values to values with accurate,
7827    conventional types that are constructed on the fly.  */
7828
7829 /* There is a subtle and tricky problem here.  In general, we cannot
7830    determine the size of dynamic records without its data.  However,
7831    the 'struct value' data structure, which GDB uses to represent
7832    quantities in the inferior process (the target), requires the size
7833    of the type at the time of its allocation in order to reserve space
7834    for GDB's internal copy of the data.  That's why the
7835    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7836    rather than struct value*s.
7837
7838    However, GDB's internal history variables ($1, $2, etc.) are
7839    struct value*s containing internal copies of the data that are not, in
7840    general, the same as the data at their corresponding addresses in
7841    the target.  Fortunately, the types we give to these values are all
7842    conventional, fixed-size types (as per the strategy described
7843    above), so that we don't usually have to perform the
7844    'to_fixed_xxx_type' conversions to look at their values.
7845    Unfortunately, there is one exception: if one of the internal
7846    history variables is an array whose elements are unconstrained
7847    records, then we will need to create distinct fixed types for each
7848    element selected.  */
7849
7850 /* The upshot of all of this is that many routines take a (type, host
7851    address, target address) triple as arguments to represent a value.
7852    The host address, if non-null, is supposed to contain an internal
7853    copy of the relevant data; otherwise, the program is to consult the
7854    target at the target address.  */
7855
7856 /* Assuming that VAL0 represents a pointer value, the result of
7857    dereferencing it.  Differs from value_ind in its treatment of
7858    dynamic-sized types.  */
7859
7860 struct value *
7861 ada_value_ind (struct value *val0)
7862 {
7863   struct value *val = value_ind (val0);
7864
7865   if (ada_is_tagged_type (value_type (val), 0))
7866     val = ada_tag_value_at_base_address (val);
7867
7868   return ada_to_fixed_value (val);
7869 }
7870
7871 /* The value resulting from dereferencing any "reference to"
7872    qualifiers on VAL0.  */
7873
7874 static struct value *
7875 ada_coerce_ref (struct value *val0)
7876 {
7877   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7878     {
7879       struct value *val = val0;
7880
7881       val = coerce_ref (val);
7882
7883       if (ada_is_tagged_type (value_type (val), 0))
7884         val = ada_tag_value_at_base_address (val);
7885
7886       return ada_to_fixed_value (val);
7887     }
7888   else
7889     return val0;
7890 }
7891
7892 /* Return OFF rounded upward if necessary to a multiple of
7893    ALIGNMENT (a power of 2).  */
7894
7895 static unsigned int
7896 align_value (unsigned int off, unsigned int alignment)
7897 {
7898   return (off + alignment - 1) & ~(alignment - 1);
7899 }
7900
7901 /* Return the bit alignment required for field #F of template type TYPE.  */
7902
7903 static unsigned int
7904 field_alignment (struct type *type, int f)
7905 {
7906   const char *name = TYPE_FIELD_NAME (type, f);
7907   int len;
7908   int align_offset;
7909
7910   /* The field name should never be null, unless the debugging information
7911      is somehow malformed.  In this case, we assume the field does not
7912      require any alignment.  */
7913   if (name == NULL)
7914     return 1;
7915
7916   len = strlen (name);
7917
7918   if (!isdigit (name[len - 1]))
7919     return 1;
7920
7921   if (isdigit (name[len - 2]))
7922     align_offset = len - 2;
7923   else
7924     align_offset = len - 1;
7925
7926   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7927     return TARGET_CHAR_BIT;
7928
7929   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7930 }
7931
7932 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7933
7934 static struct symbol *
7935 ada_find_any_type_symbol (const char *name)
7936 {
7937   struct symbol *sym;
7938
7939   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7940   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7941     return sym;
7942
7943   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7944   return sym;
7945 }
7946
7947 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7948    solely for types defined by debug info, it will not search the GDB
7949    primitive types.  */
7950
7951 static struct type *
7952 ada_find_any_type (const char *name)
7953 {
7954   struct symbol *sym = ada_find_any_type_symbol (name);
7955
7956   if (sym != NULL)
7957     return SYMBOL_TYPE (sym);
7958
7959   return NULL;
7960 }
7961
7962 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7963    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7964    symbol, in which case it is returned.  Otherwise, this looks for
7965    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7966    Return symbol if found, and NULL otherwise.  */
7967
7968 struct symbol *
7969 ada_find_renaming_symbol (struct symbol *name_sym, const struct block *block)
7970 {
7971   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7972   struct symbol *sym;
7973
7974   if (strstr (name, "___XR") != NULL)
7975      return name_sym;
7976
7977   sym = find_old_style_renaming_symbol (name, block);
7978
7979   if (sym != NULL)
7980     return sym;
7981
7982   /* Not right yet.  FIXME pnh 7/20/2007.  */
7983   sym = ada_find_any_type_symbol (name);
7984   if (sym != NULL && strstr (SYMBOL_LINKAGE_NAME (sym), "___XR") != NULL)
7985     return sym;
7986   else
7987     return NULL;
7988 }
7989
7990 static struct symbol *
7991 find_old_style_renaming_symbol (const char *name, const struct block *block)
7992 {
7993   const struct symbol *function_sym = block_linkage_function (block);
7994   char *rename;
7995
7996   if (function_sym != NULL)
7997     {
7998       /* If the symbol is defined inside a function, NAME is not fully
7999          qualified.  This means we need to prepend the function name
8000          as well as adding the ``___XR'' suffix to build the name of
8001          the associated renaming symbol.  */
8002       const char *function_name = SYMBOL_LINKAGE_NAME (function_sym);
8003       /* Function names sometimes contain suffixes used
8004          for instance to qualify nested subprograms.  When building
8005          the XR type name, we need to make sure that this suffix is
8006          not included.  So do not include any suffix in the function
8007          name length below.  */
8008       int function_name_len = ada_name_prefix_len (function_name);
8009       const int rename_len = function_name_len + 2      /*  "__" */
8010         + strlen (name) + 6 /* "___XR\0" */ ;
8011
8012       /* Strip the suffix if necessary.  */
8013       ada_remove_trailing_digits (function_name, &function_name_len);
8014       ada_remove_po_subprogram_suffix (function_name, &function_name_len);
8015       ada_remove_Xbn_suffix (function_name, &function_name_len);
8016
8017       /* Library-level functions are a special case, as GNAT adds
8018          a ``_ada_'' prefix to the function name to avoid namespace
8019          pollution.  However, the renaming symbols themselves do not
8020          have this prefix, so we need to skip this prefix if present.  */
8021       if (function_name_len > 5 /* "_ada_" */
8022           && strstr (function_name, "_ada_") == function_name)
8023         {
8024           function_name += 5;
8025           function_name_len -= 5;
8026         }
8027
8028       rename = (char *) alloca (rename_len * sizeof (char));
8029       strncpy (rename, function_name, function_name_len);
8030       xsnprintf (rename + function_name_len, rename_len - function_name_len,
8031                  "__%s___XR", name);
8032     }
8033   else
8034     {
8035       const int rename_len = strlen (name) + 6;
8036
8037       rename = (char *) alloca (rename_len * sizeof (char));
8038       xsnprintf (rename, rename_len * sizeof (char), "%s___XR", name);
8039     }
8040
8041   return ada_find_any_type_symbol (rename);
8042 }
8043
8044 /* Because of GNAT encoding conventions, several GDB symbols may match a
8045    given type name.  If the type denoted by TYPE0 is to be preferred to
8046    that of TYPE1 for purposes of type printing, return non-zero;
8047    otherwise return 0.  */
8048
8049 int
8050 ada_prefer_type (struct type *type0, struct type *type1)
8051 {
8052   if (type1 == NULL)
8053     return 1;
8054   else if (type0 == NULL)
8055     return 0;
8056   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
8057     return 1;
8058   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
8059     return 0;
8060   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
8061     return 1;
8062   else if (ada_is_constrained_packed_array_type (type0))
8063     return 1;
8064   else if (ada_is_array_descriptor_type (type0)
8065            && !ada_is_array_descriptor_type (type1))
8066     return 1;
8067   else
8068     {
8069       const char *type0_name = TYPE_NAME (type0);
8070       const char *type1_name = TYPE_NAME (type1);
8071
8072       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
8073           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
8074         return 1;
8075     }
8076   return 0;
8077 }
8078
8079 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
8080    null.  */
8081
8082 const char *
8083 ada_type_name (struct type *type)
8084 {
8085   if (type == NULL)
8086     return NULL;
8087   return TYPE_NAME (type);
8088 }
8089
8090 /* Search the list of "descriptive" types associated to TYPE for a type
8091    whose name is NAME.  */
8092
8093 static struct type *
8094 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
8095 {
8096   struct type *result, *tmp;
8097
8098   if (ada_ignore_descriptive_types_p)
8099     return NULL;
8100
8101   /* If there no descriptive-type info, then there is no parallel type
8102      to be found.  */
8103   if (!HAVE_GNAT_AUX_INFO (type))
8104     return NULL;
8105
8106   result = TYPE_DESCRIPTIVE_TYPE (type);
8107   while (result != NULL)
8108     {
8109       const char *result_name = ada_type_name (result);
8110
8111       if (result_name == NULL)
8112         {
8113           warning (_("unexpected null name on descriptive type"));
8114           return NULL;
8115         }
8116
8117       /* If the names match, stop.  */
8118       if (strcmp (result_name, name) == 0)
8119         break;
8120
8121       /* Otherwise, look at the next item on the list, if any.  */
8122       if (HAVE_GNAT_AUX_INFO (result))
8123         tmp = TYPE_DESCRIPTIVE_TYPE (result);
8124       else
8125         tmp = NULL;
8126
8127       /* If not found either, try after having resolved the typedef.  */
8128       if (tmp != NULL)
8129         result = tmp;
8130       else
8131         {
8132           result = check_typedef (result);
8133           if (HAVE_GNAT_AUX_INFO (result))
8134             result = TYPE_DESCRIPTIVE_TYPE (result);
8135           else
8136             result = NULL;
8137         }
8138     }
8139
8140   /* If we didn't find a match, see whether this is a packed array.  With
8141      older compilers, the descriptive type information is either absent or
8142      irrelevant when it comes to packed arrays so the above lookup fails.
8143      Fall back to using a parallel lookup by name in this case.  */
8144   if (result == NULL && ada_is_constrained_packed_array_type (type))
8145     return ada_find_any_type (name);
8146
8147   return result;
8148 }
8149
8150 /* Find a parallel type to TYPE with the specified NAME, using the
8151    descriptive type taken from the debugging information, if available,
8152    and otherwise using the (slower) name-based method.  */
8153
8154 static struct type *
8155 ada_find_parallel_type_with_name (struct type *type, const char *name)
8156 {
8157   struct type *result = NULL;
8158
8159   if (HAVE_GNAT_AUX_INFO (type))
8160     result = find_parallel_type_by_descriptive_type (type, name);
8161   else
8162     result = ada_find_any_type (name);
8163
8164   return result;
8165 }
8166
8167 /* Same as above, but specify the name of the parallel type by appending
8168    SUFFIX to the name of TYPE.  */
8169
8170 struct type *
8171 ada_find_parallel_type (struct type *type, const char *suffix)
8172 {
8173   char *name;
8174   const char *type_name = ada_type_name (type);
8175   int len;
8176
8177   if (type_name == NULL)
8178     return NULL;
8179
8180   len = strlen (type_name);
8181
8182   name = (char *) alloca (len + strlen (suffix) + 1);
8183
8184   strcpy (name, type_name);
8185   strcpy (name + len, suffix);
8186
8187   return ada_find_parallel_type_with_name (type, name);
8188 }
8189
8190 /* If TYPE is a variable-size record type, return the corresponding template
8191    type describing its fields.  Otherwise, return NULL.  */
8192
8193 static struct type *
8194 dynamic_template_type (struct type *type)
8195 {
8196   type = ada_check_typedef (type);
8197
8198   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8199       || ada_type_name (type) == NULL)
8200     return NULL;
8201   else
8202     {
8203       int len = strlen (ada_type_name (type));
8204
8205       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8206         return type;
8207       else
8208         return ada_find_parallel_type (type, "___XVE");
8209     }
8210 }
8211
8212 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8213    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8214
8215 static int
8216 is_dynamic_field (struct type *templ_type, int field_num)
8217 {
8218   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8219
8220   return name != NULL
8221     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8222     && strstr (name, "___XVL") != NULL;
8223 }
8224
8225 /* The index of the variant field of TYPE, or -1 if TYPE does not
8226    represent a variant record type.  */
8227
8228 static int
8229 variant_field_index (struct type *type)
8230 {
8231   int f;
8232
8233   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8234     return -1;
8235
8236   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8237     {
8238       if (ada_is_variant_part (type, f))
8239         return f;
8240     }
8241   return -1;
8242 }
8243
8244 /* A record type with no fields.  */
8245
8246 static struct type *
8247 empty_record (struct type *templ)
8248 {
8249   struct type *type = alloc_type_copy (templ);
8250
8251   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8252   TYPE_NFIELDS (type) = 0;
8253   TYPE_FIELDS (type) = NULL;
8254   INIT_CPLUS_SPECIFIC (type);
8255   TYPE_NAME (type) = "<empty>";
8256   TYPE_LENGTH (type) = 0;
8257   return type;
8258 }
8259
8260 /* An ordinary record type (with fixed-length fields) that describes
8261    the value of type TYPE at VALADDR or ADDRESS (see comments at
8262    the beginning of this section) VAL according to GNAT conventions.
8263    DVAL0 should describe the (portion of a) record that contains any
8264    necessary discriminants.  It should be NULL if value_type (VAL) is
8265    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8266    variant field (unless unchecked) is replaced by a particular branch
8267    of the variant.
8268
8269    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8270    length are not statically known are discarded.  As a consequence,
8271    VALADDR, ADDRESS and DVAL0 are ignored.
8272
8273    NOTE: Limitations: For now, we assume that dynamic fields and
8274    variants occupy whole numbers of bytes.  However, they need not be
8275    byte-aligned.  */
8276
8277 struct type *
8278 ada_template_to_fixed_record_type_1 (struct type *type,
8279                                      const gdb_byte *valaddr,
8280                                      CORE_ADDR address, struct value *dval0,
8281                                      int keep_dynamic_fields)
8282 {
8283   struct value *mark = value_mark ();
8284   struct value *dval;
8285   struct type *rtype;
8286   int nfields, bit_len;
8287   int variant_field;
8288   long off;
8289   int fld_bit_len;
8290   int f;
8291
8292   /* Compute the number of fields in this record type that are going
8293      to be processed: unless keep_dynamic_fields, this includes only
8294      fields whose position and length are static will be processed.  */
8295   if (keep_dynamic_fields)
8296     nfields = TYPE_NFIELDS (type);
8297   else
8298     {
8299       nfields = 0;
8300       while (nfields < TYPE_NFIELDS (type)
8301              && !ada_is_variant_part (type, nfields)
8302              && !is_dynamic_field (type, nfields))
8303         nfields++;
8304     }
8305
8306   rtype = alloc_type_copy (type);
8307   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8308   INIT_CPLUS_SPECIFIC (rtype);
8309   TYPE_NFIELDS (rtype) = nfields;
8310   TYPE_FIELDS (rtype) = (struct field *)
8311     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8312   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8313   TYPE_NAME (rtype) = ada_type_name (type);
8314   TYPE_FIXED_INSTANCE (rtype) = 1;
8315
8316   off = 0;
8317   bit_len = 0;
8318   variant_field = -1;
8319
8320   for (f = 0; f < nfields; f += 1)
8321     {
8322       off = align_value (off, field_alignment (type, f))
8323         + TYPE_FIELD_BITPOS (type, f);
8324       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8325       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8326
8327       if (ada_is_variant_part (type, f))
8328         {
8329           variant_field = f;
8330           fld_bit_len = 0;
8331         }
8332       else if (is_dynamic_field (type, f))
8333         {
8334           const gdb_byte *field_valaddr = valaddr;
8335           CORE_ADDR field_address = address;
8336           struct type *field_type =
8337             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8338
8339           if (dval0 == NULL)
8340             {
8341               /* rtype's length is computed based on the run-time
8342                  value of discriminants.  If the discriminants are not
8343                  initialized, the type size may be completely bogus and
8344                  GDB may fail to allocate a value for it.  So check the
8345                  size first before creating the value.  */
8346               ada_ensure_varsize_limit (rtype);
8347               /* Using plain value_from_contents_and_address here
8348                  causes problems because we will end up trying to
8349                  resolve a type that is currently being
8350                  constructed.  */
8351               dval = value_from_contents_and_address_unresolved (rtype,
8352                                                                  valaddr,
8353                                                                  address);
8354               rtype = value_type (dval);
8355             }
8356           else
8357             dval = dval0;
8358
8359           /* If the type referenced by this field is an aligner type, we need
8360              to unwrap that aligner type, because its size might not be set.
8361              Keeping the aligner type would cause us to compute the wrong
8362              size for this field, impacting the offset of the all the fields
8363              that follow this one.  */
8364           if (ada_is_aligner_type (field_type))
8365             {
8366               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8367
8368               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8369               field_address = cond_offset_target (field_address, field_offset);
8370               field_type = ada_aligned_type (field_type);
8371             }
8372
8373           field_valaddr = cond_offset_host (field_valaddr,
8374                                             off / TARGET_CHAR_BIT);
8375           field_address = cond_offset_target (field_address,
8376                                               off / TARGET_CHAR_BIT);
8377
8378           /* Get the fixed type of the field.  Note that, in this case,
8379              we do not want to get the real type out of the tag: if
8380              the current field is the parent part of a tagged record,
8381              we will get the tag of the object.  Clearly wrong: the real
8382              type of the parent is not the real type of the child.  We
8383              would end up in an infinite loop.  */
8384           field_type = ada_get_base_type (field_type);
8385           field_type = ada_to_fixed_type (field_type, field_valaddr,
8386                                           field_address, dval, 0);
8387           /* If the field size is already larger than the maximum
8388              object size, then the record itself will necessarily
8389              be larger than the maximum object size.  We need to make
8390              this check now, because the size might be so ridiculously
8391              large (due to an uninitialized variable in the inferior)
8392              that it would cause an overflow when adding it to the
8393              record size.  */
8394           ada_ensure_varsize_limit (field_type);
8395
8396           TYPE_FIELD_TYPE (rtype, f) = field_type;
8397           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8398           /* The multiplication can potentially overflow.  But because
8399              the field length has been size-checked just above, and
8400              assuming that the maximum size is a reasonable value,
8401              an overflow should not happen in practice.  So rather than
8402              adding overflow recovery code to this already complex code,
8403              we just assume that it's not going to happen.  */
8404           fld_bit_len =
8405             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8406         }
8407       else
8408         {
8409           /* Note: If this field's type is a typedef, it is important
8410              to preserve the typedef layer.
8411
8412              Otherwise, we might be transforming a typedef to a fat
8413              pointer (encoding a pointer to an unconstrained array),
8414              into a basic fat pointer (encoding an unconstrained
8415              array).  As both types are implemented using the same
8416              structure, the typedef is the only clue which allows us
8417              to distinguish between the two options.  Stripping it
8418              would prevent us from printing this field appropriately.  */
8419           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8420           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8421           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8422             fld_bit_len =
8423               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8424           else
8425             {
8426               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8427
8428               /* We need to be careful of typedefs when computing
8429                  the length of our field.  If this is a typedef,
8430                  get the length of the target type, not the length
8431                  of the typedef.  */
8432               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8433                 field_type = ada_typedef_target_type (field_type);
8434
8435               fld_bit_len =
8436                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8437             }
8438         }
8439       if (off + fld_bit_len > bit_len)
8440         bit_len = off + fld_bit_len;
8441       off += fld_bit_len;
8442       TYPE_LENGTH (rtype) =
8443         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8444     }
8445
8446   /* We handle the variant part, if any, at the end because of certain
8447      odd cases in which it is re-ordered so as NOT to be the last field of
8448      the record.  This can happen in the presence of representation
8449      clauses.  */
8450   if (variant_field >= 0)
8451     {
8452       struct type *branch_type;
8453
8454       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8455
8456       if (dval0 == NULL)
8457         {
8458           /* Using plain value_from_contents_and_address here causes
8459              problems because we will end up trying to resolve a type
8460              that is currently being constructed.  */
8461           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8462                                                              address);
8463           rtype = value_type (dval);
8464         }
8465       else
8466         dval = dval0;
8467
8468       branch_type =
8469         to_fixed_variant_branch_type
8470         (TYPE_FIELD_TYPE (type, variant_field),
8471          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8472          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8473       if (branch_type == NULL)
8474         {
8475           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8476             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8477           TYPE_NFIELDS (rtype) -= 1;
8478         }
8479       else
8480         {
8481           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8482           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8483           fld_bit_len =
8484             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8485             TARGET_CHAR_BIT;
8486           if (off + fld_bit_len > bit_len)
8487             bit_len = off + fld_bit_len;
8488           TYPE_LENGTH (rtype) =
8489             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8490         }
8491     }
8492
8493   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8494      should contain the alignment of that record, which should be a strictly
8495      positive value.  If null or negative, then something is wrong, most
8496      probably in the debug info.  In that case, we don't round up the size
8497      of the resulting type.  If this record is not part of another structure,
8498      the current RTYPE length might be good enough for our purposes.  */
8499   if (TYPE_LENGTH (type) <= 0)
8500     {
8501       if (TYPE_NAME (rtype))
8502         warning (_("Invalid type size for `%s' detected: %d."),
8503                  TYPE_NAME (rtype), TYPE_LENGTH (type));
8504       else
8505         warning (_("Invalid type size for <unnamed> detected: %d."),
8506                  TYPE_LENGTH (type));
8507     }
8508   else
8509     {
8510       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8511                                          TYPE_LENGTH (type));
8512     }
8513
8514   value_free_to_mark (mark);
8515   if (TYPE_LENGTH (rtype) > varsize_limit)
8516     error (_("record type with dynamic size is larger than varsize-limit"));
8517   return rtype;
8518 }
8519
8520 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8521    of 1.  */
8522
8523 static struct type *
8524 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8525                                CORE_ADDR address, struct value *dval0)
8526 {
8527   return ada_template_to_fixed_record_type_1 (type, valaddr,
8528                                               address, dval0, 1);
8529 }
8530
8531 /* An ordinary record type in which ___XVL-convention fields and
8532    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8533    static approximations, containing all possible fields.  Uses
8534    no runtime values.  Useless for use in values, but that's OK,
8535    since the results are used only for type determinations.   Works on both
8536    structs and unions.  Representation note: to save space, we memorize
8537    the result of this function in the TYPE_TARGET_TYPE of the
8538    template type.  */
8539
8540 static struct type *
8541 template_to_static_fixed_type (struct type *type0)
8542 {
8543   struct type *type;
8544   int nfields;
8545   int f;
8546
8547   /* No need no do anything if the input type is already fixed.  */
8548   if (TYPE_FIXED_INSTANCE (type0))
8549     return type0;
8550
8551   /* Likewise if we already have computed the static approximation.  */
8552   if (TYPE_TARGET_TYPE (type0) != NULL)
8553     return TYPE_TARGET_TYPE (type0);
8554
8555   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8556   type = type0;
8557   nfields = TYPE_NFIELDS (type0);
8558
8559   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8560      recompute all over next time.  */
8561   TYPE_TARGET_TYPE (type0) = type;
8562
8563   for (f = 0; f < nfields; f += 1)
8564     {
8565       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8566       struct type *new_type;
8567
8568       if (is_dynamic_field (type0, f))
8569         {
8570           field_type = ada_check_typedef (field_type);
8571           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8572         }
8573       else
8574         new_type = static_unwrap_type (field_type);
8575
8576       if (new_type != field_type)
8577         {
8578           /* Clone TYPE0 only the first time we get a new field type.  */
8579           if (type == type0)
8580             {
8581               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8582               TYPE_CODE (type) = TYPE_CODE (type0);
8583               INIT_CPLUS_SPECIFIC (type);
8584               TYPE_NFIELDS (type) = nfields;
8585               TYPE_FIELDS (type) = (struct field *)
8586                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8587               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8588                       sizeof (struct field) * nfields);
8589               TYPE_NAME (type) = ada_type_name (type0);
8590               TYPE_FIXED_INSTANCE (type) = 1;
8591               TYPE_LENGTH (type) = 0;
8592             }
8593           TYPE_FIELD_TYPE (type, f) = new_type;
8594           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8595         }
8596     }
8597
8598   return type;
8599 }
8600
8601 /* Given an object of type TYPE whose contents are at VALADDR and
8602    whose address in memory is ADDRESS, returns a revision of TYPE,
8603    which should be a non-dynamic-sized record, in which the variant
8604    part, if any, is replaced with the appropriate branch.  Looks
8605    for discriminant values in DVAL0, which can be NULL if the record
8606    contains the necessary discriminant values.  */
8607
8608 static struct type *
8609 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8610                                    CORE_ADDR address, struct value *dval0)
8611 {
8612   struct value *mark = value_mark ();
8613   struct value *dval;
8614   struct type *rtype;
8615   struct type *branch_type;
8616   int nfields = TYPE_NFIELDS (type);
8617   int variant_field = variant_field_index (type);
8618
8619   if (variant_field == -1)
8620     return type;
8621
8622   if (dval0 == NULL)
8623     {
8624       dval = value_from_contents_and_address (type, valaddr, address);
8625       type = value_type (dval);
8626     }
8627   else
8628     dval = dval0;
8629
8630   rtype = alloc_type_copy (type);
8631   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8632   INIT_CPLUS_SPECIFIC (rtype);
8633   TYPE_NFIELDS (rtype) = nfields;
8634   TYPE_FIELDS (rtype) =
8635     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8636   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8637           sizeof (struct field) * nfields);
8638   TYPE_NAME (rtype) = ada_type_name (type);
8639   TYPE_FIXED_INSTANCE (rtype) = 1;
8640   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8641
8642   branch_type = to_fixed_variant_branch_type
8643     (TYPE_FIELD_TYPE (type, variant_field),
8644      cond_offset_host (valaddr,
8645                        TYPE_FIELD_BITPOS (type, variant_field)
8646                        / TARGET_CHAR_BIT),
8647      cond_offset_target (address,
8648                          TYPE_FIELD_BITPOS (type, variant_field)
8649                          / TARGET_CHAR_BIT), dval);
8650   if (branch_type == NULL)
8651     {
8652       int f;
8653
8654       for (f = variant_field + 1; f < nfields; f += 1)
8655         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8656       TYPE_NFIELDS (rtype) -= 1;
8657     }
8658   else
8659     {
8660       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8661       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8662       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8663       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8664     }
8665   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8666
8667   value_free_to_mark (mark);
8668   return rtype;
8669 }
8670
8671 /* An ordinary record type (with fixed-length fields) that describes
8672    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8673    beginning of this section].   Any necessary discriminants' values
8674    should be in DVAL, a record value; it may be NULL if the object
8675    at ADDR itself contains any necessary discriminant values.
8676    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8677    values from the record are needed.  Except in the case that DVAL,
8678    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8679    unchecked) is replaced by a particular branch of the variant.
8680
8681    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8682    is questionable and may be removed.  It can arise during the
8683    processing of an unconstrained-array-of-record type where all the
8684    variant branches have exactly the same size.  This is because in
8685    such cases, the compiler does not bother to use the XVS convention
8686    when encoding the record.  I am currently dubious of this
8687    shortcut and suspect the compiler should be altered.  FIXME.  */
8688
8689 static struct type *
8690 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8691                       CORE_ADDR address, struct value *dval)
8692 {
8693   struct type *templ_type;
8694
8695   if (TYPE_FIXED_INSTANCE (type0))
8696     return type0;
8697
8698   templ_type = dynamic_template_type (type0);
8699
8700   if (templ_type != NULL)
8701     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8702   else if (variant_field_index (type0) >= 0)
8703     {
8704       if (dval == NULL && valaddr == NULL && address == 0)
8705         return type0;
8706       return to_record_with_fixed_variant_part (type0, valaddr, address,
8707                                                 dval);
8708     }
8709   else
8710     {
8711       TYPE_FIXED_INSTANCE (type0) = 1;
8712       return type0;
8713     }
8714
8715 }
8716
8717 /* An ordinary record type (with fixed-length fields) that describes
8718    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8719    union type.  Any necessary discriminants' values should be in DVAL,
8720    a record value.  That is, this routine selects the appropriate
8721    branch of the union at ADDR according to the discriminant value
8722    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8723    it represents a variant subject to a pragma Unchecked_Union.  */
8724
8725 static struct type *
8726 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8727                               CORE_ADDR address, struct value *dval)
8728 {
8729   int which;
8730   struct type *templ_type;
8731   struct type *var_type;
8732
8733   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8734     var_type = TYPE_TARGET_TYPE (var_type0);
8735   else
8736     var_type = var_type0;
8737
8738   templ_type = ada_find_parallel_type (var_type, "___XVU");
8739
8740   if (templ_type != NULL)
8741     var_type = templ_type;
8742
8743   if (is_unchecked_variant (var_type, value_type (dval)))
8744       return var_type0;
8745   which =
8746     ada_which_variant_applies (var_type,
8747                                value_type (dval), value_contents (dval));
8748
8749   if (which < 0)
8750     return empty_record (var_type);
8751   else if (is_dynamic_field (var_type, which))
8752     return to_fixed_record_type
8753       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8754        valaddr, address, dval);
8755   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8756     return
8757       to_fixed_record_type
8758       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8759   else
8760     return TYPE_FIELD_TYPE (var_type, which);
8761 }
8762
8763 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8764    ENCODING_TYPE, a type following the GNAT conventions for discrete
8765    type encodings, only carries redundant information.  */
8766
8767 static int
8768 ada_is_redundant_range_encoding (struct type *range_type,
8769                                  struct type *encoding_type)
8770 {
8771   const char *bounds_str;
8772   int n;
8773   LONGEST lo, hi;
8774
8775   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8776
8777   if (TYPE_CODE (get_base_type (range_type))
8778       != TYPE_CODE (get_base_type (encoding_type)))
8779     {
8780       /* The compiler probably used a simple base type to describe
8781          the range type instead of the range's actual base type,
8782          expecting us to get the real base type from the encoding
8783          anyway.  In this situation, the encoding cannot be ignored
8784          as redundant.  */
8785       return 0;
8786     }
8787
8788   if (is_dynamic_type (range_type))
8789     return 0;
8790
8791   if (TYPE_NAME (encoding_type) == NULL)
8792     return 0;
8793
8794   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8795   if (bounds_str == NULL)
8796     return 0;
8797
8798   n = 8; /* Skip "___XDLU_".  */
8799   if (!ada_scan_number (bounds_str, n, &lo, &n))
8800     return 0;
8801   if (TYPE_LOW_BOUND (range_type) != lo)
8802     return 0;
8803
8804   n += 2; /* Skip the "__" separator between the two bounds.  */
8805   if (!ada_scan_number (bounds_str, n, &hi, &n))
8806     return 0;
8807   if (TYPE_HIGH_BOUND (range_type) != hi)
8808     return 0;
8809
8810   return 1;
8811 }
8812
8813 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8814    a type following the GNAT encoding for describing array type
8815    indices, only carries redundant information.  */
8816
8817 static int
8818 ada_is_redundant_index_type_desc (struct type *array_type,
8819                                   struct type *desc_type)
8820 {
8821   struct type *this_layer = check_typedef (array_type);
8822   int i;
8823
8824   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8825     {
8826       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8827                                             TYPE_FIELD_TYPE (desc_type, i)))
8828         return 0;
8829       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8830     }
8831
8832   return 1;
8833 }
8834
8835 /* Assuming that TYPE0 is an array type describing the type of a value
8836    at ADDR, and that DVAL describes a record containing any
8837    discriminants used in TYPE0, returns a type for the value that
8838    contains no dynamic components (that is, no components whose sizes
8839    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8840    true, gives an error message if the resulting type's size is over
8841    varsize_limit.  */
8842
8843 static struct type *
8844 to_fixed_array_type (struct type *type0, struct value *dval,
8845                      int ignore_too_big)
8846 {
8847   struct type *index_type_desc;
8848   struct type *result;
8849   int constrained_packed_array_p;
8850   static const char *xa_suffix = "___XA";
8851
8852   type0 = ada_check_typedef (type0);
8853   if (TYPE_FIXED_INSTANCE (type0))
8854     return type0;
8855
8856   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8857   if (constrained_packed_array_p)
8858     type0 = decode_constrained_packed_array_type (type0);
8859
8860   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8861
8862   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8863      encoding suffixed with 'P' may still be generated.  If so,
8864      it should be used to find the XA type.  */
8865
8866   if (index_type_desc == NULL)
8867     {
8868       const char *type_name = ada_type_name (type0);
8869
8870       if (type_name != NULL)
8871         {
8872           const int len = strlen (type_name);
8873           char *name = (char *) alloca (len + strlen (xa_suffix));
8874
8875           if (type_name[len - 1] == 'P')
8876             {
8877               strcpy (name, type_name);
8878               strcpy (name + len - 1, xa_suffix);
8879               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8880             }
8881         }
8882     }
8883
8884   ada_fixup_array_indexes_type (index_type_desc);
8885   if (index_type_desc != NULL
8886       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8887     {
8888       /* Ignore this ___XA parallel type, as it does not bring any
8889          useful information.  This allows us to avoid creating fixed
8890          versions of the array's index types, which would be identical
8891          to the original ones.  This, in turn, can also help avoid
8892          the creation of fixed versions of the array itself.  */
8893       index_type_desc = NULL;
8894     }
8895
8896   if (index_type_desc == NULL)
8897     {
8898       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8899
8900       /* NOTE: elt_type---the fixed version of elt_type0---should never
8901          depend on the contents of the array in properly constructed
8902          debugging data.  */
8903       /* Create a fixed version of the array element type.
8904          We're not providing the address of an element here,
8905          and thus the actual object value cannot be inspected to do
8906          the conversion.  This should not be a problem, since arrays of
8907          unconstrained objects are not allowed.  In particular, all
8908          the elements of an array of a tagged type should all be of
8909          the same type specified in the debugging info.  No need to
8910          consult the object tag.  */
8911       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8912
8913       /* Make sure we always create a new array type when dealing with
8914          packed array types, since we're going to fix-up the array
8915          type length and element bitsize a little further down.  */
8916       if (elt_type0 == elt_type && !constrained_packed_array_p)
8917         result = type0;
8918       else
8919         result = create_array_type (alloc_type_copy (type0),
8920                                     elt_type, TYPE_INDEX_TYPE (type0));
8921     }
8922   else
8923     {
8924       int i;
8925       struct type *elt_type0;
8926
8927       elt_type0 = type0;
8928       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8929         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8930
8931       /* NOTE: result---the fixed version of elt_type0---should never
8932          depend on the contents of the array in properly constructed
8933          debugging data.  */
8934       /* Create a fixed version of the array element type.
8935          We're not providing the address of an element here,
8936          and thus the actual object value cannot be inspected to do
8937          the conversion.  This should not be a problem, since arrays of
8938          unconstrained objects are not allowed.  In particular, all
8939          the elements of an array of a tagged type should all be of
8940          the same type specified in the debugging info.  No need to
8941          consult the object tag.  */
8942       result =
8943         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8944
8945       elt_type0 = type0;
8946       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8947         {
8948           struct type *range_type =
8949             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8950
8951           result = create_array_type (alloc_type_copy (elt_type0),
8952                                       result, range_type);
8953           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8954         }
8955       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8956         error (_("array type with dynamic size is larger than varsize-limit"));
8957     }
8958
8959   /* We want to preserve the type name.  This can be useful when
8960      trying to get the type name of a value that has already been
8961      printed (for instance, if the user did "print VAR; whatis $".  */
8962   TYPE_NAME (result) = TYPE_NAME (type0);
8963
8964   if (constrained_packed_array_p)
8965     {
8966       /* So far, the resulting type has been created as if the original
8967          type was a regular (non-packed) array type.  As a result, the
8968          bitsize of the array elements needs to be set again, and the array
8969          length needs to be recomputed based on that bitsize.  */
8970       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8971       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8972
8973       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8974       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8975       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8976         TYPE_LENGTH (result)++;
8977     }
8978
8979   TYPE_FIXED_INSTANCE (result) = 1;
8980   return result;
8981 }
8982
8983
8984 /* A standard type (containing no dynamically sized components)
8985    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8986    DVAL describes a record containing any discriminants used in TYPE0,
8987    and may be NULL if there are none, or if the object of type TYPE at
8988    ADDRESS or in VALADDR contains these discriminants.
8989    
8990    If CHECK_TAG is not null, in the case of tagged types, this function
8991    attempts to locate the object's tag and use it to compute the actual
8992    type.  However, when ADDRESS is null, we cannot use it to determine the
8993    location of the tag, and therefore compute the tagged type's actual type.
8994    So we return the tagged type without consulting the tag.  */
8995    
8996 static struct type *
8997 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8998                    CORE_ADDR address, struct value *dval, int check_tag)
8999 {
9000   type = ada_check_typedef (type);
9001   switch (TYPE_CODE (type))
9002     {
9003     default:
9004       return type;
9005     case TYPE_CODE_STRUCT:
9006       {
9007         struct type *static_type = to_static_fixed_type (type);
9008         struct type *fixed_record_type =
9009           to_fixed_record_type (type, valaddr, address, NULL);
9010
9011         /* If STATIC_TYPE is a tagged type and we know the object's address,
9012            then we can determine its tag, and compute the object's actual
9013            type from there.  Note that we have to use the fixed record
9014            type (the parent part of the record may have dynamic fields
9015            and the way the location of _tag is expressed may depend on
9016            them).  */
9017
9018         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
9019           {
9020             struct value *tag =
9021               value_tag_from_contents_and_address
9022               (fixed_record_type,
9023                valaddr,
9024                address);
9025             struct type *real_type = type_from_tag (tag);
9026             struct value *obj =
9027               value_from_contents_and_address (fixed_record_type,
9028                                                valaddr,
9029                                                address);
9030             fixed_record_type = value_type (obj);
9031             if (real_type != NULL)
9032               return to_fixed_record_type
9033                 (real_type, NULL,
9034                  value_address (ada_tag_value_at_base_address (obj)), NULL);
9035           }
9036
9037         /* Check to see if there is a parallel ___XVZ variable.
9038            If there is, then it provides the actual size of our type.  */
9039         else if (ada_type_name (fixed_record_type) != NULL)
9040           {
9041             const char *name = ada_type_name (fixed_record_type);
9042             char *xvz_name
9043               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
9044             bool xvz_found = false;
9045             LONGEST size;
9046
9047             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
9048             TRY
9049               {
9050                 xvz_found = get_int_var_value (xvz_name, size);
9051               }
9052             CATCH (except, RETURN_MASK_ERROR)
9053               {
9054                 /* We found the variable, but somehow failed to read
9055                    its value.  Rethrow the same error, but with a little
9056                    bit more information, to help the user understand
9057                    what went wrong (Eg: the variable might have been
9058                    optimized out).  */
9059                 throw_error (except.error,
9060                              _("unable to read value of %s (%s)"),
9061                              xvz_name, except.message);
9062               }
9063             END_CATCH
9064
9065             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
9066               {
9067                 fixed_record_type = copy_type (fixed_record_type);
9068                 TYPE_LENGTH (fixed_record_type) = size;
9069
9070                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
9071                    observed this when the debugging info is STABS, and
9072                    apparently it is something that is hard to fix.
9073
9074                    In practice, we don't need the actual type definition
9075                    at all, because the presence of the XVZ variable allows us
9076                    to assume that there must be a XVS type as well, which we
9077                    should be able to use later, when we need the actual type
9078                    definition.
9079
9080                    In the meantime, pretend that the "fixed" type we are
9081                    returning is NOT a stub, because this can cause trouble
9082                    when using this type to create new types targeting it.
9083                    Indeed, the associated creation routines often check
9084                    whether the target type is a stub and will try to replace
9085                    it, thus using a type with the wrong size.  This, in turn,
9086                    might cause the new type to have the wrong size too.
9087                    Consider the case of an array, for instance, where the size
9088                    of the array is computed from the number of elements in
9089                    our array multiplied by the size of its element.  */
9090                 TYPE_STUB (fixed_record_type) = 0;
9091               }
9092           }
9093         return fixed_record_type;
9094       }
9095     case TYPE_CODE_ARRAY:
9096       return to_fixed_array_type (type, dval, 1);
9097     case TYPE_CODE_UNION:
9098       if (dval == NULL)
9099         return type;
9100       else
9101         return to_fixed_variant_branch_type (type, valaddr, address, dval);
9102     }
9103 }
9104
9105 /* The same as ada_to_fixed_type_1, except that it preserves the type
9106    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
9107
9108    The typedef layer needs be preserved in order to differentiate between
9109    arrays and array pointers when both types are implemented using the same
9110    fat pointer.  In the array pointer case, the pointer is encoded as
9111    a typedef of the pointer type.  For instance, considering:
9112
9113           type String_Access is access String;
9114           S1 : String_Access := null;
9115
9116    To the debugger, S1 is defined as a typedef of type String.  But
9117    to the user, it is a pointer.  So if the user tries to print S1,
9118    we should not dereference the array, but print the array address
9119    instead.
9120
9121    If we didn't preserve the typedef layer, we would lose the fact that
9122    the type is to be presented as a pointer (needs de-reference before
9123    being printed).  And we would also use the source-level type name.  */
9124
9125 struct type *
9126 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
9127                    CORE_ADDR address, struct value *dval, int check_tag)
9128
9129 {
9130   struct type *fixed_type =
9131     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
9132
9133   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
9134       then preserve the typedef layer.
9135
9136       Implementation note: We can only check the main-type portion of
9137       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9138       from TYPE now returns a type that has the same instance flags
9139       as TYPE.  For instance, if TYPE is a "typedef const", and its
9140       target type is a "struct", then the typedef elimination will return
9141       a "const" version of the target type.  See check_typedef for more
9142       details about how the typedef layer elimination is done.
9143
9144       brobecker/2010-11-19: It seems to me that the only case where it is
9145       useful to preserve the typedef layer is when dealing with fat pointers.
9146       Perhaps, we could add a check for that and preserve the typedef layer
9147       only in that situation.  But this seems unecessary so far, probably
9148       because we call check_typedef/ada_check_typedef pretty much everywhere.
9149       */
9150   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9151       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9152           == TYPE_MAIN_TYPE (fixed_type)))
9153     return type;
9154
9155   return fixed_type;
9156 }
9157
9158 /* A standard (static-sized) type corresponding as well as possible to
9159    TYPE0, but based on no runtime data.  */
9160
9161 static struct type *
9162 to_static_fixed_type (struct type *type0)
9163 {
9164   struct type *type;
9165
9166   if (type0 == NULL)
9167     return NULL;
9168
9169   if (TYPE_FIXED_INSTANCE (type0))
9170     return type0;
9171
9172   type0 = ada_check_typedef (type0);
9173
9174   switch (TYPE_CODE (type0))
9175     {
9176     default:
9177       return type0;
9178     case TYPE_CODE_STRUCT:
9179       type = dynamic_template_type (type0);
9180       if (type != NULL)
9181         return template_to_static_fixed_type (type);
9182       else
9183         return template_to_static_fixed_type (type0);
9184     case TYPE_CODE_UNION:
9185       type = ada_find_parallel_type (type0, "___XVU");
9186       if (type != NULL)
9187         return template_to_static_fixed_type (type);
9188       else
9189         return template_to_static_fixed_type (type0);
9190     }
9191 }
9192
9193 /* A static approximation of TYPE with all type wrappers removed.  */
9194
9195 static struct type *
9196 static_unwrap_type (struct type *type)
9197 {
9198   if (ada_is_aligner_type (type))
9199     {
9200       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9201       if (ada_type_name (type1) == NULL)
9202         TYPE_NAME (type1) = ada_type_name (type);
9203
9204       return static_unwrap_type (type1);
9205     }
9206   else
9207     {
9208       struct type *raw_real_type = ada_get_base_type (type);
9209
9210       if (raw_real_type == type)
9211         return type;
9212       else
9213         return to_static_fixed_type (raw_real_type);
9214     }
9215 }
9216
9217 /* In some cases, incomplete and private types require
9218    cross-references that are not resolved as records (for example,
9219       type Foo;
9220       type FooP is access Foo;
9221       V: FooP;
9222       type Foo is array ...;
9223    ).  In these cases, since there is no mechanism for producing
9224    cross-references to such types, we instead substitute for FooP a
9225    stub enumeration type that is nowhere resolved, and whose tag is
9226    the name of the actual type.  Call these types "non-record stubs".  */
9227
9228 /* A type equivalent to TYPE that is not a non-record stub, if one
9229    exists, otherwise TYPE.  */
9230
9231 struct type *
9232 ada_check_typedef (struct type *type)
9233 {
9234   if (type == NULL)
9235     return NULL;
9236
9237   /* If our type is an access to an unconstrained array, which is encoded
9238      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9239      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9240      what allows us to distinguish between fat pointers that represent
9241      array types, and fat pointers that represent array access types
9242      (in both cases, the compiler implements them as fat pointers).  */
9243   if (ada_is_access_to_unconstrained_array (type))
9244     return type;
9245
9246   type = check_typedef (type);
9247   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9248       || !TYPE_STUB (type)
9249       || TYPE_NAME (type) == NULL)
9250     return type;
9251   else
9252     {
9253       const char *name = TYPE_NAME (type);
9254       struct type *type1 = ada_find_any_type (name);
9255
9256       if (type1 == NULL)
9257         return type;
9258
9259       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9260          stubs pointing to arrays, as we don't create symbols for array
9261          types, only for the typedef-to-array types).  If that's the case,
9262          strip the typedef layer.  */
9263       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9264         type1 = ada_check_typedef (type1);
9265
9266       return type1;
9267     }
9268 }
9269
9270 /* A value representing the data at VALADDR/ADDRESS as described by
9271    type TYPE0, but with a standard (static-sized) type that correctly
9272    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9273    type, then return VAL0 [this feature is simply to avoid redundant
9274    creation of struct values].  */
9275
9276 static struct value *
9277 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9278                            struct value *val0)
9279 {
9280   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9281
9282   if (type == type0 && val0 != NULL)
9283     return val0;
9284
9285   if (VALUE_LVAL (val0) != lval_memory)
9286     {
9287       /* Our value does not live in memory; it could be a convenience
9288          variable, for instance.  Create a not_lval value using val0's
9289          contents.  */
9290       return value_from_contents (type, value_contents (val0));
9291     }
9292
9293   return value_from_contents_and_address (type, 0, address);
9294 }
9295
9296 /* A value representing VAL, but with a standard (static-sized) type
9297    that correctly describes it.  Does not necessarily create a new
9298    value.  */
9299
9300 struct value *
9301 ada_to_fixed_value (struct value *val)
9302 {
9303   val = unwrap_value (val);
9304   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9305   return val;
9306 }
9307 \f
9308
9309 /* Attributes */
9310
9311 /* Table mapping attribute numbers to names.
9312    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9313
9314 static const char *attribute_names[] = {
9315   "<?>",
9316
9317   "first",
9318   "last",
9319   "length",
9320   "image",
9321   "max",
9322   "min",
9323   "modulus",
9324   "pos",
9325   "size",
9326   "tag",
9327   "val",
9328   0
9329 };
9330
9331 const char *
9332 ada_attribute_name (enum exp_opcode n)
9333 {
9334   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9335     return attribute_names[n - OP_ATR_FIRST + 1];
9336   else
9337     return attribute_names[0];
9338 }
9339
9340 /* Evaluate the 'POS attribute applied to ARG.  */
9341
9342 static LONGEST
9343 pos_atr (struct value *arg)
9344 {
9345   struct value *val = coerce_ref (arg);
9346   struct type *type = value_type (val);
9347   LONGEST result;
9348
9349   if (!discrete_type_p (type))
9350     error (_("'POS only defined on discrete types"));
9351
9352   if (!discrete_position (type, value_as_long (val), &result))
9353     error (_("enumeration value is invalid: can't find 'POS"));
9354
9355   return result;
9356 }
9357
9358 static struct value *
9359 value_pos_atr (struct type *type, struct value *arg)
9360 {
9361   return value_from_longest (type, pos_atr (arg));
9362 }
9363
9364 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9365
9366 static struct value *
9367 value_val_atr (struct type *type, struct value *arg)
9368 {
9369   if (!discrete_type_p (type))
9370     error (_("'VAL only defined on discrete types"));
9371   if (!integer_type_p (value_type (arg)))
9372     error (_("'VAL requires integral argument"));
9373
9374   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9375     {
9376       long pos = value_as_long (arg);
9377
9378       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9379         error (_("argument to 'VAL out of range"));
9380       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9381     }
9382   else
9383     return value_from_longest (type, value_as_long (arg));
9384 }
9385 \f
9386
9387                                 /* Evaluation */
9388
9389 /* True if TYPE appears to be an Ada character type.
9390    [At the moment, this is true only for Character and Wide_Character;
9391    It is a heuristic test that could stand improvement].  */
9392
9393 int
9394 ada_is_character_type (struct type *type)
9395 {
9396   const char *name;
9397
9398   /* If the type code says it's a character, then assume it really is,
9399      and don't check any further.  */
9400   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9401     return 1;
9402   
9403   /* Otherwise, assume it's a character type iff it is a discrete type
9404      with a known character type name.  */
9405   name = ada_type_name (type);
9406   return (name != NULL
9407           && (TYPE_CODE (type) == TYPE_CODE_INT
9408               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9409           && (strcmp (name, "character") == 0
9410               || strcmp (name, "wide_character") == 0
9411               || strcmp (name, "wide_wide_character") == 0
9412               || strcmp (name, "unsigned char") == 0));
9413 }
9414
9415 /* True if TYPE appears to be an Ada string type.  */
9416
9417 int
9418 ada_is_string_type (struct type *type)
9419 {
9420   type = ada_check_typedef (type);
9421   if (type != NULL
9422       && TYPE_CODE (type) != TYPE_CODE_PTR
9423       && (ada_is_simple_array_type (type)
9424           || ada_is_array_descriptor_type (type))
9425       && ada_array_arity (type) == 1)
9426     {
9427       struct type *elttype = ada_array_element_type (type, 1);
9428
9429       return ada_is_character_type (elttype);
9430     }
9431   else
9432     return 0;
9433 }
9434
9435 /* The compiler sometimes provides a parallel XVS type for a given
9436    PAD type.  Normally, it is safe to follow the PAD type directly,
9437    but older versions of the compiler have a bug that causes the offset
9438    of its "F" field to be wrong.  Following that field in that case
9439    would lead to incorrect results, but this can be worked around
9440    by ignoring the PAD type and using the associated XVS type instead.
9441
9442    Set to True if the debugger should trust the contents of PAD types.
9443    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9444 static int trust_pad_over_xvs = 1;
9445
9446 /* True if TYPE is a struct type introduced by the compiler to force the
9447    alignment of a value.  Such types have a single field with a
9448    distinctive name.  */
9449
9450 int
9451 ada_is_aligner_type (struct type *type)
9452 {
9453   type = ada_check_typedef (type);
9454
9455   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9456     return 0;
9457
9458   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9459           && TYPE_NFIELDS (type) == 1
9460           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9461 }
9462
9463 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9464    the parallel type.  */
9465
9466 struct type *
9467 ada_get_base_type (struct type *raw_type)
9468 {
9469   struct type *real_type_namer;
9470   struct type *raw_real_type;
9471
9472   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9473     return raw_type;
9474
9475   if (ada_is_aligner_type (raw_type))
9476     /* The encoding specifies that we should always use the aligner type.
9477        So, even if this aligner type has an associated XVS type, we should
9478        simply ignore it.
9479
9480        According to the compiler gurus, an XVS type parallel to an aligner
9481        type may exist because of a stabs limitation.  In stabs, aligner
9482        types are empty because the field has a variable-sized type, and
9483        thus cannot actually be used as an aligner type.  As a result,
9484        we need the associated parallel XVS type to decode the type.
9485        Since the policy in the compiler is to not change the internal
9486        representation based on the debugging info format, we sometimes
9487        end up having a redundant XVS type parallel to the aligner type.  */
9488     return raw_type;
9489
9490   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9491   if (real_type_namer == NULL
9492       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9493       || TYPE_NFIELDS (real_type_namer) != 1)
9494     return raw_type;
9495
9496   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9497     {
9498       /* This is an older encoding form where the base type needs to be
9499          looked up by name.  We prefer the newer enconding because it is
9500          more efficient.  */
9501       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9502       if (raw_real_type == NULL)
9503         return raw_type;
9504       else
9505         return raw_real_type;
9506     }
9507
9508   /* The field in our XVS type is a reference to the base type.  */
9509   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9510 }
9511
9512 /* The type of value designated by TYPE, with all aligners removed.  */
9513
9514 struct type *
9515 ada_aligned_type (struct type *type)
9516 {
9517   if (ada_is_aligner_type (type))
9518     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9519   else
9520     return ada_get_base_type (type);
9521 }
9522
9523
9524 /* The address of the aligned value in an object at address VALADDR
9525    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9526
9527 const gdb_byte *
9528 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9529 {
9530   if (ada_is_aligner_type (type))
9531     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9532                                    valaddr +
9533                                    TYPE_FIELD_BITPOS (type,
9534                                                       0) / TARGET_CHAR_BIT);
9535   else
9536     return valaddr;
9537 }
9538
9539
9540
9541 /* The printed representation of an enumeration literal with encoded
9542    name NAME.  The value is good to the next call of ada_enum_name.  */
9543 const char *
9544 ada_enum_name (const char *name)
9545 {
9546   static char *result;
9547   static size_t result_len = 0;
9548   const char *tmp;
9549
9550   /* First, unqualify the enumeration name:
9551      1. Search for the last '.' character.  If we find one, then skip
9552      all the preceding characters, the unqualified name starts
9553      right after that dot.
9554      2. Otherwise, we may be debugging on a target where the compiler
9555      translates dots into "__".  Search forward for double underscores,
9556      but stop searching when we hit an overloading suffix, which is
9557      of the form "__" followed by digits.  */
9558
9559   tmp = strrchr (name, '.');
9560   if (tmp != NULL)
9561     name = tmp + 1;
9562   else
9563     {
9564       while ((tmp = strstr (name, "__")) != NULL)
9565         {
9566           if (isdigit (tmp[2]))
9567             break;
9568           else
9569             name = tmp + 2;
9570         }
9571     }
9572
9573   if (name[0] == 'Q')
9574     {
9575       int v;
9576
9577       if (name[1] == 'U' || name[1] == 'W')
9578         {
9579           if (sscanf (name + 2, "%x", &v) != 1)
9580             return name;
9581         }
9582       else
9583         return name;
9584
9585       GROW_VECT (result, result_len, 16);
9586       if (isascii (v) && isprint (v))
9587         xsnprintf (result, result_len, "'%c'", v);
9588       else if (name[1] == 'U')
9589         xsnprintf (result, result_len, "[\"%02x\"]", v);
9590       else
9591         xsnprintf (result, result_len, "[\"%04x\"]", v);
9592
9593       return result;
9594     }
9595   else
9596     {
9597       tmp = strstr (name, "__");
9598       if (tmp == NULL)
9599         tmp = strstr (name, "$");
9600       if (tmp != NULL)
9601         {
9602           GROW_VECT (result, result_len, tmp - name + 1);
9603           strncpy (result, name, tmp - name);
9604           result[tmp - name] = '\0';
9605           return result;
9606         }
9607
9608       return name;
9609     }
9610 }
9611
9612 /* Evaluate the subexpression of EXP starting at *POS as for
9613    evaluate_type, updating *POS to point just past the evaluated
9614    expression.  */
9615
9616 static struct value *
9617 evaluate_subexp_type (struct expression *exp, int *pos)
9618 {
9619   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9620 }
9621
9622 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9623    value it wraps.  */
9624
9625 static struct value *
9626 unwrap_value (struct value *val)
9627 {
9628   struct type *type = ada_check_typedef (value_type (val));
9629
9630   if (ada_is_aligner_type (type))
9631     {
9632       struct value *v = ada_value_struct_elt (val, "F", 0);
9633       struct type *val_type = ada_check_typedef (value_type (v));
9634
9635       if (ada_type_name (val_type) == NULL)
9636         TYPE_NAME (val_type) = ada_type_name (type);
9637
9638       return unwrap_value (v);
9639     }
9640   else
9641     {
9642       struct type *raw_real_type =
9643         ada_check_typedef (ada_get_base_type (type));
9644
9645       /* If there is no parallel XVS or XVE type, then the value is
9646          already unwrapped.  Return it without further modification.  */
9647       if ((type == raw_real_type)
9648           && ada_find_parallel_type (type, "___XVE") == NULL)
9649         return val;
9650
9651       return
9652         coerce_unspec_val_to_type
9653         (val, ada_to_fixed_type (raw_real_type, 0,
9654                                  value_address (val),
9655                                  NULL, 1));
9656     }
9657 }
9658
9659 static struct value *
9660 cast_from_fixed (struct type *type, struct value *arg)
9661 {
9662   struct value *scale = ada_scaling_factor (value_type (arg));
9663   arg = value_cast (value_type (scale), arg);
9664
9665   arg = value_binop (arg, scale, BINOP_MUL);
9666   return value_cast (type, arg);
9667 }
9668
9669 static struct value *
9670 cast_to_fixed (struct type *type, struct value *arg)
9671 {
9672   if (type == value_type (arg))
9673     return arg;
9674
9675   struct value *scale = ada_scaling_factor (type);
9676   if (ada_is_fixed_point_type (value_type (arg)))
9677     arg = cast_from_fixed (value_type (scale), arg);
9678   else
9679     arg = value_cast (value_type (scale), arg);
9680
9681   arg = value_binop (arg, scale, BINOP_DIV);
9682   return value_cast (type, arg);
9683 }
9684
9685 /* Given two array types T1 and T2, return nonzero iff both arrays
9686    contain the same number of elements.  */
9687
9688 static int
9689 ada_same_array_size_p (struct type *t1, struct type *t2)
9690 {
9691   LONGEST lo1, hi1, lo2, hi2;
9692
9693   /* Get the array bounds in order to verify that the size of
9694      the two arrays match.  */
9695   if (!get_array_bounds (t1, &lo1, &hi1)
9696       || !get_array_bounds (t2, &lo2, &hi2))
9697     error (_("unable to determine array bounds"));
9698
9699   /* To make things easier for size comparison, normalize a bit
9700      the case of empty arrays by making sure that the difference
9701      between upper bound and lower bound is always -1.  */
9702   if (lo1 > hi1)
9703     hi1 = lo1 - 1;
9704   if (lo2 > hi2)
9705     hi2 = lo2 - 1;
9706
9707   return (hi1 - lo1 == hi2 - lo2);
9708 }
9709
9710 /* Assuming that VAL is an array of integrals, and TYPE represents
9711    an array with the same number of elements, but with wider integral
9712    elements, return an array "casted" to TYPE.  In practice, this
9713    means that the returned array is built by casting each element
9714    of the original array into TYPE's (wider) element type.  */
9715
9716 static struct value *
9717 ada_promote_array_of_integrals (struct type *type, struct value *val)
9718 {
9719   struct type *elt_type = TYPE_TARGET_TYPE (type);
9720   LONGEST lo, hi;
9721   struct value *res;
9722   LONGEST i;
9723
9724   /* Verify that both val and type are arrays of scalars, and
9725      that the size of val's elements is smaller than the size
9726      of type's element.  */
9727   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9728   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9729   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9730   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9731   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9732               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9733
9734   if (!get_array_bounds (type, &lo, &hi))
9735     error (_("unable to determine array bounds"));
9736
9737   res = allocate_value (type);
9738
9739   /* Promote each array element.  */
9740   for (i = 0; i < hi - lo + 1; i++)
9741     {
9742       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9743
9744       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9745               value_contents_all (elt), TYPE_LENGTH (elt_type));
9746     }
9747
9748   return res;
9749 }
9750
9751 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9752    return the converted value.  */
9753
9754 static struct value *
9755 coerce_for_assign (struct type *type, struct value *val)
9756 {
9757   struct type *type2 = value_type (val);
9758
9759   if (type == type2)
9760     return val;
9761
9762   type2 = ada_check_typedef (type2);
9763   type = ada_check_typedef (type);
9764
9765   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9766       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9767     {
9768       val = ada_value_ind (val);
9769       type2 = value_type (val);
9770     }
9771
9772   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9773       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9774     {
9775       if (!ada_same_array_size_p (type, type2))
9776         error (_("cannot assign arrays of different length"));
9777
9778       if (is_integral_type (TYPE_TARGET_TYPE (type))
9779           && is_integral_type (TYPE_TARGET_TYPE (type2))
9780           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9781                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9782         {
9783           /* Allow implicit promotion of the array elements to
9784              a wider type.  */
9785           return ada_promote_array_of_integrals (type, val);
9786         }
9787
9788       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9789           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9790         error (_("Incompatible types in assignment"));
9791       deprecated_set_value_type (val, type);
9792     }
9793   return val;
9794 }
9795
9796 static struct value *
9797 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9798 {
9799   struct value *val;
9800   struct type *type1, *type2;
9801   LONGEST v, v1, v2;
9802
9803   arg1 = coerce_ref (arg1);
9804   arg2 = coerce_ref (arg2);
9805   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9806   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9807
9808   if (TYPE_CODE (type1) != TYPE_CODE_INT
9809       || TYPE_CODE (type2) != TYPE_CODE_INT)
9810     return value_binop (arg1, arg2, op);
9811
9812   switch (op)
9813     {
9814     case BINOP_MOD:
9815     case BINOP_DIV:
9816     case BINOP_REM:
9817       break;
9818     default:
9819       return value_binop (arg1, arg2, op);
9820     }
9821
9822   v2 = value_as_long (arg2);
9823   if (v2 == 0)
9824     error (_("second operand of %s must not be zero."), op_string (op));
9825
9826   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9827     return value_binop (arg1, arg2, op);
9828
9829   v1 = value_as_long (arg1);
9830   switch (op)
9831     {
9832     case BINOP_DIV:
9833       v = v1 / v2;
9834       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9835         v += v > 0 ? -1 : 1;
9836       break;
9837     case BINOP_REM:
9838       v = v1 % v2;
9839       if (v * v1 < 0)
9840         v -= v2;
9841       break;
9842     default:
9843       /* Should not reach this point.  */
9844       v = 0;
9845     }
9846
9847   val = allocate_value (type1);
9848   store_unsigned_integer (value_contents_raw (val),
9849                           TYPE_LENGTH (value_type (val)),
9850                           gdbarch_byte_order (get_type_arch (type1)), v);
9851   return val;
9852 }
9853
9854 static int
9855 ada_value_equal (struct value *arg1, struct value *arg2)
9856 {
9857   if (ada_is_direct_array_type (value_type (arg1))
9858       || ada_is_direct_array_type (value_type (arg2)))
9859     {
9860       struct type *arg1_type, *arg2_type;
9861
9862       /* Automatically dereference any array reference before
9863          we attempt to perform the comparison.  */
9864       arg1 = ada_coerce_ref (arg1);
9865       arg2 = ada_coerce_ref (arg2);
9866
9867       arg1 = ada_coerce_to_simple_array (arg1);
9868       arg2 = ada_coerce_to_simple_array (arg2);
9869
9870       arg1_type = ada_check_typedef (value_type (arg1));
9871       arg2_type = ada_check_typedef (value_type (arg2));
9872
9873       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9874           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9875         error (_("Attempt to compare array with non-array"));
9876       /* FIXME: The following works only for types whose
9877          representations use all bits (no padding or undefined bits)
9878          and do not have user-defined equality.  */
9879       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9880               && memcmp (value_contents (arg1), value_contents (arg2),
9881                          TYPE_LENGTH (arg1_type)) == 0);
9882     }
9883   return value_equal (arg1, arg2);
9884 }
9885
9886 /* Total number of component associations in the aggregate starting at
9887    index PC in EXP.  Assumes that index PC is the start of an
9888    OP_AGGREGATE.  */
9889
9890 static int
9891 num_component_specs (struct expression *exp, int pc)
9892 {
9893   int n, m, i;
9894
9895   m = exp->elts[pc + 1].longconst;
9896   pc += 3;
9897   n = 0;
9898   for (i = 0; i < m; i += 1)
9899     {
9900       switch (exp->elts[pc].opcode) 
9901         {
9902         default:
9903           n += 1;
9904           break;
9905         case OP_CHOICES:
9906           n += exp->elts[pc + 1].longconst;
9907           break;
9908         }
9909       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9910     }
9911   return n;
9912 }
9913
9914 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9915    component of LHS (a simple array or a record), updating *POS past
9916    the expression, assuming that LHS is contained in CONTAINER.  Does
9917    not modify the inferior's memory, nor does it modify LHS (unless
9918    LHS == CONTAINER).  */
9919
9920 static void
9921 assign_component (struct value *container, struct value *lhs, LONGEST index,
9922                   struct expression *exp, int *pos)
9923 {
9924   struct value *mark = value_mark ();
9925   struct value *elt;
9926   struct type *lhs_type = check_typedef (value_type (lhs));
9927
9928   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9929     {
9930       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9931       struct value *index_val = value_from_longest (index_type, index);
9932
9933       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9934     }
9935   else
9936     {
9937       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9938       elt = ada_to_fixed_value (elt);
9939     }
9940
9941   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9942     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9943   else
9944     value_assign_to_component (container, elt, 
9945                                ada_evaluate_subexp (NULL, exp, pos, 
9946                                                     EVAL_NORMAL));
9947
9948   value_free_to_mark (mark);
9949 }
9950
9951 /* Assuming that LHS represents an lvalue having a record or array
9952    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9953    of that aggregate's value to LHS, advancing *POS past the
9954    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9955    lvalue containing LHS (possibly LHS itself).  Does not modify
9956    the inferior's memory, nor does it modify the contents of 
9957    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9958
9959 static struct value *
9960 assign_aggregate (struct value *container, 
9961                   struct value *lhs, struct expression *exp, 
9962                   int *pos, enum noside noside)
9963 {
9964   struct type *lhs_type;
9965   int n = exp->elts[*pos+1].longconst;
9966   LONGEST low_index, high_index;
9967   int num_specs;
9968   LONGEST *indices;
9969   int max_indices, num_indices;
9970   int i;
9971
9972   *pos += 3;
9973   if (noside != EVAL_NORMAL)
9974     {
9975       for (i = 0; i < n; i += 1)
9976         ada_evaluate_subexp (NULL, exp, pos, noside);
9977       return container;
9978     }
9979
9980   container = ada_coerce_ref (container);
9981   if (ada_is_direct_array_type (value_type (container)))
9982     container = ada_coerce_to_simple_array (container);
9983   lhs = ada_coerce_ref (lhs);
9984   if (!deprecated_value_modifiable (lhs))
9985     error (_("Left operand of assignment is not a modifiable lvalue."));
9986
9987   lhs_type = check_typedef (value_type (lhs));
9988   if (ada_is_direct_array_type (lhs_type))
9989     {
9990       lhs = ada_coerce_to_simple_array (lhs);
9991       lhs_type = check_typedef (value_type (lhs));
9992       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9993       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9994     }
9995   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9996     {
9997       low_index = 0;
9998       high_index = num_visible_fields (lhs_type) - 1;
9999     }
10000   else
10001     error (_("Left-hand side must be array or record."));
10002
10003   num_specs = num_component_specs (exp, *pos - 3);
10004   max_indices = 4 * num_specs + 4;
10005   indices = XALLOCAVEC (LONGEST, max_indices);
10006   indices[0] = indices[1] = low_index - 1;
10007   indices[2] = indices[3] = high_index + 1;
10008   num_indices = 4;
10009
10010   for (i = 0; i < n; i += 1)
10011     {
10012       switch (exp->elts[*pos].opcode)
10013         {
10014           case OP_CHOICES:
10015             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
10016                                            &num_indices, max_indices,
10017                                            low_index, high_index);
10018             break;
10019           case OP_POSITIONAL:
10020             aggregate_assign_positional (container, lhs, exp, pos, indices,
10021                                          &num_indices, max_indices,
10022                                          low_index, high_index);
10023             break;
10024           case OP_OTHERS:
10025             if (i != n-1)
10026               error (_("Misplaced 'others' clause"));
10027             aggregate_assign_others (container, lhs, exp, pos, indices, 
10028                                      num_indices, low_index, high_index);
10029             break;
10030           default:
10031             error (_("Internal error: bad aggregate clause"));
10032         }
10033     }
10034
10035   return container;
10036 }
10037               
10038 /* Assign into the component of LHS indexed by the OP_POSITIONAL
10039    construct at *POS, updating *POS past the construct, given that
10040    the positions are relative to lower bound LOW, where HIGH is the 
10041    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
10042    updating *NUM_INDICES as needed.  CONTAINER is as for
10043    assign_aggregate.  */
10044 static void
10045 aggregate_assign_positional (struct value *container,
10046                              struct value *lhs, struct expression *exp,
10047                              int *pos, LONGEST *indices, int *num_indices,
10048                              int max_indices, LONGEST low, LONGEST high) 
10049 {
10050   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
10051   
10052   if (ind - 1 == high)
10053     warning (_("Extra components in aggregate ignored."));
10054   if (ind <= high)
10055     {
10056       add_component_interval (ind, ind, indices, num_indices, max_indices);
10057       *pos += 3;
10058       assign_component (container, lhs, ind, exp, pos);
10059     }
10060   else
10061     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10062 }
10063
10064 /* Assign into the components of LHS indexed by the OP_CHOICES
10065    construct at *POS, updating *POS past the construct, given that
10066    the allowable indices are LOW..HIGH.  Record the indices assigned
10067    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
10068    needed.  CONTAINER is as for assign_aggregate.  */
10069 static void
10070 aggregate_assign_from_choices (struct value *container,
10071                                struct value *lhs, struct expression *exp,
10072                                int *pos, LONGEST *indices, int *num_indices,
10073                                int max_indices, LONGEST low, LONGEST high) 
10074 {
10075   int j;
10076   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
10077   int choice_pos, expr_pc;
10078   int is_array = ada_is_direct_array_type (value_type (lhs));
10079
10080   choice_pos = *pos += 3;
10081
10082   for (j = 0; j < n_choices; j += 1)
10083     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10084   expr_pc = *pos;
10085   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10086   
10087   for (j = 0; j < n_choices; j += 1)
10088     {
10089       LONGEST lower, upper;
10090       enum exp_opcode op = exp->elts[choice_pos].opcode;
10091
10092       if (op == OP_DISCRETE_RANGE)
10093         {
10094           choice_pos += 1;
10095           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
10096                                                       EVAL_NORMAL));
10097           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
10098                                                       EVAL_NORMAL));
10099         }
10100       else if (is_array)
10101         {
10102           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
10103                                                       EVAL_NORMAL));
10104           upper = lower;
10105         }
10106       else
10107         {
10108           int ind;
10109           const char *name;
10110
10111           switch (op)
10112             {
10113             case OP_NAME:
10114               name = &exp->elts[choice_pos + 2].string;
10115               break;
10116             case OP_VAR_VALUE:
10117               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
10118               break;
10119             default:
10120               error (_("Invalid record component association."));
10121             }
10122           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
10123           ind = 0;
10124           if (! find_struct_field (name, value_type (lhs), 0, 
10125                                    NULL, NULL, NULL, NULL, &ind))
10126             error (_("Unknown component name: %s."), name);
10127           lower = upper = ind;
10128         }
10129
10130       if (lower <= upper && (lower < low || upper > high))
10131         error (_("Index in component association out of bounds."));
10132
10133       add_component_interval (lower, upper, indices, num_indices,
10134                               max_indices);
10135       while (lower <= upper)
10136         {
10137           int pos1;
10138
10139           pos1 = expr_pc;
10140           assign_component (container, lhs, lower, exp, &pos1);
10141           lower += 1;
10142         }
10143     }
10144 }
10145
10146 /* Assign the value of the expression in the OP_OTHERS construct in
10147    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10148    have not been previously assigned.  The index intervals already assigned
10149    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10150    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10151 static void
10152 aggregate_assign_others (struct value *container,
10153                          struct value *lhs, struct expression *exp,
10154                          int *pos, LONGEST *indices, int num_indices,
10155                          LONGEST low, LONGEST high) 
10156 {
10157   int i;
10158   int expr_pc = *pos + 1;
10159   
10160   for (i = 0; i < num_indices - 2; i += 2)
10161     {
10162       LONGEST ind;
10163
10164       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10165         {
10166           int localpos;
10167
10168           localpos = expr_pc;
10169           assign_component (container, lhs, ind, exp, &localpos);
10170         }
10171     }
10172   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10173 }
10174
10175 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10176    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10177    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10178    MAX_SIZE.  The resulting intervals do not overlap.  */
10179 static void
10180 add_component_interval (LONGEST low, LONGEST high, 
10181                         LONGEST* indices, int *size, int max_size)
10182 {
10183   int i, j;
10184
10185   for (i = 0; i < *size; i += 2) {
10186     if (high >= indices[i] && low <= indices[i + 1])
10187       {
10188         int kh;
10189
10190         for (kh = i + 2; kh < *size; kh += 2)
10191           if (high < indices[kh])
10192             break;
10193         if (low < indices[i])
10194           indices[i] = low;
10195         indices[i + 1] = indices[kh - 1];
10196         if (high > indices[i + 1])
10197           indices[i + 1] = high;
10198         memcpy (indices + i + 2, indices + kh, *size - kh);
10199         *size -= kh - i - 2;
10200         return;
10201       }
10202     else if (high < indices[i])
10203       break;
10204   }
10205         
10206   if (*size == max_size)
10207     error (_("Internal error: miscounted aggregate components."));
10208   *size += 2;
10209   for (j = *size-1; j >= i+2; j -= 1)
10210     indices[j] = indices[j - 2];
10211   indices[i] = low;
10212   indices[i + 1] = high;
10213 }
10214
10215 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10216    is different.  */
10217
10218 static struct value *
10219 ada_value_cast (struct type *type, struct value *arg2)
10220 {
10221   if (type == ada_check_typedef (value_type (arg2)))
10222     return arg2;
10223
10224   if (ada_is_fixed_point_type (type))
10225     return cast_to_fixed (type, arg2);
10226
10227   if (ada_is_fixed_point_type (value_type (arg2)))
10228     return cast_from_fixed (type, arg2);
10229
10230   return value_cast (type, arg2);
10231 }
10232
10233 /*  Evaluating Ada expressions, and printing their result.
10234     ------------------------------------------------------
10235
10236     1. Introduction:
10237     ----------------
10238
10239     We usually evaluate an Ada expression in order to print its value.
10240     We also evaluate an expression in order to print its type, which
10241     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10242     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10243     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10244     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10245     similar.
10246
10247     Evaluating expressions is a little more complicated for Ada entities
10248     than it is for entities in languages such as C.  The main reason for
10249     this is that Ada provides types whose definition might be dynamic.
10250     One example of such types is variant records.  Or another example
10251     would be an array whose bounds can only be known at run time.
10252
10253     The following description is a general guide as to what should be
10254     done (and what should NOT be done) in order to evaluate an expression
10255     involving such types, and when.  This does not cover how the semantic
10256     information is encoded by GNAT as this is covered separatly.  For the
10257     document used as the reference for the GNAT encoding, see exp_dbug.ads
10258     in the GNAT sources.
10259
10260     Ideally, we should embed each part of this description next to its
10261     associated code.  Unfortunately, the amount of code is so vast right
10262     now that it's hard to see whether the code handling a particular
10263     situation might be duplicated or not.  One day, when the code is
10264     cleaned up, this guide might become redundant with the comments
10265     inserted in the code, and we might want to remove it.
10266
10267     2. ``Fixing'' an Entity, the Simple Case:
10268     -----------------------------------------
10269
10270     When evaluating Ada expressions, the tricky issue is that they may
10271     reference entities whose type contents and size are not statically
10272     known.  Consider for instance a variant record:
10273
10274        type Rec (Empty : Boolean := True) is record
10275           case Empty is
10276              when True => null;
10277              when False => Value : Integer;
10278           end case;
10279        end record;
10280        Yes : Rec := (Empty => False, Value => 1);
10281        No  : Rec := (empty => True);
10282
10283     The size and contents of that record depends on the value of the
10284     descriminant (Rec.Empty).  At this point, neither the debugging
10285     information nor the associated type structure in GDB are able to
10286     express such dynamic types.  So what the debugger does is to create
10287     "fixed" versions of the type that applies to the specific object.
10288     We also informally refer to this opperation as "fixing" an object,
10289     which means creating its associated fixed type.
10290
10291     Example: when printing the value of variable "Yes" above, its fixed
10292     type would look like this:
10293
10294        type Rec is record
10295           Empty : Boolean;
10296           Value : Integer;
10297        end record;
10298
10299     On the other hand, if we printed the value of "No", its fixed type
10300     would become:
10301
10302        type Rec is record
10303           Empty : Boolean;
10304        end record;
10305
10306     Things become a little more complicated when trying to fix an entity
10307     with a dynamic type that directly contains another dynamic type,
10308     such as an array of variant records, for instance.  There are
10309     two possible cases: Arrays, and records.
10310
10311     3. ``Fixing'' Arrays:
10312     ---------------------
10313
10314     The type structure in GDB describes an array in terms of its bounds,
10315     and the type of its elements.  By design, all elements in the array
10316     have the same type and we cannot represent an array of variant elements
10317     using the current type structure in GDB.  When fixing an array,
10318     we cannot fix the array element, as we would potentially need one
10319     fixed type per element of the array.  As a result, the best we can do
10320     when fixing an array is to produce an array whose bounds and size
10321     are correct (allowing us to read it from memory), but without having
10322     touched its element type.  Fixing each element will be done later,
10323     when (if) necessary.
10324
10325     Arrays are a little simpler to handle than records, because the same
10326     amount of memory is allocated for each element of the array, even if
10327     the amount of space actually used by each element differs from element
10328     to element.  Consider for instance the following array of type Rec:
10329
10330        type Rec_Array is array (1 .. 2) of Rec;
10331
10332     The actual amount of memory occupied by each element might be different
10333     from element to element, depending on the value of their discriminant.
10334     But the amount of space reserved for each element in the array remains
10335     fixed regardless.  So we simply need to compute that size using
10336     the debugging information available, from which we can then determine
10337     the array size (we multiply the number of elements of the array by
10338     the size of each element).
10339
10340     The simplest case is when we have an array of a constrained element
10341     type. For instance, consider the following type declarations:
10342
10343         type Bounded_String (Max_Size : Integer) is
10344            Length : Integer;
10345            Buffer : String (1 .. Max_Size);
10346         end record;
10347         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10348
10349     In this case, the compiler describes the array as an array of
10350     variable-size elements (identified by its XVS suffix) for which
10351     the size can be read in the parallel XVZ variable.
10352
10353     In the case of an array of an unconstrained element type, the compiler
10354     wraps the array element inside a private PAD type.  This type should not
10355     be shown to the user, and must be "unwrap"'ed before printing.  Note
10356     that we also use the adjective "aligner" in our code to designate
10357     these wrapper types.
10358
10359     In some cases, the size allocated for each element is statically
10360     known.  In that case, the PAD type already has the correct size,
10361     and the array element should remain unfixed.
10362
10363     But there are cases when this size is not statically known.
10364     For instance, assuming that "Five" is an integer variable:
10365
10366         type Dynamic is array (1 .. Five) of Integer;
10367         type Wrapper (Has_Length : Boolean := False) is record
10368            Data : Dynamic;
10369            case Has_Length is
10370               when True => Length : Integer;
10371               when False => null;
10372            end case;
10373         end record;
10374         type Wrapper_Array is array (1 .. 2) of Wrapper;
10375
10376         Hello : Wrapper_Array := (others => (Has_Length => True,
10377                                              Data => (others => 17),
10378                                              Length => 1));
10379
10380
10381     The debugging info would describe variable Hello as being an
10382     array of a PAD type.  The size of that PAD type is not statically
10383     known, but can be determined using a parallel XVZ variable.
10384     In that case, a copy of the PAD type with the correct size should
10385     be used for the fixed array.
10386
10387     3. ``Fixing'' record type objects:
10388     ----------------------------------
10389
10390     Things are slightly different from arrays in the case of dynamic
10391     record types.  In this case, in order to compute the associated
10392     fixed type, we need to determine the size and offset of each of
10393     its components.  This, in turn, requires us to compute the fixed
10394     type of each of these components.
10395
10396     Consider for instance the example:
10397
10398         type Bounded_String (Max_Size : Natural) is record
10399            Str : String (1 .. Max_Size);
10400            Length : Natural;
10401         end record;
10402         My_String : Bounded_String (Max_Size => 10);
10403
10404     In that case, the position of field "Length" depends on the size
10405     of field Str, which itself depends on the value of the Max_Size
10406     discriminant.  In order to fix the type of variable My_String,
10407     we need to fix the type of field Str.  Therefore, fixing a variant
10408     record requires us to fix each of its components.
10409
10410     However, if a component does not have a dynamic size, the component
10411     should not be fixed.  In particular, fields that use a PAD type
10412     should not fixed.  Here is an example where this might happen
10413     (assuming type Rec above):
10414
10415        type Container (Big : Boolean) is record
10416           First : Rec;
10417           After : Integer;
10418           case Big is
10419              when True => Another : Integer;
10420              when False => null;
10421           end case;
10422        end record;
10423        My_Container : Container := (Big => False,
10424                                     First => (Empty => True),
10425                                     After => 42);
10426
10427     In that example, the compiler creates a PAD type for component First,
10428     whose size is constant, and then positions the component After just
10429     right after it.  The offset of component After is therefore constant
10430     in this case.
10431
10432     The debugger computes the position of each field based on an algorithm
10433     that uses, among other things, the actual position and size of the field
10434     preceding it.  Let's now imagine that the user is trying to print
10435     the value of My_Container.  If the type fixing was recursive, we would
10436     end up computing the offset of field After based on the size of the
10437     fixed version of field First.  And since in our example First has
10438     only one actual field, the size of the fixed type is actually smaller
10439     than the amount of space allocated to that field, and thus we would
10440     compute the wrong offset of field After.
10441
10442     To make things more complicated, we need to watch out for dynamic
10443     components of variant records (identified by the ___XVL suffix in
10444     the component name).  Even if the target type is a PAD type, the size
10445     of that type might not be statically known.  So the PAD type needs
10446     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10447     we might end up with the wrong size for our component.  This can be
10448     observed with the following type declarations:
10449
10450         type Octal is new Integer range 0 .. 7;
10451         type Octal_Array is array (Positive range <>) of Octal;
10452         pragma Pack (Octal_Array);
10453
10454         type Octal_Buffer (Size : Positive) is record
10455            Buffer : Octal_Array (1 .. Size);
10456            Length : Integer;
10457         end record;
10458
10459     In that case, Buffer is a PAD type whose size is unset and needs
10460     to be computed by fixing the unwrapped type.
10461
10462     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10463     ----------------------------------------------------------
10464
10465     Lastly, when should the sub-elements of an entity that remained unfixed
10466     thus far, be actually fixed?
10467
10468     The answer is: Only when referencing that element.  For instance
10469     when selecting one component of a record, this specific component
10470     should be fixed at that point in time.  Or when printing the value
10471     of a record, each component should be fixed before its value gets
10472     printed.  Similarly for arrays, the element of the array should be
10473     fixed when printing each element of the array, or when extracting
10474     one element out of that array.  On the other hand, fixing should
10475     not be performed on the elements when taking a slice of an array!
10476
10477     Note that one of the side effects of miscomputing the offset and
10478     size of each field is that we end up also miscomputing the size
10479     of the containing type.  This can have adverse results when computing
10480     the value of an entity.  GDB fetches the value of an entity based
10481     on the size of its type, and thus a wrong size causes GDB to fetch
10482     the wrong amount of memory.  In the case where the computed size is
10483     too small, GDB fetches too little data to print the value of our
10484     entity.  Results in this case are unpredictable, as we usually read
10485     past the buffer containing the data =:-o.  */
10486
10487 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10488    for that subexpression cast to TO_TYPE.  Advance *POS over the
10489    subexpression.  */
10490
10491 static value *
10492 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10493                               enum noside noside, struct type *to_type)
10494 {
10495   int pc = *pos;
10496
10497   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10498       || exp->elts[pc].opcode == OP_VAR_VALUE)
10499     {
10500       (*pos) += 4;
10501
10502       value *val;
10503       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10504         {
10505           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10506             return value_zero (to_type, not_lval);
10507
10508           val = evaluate_var_msym_value (noside,
10509                                          exp->elts[pc + 1].objfile,
10510                                          exp->elts[pc + 2].msymbol);
10511         }
10512       else
10513         val = evaluate_var_value (noside,
10514                                   exp->elts[pc + 1].block,
10515                                   exp->elts[pc + 2].symbol);
10516
10517       if (noside == EVAL_SKIP)
10518         return eval_skip_value (exp);
10519
10520       val = ada_value_cast (to_type, val);
10521
10522       /* Follow the Ada language semantics that do not allow taking
10523          an address of the result of a cast (view conversion in Ada).  */
10524       if (VALUE_LVAL (val) == lval_memory)
10525         {
10526           if (value_lazy (val))
10527             value_fetch_lazy (val);
10528           VALUE_LVAL (val) = not_lval;
10529         }
10530       return val;
10531     }
10532
10533   value *val = evaluate_subexp (to_type, exp, pos, noside);
10534   if (noside == EVAL_SKIP)
10535     return eval_skip_value (exp);
10536   return ada_value_cast (to_type, val);
10537 }
10538
10539 /* Implement the evaluate_exp routine in the exp_descriptor structure
10540    for the Ada language.  */
10541
10542 static struct value *
10543 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10544                      int *pos, enum noside noside)
10545 {
10546   enum exp_opcode op;
10547   int tem;
10548   int pc;
10549   int preeval_pos;
10550   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10551   struct type *type;
10552   int nargs, oplen;
10553   struct value **argvec;
10554
10555   pc = *pos;
10556   *pos += 1;
10557   op = exp->elts[pc].opcode;
10558
10559   switch (op)
10560     {
10561     default:
10562       *pos -= 1;
10563       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10564
10565       if (noside == EVAL_NORMAL)
10566         arg1 = unwrap_value (arg1);
10567
10568       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10569          then we need to perform the conversion manually, because
10570          evaluate_subexp_standard doesn't do it.  This conversion is
10571          necessary in Ada because the different kinds of float/fixed
10572          types in Ada have different representations.
10573
10574          Similarly, we need to perform the conversion from OP_LONG
10575          ourselves.  */
10576       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10577         arg1 = ada_value_cast (expect_type, arg1);
10578
10579       return arg1;
10580
10581     case OP_STRING:
10582       {
10583         struct value *result;
10584
10585         *pos -= 1;
10586         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10587         /* The result type will have code OP_STRING, bashed there from 
10588            OP_ARRAY.  Bash it back.  */
10589         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10590           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10591         return result;
10592       }
10593
10594     case UNOP_CAST:
10595       (*pos) += 2;
10596       type = exp->elts[pc + 1].type;
10597       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10598
10599     case UNOP_QUAL:
10600       (*pos) += 2;
10601       type = exp->elts[pc + 1].type;
10602       return ada_evaluate_subexp (type, exp, pos, noside);
10603
10604     case BINOP_ASSIGN:
10605       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10606       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10607         {
10608           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10609           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10610             return arg1;
10611           return ada_value_assign (arg1, arg1);
10612         }
10613       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10614          except if the lhs of our assignment is a convenience variable.
10615          In the case of assigning to a convenience variable, the lhs
10616          should be exactly the result of the evaluation of the rhs.  */
10617       type = value_type (arg1);
10618       if (VALUE_LVAL (arg1) == lval_internalvar)
10619          type = NULL;
10620       arg2 = evaluate_subexp (type, exp, pos, noside);
10621       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10622         return arg1;
10623       if (ada_is_fixed_point_type (value_type (arg1)))
10624         arg2 = cast_to_fixed (value_type (arg1), arg2);
10625       else if (ada_is_fixed_point_type (value_type (arg2)))
10626         error
10627           (_("Fixed-point values must be assigned to fixed-point variables"));
10628       else
10629         arg2 = coerce_for_assign (value_type (arg1), arg2);
10630       return ada_value_assign (arg1, arg2);
10631
10632     case BINOP_ADD:
10633       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10634       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10635       if (noside == EVAL_SKIP)
10636         goto nosideret;
10637       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10638         return (value_from_longest
10639                  (value_type (arg1),
10640                   value_as_long (arg1) + value_as_long (arg2)));
10641       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10642         return (value_from_longest
10643                  (value_type (arg2),
10644                   value_as_long (arg1) + value_as_long (arg2)));
10645       if ((ada_is_fixed_point_type (value_type (arg1))
10646            || ada_is_fixed_point_type (value_type (arg2)))
10647           && value_type (arg1) != value_type (arg2))
10648         error (_("Operands of fixed-point addition must have the same type"));
10649       /* Do the addition, and cast the result to the type of the first
10650          argument.  We cannot cast the result to a reference type, so if
10651          ARG1 is a reference type, find its underlying type.  */
10652       type = value_type (arg1);
10653       while (TYPE_CODE (type) == TYPE_CODE_REF)
10654         type = TYPE_TARGET_TYPE (type);
10655       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10656       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10657
10658     case BINOP_SUB:
10659       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10660       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10661       if (noside == EVAL_SKIP)
10662         goto nosideret;
10663       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10664         return (value_from_longest
10665                  (value_type (arg1),
10666                   value_as_long (arg1) - value_as_long (arg2)));
10667       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10668         return (value_from_longest
10669                  (value_type (arg2),
10670                   value_as_long (arg1) - value_as_long (arg2)));
10671       if ((ada_is_fixed_point_type (value_type (arg1))
10672            || ada_is_fixed_point_type (value_type (arg2)))
10673           && value_type (arg1) != value_type (arg2))
10674         error (_("Operands of fixed-point subtraction "
10675                  "must have the same type"));
10676       /* Do the substraction, and cast the result to the type of the first
10677          argument.  We cannot cast the result to a reference type, so if
10678          ARG1 is a reference type, find its underlying type.  */
10679       type = value_type (arg1);
10680       while (TYPE_CODE (type) == TYPE_CODE_REF)
10681         type = TYPE_TARGET_TYPE (type);
10682       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10683       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10684
10685     case BINOP_MUL:
10686     case BINOP_DIV:
10687     case BINOP_REM:
10688     case BINOP_MOD:
10689       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10690       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10691       if (noside == EVAL_SKIP)
10692         goto nosideret;
10693       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10694         {
10695           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10696           return value_zero (value_type (arg1), not_lval);
10697         }
10698       else
10699         {
10700           type = builtin_type (exp->gdbarch)->builtin_double;
10701           if (ada_is_fixed_point_type (value_type (arg1)))
10702             arg1 = cast_from_fixed (type, arg1);
10703           if (ada_is_fixed_point_type (value_type (arg2)))
10704             arg2 = cast_from_fixed (type, arg2);
10705           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10706           return ada_value_binop (arg1, arg2, op);
10707         }
10708
10709     case BINOP_EQUAL:
10710     case BINOP_NOTEQUAL:
10711       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10712       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10713       if (noside == EVAL_SKIP)
10714         goto nosideret;
10715       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10716         tem = 0;
10717       else
10718         {
10719           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10720           tem = ada_value_equal (arg1, arg2);
10721         }
10722       if (op == BINOP_NOTEQUAL)
10723         tem = !tem;
10724       type = language_bool_type (exp->language_defn, exp->gdbarch);
10725       return value_from_longest (type, (LONGEST) tem);
10726
10727     case UNOP_NEG:
10728       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10729       if (noside == EVAL_SKIP)
10730         goto nosideret;
10731       else if (ada_is_fixed_point_type (value_type (arg1)))
10732         return value_cast (value_type (arg1), value_neg (arg1));
10733       else
10734         {
10735           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10736           return value_neg (arg1);
10737         }
10738
10739     case BINOP_LOGICAL_AND:
10740     case BINOP_LOGICAL_OR:
10741     case UNOP_LOGICAL_NOT:
10742       {
10743         struct value *val;
10744
10745         *pos -= 1;
10746         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10747         type = language_bool_type (exp->language_defn, exp->gdbarch);
10748         return value_cast (type, val);
10749       }
10750
10751     case BINOP_BITWISE_AND:
10752     case BINOP_BITWISE_IOR:
10753     case BINOP_BITWISE_XOR:
10754       {
10755         struct value *val;
10756
10757         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10758         *pos = pc;
10759         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10760
10761         return value_cast (value_type (arg1), val);
10762       }
10763
10764     case OP_VAR_VALUE:
10765       *pos -= 1;
10766
10767       if (noside == EVAL_SKIP)
10768         {
10769           *pos += 4;
10770           goto nosideret;
10771         }
10772
10773       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10774         /* Only encountered when an unresolved symbol occurs in a
10775            context other than a function call, in which case, it is
10776            invalid.  */
10777         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10778                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10779
10780       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10781         {
10782           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10783           /* Check to see if this is a tagged type.  We also need to handle
10784              the case where the type is a reference to a tagged type, but
10785              we have to be careful to exclude pointers to tagged types.
10786              The latter should be shown as usual (as a pointer), whereas
10787              a reference should mostly be transparent to the user.  */
10788           if (ada_is_tagged_type (type, 0)
10789               || (TYPE_CODE (type) == TYPE_CODE_REF
10790                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10791             {
10792               /* Tagged types are a little special in the fact that the real
10793                  type is dynamic and can only be determined by inspecting the
10794                  object's tag.  This means that we need to get the object's
10795                  value first (EVAL_NORMAL) and then extract the actual object
10796                  type from its tag.
10797
10798                  Note that we cannot skip the final step where we extract
10799                  the object type from its tag, because the EVAL_NORMAL phase
10800                  results in dynamic components being resolved into fixed ones.
10801                  This can cause problems when trying to print the type
10802                  description of tagged types whose parent has a dynamic size:
10803                  We use the type name of the "_parent" component in order
10804                  to print the name of the ancestor type in the type description.
10805                  If that component had a dynamic size, the resolution into
10806                  a fixed type would result in the loss of that type name,
10807                  thus preventing us from printing the name of the ancestor
10808                  type in the type description.  */
10809               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10810
10811               if (TYPE_CODE (type) != TYPE_CODE_REF)
10812                 {
10813                   struct type *actual_type;
10814
10815                   actual_type = type_from_tag (ada_value_tag (arg1));
10816                   if (actual_type == NULL)
10817                     /* If, for some reason, we were unable to determine
10818                        the actual type from the tag, then use the static
10819                        approximation that we just computed as a fallback.
10820                        This can happen if the debugging information is
10821                        incomplete, for instance.  */
10822                     actual_type = type;
10823                   return value_zero (actual_type, not_lval);
10824                 }
10825               else
10826                 {
10827                   /* In the case of a ref, ada_coerce_ref takes care
10828                      of determining the actual type.  But the evaluation
10829                      should return a ref as it should be valid to ask
10830                      for its address; so rebuild a ref after coerce.  */
10831                   arg1 = ada_coerce_ref (arg1);
10832                   return value_ref (arg1, TYPE_CODE_REF);
10833                 }
10834             }
10835
10836           /* Records and unions for which GNAT encodings have been
10837              generated need to be statically fixed as well.
10838              Otherwise, non-static fixing produces a type where
10839              all dynamic properties are removed, which prevents "ptype"
10840              from being able to completely describe the type.
10841              For instance, a case statement in a variant record would be
10842              replaced by the relevant components based on the actual
10843              value of the discriminants.  */
10844           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10845                && dynamic_template_type (type) != NULL)
10846               || (TYPE_CODE (type) == TYPE_CODE_UNION
10847                   && ada_find_parallel_type (type, "___XVU") != NULL))
10848             {
10849               *pos += 4;
10850               return value_zero (to_static_fixed_type (type), not_lval);
10851             }
10852         }
10853
10854       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10855       return ada_to_fixed_value (arg1);
10856
10857     case OP_FUNCALL:
10858       (*pos) += 2;
10859
10860       /* Allocate arg vector, including space for the function to be
10861          called in argvec[0] and a terminating NULL.  */
10862       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10863       argvec = XALLOCAVEC (struct value *, nargs + 2);
10864
10865       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10866           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10867         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10868                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10869       else
10870         {
10871           for (tem = 0; tem <= nargs; tem += 1)
10872             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10873           argvec[tem] = 0;
10874
10875           if (noside == EVAL_SKIP)
10876             goto nosideret;
10877         }
10878
10879       if (ada_is_constrained_packed_array_type
10880           (desc_base_type (value_type (argvec[0]))))
10881         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10882       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10883                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10884         /* This is a packed array that has already been fixed, and
10885            therefore already coerced to a simple array.  Nothing further
10886            to do.  */
10887         ;
10888       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10889         {
10890           /* Make sure we dereference references so that all the code below
10891              feels like it's really handling the referenced value.  Wrapping
10892              types (for alignment) may be there, so make sure we strip them as
10893              well.  */
10894           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10895         }
10896       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10897                && VALUE_LVAL (argvec[0]) == lval_memory)
10898         argvec[0] = value_addr (argvec[0]);
10899
10900       type = ada_check_typedef (value_type (argvec[0]));
10901
10902       /* Ada allows us to implicitly dereference arrays when subscripting
10903          them.  So, if this is an array typedef (encoding use for array
10904          access types encoded as fat pointers), strip it now.  */
10905       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10906         type = ada_typedef_target_type (type);
10907
10908       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10909         {
10910           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10911             {
10912             case TYPE_CODE_FUNC:
10913               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10914               break;
10915             case TYPE_CODE_ARRAY:
10916               break;
10917             case TYPE_CODE_STRUCT:
10918               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10919                 argvec[0] = ada_value_ind (argvec[0]);
10920               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10921               break;
10922             default:
10923               error (_("cannot subscript or call something of type `%s'"),
10924                      ada_type_name (value_type (argvec[0])));
10925               break;
10926             }
10927         }
10928
10929       switch (TYPE_CODE (type))
10930         {
10931         case TYPE_CODE_FUNC:
10932           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10933             {
10934               if (TYPE_TARGET_TYPE (type) == NULL)
10935                 error_call_unknown_return_type (NULL);
10936               return allocate_value (TYPE_TARGET_TYPE (type));
10937             }
10938           return call_function_by_hand (argvec[0], NULL,
10939                                         gdb::make_array_view (argvec + 1,
10940                                                               nargs));
10941         case TYPE_CODE_INTERNAL_FUNCTION:
10942           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10943             /* We don't know anything about what the internal
10944                function might return, but we have to return
10945                something.  */
10946             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10947                                not_lval);
10948           else
10949             return call_internal_function (exp->gdbarch, exp->language_defn,
10950                                            argvec[0], nargs, argvec + 1);
10951
10952         case TYPE_CODE_STRUCT:
10953           {
10954             int arity;
10955
10956             arity = ada_array_arity (type);
10957             type = ada_array_element_type (type, nargs);
10958             if (type == NULL)
10959               error (_("cannot subscript or call a record"));
10960             if (arity != nargs)
10961               error (_("wrong number of subscripts; expecting %d"), arity);
10962             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10963               return value_zero (ada_aligned_type (type), lval_memory);
10964             return
10965               unwrap_value (ada_value_subscript
10966                             (argvec[0], nargs, argvec + 1));
10967           }
10968         case TYPE_CODE_ARRAY:
10969           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10970             {
10971               type = ada_array_element_type (type, nargs);
10972               if (type == NULL)
10973                 error (_("element type of array unknown"));
10974               else
10975                 return value_zero (ada_aligned_type (type), lval_memory);
10976             }
10977           return
10978             unwrap_value (ada_value_subscript
10979                           (ada_coerce_to_simple_array (argvec[0]),
10980                            nargs, argvec + 1));
10981         case TYPE_CODE_PTR:     /* Pointer to array */
10982           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10983             {
10984               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10985               type = ada_array_element_type (type, nargs);
10986               if (type == NULL)
10987                 error (_("element type of array unknown"));
10988               else
10989                 return value_zero (ada_aligned_type (type), lval_memory);
10990             }
10991           return
10992             unwrap_value (ada_value_ptr_subscript (argvec[0],
10993                                                    nargs, argvec + 1));
10994
10995         default:
10996           error (_("Attempt to index or call something other than an "
10997                    "array or function"));
10998         }
10999
11000     case TERNOP_SLICE:
11001       {
11002         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11003         struct value *low_bound_val =
11004           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11005         struct value *high_bound_val =
11006           evaluate_subexp (NULL_TYPE, exp, pos, noside);
11007         LONGEST low_bound;
11008         LONGEST high_bound;
11009
11010         low_bound_val = coerce_ref (low_bound_val);
11011         high_bound_val = coerce_ref (high_bound_val);
11012         low_bound = value_as_long (low_bound_val);
11013         high_bound = value_as_long (high_bound_val);
11014
11015         if (noside == EVAL_SKIP)
11016           goto nosideret;
11017
11018         /* If this is a reference to an aligner type, then remove all
11019            the aligners.  */
11020         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11021             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
11022           TYPE_TARGET_TYPE (value_type (array)) =
11023             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
11024
11025         if (ada_is_constrained_packed_array_type (value_type (array)))
11026           error (_("cannot slice a packed array"));
11027
11028         /* If this is a reference to an array or an array lvalue,
11029            convert to a pointer.  */
11030         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
11031             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
11032                 && VALUE_LVAL (array) == lval_memory))
11033           array = value_addr (array);
11034
11035         if (noside == EVAL_AVOID_SIDE_EFFECTS
11036             && ada_is_array_descriptor_type (ada_check_typedef
11037                                              (value_type (array))))
11038           return empty_array (ada_type_of_array (array, 0), low_bound,
11039                               high_bound);
11040
11041         array = ada_coerce_to_simple_array_ptr (array);
11042
11043         /* If we have more than one level of pointer indirection,
11044            dereference the value until we get only one level.  */
11045         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
11046                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
11047                      == TYPE_CODE_PTR))
11048           array = value_ind (array);
11049
11050         /* Make sure we really do have an array type before going further,
11051            to avoid a SEGV when trying to get the index type or the target
11052            type later down the road if the debug info generated by
11053            the compiler is incorrect or incomplete.  */
11054         if (!ada_is_simple_array_type (value_type (array)))
11055           error (_("cannot take slice of non-array"));
11056
11057         if (TYPE_CODE (ada_check_typedef (value_type (array)))
11058             == TYPE_CODE_PTR)
11059           {
11060             struct type *type0 = ada_check_typedef (value_type (array));
11061
11062             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
11063               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
11064             else
11065               {
11066                 struct type *arr_type0 =
11067                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
11068
11069                 return ada_value_slice_from_ptr (array, arr_type0,
11070                                                  longest_to_int (low_bound),
11071                                                  longest_to_int (high_bound));
11072               }
11073           }
11074         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11075           return array;
11076         else if (high_bound < low_bound)
11077           return empty_array (value_type (array), low_bound, high_bound);
11078         else
11079           return ada_value_slice (array, longest_to_int (low_bound),
11080                                   longest_to_int (high_bound));
11081       }
11082
11083     case UNOP_IN_RANGE:
11084       (*pos) += 2;
11085       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11086       type = check_typedef (exp->elts[pc + 1].type);
11087
11088       if (noside == EVAL_SKIP)
11089         goto nosideret;
11090
11091       switch (TYPE_CODE (type))
11092         {
11093         default:
11094           lim_warning (_("Membership test incompletely implemented; "
11095                          "always returns true"));
11096           type = language_bool_type (exp->language_defn, exp->gdbarch);
11097           return value_from_longest (type, (LONGEST) 1);
11098
11099         case TYPE_CODE_RANGE:
11100           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
11101           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
11102           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11103           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11104           type = language_bool_type (exp->language_defn, exp->gdbarch);
11105           return
11106             value_from_longest (type,
11107                                 (value_less (arg1, arg3)
11108                                  || value_equal (arg1, arg3))
11109                                 && (value_less (arg2, arg1)
11110                                     || value_equal (arg2, arg1)));
11111         }
11112
11113     case BINOP_IN_BOUNDS:
11114       (*pos) += 2;
11115       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11116       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11117
11118       if (noside == EVAL_SKIP)
11119         goto nosideret;
11120
11121       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11122         {
11123           type = language_bool_type (exp->language_defn, exp->gdbarch);
11124           return value_zero (type, not_lval);
11125         }
11126
11127       tem = longest_to_int (exp->elts[pc + 1].longconst);
11128
11129       type = ada_index_type (value_type (arg2), tem, "range");
11130       if (!type)
11131         type = value_type (arg1);
11132
11133       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11134       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11135
11136       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11137       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11138       type = language_bool_type (exp->language_defn, exp->gdbarch);
11139       return
11140         value_from_longest (type,
11141                             (value_less (arg1, arg3)
11142                              || value_equal (arg1, arg3))
11143                             && (value_less (arg2, arg1)
11144                                 || value_equal (arg2, arg1)));
11145
11146     case TERNOP_IN_RANGE:
11147       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11148       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11149       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11150
11151       if (noside == EVAL_SKIP)
11152         goto nosideret;
11153
11154       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11155       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11156       type = language_bool_type (exp->language_defn, exp->gdbarch);
11157       return
11158         value_from_longest (type,
11159                             (value_less (arg1, arg3)
11160                              || value_equal (arg1, arg3))
11161                             && (value_less (arg2, arg1)
11162                                 || value_equal (arg2, arg1)));
11163
11164     case OP_ATR_FIRST:
11165     case OP_ATR_LAST:
11166     case OP_ATR_LENGTH:
11167       {
11168         struct type *type_arg;
11169
11170         if (exp->elts[*pos].opcode == OP_TYPE)
11171           {
11172             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11173             arg1 = NULL;
11174             type_arg = check_typedef (exp->elts[pc + 2].type);
11175           }
11176         else
11177           {
11178             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11179             type_arg = NULL;
11180           }
11181
11182         if (exp->elts[*pos].opcode != OP_LONG)
11183           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11184         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11185         *pos += 4;
11186
11187         if (noside == EVAL_SKIP)
11188           goto nosideret;
11189
11190         if (type_arg == NULL)
11191           {
11192             arg1 = ada_coerce_ref (arg1);
11193
11194             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11195               arg1 = ada_coerce_to_simple_array (arg1);
11196
11197             if (op == OP_ATR_LENGTH)
11198               type = builtin_type (exp->gdbarch)->builtin_int;
11199             else
11200               {
11201                 type = ada_index_type (value_type (arg1), tem,
11202                                        ada_attribute_name (op));
11203                 if (type == NULL)
11204                   type = builtin_type (exp->gdbarch)->builtin_int;
11205               }
11206
11207             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11208               return allocate_value (type);
11209
11210             switch (op)
11211               {
11212               default:          /* Should never happen.  */
11213                 error (_("unexpected attribute encountered"));
11214               case OP_ATR_FIRST:
11215                 return value_from_longest
11216                         (type, ada_array_bound (arg1, tem, 0));
11217               case OP_ATR_LAST:
11218                 return value_from_longest
11219                         (type, ada_array_bound (arg1, tem, 1));
11220               case OP_ATR_LENGTH:
11221                 return value_from_longest
11222                         (type, ada_array_length (arg1, tem));
11223               }
11224           }
11225         else if (discrete_type_p (type_arg))
11226           {
11227             struct type *range_type;
11228             const char *name = ada_type_name (type_arg);
11229
11230             range_type = NULL;
11231             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11232               range_type = to_fixed_range_type (type_arg, NULL);
11233             if (range_type == NULL)
11234               range_type = type_arg;
11235             switch (op)
11236               {
11237               default:
11238                 error (_("unexpected attribute encountered"));
11239               case OP_ATR_FIRST:
11240                 return value_from_longest 
11241                   (range_type, ada_discrete_type_low_bound (range_type));
11242               case OP_ATR_LAST:
11243                 return value_from_longest
11244                   (range_type, ada_discrete_type_high_bound (range_type));
11245               case OP_ATR_LENGTH:
11246                 error (_("the 'length attribute applies only to array types"));
11247               }
11248           }
11249         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11250           error (_("unimplemented type attribute"));
11251         else
11252           {
11253             LONGEST low, high;
11254
11255             if (ada_is_constrained_packed_array_type (type_arg))
11256               type_arg = decode_constrained_packed_array_type (type_arg);
11257
11258             if (op == OP_ATR_LENGTH)
11259               type = builtin_type (exp->gdbarch)->builtin_int;
11260             else
11261               {
11262                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11263                 if (type == NULL)
11264                   type = builtin_type (exp->gdbarch)->builtin_int;
11265               }
11266
11267             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11268               return allocate_value (type);
11269
11270             switch (op)
11271               {
11272               default:
11273                 error (_("unexpected attribute encountered"));
11274               case OP_ATR_FIRST:
11275                 low = ada_array_bound_from_type (type_arg, tem, 0);
11276                 return value_from_longest (type, low);
11277               case OP_ATR_LAST:
11278                 high = ada_array_bound_from_type (type_arg, tem, 1);
11279                 return value_from_longest (type, high);
11280               case OP_ATR_LENGTH:
11281                 low = ada_array_bound_from_type (type_arg, tem, 0);
11282                 high = ada_array_bound_from_type (type_arg, tem, 1);
11283                 return value_from_longest (type, high - low + 1);
11284               }
11285           }
11286       }
11287
11288     case OP_ATR_TAG:
11289       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11290       if (noside == EVAL_SKIP)
11291         goto nosideret;
11292
11293       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11294         return value_zero (ada_tag_type (arg1), not_lval);
11295
11296       return ada_value_tag (arg1);
11297
11298     case OP_ATR_MIN:
11299     case OP_ATR_MAX:
11300       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11301       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11302       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11303       if (noside == EVAL_SKIP)
11304         goto nosideret;
11305       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11306         return value_zero (value_type (arg1), not_lval);
11307       else
11308         {
11309           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11310           return value_binop (arg1, arg2,
11311                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11312         }
11313
11314     case OP_ATR_MODULUS:
11315       {
11316         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11317
11318         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11319         if (noside == EVAL_SKIP)
11320           goto nosideret;
11321
11322         if (!ada_is_modular_type (type_arg))
11323           error (_("'modulus must be applied to modular type"));
11324
11325         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11326                                    ada_modulus (type_arg));
11327       }
11328
11329
11330     case OP_ATR_POS:
11331       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11332       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11333       if (noside == EVAL_SKIP)
11334         goto nosideret;
11335       type = builtin_type (exp->gdbarch)->builtin_int;
11336       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11337         return value_zero (type, not_lval);
11338       else
11339         return value_pos_atr (type, arg1);
11340
11341     case OP_ATR_SIZE:
11342       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11343       type = value_type (arg1);
11344
11345       /* If the argument is a reference, then dereference its type, since
11346          the user is really asking for the size of the actual object,
11347          not the size of the pointer.  */
11348       if (TYPE_CODE (type) == TYPE_CODE_REF)
11349         type = TYPE_TARGET_TYPE (type);
11350
11351       if (noside == EVAL_SKIP)
11352         goto nosideret;
11353       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11354         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11355       else
11356         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11357                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11358
11359     case OP_ATR_VAL:
11360       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11361       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11362       type = exp->elts[pc + 2].type;
11363       if (noside == EVAL_SKIP)
11364         goto nosideret;
11365       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11366         return value_zero (type, not_lval);
11367       else
11368         return value_val_atr (type, arg1);
11369
11370     case BINOP_EXP:
11371       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11372       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11373       if (noside == EVAL_SKIP)
11374         goto nosideret;
11375       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11376         return value_zero (value_type (arg1), not_lval);
11377       else
11378         {
11379           /* For integer exponentiation operations,
11380              only promote the first argument.  */
11381           if (is_integral_type (value_type (arg2)))
11382             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11383           else
11384             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11385
11386           return value_binop (arg1, arg2, op);
11387         }
11388
11389     case UNOP_PLUS:
11390       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11391       if (noside == EVAL_SKIP)
11392         goto nosideret;
11393       else
11394         return arg1;
11395
11396     case UNOP_ABS:
11397       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11398       if (noside == EVAL_SKIP)
11399         goto nosideret;
11400       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11401       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11402         return value_neg (arg1);
11403       else
11404         return arg1;
11405
11406     case UNOP_IND:
11407       preeval_pos = *pos;
11408       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11409       if (noside == EVAL_SKIP)
11410         goto nosideret;
11411       type = ada_check_typedef (value_type (arg1));
11412       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11413         {
11414           if (ada_is_array_descriptor_type (type))
11415             /* GDB allows dereferencing GNAT array descriptors.  */
11416             {
11417               struct type *arrType = ada_type_of_array (arg1, 0);
11418
11419               if (arrType == NULL)
11420                 error (_("Attempt to dereference null array pointer."));
11421               return value_at_lazy (arrType, 0);
11422             }
11423           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11424                    || TYPE_CODE (type) == TYPE_CODE_REF
11425                    /* In C you can dereference an array to get the 1st elt.  */
11426                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11427             {
11428             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11429                only be determined by inspecting the object's tag.
11430                This means that we need to evaluate completely the
11431                expression in order to get its type.  */
11432
11433               if ((TYPE_CODE (type) == TYPE_CODE_REF
11434                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11435                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11436                 {
11437                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11438                                           EVAL_NORMAL);
11439                   type = value_type (ada_value_ind (arg1));
11440                 }
11441               else
11442                 {
11443                   type = to_static_fixed_type
11444                     (ada_aligned_type
11445                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11446                 }
11447               ada_ensure_varsize_limit (type);
11448               return value_zero (type, lval_memory);
11449             }
11450           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11451             {
11452               /* GDB allows dereferencing an int.  */
11453               if (expect_type == NULL)
11454                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11455                                    lval_memory);
11456               else
11457                 {
11458                   expect_type = 
11459                     to_static_fixed_type (ada_aligned_type (expect_type));
11460                   return value_zero (expect_type, lval_memory);
11461                 }
11462             }
11463           else
11464             error (_("Attempt to take contents of a non-pointer value."));
11465         }
11466       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11467       type = ada_check_typedef (value_type (arg1));
11468
11469       if (TYPE_CODE (type) == TYPE_CODE_INT)
11470           /* GDB allows dereferencing an int.  If we were given
11471              the expect_type, then use that as the target type.
11472              Otherwise, assume that the target type is an int.  */
11473         {
11474           if (expect_type != NULL)
11475             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11476                                               arg1));
11477           else
11478             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11479                                   (CORE_ADDR) value_as_address (arg1));
11480         }
11481
11482       if (ada_is_array_descriptor_type (type))
11483         /* GDB allows dereferencing GNAT array descriptors.  */
11484         return ada_coerce_to_simple_array (arg1);
11485       else
11486         return ada_value_ind (arg1);
11487
11488     case STRUCTOP_STRUCT:
11489       tem = longest_to_int (exp->elts[pc + 1].longconst);
11490       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11491       preeval_pos = *pos;
11492       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11493       if (noside == EVAL_SKIP)
11494         goto nosideret;
11495       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11496         {
11497           struct type *type1 = value_type (arg1);
11498
11499           if (ada_is_tagged_type (type1, 1))
11500             {
11501               type = ada_lookup_struct_elt_type (type1,
11502                                                  &exp->elts[pc + 2].string,
11503                                                  1, 1);
11504
11505               /* If the field is not found, check if it exists in the
11506                  extension of this object's type. This means that we
11507                  need to evaluate completely the expression.  */
11508
11509               if (type == NULL)
11510                 {
11511                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11512                                           EVAL_NORMAL);
11513                   arg1 = ada_value_struct_elt (arg1,
11514                                                &exp->elts[pc + 2].string,
11515                                                0);
11516                   arg1 = unwrap_value (arg1);
11517                   type = value_type (ada_to_fixed_value (arg1));
11518                 }
11519             }
11520           else
11521             type =
11522               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11523                                           0);
11524
11525           return value_zero (ada_aligned_type (type), lval_memory);
11526         }
11527       else
11528         {
11529           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11530           arg1 = unwrap_value (arg1);
11531           return ada_to_fixed_value (arg1);
11532         }
11533
11534     case OP_TYPE:
11535       /* The value is not supposed to be used.  This is here to make it
11536          easier to accommodate expressions that contain types.  */
11537       (*pos) += 2;
11538       if (noside == EVAL_SKIP)
11539         goto nosideret;
11540       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11541         return allocate_value (exp->elts[pc + 1].type);
11542       else
11543         error (_("Attempt to use a type name as an expression"));
11544
11545     case OP_AGGREGATE:
11546     case OP_CHOICES:
11547     case OP_OTHERS:
11548     case OP_DISCRETE_RANGE:
11549     case OP_POSITIONAL:
11550     case OP_NAME:
11551       if (noside == EVAL_NORMAL)
11552         switch (op) 
11553           {
11554           case OP_NAME:
11555             error (_("Undefined name, ambiguous name, or renaming used in "
11556                      "component association: %s."), &exp->elts[pc+2].string);
11557           case OP_AGGREGATE:
11558             error (_("Aggregates only allowed on the right of an assignment"));
11559           default:
11560             internal_error (__FILE__, __LINE__,
11561                             _("aggregate apparently mangled"));
11562           }
11563
11564       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11565       *pos += oplen - 1;
11566       for (tem = 0; tem < nargs; tem += 1) 
11567         ada_evaluate_subexp (NULL, exp, pos, noside);
11568       goto nosideret;
11569     }
11570
11571 nosideret:
11572   return eval_skip_value (exp);
11573 }
11574 \f
11575
11576                                 /* Fixed point */
11577
11578 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11579    type name that encodes the 'small and 'delta information.
11580    Otherwise, return NULL.  */
11581
11582 static const char *
11583 fixed_type_info (struct type *type)
11584 {
11585   const char *name = ada_type_name (type);
11586   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11587
11588   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11589     {
11590       const char *tail = strstr (name, "___XF_");
11591
11592       if (tail == NULL)
11593         return NULL;
11594       else
11595         return tail + 5;
11596     }
11597   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11598     return fixed_type_info (TYPE_TARGET_TYPE (type));
11599   else
11600     return NULL;
11601 }
11602
11603 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11604
11605 int
11606 ada_is_fixed_point_type (struct type *type)
11607 {
11608   return fixed_type_info (type) != NULL;
11609 }
11610
11611 /* Return non-zero iff TYPE represents a System.Address type.  */
11612
11613 int
11614 ada_is_system_address_type (struct type *type)
11615 {
11616   return (TYPE_NAME (type)
11617           && strcmp (TYPE_NAME (type), "system__address") == 0);
11618 }
11619
11620 /* Assuming that TYPE is the representation of an Ada fixed-point
11621    type, return the target floating-point type to be used to represent
11622    of this type during internal computation.  */
11623
11624 static struct type *
11625 ada_scaling_type (struct type *type)
11626 {
11627   return builtin_type (get_type_arch (type))->builtin_long_double;
11628 }
11629
11630 /* Assuming that TYPE is the representation of an Ada fixed-point
11631    type, return its delta, or NULL if the type is malformed and the
11632    delta cannot be determined.  */
11633
11634 struct value *
11635 ada_delta (struct type *type)
11636 {
11637   const char *encoding = fixed_type_info (type);
11638   struct type *scale_type = ada_scaling_type (type);
11639
11640   long long num, den;
11641
11642   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11643     return nullptr;
11644   else
11645     return value_binop (value_from_longest (scale_type, num),
11646                         value_from_longest (scale_type, den), BINOP_DIV);
11647 }
11648
11649 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11650    factor ('SMALL value) associated with the type.  */
11651
11652 struct value *
11653 ada_scaling_factor (struct type *type)
11654 {
11655   const char *encoding = fixed_type_info (type);
11656   struct type *scale_type = ada_scaling_type (type);
11657
11658   long long num0, den0, num1, den1;
11659   int n;
11660
11661   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11662               &num0, &den0, &num1, &den1);
11663
11664   if (n < 2)
11665     return value_from_longest (scale_type, 1);
11666   else if (n == 4)
11667     return value_binop (value_from_longest (scale_type, num1),
11668                         value_from_longest (scale_type, den1), BINOP_DIV);
11669   else
11670     return value_binop (value_from_longest (scale_type, num0),
11671                         value_from_longest (scale_type, den0), BINOP_DIV);
11672 }
11673
11674 \f
11675
11676                                 /* Range types */
11677
11678 /* Scan STR beginning at position K for a discriminant name, and
11679    return the value of that discriminant field of DVAL in *PX.  If
11680    PNEW_K is not null, put the position of the character beyond the
11681    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11682    not alter *PX and *PNEW_K if unsuccessful.  */
11683
11684 static int
11685 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11686                     int *pnew_k)
11687 {
11688   static char *bound_buffer = NULL;
11689   static size_t bound_buffer_len = 0;
11690   const char *pstart, *pend, *bound;
11691   struct value *bound_val;
11692
11693   if (dval == NULL || str == NULL || str[k] == '\0')
11694     return 0;
11695
11696   pstart = str + k;
11697   pend = strstr (pstart, "__");
11698   if (pend == NULL)
11699     {
11700       bound = pstart;
11701       k += strlen (bound);
11702     }
11703   else
11704     {
11705       int len = pend - pstart;
11706
11707       /* Strip __ and beyond.  */
11708       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11709       strncpy (bound_buffer, pstart, len);
11710       bound_buffer[len] = '\0';
11711
11712       bound = bound_buffer;
11713       k = pend - str;
11714     }
11715
11716   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11717   if (bound_val == NULL)
11718     return 0;
11719
11720   *px = value_as_long (bound_val);
11721   if (pnew_k != NULL)
11722     *pnew_k = k;
11723   return 1;
11724 }
11725
11726 /* Value of variable named NAME in the current environment.  If
11727    no such variable found, then if ERR_MSG is null, returns 0, and
11728    otherwise causes an error with message ERR_MSG.  */
11729
11730 static struct value *
11731 get_var_value (const char *name, const char *err_msg)
11732 {
11733   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11734
11735   std::vector<struct block_symbol> syms;
11736   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11737                                              get_selected_block (0),
11738                                              VAR_DOMAIN, &syms, 1);
11739
11740   if (nsyms != 1)
11741     {
11742       if (err_msg == NULL)
11743         return 0;
11744       else
11745         error (("%s"), err_msg);
11746     }
11747
11748   return value_of_variable (syms[0].symbol, syms[0].block);
11749 }
11750
11751 /* Value of integer variable named NAME in the current environment.
11752    If no such variable is found, returns false.  Otherwise, sets VALUE
11753    to the variable's value and returns true.  */
11754
11755 bool
11756 get_int_var_value (const char *name, LONGEST &value)
11757 {
11758   struct value *var_val = get_var_value (name, 0);
11759
11760   if (var_val == 0)
11761     return false;
11762
11763   value = value_as_long (var_val);
11764   return true;
11765 }
11766
11767
11768 /* Return a range type whose base type is that of the range type named
11769    NAME in the current environment, and whose bounds are calculated
11770    from NAME according to the GNAT range encoding conventions.
11771    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11772    corresponding range type from debug information; fall back to using it
11773    if symbol lookup fails.  If a new type must be created, allocate it
11774    like ORIG_TYPE was.  The bounds information, in general, is encoded
11775    in NAME, the base type given in the named range type.  */
11776
11777 static struct type *
11778 to_fixed_range_type (struct type *raw_type, struct value *dval)
11779 {
11780   const char *name;
11781   struct type *base_type;
11782   const char *subtype_info;
11783
11784   gdb_assert (raw_type != NULL);
11785   gdb_assert (TYPE_NAME (raw_type) != NULL);
11786
11787   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11788     base_type = TYPE_TARGET_TYPE (raw_type);
11789   else
11790     base_type = raw_type;
11791
11792   name = TYPE_NAME (raw_type);
11793   subtype_info = strstr (name, "___XD");
11794   if (subtype_info == NULL)
11795     {
11796       LONGEST L = ada_discrete_type_low_bound (raw_type);
11797       LONGEST U = ada_discrete_type_high_bound (raw_type);
11798
11799       if (L < INT_MIN || U > INT_MAX)
11800         return raw_type;
11801       else
11802         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11803                                          L, U);
11804     }
11805   else
11806     {
11807       static char *name_buf = NULL;
11808       static size_t name_len = 0;
11809       int prefix_len = subtype_info - name;
11810       LONGEST L, U;
11811       struct type *type;
11812       const char *bounds_str;
11813       int n;
11814
11815       GROW_VECT (name_buf, name_len, prefix_len + 5);
11816       strncpy (name_buf, name, prefix_len);
11817       name_buf[prefix_len] = '\0';
11818
11819       subtype_info += 5;
11820       bounds_str = strchr (subtype_info, '_');
11821       n = 1;
11822
11823       if (*subtype_info == 'L')
11824         {
11825           if (!ada_scan_number (bounds_str, n, &L, &n)
11826               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11827             return raw_type;
11828           if (bounds_str[n] == '_')
11829             n += 2;
11830           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11831             n += 1;
11832           subtype_info += 1;
11833         }
11834       else
11835         {
11836           strcpy (name_buf + prefix_len, "___L");
11837           if (!get_int_var_value (name_buf, L))
11838             {
11839               lim_warning (_("Unknown lower bound, using 1."));
11840               L = 1;
11841             }
11842         }
11843
11844       if (*subtype_info == 'U')
11845         {
11846           if (!ada_scan_number (bounds_str, n, &U, &n)
11847               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11848             return raw_type;
11849         }
11850       else
11851         {
11852           strcpy (name_buf + prefix_len, "___U");
11853           if (!get_int_var_value (name_buf, U))
11854             {
11855               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11856               U = L;
11857             }
11858         }
11859
11860       type = create_static_range_type (alloc_type_copy (raw_type),
11861                                        base_type, L, U);
11862       /* create_static_range_type alters the resulting type's length
11863          to match the size of the base_type, which is not what we want.
11864          Set it back to the original range type's length.  */
11865       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11866       TYPE_NAME (type) = name;
11867       return type;
11868     }
11869 }
11870
11871 /* True iff NAME is the name of a range type.  */
11872
11873 int
11874 ada_is_range_type_name (const char *name)
11875 {
11876   return (name != NULL && strstr (name, "___XD"));
11877 }
11878 \f
11879
11880                                 /* Modular types */
11881
11882 /* True iff TYPE is an Ada modular type.  */
11883
11884 int
11885 ada_is_modular_type (struct type *type)
11886 {
11887   struct type *subranged_type = get_base_type (type);
11888
11889   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11890           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11891           && TYPE_UNSIGNED (subranged_type));
11892 }
11893
11894 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11895
11896 ULONGEST
11897 ada_modulus (struct type *type)
11898 {
11899   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11900 }
11901 \f
11902
11903 /* Ada exception catchpoint support:
11904    ---------------------------------
11905
11906    We support 3 kinds of exception catchpoints:
11907      . catchpoints on Ada exceptions
11908      . catchpoints on unhandled Ada exceptions
11909      . catchpoints on failed assertions
11910
11911    Exceptions raised during failed assertions, or unhandled exceptions
11912    could perfectly be caught with the general catchpoint on Ada exceptions.
11913    However, we can easily differentiate these two special cases, and having
11914    the option to distinguish these two cases from the rest can be useful
11915    to zero-in on certain situations.
11916
11917    Exception catchpoints are a specialized form of breakpoint,
11918    since they rely on inserting breakpoints inside known routines
11919    of the GNAT runtime.  The implementation therefore uses a standard
11920    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11921    of breakpoint_ops.
11922
11923    Support in the runtime for exception catchpoints have been changed
11924    a few times already, and these changes affect the implementation
11925    of these catchpoints.  In order to be able to support several
11926    variants of the runtime, we use a sniffer that will determine
11927    the runtime variant used by the program being debugged.  */
11928
11929 /* Ada's standard exceptions.
11930
11931    The Ada 83 standard also defined Numeric_Error.  But there so many
11932    situations where it was unclear from the Ada 83 Reference Manual
11933    (RM) whether Constraint_Error or Numeric_Error should be raised,
11934    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11935    Interpretation saying that anytime the RM says that Numeric_Error
11936    should be raised, the implementation may raise Constraint_Error.
11937    Ada 95 went one step further and pretty much removed Numeric_Error
11938    from the list of standard exceptions (it made it a renaming of
11939    Constraint_Error, to help preserve compatibility when compiling
11940    an Ada83 compiler). As such, we do not include Numeric_Error from
11941    this list of standard exceptions.  */
11942
11943 static const char *standard_exc[] = {
11944   "constraint_error",
11945   "program_error",
11946   "storage_error",
11947   "tasking_error"
11948 };
11949
11950 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11951
11952 /* A structure that describes how to support exception catchpoints
11953    for a given executable.  */
11954
11955 struct exception_support_info
11956 {
11957    /* The name of the symbol to break on in order to insert
11958       a catchpoint on exceptions.  */
11959    const char *catch_exception_sym;
11960
11961    /* The name of the symbol to break on in order to insert
11962       a catchpoint on unhandled exceptions.  */
11963    const char *catch_exception_unhandled_sym;
11964
11965    /* The name of the symbol to break on in order to insert
11966       a catchpoint on failed assertions.  */
11967    const char *catch_assert_sym;
11968
11969    /* The name of the symbol to break on in order to insert
11970       a catchpoint on exception handling.  */
11971    const char *catch_handlers_sym;
11972
11973    /* Assuming that the inferior just triggered an unhandled exception
11974       catchpoint, this function is responsible for returning the address
11975       in inferior memory where the name of that exception is stored.
11976       Return zero if the address could not be computed.  */
11977    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11978 };
11979
11980 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11981 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11982
11983 /* The following exception support info structure describes how to
11984    implement exception catchpoints with the latest version of the
11985    Ada runtime (as of 2007-03-06).  */
11986
11987 static const struct exception_support_info default_exception_support_info =
11988 {
11989   "__gnat_debug_raise_exception", /* catch_exception_sym */
11990   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11991   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11992   "__gnat_begin_handler", /* catch_handlers_sym */
11993   ada_unhandled_exception_name_addr
11994 };
11995
11996 /* The following exception support info structure describes how to
11997    implement exception catchpoints with a slightly older version
11998    of the Ada runtime.  */
11999
12000 static const struct exception_support_info exception_support_info_fallback =
12001 {
12002   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
12003   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
12004   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
12005   "__gnat_begin_handler", /* catch_handlers_sym */
12006   ada_unhandled_exception_name_addr_from_raise
12007 };
12008
12009 /* Return nonzero if we can detect the exception support routines
12010    described in EINFO.
12011
12012    This function errors out if an abnormal situation is detected
12013    (for instance, if we find the exception support routines, but
12014    that support is found to be incomplete).  */
12015
12016 static int
12017 ada_has_this_exception_support (const struct exception_support_info *einfo)
12018 {
12019   struct symbol *sym;
12020
12021   /* The symbol we're looking up is provided by a unit in the GNAT runtime
12022      that should be compiled with debugging information.  As a result, we
12023      expect to find that symbol in the symtabs.  */
12024
12025   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
12026   if (sym == NULL)
12027     {
12028       /* Perhaps we did not find our symbol because the Ada runtime was
12029          compiled without debugging info, or simply stripped of it.
12030          It happens on some GNU/Linux distributions for instance, where
12031          users have to install a separate debug package in order to get
12032          the runtime's debugging info.  In that situation, let the user
12033          know why we cannot insert an Ada exception catchpoint.
12034
12035          Note: Just for the purpose of inserting our Ada exception
12036          catchpoint, we could rely purely on the associated minimal symbol.
12037          But we would be operating in degraded mode anyway, since we are
12038          still lacking the debugging info needed later on to extract
12039          the name of the exception being raised (this name is printed in
12040          the catchpoint message, and is also used when trying to catch
12041          a specific exception).  We do not handle this case for now.  */
12042       struct bound_minimal_symbol msym
12043         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
12044
12045       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
12046         error (_("Your Ada runtime appears to be missing some debugging "
12047                  "information.\nCannot insert Ada exception catchpoint "
12048                  "in this configuration."));
12049
12050       return 0;
12051     }
12052
12053   /* Make sure that the symbol we found corresponds to a function.  */
12054
12055   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
12056     error (_("Symbol \"%s\" is not a function (class = %d)"),
12057            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
12058
12059   return 1;
12060 }
12061
12062 /* Inspect the Ada runtime and determine which exception info structure
12063    should be used to provide support for exception catchpoints.
12064
12065    This function will always set the per-inferior exception_info,
12066    or raise an error.  */
12067
12068 static void
12069 ada_exception_support_info_sniffer (void)
12070 {
12071   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12072
12073   /* If the exception info is already known, then no need to recompute it.  */
12074   if (data->exception_info != NULL)
12075     return;
12076
12077   /* Check the latest (default) exception support info.  */
12078   if (ada_has_this_exception_support (&default_exception_support_info))
12079     {
12080       data->exception_info = &default_exception_support_info;
12081       return;
12082     }
12083
12084   /* Try our fallback exception suport info.  */
12085   if (ada_has_this_exception_support (&exception_support_info_fallback))
12086     {
12087       data->exception_info = &exception_support_info_fallback;
12088       return;
12089     }
12090
12091   /* Sometimes, it is normal for us to not be able to find the routine
12092      we are looking for.  This happens when the program is linked with
12093      the shared version of the GNAT runtime, and the program has not been
12094      started yet.  Inform the user of these two possible causes if
12095      applicable.  */
12096
12097   if (ada_update_initial_language (language_unknown) != language_ada)
12098     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
12099
12100   /* If the symbol does not exist, then check that the program is
12101      already started, to make sure that shared libraries have been
12102      loaded.  If it is not started, this may mean that the symbol is
12103      in a shared library.  */
12104
12105   if (inferior_ptid.pid () == 0)
12106     error (_("Unable to insert catchpoint. Try to start the program first."));
12107
12108   /* At this point, we know that we are debugging an Ada program and
12109      that the inferior has been started, but we still are not able to
12110      find the run-time symbols.  That can mean that we are in
12111      configurable run time mode, or that a-except as been optimized
12112      out by the linker...  In any case, at this point it is not worth
12113      supporting this feature.  */
12114
12115   error (_("Cannot insert Ada exception catchpoints in this configuration."));
12116 }
12117
12118 /* True iff FRAME is very likely to be that of a function that is
12119    part of the runtime system.  This is all very heuristic, but is
12120    intended to be used as advice as to what frames are uninteresting
12121    to most users.  */
12122
12123 static int
12124 is_known_support_routine (struct frame_info *frame)
12125 {
12126   enum language func_lang;
12127   int i;
12128   const char *fullname;
12129
12130   /* If this code does not have any debugging information (no symtab),
12131      This cannot be any user code.  */
12132
12133   symtab_and_line sal = find_frame_sal (frame);
12134   if (sal.symtab == NULL)
12135     return 1;
12136
12137   /* If there is a symtab, but the associated source file cannot be
12138      located, then assume this is not user code:  Selecting a frame
12139      for which we cannot display the code would not be very helpful
12140      for the user.  This should also take care of case such as VxWorks
12141      where the kernel has some debugging info provided for a few units.  */
12142
12143   fullname = symtab_to_fullname (sal.symtab);
12144   if (access (fullname, R_OK) != 0)
12145     return 1;
12146
12147   /* Check the unit filename againt the Ada runtime file naming.
12148      We also check the name of the objfile against the name of some
12149      known system libraries that sometimes come with debugging info
12150      too.  */
12151
12152   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12153     {
12154       re_comp (known_runtime_file_name_patterns[i]);
12155       if (re_exec (lbasename (sal.symtab->filename)))
12156         return 1;
12157       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12158           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12159         return 1;
12160     }
12161
12162   /* Check whether the function is a GNAT-generated entity.  */
12163
12164   gdb::unique_xmalloc_ptr<char> func_name
12165     = find_frame_funname (frame, &func_lang, NULL);
12166   if (func_name == NULL)
12167     return 1;
12168
12169   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12170     {
12171       re_comp (known_auxiliary_function_name_patterns[i]);
12172       if (re_exec (func_name.get ()))
12173         return 1;
12174     }
12175
12176   return 0;
12177 }
12178
12179 /* Find the first frame that contains debugging information and that is not
12180    part of the Ada run-time, starting from FI and moving upward.  */
12181
12182 void
12183 ada_find_printable_frame (struct frame_info *fi)
12184 {
12185   for (; fi != NULL; fi = get_prev_frame (fi))
12186     {
12187       if (!is_known_support_routine (fi))
12188         {
12189           select_frame (fi);
12190           break;
12191         }
12192     }
12193
12194 }
12195
12196 /* Assuming that the inferior just triggered an unhandled exception
12197    catchpoint, return the address in inferior memory where the name
12198    of the exception is stored.
12199    
12200    Return zero if the address could not be computed.  */
12201
12202 static CORE_ADDR
12203 ada_unhandled_exception_name_addr (void)
12204 {
12205   return parse_and_eval_address ("e.full_name");
12206 }
12207
12208 /* Same as ada_unhandled_exception_name_addr, except that this function
12209    should be used when the inferior uses an older version of the runtime,
12210    where the exception name needs to be extracted from a specific frame
12211    several frames up in the callstack.  */
12212
12213 static CORE_ADDR
12214 ada_unhandled_exception_name_addr_from_raise (void)
12215 {
12216   int frame_level;
12217   struct frame_info *fi;
12218   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12219
12220   /* To determine the name of this exception, we need to select
12221      the frame corresponding to RAISE_SYM_NAME.  This frame is
12222      at least 3 levels up, so we simply skip the first 3 frames
12223      without checking the name of their associated function.  */
12224   fi = get_current_frame ();
12225   for (frame_level = 0; frame_level < 3; frame_level += 1)
12226     if (fi != NULL)
12227       fi = get_prev_frame (fi); 
12228
12229   while (fi != NULL)
12230     {
12231       enum language func_lang;
12232
12233       gdb::unique_xmalloc_ptr<char> func_name
12234         = find_frame_funname (fi, &func_lang, NULL);
12235       if (func_name != NULL)
12236         {
12237           if (strcmp (func_name.get (),
12238                       data->exception_info->catch_exception_sym) == 0)
12239             break; /* We found the frame we were looking for...  */
12240         }
12241       fi = get_prev_frame (fi);
12242     }
12243
12244   if (fi == NULL)
12245     return 0;
12246
12247   select_frame (fi);
12248   return parse_and_eval_address ("id.full_name");
12249 }
12250
12251 /* Assuming the inferior just triggered an Ada exception catchpoint
12252    (of any type), return the address in inferior memory where the name
12253    of the exception is stored, if applicable.
12254
12255    Assumes the selected frame is the current frame.
12256
12257    Return zero if the address could not be computed, or if not relevant.  */
12258
12259 static CORE_ADDR
12260 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12261                            struct breakpoint *b)
12262 {
12263   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12264
12265   switch (ex)
12266     {
12267       case ada_catch_exception:
12268         return (parse_and_eval_address ("e.full_name"));
12269         break;
12270
12271       case ada_catch_exception_unhandled:
12272         return data->exception_info->unhandled_exception_name_addr ();
12273         break;
12274
12275       case ada_catch_handlers:
12276         return 0;  /* The runtimes does not provide access to the exception
12277                       name.  */
12278         break;
12279
12280       case ada_catch_assert:
12281         return 0;  /* Exception name is not relevant in this case.  */
12282         break;
12283
12284       default:
12285         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12286         break;
12287     }
12288
12289   return 0; /* Should never be reached.  */
12290 }
12291
12292 /* Assuming the inferior is stopped at an exception catchpoint,
12293    return the message which was associated to the exception, if
12294    available.  Return NULL if the message could not be retrieved.
12295
12296    Note: The exception message can be associated to an exception
12297    either through the use of the Raise_Exception function, or
12298    more simply (Ada 2005 and later), via:
12299
12300        raise Exception_Name with "exception message";
12301
12302    */
12303
12304 static gdb::unique_xmalloc_ptr<char>
12305 ada_exception_message_1 (void)
12306 {
12307   struct value *e_msg_val;
12308   int e_msg_len;
12309
12310   /* For runtimes that support this feature, the exception message
12311      is passed as an unbounded string argument called "message".  */
12312   e_msg_val = parse_and_eval ("message");
12313   if (e_msg_val == NULL)
12314     return NULL; /* Exception message not supported.  */
12315
12316   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12317   gdb_assert (e_msg_val != NULL);
12318   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12319
12320   /* If the message string is empty, then treat it as if there was
12321      no exception message.  */
12322   if (e_msg_len <= 0)
12323     return NULL;
12324
12325   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12326   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12327   e_msg.get ()[e_msg_len] = '\0';
12328
12329   return e_msg;
12330 }
12331
12332 /* Same as ada_exception_message_1, except that all exceptions are
12333    contained here (returning NULL instead).  */
12334
12335 static gdb::unique_xmalloc_ptr<char>
12336 ada_exception_message (void)
12337 {
12338   gdb::unique_xmalloc_ptr<char> e_msg;
12339
12340   TRY
12341     {
12342       e_msg = ada_exception_message_1 ();
12343     }
12344   CATCH (e, RETURN_MASK_ERROR)
12345     {
12346       e_msg.reset (nullptr);
12347     }
12348   END_CATCH
12349
12350   return e_msg;
12351 }
12352
12353 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12354    any error that ada_exception_name_addr_1 might cause to be thrown.
12355    When an error is intercepted, a warning with the error message is printed,
12356    and zero is returned.  */
12357
12358 static CORE_ADDR
12359 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12360                          struct breakpoint *b)
12361 {
12362   CORE_ADDR result = 0;
12363
12364   TRY
12365     {
12366       result = ada_exception_name_addr_1 (ex, b);
12367     }
12368
12369   CATCH (e, RETURN_MASK_ERROR)
12370     {
12371       warning (_("failed to get exception name: %s"), e.message);
12372       return 0;
12373     }
12374   END_CATCH
12375
12376   return result;
12377 }
12378
12379 static std::string ada_exception_catchpoint_cond_string
12380   (const char *excep_string,
12381    enum ada_exception_catchpoint_kind ex);
12382
12383 /* Ada catchpoints.
12384
12385    In the case of catchpoints on Ada exceptions, the catchpoint will
12386    stop the target on every exception the program throws.  When a user
12387    specifies the name of a specific exception, we translate this
12388    request into a condition expression (in text form), and then parse
12389    it into an expression stored in each of the catchpoint's locations.
12390    We then use this condition to check whether the exception that was
12391    raised is the one the user is interested in.  If not, then the
12392    target is resumed again.  We store the name of the requested
12393    exception, in order to be able to re-set the condition expression
12394    when symbols change.  */
12395
12396 /* An instance of this type is used to represent an Ada catchpoint
12397    breakpoint location.  */
12398
12399 class ada_catchpoint_location : public bp_location
12400 {
12401 public:
12402   ada_catchpoint_location (breakpoint *owner)
12403     : bp_location (owner)
12404   {}
12405
12406   /* The condition that checks whether the exception that was raised
12407      is the specific exception the user specified on catchpoint
12408      creation.  */
12409   expression_up excep_cond_expr;
12410 };
12411
12412 /* An instance of this type is used to represent an Ada catchpoint.  */
12413
12414 struct ada_catchpoint : public breakpoint
12415 {
12416   /* The name of the specific exception the user specified.  */
12417   std::string excep_string;
12418 };
12419
12420 /* Parse the exception condition string in the context of each of the
12421    catchpoint's locations, and store them for later evaluation.  */
12422
12423 static void
12424 create_excep_cond_exprs (struct ada_catchpoint *c,
12425                          enum ada_exception_catchpoint_kind ex)
12426 {
12427   struct bp_location *bl;
12428
12429   /* Nothing to do if there's no specific exception to catch.  */
12430   if (c->excep_string.empty ())
12431     return;
12432
12433   /* Same if there are no locations... */
12434   if (c->loc == NULL)
12435     return;
12436
12437   /* Compute the condition expression in text form, from the specific
12438      expection we want to catch.  */
12439   std::string cond_string
12440     = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
12441
12442   /* Iterate over all the catchpoint's locations, and parse an
12443      expression for each.  */
12444   for (bl = c->loc; bl != NULL; bl = bl->next)
12445     {
12446       struct ada_catchpoint_location *ada_loc
12447         = (struct ada_catchpoint_location *) bl;
12448       expression_up exp;
12449
12450       if (!bl->shlib_disabled)
12451         {
12452           const char *s;
12453
12454           s = cond_string.c_str ();
12455           TRY
12456             {
12457               exp = parse_exp_1 (&s, bl->address,
12458                                  block_for_pc (bl->address),
12459                                  0);
12460             }
12461           CATCH (e, RETURN_MASK_ERROR)
12462             {
12463               warning (_("failed to reevaluate internal exception condition "
12464                          "for catchpoint %d: %s"),
12465                        c->number, e.message);
12466             }
12467           END_CATCH
12468         }
12469
12470       ada_loc->excep_cond_expr = std::move (exp);
12471     }
12472 }
12473
12474 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12475    structure for all exception catchpoint kinds.  */
12476
12477 static struct bp_location *
12478 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12479                              struct breakpoint *self)
12480 {
12481   return new ada_catchpoint_location (self);
12482 }
12483
12484 /* Implement the RE_SET method in the breakpoint_ops structure for all
12485    exception catchpoint kinds.  */
12486
12487 static void
12488 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12489 {
12490   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12491
12492   /* Call the base class's method.  This updates the catchpoint's
12493      locations.  */
12494   bkpt_breakpoint_ops.re_set (b);
12495
12496   /* Reparse the exception conditional expressions.  One for each
12497      location.  */
12498   create_excep_cond_exprs (c, ex);
12499 }
12500
12501 /* Returns true if we should stop for this breakpoint hit.  If the
12502    user specified a specific exception, we only want to cause a stop
12503    if the program thrown that exception.  */
12504
12505 static int
12506 should_stop_exception (const struct bp_location *bl)
12507 {
12508   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12509   const struct ada_catchpoint_location *ada_loc
12510     = (const struct ada_catchpoint_location *) bl;
12511   int stop;
12512
12513   /* With no specific exception, should always stop.  */
12514   if (c->excep_string.empty ())
12515     return 1;
12516
12517   if (ada_loc->excep_cond_expr == NULL)
12518     {
12519       /* We will have a NULL expression if back when we were creating
12520          the expressions, this location's had failed to parse.  */
12521       return 1;
12522     }
12523
12524   stop = 1;
12525   TRY
12526     {
12527       struct value *mark;
12528
12529       mark = value_mark ();
12530       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12531       value_free_to_mark (mark);
12532     }
12533   CATCH (ex, RETURN_MASK_ALL)
12534     {
12535       exception_fprintf (gdb_stderr, ex,
12536                          _("Error in testing exception condition:\n"));
12537     }
12538   END_CATCH
12539
12540   return stop;
12541 }
12542
12543 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12544    for all exception catchpoint kinds.  */
12545
12546 static void
12547 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12548 {
12549   bs->stop = should_stop_exception (bs->bp_location_at);
12550 }
12551
12552 /* Implement the PRINT_IT method in the breakpoint_ops structure
12553    for all exception catchpoint kinds.  */
12554
12555 static enum print_stop_action
12556 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12557 {
12558   struct ui_out *uiout = current_uiout;
12559   struct breakpoint *b = bs->breakpoint_at;
12560
12561   annotate_catchpoint (b->number);
12562
12563   if (uiout->is_mi_like_p ())
12564     {
12565       uiout->field_string ("reason",
12566                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12567       uiout->field_string ("disp", bpdisp_text (b->disposition));
12568     }
12569
12570   uiout->text (b->disposition == disp_del
12571                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12572   uiout->field_int ("bkptno", b->number);
12573   uiout->text (", ");
12574
12575   /* ada_exception_name_addr relies on the selected frame being the
12576      current frame.  Need to do this here because this function may be
12577      called more than once when printing a stop, and below, we'll
12578      select the first frame past the Ada run-time (see
12579      ada_find_printable_frame).  */
12580   select_frame (get_current_frame ());
12581
12582   switch (ex)
12583     {
12584       case ada_catch_exception:
12585       case ada_catch_exception_unhandled:
12586       case ada_catch_handlers:
12587         {
12588           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12589           char exception_name[256];
12590
12591           if (addr != 0)
12592             {
12593               read_memory (addr, (gdb_byte *) exception_name,
12594                            sizeof (exception_name) - 1);
12595               exception_name [sizeof (exception_name) - 1] = '\0';
12596             }
12597           else
12598             {
12599               /* For some reason, we were unable to read the exception
12600                  name.  This could happen if the Runtime was compiled
12601                  without debugging info, for instance.  In that case,
12602                  just replace the exception name by the generic string
12603                  "exception" - it will read as "an exception" in the
12604                  notification we are about to print.  */
12605               memcpy (exception_name, "exception", sizeof ("exception"));
12606             }
12607           /* In the case of unhandled exception breakpoints, we print
12608              the exception name as "unhandled EXCEPTION_NAME", to make
12609              it clearer to the user which kind of catchpoint just got
12610              hit.  We used ui_out_text to make sure that this extra
12611              info does not pollute the exception name in the MI case.  */
12612           if (ex == ada_catch_exception_unhandled)
12613             uiout->text ("unhandled ");
12614           uiout->field_string ("exception-name", exception_name);
12615         }
12616         break;
12617       case ada_catch_assert:
12618         /* In this case, the name of the exception is not really
12619            important.  Just print "failed assertion" to make it clearer
12620            that his program just hit an assertion-failure catchpoint.
12621            We used ui_out_text because this info does not belong in
12622            the MI output.  */
12623         uiout->text ("failed assertion");
12624         break;
12625     }
12626
12627   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12628   if (exception_message != NULL)
12629     {
12630       uiout->text (" (");
12631       uiout->field_string ("exception-message", exception_message.get ());
12632       uiout->text (")");
12633     }
12634
12635   uiout->text (" at ");
12636   ada_find_printable_frame (get_current_frame ());
12637
12638   return PRINT_SRC_AND_LOC;
12639 }
12640
12641 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12642    for all exception catchpoint kinds.  */
12643
12644 static void
12645 print_one_exception (enum ada_exception_catchpoint_kind ex,
12646                      struct breakpoint *b, struct bp_location **last_loc)
12647
12648   struct ui_out *uiout = current_uiout;
12649   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12650   struct value_print_options opts;
12651
12652   get_user_print_options (&opts);
12653   if (opts.addressprint)
12654     {
12655       annotate_field (4);
12656       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12657     }
12658
12659   annotate_field (5);
12660   *last_loc = b->loc;
12661   switch (ex)
12662     {
12663       case ada_catch_exception:
12664         if (!c->excep_string.empty ())
12665           {
12666             std::string msg = string_printf (_("`%s' Ada exception"),
12667                                              c->excep_string.c_str ());
12668
12669             uiout->field_string ("what", msg);
12670           }
12671         else
12672           uiout->field_string ("what", "all Ada exceptions");
12673         
12674         break;
12675
12676       case ada_catch_exception_unhandled:
12677         uiout->field_string ("what", "unhandled Ada exceptions");
12678         break;
12679       
12680       case ada_catch_handlers:
12681         if (!c->excep_string.empty ())
12682           {
12683             uiout->field_fmt ("what",
12684                               _("`%s' Ada exception handlers"),
12685                               c->excep_string.c_str ());
12686           }
12687         else
12688           uiout->field_string ("what", "all Ada exceptions handlers");
12689         break;
12690
12691       case ada_catch_assert:
12692         uiout->field_string ("what", "failed Ada assertions");
12693         break;
12694
12695       default:
12696         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12697         break;
12698     }
12699 }
12700
12701 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12702    for all exception catchpoint kinds.  */
12703
12704 static void
12705 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12706                          struct breakpoint *b)
12707 {
12708   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12709   struct ui_out *uiout = current_uiout;
12710
12711   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12712                                                  : _("Catchpoint "));
12713   uiout->field_int ("bkptno", b->number);
12714   uiout->text (": ");
12715
12716   switch (ex)
12717     {
12718       case ada_catch_exception:
12719         if (!c->excep_string.empty ())
12720           {
12721             std::string info = string_printf (_("`%s' Ada exception"),
12722                                               c->excep_string.c_str ());
12723             uiout->text (info.c_str ());
12724           }
12725         else
12726           uiout->text (_("all Ada exceptions"));
12727         break;
12728
12729       case ada_catch_exception_unhandled:
12730         uiout->text (_("unhandled Ada exceptions"));
12731         break;
12732
12733       case ada_catch_handlers:
12734         if (!c->excep_string.empty ())
12735           {
12736             std::string info
12737               = string_printf (_("`%s' Ada exception handlers"),
12738                                c->excep_string.c_str ());
12739             uiout->text (info.c_str ());
12740           }
12741         else
12742           uiout->text (_("all Ada exceptions handlers"));
12743         break;
12744
12745       case ada_catch_assert:
12746         uiout->text (_("failed Ada assertions"));
12747         break;
12748
12749       default:
12750         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12751         break;
12752     }
12753 }
12754
12755 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12756    for all exception catchpoint kinds.  */
12757
12758 static void
12759 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12760                           struct breakpoint *b, struct ui_file *fp)
12761 {
12762   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12763
12764   switch (ex)
12765     {
12766       case ada_catch_exception:
12767         fprintf_filtered (fp, "catch exception");
12768         if (!c->excep_string.empty ())
12769           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12770         break;
12771
12772       case ada_catch_exception_unhandled:
12773         fprintf_filtered (fp, "catch exception unhandled");
12774         break;
12775
12776       case ada_catch_handlers:
12777         fprintf_filtered (fp, "catch handlers");
12778         break;
12779
12780       case ada_catch_assert:
12781         fprintf_filtered (fp, "catch assert");
12782         break;
12783
12784       default:
12785         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12786     }
12787   print_recreate_thread (b, fp);
12788 }
12789
12790 /* Virtual table for "catch exception" breakpoints.  */
12791
12792 static struct bp_location *
12793 allocate_location_catch_exception (struct breakpoint *self)
12794 {
12795   return allocate_location_exception (ada_catch_exception, self);
12796 }
12797
12798 static void
12799 re_set_catch_exception (struct breakpoint *b)
12800 {
12801   re_set_exception (ada_catch_exception, b);
12802 }
12803
12804 static void
12805 check_status_catch_exception (bpstat bs)
12806 {
12807   check_status_exception (ada_catch_exception, bs);
12808 }
12809
12810 static enum print_stop_action
12811 print_it_catch_exception (bpstat bs)
12812 {
12813   return print_it_exception (ada_catch_exception, bs);
12814 }
12815
12816 static void
12817 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12818 {
12819   print_one_exception (ada_catch_exception, b, last_loc);
12820 }
12821
12822 static void
12823 print_mention_catch_exception (struct breakpoint *b)
12824 {
12825   print_mention_exception (ada_catch_exception, b);
12826 }
12827
12828 static void
12829 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12830 {
12831   print_recreate_exception (ada_catch_exception, b, fp);
12832 }
12833
12834 static struct breakpoint_ops catch_exception_breakpoint_ops;
12835
12836 /* Virtual table for "catch exception unhandled" breakpoints.  */
12837
12838 static struct bp_location *
12839 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12840 {
12841   return allocate_location_exception (ada_catch_exception_unhandled, self);
12842 }
12843
12844 static void
12845 re_set_catch_exception_unhandled (struct breakpoint *b)
12846 {
12847   re_set_exception (ada_catch_exception_unhandled, b);
12848 }
12849
12850 static void
12851 check_status_catch_exception_unhandled (bpstat bs)
12852 {
12853   check_status_exception (ada_catch_exception_unhandled, bs);
12854 }
12855
12856 static enum print_stop_action
12857 print_it_catch_exception_unhandled (bpstat bs)
12858 {
12859   return print_it_exception (ada_catch_exception_unhandled, bs);
12860 }
12861
12862 static void
12863 print_one_catch_exception_unhandled (struct breakpoint *b,
12864                                      struct bp_location **last_loc)
12865 {
12866   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12867 }
12868
12869 static void
12870 print_mention_catch_exception_unhandled (struct breakpoint *b)
12871 {
12872   print_mention_exception (ada_catch_exception_unhandled, b);
12873 }
12874
12875 static void
12876 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12877                                           struct ui_file *fp)
12878 {
12879   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12880 }
12881
12882 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12883
12884 /* Virtual table for "catch assert" breakpoints.  */
12885
12886 static struct bp_location *
12887 allocate_location_catch_assert (struct breakpoint *self)
12888 {
12889   return allocate_location_exception (ada_catch_assert, self);
12890 }
12891
12892 static void
12893 re_set_catch_assert (struct breakpoint *b)
12894 {
12895   re_set_exception (ada_catch_assert, b);
12896 }
12897
12898 static void
12899 check_status_catch_assert (bpstat bs)
12900 {
12901   check_status_exception (ada_catch_assert, bs);
12902 }
12903
12904 static enum print_stop_action
12905 print_it_catch_assert (bpstat bs)
12906 {
12907   return print_it_exception (ada_catch_assert, bs);
12908 }
12909
12910 static void
12911 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12912 {
12913   print_one_exception (ada_catch_assert, b, last_loc);
12914 }
12915
12916 static void
12917 print_mention_catch_assert (struct breakpoint *b)
12918 {
12919   print_mention_exception (ada_catch_assert, b);
12920 }
12921
12922 static void
12923 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12924 {
12925   print_recreate_exception (ada_catch_assert, b, fp);
12926 }
12927
12928 static struct breakpoint_ops catch_assert_breakpoint_ops;
12929
12930 /* Virtual table for "catch handlers" breakpoints.  */
12931
12932 static struct bp_location *
12933 allocate_location_catch_handlers (struct breakpoint *self)
12934 {
12935   return allocate_location_exception (ada_catch_handlers, self);
12936 }
12937
12938 static void
12939 re_set_catch_handlers (struct breakpoint *b)
12940 {
12941   re_set_exception (ada_catch_handlers, b);
12942 }
12943
12944 static void
12945 check_status_catch_handlers (bpstat bs)
12946 {
12947   check_status_exception (ada_catch_handlers, bs);
12948 }
12949
12950 static enum print_stop_action
12951 print_it_catch_handlers (bpstat bs)
12952 {
12953   return print_it_exception (ada_catch_handlers, bs);
12954 }
12955
12956 static void
12957 print_one_catch_handlers (struct breakpoint *b,
12958                           struct bp_location **last_loc)
12959 {
12960   print_one_exception (ada_catch_handlers, b, last_loc);
12961 }
12962
12963 static void
12964 print_mention_catch_handlers (struct breakpoint *b)
12965 {
12966   print_mention_exception (ada_catch_handlers, b);
12967 }
12968
12969 static void
12970 print_recreate_catch_handlers (struct breakpoint *b,
12971                                struct ui_file *fp)
12972 {
12973   print_recreate_exception (ada_catch_handlers, b, fp);
12974 }
12975
12976 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12977
12978 /* Split the arguments specified in a "catch exception" command.  
12979    Set EX to the appropriate catchpoint type.
12980    Set EXCEP_STRING to the name of the specific exception if
12981    specified by the user.
12982    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12983    "catch handlers" command.  False otherwise.
12984    If a condition is found at the end of the arguments, the condition
12985    expression is stored in COND_STRING (memory must be deallocated
12986    after use).  Otherwise COND_STRING is set to NULL.  */
12987
12988 static void
12989 catch_ada_exception_command_split (const char *args,
12990                                    bool is_catch_handlers_cmd,
12991                                    enum ada_exception_catchpoint_kind *ex,
12992                                    std::string *excep_string,
12993                                    std::string *cond_string)
12994 {
12995   std::string exception_name;
12996
12997   exception_name = extract_arg (&args);
12998   if (exception_name == "if")
12999     {
13000       /* This is not an exception name; this is the start of a condition
13001          expression for a catchpoint on all exceptions.  So, "un-get"
13002          this token, and set exception_name to NULL.  */
13003       exception_name.clear ();
13004       args -= 2;
13005     }
13006
13007   /* Check to see if we have a condition.  */
13008
13009   args = skip_spaces (args);
13010   if (startswith (args, "if")
13011       && (isspace (args[2]) || args[2] == '\0'))
13012     {
13013       args += 2;
13014       args = skip_spaces (args);
13015
13016       if (args[0] == '\0')
13017         error (_("Condition missing after `if' keyword"));
13018       *cond_string = args;
13019
13020       args += strlen (args);
13021     }
13022
13023   /* Check that we do not have any more arguments.  Anything else
13024      is unexpected.  */
13025
13026   if (args[0] != '\0')
13027     error (_("Junk at end of expression"));
13028
13029   if (is_catch_handlers_cmd)
13030     {
13031       /* Catch handling of exceptions.  */
13032       *ex = ada_catch_handlers;
13033       *excep_string = exception_name;
13034     }
13035   else if (exception_name.empty ())
13036     {
13037       /* Catch all exceptions.  */
13038       *ex = ada_catch_exception;
13039       excep_string->clear ();
13040     }
13041   else if (exception_name == "unhandled")
13042     {
13043       /* Catch unhandled exceptions.  */
13044       *ex = ada_catch_exception_unhandled;
13045       excep_string->clear ();
13046     }
13047   else
13048     {
13049       /* Catch a specific exception.  */
13050       *ex = ada_catch_exception;
13051       *excep_string = exception_name;
13052     }
13053 }
13054
13055 /* Return the name of the symbol on which we should break in order to
13056    implement a catchpoint of the EX kind.  */
13057
13058 static const char *
13059 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
13060 {
13061   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
13062
13063   gdb_assert (data->exception_info != NULL);
13064
13065   switch (ex)
13066     {
13067       case ada_catch_exception:
13068         return (data->exception_info->catch_exception_sym);
13069         break;
13070       case ada_catch_exception_unhandled:
13071         return (data->exception_info->catch_exception_unhandled_sym);
13072         break;
13073       case ada_catch_assert:
13074         return (data->exception_info->catch_assert_sym);
13075         break;
13076       case ada_catch_handlers:
13077         return (data->exception_info->catch_handlers_sym);
13078         break;
13079       default:
13080         internal_error (__FILE__, __LINE__,
13081                         _("unexpected catchpoint kind (%d)"), ex);
13082     }
13083 }
13084
13085 /* Return the breakpoint ops "virtual table" used for catchpoints
13086    of the EX kind.  */
13087
13088 static const struct breakpoint_ops *
13089 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
13090 {
13091   switch (ex)
13092     {
13093       case ada_catch_exception:
13094         return (&catch_exception_breakpoint_ops);
13095         break;
13096       case ada_catch_exception_unhandled:
13097         return (&catch_exception_unhandled_breakpoint_ops);
13098         break;
13099       case ada_catch_assert:
13100         return (&catch_assert_breakpoint_ops);
13101         break;
13102       case ada_catch_handlers:
13103         return (&catch_handlers_breakpoint_ops);
13104         break;
13105       default:
13106         internal_error (__FILE__, __LINE__,
13107                         _("unexpected catchpoint kind (%d)"), ex);
13108     }
13109 }
13110
13111 /* Return the condition that will be used to match the current exception
13112    being raised with the exception that the user wants to catch.  This
13113    assumes that this condition is used when the inferior just triggered
13114    an exception catchpoint.
13115    EX: the type of catchpoints used for catching Ada exceptions.  */
13116
13117 static std::string
13118 ada_exception_catchpoint_cond_string (const char *excep_string,
13119                                       enum ada_exception_catchpoint_kind ex)
13120 {
13121   int i;
13122   bool is_standard_exc = false;
13123   std::string result;
13124
13125   if (ex == ada_catch_handlers)
13126     {
13127       /* For exception handlers catchpoints, the condition string does
13128          not use the same parameter as for the other exceptions.  */
13129       result = ("long_integer (GNAT_GCC_exception_Access"
13130                 "(gcc_exception).all.occurrence.id)");
13131     }
13132   else
13133     result = "long_integer (e)";
13134
13135   /* The standard exceptions are a special case.  They are defined in
13136      runtime units that have been compiled without debugging info; if
13137      EXCEP_STRING is the not-fully-qualified name of a standard
13138      exception (e.g. "constraint_error") then, during the evaluation
13139      of the condition expression, the symbol lookup on this name would
13140      *not* return this standard exception.  The catchpoint condition
13141      may then be set only on user-defined exceptions which have the
13142      same not-fully-qualified name (e.g. my_package.constraint_error).
13143
13144      To avoid this unexcepted behavior, these standard exceptions are
13145      systematically prefixed by "standard".  This means that "catch
13146      exception constraint_error" is rewritten into "catch exception
13147      standard.constraint_error".
13148
13149      If an exception named contraint_error is defined in another package of
13150      the inferior program, then the only way to specify this exception as a
13151      breakpoint condition is to use its fully-qualified named:
13152      e.g. my_package.constraint_error.  */
13153
13154   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13155     {
13156       if (strcmp (standard_exc [i], excep_string) == 0)
13157         {
13158           is_standard_exc = true;
13159           break;
13160         }
13161     }
13162
13163   result += " = ";
13164
13165   if (is_standard_exc)
13166     string_appendf (result, "long_integer (&standard.%s)", excep_string);
13167   else
13168     string_appendf (result, "long_integer (&%s)", excep_string);
13169
13170   return result;
13171 }
13172
13173 /* Return the symtab_and_line that should be used to insert an exception
13174    catchpoint of the TYPE kind.
13175
13176    ADDR_STRING returns the name of the function where the real
13177    breakpoint that implements the catchpoints is set, depending on the
13178    type of catchpoint we need to create.  */
13179
13180 static struct symtab_and_line
13181 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13182                    std::string *addr_string, const struct breakpoint_ops **ops)
13183 {
13184   const char *sym_name;
13185   struct symbol *sym;
13186
13187   /* First, find out which exception support info to use.  */
13188   ada_exception_support_info_sniffer ();
13189
13190   /* Then lookup the function on which we will break in order to catch
13191      the Ada exceptions requested by the user.  */
13192   sym_name = ada_exception_sym_name (ex);
13193   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13194
13195   if (sym == NULL)
13196     error (_("Catchpoint symbol not found: %s"), sym_name);
13197
13198   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13199     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13200
13201   /* Set ADDR_STRING.  */
13202   *addr_string = sym_name;
13203
13204   /* Set OPS.  */
13205   *ops = ada_exception_breakpoint_ops (ex);
13206
13207   return find_function_start_sal (sym, 1);
13208 }
13209
13210 /* Create an Ada exception catchpoint.
13211
13212    EX_KIND is the kind of exception catchpoint to be created.
13213
13214    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13215    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13216    of the exception to which this catchpoint applies.
13217
13218    COND_STRING, if not empty, is the catchpoint condition.
13219
13220    TEMPFLAG, if nonzero, means that the underlying breakpoint
13221    should be temporary.
13222
13223    FROM_TTY is the usual argument passed to all commands implementations.  */
13224
13225 void
13226 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13227                                  enum ada_exception_catchpoint_kind ex_kind,
13228                                  const std::string &excep_string,
13229                                  const std::string &cond_string,
13230                                  int tempflag,
13231                                  int disabled,
13232                                  int from_tty)
13233 {
13234   std::string addr_string;
13235   const struct breakpoint_ops *ops = NULL;
13236   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13237
13238   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13239   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13240                                  ops, tempflag, disabled, from_tty);
13241   c->excep_string = excep_string;
13242   create_excep_cond_exprs (c.get (), ex_kind);
13243   if (!cond_string.empty ())
13244     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13245   install_breakpoint (0, std::move (c), 1);
13246 }
13247
13248 /* Implement the "catch exception" command.  */
13249
13250 static void
13251 catch_ada_exception_command (const char *arg_entry, int from_tty,
13252                              struct cmd_list_element *command)
13253 {
13254   const char *arg = arg_entry;
13255   struct gdbarch *gdbarch = get_current_arch ();
13256   int tempflag;
13257   enum ada_exception_catchpoint_kind ex_kind;
13258   std::string excep_string;
13259   std::string cond_string;
13260
13261   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13262
13263   if (!arg)
13264     arg = "";
13265   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13266                                      &cond_string);
13267   create_ada_exception_catchpoint (gdbarch, ex_kind,
13268                                    excep_string, cond_string,
13269                                    tempflag, 1 /* enabled */,
13270                                    from_tty);
13271 }
13272
13273 /* Implement the "catch handlers" command.  */
13274
13275 static void
13276 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13277                             struct cmd_list_element *command)
13278 {
13279   const char *arg = arg_entry;
13280   struct gdbarch *gdbarch = get_current_arch ();
13281   int tempflag;
13282   enum ada_exception_catchpoint_kind ex_kind;
13283   std::string excep_string;
13284   std::string cond_string;
13285
13286   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13287
13288   if (!arg)
13289     arg = "";
13290   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13291                                      &cond_string);
13292   create_ada_exception_catchpoint (gdbarch, ex_kind,
13293                                    excep_string, cond_string,
13294                                    tempflag, 1 /* enabled */,
13295                                    from_tty);
13296 }
13297
13298 /* Split the arguments specified in a "catch assert" command.
13299
13300    ARGS contains the command's arguments (or the empty string if
13301    no arguments were passed).
13302
13303    If ARGS contains a condition, set COND_STRING to that condition
13304    (the memory needs to be deallocated after use).  */
13305
13306 static void
13307 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13308 {
13309   args = skip_spaces (args);
13310
13311   /* Check whether a condition was provided.  */
13312   if (startswith (args, "if")
13313       && (isspace (args[2]) || args[2] == '\0'))
13314     {
13315       args += 2;
13316       args = skip_spaces (args);
13317       if (args[0] == '\0')
13318         error (_("condition missing after `if' keyword"));
13319       cond_string.assign (args);
13320     }
13321
13322   /* Otherwise, there should be no other argument at the end of
13323      the command.  */
13324   else if (args[0] != '\0')
13325     error (_("Junk at end of arguments."));
13326 }
13327
13328 /* Implement the "catch assert" command.  */
13329
13330 static void
13331 catch_assert_command (const char *arg_entry, int from_tty,
13332                       struct cmd_list_element *command)
13333 {
13334   const char *arg = arg_entry;
13335   struct gdbarch *gdbarch = get_current_arch ();
13336   int tempflag;
13337   std::string cond_string;
13338
13339   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13340
13341   if (!arg)
13342     arg = "";
13343   catch_ada_assert_command_split (arg, cond_string);
13344   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13345                                    "", cond_string,
13346                                    tempflag, 1 /* enabled */,
13347                                    from_tty);
13348 }
13349
13350 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13351
13352 static int
13353 ada_is_exception_sym (struct symbol *sym)
13354 {
13355   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13356
13357   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13358           && SYMBOL_CLASS (sym) != LOC_BLOCK
13359           && SYMBOL_CLASS (sym) != LOC_CONST
13360           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13361           && type_name != NULL && strcmp (type_name, "exception") == 0);
13362 }
13363
13364 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13365    Ada exception object.  This matches all exceptions except the ones
13366    defined by the Ada language.  */
13367
13368 static int
13369 ada_is_non_standard_exception_sym (struct symbol *sym)
13370 {
13371   int i;
13372
13373   if (!ada_is_exception_sym (sym))
13374     return 0;
13375
13376   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13377     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13378       return 0;  /* A standard exception.  */
13379
13380   /* Numeric_Error is also a standard exception, so exclude it.
13381      See the STANDARD_EXC description for more details as to why
13382      this exception is not listed in that array.  */
13383   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13384     return 0;
13385
13386   return 1;
13387 }
13388
13389 /* A helper function for std::sort, comparing two struct ada_exc_info
13390    objects.
13391
13392    The comparison is determined first by exception name, and then
13393    by exception address.  */
13394
13395 bool
13396 ada_exc_info::operator< (const ada_exc_info &other) const
13397 {
13398   int result;
13399
13400   result = strcmp (name, other.name);
13401   if (result < 0)
13402     return true;
13403   if (result == 0 && addr < other.addr)
13404     return true;
13405   return false;
13406 }
13407
13408 bool
13409 ada_exc_info::operator== (const ada_exc_info &other) const
13410 {
13411   return addr == other.addr && strcmp (name, other.name) == 0;
13412 }
13413
13414 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13415    routine, but keeping the first SKIP elements untouched.
13416
13417    All duplicates are also removed.  */
13418
13419 static void
13420 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13421                                       int skip)
13422 {
13423   std::sort (exceptions->begin () + skip, exceptions->end ());
13424   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13425                      exceptions->end ());
13426 }
13427
13428 /* Add all exceptions defined by the Ada standard whose name match
13429    a regular expression.
13430
13431    If PREG is not NULL, then this regexp_t object is used to
13432    perform the symbol name matching.  Otherwise, no name-based
13433    filtering is performed.
13434
13435    EXCEPTIONS is a vector of exceptions to which matching exceptions
13436    gets pushed.  */
13437
13438 static void
13439 ada_add_standard_exceptions (compiled_regex *preg,
13440                              std::vector<ada_exc_info> *exceptions)
13441 {
13442   int i;
13443
13444   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13445     {
13446       if (preg == NULL
13447           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13448         {
13449           struct bound_minimal_symbol msymbol
13450             = ada_lookup_simple_minsym (standard_exc[i]);
13451
13452           if (msymbol.minsym != NULL)
13453             {
13454               struct ada_exc_info info
13455                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13456
13457               exceptions->push_back (info);
13458             }
13459         }
13460     }
13461 }
13462
13463 /* Add all Ada exceptions defined locally and accessible from the given
13464    FRAME.
13465
13466    If PREG is not NULL, then this regexp_t object is used to
13467    perform the symbol name matching.  Otherwise, no name-based
13468    filtering is performed.
13469
13470    EXCEPTIONS is a vector of exceptions to which matching exceptions
13471    gets pushed.  */
13472
13473 static void
13474 ada_add_exceptions_from_frame (compiled_regex *preg,
13475                                struct frame_info *frame,
13476                                std::vector<ada_exc_info> *exceptions)
13477 {
13478   const struct block *block = get_frame_block (frame, 0);
13479
13480   while (block != 0)
13481     {
13482       struct block_iterator iter;
13483       struct symbol *sym;
13484
13485       ALL_BLOCK_SYMBOLS (block, iter, sym)
13486         {
13487           switch (SYMBOL_CLASS (sym))
13488             {
13489             case LOC_TYPEDEF:
13490             case LOC_BLOCK:
13491             case LOC_CONST:
13492               break;
13493             default:
13494               if (ada_is_exception_sym (sym))
13495                 {
13496                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13497                                               SYMBOL_VALUE_ADDRESS (sym)};
13498
13499                   exceptions->push_back (info);
13500                 }
13501             }
13502         }
13503       if (BLOCK_FUNCTION (block) != NULL)
13504         break;
13505       block = BLOCK_SUPERBLOCK (block);
13506     }
13507 }
13508
13509 /* Return true if NAME matches PREG or if PREG is NULL.  */
13510
13511 static bool
13512 name_matches_regex (const char *name, compiled_regex *preg)
13513 {
13514   return (preg == NULL
13515           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13516 }
13517
13518 /* Add all exceptions defined globally whose name name match
13519    a regular expression, excluding standard exceptions.
13520
13521    The reason we exclude standard exceptions is that they need
13522    to be handled separately: Standard exceptions are defined inside
13523    a runtime unit which is normally not compiled with debugging info,
13524    and thus usually do not show up in our symbol search.  However,
13525    if the unit was in fact built with debugging info, we need to
13526    exclude them because they would duplicate the entry we found
13527    during the special loop that specifically searches for those
13528    standard exceptions.
13529
13530    If PREG is not NULL, then this regexp_t object is used to
13531    perform the symbol name matching.  Otherwise, no name-based
13532    filtering is performed.
13533
13534    EXCEPTIONS is a vector of exceptions to which matching exceptions
13535    gets pushed.  */
13536
13537 static void
13538 ada_add_global_exceptions (compiled_regex *preg,
13539                            std::vector<ada_exc_info> *exceptions)
13540 {
13541   /* In Ada, the symbol "search name" is a linkage name, whereas the
13542      regular expression used to do the matching refers to the natural
13543      name.  So match against the decoded name.  */
13544   expand_symtabs_matching (NULL,
13545                            lookup_name_info::match_any (),
13546                            [&] (const char *search_name)
13547                            {
13548                              const char *decoded = ada_decode (search_name);
13549                              return name_matches_regex (decoded, preg);
13550                            },
13551                            NULL,
13552                            VARIABLES_DOMAIN);
13553
13554   for (objfile *objfile : current_program_space->objfiles ())
13555     {
13556       for (compunit_symtab *s : objfile->compunits ())
13557         {
13558           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13559           int i;
13560
13561           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13562             {
13563               struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13564               struct block_iterator iter;
13565               struct symbol *sym;
13566
13567               ALL_BLOCK_SYMBOLS (b, iter, sym)
13568                 if (ada_is_non_standard_exception_sym (sym)
13569                     && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13570                   {
13571                     struct ada_exc_info info
13572                       = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13573
13574                     exceptions->push_back (info);
13575                   }
13576             }
13577         }
13578     }
13579 }
13580
13581 /* Implements ada_exceptions_list with the regular expression passed
13582    as a regex_t, rather than a string.
13583
13584    If not NULL, PREG is used to filter out exceptions whose names
13585    do not match.  Otherwise, all exceptions are listed.  */
13586
13587 static std::vector<ada_exc_info>
13588 ada_exceptions_list_1 (compiled_regex *preg)
13589 {
13590   std::vector<ada_exc_info> result;
13591   int prev_len;
13592
13593   /* First, list the known standard exceptions.  These exceptions
13594      need to be handled separately, as they are usually defined in
13595      runtime units that have been compiled without debugging info.  */
13596
13597   ada_add_standard_exceptions (preg, &result);
13598
13599   /* Next, find all exceptions whose scope is local and accessible
13600      from the currently selected frame.  */
13601
13602   if (has_stack_frames ())
13603     {
13604       prev_len = result.size ();
13605       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13606                                      &result);
13607       if (result.size () > prev_len)
13608         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13609     }
13610
13611   /* Add all exceptions whose scope is global.  */
13612
13613   prev_len = result.size ();
13614   ada_add_global_exceptions (preg, &result);
13615   if (result.size () > prev_len)
13616     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13617
13618   return result;
13619 }
13620
13621 /* Return a vector of ada_exc_info.
13622
13623    If REGEXP is NULL, all exceptions are included in the result.
13624    Otherwise, it should contain a valid regular expression,
13625    and only the exceptions whose names match that regular expression
13626    are included in the result.
13627
13628    The exceptions are sorted in the following order:
13629      - Standard exceptions (defined by the Ada language), in
13630        alphabetical order;
13631      - Exceptions only visible from the current frame, in
13632        alphabetical order;
13633      - Exceptions whose scope is global, in alphabetical order.  */
13634
13635 std::vector<ada_exc_info>
13636 ada_exceptions_list (const char *regexp)
13637 {
13638   if (regexp == NULL)
13639     return ada_exceptions_list_1 (NULL);
13640
13641   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13642   return ada_exceptions_list_1 (&reg);
13643 }
13644
13645 /* Implement the "info exceptions" command.  */
13646
13647 static void
13648 info_exceptions_command (const char *regexp, int from_tty)
13649 {
13650   struct gdbarch *gdbarch = get_current_arch ();
13651
13652   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13653
13654   if (regexp != NULL)
13655     printf_filtered
13656       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13657   else
13658     printf_filtered (_("All defined Ada exceptions:\n"));
13659
13660   for (const ada_exc_info &info : exceptions)
13661     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13662 }
13663
13664                                 /* Operators */
13665 /* Information about operators given special treatment in functions
13666    below.  */
13667 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13668
13669 #define ADA_OPERATORS \
13670     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13671     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13672     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13673     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13674     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13675     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13676     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13677     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13678     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13679     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13680     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13681     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13682     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13683     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13684     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13685     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13686     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13687     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13688     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13689
13690 static void
13691 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13692                      int *argsp)
13693 {
13694   switch (exp->elts[pc - 1].opcode)
13695     {
13696     default:
13697       operator_length_standard (exp, pc, oplenp, argsp);
13698       break;
13699
13700 #define OP_DEFN(op, len, args, binop) \
13701     case op: *oplenp = len; *argsp = args; break;
13702       ADA_OPERATORS;
13703 #undef OP_DEFN
13704
13705     case OP_AGGREGATE:
13706       *oplenp = 3;
13707       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13708       break;
13709
13710     case OP_CHOICES:
13711       *oplenp = 3;
13712       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13713       break;
13714     }
13715 }
13716
13717 /* Implementation of the exp_descriptor method operator_check.  */
13718
13719 static int
13720 ada_operator_check (struct expression *exp, int pos,
13721                     int (*objfile_func) (struct objfile *objfile, void *data),
13722                     void *data)
13723 {
13724   const union exp_element *const elts = exp->elts;
13725   struct type *type = NULL;
13726
13727   switch (elts[pos].opcode)
13728     {
13729       case UNOP_IN_RANGE:
13730       case UNOP_QUAL:
13731         type = elts[pos + 1].type;
13732         break;
13733
13734       default:
13735         return operator_check_standard (exp, pos, objfile_func, data);
13736     }
13737
13738   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13739
13740   if (type && TYPE_OBJFILE (type)
13741       && (*objfile_func) (TYPE_OBJFILE (type), data))
13742     return 1;
13743
13744   return 0;
13745 }
13746
13747 static const char *
13748 ada_op_name (enum exp_opcode opcode)
13749 {
13750   switch (opcode)
13751     {
13752     default:
13753       return op_name_standard (opcode);
13754
13755 #define OP_DEFN(op, len, args, binop) case op: return #op;
13756       ADA_OPERATORS;
13757 #undef OP_DEFN
13758
13759     case OP_AGGREGATE:
13760       return "OP_AGGREGATE";
13761     case OP_CHOICES:
13762       return "OP_CHOICES";
13763     case OP_NAME:
13764       return "OP_NAME";
13765     }
13766 }
13767
13768 /* As for operator_length, but assumes PC is pointing at the first
13769    element of the operator, and gives meaningful results only for the 
13770    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13771
13772 static void
13773 ada_forward_operator_length (struct expression *exp, int pc,
13774                              int *oplenp, int *argsp)
13775 {
13776   switch (exp->elts[pc].opcode)
13777     {
13778     default:
13779       *oplenp = *argsp = 0;
13780       break;
13781
13782 #define OP_DEFN(op, len, args, binop) \
13783     case op: *oplenp = len; *argsp = args; break;
13784       ADA_OPERATORS;
13785 #undef OP_DEFN
13786
13787     case OP_AGGREGATE:
13788       *oplenp = 3;
13789       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13790       break;
13791
13792     case OP_CHOICES:
13793       *oplenp = 3;
13794       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13795       break;
13796
13797     case OP_STRING:
13798     case OP_NAME:
13799       {
13800         int len = longest_to_int (exp->elts[pc + 1].longconst);
13801
13802         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13803         *argsp = 0;
13804         break;
13805       }
13806     }
13807 }
13808
13809 static int
13810 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13811 {
13812   enum exp_opcode op = exp->elts[elt].opcode;
13813   int oplen, nargs;
13814   int pc = elt;
13815   int i;
13816
13817   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13818
13819   switch (op)
13820     {
13821       /* Ada attributes ('Foo).  */
13822     case OP_ATR_FIRST:
13823     case OP_ATR_LAST:
13824     case OP_ATR_LENGTH:
13825     case OP_ATR_IMAGE:
13826     case OP_ATR_MAX:
13827     case OP_ATR_MIN:
13828     case OP_ATR_MODULUS:
13829     case OP_ATR_POS:
13830     case OP_ATR_SIZE:
13831     case OP_ATR_TAG:
13832     case OP_ATR_VAL:
13833       break;
13834
13835     case UNOP_IN_RANGE:
13836     case UNOP_QUAL:
13837       /* XXX: gdb_sprint_host_address, type_sprint */
13838       fprintf_filtered (stream, _("Type @"));
13839       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13840       fprintf_filtered (stream, " (");
13841       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13842       fprintf_filtered (stream, ")");
13843       break;
13844     case BINOP_IN_BOUNDS:
13845       fprintf_filtered (stream, " (%d)",
13846                         longest_to_int (exp->elts[pc + 2].longconst));
13847       break;
13848     case TERNOP_IN_RANGE:
13849       break;
13850
13851     case OP_AGGREGATE:
13852     case OP_OTHERS:
13853     case OP_DISCRETE_RANGE:
13854     case OP_POSITIONAL:
13855     case OP_CHOICES:
13856       break;
13857
13858     case OP_NAME:
13859     case OP_STRING:
13860       {
13861         char *name = &exp->elts[elt + 2].string;
13862         int len = longest_to_int (exp->elts[elt + 1].longconst);
13863
13864         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13865         break;
13866       }
13867
13868     default:
13869       return dump_subexp_body_standard (exp, stream, elt);
13870     }
13871
13872   elt += oplen;
13873   for (i = 0; i < nargs; i += 1)
13874     elt = dump_subexp (exp, stream, elt);
13875
13876   return elt;
13877 }
13878
13879 /* The Ada extension of print_subexp (q.v.).  */
13880
13881 static void
13882 ada_print_subexp (struct expression *exp, int *pos,
13883                   struct ui_file *stream, enum precedence prec)
13884 {
13885   int oplen, nargs, i;
13886   int pc = *pos;
13887   enum exp_opcode op = exp->elts[pc].opcode;
13888
13889   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13890
13891   *pos += oplen;
13892   switch (op)
13893     {
13894     default:
13895       *pos -= oplen;
13896       print_subexp_standard (exp, pos, stream, prec);
13897       return;
13898
13899     case OP_VAR_VALUE:
13900       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13901       return;
13902
13903     case BINOP_IN_BOUNDS:
13904       /* XXX: sprint_subexp */
13905       print_subexp (exp, pos, stream, PREC_SUFFIX);
13906       fputs_filtered (" in ", stream);
13907       print_subexp (exp, pos, stream, PREC_SUFFIX);
13908       fputs_filtered ("'range", stream);
13909       if (exp->elts[pc + 1].longconst > 1)
13910         fprintf_filtered (stream, "(%ld)",
13911                           (long) exp->elts[pc + 1].longconst);
13912       return;
13913
13914     case TERNOP_IN_RANGE:
13915       if (prec >= PREC_EQUAL)
13916         fputs_filtered ("(", stream);
13917       /* XXX: sprint_subexp */
13918       print_subexp (exp, pos, stream, PREC_SUFFIX);
13919       fputs_filtered (" in ", stream);
13920       print_subexp (exp, pos, stream, PREC_EQUAL);
13921       fputs_filtered (" .. ", stream);
13922       print_subexp (exp, pos, stream, PREC_EQUAL);
13923       if (prec >= PREC_EQUAL)
13924         fputs_filtered (")", stream);
13925       return;
13926
13927     case OP_ATR_FIRST:
13928     case OP_ATR_LAST:
13929     case OP_ATR_LENGTH:
13930     case OP_ATR_IMAGE:
13931     case OP_ATR_MAX:
13932     case OP_ATR_MIN:
13933     case OP_ATR_MODULUS:
13934     case OP_ATR_POS:
13935     case OP_ATR_SIZE:
13936     case OP_ATR_TAG:
13937     case OP_ATR_VAL:
13938       if (exp->elts[*pos].opcode == OP_TYPE)
13939         {
13940           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13941             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13942                            &type_print_raw_options);
13943           *pos += 3;
13944         }
13945       else
13946         print_subexp (exp, pos, stream, PREC_SUFFIX);
13947       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13948       if (nargs > 1)
13949         {
13950           int tem;
13951
13952           for (tem = 1; tem < nargs; tem += 1)
13953             {
13954               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13955               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13956             }
13957           fputs_filtered (")", stream);
13958         }
13959       return;
13960
13961     case UNOP_QUAL:
13962       type_print (exp->elts[pc + 1].type, "", stream, 0);
13963       fputs_filtered ("'(", stream);
13964       print_subexp (exp, pos, stream, PREC_PREFIX);
13965       fputs_filtered (")", stream);
13966       return;
13967
13968     case UNOP_IN_RANGE:
13969       /* XXX: sprint_subexp */
13970       print_subexp (exp, pos, stream, PREC_SUFFIX);
13971       fputs_filtered (" in ", stream);
13972       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13973                      &type_print_raw_options);
13974       return;
13975
13976     case OP_DISCRETE_RANGE:
13977       print_subexp (exp, pos, stream, PREC_SUFFIX);
13978       fputs_filtered ("..", stream);
13979       print_subexp (exp, pos, stream, PREC_SUFFIX);
13980       return;
13981
13982     case OP_OTHERS:
13983       fputs_filtered ("others => ", stream);
13984       print_subexp (exp, pos, stream, PREC_SUFFIX);
13985       return;
13986
13987     case OP_CHOICES:
13988       for (i = 0; i < nargs-1; i += 1)
13989         {
13990           if (i > 0)
13991             fputs_filtered ("|", stream);
13992           print_subexp (exp, pos, stream, PREC_SUFFIX);
13993         }
13994       fputs_filtered (" => ", stream);
13995       print_subexp (exp, pos, stream, PREC_SUFFIX);
13996       return;
13997       
13998     case OP_POSITIONAL:
13999       print_subexp (exp, pos, stream, PREC_SUFFIX);
14000       return;
14001
14002     case OP_AGGREGATE:
14003       fputs_filtered ("(", stream);
14004       for (i = 0; i < nargs; i += 1)
14005         {
14006           if (i > 0)
14007             fputs_filtered (", ", stream);
14008           print_subexp (exp, pos, stream, PREC_SUFFIX);
14009         }
14010       fputs_filtered (")", stream);
14011       return;
14012     }
14013 }
14014
14015 /* Table mapping opcodes into strings for printing operators
14016    and precedences of the operators.  */
14017
14018 static const struct op_print ada_op_print_tab[] = {
14019   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
14020   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
14021   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
14022   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
14023   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
14024   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
14025   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
14026   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
14027   {"<=", BINOP_LEQ, PREC_ORDER, 0},
14028   {">=", BINOP_GEQ, PREC_ORDER, 0},
14029   {">", BINOP_GTR, PREC_ORDER, 0},
14030   {"<", BINOP_LESS, PREC_ORDER, 0},
14031   {">>", BINOP_RSH, PREC_SHIFT, 0},
14032   {"<<", BINOP_LSH, PREC_SHIFT, 0},
14033   {"+", BINOP_ADD, PREC_ADD, 0},
14034   {"-", BINOP_SUB, PREC_ADD, 0},
14035   {"&", BINOP_CONCAT, PREC_ADD, 0},
14036   {"*", BINOP_MUL, PREC_MUL, 0},
14037   {"/", BINOP_DIV, PREC_MUL, 0},
14038   {"rem", BINOP_REM, PREC_MUL, 0},
14039   {"mod", BINOP_MOD, PREC_MUL, 0},
14040   {"**", BINOP_EXP, PREC_REPEAT, 0},
14041   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
14042   {"-", UNOP_NEG, PREC_PREFIX, 0},
14043   {"+", UNOP_PLUS, PREC_PREFIX, 0},
14044   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
14045   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
14046   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
14047   {".all", UNOP_IND, PREC_SUFFIX, 1},
14048   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
14049   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
14050   {NULL, OP_NULL, PREC_SUFFIX, 0}
14051 };
14052 \f
14053 enum ada_primitive_types {
14054   ada_primitive_type_int,
14055   ada_primitive_type_long,
14056   ada_primitive_type_short,
14057   ada_primitive_type_char,
14058   ada_primitive_type_float,
14059   ada_primitive_type_double,
14060   ada_primitive_type_void,
14061   ada_primitive_type_long_long,
14062   ada_primitive_type_long_double,
14063   ada_primitive_type_natural,
14064   ada_primitive_type_positive,
14065   ada_primitive_type_system_address,
14066   ada_primitive_type_storage_offset,
14067   nr_ada_primitive_types
14068 };
14069
14070 static void
14071 ada_language_arch_info (struct gdbarch *gdbarch,
14072                         struct language_arch_info *lai)
14073 {
14074   const struct builtin_type *builtin = builtin_type (gdbarch);
14075
14076   lai->primitive_type_vector
14077     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
14078                               struct type *);
14079
14080   lai->primitive_type_vector [ada_primitive_type_int]
14081     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14082                          0, "integer");
14083   lai->primitive_type_vector [ada_primitive_type_long]
14084     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
14085                          0, "long_integer");
14086   lai->primitive_type_vector [ada_primitive_type_short]
14087     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
14088                          0, "short_integer");
14089   lai->string_char_type
14090     = lai->primitive_type_vector [ada_primitive_type_char]
14091     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
14092   lai->primitive_type_vector [ada_primitive_type_float]
14093     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14094                        "float", gdbarch_float_format (gdbarch));
14095   lai->primitive_type_vector [ada_primitive_type_double]
14096     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14097                        "long_float", gdbarch_double_format (gdbarch));
14098   lai->primitive_type_vector [ada_primitive_type_long_long]
14099     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14100                          0, "long_long_integer");
14101   lai->primitive_type_vector [ada_primitive_type_long_double]
14102     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14103                        "long_long_float", gdbarch_long_double_format (gdbarch));
14104   lai->primitive_type_vector [ada_primitive_type_natural]
14105     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14106                          0, "natural");
14107   lai->primitive_type_vector [ada_primitive_type_positive]
14108     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14109                          0, "positive");
14110   lai->primitive_type_vector [ada_primitive_type_void]
14111     = builtin->builtin_void;
14112
14113   lai->primitive_type_vector [ada_primitive_type_system_address]
14114     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14115                                       "void"));
14116   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14117     = "system__address";
14118
14119   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14120      type.  This is a signed integral type whose size is the same as
14121      the size of addresses.  */
14122   {
14123     unsigned int addr_length = TYPE_LENGTH
14124       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14125
14126     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14127       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14128                            "storage_offset");
14129   }
14130
14131   lai->bool_type_symbol = NULL;
14132   lai->bool_type_default = builtin->builtin_bool;
14133 }
14134 \f
14135                                 /* Language vector */
14136
14137 /* Not really used, but needed in the ada_language_defn.  */
14138
14139 static void
14140 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14141 {
14142   ada_emit_char (c, type, stream, quoter, 1);
14143 }
14144
14145 static int
14146 parse (struct parser_state *ps)
14147 {
14148   warnings_issued = 0;
14149   return ada_parse (ps);
14150 }
14151
14152 static const struct exp_descriptor ada_exp_descriptor = {
14153   ada_print_subexp,
14154   ada_operator_length,
14155   ada_operator_check,
14156   ada_op_name,
14157   ada_dump_subexp_body,
14158   ada_evaluate_subexp
14159 };
14160
14161 /* symbol_name_matcher_ftype adapter for wild_match.  */
14162
14163 static bool
14164 do_wild_match (const char *symbol_search_name,
14165                const lookup_name_info &lookup_name,
14166                completion_match_result *comp_match_res)
14167 {
14168   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14169 }
14170
14171 /* symbol_name_matcher_ftype adapter for full_match.  */
14172
14173 static bool
14174 do_full_match (const char *symbol_search_name,
14175                const lookup_name_info &lookup_name,
14176                completion_match_result *comp_match_res)
14177 {
14178   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14179 }
14180
14181 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
14182
14183 static bool
14184 do_exact_match (const char *symbol_search_name,
14185                 const lookup_name_info &lookup_name,
14186                 completion_match_result *comp_match_res)
14187 {
14188   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14189 }
14190
14191 /* Build the Ada lookup name for LOOKUP_NAME.  */
14192
14193 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14194 {
14195   const std::string &user_name = lookup_name.name ();
14196
14197   if (user_name[0] == '<')
14198     {
14199       if (user_name.back () == '>')
14200         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14201       else
14202         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14203       m_encoded_p = true;
14204       m_verbatim_p = true;
14205       m_wild_match_p = false;
14206       m_standard_p = false;
14207     }
14208   else
14209     {
14210       m_verbatim_p = false;
14211
14212       m_encoded_p = user_name.find ("__") != std::string::npos;
14213
14214       if (!m_encoded_p)
14215         {
14216           const char *folded = ada_fold_name (user_name.c_str ());
14217           const char *encoded = ada_encode_1 (folded, false);
14218           if (encoded != NULL)
14219             m_encoded_name = encoded;
14220           else
14221             m_encoded_name = user_name;
14222         }
14223       else
14224         m_encoded_name = user_name;
14225
14226       /* Handle the 'package Standard' special case.  See description
14227          of m_standard_p.  */
14228       if (startswith (m_encoded_name.c_str (), "standard__"))
14229         {
14230           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14231           m_standard_p = true;
14232         }
14233       else
14234         m_standard_p = false;
14235
14236       /* If the name contains a ".", then the user is entering a fully
14237          qualified entity name, and the match must not be done in wild
14238          mode.  Similarly, if the user wants to complete what looks
14239          like an encoded name, the match must not be done in wild
14240          mode.  Also, in the standard__ special case always do
14241          non-wild matching.  */
14242       m_wild_match_p
14243         = (lookup_name.match_type () != symbol_name_match_type::FULL
14244            && !m_encoded_p
14245            && !m_standard_p
14246            && user_name.find ('.') == std::string::npos);
14247     }
14248 }
14249
14250 /* symbol_name_matcher_ftype method for Ada.  This only handles
14251    completion mode.  */
14252
14253 static bool
14254 ada_symbol_name_matches (const char *symbol_search_name,
14255                          const lookup_name_info &lookup_name,
14256                          completion_match_result *comp_match_res)
14257 {
14258   return lookup_name.ada ().matches (symbol_search_name,
14259                                      lookup_name.match_type (),
14260                                      comp_match_res);
14261 }
14262
14263 /* A name matcher that matches the symbol name exactly, with
14264    strcmp.  */
14265
14266 static bool
14267 literal_symbol_name_matcher (const char *symbol_search_name,
14268                              const lookup_name_info &lookup_name,
14269                              completion_match_result *comp_match_res)
14270 {
14271   const std::string &name = lookup_name.name ();
14272
14273   int cmp = (lookup_name.completion_mode ()
14274              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14275              : strcmp (symbol_search_name, name.c_str ()));
14276   if (cmp == 0)
14277     {
14278       if (comp_match_res != NULL)
14279         comp_match_res->set_match (symbol_search_name);
14280       return true;
14281     }
14282   else
14283     return false;
14284 }
14285
14286 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14287    Ada.  */
14288
14289 static symbol_name_matcher_ftype *
14290 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14291 {
14292   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14293     return literal_symbol_name_matcher;
14294
14295   if (lookup_name.completion_mode ())
14296     return ada_symbol_name_matches;
14297   else
14298     {
14299       if (lookup_name.ada ().wild_match_p ())
14300         return do_wild_match;
14301       else if (lookup_name.ada ().verbatim_p ())
14302         return do_exact_match;
14303       else
14304         return do_full_match;
14305     }
14306 }
14307
14308 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14309
14310 static struct value *
14311 ada_read_var_value (struct symbol *var, const struct block *var_block,
14312                     struct frame_info *frame)
14313 {
14314   const struct block *frame_block = NULL;
14315   struct symbol *renaming_sym = NULL;
14316
14317   /* The only case where default_read_var_value is not sufficient
14318      is when VAR is a renaming...  */
14319   if (frame)
14320     frame_block = get_frame_block (frame, NULL);
14321   if (frame_block)
14322     renaming_sym = ada_find_renaming_symbol (var, frame_block);
14323   if (renaming_sym != NULL)
14324     return ada_read_renaming_var_value (renaming_sym, frame_block);
14325
14326   /* This is a typical case where we expect the default_read_var_value
14327      function to work.  */
14328   return default_read_var_value (var, var_block, frame);
14329 }
14330
14331 static const char *ada_extensions[] =
14332 {
14333   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14334 };
14335
14336 extern const struct language_defn ada_language_defn = {
14337   "ada",                        /* Language name */
14338   "Ada",
14339   language_ada,
14340   range_check_off,
14341   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14342                                    that's not quite what this means.  */
14343   array_row_major,
14344   macro_expansion_no,
14345   ada_extensions,
14346   &ada_exp_descriptor,
14347   parse,
14348   resolve,
14349   ada_printchar,                /* Print a character constant */
14350   ada_printstr,                 /* Function to print string constant */
14351   emit_char,                    /* Function to print single char (not used) */
14352   ada_print_type,               /* Print a type using appropriate syntax */
14353   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14354   ada_val_print,                /* Print a value using appropriate syntax */
14355   ada_value_print,              /* Print a top-level value */
14356   ada_read_var_value,           /* la_read_var_value */
14357   NULL,                         /* Language specific skip_trampoline */
14358   NULL,                         /* name_of_this */
14359   true,                         /* la_store_sym_names_in_linkage_form_p */
14360   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14361   basic_lookup_transparent_type,        /* lookup_transparent_type */
14362   ada_la_decode,                /* Language specific symbol demangler */
14363   ada_sniff_from_mangled_name,
14364   NULL,                         /* Language specific
14365                                    class_name_from_physname */
14366   ada_op_print_tab,             /* expression operators for printing */
14367   0,                            /* c-style arrays */
14368   1,                            /* String lower bound */
14369   ada_get_gdb_completer_word_break_characters,
14370   ada_collect_symbol_completion_matches,
14371   ada_language_arch_info,
14372   ada_print_array_index,
14373   default_pass_by_reference,
14374   c_get_string,
14375   ada_watch_location_expression,
14376   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14377   ada_iterate_over_symbols,
14378   default_search_name_hash,
14379   &ada_varobj_ops,
14380   NULL,
14381   NULL,
14382   LANG_MAGIC
14383 };
14384
14385 /* Command-list for the "set/show ada" prefix command.  */
14386 static struct cmd_list_element *set_ada_list;
14387 static struct cmd_list_element *show_ada_list;
14388
14389 /* Implement the "set ada" prefix command.  */
14390
14391 static void
14392 set_ada_command (const char *arg, int from_tty)
14393 {
14394   printf_unfiltered (_(\
14395 "\"set ada\" must be followed by the name of a setting.\n"));
14396   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14397 }
14398
14399 /* Implement the "show ada" prefix command.  */
14400
14401 static void
14402 show_ada_command (const char *args, int from_tty)
14403 {
14404   cmd_show_list (show_ada_list, from_tty, "");
14405 }
14406
14407 static void
14408 initialize_ada_catchpoint_ops (void)
14409 {
14410   struct breakpoint_ops *ops;
14411
14412   initialize_breakpoint_ops ();
14413
14414   ops = &catch_exception_breakpoint_ops;
14415   *ops = bkpt_breakpoint_ops;
14416   ops->allocate_location = allocate_location_catch_exception;
14417   ops->re_set = re_set_catch_exception;
14418   ops->check_status = check_status_catch_exception;
14419   ops->print_it = print_it_catch_exception;
14420   ops->print_one = print_one_catch_exception;
14421   ops->print_mention = print_mention_catch_exception;
14422   ops->print_recreate = print_recreate_catch_exception;
14423
14424   ops = &catch_exception_unhandled_breakpoint_ops;
14425   *ops = bkpt_breakpoint_ops;
14426   ops->allocate_location = allocate_location_catch_exception_unhandled;
14427   ops->re_set = re_set_catch_exception_unhandled;
14428   ops->check_status = check_status_catch_exception_unhandled;
14429   ops->print_it = print_it_catch_exception_unhandled;
14430   ops->print_one = print_one_catch_exception_unhandled;
14431   ops->print_mention = print_mention_catch_exception_unhandled;
14432   ops->print_recreate = print_recreate_catch_exception_unhandled;
14433
14434   ops = &catch_assert_breakpoint_ops;
14435   *ops = bkpt_breakpoint_ops;
14436   ops->allocate_location = allocate_location_catch_assert;
14437   ops->re_set = re_set_catch_assert;
14438   ops->check_status = check_status_catch_assert;
14439   ops->print_it = print_it_catch_assert;
14440   ops->print_one = print_one_catch_assert;
14441   ops->print_mention = print_mention_catch_assert;
14442   ops->print_recreate = print_recreate_catch_assert;
14443
14444   ops = &catch_handlers_breakpoint_ops;
14445   *ops = bkpt_breakpoint_ops;
14446   ops->allocate_location = allocate_location_catch_handlers;
14447   ops->re_set = re_set_catch_handlers;
14448   ops->check_status = check_status_catch_handlers;
14449   ops->print_it = print_it_catch_handlers;
14450   ops->print_one = print_one_catch_handlers;
14451   ops->print_mention = print_mention_catch_handlers;
14452   ops->print_recreate = print_recreate_catch_handlers;
14453 }
14454
14455 /* This module's 'new_objfile' observer.  */
14456
14457 static void
14458 ada_new_objfile_observer (struct objfile *objfile)
14459 {
14460   ada_clear_symbol_cache ();
14461 }
14462
14463 /* This module's 'free_objfile' observer.  */
14464
14465 static void
14466 ada_free_objfile_observer (struct objfile *objfile)
14467 {
14468   ada_clear_symbol_cache ();
14469 }
14470
14471 void
14472 _initialize_ada_language (void)
14473 {
14474   initialize_ada_catchpoint_ops ();
14475
14476   add_prefix_cmd ("ada", no_class, set_ada_command,
14477                   _("Prefix command for changing Ada-specific settings"),
14478                   &set_ada_list, "set ada ", 0, &setlist);
14479
14480   add_prefix_cmd ("ada", no_class, show_ada_command,
14481                   _("Generic command for showing Ada-specific settings."),
14482                   &show_ada_list, "show ada ", 0, &showlist);
14483
14484   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14485                            &trust_pad_over_xvs, _("\
14486 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14487 Show whether an optimization trusting PAD types over XVS types is activated"),
14488                            _("\
14489 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14490 should normally trust the contents of PAD types, but certain older versions\n\
14491 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14492 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14493 work around this bug.  It is always safe to turn this option \"off\", but\n\
14494 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14495 this option to \"off\" unless necessary."),
14496                             NULL, NULL, &set_ada_list, &show_ada_list);
14497
14498   add_setshow_boolean_cmd ("print-signatures", class_vars,
14499                            &print_signatures, _("\
14500 Enable or disable the output of formal and return types for functions in the \
14501 overloads selection menu"), _("\
14502 Show whether the output of formal and return types for functions in the \
14503 overloads selection menu is activated"),
14504                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14505
14506   add_catch_command ("exception", _("\
14507 Catch Ada exceptions, when raised.\n\
14508 Usage: catch exception [ ARG ]\n\
14509 \n\
14510 Without any argument, stop when any Ada exception is raised.\n\
14511 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14512 being raised does not have a handler (and will therefore lead to the task's\n\
14513 termination).\n\
14514 Otherwise, the catchpoint only stops when the name of the exception being\n\
14515 raised is the same as ARG."),
14516                      catch_ada_exception_command,
14517                      NULL,
14518                      CATCH_PERMANENT,
14519                      CATCH_TEMPORARY);
14520
14521   add_catch_command ("handlers", _("\
14522 Catch Ada exceptions, when handled.\n\
14523 With an argument, catch only exceptions with the given name."),
14524                      catch_ada_handlers_command,
14525                      NULL,
14526                      CATCH_PERMANENT,
14527                      CATCH_TEMPORARY);
14528   add_catch_command ("assert", _("\
14529 Catch failed Ada assertions, when raised.\n\
14530 With an argument, catch only exceptions with the given name."),
14531                      catch_assert_command,
14532                      NULL,
14533                      CATCH_PERMANENT,
14534                      CATCH_TEMPORARY);
14535
14536   varsize_limit = 65536;
14537   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14538                             &varsize_limit, _("\
14539 Set the maximum number of bytes allowed in a variable-size object."), _("\
14540 Show the maximum number of bytes allowed in a variable-size object."), _("\
14541 Attempts to access an object whose size is not a compile-time constant\n\
14542 and exceeds this limit will cause an error."),
14543                             NULL, NULL, &setlist, &showlist);
14544
14545   add_info ("exceptions", info_exceptions_command,
14546             _("\
14547 List all Ada exception names.\n\
14548 If a regular expression is passed as an argument, only those matching\n\
14549 the regular expression are listed."));
14550
14551   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14552                   _("Set Ada maintenance-related variables."),
14553                   &maint_set_ada_cmdlist, "maintenance set ada ",
14554                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14555
14556   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14557                   _("Show Ada maintenance-related variables"),
14558                   &maint_show_ada_cmdlist, "maintenance show ada ",
14559                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14560
14561   add_setshow_boolean_cmd
14562     ("ignore-descriptive-types", class_maintenance,
14563      &ada_ignore_descriptive_types_p,
14564      _("Set whether descriptive types generated by GNAT should be ignored."),
14565      _("Show whether descriptive types generated by GNAT should be ignored."),
14566      _("\
14567 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14568 DWARF attribute."),
14569      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14570
14571   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14572                                            NULL, xcalloc, xfree);
14573
14574   /* The ada-lang observers.  */
14575   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14576   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14577   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14578
14579   /* Setup various context-specific data.  */
14580   ada_inferior_data
14581     = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup);
14582   ada_pspace_data_handle
14583     = register_program_space_data_with_cleanup (NULL, ada_pspace_data_cleanup);
14584 }