Remove unnecessary casts of NULL
[external/binutils.git] / gdb / ada-lang.c
1 /* Ada language support routines for GDB, the GNU debugger.
2
3    Copyright (C) 1992-2019 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20
21 #include "defs.h"
22 #include <ctype.h>
23 #include "demangle.h"
24 #include "gdb_regex.h"
25 #include "frame.h"
26 #include "symtab.h"
27 #include "gdbtypes.h"
28 #include "gdbcmd.h"
29 #include "expression.h"
30 #include "parser-defs.h"
31 #include "language.h"
32 #include "varobj.h"
33 #include "c-lang.h"
34 #include "inferior.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "breakpoint.h"
38 #include "gdbcore.h"
39 #include "hashtab.h"
40 #include "gdb_obstack.h"
41 #include "ada-lang.h"
42 #include "completer.h"
43 #include <sys/stat.h>
44 #include "ui-out.h"
45 #include "block.h"
46 #include "infcall.h"
47 #include "dictionary.h"
48 #include "annotate.h"
49 #include "valprint.h"
50 #include "source.h"
51 #include "observable.h"
52 #include "common/vec.h"
53 #include "stack.h"
54 #include "common/gdb_vecs.h"
55 #include "typeprint.h"
56 #include "namespace.h"
57
58 #include "psymtab.h"
59 #include "value.h"
60 #include "mi/mi-common.h"
61 #include "arch-utils.h"
62 #include "cli/cli-utils.h"
63 #include "common/function-view.h"
64 #include "common/byte-vector.h"
65 #include <algorithm>
66 #include <map>
67
68 /* Define whether or not the C operator '/' truncates towards zero for
69    differently signed operands (truncation direction is undefined in C).
70    Copied from valarith.c.  */
71
72 #ifndef TRUNCATION_TOWARDS_ZERO
73 #define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
74 #endif
75
76 static struct type *desc_base_type (struct type *);
77
78 static struct type *desc_bounds_type (struct type *);
79
80 static struct value *desc_bounds (struct value *);
81
82 static int fat_pntr_bounds_bitpos (struct type *);
83
84 static int fat_pntr_bounds_bitsize (struct type *);
85
86 static struct type *desc_data_target_type (struct type *);
87
88 static struct value *desc_data (struct value *);
89
90 static int fat_pntr_data_bitpos (struct type *);
91
92 static int fat_pntr_data_bitsize (struct type *);
93
94 static struct value *desc_one_bound (struct value *, int, int);
95
96 static int desc_bound_bitpos (struct type *, int, int);
97
98 static int desc_bound_bitsize (struct type *, int, int);
99
100 static struct type *desc_index_type (struct type *, int);
101
102 static int desc_arity (struct type *);
103
104 static int ada_type_match (struct type *, struct type *, int);
105
106 static int ada_args_match (struct symbol *, struct value **, int);
107
108 static struct value *make_array_descriptor (struct type *, struct value *);
109
110 static void ada_add_block_symbols (struct obstack *,
111                                    const struct block *,
112                                    const lookup_name_info &lookup_name,
113                                    domain_enum, struct objfile *);
114
115 static void ada_add_all_symbols (struct obstack *, const struct block *,
116                                  const lookup_name_info &lookup_name,
117                                  domain_enum, int, int *);
118
119 static int is_nonfunction (struct block_symbol *, int);
120
121 static void add_defn_to_vec (struct obstack *, struct symbol *,
122                              const struct block *);
123
124 static int num_defns_collected (struct obstack *);
125
126 static struct block_symbol *defns_collected (struct obstack *, int);
127
128 static struct value *resolve_subexp (expression_up *, int *, int,
129                                      struct type *, int,
130                                      innermost_block_tracker *);
131
132 static void replace_operator_with_call (expression_up *, int, int, int,
133                                         struct symbol *, const struct block *);
134
135 static int possible_user_operator_p (enum exp_opcode, struct value **);
136
137 static const char *ada_op_name (enum exp_opcode);
138
139 static const char *ada_decoded_op_name (enum exp_opcode);
140
141 static int numeric_type_p (struct type *);
142
143 static int integer_type_p (struct type *);
144
145 static int scalar_type_p (struct type *);
146
147 static int discrete_type_p (struct type *);
148
149 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
150                                                 int, int);
151
152 static struct value *evaluate_subexp_type (struct expression *, int *);
153
154 static struct type *ada_find_parallel_type_with_name (struct type *,
155                                                       const char *);
156
157 static int is_dynamic_field (struct type *, int);
158
159 static struct type *to_fixed_variant_branch_type (struct type *,
160                                                   const gdb_byte *,
161                                                   CORE_ADDR, struct value *);
162
163 static struct type *to_fixed_array_type (struct type *, struct value *, int);
164
165 static struct type *to_fixed_range_type (struct type *, struct value *);
166
167 static struct type *to_static_fixed_type (struct type *);
168 static struct type *static_unwrap_type (struct type *type);
169
170 static struct value *unwrap_value (struct value *);
171
172 static struct type *constrained_packed_array_type (struct type *, long *);
173
174 static struct type *decode_constrained_packed_array_type (struct type *);
175
176 static long decode_packed_array_bitsize (struct type *);
177
178 static struct value *decode_constrained_packed_array (struct value *);
179
180 static int ada_is_packed_array_type  (struct type *);
181
182 static int ada_is_unconstrained_packed_array_type (struct type *);
183
184 static struct value *value_subscript_packed (struct value *, int,
185                                              struct value **);
186
187 static struct value *coerce_unspec_val_to_type (struct value *,
188                                                 struct type *);
189
190 static int lesseq_defined_than (struct symbol *, struct symbol *);
191
192 static int equiv_types (struct type *, struct type *);
193
194 static int is_name_suffix (const char *);
195
196 static int advance_wild_match (const char **, const char *, int);
197
198 static bool wild_match (const char *name, const char *patn);
199
200 static struct value *ada_coerce_ref (struct value *);
201
202 static LONGEST pos_atr (struct value *);
203
204 static struct value *value_pos_atr (struct type *, struct value *);
205
206 static struct value *value_val_atr (struct type *, struct value *);
207
208 static struct symbol *standard_lookup (const char *, const struct block *,
209                                        domain_enum);
210
211 static struct value *ada_search_struct_field (const char *, struct value *, int,
212                                               struct type *);
213
214 static struct value *ada_value_primitive_field (struct value *, int, int,
215                                                 struct type *);
216
217 static int find_struct_field (const char *, struct type *, int,
218                               struct type **, int *, int *, int *, int *);
219
220 static int ada_resolve_function (struct block_symbol *, int,
221                                  struct value **, int, const char *,
222                                  struct type *, int);
223
224 static int ada_is_direct_array_type (struct type *);
225
226 static void ada_language_arch_info (struct gdbarch *,
227                                     struct language_arch_info *);
228
229 static struct value *ada_index_struct_field (int, struct value *, int,
230                                              struct type *);
231
232 static struct value *assign_aggregate (struct value *, struct value *, 
233                                        struct expression *,
234                                        int *, enum noside);
235
236 static void aggregate_assign_from_choices (struct value *, struct value *, 
237                                            struct expression *,
238                                            int *, LONGEST *, int *,
239                                            int, LONGEST, LONGEST);
240
241 static void aggregate_assign_positional (struct value *, struct value *,
242                                          struct expression *,
243                                          int *, LONGEST *, int *, int,
244                                          LONGEST, LONGEST);
245
246
247 static void aggregate_assign_others (struct value *, struct value *,
248                                      struct expression *,
249                                      int *, LONGEST *, int, LONGEST, LONGEST);
250
251
252 static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
253
254
255 static struct value *ada_evaluate_subexp (struct type *, struct expression *,
256                                           int *, enum noside);
257
258 static void ada_forward_operator_length (struct expression *, int, int *,
259                                          int *);
260
261 static struct type *ada_find_any_type (const char *name);
262
263 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
264   (const lookup_name_info &lookup_name);
265
266 \f
267
268 /* The result of a symbol lookup to be stored in our symbol cache.  */
269
270 struct cache_entry
271 {
272   /* The name used to perform the lookup.  */
273   const char *name;
274   /* The namespace used during the lookup.  */
275   domain_enum domain;
276   /* The symbol returned by the lookup, or NULL if no matching symbol
277      was found.  */
278   struct symbol *sym;
279   /* The block where the symbol was found, or NULL if no matching
280      symbol was found.  */
281   const struct block *block;
282   /* A pointer to the next entry with the same hash.  */
283   struct cache_entry *next;
284 };
285
286 /* The Ada symbol cache, used to store the result of Ada-mode symbol
287    lookups in the course of executing the user's commands.
288
289    The cache is implemented using a simple, fixed-sized hash.
290    The size is fixed on the grounds that there are not likely to be
291    all that many symbols looked up during any given session, regardless
292    of the size of the symbol table.  If we decide to go to a resizable
293    table, let's just use the stuff from libiberty instead.  */
294
295 #define HASH_SIZE 1009
296
297 struct ada_symbol_cache
298 {
299   /* An obstack used to store the entries in our cache.  */
300   struct obstack cache_space;
301
302   /* The root of the hash table used to implement our symbol cache.  */
303   struct cache_entry *root[HASH_SIZE];
304 };
305
306 static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
307
308 /* Maximum-sized dynamic type.  */
309 static unsigned int varsize_limit;
310
311 static const char ada_completer_word_break_characters[] =
312 #ifdef VMS
313   " \t\n!@#%^&*()+=|~`}{[]\";:?/,-";
314 #else
315   " \t\n!@#$%^&*()+=|~`}{[]\";:?/,-";
316 #endif
317
318 /* The name of the symbol to use to get the name of the main subprogram.  */
319 static const char ADA_MAIN_PROGRAM_SYMBOL_NAME[]
320   = "__gnat_ada_main_program_name";
321
322 /* Limit on the number of warnings to raise per expression evaluation.  */
323 static int warning_limit = 2;
324
325 /* Number of warning messages issued; reset to 0 by cleanups after
326    expression evaluation.  */
327 static int warnings_issued = 0;
328
329 static const char *known_runtime_file_name_patterns[] = {
330   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
331 };
332
333 static const char *known_auxiliary_function_name_patterns[] = {
334   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
335 };
336
337 /* Maintenance-related settings for this module.  */
338
339 static struct cmd_list_element *maint_set_ada_cmdlist;
340 static struct cmd_list_element *maint_show_ada_cmdlist;
341
342 /* Implement the "maintenance set ada" (prefix) command.  */
343
344 static void
345 maint_set_ada_cmd (const char *args, int from_tty)
346 {
347   help_list (maint_set_ada_cmdlist, "maintenance set ada ", all_commands,
348              gdb_stdout);
349 }
350
351 /* Implement the "maintenance show ada" (prefix) command.  */
352
353 static void
354 maint_show_ada_cmd (const char *args, int from_tty)
355 {
356   cmd_show_list (maint_show_ada_cmdlist, from_tty, "");
357 }
358
359 /* The "maintenance ada set/show ignore-descriptive-type" value.  */
360
361 static int ada_ignore_descriptive_types_p = 0;
362
363                         /* Inferior-specific data.  */
364
365 /* Per-inferior data for this module.  */
366
367 struct ada_inferior_data
368 {
369   /* The ada__tags__type_specific_data type, which is used when decoding
370      tagged types.  With older versions of GNAT, this type was directly
371      accessible through a component ("tsd") in the object tag.  But this
372      is no longer the case, so we cache it for each inferior.  */
373   struct type *tsd_type = nullptr;
374
375   /* The exception_support_info data.  This data is used to determine
376      how to implement support for Ada exception catchpoints in a given
377      inferior.  */
378   const struct exception_support_info *exception_info = nullptr;
379 };
380
381 /* Our key to this module's inferior data.  */
382 static const struct inferior_key<ada_inferior_data> ada_inferior_data;
383
384 /* Return our inferior data for the given inferior (INF).
385
386    This function always returns a valid pointer to an allocated
387    ada_inferior_data structure.  If INF's inferior data has not
388    been previously set, this functions creates a new one with all
389    fields set to zero, sets INF's inferior to it, and then returns
390    a pointer to that newly allocated ada_inferior_data.  */
391
392 static struct ada_inferior_data *
393 get_ada_inferior_data (struct inferior *inf)
394 {
395   struct ada_inferior_data *data;
396
397   data = ada_inferior_data.get (inf);
398   if (data == NULL)
399     data = ada_inferior_data.emplace (inf);
400
401   return data;
402 }
403
404 /* Perform all necessary cleanups regarding our module's inferior data
405    that is required after the inferior INF just exited.  */
406
407 static void
408 ada_inferior_exit (struct inferior *inf)
409 {
410   ada_inferior_data.clear (inf);
411 }
412
413
414                         /* program-space-specific data.  */
415
416 /* This module's per-program-space data.  */
417 struct ada_pspace_data
418 {
419   ~ada_pspace_data ()
420   {
421     if (sym_cache != NULL)
422       ada_free_symbol_cache (sym_cache);
423   }
424
425   /* The Ada symbol cache.  */
426   struct ada_symbol_cache *sym_cache = nullptr;
427 };
428
429 /* Key to our per-program-space data.  */
430 static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
431
432 /* Return this module's data for the given program space (PSPACE).
433    If not is found, add a zero'ed one now.
434
435    This function always returns a valid object.  */
436
437 static struct ada_pspace_data *
438 get_ada_pspace_data (struct program_space *pspace)
439 {
440   struct ada_pspace_data *data;
441
442   data = ada_pspace_data_handle.get (pspace);
443   if (data == NULL)
444     data = ada_pspace_data_handle.emplace (pspace);
445
446   return data;
447 }
448
449                         /* Utilities */
450
451 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
452    all typedef layers have been peeled.  Otherwise, return TYPE.
453
454    Normally, we really expect a typedef type to only have 1 typedef layer.
455    In other words, we really expect the target type of a typedef type to be
456    a non-typedef type.  This is particularly true for Ada units, because
457    the language does not have a typedef vs not-typedef distinction.
458    In that respect, the Ada compiler has been trying to eliminate as many
459    typedef definitions in the debugging information, since they generally
460    do not bring any extra information (we still use typedef under certain
461    circumstances related mostly to the GNAT encoding).
462
463    Unfortunately, we have seen situations where the debugging information
464    generated by the compiler leads to such multiple typedef layers.  For
465    instance, consider the following example with stabs:
466
467      .stabs  "pck__float_array___XUP:Tt(0,46)=s16P_ARRAY:(0,47)=[...]"[...]
468      .stabs  "pck__float_array___XUP:t(0,36)=(0,46)",128,0,6,0
469
470    This is an error in the debugging information which causes type
471    pck__float_array___XUP to be defined twice, and the second time,
472    it is defined as a typedef of a typedef.
473
474    This is on the fringe of legality as far as debugging information is
475    concerned, and certainly unexpected.  But it is easy to handle these
476    situations correctly, so we can afford to be lenient in this case.  */
477
478 static struct type *
479 ada_typedef_target_type (struct type *type)
480 {
481   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
482     type = TYPE_TARGET_TYPE (type);
483   return type;
484 }
485
486 /* Given DECODED_NAME a string holding a symbol name in its
487    decoded form (ie using the Ada dotted notation), returns
488    its unqualified name.  */
489
490 static const char *
491 ada_unqualified_name (const char *decoded_name)
492 {
493   const char *result;
494   
495   /* If the decoded name starts with '<', it means that the encoded
496      name does not follow standard naming conventions, and thus that
497      it is not your typical Ada symbol name.  Trying to unqualify it
498      is therefore pointless and possibly erroneous.  */
499   if (decoded_name[0] == '<')
500     return decoded_name;
501
502   result = strrchr (decoded_name, '.');
503   if (result != NULL)
504     result++;                   /* Skip the dot...  */
505   else
506     result = decoded_name;
507
508   return result;
509 }
510
511 /* Return a string starting with '<', followed by STR, and '>'.  */
512
513 static std::string
514 add_angle_brackets (const char *str)
515 {
516   return string_printf ("<%s>", str);
517 }
518
519 static const char *
520 ada_get_gdb_completer_word_break_characters (void)
521 {
522   return ada_completer_word_break_characters;
523 }
524
525 /* Print an array element index using the Ada syntax.  */
526
527 static void
528 ada_print_array_index (struct value *index_value, struct ui_file *stream,
529                        const struct value_print_options *options)
530 {
531   LA_VALUE_PRINT (index_value, stream, options);
532   fprintf_filtered (stream, " => ");
533 }
534
535 /* la_watch_location_expression for Ada.  */
536
537 gdb::unique_xmalloc_ptr<char>
538 ada_watch_location_expression (struct type *type, CORE_ADDR addr)
539 {
540   type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
541   std::string name = type_to_string (type);
542   return gdb::unique_xmalloc_ptr<char>
543     (xstrprintf ("{%s} %s", name.c_str (), core_addr_to_string (addr)));
544 }
545
546 /* Assuming VECT points to an array of *SIZE objects of size
547    ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
548    updating *SIZE as necessary and returning the (new) array.  */
549
550 void *
551 grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
552 {
553   if (*size < min_size)
554     {
555       *size *= 2;
556       if (*size < min_size)
557         *size = min_size;
558       vect = xrealloc (vect, *size * element_size);
559     }
560   return vect;
561 }
562
563 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
564    suffix of FIELD_NAME beginning "___".  */
565
566 static int
567 field_name_match (const char *field_name, const char *target)
568 {
569   int len = strlen (target);
570
571   return
572     (strncmp (field_name, target, len) == 0
573      && (field_name[len] == '\0'
574          || (startswith (field_name + len, "___")
575              && strcmp (field_name + strlen (field_name) - 6,
576                         "___XVN") != 0)));
577 }
578
579
580 /* Assuming TYPE is a TYPE_CODE_STRUCT or a TYPE_CODE_TYPDEF to
581    a TYPE_CODE_STRUCT, find the field whose name matches FIELD_NAME,
582    and return its index.  This function also handles fields whose name
583    have ___ suffixes because the compiler sometimes alters their name
584    by adding such a suffix to represent fields with certain constraints.
585    If the field could not be found, return a negative number if
586    MAYBE_MISSING is set.  Otherwise raise an error.  */
587
588 int
589 ada_get_field_index (const struct type *type, const char *field_name,
590                      int maybe_missing)
591 {
592   int fieldno;
593   struct type *struct_type = check_typedef ((struct type *) type);
594
595   for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
596     if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
597       return fieldno;
598
599   if (!maybe_missing)
600     error (_("Unable to find field %s in struct %s.  Aborting"),
601            field_name, TYPE_NAME (struct_type));
602
603   return -1;
604 }
605
606 /* The length of the prefix of NAME prior to any "___" suffix.  */
607
608 int
609 ada_name_prefix_len (const char *name)
610 {
611   if (name == NULL)
612     return 0;
613   else
614     {
615       const char *p = strstr (name, "___");
616
617       if (p == NULL)
618         return strlen (name);
619       else
620         return p - name;
621     }
622 }
623
624 /* Return non-zero if SUFFIX is a suffix of STR.
625    Return zero if STR is null.  */
626
627 static int
628 is_suffix (const char *str, const char *suffix)
629 {
630   int len1, len2;
631
632   if (str == NULL)
633     return 0;
634   len1 = strlen (str);
635   len2 = strlen (suffix);
636   return (len1 >= len2 && strcmp (str + len1 - len2, suffix) == 0);
637 }
638
639 /* The contents of value VAL, treated as a value of type TYPE.  The
640    result is an lval in memory if VAL is.  */
641
642 static struct value *
643 coerce_unspec_val_to_type (struct value *val, struct type *type)
644 {
645   type = ada_check_typedef (type);
646   if (value_type (val) == type)
647     return val;
648   else
649     {
650       struct value *result;
651
652       /* Make sure that the object size is not unreasonable before
653          trying to allocate some memory for it.  */
654       ada_ensure_varsize_limit (type);
655
656       if (value_lazy (val)
657           || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
658         result = allocate_value_lazy (type);
659       else
660         {
661           result = allocate_value (type);
662           value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
663         }
664       set_value_component_location (result, val);
665       set_value_bitsize (result, value_bitsize (val));
666       set_value_bitpos (result, value_bitpos (val));
667       if (VALUE_LVAL (result) == lval_memory)
668         set_value_address (result, value_address (val));
669       return result;
670     }
671 }
672
673 static const gdb_byte *
674 cond_offset_host (const gdb_byte *valaddr, long offset)
675 {
676   if (valaddr == NULL)
677     return NULL;
678   else
679     return valaddr + offset;
680 }
681
682 static CORE_ADDR
683 cond_offset_target (CORE_ADDR address, long offset)
684 {
685   if (address == 0)
686     return 0;
687   else
688     return address + offset;
689 }
690
691 /* Issue a warning (as for the definition of warning in utils.c, but
692    with exactly one argument rather than ...), unless the limit on the
693    number of warnings has passed during the evaluation of the current
694    expression.  */
695
696 /* FIXME: cagney/2004-10-10: This function is mimicking the behavior
697    provided by "complaint".  */
698 static void lim_warning (const char *format, ...) ATTRIBUTE_PRINTF (1, 2);
699
700 static void
701 lim_warning (const char *format, ...)
702 {
703   va_list args;
704
705   va_start (args, format);
706   warnings_issued += 1;
707   if (warnings_issued <= warning_limit)
708     vwarning (format, args);
709
710   va_end (args);
711 }
712
713 /* Issue an error if the size of an object of type T is unreasonable,
714    i.e. if it would be a bad idea to allocate a value of this type in
715    GDB.  */
716
717 void
718 ada_ensure_varsize_limit (const struct type *type)
719 {
720   if (TYPE_LENGTH (type) > varsize_limit)
721     error (_("object size is larger than varsize-limit"));
722 }
723
724 /* Maximum value of a SIZE-byte signed integer type.  */
725 static LONGEST
726 max_of_size (int size)
727 {
728   LONGEST top_bit = (LONGEST) 1 << (size * 8 - 2);
729
730   return top_bit | (top_bit - 1);
731 }
732
733 /* Minimum value of a SIZE-byte signed integer type.  */
734 static LONGEST
735 min_of_size (int size)
736 {
737   return -max_of_size (size) - 1;
738 }
739
740 /* Maximum value of a SIZE-byte unsigned integer type.  */
741 static ULONGEST
742 umax_of_size (int size)
743 {
744   ULONGEST top_bit = (ULONGEST) 1 << (size * 8 - 1);
745
746   return top_bit | (top_bit - 1);
747 }
748
749 /* Maximum value of integral type T, as a signed quantity.  */
750 static LONGEST
751 max_of_type (struct type *t)
752 {
753   if (TYPE_UNSIGNED (t))
754     return (LONGEST) umax_of_size (TYPE_LENGTH (t));
755   else
756     return max_of_size (TYPE_LENGTH (t));
757 }
758
759 /* Minimum value of integral type T, as a signed quantity.  */
760 static LONGEST
761 min_of_type (struct type *t)
762 {
763   if (TYPE_UNSIGNED (t)) 
764     return 0;
765   else
766     return min_of_size (TYPE_LENGTH (t));
767 }
768
769 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
770 LONGEST
771 ada_discrete_type_high_bound (struct type *type)
772 {
773   type = resolve_dynamic_type (type, NULL, 0);
774   switch (TYPE_CODE (type))
775     {
776     case TYPE_CODE_RANGE:
777       return TYPE_HIGH_BOUND (type);
778     case TYPE_CODE_ENUM:
779       return TYPE_FIELD_ENUMVAL (type, TYPE_NFIELDS (type) - 1);
780     case TYPE_CODE_BOOL:
781       return 1;
782     case TYPE_CODE_CHAR:
783     case TYPE_CODE_INT:
784       return max_of_type (type);
785     default:
786       error (_("Unexpected type in ada_discrete_type_high_bound."));
787     }
788 }
789
790 /* The smallest value in the domain of TYPE, a discrete type, as an integer.  */
791 LONGEST
792 ada_discrete_type_low_bound (struct type *type)
793 {
794   type = resolve_dynamic_type (type, NULL, 0);
795   switch (TYPE_CODE (type))
796     {
797     case TYPE_CODE_RANGE:
798       return TYPE_LOW_BOUND (type);
799     case TYPE_CODE_ENUM:
800       return TYPE_FIELD_ENUMVAL (type, 0);
801     case TYPE_CODE_BOOL:
802       return 0;
803     case TYPE_CODE_CHAR:
804     case TYPE_CODE_INT:
805       return min_of_type (type);
806     default:
807       error (_("Unexpected type in ada_discrete_type_low_bound."));
808     }
809 }
810
811 /* The identity on non-range types.  For range types, the underlying
812    non-range scalar type.  */
813
814 static struct type *
815 get_base_type (struct type *type)
816 {
817   while (type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE)
818     {
819       if (type == TYPE_TARGET_TYPE (type) || TYPE_TARGET_TYPE (type) == NULL)
820         return type;
821       type = TYPE_TARGET_TYPE (type);
822     }
823   return type;
824 }
825
826 /* Return a decoded version of the given VALUE.  This means returning
827    a value whose type is obtained by applying all the GNAT-specific
828    encondings, making the resulting type a static but standard description
829    of the initial type.  */
830
831 struct value *
832 ada_get_decoded_value (struct value *value)
833 {
834   struct type *type = ada_check_typedef (value_type (value));
835
836   if (ada_is_array_descriptor_type (type)
837       || (ada_is_constrained_packed_array_type (type)
838           && TYPE_CODE (type) != TYPE_CODE_PTR))
839     {
840       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)  /* array access type.  */
841         value = ada_coerce_to_simple_array_ptr (value);
842       else
843         value = ada_coerce_to_simple_array (value);
844     }
845   else
846     value = ada_to_fixed_value (value);
847
848   return value;
849 }
850
851 /* Same as ada_get_decoded_value, but with the given TYPE.
852    Because there is no associated actual value for this type,
853    the resulting type might be a best-effort approximation in
854    the case of dynamic types.  */
855
856 struct type *
857 ada_get_decoded_type (struct type *type)
858 {
859   type = to_static_fixed_type (type);
860   if (ada_is_constrained_packed_array_type (type))
861     type = ada_coerce_to_simple_array_type (type);
862   return type;
863 }
864
865 \f
866
867                                 /* Language Selection */
868
869 /* If the main program is in Ada, return language_ada, otherwise return LANG
870    (the main program is in Ada iif the adainit symbol is found).  */
871
872 enum language
873 ada_update_initial_language (enum language lang)
874 {
875   if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
876     return language_ada;
877
878   return lang;
879 }
880
881 /* If the main procedure is written in Ada, then return its name.
882    The result is good until the next call.  Return NULL if the main
883    procedure doesn't appear to be in Ada.  */
884
885 char *
886 ada_main_name (void)
887 {
888   struct bound_minimal_symbol msym;
889   static gdb::unique_xmalloc_ptr<char> main_program_name;
890
891   /* For Ada, the name of the main procedure is stored in a specific
892      string constant, generated by the binder.  Look for that symbol,
893      extract its address, and then read that string.  If we didn't find
894      that string, then most probably the main procedure is not written
895      in Ada.  */
896   msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
897
898   if (msym.minsym != NULL)
899     {
900       CORE_ADDR main_program_name_addr;
901       int err_code;
902
903       main_program_name_addr = BMSYMBOL_VALUE_ADDRESS (msym);
904       if (main_program_name_addr == 0)
905         error (_("Invalid address for Ada main program name."));
906
907       target_read_string (main_program_name_addr, &main_program_name,
908                           1024, &err_code);
909
910       if (err_code != 0)
911         return NULL;
912       return main_program_name.get ();
913     }
914
915   /* The main procedure doesn't seem to be in Ada.  */
916   return NULL;
917 }
918 \f
919                                 /* Symbols */
920
921 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
922    of NULLs.  */
923
924 const struct ada_opname_map ada_opname_table[] = {
925   {"Oadd", "\"+\"", BINOP_ADD},
926   {"Osubtract", "\"-\"", BINOP_SUB},
927   {"Omultiply", "\"*\"", BINOP_MUL},
928   {"Odivide", "\"/\"", BINOP_DIV},
929   {"Omod", "\"mod\"", BINOP_MOD},
930   {"Orem", "\"rem\"", BINOP_REM},
931   {"Oexpon", "\"**\"", BINOP_EXP},
932   {"Olt", "\"<\"", BINOP_LESS},
933   {"Ole", "\"<=\"", BINOP_LEQ},
934   {"Ogt", "\">\"", BINOP_GTR},
935   {"Oge", "\">=\"", BINOP_GEQ},
936   {"Oeq", "\"=\"", BINOP_EQUAL},
937   {"One", "\"/=\"", BINOP_NOTEQUAL},
938   {"Oand", "\"and\"", BINOP_BITWISE_AND},
939   {"Oor", "\"or\"", BINOP_BITWISE_IOR},
940   {"Oxor", "\"xor\"", BINOP_BITWISE_XOR},
941   {"Oconcat", "\"&\"", BINOP_CONCAT},
942   {"Oabs", "\"abs\"", UNOP_ABS},
943   {"Onot", "\"not\"", UNOP_LOGICAL_NOT},
944   {"Oadd", "\"+\"", UNOP_PLUS},
945   {"Osubtract", "\"-\"", UNOP_NEG},
946   {NULL, NULL}
947 };
948
949 /* The "encoded" form of DECODED, according to GNAT conventions.  The
950    result is valid until the next call to ada_encode.  If
951    THROW_ERRORS, throw an error if invalid operator name is found.
952    Otherwise, return NULL in that case.  */
953
954 static char *
955 ada_encode_1 (const char *decoded, bool throw_errors)
956 {
957   static char *encoding_buffer = NULL;
958   static size_t encoding_buffer_size = 0;
959   const char *p;
960   int k;
961
962   if (decoded == NULL)
963     return NULL;
964
965   GROW_VECT (encoding_buffer, encoding_buffer_size,
966              2 * strlen (decoded) + 10);
967
968   k = 0;
969   for (p = decoded; *p != '\0'; p += 1)
970     {
971       if (*p == '.')
972         {
973           encoding_buffer[k] = encoding_buffer[k + 1] = '_';
974           k += 2;
975         }
976       else if (*p == '"')
977         {
978           const struct ada_opname_map *mapping;
979
980           for (mapping = ada_opname_table;
981                mapping->encoded != NULL
982                && !startswith (p, mapping->decoded); mapping += 1)
983             ;
984           if (mapping->encoded == NULL)
985             {
986               if (throw_errors)
987                 error (_("invalid Ada operator name: %s"), p);
988               else
989                 return NULL;
990             }
991           strcpy (encoding_buffer + k, mapping->encoded);
992           k += strlen (mapping->encoded);
993           break;
994         }
995       else
996         {
997           encoding_buffer[k] = *p;
998           k += 1;
999         }
1000     }
1001
1002   encoding_buffer[k] = '\0';
1003   return encoding_buffer;
1004 }
1005
1006 /* The "encoded" form of DECODED, according to GNAT conventions.
1007    The result is valid until the next call to ada_encode.  */
1008
1009 char *
1010 ada_encode (const char *decoded)
1011 {
1012   return ada_encode_1 (decoded, true);
1013 }
1014
1015 /* Return NAME folded to lower case, or, if surrounded by single
1016    quotes, unfolded, but with the quotes stripped away.  Result good
1017    to next call.  */
1018
1019 char *
1020 ada_fold_name (const char *name)
1021 {
1022   static char *fold_buffer = NULL;
1023   static size_t fold_buffer_size = 0;
1024
1025   int len = strlen (name);
1026   GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
1027
1028   if (name[0] == '\'')
1029     {
1030       strncpy (fold_buffer, name + 1, len - 2);
1031       fold_buffer[len - 2] = '\000';
1032     }
1033   else
1034     {
1035       int i;
1036
1037       for (i = 0; i <= len; i += 1)
1038         fold_buffer[i] = tolower (name[i]);
1039     }
1040
1041   return fold_buffer;
1042 }
1043
1044 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
1045
1046 static int
1047 is_lower_alphanum (const char c)
1048 {
1049   return (isdigit (c) || (isalpha (c) && islower (c)));
1050 }
1051
1052 /* ENCODED is the linkage name of a symbol and LEN contains its length.
1053    This function saves in LEN the length of that same symbol name but
1054    without either of these suffixes:
1055      . .{DIGIT}+
1056      . ${DIGIT}+
1057      . ___{DIGIT}+
1058      . __{DIGIT}+.
1059
1060    These are suffixes introduced by the compiler for entities such as
1061    nested subprogram for instance, in order to avoid name clashes.
1062    They do not serve any purpose for the debugger.  */
1063
1064 static void
1065 ada_remove_trailing_digits (const char *encoded, int *len)
1066 {
1067   if (*len > 1 && isdigit (encoded[*len - 1]))
1068     {
1069       int i = *len - 2;
1070
1071       while (i > 0 && isdigit (encoded[i]))
1072         i--;
1073       if (i >= 0 && encoded[i] == '.')
1074         *len = i;
1075       else if (i >= 0 && encoded[i] == '$')
1076         *len = i;
1077       else if (i >= 2 && startswith (encoded + i - 2, "___"))
1078         *len = i - 2;
1079       else if (i >= 1 && startswith (encoded + i - 1, "__"))
1080         *len = i - 1;
1081     }
1082 }
1083
1084 /* Remove the suffix introduced by the compiler for protected object
1085    subprograms.  */
1086
1087 static void
1088 ada_remove_po_subprogram_suffix (const char *encoded, int *len)
1089 {
1090   /* Remove trailing N.  */
1091
1092   /* Protected entry subprograms are broken into two
1093      separate subprograms: The first one is unprotected, and has
1094      a 'N' suffix; the second is the protected version, and has
1095      the 'P' suffix.  The second calls the first one after handling
1096      the protection.  Since the P subprograms are internally generated,
1097      we leave these names undecoded, giving the user a clue that this
1098      entity is internal.  */
1099
1100   if (*len > 1
1101       && encoded[*len - 1] == 'N'
1102       && (isdigit (encoded[*len - 2]) || islower (encoded[*len - 2])))
1103     *len = *len - 1;
1104 }
1105
1106 /* If ENCODED follows the GNAT entity encoding conventions, then return
1107    the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
1108    replaced by ENCODED.
1109
1110    The resulting string is valid until the next call of ada_decode.
1111    If the string is unchanged by decoding, the original string pointer
1112    is returned.  */
1113
1114 const char *
1115 ada_decode (const char *encoded)
1116 {
1117   int i, j;
1118   int len0;
1119   const char *p;
1120   char *decoded;
1121   int at_start_name;
1122   static char *decoding_buffer = NULL;
1123   static size_t decoding_buffer_size = 0;
1124
1125   /* With function descriptors on PPC64, the value of a symbol named
1126      ".FN", if it exists, is the entry point of the function "FN".  */
1127   if (encoded[0] == '.')
1128     encoded += 1;
1129
1130   /* The name of the Ada main procedure starts with "_ada_".
1131      This prefix is not part of the decoded name, so skip this part
1132      if we see this prefix.  */
1133   if (startswith (encoded, "_ada_"))
1134     encoded += 5;
1135
1136   /* If the name starts with '_', then it is not a properly encoded
1137      name, so do not attempt to decode it.  Similarly, if the name
1138      starts with '<', the name should not be decoded.  */
1139   if (encoded[0] == '_' || encoded[0] == '<')
1140     goto Suppress;
1141
1142   len0 = strlen (encoded);
1143
1144   ada_remove_trailing_digits (encoded, &len0);
1145   ada_remove_po_subprogram_suffix (encoded, &len0);
1146
1147   /* Remove the ___X.* suffix if present.  Do not forget to verify that
1148      the suffix is located before the current "end" of ENCODED.  We want
1149      to avoid re-matching parts of ENCODED that have previously been
1150      marked as discarded (by decrementing LEN0).  */
1151   p = strstr (encoded, "___");
1152   if (p != NULL && p - encoded < len0 - 3)
1153     {
1154       if (p[3] == 'X')
1155         len0 = p - encoded;
1156       else
1157         goto Suppress;
1158     }
1159
1160   /* Remove any trailing TKB suffix.  It tells us that this symbol
1161      is for the body of a task, but that information does not actually
1162      appear in the decoded name.  */
1163
1164   if (len0 > 3 && startswith (encoded + len0 - 3, "TKB"))
1165     len0 -= 3;
1166
1167   /* Remove any trailing TB suffix.  The TB suffix is slightly different
1168      from the TKB suffix because it is used for non-anonymous task
1169      bodies.  */
1170
1171   if (len0 > 2 && startswith (encoded + len0 - 2, "TB"))
1172     len0 -= 2;
1173
1174   /* Remove trailing "B" suffixes.  */
1175   /* FIXME: brobecker/2006-04-19: Not sure what this are used for...  */
1176
1177   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
1178     len0 -= 1;
1179
1180   /* Make decoded big enough for possible expansion by operator name.  */
1181
1182   GROW_VECT (decoding_buffer, decoding_buffer_size, 2 * len0 + 1);
1183   decoded = decoding_buffer;
1184
1185   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
1186
1187   if (len0 > 1 && isdigit (encoded[len0 - 1]))
1188     {
1189       i = len0 - 2;
1190       while ((i >= 0 && isdigit (encoded[i]))
1191              || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1192         i -= 1;
1193       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1194         len0 = i - 1;
1195       else if (encoded[i] == '$')
1196         len0 = i;
1197     }
1198
1199   /* The first few characters that are not alphabetic are not part
1200      of any encoding we use, so we can copy them over verbatim.  */
1201
1202   for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
1203     decoded[j] = encoded[i];
1204
1205   at_start_name = 1;
1206   while (i < len0)
1207     {
1208       /* Is this a symbol function?  */
1209       if (at_start_name && encoded[i] == 'O')
1210         {
1211           int k;
1212
1213           for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
1214             {
1215               int op_len = strlen (ada_opname_table[k].encoded);
1216               if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
1217                             op_len - 1) == 0)
1218                   && !isalnum (encoded[i + op_len]))
1219                 {
1220                   strcpy (decoded + j, ada_opname_table[k].decoded);
1221                   at_start_name = 0;
1222                   i += op_len;
1223                   j += strlen (ada_opname_table[k].decoded);
1224                   break;
1225                 }
1226             }
1227           if (ada_opname_table[k].encoded != NULL)
1228             continue;
1229         }
1230       at_start_name = 0;
1231
1232       /* Replace "TK__" with "__", which will eventually be translated
1233          into "." (just below).  */
1234
1235       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
1236         i += 2;
1237
1238       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
1239          be translated into "." (just below).  These are internal names
1240          generated for anonymous blocks inside which our symbol is nested.  */
1241
1242       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
1243           && encoded [i+2] == 'B' && encoded [i+3] == '_'
1244           && isdigit (encoded [i+4]))
1245         {
1246           int k = i + 5;
1247           
1248           while (k < len0 && isdigit (encoded[k]))
1249             k++;  /* Skip any extra digit.  */
1250
1251           /* Double-check that the "__B_{DIGITS}+" sequence we found
1252              is indeed followed by "__".  */
1253           if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
1254             i = k;
1255         }
1256
1257       /* Remove _E{DIGITS}+[sb] */
1258
1259       /* Just as for protected object subprograms, there are 2 categories
1260          of subprograms created by the compiler for each entry.  The first
1261          one implements the actual entry code, and has a suffix following
1262          the convention above; the second one implements the barrier and
1263          uses the same convention as above, except that the 'E' is replaced
1264          by a 'B'.
1265
1266          Just as above, we do not decode the name of barrier functions
1267          to give the user a clue that the code he is debugging has been
1268          internally generated.  */
1269
1270       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
1271           && isdigit (encoded[i+2]))
1272         {
1273           int k = i + 3;
1274
1275           while (k < len0 && isdigit (encoded[k]))
1276             k++;
1277
1278           if (k < len0
1279               && (encoded[k] == 'b' || encoded[k] == 's'))
1280             {
1281               k++;
1282               /* Just as an extra precaution, make sure that if this
1283                  suffix is followed by anything else, it is a '_'.
1284                  Otherwise, we matched this sequence by accident.  */
1285               if (k == len0
1286                   || (k < len0 && encoded[k] == '_'))
1287                 i = k;
1288             }
1289         }
1290
1291       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
1292          the GNAT front-end in protected object subprograms.  */
1293
1294       if (i < len0 + 3
1295           && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
1296         {
1297           /* Backtrack a bit up until we reach either the begining of
1298              the encoded name, or "__".  Make sure that we only find
1299              digits or lowercase characters.  */
1300           const char *ptr = encoded + i - 1;
1301
1302           while (ptr >= encoded && is_lower_alphanum (ptr[0]))
1303             ptr--;
1304           if (ptr < encoded
1305               || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
1306             i++;
1307         }
1308
1309       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
1310         {
1311           /* This is a X[bn]* sequence not separated from the previous
1312              part of the name with a non-alpha-numeric character (in other
1313              words, immediately following an alpha-numeric character), then
1314              verify that it is placed at the end of the encoded name.  If
1315              not, then the encoding is not valid and we should abort the
1316              decoding.  Otherwise, just skip it, it is used in body-nested
1317              package names.  */
1318           do
1319             i += 1;
1320           while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
1321           if (i < len0)
1322             goto Suppress;
1323         }
1324       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
1325         {
1326          /* Replace '__' by '.'.  */
1327           decoded[j] = '.';
1328           at_start_name = 1;
1329           i += 2;
1330           j += 1;
1331         }
1332       else
1333         {
1334           /* It's a character part of the decoded name, so just copy it
1335              over.  */
1336           decoded[j] = encoded[i];
1337           i += 1;
1338           j += 1;
1339         }
1340     }
1341   decoded[j] = '\000';
1342
1343   /* Decoded names should never contain any uppercase character.
1344      Double-check this, and abort the decoding if we find one.  */
1345
1346   for (i = 0; decoded[i] != '\0'; i += 1)
1347     if (isupper (decoded[i]) || decoded[i] == ' ')
1348       goto Suppress;
1349
1350   if (strcmp (decoded, encoded) == 0)
1351     return encoded;
1352   else
1353     return decoded;
1354
1355 Suppress:
1356   GROW_VECT (decoding_buffer, decoding_buffer_size, strlen (encoded) + 3);
1357   decoded = decoding_buffer;
1358   if (encoded[0] == '<')
1359     strcpy (decoded, encoded);
1360   else
1361     xsnprintf (decoded, decoding_buffer_size, "<%s>", encoded);
1362   return decoded;
1363
1364 }
1365
1366 /* Table for keeping permanent unique copies of decoded names.  Once
1367    allocated, names in this table are never released.  While this is a
1368    storage leak, it should not be significant unless there are massive
1369    changes in the set of decoded names in successive versions of a 
1370    symbol table loaded during a single session.  */
1371 static struct htab *decoded_names_store;
1372
1373 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
1374    in the language-specific part of GSYMBOL, if it has not been
1375    previously computed.  Tries to save the decoded name in the same
1376    obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
1377    in any case, the decoded symbol has a lifetime at least that of
1378    GSYMBOL).
1379    The GSYMBOL parameter is "mutable" in the C++ sense: logically
1380    const, but nevertheless modified to a semantically equivalent form
1381    when a decoded name is cached in it.  */
1382
1383 const char *
1384 ada_decode_symbol (const struct general_symbol_info *arg)
1385 {
1386   struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
1387   const char **resultp =
1388     &gsymbol->language_specific.demangled_name;
1389
1390   if (!gsymbol->ada_mangled)
1391     {
1392       const char *decoded = ada_decode (gsymbol->name);
1393       struct obstack *obstack = gsymbol->language_specific.obstack;
1394
1395       gsymbol->ada_mangled = 1;
1396
1397       if (obstack != NULL)
1398         *resultp
1399           = (const char *) obstack_copy0 (obstack, decoded, strlen (decoded));
1400       else
1401         {
1402           /* Sometimes, we can't find a corresponding objfile, in
1403              which case, we put the result on the heap.  Since we only
1404              decode when needed, we hope this usually does not cause a
1405              significant memory leak (FIXME).  */
1406
1407           char **slot = (char **) htab_find_slot (decoded_names_store,
1408                                                   decoded, INSERT);
1409
1410           if (*slot == NULL)
1411             *slot = xstrdup (decoded);
1412           *resultp = *slot;
1413         }
1414     }
1415
1416   return *resultp;
1417 }
1418
1419 static char *
1420 ada_la_decode (const char *encoded, int options)
1421 {
1422   return xstrdup (ada_decode (encoded));
1423 }
1424
1425 /* Implement la_sniff_from_mangled_name for Ada.  */
1426
1427 static int
1428 ada_sniff_from_mangled_name (const char *mangled, char **out)
1429 {
1430   const char *demangled = ada_decode (mangled);
1431
1432   *out = NULL;
1433
1434   if (demangled != mangled && demangled != NULL && demangled[0] != '<')
1435     {
1436       /* Set the gsymbol language to Ada, but still return 0.
1437          Two reasons for that:
1438
1439          1. For Ada, we prefer computing the symbol's decoded name
1440          on the fly rather than pre-compute it, in order to save
1441          memory (Ada projects are typically very large).
1442
1443          2. There are some areas in the definition of the GNAT
1444          encoding where, with a bit of bad luck, we might be able
1445          to decode a non-Ada symbol, generating an incorrect
1446          demangled name (Eg: names ending with "TB" for instance
1447          are identified as task bodies and so stripped from
1448          the decoded name returned).
1449
1450          Returning 1, here, but not setting *DEMANGLED, helps us get a
1451          little bit of the best of both worlds.  Because we're last,
1452          we should not affect any of the other languages that were
1453          able to demangle the symbol before us; we get to correctly
1454          tag Ada symbols as such; and even if we incorrectly tagged a
1455          non-Ada symbol, which should be rare, any routing through the
1456          Ada language should be transparent (Ada tries to behave much
1457          like C/C++ with non-Ada symbols).  */
1458       return 1;
1459     }
1460
1461   return 0;
1462 }
1463
1464 \f
1465
1466                                 /* Arrays */
1467
1468 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
1469    generated by the GNAT compiler to describe the index type used
1470    for each dimension of an array, check whether it follows the latest
1471    known encoding.  If not, fix it up to conform to the latest encoding.
1472    Otherwise, do nothing.  This function also does nothing if
1473    INDEX_DESC_TYPE is NULL.
1474
1475    The GNAT encoding used to describle the array index type evolved a bit.
1476    Initially, the information would be provided through the name of each
1477    field of the structure type only, while the type of these fields was
1478    described as unspecified and irrelevant.  The debugger was then expected
1479    to perform a global type lookup using the name of that field in order
1480    to get access to the full index type description.  Because these global
1481    lookups can be very expensive, the encoding was later enhanced to make
1482    the global lookup unnecessary by defining the field type as being
1483    the full index type description.
1484
1485    The purpose of this routine is to allow us to support older versions
1486    of the compiler by detecting the use of the older encoding, and by
1487    fixing up the INDEX_DESC_TYPE to follow the new one (at this point,
1488    we essentially replace each field's meaningless type by the associated
1489    index subtype).  */
1490
1491 void
1492 ada_fixup_array_indexes_type (struct type *index_desc_type)
1493 {
1494   int i;
1495
1496   if (index_desc_type == NULL)
1497     return;
1498   gdb_assert (TYPE_NFIELDS (index_desc_type) > 0);
1499
1500   /* Check if INDEX_DESC_TYPE follows the older encoding (it is sufficient
1501      to check one field only, no need to check them all).  If not, return
1502      now.
1503
1504      If our INDEX_DESC_TYPE was generated using the older encoding,
1505      the field type should be a meaningless integer type whose name
1506      is not equal to the field name.  */
1507   if (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)) != NULL
1508       && strcmp (TYPE_NAME (TYPE_FIELD_TYPE (index_desc_type, 0)),
1509                  TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
1510     return;
1511
1512   /* Fixup each field of INDEX_DESC_TYPE.  */
1513   for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
1514    {
1515      const char *name = TYPE_FIELD_NAME (index_desc_type, i);
1516      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
1517
1518      if (raw_type)
1519        TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
1520    }
1521 }
1522
1523 /* Names of MAX_ADA_DIMENS bounds in P_BOUNDS fields of array descriptors.  */
1524
1525 static const char *bound_name[] = {
1526   "LB0", "UB0", "LB1", "UB1", "LB2", "UB2", "LB3", "UB3",
1527   "LB4", "UB4", "LB5", "UB5", "LB6", "UB6", "LB7", "UB7"
1528 };
1529
1530 /* Maximum number of array dimensions we are prepared to handle.  */
1531
1532 #define MAX_ADA_DIMENS (sizeof(bound_name) / (2*sizeof(char *)))
1533
1534
1535 /* The desc_* routines return primitive portions of array descriptors
1536    (fat pointers).  */
1537
1538 /* The descriptor or array type, if any, indicated by TYPE; removes
1539    level of indirection, if needed.  */
1540
1541 static struct type *
1542 desc_base_type (struct type *type)
1543 {
1544   if (type == NULL)
1545     return NULL;
1546   type = ada_check_typedef (type);
1547   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1548     type = ada_typedef_target_type (type);
1549
1550   if (type != NULL
1551       && (TYPE_CODE (type) == TYPE_CODE_PTR
1552           || TYPE_CODE (type) == TYPE_CODE_REF))
1553     return ada_check_typedef (TYPE_TARGET_TYPE (type));
1554   else
1555     return type;
1556 }
1557
1558 /* True iff TYPE indicates a "thin" array pointer type.  */
1559
1560 static int
1561 is_thin_pntr (struct type *type)
1562 {
1563   return
1564     is_suffix (ada_type_name (desc_base_type (type)), "___XUT")
1565     || is_suffix (ada_type_name (desc_base_type (type)), "___XUT___XVE");
1566 }
1567
1568 /* The descriptor type for thin pointer type TYPE.  */
1569
1570 static struct type *
1571 thin_descriptor_type (struct type *type)
1572 {
1573   struct type *base_type = desc_base_type (type);
1574
1575   if (base_type == NULL)
1576     return NULL;
1577   if (is_suffix (ada_type_name (base_type), "___XVE"))
1578     return base_type;
1579   else
1580     {
1581       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
1582
1583       if (alt_type == NULL)
1584         return base_type;
1585       else
1586         return alt_type;
1587     }
1588 }
1589
1590 /* A pointer to the array data for thin-pointer value VAL.  */
1591
1592 static struct value *
1593 thin_data_pntr (struct value *val)
1594 {
1595   struct type *type = ada_check_typedef (value_type (val));
1596   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
1597
1598   data_type = lookup_pointer_type (data_type);
1599
1600   if (TYPE_CODE (type) == TYPE_CODE_PTR)
1601     return value_cast (data_type, value_copy (val));
1602   else
1603     return value_from_longest (data_type, value_address (val));
1604 }
1605
1606 /* True iff TYPE indicates a "thick" array pointer type.  */
1607
1608 static int
1609 is_thick_pntr (struct type *type)
1610 {
1611   type = desc_base_type (type);
1612   return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
1613           && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
1614 }
1615
1616 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1617    pointer to one, the type of its bounds data; otherwise, NULL.  */
1618
1619 static struct type *
1620 desc_bounds_type (struct type *type)
1621 {
1622   struct type *r;
1623
1624   type = desc_base_type (type);
1625
1626   if (type == NULL)
1627     return NULL;
1628   else if (is_thin_pntr (type))
1629     {
1630       type = thin_descriptor_type (type);
1631       if (type == NULL)
1632         return NULL;
1633       r = lookup_struct_elt_type (type, "BOUNDS", 1);
1634       if (r != NULL)
1635         return ada_check_typedef (r);
1636     }
1637   else if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1638     {
1639       r = lookup_struct_elt_type (type, "P_BOUNDS", 1);
1640       if (r != NULL)
1641         return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
1642     }
1643   return NULL;
1644 }
1645
1646 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
1647    one, a pointer to its bounds data.   Otherwise NULL.  */
1648
1649 static struct value *
1650 desc_bounds (struct value *arr)
1651 {
1652   struct type *type = ada_check_typedef (value_type (arr));
1653
1654   if (is_thin_pntr (type))
1655     {
1656       struct type *bounds_type =
1657         desc_bounds_type (thin_descriptor_type (type));
1658       LONGEST addr;
1659
1660       if (bounds_type == NULL)
1661         error (_("Bad GNAT array descriptor"));
1662
1663       /* NOTE: The following calculation is not really kosher, but
1664          since desc_type is an XVE-encoded type (and shouldn't be),
1665          the correct calculation is a real pain.  FIXME (and fix GCC).  */
1666       if (TYPE_CODE (type) == TYPE_CODE_PTR)
1667         addr = value_as_long (arr);
1668       else
1669         addr = value_address (arr);
1670
1671       return
1672         value_from_longest (lookup_pointer_type (bounds_type),
1673                             addr - TYPE_LENGTH (bounds_type));
1674     }
1675
1676   else if (is_thick_pntr (type))
1677     {
1678       struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
1679                                                _("Bad GNAT array descriptor"));
1680       struct type *p_bounds_type = value_type (p_bounds);
1681
1682       if (p_bounds_type
1683           && TYPE_CODE (p_bounds_type) == TYPE_CODE_PTR)
1684         {
1685           struct type *target_type = TYPE_TARGET_TYPE (p_bounds_type);
1686
1687           if (TYPE_STUB (target_type))
1688             p_bounds = value_cast (lookup_pointer_type
1689                                    (ada_check_typedef (target_type)),
1690                                    p_bounds);
1691         }
1692       else
1693         error (_("Bad GNAT array descriptor"));
1694
1695       return p_bounds;
1696     }
1697   else
1698     return NULL;
1699 }
1700
1701 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
1702    position of the field containing the address of the bounds data.  */
1703
1704 static int
1705 fat_pntr_bounds_bitpos (struct type *type)
1706 {
1707   return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
1708 }
1709
1710 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1711    size of the field containing the address of the bounds data.  */
1712
1713 static int
1714 fat_pntr_bounds_bitsize (struct type *type)
1715 {
1716   type = desc_base_type (type);
1717
1718   if (TYPE_FIELD_BITSIZE (type, 1) > 0)
1719     return TYPE_FIELD_BITSIZE (type, 1);
1720   else
1721     return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
1722 }
1723
1724 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
1725    pointer to one, the type of its array data (a array-with-no-bounds type);
1726    otherwise, NULL.  Use ada_type_of_array to get an array type with bounds
1727    data.  */
1728
1729 static struct type *
1730 desc_data_target_type (struct type *type)
1731 {
1732   type = desc_base_type (type);
1733
1734   /* NOTE: The following is bogus; see comment in desc_bounds.  */
1735   if (is_thin_pntr (type))
1736     return desc_base_type (TYPE_FIELD_TYPE (thin_descriptor_type (type), 1));
1737   else if (is_thick_pntr (type))
1738     {
1739       struct type *data_type = lookup_struct_elt_type (type, "P_ARRAY", 1);
1740
1741       if (data_type
1742           && TYPE_CODE (ada_check_typedef (data_type)) == TYPE_CODE_PTR)
1743         return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
1744     }
1745
1746   return NULL;
1747 }
1748
1749 /* If ARR is an array descriptor (fat or thin pointer), a pointer to
1750    its array data.  */
1751
1752 static struct value *
1753 desc_data (struct value *arr)
1754 {
1755   struct type *type = value_type (arr);
1756
1757   if (is_thin_pntr (type))
1758     return thin_data_pntr (arr);
1759   else if (is_thick_pntr (type))
1760     return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
1761                              _("Bad GNAT array descriptor"));
1762   else
1763     return NULL;
1764 }
1765
1766
1767 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1768    position of the field containing the address of the data.  */
1769
1770 static int
1771 fat_pntr_data_bitpos (struct type *type)
1772 {
1773   return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
1774 }
1775
1776 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
1777    size of the field containing the address of the data.  */
1778
1779 static int
1780 fat_pntr_data_bitsize (struct type *type)
1781 {
1782   type = desc_base_type (type);
1783
1784   if (TYPE_FIELD_BITSIZE (type, 0) > 0)
1785     return TYPE_FIELD_BITSIZE (type, 0);
1786   else
1787     return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
1788 }
1789
1790 /* If BOUNDS is an array-bounds structure (or pointer to one), return
1791    the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1792    bound, if WHICH is 1.  The first bound is I=1.  */
1793
1794 static struct value *
1795 desc_one_bound (struct value *bounds, int i, int which)
1796 {
1797   return value_struct_elt (&bounds, NULL, bound_name[2 * i + which - 2], NULL,
1798                            _("Bad GNAT array descriptor bounds"));
1799 }
1800
1801 /* If BOUNDS is an array-bounds structure type, return the bit position
1802    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1803    bound, if WHICH is 1.  The first bound is I=1.  */
1804
1805 static int
1806 desc_bound_bitpos (struct type *type, int i, int which)
1807 {
1808   return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
1809 }
1810
1811 /* If BOUNDS is an array-bounds structure type, return the bit field size
1812    of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
1813    bound, if WHICH is 1.  The first bound is I=1.  */
1814
1815 static int
1816 desc_bound_bitsize (struct type *type, int i, int which)
1817 {
1818   type = desc_base_type (type);
1819
1820   if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
1821     return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
1822   else
1823     return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
1824 }
1825
1826 /* If TYPE is the type of an array-bounds structure, the type of its
1827    Ith bound (numbering from 1).  Otherwise, NULL.  */
1828
1829 static struct type *
1830 desc_index_type (struct type *type, int i)
1831 {
1832   type = desc_base_type (type);
1833
1834   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
1835     return lookup_struct_elt_type (type, bound_name[2 * i - 2], 1);
1836   else
1837     return NULL;
1838 }
1839
1840 /* The number of index positions in the array-bounds type TYPE.
1841    Return 0 if TYPE is NULL.  */
1842
1843 static int
1844 desc_arity (struct type *type)
1845 {
1846   type = desc_base_type (type);
1847
1848   if (type != NULL)
1849     return TYPE_NFIELDS (type) / 2;
1850   return 0;
1851 }
1852
1853 /* Non-zero iff TYPE is a simple array type (not a pointer to one) or 
1854    an array descriptor type (representing an unconstrained array
1855    type).  */
1856
1857 static int
1858 ada_is_direct_array_type (struct type *type)
1859 {
1860   if (type == NULL)
1861     return 0;
1862   type = ada_check_typedef (type);
1863   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1864           || ada_is_array_descriptor_type (type));
1865 }
1866
1867 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
1868  * to one.  */
1869
1870 static int
1871 ada_is_array_type (struct type *type)
1872 {
1873   while (type != NULL 
1874          && (TYPE_CODE (type) == TYPE_CODE_PTR 
1875              || TYPE_CODE (type) == TYPE_CODE_REF))
1876     type = TYPE_TARGET_TYPE (type);
1877   return ada_is_direct_array_type (type);
1878 }
1879
1880 /* Non-zero iff TYPE is a simple array type or pointer to one.  */
1881
1882 int
1883 ada_is_simple_array_type (struct type *type)
1884 {
1885   if (type == NULL)
1886     return 0;
1887   type = ada_check_typedef (type);
1888   return (TYPE_CODE (type) == TYPE_CODE_ARRAY
1889           || (TYPE_CODE (type) == TYPE_CODE_PTR
1890               && TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type)))
1891                  == TYPE_CODE_ARRAY));
1892 }
1893
1894 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
1895
1896 int
1897 ada_is_array_descriptor_type (struct type *type)
1898 {
1899   struct type *data_type = desc_data_target_type (type);
1900
1901   if (type == NULL)
1902     return 0;
1903   type = ada_check_typedef (type);
1904   return (data_type != NULL
1905           && TYPE_CODE (data_type) == TYPE_CODE_ARRAY
1906           && desc_arity (desc_bounds_type (type)) > 0);
1907 }
1908
1909 /* Non-zero iff type is a partially mal-formed GNAT array
1910    descriptor.  FIXME: This is to compensate for some problems with
1911    debugging output from GNAT.  Re-examine periodically to see if it
1912    is still needed.  */
1913
1914 int
1915 ada_is_bogus_array_descriptor (struct type *type)
1916 {
1917   return
1918     type != NULL
1919     && TYPE_CODE (type) == TYPE_CODE_STRUCT
1920     && (lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL
1921         || lookup_struct_elt_type (type, "P_ARRAY", 1) != NULL)
1922     && !ada_is_array_descriptor_type (type);
1923 }
1924
1925
1926 /* If ARR has a record type in the form of a standard GNAT array descriptor,
1927    (fat pointer) returns the type of the array data described---specifically,
1928    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
1929    in from the descriptor; otherwise, they are left unspecified.  If
1930    the ARR denotes a null array descriptor and BOUNDS is non-zero,
1931    returns NULL.  The result is simply the type of ARR if ARR is not
1932    a descriptor.  */
1933 struct type *
1934 ada_type_of_array (struct value *arr, int bounds)
1935 {
1936   if (ada_is_constrained_packed_array_type (value_type (arr)))
1937     return decode_constrained_packed_array_type (value_type (arr));
1938
1939   if (!ada_is_array_descriptor_type (value_type (arr)))
1940     return value_type (arr);
1941
1942   if (!bounds)
1943     {
1944       struct type *array_type =
1945         ada_check_typedef (desc_data_target_type (value_type (arr)));
1946
1947       if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1948         TYPE_FIELD_BITSIZE (array_type, 0) =
1949           decode_packed_array_bitsize (value_type (arr));
1950       
1951       return array_type;
1952     }
1953   else
1954     {
1955       struct type *elt_type;
1956       int arity;
1957       struct value *descriptor;
1958
1959       elt_type = ada_array_element_type (value_type (arr), -1);
1960       arity = ada_array_arity (value_type (arr));
1961
1962       if (elt_type == NULL || arity == 0)
1963         return ada_check_typedef (value_type (arr));
1964
1965       descriptor = desc_bounds (arr);
1966       if (value_as_long (descriptor) == 0)
1967         return NULL;
1968       while (arity > 0)
1969         {
1970           struct type *range_type = alloc_type_copy (value_type (arr));
1971           struct type *array_type = alloc_type_copy (value_type (arr));
1972           struct value *low = desc_one_bound (descriptor, arity, 0);
1973           struct value *high = desc_one_bound (descriptor, arity, 1);
1974
1975           arity -= 1;
1976           create_static_range_type (range_type, value_type (low),
1977                                     longest_to_int (value_as_long (low)),
1978                                     longest_to_int (value_as_long (high)));
1979           elt_type = create_array_type (array_type, elt_type, range_type);
1980
1981           if (ada_is_unconstrained_packed_array_type (value_type (arr)))
1982             {
1983               /* We need to store the element packed bitsize, as well as
1984                  recompute the array size, because it was previously
1985                  computed based on the unpacked element size.  */
1986               LONGEST lo = value_as_long (low);
1987               LONGEST hi = value_as_long (high);
1988
1989               TYPE_FIELD_BITSIZE (elt_type, 0) =
1990                 decode_packed_array_bitsize (value_type (arr));
1991               /* If the array has no element, then the size is already
1992                  zero, and does not need to be recomputed.  */
1993               if (lo < hi)
1994                 {
1995                   int array_bitsize =
1996                         (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
1997
1998                   TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
1999                 }
2000             }
2001         }
2002
2003       return lookup_pointer_type (elt_type);
2004     }
2005 }
2006
2007 /* If ARR does not represent an array, returns ARR unchanged.
2008    Otherwise, returns either a standard GDB array with bounds set
2009    appropriately or, if ARR is a non-null fat pointer, a pointer to a standard
2010    GDB array.  Returns NULL if ARR is a null fat pointer.  */
2011
2012 struct value *
2013 ada_coerce_to_simple_array_ptr (struct value *arr)
2014 {
2015   if (ada_is_array_descriptor_type (value_type (arr)))
2016     {
2017       struct type *arrType = ada_type_of_array (arr, 1);
2018
2019       if (arrType == NULL)
2020         return NULL;
2021       return value_cast (arrType, value_copy (desc_data (arr)));
2022     }
2023   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2024     return decode_constrained_packed_array (arr);
2025   else
2026     return arr;
2027 }
2028
2029 /* If ARR does not represent an array, returns ARR unchanged.
2030    Otherwise, returns a standard GDB array describing ARR (which may
2031    be ARR itself if it already is in the proper form).  */
2032
2033 struct value *
2034 ada_coerce_to_simple_array (struct value *arr)
2035 {
2036   if (ada_is_array_descriptor_type (value_type (arr)))
2037     {
2038       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
2039
2040       if (arrVal == NULL)
2041         error (_("Bounds unavailable for null array pointer."));
2042       ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
2043       return value_ind (arrVal);
2044     }
2045   else if (ada_is_constrained_packed_array_type (value_type (arr)))
2046     return decode_constrained_packed_array (arr);
2047   else
2048     return arr;
2049 }
2050
2051 /* If TYPE represents a GNAT array type, return it translated to an
2052    ordinary GDB array type (possibly with BITSIZE fields indicating
2053    packing).  For other types, is the identity.  */
2054
2055 struct type *
2056 ada_coerce_to_simple_array_type (struct type *type)
2057 {
2058   if (ada_is_constrained_packed_array_type (type))
2059     return decode_constrained_packed_array_type (type);
2060
2061   if (ada_is_array_descriptor_type (type))
2062     return ada_check_typedef (desc_data_target_type (type));
2063
2064   return type;
2065 }
2066
2067 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
2068
2069 static int
2070 ada_is_packed_array_type  (struct type *type)
2071 {
2072   if (type == NULL)
2073     return 0;
2074   type = desc_base_type (type);
2075   type = ada_check_typedef (type);
2076   return
2077     ada_type_name (type) != NULL
2078     && strstr (ada_type_name (type), "___XP") != NULL;
2079 }
2080
2081 /* Non-zero iff TYPE represents a standard GNAT constrained
2082    packed-array type.  */
2083
2084 int
2085 ada_is_constrained_packed_array_type (struct type *type)
2086 {
2087   return ada_is_packed_array_type (type)
2088     && !ada_is_array_descriptor_type (type);
2089 }
2090
2091 /* Non-zero iff TYPE represents an array descriptor for a
2092    unconstrained packed-array type.  */
2093
2094 static int
2095 ada_is_unconstrained_packed_array_type (struct type *type)
2096 {
2097   return ada_is_packed_array_type (type)
2098     && ada_is_array_descriptor_type (type);
2099 }
2100
2101 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
2102    return the size of its elements in bits.  */
2103
2104 static long
2105 decode_packed_array_bitsize (struct type *type)
2106 {
2107   const char *raw_name;
2108   const char *tail;
2109   long bits;
2110
2111   /* Access to arrays implemented as fat pointers are encoded as a typedef
2112      of the fat pointer type.  We need the name of the fat pointer type
2113      to do the decoding, so strip the typedef layer.  */
2114   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
2115     type = ada_typedef_target_type (type);
2116
2117   raw_name = ada_type_name (ada_check_typedef (type));
2118   if (!raw_name)
2119     raw_name = ada_type_name (desc_base_type (type));
2120
2121   if (!raw_name)
2122     return 0;
2123
2124   tail = strstr (raw_name, "___XP");
2125   gdb_assert (tail != NULL);
2126
2127   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
2128     {
2129       lim_warning
2130         (_("could not understand bit size information on packed array"));
2131       return 0;
2132     }
2133
2134   return bits;
2135 }
2136
2137 /* Given that TYPE is a standard GDB array type with all bounds filled
2138    in, and that the element size of its ultimate scalar constituents
2139    (that is, either its elements, or, if it is an array of arrays, its
2140    elements' elements, etc.) is *ELT_BITS, return an identical type,
2141    but with the bit sizes of its elements (and those of any
2142    constituent arrays) recorded in the BITSIZE components of its
2143    TYPE_FIELD_BITSIZE values, and with *ELT_BITS set to its total size
2144    in bits.
2145
2146    Note that, for arrays whose index type has an XA encoding where
2147    a bound references a record discriminant, getting that discriminant,
2148    and therefore the actual value of that bound, is not possible
2149    because none of the given parameters gives us access to the record.
2150    This function assumes that it is OK in the context where it is being
2151    used to return an array whose bounds are still dynamic and where
2152    the length is arbitrary.  */
2153
2154 static struct type *
2155 constrained_packed_array_type (struct type *type, long *elt_bits)
2156 {
2157   struct type *new_elt_type;
2158   struct type *new_type;
2159   struct type *index_type_desc;
2160   struct type *index_type;
2161   LONGEST low_bound, high_bound;
2162
2163   type = ada_check_typedef (type);
2164   if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2165     return type;
2166
2167   index_type_desc = ada_find_parallel_type (type, "___XA");
2168   if (index_type_desc)
2169     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, 0),
2170                                       NULL);
2171   else
2172     index_type = TYPE_INDEX_TYPE (type);
2173
2174   new_type = alloc_type_copy (type);
2175   new_elt_type =
2176     constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
2177                                    elt_bits);
2178   create_array_type (new_type, new_elt_type, index_type);
2179   TYPE_FIELD_BITSIZE (new_type, 0) = *elt_bits;
2180   TYPE_NAME (new_type) = ada_type_name (type);
2181
2182   if ((TYPE_CODE (check_typedef (index_type)) == TYPE_CODE_RANGE
2183        && is_dynamic_type (check_typedef (index_type)))
2184       || get_discrete_bounds (index_type, &low_bound, &high_bound) < 0)
2185     low_bound = high_bound = 0;
2186   if (high_bound < low_bound)
2187     *elt_bits = TYPE_LENGTH (new_type) = 0;
2188   else
2189     {
2190       *elt_bits *= (high_bound - low_bound + 1);
2191       TYPE_LENGTH (new_type) =
2192         (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2193     }
2194
2195   TYPE_FIXED_INSTANCE (new_type) = 1;
2196   return new_type;
2197 }
2198
2199 /* The array type encoded by TYPE, where
2200    ada_is_constrained_packed_array_type (TYPE).  */
2201
2202 static struct type *
2203 decode_constrained_packed_array_type (struct type *type)
2204 {
2205   const char *raw_name = ada_type_name (ada_check_typedef (type));
2206   char *name;
2207   const char *tail;
2208   struct type *shadow_type;
2209   long bits;
2210
2211   if (!raw_name)
2212     raw_name = ada_type_name (desc_base_type (type));
2213
2214   if (!raw_name)
2215     return NULL;
2216
2217   name = (char *) alloca (strlen (raw_name) + 1);
2218   tail = strstr (raw_name, "___XP");
2219   type = desc_base_type (type);
2220
2221   memcpy (name, raw_name, tail - raw_name);
2222   name[tail - raw_name] = '\000';
2223
2224   shadow_type = ada_find_parallel_type_with_name (type, name);
2225
2226   if (shadow_type == NULL)
2227     {
2228       lim_warning (_("could not find bounds information on packed array"));
2229       return NULL;
2230     }
2231   shadow_type = check_typedef (shadow_type);
2232
2233   if (TYPE_CODE (shadow_type) != TYPE_CODE_ARRAY)
2234     {
2235       lim_warning (_("could not understand bounds "
2236                      "information on packed array"));
2237       return NULL;
2238     }
2239
2240   bits = decode_packed_array_bitsize (type);
2241   return constrained_packed_array_type (shadow_type, &bits);
2242 }
2243
2244 /* Given that ARR is a struct value *indicating a GNAT constrained packed
2245    array, returns a simple array that denotes that array.  Its type is a
2246    standard GDB array type except that the BITSIZEs of the array
2247    target types are set to the number of bits in each element, and the
2248    type length is set appropriately.  */
2249
2250 static struct value *
2251 decode_constrained_packed_array (struct value *arr)
2252 {
2253   struct type *type;
2254
2255   /* If our value is a pointer, then dereference it. Likewise if
2256      the value is a reference.  Make sure that this operation does not
2257      cause the target type to be fixed, as this would indirectly cause
2258      this array to be decoded.  The rest of the routine assumes that
2259      the array hasn't been decoded yet, so we use the basic "coerce_ref"
2260      and "value_ind" routines to perform the dereferencing, as opposed
2261      to using "ada_coerce_ref" or "ada_value_ind".  */
2262   arr = coerce_ref (arr);
2263   if (TYPE_CODE (ada_check_typedef (value_type (arr))) == TYPE_CODE_PTR)
2264     arr = value_ind (arr);
2265
2266   type = decode_constrained_packed_array_type (value_type (arr));
2267   if (type == NULL)
2268     {
2269       error (_("can't unpack array"));
2270       return NULL;
2271     }
2272
2273   if (gdbarch_bits_big_endian (get_type_arch (value_type (arr)))
2274       && ada_is_modular_type (value_type (arr)))
2275     {
2276        /* This is a (right-justified) modular type representing a packed
2277          array with no wrapper.  In order to interpret the value through
2278          the (left-justified) packed array type we just built, we must
2279          first left-justify it.  */
2280       int bit_size, bit_pos;
2281       ULONGEST mod;
2282
2283       mod = ada_modulus (value_type (arr)) - 1;
2284       bit_size = 0;
2285       while (mod > 0)
2286         {
2287           bit_size += 1;
2288           mod >>= 1;
2289         }
2290       bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
2291       arr = ada_value_primitive_packed_val (arr, NULL,
2292                                             bit_pos / HOST_CHAR_BIT,
2293                                             bit_pos % HOST_CHAR_BIT,
2294                                             bit_size,
2295                                             type);
2296     }
2297
2298   return coerce_unspec_val_to_type (arr, type);
2299 }
2300
2301
2302 /* The value of the element of packed array ARR at the ARITY indices
2303    given in IND.   ARR must be a simple array.  */
2304
2305 static struct value *
2306 value_subscript_packed (struct value *arr, int arity, struct value **ind)
2307 {
2308   int i;
2309   int bits, elt_off, bit_off;
2310   long elt_total_bit_offset;
2311   struct type *elt_type;
2312   struct value *v;
2313
2314   bits = 0;
2315   elt_total_bit_offset = 0;
2316   elt_type = ada_check_typedef (value_type (arr));
2317   for (i = 0; i < arity; i += 1)
2318     {
2319       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
2320           || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
2321         error
2322           (_("attempt to do packed indexing of "
2323              "something other than a packed array"));
2324       else
2325         {
2326           struct type *range_type = TYPE_INDEX_TYPE (elt_type);
2327           LONGEST lowerbound, upperbound;
2328           LONGEST idx;
2329
2330           if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
2331             {
2332               lim_warning (_("don't know bounds of array"));
2333               lowerbound = upperbound = 0;
2334             }
2335
2336           idx = pos_atr (ind[i]);
2337           if (idx < lowerbound || idx > upperbound)
2338             lim_warning (_("packed array index %ld out of bounds"),
2339                          (long) idx);
2340           bits = TYPE_FIELD_BITSIZE (elt_type, 0);
2341           elt_total_bit_offset += (idx - lowerbound) * bits;
2342           elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
2343         }
2344     }
2345   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
2346   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
2347
2348   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
2349                                       bits, elt_type);
2350   return v;
2351 }
2352
2353 /* Non-zero iff TYPE includes negative integer values.  */
2354
2355 static int
2356 has_negatives (struct type *type)
2357 {
2358   switch (TYPE_CODE (type))
2359     {
2360     default:
2361       return 0;
2362     case TYPE_CODE_INT:
2363       return !TYPE_UNSIGNED (type);
2364     case TYPE_CODE_RANGE:
2365       return TYPE_LOW_BOUND (type) < 0;
2366     }
2367 }
2368
2369 /* With SRC being a buffer containing BIT_SIZE bits of data at BIT_OFFSET,
2370    unpack that data into UNPACKED.  UNPACKED_LEN is the size in bytes of
2371    the unpacked buffer.
2372
2373    The size of the unpacked buffer (UNPACKED_LEN) is expected to be large
2374    enough to contain at least BIT_OFFSET bits.  If not, an error is raised.
2375
2376    IS_BIG_ENDIAN is nonzero if the data is stored in big endian mode,
2377    zero otherwise.
2378
2379    IS_SIGNED_TYPE is nonzero if the data corresponds to a signed type.
2380
2381    IS_SCALAR is nonzero if the data corresponds to a signed type.  */
2382
2383 static void
2384 ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
2385                           gdb_byte *unpacked, int unpacked_len,
2386                           int is_big_endian, int is_signed_type,
2387                           int is_scalar)
2388 {
2389   int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2390   int src_idx;                  /* Index into the source area */
2391   int src_bytes_left;           /* Number of source bytes left to process.  */
2392   int srcBitsLeft;              /* Number of source bits left to move */
2393   int unusedLS;                 /* Number of bits in next significant
2394                                    byte of source that are unused */
2395
2396   int unpacked_idx;             /* Index into the unpacked buffer */
2397   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
2398
2399   unsigned long accum;          /* Staging area for bits being transferred */
2400   int accumSize;                /* Number of meaningful bits in accum */
2401   unsigned char sign;
2402
2403   /* Transmit bytes from least to most significant; delta is the direction
2404      the indices move.  */
2405   int delta = is_big_endian ? -1 : 1;
2406
2407   /* Make sure that unpacked is large enough to receive the BIT_SIZE
2408      bits from SRC.  .*/
2409   if ((bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT > unpacked_len)
2410     error (_("Cannot unpack %d bits into buffer of %d bytes"),
2411            bit_size, unpacked_len);
2412
2413   srcBitsLeft = bit_size;
2414   src_bytes_left = src_len;
2415   unpacked_bytes_left = unpacked_len;
2416   sign = 0;
2417
2418   if (is_big_endian)
2419     {
2420       src_idx = src_len - 1;
2421       if (is_signed_type
2422           && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
2423         sign = ~0;
2424
2425       unusedLS =
2426         (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
2427         % HOST_CHAR_BIT;
2428
2429       if (is_scalar)
2430         {
2431           accumSize = 0;
2432           unpacked_idx = unpacked_len - 1;
2433         }
2434       else
2435         {
2436           /* Non-scalar values must be aligned at a byte boundary...  */
2437           accumSize =
2438             (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
2439           /* ... And are placed at the beginning (most-significant) bytes
2440              of the target.  */
2441           unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
2442           unpacked_bytes_left = unpacked_idx + 1;
2443         }
2444     }
2445   else
2446     {
2447       int sign_bit_offset = (bit_size + bit_offset - 1) % 8;
2448
2449       src_idx = unpacked_idx = 0;
2450       unusedLS = bit_offset;
2451       accumSize = 0;
2452
2453       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
2454         sign = ~0;
2455     }
2456
2457   accum = 0;
2458   while (src_bytes_left > 0)
2459     {
2460       /* Mask for removing bits of the next source byte that are not
2461          part of the value.  */
2462       unsigned int unusedMSMask =
2463         (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
2464         1;
2465       /* Sign-extend bits for this byte.  */
2466       unsigned int signMask = sign & ~unusedMSMask;
2467
2468       accum |=
2469         (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
2470       accumSize += HOST_CHAR_BIT - unusedLS;
2471       if (accumSize >= HOST_CHAR_BIT)
2472         {
2473           unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2474           accumSize -= HOST_CHAR_BIT;
2475           accum >>= HOST_CHAR_BIT;
2476           unpacked_bytes_left -= 1;
2477           unpacked_idx += delta;
2478         }
2479       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
2480       unusedLS = 0;
2481       src_bytes_left -= 1;
2482       src_idx += delta;
2483     }
2484   while (unpacked_bytes_left > 0)
2485     {
2486       accum |= sign << accumSize;
2487       unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
2488       accumSize -= HOST_CHAR_BIT;
2489       if (accumSize < 0)
2490         accumSize = 0;
2491       accum >>= HOST_CHAR_BIT;
2492       unpacked_bytes_left -= 1;
2493       unpacked_idx += delta;
2494     }
2495 }
2496
2497 /* Create a new value of type TYPE from the contents of OBJ starting
2498    at byte OFFSET, and bit offset BIT_OFFSET within that byte,
2499    proceeding for BIT_SIZE bits.  If OBJ is an lval in memory, then
2500    assigning through the result will set the field fetched from.
2501    VALADDR is ignored unless OBJ is NULL, in which case,
2502    VALADDR+OFFSET must address the start of storage containing the 
2503    packed value.  The value returned  in this case is never an lval.
2504    Assumes 0 <= BIT_OFFSET < HOST_CHAR_BIT.  */
2505
2506 struct value *
2507 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
2508                                 long offset, int bit_offset, int bit_size,
2509                                 struct type *type)
2510 {
2511   struct value *v;
2512   const gdb_byte *src;                /* First byte containing data to unpack */
2513   gdb_byte *unpacked;
2514   const int is_scalar = is_scalar_type (type);
2515   const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2516   gdb::byte_vector staging;
2517
2518   type = ada_check_typedef (type);
2519
2520   if (obj == NULL)
2521     src = valaddr + offset;
2522   else
2523     src = value_contents (obj) + offset;
2524
2525   if (is_dynamic_type (type))
2526     {
2527       /* The length of TYPE might by dynamic, so we need to resolve
2528          TYPE in order to know its actual size, which we then use
2529          to create the contents buffer of the value we return.
2530          The difficulty is that the data containing our object is
2531          packed, and therefore maybe not at a byte boundary.  So, what
2532          we do, is unpack the data into a byte-aligned buffer, and then
2533          use that buffer as our object's value for resolving the type.  */
2534       int staging_len = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2535       staging.resize (staging_len);
2536
2537       ada_unpack_from_contents (src, bit_offset, bit_size,
2538                                 staging.data (), staging.size (),
2539                                 is_big_endian, has_negatives (type),
2540                                 is_scalar);
2541       type = resolve_dynamic_type (type, staging.data (), 0);
2542       if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
2543         {
2544           /* This happens when the length of the object is dynamic,
2545              and is actually smaller than the space reserved for it.
2546              For instance, in an array of variant records, the bit_size
2547              we're given is the array stride, which is constant and
2548              normally equal to the maximum size of its element.
2549              But, in reality, each element only actually spans a portion
2550              of that stride.  */
2551           bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
2552         }
2553     }
2554
2555   if (obj == NULL)
2556     {
2557       v = allocate_value (type);
2558       src = valaddr + offset;
2559     }
2560   else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
2561     {
2562       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
2563       gdb_byte *buf;
2564
2565       v = value_at (type, value_address (obj) + offset);
2566       buf = (gdb_byte *) alloca (src_len);
2567       read_memory (value_address (v), buf, src_len);
2568       src = buf;
2569     }
2570   else
2571     {
2572       v = allocate_value (type);
2573       src = value_contents (obj) + offset;
2574     }
2575
2576   if (obj != NULL)
2577     {
2578       long new_offset = offset;
2579
2580       set_value_component_location (v, obj);
2581       set_value_bitpos (v, bit_offset + value_bitpos (obj));
2582       set_value_bitsize (v, bit_size);
2583       if (value_bitpos (v) >= HOST_CHAR_BIT)
2584         {
2585           ++new_offset;
2586           set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
2587         }
2588       set_value_offset (v, new_offset);
2589
2590       /* Also set the parent value.  This is needed when trying to
2591          assign a new value (in inferior memory).  */
2592       set_value_parent (v, obj);
2593     }
2594   else
2595     set_value_bitsize (v, bit_size);
2596   unpacked = value_contents_writeable (v);
2597
2598   if (bit_size == 0)
2599     {
2600       memset (unpacked, 0, TYPE_LENGTH (type));
2601       return v;
2602     }
2603
2604   if (staging.size () == TYPE_LENGTH (type))
2605     {
2606       /* Small short-cut: If we've unpacked the data into a buffer
2607          of the same size as TYPE's length, then we can reuse that,
2608          instead of doing the unpacking again.  */
2609       memcpy (unpacked, staging.data (), staging.size ());
2610     }
2611   else
2612     ada_unpack_from_contents (src, bit_offset, bit_size,
2613                               unpacked, TYPE_LENGTH (type),
2614                               is_big_endian, has_negatives (type), is_scalar);
2615
2616   return v;
2617 }
2618
2619 /* Store the contents of FROMVAL into the location of TOVAL.
2620    Return a new value with the location of TOVAL and contents of
2621    FROMVAL.   Handles assignment into packed fields that have
2622    floating-point or non-scalar types.  */
2623
2624 static struct value *
2625 ada_value_assign (struct value *toval, struct value *fromval)
2626 {
2627   struct type *type = value_type (toval);
2628   int bits = value_bitsize (toval);
2629
2630   toval = ada_coerce_ref (toval);
2631   fromval = ada_coerce_ref (fromval);
2632
2633   if (ada_is_direct_array_type (value_type (toval)))
2634     toval = ada_coerce_to_simple_array (toval);
2635   if (ada_is_direct_array_type (value_type (fromval)))
2636     fromval = ada_coerce_to_simple_array (fromval);
2637
2638   if (!deprecated_value_modifiable (toval))
2639     error (_("Left operand of assignment is not a modifiable lvalue."));
2640
2641   if (VALUE_LVAL (toval) == lval_memory
2642       && bits > 0
2643       && (TYPE_CODE (type) == TYPE_CODE_FLT
2644           || TYPE_CODE (type) == TYPE_CODE_STRUCT))
2645     {
2646       int len = (value_bitpos (toval)
2647                  + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
2648       int from_size;
2649       gdb_byte *buffer = (gdb_byte *) alloca (len);
2650       struct value *val;
2651       CORE_ADDR to_addr = value_address (toval);
2652
2653       if (TYPE_CODE (type) == TYPE_CODE_FLT)
2654         fromval = value_cast (type, fromval);
2655
2656       read_memory (to_addr, buffer, len);
2657       from_size = value_bitsize (fromval);
2658       if (from_size == 0)
2659         from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
2660
2661       const int is_big_endian = gdbarch_bits_big_endian (get_type_arch (type));
2662       ULONGEST from_offset = 0;
2663       if (is_big_endian && is_scalar_type (value_type (fromval)))
2664         from_offset = from_size - bits;
2665       copy_bitwise (buffer, value_bitpos (toval),
2666                     value_contents (fromval), from_offset,
2667                     bits, is_big_endian);
2668       write_memory_with_notification (to_addr, buffer, len);
2669
2670       val = value_copy (toval);
2671       memcpy (value_contents_raw (val), value_contents (fromval),
2672               TYPE_LENGTH (type));
2673       deprecated_set_value_type (val, type);
2674
2675       return val;
2676     }
2677
2678   return value_assign (toval, fromval);
2679 }
2680
2681
2682 /* Given that COMPONENT is a memory lvalue that is part of the lvalue
2683    CONTAINER, assign the contents of VAL to COMPONENTS's place in
2684    CONTAINER.  Modifies the VALUE_CONTENTS of CONTAINER only, not
2685    COMPONENT, and not the inferior's memory.  The current contents
2686    of COMPONENT are ignored.
2687
2688    Although not part of the initial design, this function also works
2689    when CONTAINER and COMPONENT are not_lval's: it works as if CONTAINER
2690    had a null address, and COMPONENT had an address which is equal to
2691    its offset inside CONTAINER.  */
2692
2693 static void
2694 value_assign_to_component (struct value *container, struct value *component,
2695                            struct value *val)
2696 {
2697   LONGEST offset_in_container =
2698     (LONGEST)  (value_address (component) - value_address (container));
2699   int bit_offset_in_container =
2700     value_bitpos (component) - value_bitpos (container);
2701   int bits;
2702
2703   val = value_cast (value_type (component), val);
2704
2705   if (value_bitsize (component) == 0)
2706     bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
2707   else
2708     bits = value_bitsize (component);
2709
2710   if (gdbarch_bits_big_endian (get_type_arch (value_type (container))))
2711     {
2712       int src_offset;
2713
2714       if (is_scalar_type (check_typedef (value_type (component))))
2715         src_offset
2716           = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
2717       else
2718         src_offset = 0;
2719       copy_bitwise (value_contents_writeable (container) + offset_in_container,
2720                     value_bitpos (container) + bit_offset_in_container,
2721                     value_contents (val), src_offset, bits, 1);
2722     }
2723   else
2724     copy_bitwise (value_contents_writeable (container) + offset_in_container,
2725                   value_bitpos (container) + bit_offset_in_container,
2726                   value_contents (val), 0, bits, 0);
2727 }
2728
2729 /* Determine if TYPE is an access to an unconstrained array.  */
2730
2731 bool
2732 ada_is_access_to_unconstrained_array (struct type *type)
2733 {
2734   return (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
2735           && is_thick_pntr (ada_typedef_target_type (type)));
2736 }
2737
2738 /* The value of the element of array ARR at the ARITY indices given in IND.
2739    ARR may be either a simple array, GNAT array descriptor, or pointer
2740    thereto.  */
2741
2742 struct value *
2743 ada_value_subscript (struct value *arr, int arity, struct value **ind)
2744 {
2745   int k;
2746   struct value *elt;
2747   struct type *elt_type;
2748
2749   elt = ada_coerce_to_simple_array (arr);
2750
2751   elt_type = ada_check_typedef (value_type (elt));
2752   if (TYPE_CODE (elt_type) == TYPE_CODE_ARRAY
2753       && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
2754     return value_subscript_packed (elt, arity, ind);
2755
2756   for (k = 0; k < arity; k += 1)
2757     {
2758       struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
2759
2760       if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
2761         error (_("too many subscripts (%d expected)"), k);
2762
2763       elt = value_subscript (elt, pos_atr (ind[k]));
2764
2765       if (ada_is_access_to_unconstrained_array (saved_elt_type)
2766           && TYPE_CODE (value_type (elt)) != TYPE_CODE_TYPEDEF)
2767         {
2768           /* The element is a typedef to an unconstrained array,
2769              except that the value_subscript call stripped the
2770              typedef layer.  The typedef layer is GNAT's way to
2771              specify that the element is, at the source level, an
2772              access to the unconstrained array, rather than the
2773              unconstrained array.  So, we need to restore that
2774              typedef layer, which we can do by forcing the element's
2775              type back to its original type. Otherwise, the returned
2776              value is going to be printed as the array, rather
2777              than as an access.  Another symptom of the same issue
2778              would be that an expression trying to dereference the
2779              element would also be improperly rejected.  */
2780           deprecated_set_value_type (elt, saved_elt_type);
2781         }
2782
2783       elt_type = ada_check_typedef (value_type (elt));
2784     }
2785
2786   return elt;
2787 }
2788
2789 /* Assuming ARR is a pointer to a GDB array, the value of the element
2790    of *ARR at the ARITY indices given in IND.
2791    Does not read the entire array into memory.
2792
2793    Note: Unlike what one would expect, this function is used instead of
2794    ada_value_subscript for basically all non-packed array types.  The reason
2795    for this is that a side effect of doing our own pointer arithmetics instead
2796    of relying on value_subscript is that there is no implicit typedef peeling.
2797    This is important for arrays of array accesses, where it allows us to
2798    preserve the fact that the array's element is an array access, where the
2799    access part os encoded in a typedef layer.  */
2800
2801 static struct value *
2802 ada_value_ptr_subscript (struct value *arr, int arity, struct value **ind)
2803 {
2804   int k;
2805   struct value *array_ind = ada_value_ind (arr);
2806   struct type *type
2807     = check_typedef (value_enclosing_type (array_ind));
2808
2809   if (TYPE_CODE (type) == TYPE_CODE_ARRAY
2810       && TYPE_FIELD_BITSIZE (type, 0) > 0)
2811     return value_subscript_packed (array_ind, arity, ind);
2812
2813   for (k = 0; k < arity; k += 1)
2814     {
2815       LONGEST lwb, upb;
2816       struct value *lwb_value;
2817
2818       if (TYPE_CODE (type) != TYPE_CODE_ARRAY)
2819         error (_("too many subscripts (%d expected)"), k);
2820       arr = value_cast (lookup_pointer_type (TYPE_TARGET_TYPE (type)),
2821                         value_copy (arr));
2822       get_discrete_bounds (TYPE_INDEX_TYPE (type), &lwb, &upb);
2823       lwb_value = value_from_longest (value_type(ind[k]), lwb);
2824       arr = value_ptradd (arr, pos_atr (ind[k]) - pos_atr (lwb_value));
2825       type = TYPE_TARGET_TYPE (type);
2826     }
2827
2828   return value_ind (arr);
2829 }
2830
2831 /* Given that ARRAY_PTR is a pointer or reference to an array of type TYPE (the
2832    actual type of ARRAY_PTR is ignored), returns the Ada slice of
2833    HIGH'Pos-LOW'Pos+1 elements starting at index LOW.  The lower bound of
2834    this array is LOW, as per Ada rules.  */
2835 static struct value *
2836 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
2837                           int low, int high)
2838 {
2839   struct type *type0 = ada_check_typedef (type);
2840   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type0));
2841   struct type *index_type
2842     = create_static_range_type (NULL, base_index_type, low, high);
2843   struct type *slice_type = create_array_type_with_stride
2844                               (NULL, TYPE_TARGET_TYPE (type0), index_type,
2845                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type0),
2846                                TYPE_FIELD_BITSIZE (type0, 0));
2847   int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
2848   LONGEST base_low_pos, low_pos;
2849   CORE_ADDR base;
2850
2851   if (!discrete_position (base_index_type, low, &low_pos)
2852       || !discrete_position (base_index_type, base_low, &base_low_pos))
2853     {
2854       warning (_("unable to get positions in slice, use bounds instead"));
2855       low_pos = low;
2856       base_low_pos = base_low;
2857     }
2858
2859   base = value_as_address (array_ptr)
2860     + ((low_pos - base_low_pos)
2861        * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
2862   return value_at_lazy (slice_type, base);
2863 }
2864
2865
2866 static struct value *
2867 ada_value_slice (struct value *array, int low, int high)
2868 {
2869   struct type *type = ada_check_typedef (value_type (array));
2870   struct type *base_index_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2871   struct type *index_type
2872     = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
2873   struct type *slice_type = create_array_type_with_stride
2874                               (NULL, TYPE_TARGET_TYPE (type), index_type,
2875                                get_dyn_prop (DYN_PROP_BYTE_STRIDE, type),
2876                                TYPE_FIELD_BITSIZE (type, 0));
2877   LONGEST low_pos, high_pos;
2878
2879   if (!discrete_position (base_index_type, low, &low_pos)
2880       || !discrete_position (base_index_type, high, &high_pos))
2881     {
2882       warning (_("unable to get positions in slice, use bounds instead"));
2883       low_pos = low;
2884       high_pos = high;
2885     }
2886
2887   return value_cast (slice_type,
2888                      value_slice (array, low, high_pos - low_pos + 1));
2889 }
2890
2891 /* If type is a record type in the form of a standard GNAT array
2892    descriptor, returns the number of dimensions for type.  If arr is a
2893    simple array, returns the number of "array of"s that prefix its
2894    type designation.  Otherwise, returns 0.  */
2895
2896 int
2897 ada_array_arity (struct type *type)
2898 {
2899   int arity;
2900
2901   if (type == NULL)
2902     return 0;
2903
2904   type = desc_base_type (type);
2905
2906   arity = 0;
2907   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2908     return desc_arity (desc_bounds_type (type));
2909   else
2910     while (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2911       {
2912         arity += 1;
2913         type = ada_check_typedef (TYPE_TARGET_TYPE (type));
2914       }
2915
2916   return arity;
2917 }
2918
2919 /* If TYPE is a record type in the form of a standard GNAT array
2920    descriptor or a simple array type, returns the element type for
2921    TYPE after indexing by NINDICES indices, or by all indices if
2922    NINDICES is -1.  Otherwise, returns NULL.  */
2923
2924 struct type *
2925 ada_array_element_type (struct type *type, int nindices)
2926 {
2927   type = desc_base_type (type);
2928
2929   if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
2930     {
2931       int k;
2932       struct type *p_array_type;
2933
2934       p_array_type = desc_data_target_type (type);
2935
2936       k = ada_array_arity (type);
2937       if (k == 0)
2938         return NULL;
2939
2940       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
2941       if (nindices >= 0 && k > nindices)
2942         k = nindices;
2943       while (k > 0 && p_array_type != NULL)
2944         {
2945           p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
2946           k -= 1;
2947         }
2948       return p_array_type;
2949     }
2950   else if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
2951     {
2952       while (nindices != 0 && TYPE_CODE (type) == TYPE_CODE_ARRAY)
2953         {
2954           type = TYPE_TARGET_TYPE (type);
2955           nindices -= 1;
2956         }
2957       return type;
2958     }
2959
2960   return NULL;
2961 }
2962
2963 /* The type of nth index in arrays of given type (n numbering from 1).
2964    Does not examine memory.  Throws an error if N is invalid or TYPE
2965    is not an array type.  NAME is the name of the Ada attribute being
2966    evaluated ('range, 'first, 'last, or 'length); it is used in building
2967    the error message.  */
2968
2969 static struct type *
2970 ada_index_type (struct type *type, int n, const char *name)
2971 {
2972   struct type *result_type;
2973
2974   type = desc_base_type (type);
2975
2976   if (n < 0 || n > ada_array_arity (type))
2977     error (_("invalid dimension number to '%s"), name);
2978
2979   if (ada_is_simple_array_type (type))
2980     {
2981       int i;
2982
2983       for (i = 1; i < n; i += 1)
2984         type = TYPE_TARGET_TYPE (type);
2985       result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
2986       /* FIXME: The stabs type r(0,0);bound;bound in an array type
2987          has a target type of TYPE_CODE_UNDEF.  We compensate here, but
2988          perhaps stabsread.c would make more sense.  */
2989       if (result_type && TYPE_CODE (result_type) == TYPE_CODE_UNDEF)
2990         result_type = NULL;
2991     }
2992   else
2993     {
2994       result_type = desc_index_type (desc_bounds_type (type), n);
2995       if (result_type == NULL)
2996         error (_("attempt to take bound of something that is not an array"));
2997     }
2998
2999   return result_type;
3000 }
3001
3002 /* Given that arr is an array type, returns the lower bound of the
3003    Nth index (numbering from 1) if WHICH is 0, and the upper bound if
3004    WHICH is 1.  This returns bounds 0 .. -1 if ARR_TYPE is an
3005    array-descriptor type.  It works for other arrays with bounds supplied
3006    by run-time quantities other than discriminants.  */
3007
3008 static LONGEST
3009 ada_array_bound_from_type (struct type *arr_type, int n, int which)
3010 {
3011   struct type *type, *index_type_desc, *index_type;
3012   int i;
3013
3014   gdb_assert (which == 0 || which == 1);
3015
3016   if (ada_is_constrained_packed_array_type (arr_type))
3017     arr_type = decode_constrained_packed_array_type (arr_type);
3018
3019   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
3020     return (LONGEST) - which;
3021
3022   if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
3023     type = TYPE_TARGET_TYPE (arr_type);
3024   else
3025     type = arr_type;
3026
3027   if (TYPE_FIXED_INSTANCE (type))
3028     {
3029       /* The array has already been fixed, so we do not need to
3030          check the parallel ___XA type again.  That encoding has
3031          already been applied, so ignore it now.  */
3032       index_type_desc = NULL;
3033     }
3034   else
3035     {
3036       index_type_desc = ada_find_parallel_type (type, "___XA");
3037       ada_fixup_array_indexes_type (index_type_desc);
3038     }
3039
3040   if (index_type_desc != NULL)
3041     index_type = to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, n - 1),
3042                                       NULL);
3043   else
3044     {
3045       struct type *elt_type = check_typedef (type);
3046
3047       for (i = 1; i < n; i++)
3048         elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
3049
3050       index_type = TYPE_INDEX_TYPE (elt_type);
3051     }
3052
3053   return
3054     (LONGEST) (which == 0
3055                ? ada_discrete_type_low_bound (index_type)
3056                : ada_discrete_type_high_bound (index_type));
3057 }
3058
3059 /* Given that arr is an array value, returns the lower bound of the
3060    nth index (numbering from 1) if WHICH is 0, and the upper bound if
3061    WHICH is 1.  This routine will also work for arrays with bounds
3062    supplied by run-time quantities other than discriminants.  */
3063
3064 static LONGEST
3065 ada_array_bound (struct value *arr, int n, int which)
3066 {
3067   struct type *arr_type;
3068
3069   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3070     arr = value_ind (arr);
3071   arr_type = value_enclosing_type (arr);
3072
3073   if (ada_is_constrained_packed_array_type (arr_type))
3074     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
3075   else if (ada_is_simple_array_type (arr_type))
3076     return ada_array_bound_from_type (arr_type, n, which);
3077   else
3078     return value_as_long (desc_one_bound (desc_bounds (arr), n, which));
3079 }
3080
3081 /* Given that arr is an array value, returns the length of the
3082    nth index.  This routine will also work for arrays with bounds
3083    supplied by run-time quantities other than discriminants.
3084    Does not work for arrays indexed by enumeration types with representation
3085    clauses at the moment.  */
3086
3087 static LONGEST
3088 ada_array_length (struct value *arr, int n)
3089 {
3090   struct type *arr_type, *index_type;
3091   int low, high;
3092
3093   if (TYPE_CODE (check_typedef (value_type (arr))) == TYPE_CODE_PTR)
3094     arr = value_ind (arr);
3095   arr_type = value_enclosing_type (arr);
3096
3097   if (ada_is_constrained_packed_array_type (arr_type))
3098     return ada_array_length (decode_constrained_packed_array (arr), n);
3099
3100   if (ada_is_simple_array_type (arr_type))
3101     {
3102       low = ada_array_bound_from_type (arr_type, n, 0);
3103       high = ada_array_bound_from_type (arr_type, n, 1);
3104     }
3105   else
3106     {
3107       low = value_as_long (desc_one_bound (desc_bounds (arr), n, 0));
3108       high = value_as_long (desc_one_bound (desc_bounds (arr), n, 1));
3109     }
3110
3111   arr_type = check_typedef (arr_type);
3112   index_type = ada_index_type (arr_type, n, "length");
3113   if (index_type != NULL)
3114     {
3115       struct type *base_type;
3116       if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
3117         base_type = TYPE_TARGET_TYPE (index_type);
3118       else
3119         base_type = index_type;
3120
3121       low = pos_atr (value_from_longest (base_type, low));
3122       high = pos_atr (value_from_longest (base_type, high));
3123     }
3124   return high - low + 1;
3125 }
3126
3127 /* An array whose type is that of ARR_TYPE (an array type), with
3128    bounds LOW to HIGH, but whose contents are unimportant.  If HIGH is
3129    less than LOW, then LOW-1 is used.  */
3130
3131 static struct value *
3132 empty_array (struct type *arr_type, int low, int high)
3133 {
3134   struct type *arr_type0 = ada_check_typedef (arr_type);
3135   struct type *index_type
3136     = create_static_range_type
3137         (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
3138          high < low ? low - 1 : high);
3139   struct type *elt_type = ada_array_element_type (arr_type0, 1);
3140
3141   return allocate_value (create_array_type (NULL, elt_type, index_type));
3142 }
3143 \f
3144
3145                                 /* Name resolution */
3146
3147 /* The "decoded" name for the user-definable Ada operator corresponding
3148    to OP.  */
3149
3150 static const char *
3151 ada_decoded_op_name (enum exp_opcode op)
3152 {
3153   int i;
3154
3155   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3156     {
3157       if (ada_opname_table[i].op == op)
3158         return ada_opname_table[i].decoded;
3159     }
3160   error (_("Could not find operator name for opcode"));
3161 }
3162
3163
3164 /* Same as evaluate_type (*EXP), but resolves ambiguous symbol
3165    references (marked by OP_VAR_VALUE nodes in which the symbol has an
3166    undefined namespace) and converts operators that are
3167    user-defined into appropriate function calls.  If CONTEXT_TYPE is
3168    non-null, it provides a preferred result type [at the moment, only
3169    type void has any effect---causing procedures to be preferred over
3170    functions in calls].  A null CONTEXT_TYPE indicates that a non-void
3171    return type is preferred.  May change (expand) *EXP.  */
3172
3173 static void
3174 resolve (expression_up *expp, int void_context_p, int parse_completion,
3175          innermost_block_tracker *tracker)
3176 {
3177   struct type *context_type = NULL;
3178   int pc = 0;
3179
3180   if (void_context_p)
3181     context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
3182
3183   resolve_subexp (expp, &pc, 1, context_type, parse_completion, tracker);
3184 }
3185
3186 /* Resolve the operator of the subexpression beginning at
3187    position *POS of *EXPP.  "Resolving" consists of replacing
3188    the symbols that have undefined namespaces in OP_VAR_VALUE nodes
3189    with their resolutions, replacing built-in operators with
3190    function calls to user-defined operators, where appropriate, and,
3191    when DEPROCEDURE_P is non-zero, converting function-valued variables
3192    into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
3193    are as in ada_resolve, above.  */
3194
3195 static struct value *
3196 resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
3197                 struct type *context_type, int parse_completion,
3198                 innermost_block_tracker *tracker)
3199 {
3200   int pc = *pos;
3201   int i;
3202   struct expression *exp;       /* Convenience: == *expp.  */
3203   enum exp_opcode op = (*expp)->elts[pc].opcode;
3204   struct value **argvec;        /* Vector of operand types (alloca'ed).  */
3205   int nargs;                    /* Number of operands.  */
3206   int oplen;
3207
3208   argvec = NULL;
3209   nargs = 0;
3210   exp = expp->get ();
3211
3212   /* Pass one: resolve operands, saving their types and updating *pos,
3213      if needed.  */
3214   switch (op)
3215     {
3216     case OP_FUNCALL:
3217       if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3218           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3219         *pos += 7;
3220       else
3221         {
3222           *pos += 3;
3223           resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3224         }
3225       nargs = longest_to_int (exp->elts[pc + 1].longconst);
3226       break;
3227
3228     case UNOP_ADDR:
3229       *pos += 1;
3230       resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3231       break;
3232
3233     case UNOP_QUAL:
3234       *pos += 3;
3235       resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
3236                       parse_completion, tracker);
3237       break;
3238
3239     case OP_ATR_MODULUS:
3240     case OP_ATR_SIZE:
3241     case OP_ATR_TAG:
3242     case OP_ATR_FIRST:
3243     case OP_ATR_LAST:
3244     case OP_ATR_LENGTH:
3245     case OP_ATR_POS:
3246     case OP_ATR_VAL:
3247     case OP_ATR_MIN:
3248     case OP_ATR_MAX:
3249     case TERNOP_IN_RANGE:
3250     case BINOP_IN_BOUNDS:
3251     case UNOP_IN_RANGE:
3252     case OP_AGGREGATE:
3253     case OP_OTHERS:
3254     case OP_CHOICES:
3255     case OP_POSITIONAL:
3256     case OP_DISCRETE_RANGE:
3257     case OP_NAME:
3258       ada_forward_operator_length (exp, pc, &oplen, &nargs);
3259       *pos += oplen;
3260       break;
3261
3262     case BINOP_ASSIGN:
3263       {
3264         struct value *arg1;
3265
3266         *pos += 1;
3267         arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
3268         if (arg1 == NULL)
3269           resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
3270         else
3271           resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
3272                           tracker);
3273         break;
3274       }
3275
3276     case UNOP_CAST:
3277       *pos += 3;
3278       nargs = 1;
3279       break;
3280
3281     case BINOP_ADD:
3282     case BINOP_SUB:
3283     case BINOP_MUL:
3284     case BINOP_DIV:
3285     case BINOP_REM:
3286     case BINOP_MOD:
3287     case BINOP_EXP:
3288     case BINOP_CONCAT:
3289     case BINOP_LOGICAL_AND:
3290     case BINOP_LOGICAL_OR:
3291     case BINOP_BITWISE_AND:
3292     case BINOP_BITWISE_IOR:
3293     case BINOP_BITWISE_XOR:
3294
3295     case BINOP_EQUAL:
3296     case BINOP_NOTEQUAL:
3297     case BINOP_LESS:
3298     case BINOP_GTR:
3299     case BINOP_LEQ:
3300     case BINOP_GEQ:
3301
3302     case BINOP_REPEAT:
3303     case BINOP_SUBSCRIPT:
3304     case BINOP_COMMA:
3305       *pos += 1;
3306       nargs = 2;
3307       break;
3308
3309     case UNOP_NEG:
3310     case UNOP_PLUS:
3311     case UNOP_LOGICAL_NOT:
3312     case UNOP_ABS:
3313     case UNOP_IND:
3314       *pos += 1;
3315       nargs = 1;
3316       break;
3317
3318     case OP_LONG:
3319     case OP_FLOAT:
3320     case OP_VAR_VALUE:
3321     case OP_VAR_MSYM_VALUE:
3322       *pos += 4;
3323       break;
3324
3325     case OP_TYPE:
3326     case OP_BOOL:
3327     case OP_LAST:
3328     case OP_INTERNALVAR:
3329       *pos += 3;
3330       break;
3331
3332     case UNOP_MEMVAL:
3333       *pos += 3;
3334       nargs = 1;
3335       break;
3336
3337     case OP_REGISTER:
3338       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3339       break;
3340
3341     case STRUCTOP_STRUCT:
3342       *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
3343       nargs = 1;
3344       break;
3345
3346     case TERNOP_SLICE:
3347       *pos += 1;
3348       nargs = 3;
3349       break;
3350
3351     case OP_STRING:
3352       break;
3353
3354     default:
3355       error (_("Unexpected operator during name resolution"));
3356     }
3357
3358   argvec = XALLOCAVEC (struct value *, nargs + 1);
3359   for (i = 0; i < nargs; i += 1)
3360     argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
3361                                 tracker);
3362   argvec[i] = NULL;
3363   exp = expp->get ();
3364
3365   /* Pass two: perform any resolution on principal operator.  */
3366   switch (op)
3367     {
3368     default:
3369       break;
3370
3371     case OP_VAR_VALUE:
3372       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
3373         {
3374           std::vector<struct block_symbol> candidates;
3375           int n_candidates;
3376
3377           n_candidates =
3378             ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3379                                     (exp->elts[pc + 2].symbol),
3380                                     exp->elts[pc + 1].block, VAR_DOMAIN,
3381                                     &candidates);
3382
3383           if (n_candidates > 1)
3384             {
3385               /* Types tend to get re-introduced locally, so if there
3386                  are any local symbols that are not types, first filter
3387                  out all types.  */
3388               int j;
3389               for (j = 0; j < n_candidates; j += 1)
3390                 switch (SYMBOL_CLASS (candidates[j].symbol))
3391                   {
3392                   case LOC_REGISTER:
3393                   case LOC_ARG:
3394                   case LOC_REF_ARG:
3395                   case LOC_REGPARM_ADDR:
3396                   case LOC_LOCAL:
3397                   case LOC_COMPUTED:
3398                     goto FoundNonType;
3399                   default:
3400                     break;
3401                   }
3402             FoundNonType:
3403               if (j < n_candidates)
3404                 {
3405                   j = 0;
3406                   while (j < n_candidates)
3407                     {
3408                       if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
3409                         {
3410                           candidates[j] = candidates[n_candidates - 1];
3411                           n_candidates -= 1;
3412                         }
3413                       else
3414                         j += 1;
3415                     }
3416                 }
3417             }
3418
3419           if (n_candidates == 0)
3420             error (_("No definition found for %s"),
3421                    SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3422           else if (n_candidates == 1)
3423             i = 0;
3424           else if (deprocedure_p
3425                    && !is_nonfunction (candidates.data (), n_candidates))
3426             {
3427               i = ada_resolve_function
3428                 (candidates.data (), n_candidates, NULL, 0,
3429                  SYMBOL_LINKAGE_NAME (exp->elts[pc + 2].symbol),
3430                  context_type, parse_completion);
3431               if (i < 0)
3432                 error (_("Could not find a match for %s"),
3433                        SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3434             }
3435           else
3436             {
3437               printf_filtered (_("Multiple matches for %s\n"),
3438                                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
3439               user_select_syms (candidates.data (), n_candidates, 1);
3440               i = 0;
3441             }
3442
3443           exp->elts[pc + 1].block = candidates[i].block;
3444           exp->elts[pc + 2].symbol = candidates[i].symbol;
3445           tracker->update (candidates[i]);
3446         }
3447
3448       if (deprocedure_p
3449           && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
3450               == TYPE_CODE_FUNC))
3451         {
3452           replace_operator_with_call (expp, pc, 0, 4,
3453                                       exp->elts[pc + 2].symbol,
3454                                       exp->elts[pc + 1].block);
3455           exp = expp->get ();
3456         }
3457       break;
3458
3459     case OP_FUNCALL:
3460       {
3461         if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
3462             && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
3463           {
3464             std::vector<struct block_symbol> candidates;
3465             int n_candidates;
3466
3467             n_candidates =
3468               ada_lookup_symbol_list (SYMBOL_LINKAGE_NAME
3469                                       (exp->elts[pc + 5].symbol),
3470                                       exp->elts[pc + 4].block, VAR_DOMAIN,
3471                                       &candidates);
3472
3473             if (n_candidates == 1)
3474               i = 0;
3475             else
3476               {
3477                 i = ada_resolve_function
3478                   (candidates.data (), n_candidates,
3479                    argvec, nargs,
3480                    SYMBOL_LINKAGE_NAME (exp->elts[pc + 5].symbol),
3481                    context_type, parse_completion);
3482                 if (i < 0)
3483                   error (_("Could not find a match for %s"),
3484                          SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
3485               }
3486
3487             exp->elts[pc + 4].block = candidates[i].block;
3488             exp->elts[pc + 5].symbol = candidates[i].symbol;
3489             tracker->update (candidates[i]);
3490           }
3491       }
3492       break;
3493     case BINOP_ADD:
3494     case BINOP_SUB:
3495     case BINOP_MUL:
3496     case BINOP_DIV:
3497     case BINOP_REM:
3498     case BINOP_MOD:
3499     case BINOP_CONCAT:
3500     case BINOP_BITWISE_AND:
3501     case BINOP_BITWISE_IOR:
3502     case BINOP_BITWISE_XOR:
3503     case BINOP_EQUAL:
3504     case BINOP_NOTEQUAL:
3505     case BINOP_LESS:
3506     case BINOP_GTR:
3507     case BINOP_LEQ:
3508     case BINOP_GEQ:
3509     case BINOP_EXP:
3510     case UNOP_NEG:
3511     case UNOP_PLUS:
3512     case UNOP_LOGICAL_NOT:
3513     case UNOP_ABS:
3514       if (possible_user_operator_p (op, argvec))
3515         {
3516           std::vector<struct block_symbol> candidates;
3517           int n_candidates;
3518
3519           n_candidates =
3520             ada_lookup_symbol_list (ada_decoded_op_name (op),
3521                                     NULL, VAR_DOMAIN,
3522                                     &candidates);
3523
3524           i = ada_resolve_function (candidates.data (), n_candidates, argvec,
3525                                     nargs, ada_decoded_op_name (op), NULL,
3526                                     parse_completion);
3527           if (i < 0)
3528             break;
3529
3530           replace_operator_with_call (expp, pc, nargs, 1,
3531                                       candidates[i].symbol,
3532                                       candidates[i].block);
3533           exp = expp->get ();
3534         }
3535       break;
3536
3537     case OP_TYPE:
3538     case OP_REGISTER:
3539       return NULL;
3540     }
3541
3542   *pos = pc;
3543   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
3544     return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
3545                                     exp->elts[pc + 1].objfile,
3546                                     exp->elts[pc + 2].msymbol);
3547   else
3548     return evaluate_subexp_type (exp, pos);
3549 }
3550
3551 /* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
3552    MAY_DEREF is non-zero, the formal may be a pointer and the actual
3553    a non-pointer.  */
3554 /* The term "match" here is rather loose.  The match is heuristic and
3555    liberal.  */
3556
3557 static int
3558 ada_type_match (struct type *ftype, struct type *atype, int may_deref)
3559 {
3560   ftype = ada_check_typedef (ftype);
3561   atype = ada_check_typedef (atype);
3562
3563   if (TYPE_CODE (ftype) == TYPE_CODE_REF)
3564     ftype = TYPE_TARGET_TYPE (ftype);
3565   if (TYPE_CODE (atype) == TYPE_CODE_REF)
3566     atype = TYPE_TARGET_TYPE (atype);
3567
3568   switch (TYPE_CODE (ftype))
3569     {
3570     default:
3571       return TYPE_CODE (ftype) == TYPE_CODE (atype);
3572     case TYPE_CODE_PTR:
3573       if (TYPE_CODE (atype) == TYPE_CODE_PTR)
3574         return ada_type_match (TYPE_TARGET_TYPE (ftype),
3575                                TYPE_TARGET_TYPE (atype), 0);
3576       else
3577         return (may_deref
3578                 && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
3579     case TYPE_CODE_INT:
3580     case TYPE_CODE_ENUM:
3581     case TYPE_CODE_RANGE:
3582       switch (TYPE_CODE (atype))
3583         {
3584         case TYPE_CODE_INT:
3585         case TYPE_CODE_ENUM:
3586         case TYPE_CODE_RANGE:
3587           return 1;
3588         default:
3589           return 0;
3590         }
3591
3592     case TYPE_CODE_ARRAY:
3593       return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3594               || ada_is_array_descriptor_type (atype));
3595
3596     case TYPE_CODE_STRUCT:
3597       if (ada_is_array_descriptor_type (ftype))
3598         return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
3599                 || ada_is_array_descriptor_type (atype));
3600       else
3601         return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
3602                 && !ada_is_array_descriptor_type (atype));
3603
3604     case TYPE_CODE_UNION:
3605     case TYPE_CODE_FLT:
3606       return (TYPE_CODE (atype) == TYPE_CODE (ftype));
3607     }
3608 }
3609
3610 /* Return non-zero if the formals of FUNC "sufficiently match" the
3611    vector of actual argument types ACTUALS of size N_ACTUALS.  FUNC
3612    may also be an enumeral, in which case it is treated as a 0-
3613    argument function.  */
3614
3615 static int
3616 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
3617 {
3618   int i;
3619   struct type *func_type = SYMBOL_TYPE (func);
3620
3621   if (SYMBOL_CLASS (func) == LOC_CONST
3622       && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
3623     return (n_actuals == 0);
3624   else if (func_type == NULL || TYPE_CODE (func_type) != TYPE_CODE_FUNC)
3625     return 0;
3626
3627   if (TYPE_NFIELDS (func_type) != n_actuals)
3628     return 0;
3629
3630   for (i = 0; i < n_actuals; i += 1)
3631     {
3632       if (actuals[i] == NULL)
3633         return 0;
3634       else
3635         {
3636           struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
3637                                                                    i));
3638           struct type *atype = ada_check_typedef (value_type (actuals[i]));
3639
3640           if (!ada_type_match (ftype, atype, 1))
3641             return 0;
3642         }
3643     }
3644   return 1;
3645 }
3646
3647 /* False iff function type FUNC_TYPE definitely does not produce a value
3648    compatible with type CONTEXT_TYPE.  Conservatively returns 1 if
3649    FUNC_TYPE is not a valid function type with a non-null return type
3650    or an enumerated type.  A null CONTEXT_TYPE indicates any non-void type.  */
3651
3652 static int
3653 return_match (struct type *func_type, struct type *context_type)
3654 {
3655   struct type *return_type;
3656
3657   if (func_type == NULL)
3658     return 1;
3659
3660   if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
3661     return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
3662   else
3663     return_type = get_base_type (func_type);
3664   if (return_type == NULL)
3665     return 1;
3666
3667   context_type = get_base_type (context_type);
3668
3669   if (TYPE_CODE (return_type) == TYPE_CODE_ENUM)
3670     return context_type == NULL || return_type == context_type;
3671   else if (context_type == NULL)
3672     return TYPE_CODE (return_type) != TYPE_CODE_VOID;
3673   else
3674     return TYPE_CODE (return_type) == TYPE_CODE (context_type);
3675 }
3676
3677
3678 /* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
3679    function (if any) that matches the types of the NARGS arguments in
3680    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
3681    that returns that type, then eliminate matches that don't.  If
3682    CONTEXT_TYPE is void and there is at least one match that does not
3683    return void, eliminate all matches that do.
3684
3685    Asks the user if there is more than one match remaining.  Returns -1
3686    if there is no such symbol or none is selected.  NAME is used
3687    solely for messages.  May re-arrange and modify SYMS in
3688    the process; the index returned is for the modified vector.  */
3689
3690 static int
3691 ada_resolve_function (struct block_symbol syms[],
3692                       int nsyms, struct value **args, int nargs,
3693                       const char *name, struct type *context_type,
3694                       int parse_completion)
3695 {
3696   int fallback;
3697   int k;
3698   int m;                        /* Number of hits */
3699
3700   m = 0;
3701   /* In the first pass of the loop, we only accept functions matching
3702      context_type.  If none are found, we add a second pass of the loop
3703      where every function is accepted.  */
3704   for (fallback = 0; m == 0 && fallback < 2; fallback++)
3705     {
3706       for (k = 0; k < nsyms; k += 1)
3707         {
3708           struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
3709
3710           if (ada_args_match (syms[k].symbol, args, nargs)
3711               && (fallback || return_match (type, context_type)))
3712             {
3713               syms[m] = syms[k];
3714               m += 1;
3715             }
3716         }
3717     }
3718
3719   /* If we got multiple matches, ask the user which one to use.  Don't do this
3720      interactive thing during completion, though, as the purpose of the
3721      completion is providing a list of all possible matches.  Prompting the
3722      user to filter it down would be completely unexpected in this case.  */
3723   if (m == 0)
3724     return -1;
3725   else if (m > 1 && !parse_completion)
3726     {
3727       printf_filtered (_("Multiple matches for %s\n"), name);
3728       user_select_syms (syms, m, 1);
3729       return 0;
3730     }
3731   return 0;
3732 }
3733
3734 /* Returns true (non-zero) iff decoded name N0 should appear before N1
3735    in a listing of choices during disambiguation (see sort_choices, below).
3736    The idea is that overloadings of a subprogram name from the
3737    same package should sort in their source order.  We settle for ordering
3738    such symbols by their trailing number (__N  or $N).  */
3739
3740 static int
3741 encoded_ordered_before (const char *N0, const char *N1)
3742 {
3743   if (N1 == NULL)
3744     return 0;
3745   else if (N0 == NULL)
3746     return 1;
3747   else
3748     {
3749       int k0, k1;
3750
3751       for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
3752         ;
3753       for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
3754         ;
3755       if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
3756           && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
3757         {
3758           int n0, n1;
3759
3760           n0 = k0;
3761           while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
3762             n0 -= 1;
3763           n1 = k1;
3764           while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
3765             n1 -= 1;
3766           if (n0 == n1 && strncmp (N0, N1, n0) == 0)
3767             return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
3768         }
3769       return (strcmp (N0, N1) < 0);
3770     }
3771 }
3772
3773 /* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
3774    encoded names.  */
3775
3776 static void
3777 sort_choices (struct block_symbol syms[], int nsyms)
3778 {
3779   int i;
3780
3781   for (i = 1; i < nsyms; i += 1)
3782     {
3783       struct block_symbol sym = syms[i];
3784       int j;
3785
3786       for (j = i - 1; j >= 0; j -= 1)
3787         {
3788           if (encoded_ordered_before (SYMBOL_LINKAGE_NAME (syms[j].symbol),
3789                                       SYMBOL_LINKAGE_NAME (sym.symbol)))
3790             break;
3791           syms[j + 1] = syms[j];
3792         }
3793       syms[j + 1] = sym;
3794     }
3795 }
3796
3797 /* Whether GDB should display formals and return types for functions in the
3798    overloads selection menu.  */
3799 static int print_signatures = 1;
3800
3801 /* Print the signature for SYM on STREAM according to the FLAGS options.  For
3802    all but functions, the signature is just the name of the symbol.  For
3803    functions, this is the name of the function, the list of types for formals
3804    and the return type (if any).  */
3805
3806 static void
3807 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
3808                             const struct type_print_options *flags)
3809 {
3810   struct type *type = SYMBOL_TYPE (sym);
3811
3812   fprintf_filtered (stream, "%s", SYMBOL_PRINT_NAME (sym));
3813   if (!print_signatures
3814       || type == NULL
3815       || TYPE_CODE (type) != TYPE_CODE_FUNC)
3816     return;
3817
3818   if (TYPE_NFIELDS (type) > 0)
3819     {
3820       int i;
3821
3822       fprintf_filtered (stream, " (");
3823       for (i = 0; i < TYPE_NFIELDS (type); ++i)
3824         {
3825           if (i > 0)
3826             fprintf_filtered (stream, "; ");
3827           ada_print_type (TYPE_FIELD_TYPE (type, i), NULL, stream, -1, 0,
3828                           flags);
3829         }
3830       fprintf_filtered (stream, ")");
3831     }
3832   if (TYPE_TARGET_TYPE (type) != NULL
3833       && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
3834     {
3835       fprintf_filtered (stream, " return ");
3836       ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
3837     }
3838 }
3839
3840 /* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0 
3841    by asking the user (if necessary), returning the number selected, 
3842    and setting the first elements of SYMS items.  Error if no symbols
3843    selected.  */
3844
3845 /* NOTE: Adapted from decode_line_2 in symtab.c, with which it ought
3846    to be re-integrated one of these days.  */
3847
3848 int
3849 user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
3850 {
3851   int i;
3852   int *chosen = XALLOCAVEC (int , nsyms);
3853   int n_chosen;
3854   int first_choice = (max_results == 1) ? 1 : 2;
3855   const char *select_mode = multiple_symbols_select_mode ();
3856
3857   if (max_results < 1)
3858     error (_("Request to select 0 symbols!"));
3859   if (nsyms <= 1)
3860     return nsyms;
3861
3862   if (select_mode == multiple_symbols_cancel)
3863     error (_("\
3864 canceled because the command is ambiguous\n\
3865 See set/show multiple-symbol."));
3866
3867   /* If select_mode is "all", then return all possible symbols.
3868      Only do that if more than one symbol can be selected, of course.
3869      Otherwise, display the menu as usual.  */
3870   if (select_mode == multiple_symbols_all && max_results > 1)
3871     return nsyms;
3872
3873   printf_filtered (_("[0] cancel\n"));
3874   if (max_results > 1)
3875     printf_filtered (_("[1] all\n"));
3876
3877   sort_choices (syms, nsyms);
3878
3879   for (i = 0; i < nsyms; i += 1)
3880     {
3881       if (syms[i].symbol == NULL)
3882         continue;
3883
3884       if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
3885         {
3886           struct symtab_and_line sal =
3887             find_function_start_sal (syms[i].symbol, 1);
3888
3889           printf_filtered ("[%d] ", i + first_choice);
3890           ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3891                                       &type_print_raw_options);
3892           if (sal.symtab == NULL)
3893             printf_filtered (_(" at <no source file available>:%d\n"),
3894                              sal.line);
3895           else
3896             printf_filtered (_(" at %s:%d\n"),
3897                              symtab_to_filename_for_display (sal.symtab),
3898                              sal.line);
3899           continue;
3900         }
3901       else
3902         {
3903           int is_enumeral =
3904             (SYMBOL_CLASS (syms[i].symbol) == LOC_CONST
3905              && SYMBOL_TYPE (syms[i].symbol) != NULL
3906              && TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) == TYPE_CODE_ENUM);
3907           struct symtab *symtab = NULL;
3908
3909           if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
3910             symtab = symbol_symtab (syms[i].symbol);
3911
3912           if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
3913             {
3914               printf_filtered ("[%d] ", i + first_choice);
3915               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3916                                           &type_print_raw_options);
3917               printf_filtered (_(" at %s:%d\n"),
3918                                symtab_to_filename_for_display (symtab),
3919                                SYMBOL_LINE (syms[i].symbol));
3920             }
3921           else if (is_enumeral
3922                    && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
3923             {
3924               printf_filtered (("[%d] "), i + first_choice);
3925               ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
3926                               gdb_stdout, -1, 0, &type_print_raw_options);
3927               printf_filtered (_("'(%s) (enumeral)\n"),
3928                                SYMBOL_PRINT_NAME (syms[i].symbol));
3929             }
3930           else
3931             {
3932               printf_filtered ("[%d] ", i + first_choice);
3933               ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
3934                                           &type_print_raw_options);
3935
3936               if (symtab != NULL)
3937                 printf_filtered (is_enumeral
3938                                  ? _(" in %s (enumeral)\n")
3939                                  : _(" at %s:?\n"),
3940                                  symtab_to_filename_for_display (symtab));
3941               else
3942                 printf_filtered (is_enumeral
3943                                  ? _(" (enumeral)\n")
3944                                  : _(" at ?\n"));
3945             }
3946         }
3947     }
3948
3949   n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
3950                              "overload-choice");
3951
3952   for (i = 0; i < n_chosen; i += 1)
3953     syms[i] = syms[chosen[i]];
3954
3955   return n_chosen;
3956 }
3957
3958 /* Read and validate a set of numeric choices from the user in the
3959    range 0 .. N_CHOICES-1.  Place the results in increasing
3960    order in CHOICES[0 .. N-1], and return N.
3961
3962    The user types choices as a sequence of numbers on one line
3963    separated by blanks, encoding them as follows:
3964
3965      + A choice of 0 means to cancel the selection, throwing an error.
3966      + If IS_ALL_CHOICE, a choice of 1 selects the entire set 0 .. N_CHOICES-1.
3967      + The user chooses k by typing k+IS_ALL_CHOICE+1.
3968
3969    The user is not allowed to choose more than MAX_RESULTS values.
3970
3971    ANNOTATION_SUFFIX, if present, is used to annotate the input
3972    prompts (for use with the -f switch).  */
3973
3974 int
3975 get_selections (int *choices, int n_choices, int max_results,
3976                 int is_all_choice, const char *annotation_suffix)
3977 {
3978   char *args;
3979   const char *prompt;
3980   int n_chosen;
3981   int first_choice = is_all_choice ? 2 : 1;
3982
3983   prompt = getenv ("PS2");
3984   if (prompt == NULL)
3985     prompt = "> ";
3986
3987   args = command_line_input (prompt, annotation_suffix);
3988
3989   if (args == NULL)
3990     error_no_arg (_("one or more choice numbers"));
3991
3992   n_chosen = 0;
3993
3994   /* Set choices[0 .. n_chosen-1] to the users' choices in ascending
3995      order, as given in args.  Choices are validated.  */
3996   while (1)
3997     {
3998       char *args2;
3999       int choice, j;
4000
4001       args = skip_spaces (args);
4002       if (*args == '\0' && n_chosen == 0)
4003         error_no_arg (_("one or more choice numbers"));
4004       else if (*args == '\0')
4005         break;
4006
4007       choice = strtol (args, &args2, 10);
4008       if (args == args2 || choice < 0
4009           || choice > n_choices + first_choice - 1)
4010         error (_("Argument must be choice number"));
4011       args = args2;
4012
4013       if (choice == 0)
4014         error (_("cancelled"));
4015
4016       if (choice < first_choice)
4017         {
4018           n_chosen = n_choices;
4019           for (j = 0; j < n_choices; j += 1)
4020             choices[j] = j;
4021           break;
4022         }
4023       choice -= first_choice;
4024
4025       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
4026         {
4027         }
4028
4029       if (j < 0 || choice != choices[j])
4030         {
4031           int k;
4032
4033           for (k = n_chosen - 1; k > j; k -= 1)
4034             choices[k + 1] = choices[k];
4035           choices[j + 1] = choice;
4036           n_chosen += 1;
4037         }
4038     }
4039
4040   if (n_chosen > max_results)
4041     error (_("Select no more than %d of the above"), max_results);
4042
4043   return n_chosen;
4044 }
4045
4046 /* Replace the operator of length OPLEN at position PC in *EXPP with a call
4047    on the function identified by SYM and BLOCK, and taking NARGS
4048    arguments.  Update *EXPP as needed to hold more space.  */
4049
4050 static void
4051 replace_operator_with_call (expression_up *expp, int pc, int nargs,
4052                             int oplen, struct symbol *sym,
4053                             const struct block *block)
4054 {
4055   /* A new expression, with 6 more elements (3 for funcall, 4 for function
4056      symbol, -oplen for operator being replaced).  */
4057   struct expression *newexp = (struct expression *)
4058     xzalloc (sizeof (struct expression)
4059              + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
4060   struct expression *exp = expp->get ();
4061
4062   newexp->nelts = exp->nelts + 7 - oplen;
4063   newexp->language_defn = exp->language_defn;
4064   newexp->gdbarch = exp->gdbarch;
4065   memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
4066   memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
4067           EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
4068
4069   newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
4070   newexp->elts[pc + 1].longconst = (LONGEST) nargs;
4071
4072   newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
4073   newexp->elts[pc + 4].block = block;
4074   newexp->elts[pc + 5].symbol = sym;
4075
4076   expp->reset (newexp);
4077 }
4078
4079 /* Type-class predicates */
4080
4081 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
4082    or FLOAT).  */
4083
4084 static int
4085 numeric_type_p (struct type *type)
4086 {
4087   if (type == NULL)
4088     return 0;
4089   else
4090     {
4091       switch (TYPE_CODE (type))
4092         {
4093         case TYPE_CODE_INT:
4094         case TYPE_CODE_FLT:
4095           return 1;
4096         case TYPE_CODE_RANGE:
4097           return (type == TYPE_TARGET_TYPE (type)
4098                   || numeric_type_p (TYPE_TARGET_TYPE (type)));
4099         default:
4100           return 0;
4101         }
4102     }
4103 }
4104
4105 /* True iff TYPE is integral (an INT or RANGE of INTs).  */
4106
4107 static int
4108 integer_type_p (struct type *type)
4109 {
4110   if (type == NULL)
4111     return 0;
4112   else
4113     {
4114       switch (TYPE_CODE (type))
4115         {
4116         case TYPE_CODE_INT:
4117           return 1;
4118         case TYPE_CODE_RANGE:
4119           return (type == TYPE_TARGET_TYPE (type)
4120                   || integer_type_p (TYPE_TARGET_TYPE (type)));
4121         default:
4122           return 0;
4123         }
4124     }
4125 }
4126
4127 /* True iff TYPE is scalar (INT, RANGE, FLOAT, ENUM).  */
4128
4129 static int
4130 scalar_type_p (struct type *type)
4131 {
4132   if (type == NULL)
4133     return 0;
4134   else
4135     {
4136       switch (TYPE_CODE (type))
4137         {
4138         case TYPE_CODE_INT:
4139         case TYPE_CODE_RANGE:
4140         case TYPE_CODE_ENUM:
4141         case TYPE_CODE_FLT:
4142           return 1;
4143         default:
4144           return 0;
4145         }
4146     }
4147 }
4148
4149 /* True iff TYPE is discrete (INT, RANGE, ENUM).  */
4150
4151 static int
4152 discrete_type_p (struct type *type)
4153 {
4154   if (type == NULL)
4155     return 0;
4156   else
4157     {
4158       switch (TYPE_CODE (type))
4159         {
4160         case TYPE_CODE_INT:
4161         case TYPE_CODE_RANGE:
4162         case TYPE_CODE_ENUM:
4163         case TYPE_CODE_BOOL:
4164           return 1;
4165         default:
4166           return 0;
4167         }
4168     }
4169 }
4170
4171 /* Returns non-zero if OP with operands in the vector ARGS could be
4172    a user-defined function.  Errs on the side of pre-defined operators
4173    (i.e., result 0).  */
4174
4175 static int
4176 possible_user_operator_p (enum exp_opcode op, struct value *args[])
4177 {
4178   struct type *type0 =
4179     (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
4180   struct type *type1 =
4181     (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
4182
4183   if (type0 == NULL)
4184     return 0;
4185
4186   switch (op)
4187     {
4188     default:
4189       return 0;
4190
4191     case BINOP_ADD:
4192     case BINOP_SUB:
4193     case BINOP_MUL:
4194     case BINOP_DIV:
4195       return (!(numeric_type_p (type0) && numeric_type_p (type1)));
4196
4197     case BINOP_REM:
4198     case BINOP_MOD:
4199     case BINOP_BITWISE_AND:
4200     case BINOP_BITWISE_IOR:
4201     case BINOP_BITWISE_XOR:
4202       return (!(integer_type_p (type0) && integer_type_p (type1)));
4203
4204     case BINOP_EQUAL:
4205     case BINOP_NOTEQUAL:
4206     case BINOP_LESS:
4207     case BINOP_GTR:
4208     case BINOP_LEQ:
4209     case BINOP_GEQ:
4210       return (!(scalar_type_p (type0) && scalar_type_p (type1)));
4211
4212     case BINOP_CONCAT:
4213       return !ada_is_array_type (type0) || !ada_is_array_type (type1);
4214
4215     case BINOP_EXP:
4216       return (!(numeric_type_p (type0) && integer_type_p (type1)));
4217
4218     case UNOP_NEG:
4219     case UNOP_PLUS:
4220     case UNOP_LOGICAL_NOT:
4221     case UNOP_ABS:
4222       return (!numeric_type_p (type0));
4223
4224     }
4225 }
4226 \f
4227                                 /* Renaming */
4228
4229 /* NOTES: 
4230
4231    1. In the following, we assume that a renaming type's name may
4232       have an ___XD suffix.  It would be nice if this went away at some
4233       point.
4234    2. We handle both the (old) purely type-based representation of 
4235       renamings and the (new) variable-based encoding.  At some point,
4236       it is devoutly to be hoped that the former goes away 
4237       (FIXME: hilfinger-2007-07-09).
4238    3. Subprogram renamings are not implemented, although the XRS
4239       suffix is recognized (FIXME: hilfinger-2007-07-09).  */
4240
4241 /* If SYM encodes a renaming, 
4242
4243        <renaming> renames <renamed entity>,
4244
4245    sets *LEN to the length of the renamed entity's name,
4246    *RENAMED_ENTITY to that name (not null-terminated), and *RENAMING_EXPR to
4247    the string describing the subcomponent selected from the renamed
4248    entity.  Returns ADA_NOT_RENAMING if SYM does not encode a renaming
4249    (in which case, the values of *RENAMED_ENTITY, *LEN, and *RENAMING_EXPR
4250    are undefined).  Otherwise, returns a value indicating the category
4251    of entity renamed: an object (ADA_OBJECT_RENAMING), exception
4252    (ADA_EXCEPTION_RENAMING), package (ADA_PACKAGE_RENAMING), or
4253    subprogram (ADA_SUBPROGRAM_RENAMING).  Does no allocation; the
4254    strings returned in *RENAMED_ENTITY and *RENAMING_EXPR should not be
4255    deallocated.  The values of RENAMED_ENTITY, LEN, or RENAMING_EXPR
4256    may be NULL, in which case they are not assigned.
4257
4258    [Currently, however, GCC does not generate subprogram renamings.]  */
4259
4260 enum ada_renaming_category
4261 ada_parse_renaming (struct symbol *sym,
4262                     const char **renamed_entity, int *len, 
4263                     const char **renaming_expr)
4264 {
4265   enum ada_renaming_category kind;
4266   const char *info;
4267   const char *suffix;
4268
4269   if (sym == NULL)
4270     return ADA_NOT_RENAMING;
4271   switch (SYMBOL_CLASS (sym)) 
4272     {
4273     default:
4274       return ADA_NOT_RENAMING;
4275     case LOC_LOCAL:
4276     case LOC_STATIC:
4277     case LOC_COMPUTED:
4278     case LOC_OPTIMIZED_OUT:
4279       info = strstr (SYMBOL_LINKAGE_NAME (sym), "___XR");
4280       if (info == NULL)
4281         return ADA_NOT_RENAMING;
4282       switch (info[5])
4283         {
4284         case '_':
4285           kind = ADA_OBJECT_RENAMING;
4286           info += 6;
4287           break;
4288         case 'E':
4289           kind = ADA_EXCEPTION_RENAMING;
4290           info += 7;
4291           break;
4292         case 'P':
4293           kind = ADA_PACKAGE_RENAMING;
4294           info += 7;
4295           break;
4296         case 'S':
4297           kind = ADA_SUBPROGRAM_RENAMING;
4298           info += 7;
4299           break;
4300         default:
4301           return ADA_NOT_RENAMING;
4302         }
4303     }
4304
4305   if (renamed_entity != NULL)
4306     *renamed_entity = info;
4307   suffix = strstr (info, "___XE");
4308   if (suffix == NULL || suffix == info)
4309     return ADA_NOT_RENAMING;
4310   if (len != NULL)
4311     *len = strlen (info) - strlen (suffix);
4312   suffix += 5;
4313   if (renaming_expr != NULL)
4314     *renaming_expr = suffix;
4315   return kind;
4316 }
4317
4318 /* Compute the value of the given RENAMING_SYM, which is expected to
4319    be a symbol encoding a renaming expression.  BLOCK is the block
4320    used to evaluate the renaming.  */
4321
4322 static struct value *
4323 ada_read_renaming_var_value (struct symbol *renaming_sym,
4324                              const struct block *block)
4325 {
4326   const char *sym_name;
4327
4328   sym_name = SYMBOL_LINKAGE_NAME (renaming_sym);
4329   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
4330   return evaluate_expression (expr.get ());
4331 }
4332 \f
4333
4334                                 /* Evaluation: Function Calls */
4335
4336 /* Return an lvalue containing the value VAL.  This is the identity on
4337    lvalues, and otherwise has the side-effect of allocating memory
4338    in the inferior where a copy of the value contents is copied.  */
4339
4340 static struct value *
4341 ensure_lval (struct value *val)
4342 {
4343   if (VALUE_LVAL (val) == not_lval
4344       || VALUE_LVAL (val) == lval_internalvar)
4345     {
4346       int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
4347       const CORE_ADDR addr =
4348         value_as_long (value_allocate_space_in_inferior (len));
4349
4350       VALUE_LVAL (val) = lval_memory;
4351       set_value_address (val, addr);
4352       write_memory (addr, value_contents (val), len);
4353     }
4354
4355   return val;
4356 }
4357
4358 /* Return the value ACTUAL, converted to be an appropriate value for a
4359    formal of type FORMAL_TYPE.  Use *SP as a stack pointer for
4360    allocating any necessary descriptors (fat pointers), or copies of
4361    values not residing in memory, updating it as needed.  */
4362
4363 struct value *
4364 ada_convert_actual (struct value *actual, struct type *formal_type0)
4365 {
4366   struct type *actual_type = ada_check_typedef (value_type (actual));
4367   struct type *formal_type = ada_check_typedef (formal_type0);
4368   struct type *formal_target =
4369     TYPE_CODE (formal_type) == TYPE_CODE_PTR
4370     ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
4371   struct type *actual_target =
4372     TYPE_CODE (actual_type) == TYPE_CODE_PTR
4373     ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
4374
4375   if (ada_is_array_descriptor_type (formal_target)
4376       && TYPE_CODE (actual_target) == TYPE_CODE_ARRAY)
4377     return make_array_descriptor (formal_type, actual);
4378   else if (TYPE_CODE (formal_type) == TYPE_CODE_PTR
4379            || TYPE_CODE (formal_type) == TYPE_CODE_REF)
4380     {
4381       struct value *result;
4382
4383       if (TYPE_CODE (formal_target) == TYPE_CODE_ARRAY
4384           && ada_is_array_descriptor_type (actual_target))
4385         result = desc_data (actual);
4386       else if (TYPE_CODE (formal_type) != TYPE_CODE_PTR)
4387         {
4388           if (VALUE_LVAL (actual) != lval_memory)
4389             {
4390               struct value *val;
4391
4392               actual_type = ada_check_typedef (value_type (actual));
4393               val = allocate_value (actual_type);
4394               memcpy ((char *) value_contents_raw (val),
4395                       (char *) value_contents (actual),
4396                       TYPE_LENGTH (actual_type));
4397               actual = ensure_lval (val);
4398             }
4399           result = value_addr (actual);
4400         }
4401       else
4402         return actual;
4403       return value_cast_pointers (formal_type, result, 0);
4404     }
4405   else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR)
4406     return ada_value_ind (actual);
4407   else if (ada_is_aligner_type (formal_type))
4408     {
4409       /* We need to turn this parameter into an aligner type
4410          as well.  */
4411       struct value *aligner = allocate_value (formal_type);
4412       struct value *component = ada_value_struct_elt (aligner, "F", 0);
4413
4414       value_assign_to_component (aligner, component, actual);
4415       return aligner;
4416     }
4417
4418   return actual;
4419 }
4420
4421 /* Convert VALUE (which must be an address) to a CORE_ADDR that is a pointer of
4422    type TYPE.  This is usually an inefficient no-op except on some targets
4423    (such as AVR) where the representation of a pointer and an address
4424    differs.  */
4425
4426 static CORE_ADDR
4427 value_pointer (struct value *value, struct type *type)
4428 {
4429   struct gdbarch *gdbarch = get_type_arch (type);
4430   unsigned len = TYPE_LENGTH (type);
4431   gdb_byte *buf = (gdb_byte *) alloca (len);
4432   CORE_ADDR addr;
4433
4434   addr = value_address (value);
4435   gdbarch_address_to_pointer (gdbarch, type, buf, addr);
4436   addr = extract_unsigned_integer (buf, len, gdbarch_byte_order (gdbarch));
4437   return addr;
4438 }
4439
4440
4441 /* Push a descriptor of type TYPE for array value ARR on the stack at
4442    *SP, updating *SP to reflect the new descriptor.  Return either
4443    an lvalue representing the new descriptor, or (if TYPE is a pointer-
4444    to-descriptor type rather than a descriptor type), a struct value *
4445    representing a pointer to this descriptor.  */
4446
4447 static struct value *
4448 make_array_descriptor (struct type *type, struct value *arr)
4449 {
4450   struct type *bounds_type = desc_bounds_type (type);
4451   struct type *desc_type = desc_base_type (type);
4452   struct value *descriptor = allocate_value (desc_type);
4453   struct value *bounds = allocate_value (bounds_type);
4454   int i;
4455
4456   for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
4457        i > 0; i -= 1)
4458     {
4459       modify_field (value_type (bounds), value_contents_writeable (bounds),
4460                     ada_array_bound (arr, i, 0),
4461                     desc_bound_bitpos (bounds_type, i, 0),
4462                     desc_bound_bitsize (bounds_type, i, 0));
4463       modify_field (value_type (bounds), value_contents_writeable (bounds),
4464                     ada_array_bound (arr, i, 1),
4465                     desc_bound_bitpos (bounds_type, i, 1),
4466                     desc_bound_bitsize (bounds_type, i, 1));
4467     }
4468
4469   bounds = ensure_lval (bounds);
4470
4471   modify_field (value_type (descriptor),
4472                 value_contents_writeable (descriptor),
4473                 value_pointer (ensure_lval (arr),
4474                                TYPE_FIELD_TYPE (desc_type, 0)),
4475                 fat_pntr_data_bitpos (desc_type),
4476                 fat_pntr_data_bitsize (desc_type));
4477
4478   modify_field (value_type (descriptor),
4479                 value_contents_writeable (descriptor),
4480                 value_pointer (bounds,
4481                                TYPE_FIELD_TYPE (desc_type, 1)),
4482                 fat_pntr_bounds_bitpos (desc_type),
4483                 fat_pntr_bounds_bitsize (desc_type));
4484
4485   descriptor = ensure_lval (descriptor);
4486
4487   if (TYPE_CODE (type) == TYPE_CODE_PTR)
4488     return value_addr (descriptor);
4489   else
4490     return descriptor;
4491 }
4492 \f
4493                                 /* Symbol Cache Module */
4494
4495 /* Performance measurements made as of 2010-01-15 indicate that
4496    this cache does bring some noticeable improvements.  Depending
4497    on the type of entity being printed, the cache can make it as much
4498    as an order of magnitude faster than without it.
4499
4500    The descriptive type DWARF extension has significantly reduced
4501    the need for this cache, at least when DWARF is being used.  However,
4502    even in this case, some expensive name-based symbol searches are still
4503    sometimes necessary - to find an XVZ variable, mostly.  */
4504
4505 /* Initialize the contents of SYM_CACHE.  */
4506
4507 static void
4508 ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
4509 {
4510   obstack_init (&sym_cache->cache_space);
4511   memset (sym_cache->root, '\000', sizeof (sym_cache->root));
4512 }
4513
4514 /* Free the memory used by SYM_CACHE.  */
4515
4516 static void
4517 ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
4518 {
4519   obstack_free (&sym_cache->cache_space, NULL);
4520   xfree (sym_cache);
4521 }
4522
4523 /* Return the symbol cache associated to the given program space PSPACE.
4524    If not allocated for this PSPACE yet, allocate and initialize one.  */
4525
4526 static struct ada_symbol_cache *
4527 ada_get_symbol_cache (struct program_space *pspace)
4528 {
4529   struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
4530
4531   if (pspace_data->sym_cache == NULL)
4532     {
4533       pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
4534       ada_init_symbol_cache (pspace_data->sym_cache);
4535     }
4536
4537   return pspace_data->sym_cache;
4538 }
4539
4540 /* Clear all entries from the symbol cache.  */
4541
4542 static void
4543 ada_clear_symbol_cache (void)
4544 {
4545   struct ada_symbol_cache *sym_cache
4546     = ada_get_symbol_cache (current_program_space);
4547
4548   obstack_free (&sym_cache->cache_space, NULL);
4549   ada_init_symbol_cache (sym_cache);
4550 }
4551
4552 /* Search our cache for an entry matching NAME and DOMAIN.
4553    Return it if found, or NULL otherwise.  */
4554
4555 static struct cache_entry **
4556 find_entry (const char *name, domain_enum domain)
4557 {
4558   struct ada_symbol_cache *sym_cache
4559     = ada_get_symbol_cache (current_program_space);
4560   int h = msymbol_hash (name) % HASH_SIZE;
4561   struct cache_entry **e;
4562
4563   for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
4564     {
4565       if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
4566         return e;
4567     }
4568   return NULL;
4569 }
4570
4571 /* Search the symbol cache for an entry matching NAME and DOMAIN.
4572    Return 1 if found, 0 otherwise.
4573
4574    If an entry was found and SYM is not NULL, set *SYM to the entry's
4575    SYM.  Same principle for BLOCK if not NULL.  */
4576
4577 static int
4578 lookup_cached_symbol (const char *name, domain_enum domain,
4579                       struct symbol **sym, const struct block **block)
4580 {
4581   struct cache_entry **e = find_entry (name, domain);
4582
4583   if (e == NULL)
4584     return 0;
4585   if (sym != NULL)
4586     *sym = (*e)->sym;
4587   if (block != NULL)
4588     *block = (*e)->block;
4589   return 1;
4590 }
4591
4592 /* Assuming that (SYM, BLOCK) is the result of the lookup of NAME
4593    in domain DOMAIN, save this result in our symbol cache.  */
4594
4595 static void
4596 cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
4597               const struct block *block)
4598 {
4599   struct ada_symbol_cache *sym_cache
4600     = ada_get_symbol_cache (current_program_space);
4601   int h;
4602   char *copy;
4603   struct cache_entry *e;
4604
4605   /* Symbols for builtin types don't have a block.
4606      For now don't cache such symbols.  */
4607   if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
4608     return;
4609
4610   /* If the symbol is a local symbol, then do not cache it, as a search
4611      for that symbol depends on the context.  To determine whether
4612      the symbol is local or not, we check the block where we found it
4613      against the global and static blocks of its associated symtab.  */
4614   if (sym
4615       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4616                             GLOBAL_BLOCK) != block
4617       && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
4618                             STATIC_BLOCK) != block)
4619     return;
4620
4621   h = msymbol_hash (name) % HASH_SIZE;
4622   e = XOBNEW (&sym_cache->cache_space, cache_entry);
4623   e->next = sym_cache->root[h];
4624   sym_cache->root[h] = e;
4625   e->name = copy
4626     = (char *) obstack_alloc (&sym_cache->cache_space, strlen (name) + 1);
4627   strcpy (copy, name);
4628   e->sym = sym;
4629   e->domain = domain;
4630   e->block = block;
4631 }
4632 \f
4633                                 /* Symbol Lookup */
4634
4635 /* Return the symbol name match type that should be used used when
4636    searching for all symbols matching LOOKUP_NAME.
4637
4638    LOOKUP_NAME is expected to be a symbol name after transformation
4639    for Ada lookups.  */
4640
4641 static symbol_name_match_type
4642 name_match_type_from_name (const char *lookup_name)
4643 {
4644   return (strstr (lookup_name, "__") == NULL
4645           ? symbol_name_match_type::WILD
4646           : symbol_name_match_type::FULL);
4647 }
4648
4649 /* Return the result of a standard (literal, C-like) lookup of NAME in
4650    given DOMAIN, visible from lexical block BLOCK.  */
4651
4652 static struct symbol *
4653 standard_lookup (const char *name, const struct block *block,
4654                  domain_enum domain)
4655 {
4656   /* Initialize it just to avoid a GCC false warning.  */
4657   struct block_symbol sym = {};
4658
4659   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
4660     return sym.symbol;
4661   ada_lookup_encoded_symbol (name, block, domain, &sym);
4662   cache_symbol (name, domain, sym.symbol, sym.block);
4663   return sym.symbol;
4664 }
4665
4666
4667 /* Non-zero iff there is at least one non-function/non-enumeral symbol
4668    in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
4669    since they contend in overloading in the same way.  */
4670 static int
4671 is_nonfunction (struct block_symbol syms[], int n)
4672 {
4673   int i;
4674
4675   for (i = 0; i < n; i += 1)
4676     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_FUNC
4677         && (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM
4678             || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
4679       return 1;
4680
4681   return 0;
4682 }
4683
4684 /* If true (non-zero), then TYPE0 and TYPE1 represent equivalent
4685    struct types.  Otherwise, they may not.  */
4686
4687 static int
4688 equiv_types (struct type *type0, struct type *type1)
4689 {
4690   if (type0 == type1)
4691     return 1;
4692   if (type0 == NULL || type1 == NULL
4693       || TYPE_CODE (type0) != TYPE_CODE (type1))
4694     return 0;
4695   if ((TYPE_CODE (type0) == TYPE_CODE_STRUCT
4696        || TYPE_CODE (type0) == TYPE_CODE_ENUM)
4697       && ada_type_name (type0) != NULL && ada_type_name (type1) != NULL
4698       && strcmp (ada_type_name (type0), ada_type_name (type1)) == 0)
4699     return 1;
4700
4701   return 0;
4702 }
4703
4704 /* True iff SYM0 represents the same entity as SYM1, or one that is
4705    no more defined than that of SYM1.  */
4706
4707 static int
4708 lesseq_defined_than (struct symbol *sym0, struct symbol *sym1)
4709 {
4710   if (sym0 == sym1)
4711     return 1;
4712   if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
4713       || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
4714     return 0;
4715
4716   switch (SYMBOL_CLASS (sym0))
4717     {
4718     case LOC_UNDEF:
4719       return 1;
4720     case LOC_TYPEDEF:
4721       {
4722         struct type *type0 = SYMBOL_TYPE (sym0);
4723         struct type *type1 = SYMBOL_TYPE (sym1);
4724         const char *name0 = SYMBOL_LINKAGE_NAME (sym0);
4725         const char *name1 = SYMBOL_LINKAGE_NAME (sym1);
4726         int len0 = strlen (name0);
4727
4728         return
4729           TYPE_CODE (type0) == TYPE_CODE (type1)
4730           && (equiv_types (type0, type1)
4731               || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
4732                   && startswith (name1 + len0, "___XV")));
4733       }
4734     case LOC_CONST:
4735       return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
4736         && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
4737     default:
4738       return 0;
4739     }
4740 }
4741
4742 /* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
4743    records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
4744
4745 static void
4746 add_defn_to_vec (struct obstack *obstackp,
4747                  struct symbol *sym,
4748                  const struct block *block)
4749 {
4750   int i;
4751   struct block_symbol *prevDefns = defns_collected (obstackp, 0);
4752
4753   /* Do not try to complete stub types, as the debugger is probably
4754      already scanning all symbols matching a certain name at the
4755      time when this function is called.  Trying to replace the stub
4756      type by its associated full type will cause us to restart a scan
4757      which may lead to an infinite recursion.  Instead, the client
4758      collecting the matching symbols will end up collecting several
4759      matches, with at least one of them complete.  It can then filter
4760      out the stub ones if needed.  */
4761
4762   for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
4763     {
4764       if (lesseq_defined_than (sym, prevDefns[i].symbol))
4765         return;
4766       else if (lesseq_defined_than (prevDefns[i].symbol, sym))
4767         {
4768           prevDefns[i].symbol = sym;
4769           prevDefns[i].block = block;
4770           return;
4771         }
4772     }
4773
4774   {
4775     struct block_symbol info;
4776
4777     info.symbol = sym;
4778     info.block = block;
4779     obstack_grow (obstackp, &info, sizeof (struct block_symbol));
4780   }
4781 }
4782
4783 /* Number of block_symbol structures currently collected in current vector in
4784    OBSTACKP.  */
4785
4786 static int
4787 num_defns_collected (struct obstack *obstackp)
4788 {
4789   return obstack_object_size (obstackp) / sizeof (struct block_symbol);
4790 }
4791
4792 /* Vector of block_symbol structures currently collected in current vector in
4793    OBSTACKP.  If FINISH, close off the vector and return its final address.  */
4794
4795 static struct block_symbol *
4796 defns_collected (struct obstack *obstackp, int finish)
4797 {
4798   if (finish)
4799     return (struct block_symbol *) obstack_finish (obstackp);
4800   else
4801     return (struct block_symbol *) obstack_base (obstackp);
4802 }
4803
4804 /* Return a bound minimal symbol matching NAME according to Ada
4805    decoding rules.  Returns an invalid symbol if there is no such
4806    minimal symbol.  Names prefixed with "standard__" are handled
4807    specially: "standard__" is first stripped off, and only static and
4808    global symbols are searched.  */
4809
4810 struct bound_minimal_symbol
4811 ada_lookup_simple_minsym (const char *name)
4812 {
4813   struct bound_minimal_symbol result;
4814
4815   memset (&result, 0, sizeof (result));
4816
4817   symbol_name_match_type match_type = name_match_type_from_name (name);
4818   lookup_name_info lookup_name (name, match_type);
4819
4820   symbol_name_matcher_ftype *match_name
4821     = ada_get_symbol_name_matcher (lookup_name);
4822
4823   for (objfile *objfile : current_program_space->objfiles ())
4824     {
4825       for (minimal_symbol *msymbol : objfile->msymbols ())
4826         {
4827           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4828               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4829             {
4830               result.minsym = msymbol;
4831               result.objfile = objfile;
4832               break;
4833             }
4834         }
4835     }
4836
4837   return result;
4838 }
4839
4840 /* Return all the bound minimal symbols matching NAME according to Ada
4841    decoding rules.  Returns an empty vector if there is no such
4842    minimal symbol.  Names prefixed with "standard__" are handled
4843    specially: "standard__" is first stripped off, and only static and
4844    global symbols are searched.  */
4845
4846 static std::vector<struct bound_minimal_symbol>
4847 ada_lookup_simple_minsyms (const char *name)
4848 {
4849   std::vector<struct bound_minimal_symbol> result;
4850
4851   symbol_name_match_type match_type = name_match_type_from_name (name);
4852   lookup_name_info lookup_name (name, match_type);
4853
4854   symbol_name_matcher_ftype *match_name
4855     = ada_get_symbol_name_matcher (lookup_name);
4856
4857   for (objfile *objfile : current_program_space->objfiles ())
4858     {
4859       for (minimal_symbol *msymbol : objfile->msymbols ())
4860         {
4861           if (match_name (MSYMBOL_LINKAGE_NAME (msymbol), lookup_name, NULL)
4862               && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
4863             result.push_back ({msymbol, objfile});
4864         }
4865     }
4866
4867   return result;
4868 }
4869
4870 /* For all subprograms that statically enclose the subprogram of the
4871    selected frame, add symbols matching identifier NAME in DOMAIN
4872    and their blocks to the list of data in OBSTACKP, as for
4873    ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
4874    with a wildcard prefix.  */
4875
4876 static void
4877 add_symbols_from_enclosing_procs (struct obstack *obstackp,
4878                                   const lookup_name_info &lookup_name,
4879                                   domain_enum domain)
4880 {
4881 }
4882
4883 /* True if TYPE is definitely an artificial type supplied to a symbol
4884    for which no debugging information was given in the symbol file.  */
4885
4886 static int
4887 is_nondebugging_type (struct type *type)
4888 {
4889   const char *name = ada_type_name (type);
4890
4891   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
4892 }
4893
4894 /* Return nonzero if TYPE1 and TYPE2 are two enumeration types
4895    that are deemed "identical" for practical purposes.
4896
4897    This function assumes that TYPE1 and TYPE2 are both TYPE_CODE_ENUM
4898    types and that their number of enumerals is identical (in other
4899    words, TYPE_NFIELDS (type1) == TYPE_NFIELDS (type2)).  */
4900
4901 static int
4902 ada_identical_enum_types_p (struct type *type1, struct type *type2)
4903 {
4904   int i;
4905
4906   /* The heuristic we use here is fairly conservative.  We consider
4907      that 2 enumerate types are identical if they have the same
4908      number of enumerals and that all enumerals have the same
4909      underlying value and name.  */
4910
4911   /* All enums in the type should have an identical underlying value.  */
4912   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4913     if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
4914       return 0;
4915
4916   /* All enumerals should also have the same name (modulo any numerical
4917      suffix).  */
4918   for (i = 0; i < TYPE_NFIELDS (type1); i++)
4919     {
4920       const char *name_1 = TYPE_FIELD_NAME (type1, i);
4921       const char *name_2 = TYPE_FIELD_NAME (type2, i);
4922       int len_1 = strlen (name_1);
4923       int len_2 = strlen (name_2);
4924
4925       ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
4926       ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
4927       if (len_1 != len_2
4928           || strncmp (TYPE_FIELD_NAME (type1, i),
4929                       TYPE_FIELD_NAME (type2, i),
4930                       len_1) != 0)
4931         return 0;
4932     }
4933
4934   return 1;
4935 }
4936
4937 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
4938    that are deemed "identical" for practical purposes.  Sometimes,
4939    enumerals are not strictly identical, but their types are so similar
4940    that they can be considered identical.
4941
4942    For instance, consider the following code:
4943
4944       type Color is (Black, Red, Green, Blue, White);
4945       type RGB_Color is new Color range Red .. Blue;
4946
4947    Type RGB_Color is a subrange of an implicit type which is a copy
4948    of type Color. If we call that implicit type RGB_ColorB ("B" is
4949    for "Base Type"), then type RGB_ColorB is a copy of type Color.
4950    As a result, when an expression references any of the enumeral
4951    by name (Eg. "print green"), the expression is technically
4952    ambiguous and the user should be asked to disambiguate. But
4953    doing so would only hinder the user, since it wouldn't matter
4954    what choice he makes, the outcome would always be the same.
4955    So, for practical purposes, we consider them as the same.  */
4956
4957 static int
4958 symbols_are_identical_enums (const std::vector<struct block_symbol> &syms)
4959 {
4960   int i;
4961
4962   /* Before performing a thorough comparison check of each type,
4963      we perform a series of inexpensive checks.  We expect that these
4964      checks will quickly fail in the vast majority of cases, and thus
4965      help prevent the unnecessary use of a more expensive comparison.
4966      Said comparison also expects us to make some of these checks
4967      (see ada_identical_enum_types_p).  */
4968
4969   /* Quick check: All symbols should have an enum type.  */
4970   for (i = 0; i < syms.size (); i++)
4971     if (TYPE_CODE (SYMBOL_TYPE (syms[i].symbol)) != TYPE_CODE_ENUM)
4972       return 0;
4973
4974   /* Quick check: They should all have the same value.  */
4975   for (i = 1; i < syms.size (); i++)
4976     if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
4977       return 0;
4978
4979   /* Quick check: They should all have the same number of enumerals.  */
4980   for (i = 1; i < syms.size (); i++)
4981     if (TYPE_NFIELDS (SYMBOL_TYPE (syms[i].symbol))
4982         != TYPE_NFIELDS (SYMBOL_TYPE (syms[0].symbol)))
4983       return 0;
4984
4985   /* All the sanity checks passed, so we might have a set of
4986      identical enumeration types.  Perform a more complete
4987      comparison of the type of each symbol.  */
4988   for (i = 1; i < syms.size (); i++)
4989     if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
4990                                      SYMBOL_TYPE (syms[0].symbol)))
4991       return 0;
4992
4993   return 1;
4994 }
4995
4996 /* Remove any non-debugging symbols in SYMS that definitely
4997    duplicate other symbols in the list (The only case I know of where
4998    this happens is when object files containing stabs-in-ecoff are
4999    linked with files containing ordinary ecoff debugging symbols (or no
5000    debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
5001    Returns the number of items in the modified list.  */
5002
5003 static int
5004 remove_extra_symbols (std::vector<struct block_symbol> *syms)
5005 {
5006   int i, j;
5007
5008   /* We should never be called with less than 2 symbols, as there
5009      cannot be any extra symbol in that case.  But it's easy to
5010      handle, since we have nothing to do in that case.  */
5011   if (syms->size () < 2)
5012     return syms->size ();
5013
5014   i = 0;
5015   while (i < syms->size ())
5016     {
5017       int remove_p = 0;
5018
5019       /* If two symbols have the same name and one of them is a stub type,
5020          the get rid of the stub.  */
5021
5022       if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
5023           && SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL)
5024         {
5025           for (j = 0; j < syms->size (); j++)
5026             {
5027               if (j != i
5028                   && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
5029                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5030                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5031                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0)
5032                 remove_p = 1;
5033             }
5034         }
5035
5036       /* Two symbols with the same name, same class and same address
5037          should be identical.  */
5038
5039       else if (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol) != NULL
5040           && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
5041           && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
5042         {
5043           for (j = 0; j < syms->size (); j += 1)
5044             {
5045               if (i != j
5046                   && SYMBOL_LINKAGE_NAME ((*syms)[j].symbol) != NULL
5047                   && strcmp (SYMBOL_LINKAGE_NAME ((*syms)[i].symbol),
5048                              SYMBOL_LINKAGE_NAME ((*syms)[j].symbol)) == 0
5049                   && SYMBOL_CLASS ((*syms)[i].symbol)
5050                        == SYMBOL_CLASS ((*syms)[j].symbol)
5051                   && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
5052                   == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
5053                 remove_p = 1;
5054             }
5055         }
5056       
5057       if (remove_p)
5058         syms->erase (syms->begin () + i);
5059
5060       i += 1;
5061     }
5062
5063   /* If all the remaining symbols are identical enumerals, then
5064      just keep the first one and discard the rest.
5065
5066      Unlike what we did previously, we do not discard any entry
5067      unless they are ALL identical.  This is because the symbol
5068      comparison is not a strict comparison, but rather a practical
5069      comparison.  If all symbols are considered identical, then
5070      we can just go ahead and use the first one and discard the rest.
5071      But if we cannot reduce the list to a single element, we have
5072      to ask the user to disambiguate anyways.  And if we have to
5073      present a multiple-choice menu, it's less confusing if the list
5074      isn't missing some choices that were identical and yet distinct.  */
5075   if (symbols_are_identical_enums (*syms))
5076     syms->resize (1);
5077
5078   return syms->size ();
5079 }
5080
5081 /* Given a type that corresponds to a renaming entity, use the type name
5082    to extract the scope (package name or function name, fully qualified,
5083    and following the GNAT encoding convention) where this renaming has been
5084    defined.  */
5085
5086 static std::string
5087 xget_renaming_scope (struct type *renaming_type)
5088 {
5089   /* The renaming types adhere to the following convention:
5090      <scope>__<rename>___<XR extension>.
5091      So, to extract the scope, we search for the "___XR" extension,
5092      and then backtrack until we find the first "__".  */
5093
5094   const char *name = TYPE_NAME (renaming_type);
5095   const char *suffix = strstr (name, "___XR");
5096   const char *last;
5097
5098   /* Now, backtrack a bit until we find the first "__".  Start looking
5099      at suffix - 3, as the <rename> part is at least one character long.  */
5100
5101   for (last = suffix - 3; last > name; last--)
5102     if (last[0] == '_' && last[1] == '_')
5103       break;
5104
5105   /* Make a copy of scope and return it.  */
5106   return std::string (name, last);
5107 }
5108
5109 /* Return nonzero if NAME corresponds to a package name.  */
5110
5111 static int
5112 is_package_name (const char *name)
5113 {
5114   /* Here, We take advantage of the fact that no symbols are generated
5115      for packages, while symbols are generated for each function.
5116      So the condition for NAME represent a package becomes equivalent
5117      to NAME not existing in our list of symbols.  There is only one
5118      small complication with library-level functions (see below).  */
5119
5120   /* If it is a function that has not been defined at library level,
5121      then we should be able to look it up in the symbols.  */
5122   if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
5123     return 0;
5124
5125   /* Library-level function names start with "_ada_".  See if function
5126      "_ada_" followed by NAME can be found.  */
5127
5128   /* Do a quick check that NAME does not contain "__", since library-level
5129      functions names cannot contain "__" in them.  */
5130   if (strstr (name, "__") != NULL)
5131     return 0;
5132
5133   std::string fun_name = string_printf ("_ada_%s", name);
5134
5135   return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
5136 }
5137
5138 /* Return nonzero if SYM corresponds to a renaming entity that is
5139    not visible from FUNCTION_NAME.  */
5140
5141 static int
5142 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
5143 {
5144   if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
5145     return 0;
5146
5147   std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
5148
5149   /* If the rename has been defined in a package, then it is visible.  */
5150   if (is_package_name (scope.c_str ()))
5151     return 0;
5152
5153   /* Check that the rename is in the current function scope by checking
5154      that its name starts with SCOPE.  */
5155
5156   /* If the function name starts with "_ada_", it means that it is
5157      a library-level function.  Strip this prefix before doing the
5158      comparison, as the encoding for the renaming does not contain
5159      this prefix.  */
5160   if (startswith (function_name, "_ada_"))
5161     function_name += 5;
5162
5163   return !startswith (function_name, scope.c_str ());
5164 }
5165
5166 /* Remove entries from SYMS that corresponds to a renaming entity that
5167    is not visible from the function associated with CURRENT_BLOCK or
5168    that is superfluous due to the presence of more specific renaming
5169    information.  Places surviving symbols in the initial entries of
5170    SYMS and returns the number of surviving symbols.
5171    
5172    Rationale:
5173    First, in cases where an object renaming is implemented as a
5174    reference variable, GNAT may produce both the actual reference
5175    variable and the renaming encoding.  In this case, we discard the
5176    latter.
5177
5178    Second, GNAT emits a type following a specified encoding for each renaming
5179    entity.  Unfortunately, STABS currently does not support the definition
5180    of types that are local to a given lexical block, so all renamings types
5181    are emitted at library level.  As a consequence, if an application
5182    contains two renaming entities using the same name, and a user tries to
5183    print the value of one of these entities, the result of the ada symbol
5184    lookup will also contain the wrong renaming type.
5185
5186    This function partially covers for this limitation by attempting to
5187    remove from the SYMS list renaming symbols that should be visible
5188    from CURRENT_BLOCK.  However, there does not seem be a 100% reliable
5189    method with the current information available.  The implementation
5190    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
5191    
5192       - When the user tries to print a rename in a function while there
5193         is another rename entity defined in a package:  Normally, the
5194         rename in the function has precedence over the rename in the
5195         package, so the latter should be removed from the list.  This is
5196         currently not the case.
5197         
5198       - This function will incorrectly remove valid renames if
5199         the CURRENT_BLOCK corresponds to a function which symbol name
5200         has been changed by an "Export" pragma.  As a consequence,
5201         the user will be unable to print such rename entities.  */
5202
5203 static int
5204 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
5205                              const struct block *current_block)
5206 {
5207   struct symbol *current_function;
5208   const char *current_function_name;
5209   int i;
5210   int is_new_style_renaming;
5211
5212   /* If there is both a renaming foo___XR... encoded as a variable and
5213      a simple variable foo in the same block, discard the latter.
5214      First, zero out such symbols, then compress.  */
5215   is_new_style_renaming = 0;
5216   for (i = 0; i < syms->size (); i += 1)
5217     {
5218       struct symbol *sym = (*syms)[i].symbol;
5219       const struct block *block = (*syms)[i].block;
5220       const char *name;
5221       const char *suffix;
5222
5223       if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
5224         continue;
5225       name = SYMBOL_LINKAGE_NAME (sym);
5226       suffix = strstr (name, "___XR");
5227
5228       if (suffix != NULL)
5229         {
5230           int name_len = suffix - name;
5231           int j;
5232
5233           is_new_style_renaming = 1;
5234           for (j = 0; j < syms->size (); j += 1)
5235             if (i != j && (*syms)[j].symbol != NULL
5236                 && strncmp (name, SYMBOL_LINKAGE_NAME ((*syms)[j].symbol),
5237                             name_len) == 0
5238                 && block == (*syms)[j].block)
5239               (*syms)[j].symbol = NULL;
5240         }
5241     }
5242   if (is_new_style_renaming)
5243     {
5244       int j, k;
5245
5246       for (j = k = 0; j < syms->size (); j += 1)
5247         if ((*syms)[j].symbol != NULL)
5248             {
5249               (*syms)[k] = (*syms)[j];
5250               k += 1;
5251             }
5252       return k;
5253     }
5254
5255   /* Extract the function name associated to CURRENT_BLOCK.
5256      Abort if unable to do so.  */
5257
5258   if (current_block == NULL)
5259     return syms->size ();
5260
5261   current_function = block_linkage_function (current_block);
5262   if (current_function == NULL)
5263     return syms->size ();
5264
5265   current_function_name = SYMBOL_LINKAGE_NAME (current_function);
5266   if (current_function_name == NULL)
5267     return syms->size ();
5268
5269   /* Check each of the symbols, and remove it from the list if it is
5270      a type corresponding to a renaming that is out of the scope of
5271      the current block.  */
5272
5273   i = 0;
5274   while (i < syms->size ())
5275     {
5276       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
5277           == ADA_OBJECT_RENAMING
5278           && old_renaming_is_invisible ((*syms)[i].symbol,
5279                                         current_function_name))
5280         syms->erase (syms->begin () + i);
5281       else
5282         i += 1;
5283     }
5284
5285   return syms->size ();
5286 }
5287
5288 /* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
5289    whose name and domain match NAME and DOMAIN respectively.
5290    If no match was found, then extend the search to "enclosing"
5291    routines (in other words, if we're inside a nested function,
5292    search the symbols defined inside the enclosing functions).
5293    If WILD_MATCH_P is nonzero, perform the naming matching in
5294    "wild" mode (see function "wild_match" for more info).
5295
5296    Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
5297
5298 static void
5299 ada_add_local_symbols (struct obstack *obstackp,
5300                        const lookup_name_info &lookup_name,
5301                        const struct block *block, domain_enum domain)
5302 {
5303   int block_depth = 0;
5304
5305   while (block != NULL)
5306     {
5307       block_depth += 1;
5308       ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5309
5310       /* If we found a non-function match, assume that's the one.  */
5311       if (is_nonfunction (defns_collected (obstackp, 0),
5312                           num_defns_collected (obstackp)))
5313         return;
5314
5315       block = BLOCK_SUPERBLOCK (block);
5316     }
5317
5318   /* If no luck so far, try to find NAME as a local symbol in some lexically
5319      enclosing subprogram.  */
5320   if (num_defns_collected (obstackp) == 0 && block_depth > 2)
5321     add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
5322 }
5323
5324 /* An object of this type is used as the user_data argument when
5325    calling the map_matching_symbols method.  */
5326
5327 struct match_data
5328 {
5329   struct objfile *objfile;
5330   struct obstack *obstackp;
5331   struct symbol *arg_sym;
5332   int found_sym;
5333 };
5334
5335 /* A callback for add_nonlocal_symbols that adds SYM, found in BLOCK,
5336    to a list of symbols.  DATA0 is a pointer to a struct match_data *
5337    containing the obstack that collects the symbol list, the file that SYM
5338    must come from, a flag indicating whether a non-argument symbol has
5339    been found in the current block, and the last argument symbol
5340    passed in SYM within the current block (if any).  When SYM is null,
5341    marking the end of a block, the argument symbol is added if no
5342    other has been found.  */
5343
5344 static int
5345 aux_add_nonlocal_symbols (const struct block *block, struct symbol *sym,
5346                           void *data0)
5347 {
5348   struct match_data *data = (struct match_data *) data0;
5349   
5350   if (sym == NULL)
5351     {
5352       if (!data->found_sym && data->arg_sym != NULL) 
5353         add_defn_to_vec (data->obstackp,
5354                          fixup_symbol_section (data->arg_sym, data->objfile),
5355                          block);
5356       data->found_sym = 0;
5357       data->arg_sym = NULL;
5358     }
5359   else 
5360     {
5361       if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
5362         return 0;
5363       else if (SYMBOL_IS_ARGUMENT (sym))
5364         data->arg_sym = sym;
5365       else
5366         {
5367           data->found_sym = 1;
5368           add_defn_to_vec (data->obstackp,
5369                            fixup_symbol_section (sym, data->objfile),
5370                            block);
5371         }
5372     }
5373   return 0;
5374 }
5375
5376 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
5377    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
5378    symbols to OBSTACKP.  Return whether we found such symbols.  */
5379
5380 static int
5381 ada_add_block_renamings (struct obstack *obstackp,
5382                          const struct block *block,
5383                          const lookup_name_info &lookup_name,
5384                          domain_enum domain)
5385 {
5386   struct using_direct *renaming;
5387   int defns_mark = num_defns_collected (obstackp);
5388
5389   symbol_name_matcher_ftype *name_match
5390     = ada_get_symbol_name_matcher (lookup_name);
5391
5392   for (renaming = block_using (block);
5393        renaming != NULL;
5394        renaming = renaming->next)
5395     {
5396       const char *r_name;
5397
5398       /* Avoid infinite recursions: skip this renaming if we are actually
5399          already traversing it.
5400
5401          Currently, symbol lookup in Ada don't use the namespace machinery from
5402          C++/Fortran support: skip namespace imports that use them.  */
5403       if (renaming->searched
5404           || (renaming->import_src != NULL
5405               && renaming->import_src[0] != '\0')
5406           || (renaming->import_dest != NULL
5407               && renaming->import_dest[0] != '\0'))
5408         continue;
5409       renaming->searched = 1;
5410
5411       /* TODO: here, we perform another name-based symbol lookup, which can
5412          pull its own multiple overloads.  In theory, we should be able to do
5413          better in this case since, in DWARF, DW_AT_import is a DIE reference,
5414          not a simple name.  But in order to do this, we would need to enhance
5415          the DWARF reader to associate a symbol to this renaming, instead of a
5416          name.  So, for now, we do something simpler: re-use the C++/Fortran
5417          namespace machinery.  */
5418       r_name = (renaming->alias != NULL
5419                 ? renaming->alias
5420                 : renaming->declaration);
5421       if (name_match (r_name, lookup_name, NULL))
5422         {
5423           lookup_name_info decl_lookup_name (renaming->declaration,
5424                                              lookup_name.match_type ());
5425           ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
5426                                1, NULL);
5427         }
5428       renaming->searched = 0;
5429     }
5430   return num_defns_collected (obstackp) != defns_mark;
5431 }
5432
5433 /* Implements compare_names, but only applying the comparision using
5434    the given CASING.  */
5435
5436 static int
5437 compare_names_with_case (const char *string1, const char *string2,
5438                          enum case_sensitivity casing)
5439 {
5440   while (*string1 != '\0' && *string2 != '\0')
5441     {
5442       char c1, c2;
5443
5444       if (isspace (*string1) || isspace (*string2))
5445         return strcmp_iw_ordered (string1, string2);
5446
5447       if (casing == case_sensitive_off)
5448         {
5449           c1 = tolower (*string1);
5450           c2 = tolower (*string2);
5451         }
5452       else
5453         {
5454           c1 = *string1;
5455           c2 = *string2;
5456         }
5457       if (c1 != c2)
5458         break;
5459
5460       string1 += 1;
5461       string2 += 1;
5462     }
5463
5464   switch (*string1)
5465     {
5466     case '(':
5467       return strcmp_iw_ordered (string1, string2);
5468     case '_':
5469       if (*string2 == '\0')
5470         {
5471           if (is_name_suffix (string1))
5472             return 0;
5473           else
5474             return 1;
5475         }
5476       /* FALLTHROUGH */
5477     default:
5478       if (*string2 == '(')
5479         return strcmp_iw_ordered (string1, string2);
5480       else
5481         {
5482           if (casing == case_sensitive_off)
5483             return tolower (*string1) - tolower (*string2);
5484           else
5485             return *string1 - *string2;
5486         }
5487     }
5488 }
5489
5490 /* Compare STRING1 to STRING2, with results as for strcmp.
5491    Compatible with strcmp_iw_ordered in that...
5492
5493        strcmp_iw_ordered (STRING1, STRING2) <= 0
5494
5495    ... implies...
5496
5497        compare_names (STRING1, STRING2) <= 0
5498
5499    (they may differ as to what symbols compare equal).  */
5500
5501 static int
5502 compare_names (const char *string1, const char *string2)
5503 {
5504   int result;
5505
5506   /* Similar to what strcmp_iw_ordered does, we need to perform
5507      a case-insensitive comparison first, and only resort to
5508      a second, case-sensitive, comparison if the first one was
5509      not sufficient to differentiate the two strings.  */
5510
5511   result = compare_names_with_case (string1, string2, case_sensitive_off);
5512   if (result == 0)
5513     result = compare_names_with_case (string1, string2, case_sensitive_on);
5514
5515   return result;
5516 }
5517
5518 /* Convenience function to get at the Ada encoded lookup name for
5519    LOOKUP_NAME, as a C string.  */
5520
5521 static const char *
5522 ada_lookup_name (const lookup_name_info &lookup_name)
5523 {
5524   return lookup_name.ada ().lookup_name ().c_str ();
5525 }
5526
5527 /* Add to OBSTACKP all non-local symbols whose name and domain match
5528    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
5529    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
5530    symbols otherwise.  */
5531
5532 static void
5533 add_nonlocal_symbols (struct obstack *obstackp,
5534                       const lookup_name_info &lookup_name,
5535                       domain_enum domain, int global)
5536 {
5537   struct match_data data;
5538
5539   memset (&data, 0, sizeof data);
5540   data.obstackp = obstackp;
5541
5542   bool is_wild_match = lookup_name.ada ().wild_match_p ();
5543
5544   for (objfile *objfile : current_program_space->objfiles ())
5545     {
5546       data.objfile = objfile;
5547
5548       if (is_wild_match)
5549         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5550                                                domain, global,
5551                                                aux_add_nonlocal_symbols, &data,
5552                                                symbol_name_match_type::WILD,
5553                                                NULL);
5554       else
5555         objfile->sf->qf->map_matching_symbols (objfile, lookup_name.name ().c_str (),
5556                                                domain, global,
5557                                                aux_add_nonlocal_symbols, &data,
5558                                                symbol_name_match_type::FULL,
5559                                                compare_names);
5560
5561       for (compunit_symtab *cu : objfile->compunits ())
5562         {
5563           const struct block *global_block
5564             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
5565
5566           if (ada_add_block_renamings (obstackp, global_block, lookup_name,
5567                                        domain))
5568             data.found_sym = 1;
5569         }
5570     }
5571
5572   if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
5573     {
5574       const char *name = ada_lookup_name (lookup_name);
5575       std::string name1 = std::string ("<_ada_") + name + '>';
5576
5577       for (objfile *objfile : current_program_space->objfiles ())
5578         {
5579           data.objfile = objfile;
5580           objfile->sf->qf->map_matching_symbols (objfile, name1.c_str (),
5581                                                  domain, global,
5582                                                  aux_add_nonlocal_symbols,
5583                                                  &data,
5584                                                  symbol_name_match_type::FULL,
5585                                                  compare_names);
5586         }
5587     }           
5588 }
5589
5590 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
5591    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
5592    returning the number of matches.  Add these to OBSTACKP.
5593
5594    When FULL_SEARCH is non-zero, any non-function/non-enumeral
5595    symbol match within the nest of blocks whose innermost member is BLOCK,
5596    is the one match returned (no other matches in that or
5597    enclosing blocks is returned).  If there are any matches in or
5598    surrounding BLOCK, then these alone are returned.
5599
5600    Names prefixed with "standard__" are handled specially:
5601    "standard__" is first stripped off (by the lookup_name
5602    constructor), and only static and global symbols are searched.
5603
5604    If MADE_GLOBAL_LOOKUP_P is non-null, set it before return to whether we had
5605    to lookup global symbols.  */
5606
5607 static void
5608 ada_add_all_symbols (struct obstack *obstackp,
5609                      const struct block *block,
5610                      const lookup_name_info &lookup_name,
5611                      domain_enum domain,
5612                      int full_search,
5613                      int *made_global_lookup_p)
5614 {
5615   struct symbol *sym;
5616
5617   if (made_global_lookup_p)
5618     *made_global_lookup_p = 0;
5619
5620   /* Special case: If the user specifies a symbol name inside package
5621      Standard, do a non-wild matching of the symbol name without
5622      the "standard__" prefix.  This was primarily introduced in order
5623      to allow the user to specifically access the standard exceptions
5624      using, for instance, Standard.Constraint_Error when Constraint_Error
5625      is ambiguous (due to the user defining its own Constraint_Error
5626      entity inside its program).  */
5627   if (lookup_name.ada ().standard_p ())
5628     block = NULL;
5629
5630   /* Check the non-global symbols.  If we have ANY match, then we're done.  */
5631
5632   if (block != NULL)
5633     {
5634       if (full_search)
5635         ada_add_local_symbols (obstackp, lookup_name, block, domain);
5636       else
5637         {
5638           /* In the !full_search case we're are being called by
5639              ada_iterate_over_symbols, and we don't want to search
5640              superblocks.  */
5641           ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
5642         }
5643       if (num_defns_collected (obstackp) > 0 || !full_search)
5644         return;
5645     }
5646
5647   /* No non-global symbols found.  Check our cache to see if we have
5648      already performed this search before.  If we have, then return
5649      the same result.  */
5650
5651   if (lookup_cached_symbol (ada_lookup_name (lookup_name),
5652                             domain, &sym, &block))
5653     {
5654       if (sym != NULL)
5655         add_defn_to_vec (obstackp, sym, block);
5656       return;
5657     }
5658
5659   if (made_global_lookup_p)
5660     *made_global_lookup_p = 1;
5661
5662   /* Search symbols from all global blocks.  */
5663  
5664   add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
5665
5666   /* Now add symbols from all per-file blocks if we've gotten no hits
5667      (not strictly correct, but perhaps better than an error).  */
5668
5669   if (num_defns_collected (obstackp) == 0)
5670     add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
5671 }
5672
5673 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
5674    is non-zero, enclosing scope and in global scopes, returning the number of
5675    matches.
5676    Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
5677    found and the blocks and symbol tables (if any) in which they were
5678    found.
5679
5680    When full_search is non-zero, any non-function/non-enumeral
5681    symbol match within the nest of blocks whose innermost member is BLOCK,
5682    is the one match returned (no other matches in that or
5683    enclosing blocks is returned).  If there are any matches in or
5684    surrounding BLOCK, then these alone are returned.
5685
5686    Names prefixed with "standard__" are handled specially: "standard__"
5687    is first stripped off, and only static and global symbols are searched.  */
5688
5689 static int
5690 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
5691                                const struct block *block,
5692                                domain_enum domain,
5693                                std::vector<struct block_symbol> *results,
5694                                int full_search)
5695 {
5696   int syms_from_global_search;
5697   int ndefns;
5698   auto_obstack obstack;
5699
5700   ada_add_all_symbols (&obstack, block, lookup_name,
5701                        domain, full_search, &syms_from_global_search);
5702
5703   ndefns = num_defns_collected (&obstack);
5704
5705   struct block_symbol *base = defns_collected (&obstack, 1);
5706   for (int i = 0; i < ndefns; ++i)
5707     results->push_back (base[i]);
5708
5709   ndefns = remove_extra_symbols (results);
5710
5711   if (ndefns == 0 && full_search && syms_from_global_search)
5712     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
5713
5714   if (ndefns == 1 && full_search && syms_from_global_search)
5715     cache_symbol (ada_lookup_name (lookup_name), domain,
5716                   (*results)[0].symbol, (*results)[0].block);
5717
5718   ndefns = remove_irrelevant_renamings (results, block);
5719
5720   return ndefns;
5721 }
5722
5723 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
5724    in global scopes, returning the number of matches, and filling *RESULTS
5725    with (SYM,BLOCK) tuples.
5726
5727    See ada_lookup_symbol_list_worker for further details.  */
5728
5729 int
5730 ada_lookup_symbol_list (const char *name, const struct block *block,
5731                         domain_enum domain,
5732                         std::vector<struct block_symbol> *results)
5733 {
5734   symbol_name_match_type name_match_type = name_match_type_from_name (name);
5735   lookup_name_info lookup_name (name, name_match_type);
5736
5737   return ada_lookup_symbol_list_worker (lookup_name, block, domain, results, 1);
5738 }
5739
5740 /* Implementation of the la_iterate_over_symbols method.  */
5741
5742 static void
5743 ada_iterate_over_symbols
5744   (const struct block *block, const lookup_name_info &name,
5745    domain_enum domain,
5746    gdb::function_view<symbol_found_callback_ftype> callback)
5747 {
5748   int ndefs, i;
5749   std::vector<struct block_symbol> results;
5750
5751   ndefs = ada_lookup_symbol_list_worker (name, block, domain, &results, 0);
5752
5753   for (i = 0; i < ndefs; ++i)
5754     {
5755       if (!callback (&results[i]))
5756         break;
5757     }
5758 }
5759
5760 /* The result is as for ada_lookup_symbol_list with FULL_SEARCH set
5761    to 1, but choosing the first symbol found if there are multiple
5762    choices.
5763
5764    The result is stored in *INFO, which must be non-NULL.
5765    If no match is found, INFO->SYM is set to NULL.  */
5766
5767 void
5768 ada_lookup_encoded_symbol (const char *name, const struct block *block,
5769                            domain_enum domain,
5770                            struct block_symbol *info)
5771 {
5772   /* Since we already have an encoded name, wrap it in '<>' to force a
5773      verbatim match.  Otherwise, if the name happens to not look like
5774      an encoded name (because it doesn't include a "__"),
5775      ada_lookup_name_info would re-encode/fold it again, and that
5776      would e.g., incorrectly lowercase object renaming names like
5777      "R28b" -> "r28b".  */
5778   std::string verbatim = std::string ("<") + name + '>';
5779
5780   gdb_assert (info != NULL);
5781   *info = ada_lookup_symbol (verbatim.c_str (), block, domain, NULL);
5782 }
5783
5784 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
5785    scope and in global scopes, or NULL if none.  NAME is folded and
5786    encoded first.  Otherwise, the result is as for ada_lookup_symbol_list,
5787    choosing the first symbol if there are multiple choices.
5788    If IS_A_FIELD_OF_THIS is not NULL, it is set to zero.  */
5789
5790 struct block_symbol
5791 ada_lookup_symbol (const char *name, const struct block *block0,
5792                    domain_enum domain, int *is_a_field_of_this)
5793 {
5794   if (is_a_field_of_this != NULL)
5795     *is_a_field_of_this = 0;
5796
5797   std::vector<struct block_symbol> candidates;
5798   int n_candidates;
5799
5800   n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
5801
5802   if (n_candidates == 0)
5803     return {};
5804
5805   block_symbol info = candidates[0];
5806   info.symbol = fixup_symbol_section (info.symbol, NULL);
5807   return info;
5808 }
5809
5810 static struct block_symbol
5811 ada_lookup_symbol_nonlocal (const struct language_defn *langdef,
5812                             const char *name,
5813                             const struct block *block,
5814                             const domain_enum domain)
5815 {
5816   struct block_symbol sym;
5817
5818   sym = ada_lookup_symbol (name, block_static_block (block), domain, NULL);
5819   if (sym.symbol != NULL)
5820     return sym;
5821
5822   /* If we haven't found a match at this point, try the primitive
5823      types.  In other languages, this search is performed before
5824      searching for global symbols in order to short-circuit that
5825      global-symbol search if it happens that the name corresponds
5826      to a primitive type.  But we cannot do the same in Ada, because
5827      it is perfectly legitimate for a program to declare a type which
5828      has the same name as a standard type.  If looking up a type in
5829      that situation, we have traditionally ignored the primitive type
5830      in favor of user-defined types.  This is why, unlike most other
5831      languages, we search the primitive types this late and only after
5832      having searched the global symbols without success.  */
5833
5834   if (domain == VAR_DOMAIN)
5835     {
5836       struct gdbarch *gdbarch;
5837
5838       if (block == NULL)
5839         gdbarch = target_gdbarch ();
5840       else
5841         gdbarch = block_gdbarch (block);
5842       sym.symbol = language_lookup_primitive_type_as_symbol (langdef, gdbarch, name);
5843       if (sym.symbol != NULL)
5844         return sym;
5845     }
5846
5847   return {};
5848 }
5849
5850
5851 /* True iff STR is a possible encoded suffix of a normal Ada name
5852    that is to be ignored for matching purposes.  Suffixes of parallel
5853    names (e.g., XVE) are not included here.  Currently, the possible suffixes
5854    are given by any of the regular expressions:
5855
5856    [.$][0-9]+       [nested subprogram suffix, on platforms such as GNU/Linux]
5857    ___[0-9]+        [nested subprogram suffix, on platforms such as HP/UX]
5858    TKB              [subprogram suffix for task bodies]
5859    _E[0-9]+[bs]$    [protected object entry suffixes]
5860    (X[nb]*)?((\$|__)[0-9](_?[0-9]+)|___(JM|LJM|X([FDBUP].*|R[^T]?)))?$
5861
5862    Also, any leading "__[0-9]+" sequence is skipped before the suffix
5863    match is performed.  This sequence is used to differentiate homonyms,
5864    is an optional part of a valid name suffix.  */
5865
5866 static int
5867 is_name_suffix (const char *str)
5868 {
5869   int k;
5870   const char *matching;
5871   const int len = strlen (str);
5872
5873   /* Skip optional leading __[0-9]+.  */
5874
5875   if (len > 3 && str[0] == '_' && str[1] == '_' && isdigit (str[2]))
5876     {
5877       str += 3;
5878       while (isdigit (str[0]))
5879         str += 1;
5880     }
5881   
5882   /* [.$][0-9]+ */
5883
5884   if (str[0] == '.' || str[0] == '$')
5885     {
5886       matching = str + 1;
5887       while (isdigit (matching[0]))
5888         matching += 1;
5889       if (matching[0] == '\0')
5890         return 1;
5891     }
5892
5893   /* ___[0-9]+ */
5894
5895   if (len > 3 && str[0] == '_' && str[1] == '_' && str[2] == '_')
5896     {
5897       matching = str + 3;
5898       while (isdigit (matching[0]))
5899         matching += 1;
5900       if (matching[0] == '\0')
5901         return 1;
5902     }
5903
5904   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
5905
5906   if (strcmp (str, "TKB") == 0)
5907     return 1;
5908
5909 #if 0
5910   /* FIXME: brobecker/2005-09-23: Protected Object subprograms end
5911      with a N at the end.  Unfortunately, the compiler uses the same
5912      convention for other internal types it creates.  So treating
5913      all entity names that end with an "N" as a name suffix causes
5914      some regressions.  For instance, consider the case of an enumerated
5915      type.  To support the 'Image attribute, it creates an array whose
5916      name ends with N.
5917      Having a single character like this as a suffix carrying some
5918      information is a bit risky.  Perhaps we should change the encoding
5919      to be something like "_N" instead.  In the meantime, do not do
5920      the following check.  */
5921   /* Protected Object Subprograms */
5922   if (len == 1 && str [0] == 'N')
5923     return 1;
5924 #endif
5925
5926   /* _E[0-9]+[bs]$ */
5927   if (len > 3 && str[0] == '_' && str [1] == 'E' && isdigit (str[2]))
5928     {
5929       matching = str + 3;
5930       while (isdigit (matching[0]))
5931         matching += 1;
5932       if ((matching[0] == 'b' || matching[0] == 's')
5933           && matching [1] == '\0')
5934         return 1;
5935     }
5936
5937   /* ??? We should not modify STR directly, as we are doing below.  This
5938      is fine in this case, but may become problematic later if we find
5939      that this alternative did not work, and want to try matching
5940      another one from the begining of STR.  Since we modified it, we
5941      won't be able to find the begining of the string anymore!  */
5942   if (str[0] == 'X')
5943     {
5944       str += 1;
5945       while (str[0] != '_' && str[0] != '\0')
5946         {
5947           if (str[0] != 'n' && str[0] != 'b')
5948             return 0;
5949           str += 1;
5950         }
5951     }
5952
5953   if (str[0] == '\000')
5954     return 1;
5955
5956   if (str[0] == '_')
5957     {
5958       if (str[1] != '_' || str[2] == '\000')
5959         return 0;
5960       if (str[2] == '_')
5961         {
5962           if (strcmp (str + 3, "JM") == 0)
5963             return 1;
5964           /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
5965              the LJM suffix in favor of the JM one.  But we will
5966              still accept LJM as a valid suffix for a reasonable
5967              amount of time, just to allow ourselves to debug programs
5968              compiled using an older version of GNAT.  */
5969           if (strcmp (str + 3, "LJM") == 0)
5970             return 1;
5971           if (str[3] != 'X')
5972             return 0;
5973           if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
5974               || str[4] == 'U' || str[4] == 'P')
5975             return 1;
5976           if (str[4] == 'R' && str[5] != 'T')
5977             return 1;
5978           return 0;
5979         }
5980       if (!isdigit (str[2]))
5981         return 0;
5982       for (k = 3; str[k] != '\0'; k += 1)
5983         if (!isdigit (str[k]) && str[k] != '_')
5984           return 0;
5985       return 1;
5986     }
5987   if (str[0] == '$' && isdigit (str[1]))
5988     {
5989       for (k = 2; str[k] != '\0'; k += 1)
5990         if (!isdigit (str[k]) && str[k] != '_')
5991           return 0;
5992       return 1;
5993     }
5994   return 0;
5995 }
5996
5997 /* Return non-zero if the string starting at NAME and ending before
5998    NAME_END contains no capital letters.  */
5999
6000 static int
6001 is_valid_name_for_wild_match (const char *name0)
6002 {
6003   const char *decoded_name = ada_decode (name0);
6004   int i;
6005
6006   /* If the decoded name starts with an angle bracket, it means that
6007      NAME0 does not follow the GNAT encoding format.  It should then
6008      not be allowed as a possible wild match.  */
6009   if (decoded_name[0] == '<')
6010     return 0;
6011
6012   for (i=0; decoded_name[i] != '\0'; i++)
6013     if (isalpha (decoded_name[i]) && !islower (decoded_name[i]))
6014       return 0;
6015
6016   return 1;
6017 }
6018
6019 /* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
6020    that could start a simple name.  Assumes that *NAMEP points into
6021    the string beginning at NAME0.  */
6022
6023 static int
6024 advance_wild_match (const char **namep, const char *name0, int target0)
6025 {
6026   const char *name = *namep;
6027
6028   while (1)
6029     {
6030       int t0, t1;
6031
6032       t0 = *name;
6033       if (t0 == '_')
6034         {
6035           t1 = name[1];
6036           if ((t1 >= 'a' && t1 <= 'z') || (t1 >= '0' && t1 <= '9'))
6037             {
6038               name += 1;
6039               if (name == name0 + 5 && startswith (name0, "_ada"))
6040                 break;
6041               else
6042                 name += 1;
6043             }
6044           else if (t1 == '_' && ((name[2] >= 'a' && name[2] <= 'z')
6045                                  || name[2] == target0))
6046             {
6047               name += 2;
6048               break;
6049             }
6050           else
6051             return 0;
6052         }
6053       else if ((t0 >= 'a' && t0 <= 'z') || (t0 >= '0' && t0 <= '9'))
6054         name += 1;
6055       else
6056         return 0;
6057     }
6058
6059   *namep = name;
6060   return 1;
6061 }
6062
6063 /* Return true iff NAME encodes a name of the form prefix.PATN.
6064    Ignores any informational suffixes of NAME (i.e., for which
6065    is_name_suffix is true).  Assumes that PATN is a lower-cased Ada
6066    simple name.  */
6067
6068 static bool
6069 wild_match (const char *name, const char *patn)
6070 {
6071   const char *p;
6072   const char *name0 = name;
6073
6074   while (1)
6075     {
6076       const char *match = name;
6077
6078       if (*name == *patn)
6079         {
6080           for (name += 1, p = patn + 1; *p != '\0'; name += 1, p += 1)
6081             if (*p != *name)
6082               break;
6083           if (*p == '\0' && is_name_suffix (name))
6084             return match == name0 || is_valid_name_for_wild_match (name0);
6085
6086           if (name[-1] == '_')
6087             name -= 1;
6088         }
6089       if (!advance_wild_match (&name, name0, *patn))
6090         return false;
6091     }
6092 }
6093
6094 /* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
6095    any trailing suffixes that encode debugging information or leading
6096    _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
6097    information that is ignored).  */
6098
6099 static bool
6100 full_match (const char *sym_name, const char *search_name)
6101 {
6102   size_t search_name_len = strlen (search_name);
6103
6104   if (strncmp (sym_name, search_name, search_name_len) == 0
6105       && is_name_suffix (sym_name + search_name_len))
6106     return true;
6107
6108   if (startswith (sym_name, "_ada_")
6109       && strncmp (sym_name + 5, search_name, search_name_len) == 0
6110       && is_name_suffix (sym_name + search_name_len + 5))
6111     return true;
6112
6113   return false;
6114 }
6115
6116 /* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
6117    *defn_symbols, updating the list of symbols in OBSTACKP (if
6118    necessary).  OBJFILE is the section containing BLOCK.  */
6119
6120 static void
6121 ada_add_block_symbols (struct obstack *obstackp,
6122                        const struct block *block,
6123                        const lookup_name_info &lookup_name,
6124                        domain_enum domain, struct objfile *objfile)
6125 {
6126   struct block_iterator iter;
6127   /* A matching argument symbol, if any.  */
6128   struct symbol *arg_sym;
6129   /* Set true when we find a matching non-argument symbol.  */
6130   int found_sym;
6131   struct symbol *sym;
6132
6133   arg_sym = NULL;
6134   found_sym = 0;
6135   for (sym = block_iter_match_first (block, lookup_name, &iter);
6136        sym != NULL;
6137        sym = block_iter_match_next (lookup_name, &iter))
6138     {
6139       if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6140                                  SYMBOL_DOMAIN (sym), domain))
6141         {
6142           if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6143             {
6144               if (SYMBOL_IS_ARGUMENT (sym))
6145                 arg_sym = sym;
6146               else
6147                 {
6148                   found_sym = 1;
6149                   add_defn_to_vec (obstackp,
6150                                    fixup_symbol_section (sym, objfile),
6151                                    block);
6152                 }
6153             }
6154         }
6155     }
6156
6157   /* Handle renamings.  */
6158
6159   if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
6160     found_sym = 1;
6161
6162   if (!found_sym && arg_sym != NULL)
6163     {
6164       add_defn_to_vec (obstackp,
6165                        fixup_symbol_section (arg_sym, objfile),
6166                        block);
6167     }
6168
6169   if (!lookup_name.ada ().wild_match_p ())
6170     {
6171       arg_sym = NULL;
6172       found_sym = 0;
6173       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
6174       const char *name = ada_lookup_name.c_str ();
6175       size_t name_len = ada_lookup_name.size ();
6176
6177       ALL_BLOCK_SYMBOLS (block, iter, sym)
6178       {
6179         if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
6180                                    SYMBOL_DOMAIN (sym), domain))
6181           {
6182             int cmp;
6183
6184             cmp = (int) '_' - (int) SYMBOL_LINKAGE_NAME (sym)[0];
6185             if (cmp == 0)
6186               {
6187                 cmp = !startswith (SYMBOL_LINKAGE_NAME (sym), "_ada_");
6188                 if (cmp == 0)
6189                   cmp = strncmp (name, SYMBOL_LINKAGE_NAME (sym) + 5,
6190                                  name_len);
6191               }
6192
6193             if (cmp == 0
6194                 && is_name_suffix (SYMBOL_LINKAGE_NAME (sym) + name_len + 5))
6195               {
6196                 if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
6197                   {
6198                     if (SYMBOL_IS_ARGUMENT (sym))
6199                       arg_sym = sym;
6200                     else
6201                       {
6202                         found_sym = 1;
6203                         add_defn_to_vec (obstackp,
6204                                          fixup_symbol_section (sym, objfile),
6205                                          block);
6206                       }
6207                   }
6208               }
6209           }
6210       }
6211
6212       /* NOTE: This really shouldn't be needed for _ada_ symbols.
6213          They aren't parameters, right?  */
6214       if (!found_sym && arg_sym != NULL)
6215         {
6216           add_defn_to_vec (obstackp,
6217                            fixup_symbol_section (arg_sym, objfile),
6218                            block);
6219         }
6220     }
6221 }
6222 \f
6223
6224                                 /* Symbol Completion */
6225
6226 /* See symtab.h.  */
6227
6228 bool
6229 ada_lookup_name_info::matches
6230   (const char *sym_name,
6231    symbol_name_match_type match_type,
6232    completion_match_result *comp_match_res) const
6233 {
6234   bool match = false;
6235   const char *text = m_encoded_name.c_str ();
6236   size_t text_len = m_encoded_name.size ();
6237
6238   /* First, test against the fully qualified name of the symbol.  */
6239
6240   if (strncmp (sym_name, text, text_len) == 0)
6241     match = true;
6242
6243   if (match && !m_encoded_p)
6244     {
6245       /* One needed check before declaring a positive match is to verify
6246          that iff we are doing a verbatim match, the decoded version
6247          of the symbol name starts with '<'.  Otherwise, this symbol name
6248          is not a suitable completion.  */
6249       const char *sym_name_copy = sym_name;
6250       bool has_angle_bracket;
6251
6252       sym_name = ada_decode (sym_name);
6253       has_angle_bracket = (sym_name[0] == '<');
6254       match = (has_angle_bracket == m_verbatim_p);
6255       sym_name = sym_name_copy;
6256     }
6257
6258   if (match && !m_verbatim_p)
6259     {
6260       /* When doing non-verbatim match, another check that needs to
6261          be done is to verify that the potentially matching symbol name
6262          does not include capital letters, because the ada-mode would
6263          not be able to understand these symbol names without the
6264          angle bracket notation.  */
6265       const char *tmp;
6266
6267       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
6268       if (*tmp != '\0')
6269         match = false;
6270     }
6271
6272   /* Second: Try wild matching...  */
6273
6274   if (!match && m_wild_match_p)
6275     {
6276       /* Since we are doing wild matching, this means that TEXT
6277          may represent an unqualified symbol name.  We therefore must
6278          also compare TEXT against the unqualified name of the symbol.  */
6279       sym_name = ada_unqualified_name (ada_decode (sym_name));
6280
6281       if (strncmp (sym_name, text, text_len) == 0)
6282         match = true;
6283     }
6284
6285   /* Finally: If we found a match, prepare the result to return.  */
6286
6287   if (!match)
6288     return false;
6289
6290   if (comp_match_res != NULL)
6291     {
6292       std::string &match_str = comp_match_res->match.storage ();
6293
6294       if (!m_encoded_p)
6295         match_str = ada_decode (sym_name);
6296       else
6297         {
6298           if (m_verbatim_p)
6299             match_str = add_angle_brackets (sym_name);
6300           else
6301             match_str = sym_name;
6302
6303         }
6304
6305       comp_match_res->set_match (match_str.c_str ());
6306     }
6307
6308   return true;
6309 }
6310
6311 /* Add the list of possible symbol names completing TEXT to TRACKER.
6312    WORD is the entire command on which completion is made.  */
6313
6314 static void
6315 ada_collect_symbol_completion_matches (completion_tracker &tracker,
6316                                        complete_symbol_mode mode,
6317                                        symbol_name_match_type name_match_type,
6318                                        const char *text, const char *word,
6319                                        enum type_code code)
6320 {
6321   struct symbol *sym;
6322   const struct block *b, *surrounding_static_block = 0;
6323   struct block_iterator iter;
6324
6325   gdb_assert (code == TYPE_CODE_UNDEF);
6326
6327   lookup_name_info lookup_name (text, name_match_type, true);
6328
6329   /* First, look at the partial symtab symbols.  */
6330   expand_symtabs_matching (NULL,
6331                            lookup_name,
6332                            NULL,
6333                            NULL,
6334                            ALL_DOMAIN);
6335
6336   /* At this point scan through the misc symbol vectors and add each
6337      symbol you find to the list.  Eventually we want to ignore
6338      anything that isn't a text symbol (everything else will be
6339      handled by the psymtab code above).  */
6340
6341   for (objfile *objfile : current_program_space->objfiles ())
6342     {
6343       for (minimal_symbol *msymbol : objfile->msymbols ())
6344         {
6345           QUIT;
6346
6347           if (completion_skip_symbol (mode, msymbol))
6348             continue;
6349
6350           language symbol_language = MSYMBOL_LANGUAGE (msymbol);
6351
6352           /* Ada minimal symbols won't have their language set to Ada.  If
6353              we let completion_list_add_name compare using the
6354              default/C-like matcher, then when completing e.g., symbols in a
6355              package named "pck", we'd match internal Ada symbols like
6356              "pckS", which are invalid in an Ada expression, unless you wrap
6357              them in '<' '>' to request a verbatim match.
6358
6359              Unfortunately, some Ada encoded names successfully demangle as
6360              C++ symbols (using an old mangling scheme), such as "name__2Xn"
6361              -> "Xn::name(void)" and thus some Ada minimal symbols end up
6362              with the wrong language set.  Paper over that issue here.  */
6363           if (symbol_language == language_auto
6364               || symbol_language == language_cplus)
6365             symbol_language = language_ada;
6366
6367           completion_list_add_name (tracker,
6368                                     symbol_language,
6369                                     MSYMBOL_LINKAGE_NAME (msymbol),
6370                                     lookup_name, text, word);
6371         }
6372     }
6373
6374   /* Search upwards from currently selected frame (so that we can
6375      complete on local vars.  */
6376
6377   for (b = get_selected_block (0); b != NULL; b = BLOCK_SUPERBLOCK (b))
6378     {
6379       if (!BLOCK_SUPERBLOCK (b))
6380         surrounding_static_block = b;   /* For elmin of dups */
6381
6382       ALL_BLOCK_SYMBOLS (b, iter, sym)
6383       {
6384         if (completion_skip_symbol (mode, sym))
6385           continue;
6386
6387         completion_list_add_name (tracker,
6388                                   SYMBOL_LANGUAGE (sym),
6389                                   SYMBOL_LINKAGE_NAME (sym),
6390                                   lookup_name, text, word);
6391       }
6392     }
6393
6394   /* Go through the symtabs and check the externs and statics for
6395      symbols which match.  */
6396
6397   for (objfile *objfile : current_program_space->objfiles ())
6398     {
6399       for (compunit_symtab *s : objfile->compunits ())
6400         {
6401           QUIT;
6402           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), GLOBAL_BLOCK);
6403           ALL_BLOCK_SYMBOLS (b, iter, sym)
6404             {
6405               if (completion_skip_symbol (mode, sym))
6406                 continue;
6407
6408               completion_list_add_name (tracker,
6409                                         SYMBOL_LANGUAGE (sym),
6410                                         SYMBOL_LINKAGE_NAME (sym),
6411                                         lookup_name, text, word);
6412             }
6413         }
6414     }
6415
6416   for (objfile *objfile : current_program_space->objfiles ())
6417     {
6418       for (compunit_symtab *s : objfile->compunits ())
6419         {
6420           QUIT;
6421           b = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (s), STATIC_BLOCK);
6422           /* Don't do this block twice.  */
6423           if (b == surrounding_static_block)
6424             continue;
6425           ALL_BLOCK_SYMBOLS (b, iter, sym)
6426             {
6427               if (completion_skip_symbol (mode, sym))
6428                 continue;
6429
6430               completion_list_add_name (tracker,
6431                                         SYMBOL_LANGUAGE (sym),
6432                                         SYMBOL_LINKAGE_NAME (sym),
6433                                         lookup_name, text, word);
6434             }
6435         }
6436     }
6437 }
6438
6439                                 /* Field Access */
6440
6441 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
6442    for tagged types.  */
6443
6444 static int
6445 ada_is_dispatch_table_ptr_type (struct type *type)
6446 {
6447   const char *name;
6448
6449   if (TYPE_CODE (type) != TYPE_CODE_PTR)
6450     return 0;
6451
6452   name = TYPE_NAME (TYPE_TARGET_TYPE (type));
6453   if (name == NULL)
6454     return 0;
6455
6456   return (strcmp (name, "ada__tags__dispatch_table") == 0);
6457 }
6458
6459 /* Return non-zero if TYPE is an interface tag.  */
6460
6461 static int
6462 ada_is_interface_tag (struct type *type)
6463 {
6464   const char *name = TYPE_NAME (type);
6465
6466   if (name == NULL)
6467     return 0;
6468
6469   return (strcmp (name, "ada__tags__interface_tag") == 0);
6470 }
6471
6472 /* True if field number FIELD_NUM in struct or union type TYPE is supposed
6473    to be invisible to users.  */
6474
6475 int
6476 ada_is_ignored_field (struct type *type, int field_num)
6477 {
6478   if (field_num < 0 || field_num > TYPE_NFIELDS (type))
6479     return 1;
6480
6481   /* Check the name of that field.  */
6482   {
6483     const char *name = TYPE_FIELD_NAME (type, field_num);
6484
6485     /* Anonymous field names should not be printed.
6486        brobecker/2007-02-20: I don't think this can actually happen
6487        but we don't want to print the value of annonymous fields anyway.  */
6488     if (name == NULL)
6489       return 1;
6490
6491     /* Normally, fields whose name start with an underscore ("_")
6492        are fields that have been internally generated by the compiler,
6493        and thus should not be printed.  The "_parent" field is special,
6494        however: This is a field internally generated by the compiler
6495        for tagged types, and it contains the components inherited from
6496        the parent type.  This field should not be printed as is, but
6497        should not be ignored either.  */
6498     if (name[0] == '_' && !startswith (name, "_parent"))
6499       return 1;
6500   }
6501
6502   /* If this is the dispatch table of a tagged type or an interface tag,
6503      then ignore.  */
6504   if (ada_is_tagged_type (type, 1)
6505       && (ada_is_dispatch_table_ptr_type (TYPE_FIELD_TYPE (type, field_num))
6506           || ada_is_interface_tag (TYPE_FIELD_TYPE (type, field_num))))
6507     return 1;
6508
6509   /* Not a special field, so it should not be ignored.  */
6510   return 0;
6511 }
6512
6513 /* True iff TYPE has a tag field.  If REFOK, then TYPE may also be a
6514    pointer or reference type whose ultimate target has a tag field.  */
6515
6516 int
6517 ada_is_tagged_type (struct type *type, int refok)
6518 {
6519   return (ada_lookup_struct_elt_type (type, "_tag", refok, 1) != NULL);
6520 }
6521
6522 /* True iff TYPE represents the type of X'Tag */
6523
6524 int
6525 ada_is_tag_type (struct type *type)
6526 {
6527   type = ada_check_typedef (type);
6528
6529   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_PTR)
6530     return 0;
6531   else
6532     {
6533       const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
6534
6535       return (name != NULL
6536               && strcmp (name, "ada__tags__dispatch_table") == 0);
6537     }
6538 }
6539
6540 /* The type of the tag on VAL.  */
6541
6542 struct type *
6543 ada_tag_type (struct value *val)
6544 {
6545   return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
6546 }
6547
6548 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
6549    retired at Ada 05).  */
6550
6551 static int
6552 is_ada95_tag (struct value *tag)
6553 {
6554   return ada_value_struct_elt (tag, "tsd", 1) != NULL;
6555 }
6556
6557 /* The value of the tag on VAL.  */
6558
6559 struct value *
6560 ada_value_tag (struct value *val)
6561 {
6562   return ada_value_struct_elt (val, "_tag", 0);
6563 }
6564
6565 /* The value of the tag on the object of type TYPE whose contents are
6566    saved at VALADDR, if it is non-null, or is at memory address
6567    ADDRESS.  */
6568
6569 static struct value *
6570 value_tag_from_contents_and_address (struct type *type,
6571                                      const gdb_byte *valaddr,
6572                                      CORE_ADDR address)
6573 {
6574   int tag_byte_offset;
6575   struct type *tag_type;
6576
6577   if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
6578                          NULL, NULL, NULL))
6579     {
6580       const gdb_byte *valaddr1 = ((valaddr == NULL)
6581                                   ? NULL
6582                                   : valaddr + tag_byte_offset);
6583       CORE_ADDR address1 = (address == 0) ? 0 : address + tag_byte_offset;
6584
6585       return value_from_contents_and_address (tag_type, valaddr1, address1);
6586     }
6587   return NULL;
6588 }
6589
6590 static struct type *
6591 type_from_tag (struct value *tag)
6592 {
6593   const char *type_name = ada_tag_name (tag);
6594
6595   if (type_name != NULL)
6596     return ada_find_any_type (ada_encode (type_name));
6597   return NULL;
6598 }
6599
6600 /* Given a value OBJ of a tagged type, return a value of this
6601    type at the base address of the object.  The base address, as
6602    defined in Ada.Tags, it is the address of the primary tag of
6603    the object, and therefore where the field values of its full
6604    view can be fetched.  */
6605
6606 struct value *
6607 ada_tag_value_at_base_address (struct value *obj)
6608 {
6609   struct value *val;
6610   LONGEST offset_to_top = 0;
6611   struct type *ptr_type, *obj_type;
6612   struct value *tag;
6613   CORE_ADDR base_address;
6614
6615   obj_type = value_type (obj);
6616
6617   /* It is the responsability of the caller to deref pointers.  */
6618
6619   if (TYPE_CODE (obj_type) == TYPE_CODE_PTR
6620       || TYPE_CODE (obj_type) == TYPE_CODE_REF)
6621     return obj;
6622
6623   tag = ada_value_tag (obj);
6624   if (!tag)
6625     return obj;
6626
6627   /* Base addresses only appeared with Ada 05 and multiple inheritance.  */
6628
6629   if (is_ada95_tag (tag))
6630     return obj;
6631
6632   ptr_type = language_lookup_primitive_type
6633     (language_def (language_ada), target_gdbarch(), "storage_offset");
6634   ptr_type = lookup_pointer_type (ptr_type);
6635   val = value_cast (ptr_type, tag);
6636   if (!val)
6637     return obj;
6638
6639   /* It is perfectly possible that an exception be raised while
6640      trying to determine the base address, just like for the tag;
6641      see ada_tag_name for more details.  We do not print the error
6642      message for the same reason.  */
6643
6644   try
6645     {
6646       offset_to_top = value_as_long (value_ind (value_ptradd (val, -2)));
6647     }
6648
6649   catch (const gdb_exception_error &e)
6650     {
6651       return obj;
6652     }
6653
6654   /* If offset is null, nothing to do.  */
6655
6656   if (offset_to_top == 0)
6657     return obj;
6658
6659   /* -1 is a special case in Ada.Tags; however, what should be done
6660      is not quite clear from the documentation.  So do nothing for
6661      now.  */
6662
6663   if (offset_to_top == -1)
6664     return obj;
6665
6666   /* OFFSET_TO_TOP used to be a positive value to be subtracted
6667      from the base address.  This was however incompatible with
6668      C++ dispatch table: C++ uses a *negative* value to *add*
6669      to the base address.  Ada's convention has therefore been
6670      changed in GNAT 19.0w 20171023: since then, C++ and Ada
6671      use the same convention.  Here, we support both cases by
6672      checking the sign of OFFSET_TO_TOP.  */
6673
6674   if (offset_to_top > 0)
6675     offset_to_top = -offset_to_top;
6676
6677   base_address = value_address (obj) + offset_to_top;
6678   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
6679
6680   /* Make sure that we have a proper tag at the new address.
6681      Otherwise, offset_to_top is bogus (which can happen when
6682      the object is not initialized yet).  */
6683
6684   if (!tag)
6685     return obj;
6686
6687   obj_type = type_from_tag (tag);
6688
6689   if (!obj_type)
6690     return obj;
6691
6692   return value_from_contents_and_address (obj_type, NULL, base_address);
6693 }
6694
6695 /* Return the "ada__tags__type_specific_data" type.  */
6696
6697 static struct type *
6698 ada_get_tsd_type (struct inferior *inf)
6699 {
6700   struct ada_inferior_data *data = get_ada_inferior_data (inf);
6701
6702   if (data->tsd_type == 0)
6703     data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
6704   return data->tsd_type;
6705 }
6706
6707 /* Return the TSD (type-specific data) associated to the given TAG.
6708    TAG is assumed to be the tag of a tagged-type entity.
6709
6710    May return NULL if we are unable to get the TSD.  */
6711
6712 static struct value *
6713 ada_get_tsd_from_tag (struct value *tag)
6714 {
6715   struct value *val;
6716   struct type *type;
6717
6718   /* First option: The TSD is simply stored as a field of our TAG.
6719      Only older versions of GNAT would use this format, but we have
6720      to test it first, because there are no visible markers for
6721      the current approach except the absence of that field.  */
6722
6723   val = ada_value_struct_elt (tag, "tsd", 1);
6724   if (val)
6725     return val;
6726
6727   /* Try the second representation for the dispatch table (in which
6728      there is no explicit 'tsd' field in the referent of the tag pointer,
6729      and instead the tsd pointer is stored just before the dispatch
6730      table.  */
6731
6732   type = ada_get_tsd_type (current_inferior());
6733   if (type == NULL)
6734     return NULL;
6735   type = lookup_pointer_type (lookup_pointer_type (type));
6736   val = value_cast (type, tag);
6737   if (val == NULL)
6738     return NULL;
6739   return value_ind (value_ptradd (val, -1));
6740 }
6741
6742 /* Given the TSD of a tag (type-specific data), return a string
6743    containing the name of the associated type.
6744
6745    The returned value is good until the next call.  May return NULL
6746    if we are unable to determine the tag name.  */
6747
6748 static char *
6749 ada_tag_name_from_tsd (struct value *tsd)
6750 {
6751   static char name[1024];
6752   char *p;
6753   struct value *val;
6754
6755   val = ada_value_struct_elt (tsd, "expanded_name", 1);
6756   if (val == NULL)
6757     return NULL;
6758   read_memory_string (value_as_address (val), name, sizeof (name) - 1);
6759   for (p = name; *p != '\0'; p += 1)
6760     if (isalpha (*p))
6761       *p = tolower (*p);
6762   return name;
6763 }
6764
6765 /* The type name of the dynamic type denoted by the 'tag value TAG, as
6766    a C string.
6767
6768    Return NULL if the TAG is not an Ada tag, or if we were unable to
6769    determine the name of that tag.  The result is good until the next
6770    call.  */
6771
6772 const char *
6773 ada_tag_name (struct value *tag)
6774 {
6775   char *name = NULL;
6776
6777   if (!ada_is_tag_type (value_type (tag)))
6778     return NULL;
6779
6780   /* It is perfectly possible that an exception be raised while trying
6781      to determine the TAG's name, even under normal circumstances:
6782      The associated variable may be uninitialized or corrupted, for
6783      instance. We do not let any exception propagate past this point.
6784      instead we return NULL.
6785
6786      We also do not print the error message either (which often is very
6787      low-level (Eg: "Cannot read memory at 0x[...]"), but instead let
6788      the caller print a more meaningful message if necessary.  */
6789   try
6790     {
6791       struct value *tsd = ada_get_tsd_from_tag (tag);
6792
6793       if (tsd != NULL)
6794         name = ada_tag_name_from_tsd (tsd);
6795     }
6796   catch (const gdb_exception_error &e)
6797     {
6798     }
6799
6800   return name;
6801 }
6802
6803 /* The parent type of TYPE, or NULL if none.  */
6804
6805 struct type *
6806 ada_parent_type (struct type *type)
6807 {
6808   int i;
6809
6810   type = ada_check_typedef (type);
6811
6812   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
6813     return NULL;
6814
6815   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
6816     if (ada_is_parent_field (type, i))
6817       {
6818         struct type *parent_type = TYPE_FIELD_TYPE (type, i);
6819
6820         /* If the _parent field is a pointer, then dereference it.  */
6821         if (TYPE_CODE (parent_type) == TYPE_CODE_PTR)
6822           parent_type = TYPE_TARGET_TYPE (parent_type);
6823         /* If there is a parallel XVS type, get the actual base type.  */
6824         parent_type = ada_get_base_type (parent_type);
6825
6826         return ada_check_typedef (parent_type);
6827       }
6828
6829   return NULL;
6830 }
6831
6832 /* True iff field number FIELD_NUM of structure type TYPE contains the
6833    parent-type (inherited) fields of a derived type.  Assumes TYPE is
6834    a structure type with at least FIELD_NUM+1 fields.  */
6835
6836 int
6837 ada_is_parent_field (struct type *type, int field_num)
6838 {
6839   const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
6840
6841   return (name != NULL
6842           && (startswith (name, "PARENT")
6843               || startswith (name, "_parent")));
6844 }
6845
6846 /* True iff field number FIELD_NUM of structure type TYPE is a
6847    transparent wrapper field (which should be silently traversed when doing
6848    field selection and flattened when printing).  Assumes TYPE is a
6849    structure type with at least FIELD_NUM+1 fields.  Such fields are always
6850    structures.  */
6851
6852 int
6853 ada_is_wrapper_field (struct type *type, int field_num)
6854 {
6855   const char *name = TYPE_FIELD_NAME (type, field_num);
6856
6857   if (name != NULL && strcmp (name, "RETVAL") == 0)
6858     {
6859       /* This happens in functions with "out" or "in out" parameters
6860          which are passed by copy.  For such functions, GNAT describes
6861          the function's return type as being a struct where the return
6862          value is in a field called RETVAL, and where the other "out"
6863          or "in out" parameters are fields of that struct.  This is not
6864          a wrapper.  */
6865       return 0;
6866     }
6867
6868   return (name != NULL
6869           && (startswith (name, "PARENT")
6870               || strcmp (name, "REP") == 0
6871               || startswith (name, "_parent")
6872               || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
6873 }
6874
6875 /* True iff field number FIELD_NUM of structure or union type TYPE
6876    is a variant wrapper.  Assumes TYPE is a structure type with at least
6877    FIELD_NUM+1 fields.  */
6878
6879 int
6880 ada_is_variant_part (struct type *type, int field_num)
6881 {
6882   /* Only Ada types are eligible.  */
6883   if (!ADA_TYPE_P (type))
6884     return 0;
6885
6886   struct type *field_type = TYPE_FIELD_TYPE (type, field_num);
6887
6888   return (TYPE_CODE (field_type) == TYPE_CODE_UNION
6889           || (is_dynamic_field (type, field_num)
6890               && (TYPE_CODE (TYPE_TARGET_TYPE (field_type)) 
6891                   == TYPE_CODE_UNION)));
6892 }
6893
6894 /* Assuming that VAR_TYPE is a variant wrapper (type of the variant part)
6895    whose discriminants are contained in the record type OUTER_TYPE,
6896    returns the type of the controlling discriminant for the variant.
6897    May return NULL if the type could not be found.  */
6898
6899 struct type *
6900 ada_variant_discrim_type (struct type *var_type, struct type *outer_type)
6901 {
6902   const char *name = ada_variant_discrim_name (var_type);
6903
6904   return ada_lookup_struct_elt_type (outer_type, name, 1, 1);
6905 }
6906
6907 /* Assuming that TYPE is the type of a variant wrapper, and FIELD_NUM is a
6908    valid field number within it, returns 1 iff field FIELD_NUM of TYPE
6909    represents a 'when others' clause; otherwise 0.  */
6910
6911 int
6912 ada_is_others_clause (struct type *type, int field_num)
6913 {
6914   const char *name = TYPE_FIELD_NAME (type, field_num);
6915
6916   return (name != NULL && name[0] == 'O');
6917 }
6918
6919 /* Assuming that TYPE0 is the type of the variant part of a record,
6920    returns the name of the discriminant controlling the variant.
6921    The value is valid until the next call to ada_variant_discrim_name.  */
6922
6923 const char *
6924 ada_variant_discrim_name (struct type *type0)
6925 {
6926   static char *result = NULL;
6927   static size_t result_len = 0;
6928   struct type *type;
6929   const char *name;
6930   const char *discrim_end;
6931   const char *discrim_start;
6932
6933   if (TYPE_CODE (type0) == TYPE_CODE_PTR)
6934     type = TYPE_TARGET_TYPE (type0);
6935   else
6936     type = type0;
6937
6938   name = ada_type_name (type);
6939
6940   if (name == NULL || name[0] == '\000')
6941     return "";
6942
6943   for (discrim_end = name + strlen (name) - 6; discrim_end != name;
6944        discrim_end -= 1)
6945     {
6946       if (startswith (discrim_end, "___XVN"))
6947         break;
6948     }
6949   if (discrim_end == name)
6950     return "";
6951
6952   for (discrim_start = discrim_end; discrim_start != name + 3;
6953        discrim_start -= 1)
6954     {
6955       if (discrim_start == name + 1)
6956         return "";
6957       if ((discrim_start > name + 3
6958            && startswith (discrim_start - 3, "___"))
6959           || discrim_start[-1] == '.')
6960         break;
6961     }
6962
6963   GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
6964   strncpy (result, discrim_start, discrim_end - discrim_start);
6965   result[discrim_end - discrim_start] = '\0';
6966   return result;
6967 }
6968
6969 /* Scan STR for a subtype-encoded number, beginning at position K.
6970    Put the position of the character just past the number scanned in
6971    *NEW_K, if NEW_K!=NULL.  Put the scanned number in *R, if R!=NULL.
6972    Return 1 if there was a valid number at the given position, and 0
6973    otherwise.  A "subtype-encoded" number consists of the absolute value
6974    in decimal, followed by the letter 'm' to indicate a negative number.
6975    Assumes 0m does not occur.  */
6976
6977 int
6978 ada_scan_number (const char str[], int k, LONGEST * R, int *new_k)
6979 {
6980   ULONGEST RU;
6981
6982   if (!isdigit (str[k]))
6983     return 0;
6984
6985   /* Do it the hard way so as not to make any assumption about
6986      the relationship of unsigned long (%lu scan format code) and
6987      LONGEST.  */
6988   RU = 0;
6989   while (isdigit (str[k]))
6990     {
6991       RU = RU * 10 + (str[k] - '0');
6992       k += 1;
6993     }
6994
6995   if (str[k] == 'm')
6996     {
6997       if (R != NULL)
6998         *R = (-(LONGEST) (RU - 1)) - 1;
6999       k += 1;
7000     }
7001   else if (R != NULL)
7002     *R = (LONGEST) RU;
7003
7004   /* NOTE on the above: Technically, C does not say what the results of
7005      - (LONGEST) RU or (LONGEST) -RU are for RU == largest positive
7006      number representable as a LONGEST (although either would probably work
7007      in most implementations).  When RU>0, the locution in the then branch
7008      above is always equivalent to the negative of RU.  */
7009
7010   if (new_k != NULL)
7011     *new_k = k;
7012   return 1;
7013 }
7014
7015 /* Assuming that TYPE is a variant part wrapper type (a VARIANTS field),
7016    and FIELD_NUM is a valid field number within it, returns 1 iff VAL is
7017    in the range encoded by field FIELD_NUM of TYPE; otherwise 0.  */
7018
7019 int
7020 ada_in_variant (LONGEST val, struct type *type, int field_num)
7021 {
7022   const char *name = TYPE_FIELD_NAME (type, field_num);
7023   int p;
7024
7025   p = 0;
7026   while (1)
7027     {
7028       switch (name[p])
7029         {
7030         case '\0':
7031           return 0;
7032         case 'S':
7033           {
7034             LONGEST W;
7035
7036             if (!ada_scan_number (name, p + 1, &W, &p))
7037               return 0;
7038             if (val == W)
7039               return 1;
7040             break;
7041           }
7042         case 'R':
7043           {
7044             LONGEST L, U;
7045
7046             if (!ada_scan_number (name, p + 1, &L, &p)
7047                 || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
7048               return 0;
7049             if (val >= L && val <= U)
7050               return 1;
7051             break;
7052           }
7053         case 'O':
7054           return 1;
7055         default:
7056           return 0;
7057         }
7058     }
7059 }
7060
7061 /* FIXME: Lots of redundancy below.  Try to consolidate.  */
7062
7063 /* Given a value ARG1 (offset by OFFSET bytes) of a struct or union type
7064    ARG_TYPE, extract and return the value of one of its (non-static)
7065    fields.  FIELDNO says which field.   Differs from value_primitive_field
7066    only in that it can handle packed values of arbitrary type.  */
7067
7068 static struct value *
7069 ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
7070                            struct type *arg_type)
7071 {
7072   struct type *type;
7073
7074   arg_type = ada_check_typedef (arg_type);
7075   type = TYPE_FIELD_TYPE (arg_type, fieldno);
7076
7077   /* Handle packed fields.  It might be that the field is not packed
7078      relative to its containing structure, but the structure itself is
7079      packed; in this case we must take the bit-field path.  */
7080   if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
7081     {
7082       int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
7083       int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
7084
7085       return ada_value_primitive_packed_val (arg1, value_contents (arg1),
7086                                              offset + bit_pos / 8,
7087                                              bit_pos % 8, bit_size, type);
7088     }
7089   else
7090     return value_primitive_field (arg1, offset, fieldno, arg_type);
7091 }
7092
7093 /* Find field with name NAME in object of type TYPE.  If found, 
7094    set the following for each argument that is non-null:
7095     - *FIELD_TYPE_P to the field's type; 
7096     - *BYTE_OFFSET_P to OFFSET + the byte offset of the field within 
7097       an object of that type;
7098     - *BIT_OFFSET_P to the bit offset modulo byte size of the field; 
7099     - *BIT_SIZE_P to its size in bits if the field is packed, and 
7100       0 otherwise;
7101    If INDEX_P is non-null, increment *INDEX_P by the number of source-visible
7102    fields up to but not including the desired field, or by the total
7103    number of fields if not found.   A NULL value of NAME never
7104    matches; the function just counts visible fields in this case.
7105    
7106    Notice that we need to handle when a tagged record hierarchy
7107    has some components with the same name, like in this scenario:
7108
7109       type Top_T is tagged record
7110          N : Integer := 1;
7111          U : Integer := 974;
7112          A : Integer := 48;
7113       end record;
7114
7115       type Middle_T is new Top.Top_T with record
7116          N : Character := 'a';
7117          C : Integer := 3;
7118       end record;
7119
7120      type Bottom_T is new Middle.Middle_T with record
7121         N : Float := 4.0;
7122         C : Character := '5';
7123         X : Integer := 6;
7124         A : Character := 'J';
7125      end record;
7126
7127    Let's say we now have a variable declared and initialized as follow:
7128
7129      TC : Top_A := new Bottom_T;
7130
7131    And then we use this variable to call this function
7132
7133      procedure Assign (Obj: in out Top_T; TV : Integer);
7134
7135    as follow:
7136
7137       Assign (Top_T (B), 12);
7138
7139    Now, we're in the debugger, and we're inside that procedure
7140    then and we want to print the value of obj.c:
7141
7142    Usually, the tagged record or one of the parent type owns the
7143    component to print and there's no issue but in this particular
7144    case, what does it mean to ask for Obj.C? Since the actual
7145    type for object is type Bottom_T, it could mean two things: type
7146    component C from the Middle_T view, but also component C from
7147    Bottom_T.  So in that "undefined" case, when the component is
7148    not found in the non-resolved type (which includes all the
7149    components of the parent type), then resolve it and see if we
7150    get better luck once expanded.
7151
7152    In the case of homonyms in the derived tagged type, we don't
7153    guaranty anything, and pick the one that's easiest for us
7154    to program.
7155
7156    Returns 1 if found, 0 otherwise.  */
7157
7158 static int
7159 find_struct_field (const char *name, struct type *type, int offset,
7160                    struct type **field_type_p,
7161                    int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
7162                    int *index_p)
7163 {
7164   int i;
7165   int parent_offset = -1;
7166
7167   type = ada_check_typedef (type);
7168
7169   if (field_type_p != NULL)
7170     *field_type_p = NULL;
7171   if (byte_offset_p != NULL)
7172     *byte_offset_p = 0;
7173   if (bit_offset_p != NULL)
7174     *bit_offset_p = 0;
7175   if (bit_size_p != NULL)
7176     *bit_size_p = 0;
7177
7178   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7179     {
7180       int bit_pos = TYPE_FIELD_BITPOS (type, i);
7181       int fld_offset = offset + bit_pos / 8;
7182       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7183
7184       if (t_field_name == NULL)
7185         continue;
7186
7187       else if (ada_is_parent_field (type, i))
7188         {
7189           /* This is a field pointing us to the parent type of a tagged
7190              type.  As hinted in this function's documentation, we give
7191              preference to fields in the current record first, so what
7192              we do here is just record the index of this field before
7193              we skip it.  If it turns out we couldn't find our field
7194              in the current record, then we'll get back to it and search
7195              inside it whether the field might exist in the parent.  */
7196
7197           parent_offset = i;
7198           continue;
7199         }
7200
7201       else if (name != NULL && field_name_match (t_field_name, name))
7202         {
7203           int bit_size = TYPE_FIELD_BITSIZE (type, i);
7204
7205           if (field_type_p != NULL)
7206             *field_type_p = TYPE_FIELD_TYPE (type, i);
7207           if (byte_offset_p != NULL)
7208             *byte_offset_p = fld_offset;
7209           if (bit_offset_p != NULL)
7210             *bit_offset_p = bit_pos % 8;
7211           if (bit_size_p != NULL)
7212             *bit_size_p = bit_size;
7213           return 1;
7214         }
7215       else if (ada_is_wrapper_field (type, i))
7216         {
7217           if (find_struct_field (name, TYPE_FIELD_TYPE (type, i), fld_offset,
7218                                  field_type_p, byte_offset_p, bit_offset_p,
7219                                  bit_size_p, index_p))
7220             return 1;
7221         }
7222       else if (ada_is_variant_part (type, i))
7223         {
7224           /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
7225              fixed type?? */
7226           int j;
7227           struct type *field_type
7228             = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
7229
7230           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7231             {
7232               if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
7233                                      fld_offset
7234                                      + TYPE_FIELD_BITPOS (field_type, j) / 8,
7235                                      field_type_p, byte_offset_p,
7236                                      bit_offset_p, bit_size_p, index_p))
7237                 return 1;
7238             }
7239         }
7240       else if (index_p != NULL)
7241         *index_p += 1;
7242     }
7243
7244   /* Field not found so far.  If this is a tagged type which
7245      has a parent, try finding that field in the parent now.  */
7246
7247   if (parent_offset != -1)
7248     {
7249       int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
7250       int fld_offset = offset + bit_pos / 8;
7251
7252       if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
7253                              fld_offset, field_type_p, byte_offset_p,
7254                              bit_offset_p, bit_size_p, index_p))
7255         return 1;
7256     }
7257
7258   return 0;
7259 }
7260
7261 /* Number of user-visible fields in record type TYPE.  */
7262
7263 static int
7264 num_visible_fields (struct type *type)
7265 {
7266   int n;
7267
7268   n = 0;
7269   find_struct_field (NULL, type, 0, NULL, NULL, NULL, NULL, &n);
7270   return n;
7271 }
7272
7273 /* Look for a field NAME in ARG.  Adjust the address of ARG by OFFSET bytes,
7274    and search in it assuming it has (class) type TYPE.
7275    If found, return value, else return NULL.
7276
7277    Searches recursively through wrapper fields (e.g., '_parent').
7278
7279    In the case of homonyms in the tagged types, please refer to the
7280    long explanation in find_struct_field's function documentation.  */
7281
7282 static struct value *
7283 ada_search_struct_field (const char *name, struct value *arg, int offset,
7284                          struct type *type)
7285 {
7286   int i;
7287   int parent_offset = -1;
7288
7289   type = ada_check_typedef (type);
7290   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7291     {
7292       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7293
7294       if (t_field_name == NULL)
7295         continue;
7296
7297       else if (ada_is_parent_field (type, i))
7298         {
7299           /* This is a field pointing us to the parent type of a tagged
7300              type.  As hinted in this function's documentation, we give
7301              preference to fields in the current record first, so what
7302              we do here is just record the index of this field before
7303              we skip it.  If it turns out we couldn't find our field
7304              in the current record, then we'll get back to it and search
7305              inside it whether the field might exist in the parent.  */
7306
7307           parent_offset = i;
7308           continue;
7309         }
7310
7311       else if (field_name_match (t_field_name, name))
7312         return ada_value_primitive_field (arg, offset, i, type);
7313
7314       else if (ada_is_wrapper_field (type, i))
7315         {
7316           struct value *v =     /* Do not let indent join lines here.  */
7317             ada_search_struct_field (name, arg,
7318                                      offset + TYPE_FIELD_BITPOS (type, i) / 8,
7319                                      TYPE_FIELD_TYPE (type, i));
7320
7321           if (v != NULL)
7322             return v;
7323         }
7324
7325       else if (ada_is_variant_part (type, i))
7326         {
7327           /* PNH: Do we ever get here?  See find_struct_field.  */
7328           int j;
7329           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7330                                                                         i));
7331           int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
7332
7333           for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
7334             {
7335               struct value *v = ada_search_struct_field /* Force line
7336                                                            break.  */
7337                 (name, arg,
7338                  var_offset + TYPE_FIELD_BITPOS (field_type, j) / 8,
7339                  TYPE_FIELD_TYPE (field_type, j));
7340
7341               if (v != NULL)
7342                 return v;
7343             }
7344         }
7345     }
7346
7347   /* Field not found so far.  If this is a tagged type which
7348      has a parent, try finding that field in the parent now.  */
7349
7350   if (parent_offset != -1)
7351     {
7352       struct value *v = ada_search_struct_field (
7353         name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
7354         TYPE_FIELD_TYPE (type, parent_offset));
7355
7356       if (v != NULL)
7357         return v;
7358     }
7359
7360   return NULL;
7361 }
7362
7363 static struct value *ada_index_struct_field_1 (int *, struct value *,
7364                                                int, struct type *);
7365
7366
7367 /* Return field #INDEX in ARG, where the index is that returned by
7368  * find_struct_field through its INDEX_P argument.  Adjust the address
7369  * of ARG by OFFSET bytes, and search in it assuming it has (class) type TYPE.
7370  * If found, return value, else return NULL.  */
7371
7372 static struct value *
7373 ada_index_struct_field (int index, struct value *arg, int offset,
7374                         struct type *type)
7375 {
7376   return ada_index_struct_field_1 (&index, arg, offset, type);
7377 }
7378
7379
7380 /* Auxiliary function for ada_index_struct_field.  Like
7381  * ada_index_struct_field, but takes index from *INDEX_P and modifies
7382  * *INDEX_P.  */
7383
7384 static struct value *
7385 ada_index_struct_field_1 (int *index_p, struct value *arg, int offset,
7386                           struct type *type)
7387 {
7388   int i;
7389   type = ada_check_typedef (type);
7390
7391   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7392     {
7393       if (TYPE_FIELD_NAME (type, i) == NULL)
7394         continue;
7395       else if (ada_is_wrapper_field (type, i))
7396         {
7397           struct value *v =     /* Do not let indent join lines here.  */
7398             ada_index_struct_field_1 (index_p, arg,
7399                                       offset + TYPE_FIELD_BITPOS (type, i) / 8,
7400                                       TYPE_FIELD_TYPE (type, i));
7401
7402           if (v != NULL)
7403             return v;
7404         }
7405
7406       else if (ada_is_variant_part (type, i))
7407         {
7408           /* PNH: Do we ever get here?  See ada_search_struct_field,
7409              find_struct_field.  */
7410           error (_("Cannot assign this kind of variant record"));
7411         }
7412       else if (*index_p == 0)
7413         return ada_value_primitive_field (arg, offset, i, type);
7414       else
7415         *index_p -= 1;
7416     }
7417   return NULL;
7418 }
7419
7420 /* Given ARG, a value of type (pointer or reference to a)*
7421    structure/union, extract the component named NAME from the ultimate
7422    target structure/union and return it as a value with its
7423    appropriate type.
7424
7425    The routine searches for NAME among all members of the structure itself
7426    and (recursively) among all members of any wrapper members
7427    (e.g., '_parent').
7428
7429    If NO_ERR, then simply return NULL in case of error, rather than 
7430    calling error.  */
7431
7432 struct value *
7433 ada_value_struct_elt (struct value *arg, const char *name, int no_err)
7434 {
7435   struct type *t, *t1;
7436   struct value *v;
7437   int check_tag;
7438
7439   v = NULL;
7440   t1 = t = ada_check_typedef (value_type (arg));
7441   if (TYPE_CODE (t) == TYPE_CODE_REF)
7442     {
7443       t1 = TYPE_TARGET_TYPE (t);
7444       if (t1 == NULL)
7445         goto BadValue;
7446       t1 = ada_check_typedef (t1);
7447       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7448         {
7449           arg = coerce_ref (arg);
7450           t = t1;
7451         }
7452     }
7453
7454   while (TYPE_CODE (t) == TYPE_CODE_PTR)
7455     {
7456       t1 = TYPE_TARGET_TYPE (t);
7457       if (t1 == NULL)
7458         goto BadValue;
7459       t1 = ada_check_typedef (t1);
7460       if (TYPE_CODE (t1) == TYPE_CODE_PTR)
7461         {
7462           arg = value_ind (arg);
7463           t = t1;
7464         }
7465       else
7466         break;
7467     }
7468
7469   if (TYPE_CODE (t1) != TYPE_CODE_STRUCT && TYPE_CODE (t1) != TYPE_CODE_UNION)
7470     goto BadValue;
7471
7472   if (t1 == t)
7473     v = ada_search_struct_field (name, arg, 0, t);
7474   else
7475     {
7476       int bit_offset, bit_size, byte_offset;
7477       struct type *field_type;
7478       CORE_ADDR address;
7479
7480       if (TYPE_CODE (t) == TYPE_CODE_PTR)
7481         address = value_address (ada_value_ind (arg));
7482       else
7483         address = value_address (ada_coerce_ref (arg));
7484
7485       /* Check to see if this is a tagged type.  We also need to handle
7486          the case where the type is a reference to a tagged type, but
7487          we have to be careful to exclude pointers to tagged types.
7488          The latter should be shown as usual (as a pointer), whereas
7489          a reference should mostly be transparent to the user.  */
7490
7491       if (ada_is_tagged_type (t1, 0)
7492           || (TYPE_CODE (t1) == TYPE_CODE_REF
7493               && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
7494         {
7495           /* We first try to find the searched field in the current type.
7496              If not found then let's look in the fixed type.  */
7497
7498           if (!find_struct_field (name, t1, 0,
7499                                   &field_type, &byte_offset, &bit_offset,
7500                                   &bit_size, NULL))
7501             check_tag = 1;
7502           else
7503             check_tag = 0;
7504         }
7505       else
7506         check_tag = 0;
7507
7508       /* Convert to fixed type in all cases, so that we have proper
7509          offsets to each field in unconstrained record types.  */
7510       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
7511                               address, NULL, check_tag);
7512
7513       if (find_struct_field (name, t1, 0,
7514                              &field_type, &byte_offset, &bit_offset,
7515                              &bit_size, NULL))
7516         {
7517           if (bit_size != 0)
7518             {
7519               if (TYPE_CODE (t) == TYPE_CODE_REF)
7520                 arg = ada_coerce_ref (arg);
7521               else
7522                 arg = ada_value_ind (arg);
7523               v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
7524                                                   bit_offset, bit_size,
7525                                                   field_type);
7526             }
7527           else
7528             v = value_at_lazy (field_type, address + byte_offset);
7529         }
7530     }
7531
7532   if (v != NULL || no_err)
7533     return v;
7534   else
7535     error (_("There is no member named %s."), name);
7536
7537  BadValue:
7538   if (no_err)
7539     return NULL;
7540   else
7541     error (_("Attempt to extract a component of "
7542              "a value that is not a record."));
7543 }
7544
7545 /* Return a string representation of type TYPE.  */
7546
7547 static std::string
7548 type_as_string (struct type *type)
7549 {
7550   string_file tmp_stream;
7551
7552   type_print (type, "", &tmp_stream, -1);
7553
7554   return std::move (tmp_stream.string ());
7555 }
7556
7557 /* Given a type TYPE, look up the type of the component of type named NAME.
7558    If DISPP is non-null, add its byte displacement from the beginning of a
7559    structure (pointed to by a value) of type TYPE to *DISPP (does not
7560    work for packed fields).
7561
7562    Matches any field whose name has NAME as a prefix, possibly
7563    followed by "___".
7564
7565    TYPE can be either a struct or union.  If REFOK, TYPE may also 
7566    be a (pointer or reference)+ to a struct or union, and the
7567    ultimate target type will be searched.
7568
7569    Looks recursively into variant clauses and parent types.
7570
7571    In the case of homonyms in the tagged types, please refer to the
7572    long explanation in find_struct_field's function documentation.
7573
7574    If NOERR is nonzero, return NULL if NAME is not suitably defined or
7575    TYPE is not a type of the right kind.  */
7576
7577 static struct type *
7578 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
7579                             int noerr)
7580 {
7581   int i;
7582   int parent_offset = -1;
7583
7584   if (name == NULL)
7585     goto BadName;
7586
7587   if (refok && type != NULL)
7588     while (1)
7589       {
7590         type = ada_check_typedef (type);
7591         if (TYPE_CODE (type) != TYPE_CODE_PTR
7592             && TYPE_CODE (type) != TYPE_CODE_REF)
7593           break;
7594         type = TYPE_TARGET_TYPE (type);
7595       }
7596
7597   if (type == NULL
7598       || (TYPE_CODE (type) != TYPE_CODE_STRUCT
7599           && TYPE_CODE (type) != TYPE_CODE_UNION))
7600     {
7601       if (noerr)
7602         return NULL;
7603
7604       error (_("Type %s is not a structure or union type"),
7605              type != NULL ? type_as_string (type).c_str () : _("(null)"));
7606     }
7607
7608   type = to_static_fixed_type (type);
7609
7610   for (i = 0; i < TYPE_NFIELDS (type); i += 1)
7611     {
7612       const char *t_field_name = TYPE_FIELD_NAME (type, i);
7613       struct type *t;
7614
7615       if (t_field_name == NULL)
7616         continue;
7617
7618       else if (ada_is_parent_field (type, i))
7619         {
7620           /* This is a field pointing us to the parent type of a tagged
7621              type.  As hinted in this function's documentation, we give
7622              preference to fields in the current record first, so what
7623              we do here is just record the index of this field before
7624              we skip it.  If it turns out we couldn't find our field
7625              in the current record, then we'll get back to it and search
7626              inside it whether the field might exist in the parent.  */
7627
7628           parent_offset = i;
7629           continue;
7630         }
7631
7632       else if (field_name_match (t_field_name, name))
7633         return TYPE_FIELD_TYPE (type, i);
7634
7635       else if (ada_is_wrapper_field (type, i))
7636         {
7637           t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
7638                                           0, 1);
7639           if (t != NULL)
7640             return t;
7641         }
7642
7643       else if (ada_is_variant_part (type, i))
7644         {
7645           int j;
7646           struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
7647                                                                         i));
7648
7649           for (j = TYPE_NFIELDS (field_type) - 1; j >= 0; j -= 1)
7650             {
7651               /* FIXME pnh 2008/01/26: We check for a field that is
7652                  NOT wrapped in a struct, since the compiler sometimes
7653                  generates these for unchecked variant types.  Revisit
7654                  if the compiler changes this practice.  */
7655               const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
7656
7657               if (v_field_name != NULL 
7658                   && field_name_match (v_field_name, name))
7659                 t = TYPE_FIELD_TYPE (field_type, j);
7660               else
7661                 t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
7662                                                                  j),
7663                                                 name, 0, 1);
7664
7665               if (t != NULL)
7666                 return t;
7667             }
7668         }
7669
7670     }
7671
7672     /* Field not found so far.  If this is a tagged type which
7673        has a parent, try finding that field in the parent now.  */
7674
7675     if (parent_offset != -1)
7676       {
7677         struct type *t;
7678
7679         t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
7680                                         name, 0, 1);
7681         if (t != NULL)
7682           return t;
7683       }
7684
7685 BadName:
7686   if (!noerr)
7687     {
7688       const char *name_str = name != NULL ? name : _("<null>");
7689
7690       error (_("Type %s has no component named %s"),
7691              type_as_string (type).c_str (), name_str);
7692     }
7693
7694   return NULL;
7695 }
7696
7697 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7698    within a value of type OUTER_TYPE, return true iff VAR_TYPE
7699    represents an unchecked union (that is, the variant part of a
7700    record that is named in an Unchecked_Union pragma).  */
7701
7702 static int
7703 is_unchecked_variant (struct type *var_type, struct type *outer_type)
7704 {
7705   const char *discrim_name = ada_variant_discrim_name (var_type);
7706
7707   return (ada_lookup_struct_elt_type (outer_type, discrim_name, 0, 1) == NULL);
7708 }
7709
7710
7711 /* Assuming that VAR_TYPE is the type of a variant part of a record (a union),
7712    within a value of type OUTER_TYPE that is stored in GDB at
7713    OUTER_VALADDR, determine which variant clause (field number in VAR_TYPE,
7714    numbering from 0) is applicable.  Returns -1 if none are.  */
7715
7716 int
7717 ada_which_variant_applies (struct type *var_type, struct type *outer_type,
7718                            const gdb_byte *outer_valaddr)
7719 {
7720   int others_clause;
7721   int i;
7722   const char *discrim_name = ada_variant_discrim_name (var_type);
7723   struct value *outer;
7724   struct value *discrim;
7725   LONGEST discrim_val;
7726
7727   /* Using plain value_from_contents_and_address here causes problems
7728      because we will end up trying to resolve a type that is currently
7729      being constructed.  */
7730   outer = value_from_contents_and_address_unresolved (outer_type,
7731                                                       outer_valaddr, 0);
7732   discrim = ada_value_struct_elt (outer, discrim_name, 1);
7733   if (discrim == NULL)
7734     return -1;
7735   discrim_val = value_as_long (discrim);
7736
7737   others_clause = -1;
7738   for (i = 0; i < TYPE_NFIELDS (var_type); i += 1)
7739     {
7740       if (ada_is_others_clause (var_type, i))
7741         others_clause = i;
7742       else if (ada_in_variant (discrim_val, var_type, i))
7743         return i;
7744     }
7745
7746   return others_clause;
7747 }
7748 \f
7749
7750
7751                                 /* Dynamic-Sized Records */
7752
7753 /* Strategy: The type ostensibly attached to a value with dynamic size
7754    (i.e., a size that is not statically recorded in the debugging
7755    data) does not accurately reflect the size or layout of the value.
7756    Our strategy is to convert these values to values with accurate,
7757    conventional types that are constructed on the fly.  */
7758
7759 /* There is a subtle and tricky problem here.  In general, we cannot
7760    determine the size of dynamic records without its data.  However,
7761    the 'struct value' data structure, which GDB uses to represent
7762    quantities in the inferior process (the target), requires the size
7763    of the type at the time of its allocation in order to reserve space
7764    for GDB's internal copy of the data.  That's why the
7765    'to_fixed_xxx_type' routines take (target) addresses as parameters,
7766    rather than struct value*s.
7767
7768    However, GDB's internal history variables ($1, $2, etc.) are
7769    struct value*s containing internal copies of the data that are not, in
7770    general, the same as the data at their corresponding addresses in
7771    the target.  Fortunately, the types we give to these values are all
7772    conventional, fixed-size types (as per the strategy described
7773    above), so that we don't usually have to perform the
7774    'to_fixed_xxx_type' conversions to look at their values.
7775    Unfortunately, there is one exception: if one of the internal
7776    history variables is an array whose elements are unconstrained
7777    records, then we will need to create distinct fixed types for each
7778    element selected.  */
7779
7780 /* The upshot of all of this is that many routines take a (type, host
7781    address, target address) triple as arguments to represent a value.
7782    The host address, if non-null, is supposed to contain an internal
7783    copy of the relevant data; otherwise, the program is to consult the
7784    target at the target address.  */
7785
7786 /* Assuming that VAL0 represents a pointer value, the result of
7787    dereferencing it.  Differs from value_ind in its treatment of
7788    dynamic-sized types.  */
7789
7790 struct value *
7791 ada_value_ind (struct value *val0)
7792 {
7793   struct value *val = value_ind (val0);
7794
7795   if (ada_is_tagged_type (value_type (val), 0))
7796     val = ada_tag_value_at_base_address (val);
7797
7798   return ada_to_fixed_value (val);
7799 }
7800
7801 /* The value resulting from dereferencing any "reference to"
7802    qualifiers on VAL0.  */
7803
7804 static struct value *
7805 ada_coerce_ref (struct value *val0)
7806 {
7807   if (TYPE_CODE (value_type (val0)) == TYPE_CODE_REF)
7808     {
7809       struct value *val = val0;
7810
7811       val = coerce_ref (val);
7812
7813       if (ada_is_tagged_type (value_type (val), 0))
7814         val = ada_tag_value_at_base_address (val);
7815
7816       return ada_to_fixed_value (val);
7817     }
7818   else
7819     return val0;
7820 }
7821
7822 /* Return OFF rounded upward if necessary to a multiple of
7823    ALIGNMENT (a power of 2).  */
7824
7825 static unsigned int
7826 align_value (unsigned int off, unsigned int alignment)
7827 {
7828   return (off + alignment - 1) & ~(alignment - 1);
7829 }
7830
7831 /* Return the bit alignment required for field #F of template type TYPE.  */
7832
7833 static unsigned int
7834 field_alignment (struct type *type, int f)
7835 {
7836   const char *name = TYPE_FIELD_NAME (type, f);
7837   int len;
7838   int align_offset;
7839
7840   /* The field name should never be null, unless the debugging information
7841      is somehow malformed.  In this case, we assume the field does not
7842      require any alignment.  */
7843   if (name == NULL)
7844     return 1;
7845
7846   len = strlen (name);
7847
7848   if (!isdigit (name[len - 1]))
7849     return 1;
7850
7851   if (isdigit (name[len - 2]))
7852     align_offset = len - 2;
7853   else
7854     align_offset = len - 1;
7855
7856   if (align_offset < 7 || !startswith (name + align_offset - 6, "___XV"))
7857     return TARGET_CHAR_BIT;
7858
7859   return atoi (name + align_offset) * TARGET_CHAR_BIT;
7860 }
7861
7862 /* Find a typedef or tag symbol named NAME.  Ignores ambiguity.  */
7863
7864 static struct symbol *
7865 ada_find_any_type_symbol (const char *name)
7866 {
7867   struct symbol *sym;
7868
7869   sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
7870   if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
7871     return sym;
7872
7873   sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
7874   return sym;
7875 }
7876
7877 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
7878    solely for types defined by debug info, it will not search the GDB
7879    primitive types.  */
7880
7881 static struct type *
7882 ada_find_any_type (const char *name)
7883 {
7884   struct symbol *sym = ada_find_any_type_symbol (name);
7885
7886   if (sym != NULL)
7887     return SYMBOL_TYPE (sym);
7888
7889   return NULL;
7890 }
7891
7892 /* Given NAME_SYM and an associated BLOCK, find a "renaming" symbol
7893    associated with NAME_SYM's name.  NAME_SYM may itself be a renaming
7894    symbol, in which case it is returned.  Otherwise, this looks for
7895    symbols whose name is that of NAME_SYM suffixed with  "___XR".
7896    Return symbol if found, and NULL otherwise.  */
7897
7898 static bool
7899 ada_is_renaming_symbol (struct symbol *name_sym)
7900 {
7901   const char *name = SYMBOL_LINKAGE_NAME (name_sym);
7902   return strstr (name, "___XR") != NULL;
7903 }
7904
7905 /* Because of GNAT encoding conventions, several GDB symbols may match a
7906    given type name.  If the type denoted by TYPE0 is to be preferred to
7907    that of TYPE1 for purposes of type printing, return non-zero;
7908    otherwise return 0.  */
7909
7910 int
7911 ada_prefer_type (struct type *type0, struct type *type1)
7912 {
7913   if (type1 == NULL)
7914     return 1;
7915   else if (type0 == NULL)
7916     return 0;
7917   else if (TYPE_CODE (type1) == TYPE_CODE_VOID)
7918     return 1;
7919   else if (TYPE_CODE (type0) == TYPE_CODE_VOID)
7920     return 0;
7921   else if (TYPE_NAME (type1) == NULL && TYPE_NAME (type0) != NULL)
7922     return 1;
7923   else if (ada_is_constrained_packed_array_type (type0))
7924     return 1;
7925   else if (ada_is_array_descriptor_type (type0)
7926            && !ada_is_array_descriptor_type (type1))
7927     return 1;
7928   else
7929     {
7930       const char *type0_name = TYPE_NAME (type0);
7931       const char *type1_name = TYPE_NAME (type1);
7932
7933       if (type0_name != NULL && strstr (type0_name, "___XR") != NULL
7934           && (type1_name == NULL || strstr (type1_name, "___XR") == NULL))
7935         return 1;
7936     }
7937   return 0;
7938 }
7939
7940 /* The name of TYPE, which is its TYPE_NAME.  Null if TYPE is
7941    null.  */
7942
7943 const char *
7944 ada_type_name (struct type *type)
7945 {
7946   if (type == NULL)
7947     return NULL;
7948   return TYPE_NAME (type);
7949 }
7950
7951 /* Search the list of "descriptive" types associated to TYPE for a type
7952    whose name is NAME.  */
7953
7954 static struct type *
7955 find_parallel_type_by_descriptive_type (struct type *type, const char *name)
7956 {
7957   struct type *result, *tmp;
7958
7959   if (ada_ignore_descriptive_types_p)
7960     return NULL;
7961
7962   /* If there no descriptive-type info, then there is no parallel type
7963      to be found.  */
7964   if (!HAVE_GNAT_AUX_INFO (type))
7965     return NULL;
7966
7967   result = TYPE_DESCRIPTIVE_TYPE (type);
7968   while (result != NULL)
7969     {
7970       const char *result_name = ada_type_name (result);
7971
7972       if (result_name == NULL)
7973         {
7974           warning (_("unexpected null name on descriptive type"));
7975           return NULL;
7976         }
7977
7978       /* If the names match, stop.  */
7979       if (strcmp (result_name, name) == 0)
7980         break;
7981
7982       /* Otherwise, look at the next item on the list, if any.  */
7983       if (HAVE_GNAT_AUX_INFO (result))
7984         tmp = TYPE_DESCRIPTIVE_TYPE (result);
7985       else
7986         tmp = NULL;
7987
7988       /* If not found either, try after having resolved the typedef.  */
7989       if (tmp != NULL)
7990         result = tmp;
7991       else
7992         {
7993           result = check_typedef (result);
7994           if (HAVE_GNAT_AUX_INFO (result))
7995             result = TYPE_DESCRIPTIVE_TYPE (result);
7996           else
7997             result = NULL;
7998         }
7999     }
8000
8001   /* If we didn't find a match, see whether this is a packed array.  With
8002      older compilers, the descriptive type information is either absent or
8003      irrelevant when it comes to packed arrays so the above lookup fails.
8004      Fall back to using a parallel lookup by name in this case.  */
8005   if (result == NULL && ada_is_constrained_packed_array_type (type))
8006     return ada_find_any_type (name);
8007
8008   return result;
8009 }
8010
8011 /* Find a parallel type to TYPE with the specified NAME, using the
8012    descriptive type taken from the debugging information, if available,
8013    and otherwise using the (slower) name-based method.  */
8014
8015 static struct type *
8016 ada_find_parallel_type_with_name (struct type *type, const char *name)
8017 {
8018   struct type *result = NULL;
8019
8020   if (HAVE_GNAT_AUX_INFO (type))
8021     result = find_parallel_type_by_descriptive_type (type, name);
8022   else
8023     result = ada_find_any_type (name);
8024
8025   return result;
8026 }
8027
8028 /* Same as above, but specify the name of the parallel type by appending
8029    SUFFIX to the name of TYPE.  */
8030
8031 struct type *
8032 ada_find_parallel_type (struct type *type, const char *suffix)
8033 {
8034   char *name;
8035   const char *type_name = ada_type_name (type);
8036   int len;
8037
8038   if (type_name == NULL)
8039     return NULL;
8040
8041   len = strlen (type_name);
8042
8043   name = (char *) alloca (len + strlen (suffix) + 1);
8044
8045   strcpy (name, type_name);
8046   strcpy (name + len, suffix);
8047
8048   return ada_find_parallel_type_with_name (type, name);
8049 }
8050
8051 /* If TYPE is a variable-size record type, return the corresponding template
8052    type describing its fields.  Otherwise, return NULL.  */
8053
8054 static struct type *
8055 dynamic_template_type (struct type *type)
8056 {
8057   type = ada_check_typedef (type);
8058
8059   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT
8060       || ada_type_name (type) == NULL)
8061     return NULL;
8062   else
8063     {
8064       int len = strlen (ada_type_name (type));
8065
8066       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
8067         return type;
8068       else
8069         return ada_find_parallel_type (type, "___XVE");
8070     }
8071 }
8072
8073 /* Assuming that TEMPL_TYPE is a union or struct type, returns
8074    non-zero iff field FIELD_NUM of TEMPL_TYPE has dynamic size.  */
8075
8076 static int
8077 is_dynamic_field (struct type *templ_type, int field_num)
8078 {
8079   const char *name = TYPE_FIELD_NAME (templ_type, field_num);
8080
8081   return name != NULL
8082     && TYPE_CODE (TYPE_FIELD_TYPE (templ_type, field_num)) == TYPE_CODE_PTR
8083     && strstr (name, "___XVL") != NULL;
8084 }
8085
8086 /* The index of the variant field of TYPE, or -1 if TYPE does not
8087    represent a variant record type.  */
8088
8089 static int
8090 variant_field_index (struct type *type)
8091 {
8092   int f;
8093
8094   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_STRUCT)
8095     return -1;
8096
8097   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
8098     {
8099       if (ada_is_variant_part (type, f))
8100         return f;
8101     }
8102   return -1;
8103 }
8104
8105 /* A record type with no fields.  */
8106
8107 static struct type *
8108 empty_record (struct type *templ)
8109 {
8110   struct type *type = alloc_type_copy (templ);
8111
8112   TYPE_CODE (type) = TYPE_CODE_STRUCT;
8113   TYPE_NFIELDS (type) = 0;
8114   TYPE_FIELDS (type) = NULL;
8115   INIT_NONE_SPECIFIC (type);
8116   TYPE_NAME (type) = "<empty>";
8117   TYPE_LENGTH (type) = 0;
8118   return type;
8119 }
8120
8121 /* An ordinary record type (with fixed-length fields) that describes
8122    the value of type TYPE at VALADDR or ADDRESS (see comments at
8123    the beginning of this section) VAL according to GNAT conventions.
8124    DVAL0 should describe the (portion of a) record that contains any
8125    necessary discriminants.  It should be NULL if value_type (VAL) is
8126    an outer-level type (i.e., as opposed to a branch of a variant.)  A
8127    variant field (unless unchecked) is replaced by a particular branch
8128    of the variant.
8129
8130    If not KEEP_DYNAMIC_FIELDS, then all fields whose position or
8131    length are not statically known are discarded.  As a consequence,
8132    VALADDR, ADDRESS and DVAL0 are ignored.
8133
8134    NOTE: Limitations: For now, we assume that dynamic fields and
8135    variants occupy whole numbers of bytes.  However, they need not be
8136    byte-aligned.  */
8137
8138 struct type *
8139 ada_template_to_fixed_record_type_1 (struct type *type,
8140                                      const gdb_byte *valaddr,
8141                                      CORE_ADDR address, struct value *dval0,
8142                                      int keep_dynamic_fields)
8143 {
8144   struct value *mark = value_mark ();
8145   struct value *dval;
8146   struct type *rtype;
8147   int nfields, bit_len;
8148   int variant_field;
8149   long off;
8150   int fld_bit_len;
8151   int f;
8152
8153   /* Compute the number of fields in this record type that are going
8154      to be processed: unless keep_dynamic_fields, this includes only
8155      fields whose position and length are static will be processed.  */
8156   if (keep_dynamic_fields)
8157     nfields = TYPE_NFIELDS (type);
8158   else
8159     {
8160       nfields = 0;
8161       while (nfields < TYPE_NFIELDS (type)
8162              && !ada_is_variant_part (type, nfields)
8163              && !is_dynamic_field (type, nfields))
8164         nfields++;
8165     }
8166
8167   rtype = alloc_type_copy (type);
8168   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8169   INIT_NONE_SPECIFIC (rtype);
8170   TYPE_NFIELDS (rtype) = nfields;
8171   TYPE_FIELDS (rtype) = (struct field *)
8172     TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8173   memset (TYPE_FIELDS (rtype), 0, sizeof (struct field) * nfields);
8174   TYPE_NAME (rtype) = ada_type_name (type);
8175   TYPE_FIXED_INSTANCE (rtype) = 1;
8176
8177   off = 0;
8178   bit_len = 0;
8179   variant_field = -1;
8180
8181   for (f = 0; f < nfields; f += 1)
8182     {
8183       off = align_value (off, field_alignment (type, f))
8184         + TYPE_FIELD_BITPOS (type, f);
8185       SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
8186       TYPE_FIELD_BITSIZE (rtype, f) = 0;
8187
8188       if (ada_is_variant_part (type, f))
8189         {
8190           variant_field = f;
8191           fld_bit_len = 0;
8192         }
8193       else if (is_dynamic_field (type, f))
8194         {
8195           const gdb_byte *field_valaddr = valaddr;
8196           CORE_ADDR field_address = address;
8197           struct type *field_type =
8198             TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
8199
8200           if (dval0 == NULL)
8201             {
8202               /* rtype's length is computed based on the run-time
8203                  value of discriminants.  If the discriminants are not
8204                  initialized, the type size may be completely bogus and
8205                  GDB may fail to allocate a value for it.  So check the
8206                  size first before creating the value.  */
8207               ada_ensure_varsize_limit (rtype);
8208               /* Using plain value_from_contents_and_address here
8209                  causes problems because we will end up trying to
8210                  resolve a type that is currently being
8211                  constructed.  */
8212               dval = value_from_contents_and_address_unresolved (rtype,
8213                                                                  valaddr,
8214                                                                  address);
8215               rtype = value_type (dval);
8216             }
8217           else
8218             dval = dval0;
8219
8220           /* If the type referenced by this field is an aligner type, we need
8221              to unwrap that aligner type, because its size might not be set.
8222              Keeping the aligner type would cause us to compute the wrong
8223              size for this field, impacting the offset of the all the fields
8224              that follow this one.  */
8225           if (ada_is_aligner_type (field_type))
8226             {
8227               long field_offset = TYPE_FIELD_BITPOS (field_type, f);
8228
8229               field_valaddr = cond_offset_host (field_valaddr, field_offset);
8230               field_address = cond_offset_target (field_address, field_offset);
8231               field_type = ada_aligned_type (field_type);
8232             }
8233
8234           field_valaddr = cond_offset_host (field_valaddr,
8235                                             off / TARGET_CHAR_BIT);
8236           field_address = cond_offset_target (field_address,
8237                                               off / TARGET_CHAR_BIT);
8238
8239           /* Get the fixed type of the field.  Note that, in this case,
8240              we do not want to get the real type out of the tag: if
8241              the current field is the parent part of a tagged record,
8242              we will get the tag of the object.  Clearly wrong: the real
8243              type of the parent is not the real type of the child.  We
8244              would end up in an infinite loop.  */
8245           field_type = ada_get_base_type (field_type);
8246           field_type = ada_to_fixed_type (field_type, field_valaddr,
8247                                           field_address, dval, 0);
8248           /* If the field size is already larger than the maximum
8249              object size, then the record itself will necessarily
8250              be larger than the maximum object size.  We need to make
8251              this check now, because the size might be so ridiculously
8252              large (due to an uninitialized variable in the inferior)
8253              that it would cause an overflow when adding it to the
8254              record size.  */
8255           ada_ensure_varsize_limit (field_type);
8256
8257           TYPE_FIELD_TYPE (rtype, f) = field_type;
8258           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8259           /* The multiplication can potentially overflow.  But because
8260              the field length has been size-checked just above, and
8261              assuming that the maximum size is a reasonable value,
8262              an overflow should not happen in practice.  So rather than
8263              adding overflow recovery code to this already complex code,
8264              we just assume that it's not going to happen.  */
8265           fld_bit_len =
8266             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, f)) * TARGET_CHAR_BIT;
8267         }
8268       else
8269         {
8270           /* Note: If this field's type is a typedef, it is important
8271              to preserve the typedef layer.
8272
8273              Otherwise, we might be transforming a typedef to a fat
8274              pointer (encoding a pointer to an unconstrained array),
8275              into a basic fat pointer (encoding an unconstrained
8276              array).  As both types are implemented using the same
8277              structure, the typedef is the only clue which allows us
8278              to distinguish between the two options.  Stripping it
8279              would prevent us from printing this field appropriately.  */
8280           TYPE_FIELD_TYPE (rtype, f) = TYPE_FIELD_TYPE (type, f);
8281           TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
8282           if (TYPE_FIELD_BITSIZE (type, f) > 0)
8283             fld_bit_len =
8284               TYPE_FIELD_BITSIZE (rtype, f) = TYPE_FIELD_BITSIZE (type, f);
8285           else
8286             {
8287               struct type *field_type = TYPE_FIELD_TYPE (type, f);
8288
8289               /* We need to be careful of typedefs when computing
8290                  the length of our field.  If this is a typedef,
8291                  get the length of the target type, not the length
8292                  of the typedef.  */
8293               if (TYPE_CODE (field_type) == TYPE_CODE_TYPEDEF)
8294                 field_type = ada_typedef_target_type (field_type);
8295
8296               fld_bit_len =
8297                 TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
8298             }
8299         }
8300       if (off + fld_bit_len > bit_len)
8301         bit_len = off + fld_bit_len;
8302       off += fld_bit_len;
8303       TYPE_LENGTH (rtype) =
8304         align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8305     }
8306
8307   /* We handle the variant part, if any, at the end because of certain
8308      odd cases in which it is re-ordered so as NOT to be the last field of
8309      the record.  This can happen in the presence of representation
8310      clauses.  */
8311   if (variant_field >= 0)
8312     {
8313       struct type *branch_type;
8314
8315       off = TYPE_FIELD_BITPOS (rtype, variant_field);
8316
8317       if (dval0 == NULL)
8318         {
8319           /* Using plain value_from_contents_and_address here causes
8320              problems because we will end up trying to resolve a type
8321              that is currently being constructed.  */
8322           dval = value_from_contents_and_address_unresolved (rtype, valaddr,
8323                                                              address);
8324           rtype = value_type (dval);
8325         }
8326       else
8327         dval = dval0;
8328
8329       branch_type =
8330         to_fixed_variant_branch_type
8331         (TYPE_FIELD_TYPE (type, variant_field),
8332          cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
8333          cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
8334       if (branch_type == NULL)
8335         {
8336           for (f = variant_field + 1; f < TYPE_NFIELDS (rtype); f += 1)
8337             TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8338           TYPE_NFIELDS (rtype) -= 1;
8339         }
8340       else
8341         {
8342           TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8343           TYPE_FIELD_NAME (rtype, variant_field) = "S";
8344           fld_bit_len =
8345             TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
8346             TARGET_CHAR_BIT;
8347           if (off + fld_bit_len > bit_len)
8348             bit_len = off + fld_bit_len;
8349           TYPE_LENGTH (rtype) =
8350             align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
8351         }
8352     }
8353
8354   /* According to exp_dbug.ads, the size of TYPE for variable-size records
8355      should contain the alignment of that record, which should be a strictly
8356      positive value.  If null or negative, then something is wrong, most
8357      probably in the debug info.  In that case, we don't round up the size
8358      of the resulting type.  If this record is not part of another structure,
8359      the current RTYPE length might be good enough for our purposes.  */
8360   if (TYPE_LENGTH (type) <= 0)
8361     {
8362       if (TYPE_NAME (rtype))
8363         warning (_("Invalid type size for `%s' detected: %s."),
8364                  TYPE_NAME (rtype), pulongest (TYPE_LENGTH (type)));
8365       else
8366         warning (_("Invalid type size for <unnamed> detected: %s."),
8367                  pulongest (TYPE_LENGTH (type)));
8368     }
8369   else
8370     {
8371       TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
8372                                          TYPE_LENGTH (type));
8373     }
8374
8375   value_free_to_mark (mark);
8376   if (TYPE_LENGTH (rtype) > varsize_limit)
8377     error (_("record type with dynamic size is larger than varsize-limit"));
8378   return rtype;
8379 }
8380
8381 /* As for ada_template_to_fixed_record_type_1 with KEEP_DYNAMIC_FIELDS
8382    of 1.  */
8383
8384 static struct type *
8385 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
8386                                CORE_ADDR address, struct value *dval0)
8387 {
8388   return ada_template_to_fixed_record_type_1 (type, valaddr,
8389                                               address, dval0, 1);
8390 }
8391
8392 /* An ordinary record type in which ___XVL-convention fields and
8393    ___XVU- and ___XVN-convention field types in TYPE0 are replaced with
8394    static approximations, containing all possible fields.  Uses
8395    no runtime values.  Useless for use in values, but that's OK,
8396    since the results are used only for type determinations.   Works on both
8397    structs and unions.  Representation note: to save space, we memorize
8398    the result of this function in the TYPE_TARGET_TYPE of the
8399    template type.  */
8400
8401 static struct type *
8402 template_to_static_fixed_type (struct type *type0)
8403 {
8404   struct type *type;
8405   int nfields;
8406   int f;
8407
8408   /* No need no do anything if the input type is already fixed.  */
8409   if (TYPE_FIXED_INSTANCE (type0))
8410     return type0;
8411
8412   /* Likewise if we already have computed the static approximation.  */
8413   if (TYPE_TARGET_TYPE (type0) != NULL)
8414     return TYPE_TARGET_TYPE (type0);
8415
8416   /* Don't clone TYPE0 until we are sure we are going to need a copy.  */
8417   type = type0;
8418   nfields = TYPE_NFIELDS (type0);
8419
8420   /* Whether or not we cloned TYPE0, cache the result so that we don't do
8421      recompute all over next time.  */
8422   TYPE_TARGET_TYPE (type0) = type;
8423
8424   for (f = 0; f < nfields; f += 1)
8425     {
8426       struct type *field_type = TYPE_FIELD_TYPE (type0, f);
8427       struct type *new_type;
8428
8429       if (is_dynamic_field (type0, f))
8430         {
8431           field_type = ada_check_typedef (field_type);
8432           new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
8433         }
8434       else
8435         new_type = static_unwrap_type (field_type);
8436
8437       if (new_type != field_type)
8438         {
8439           /* Clone TYPE0 only the first time we get a new field type.  */
8440           if (type == type0)
8441             {
8442               TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
8443               TYPE_CODE (type) = TYPE_CODE (type0);
8444               INIT_NONE_SPECIFIC (type);
8445               TYPE_NFIELDS (type) = nfields;
8446               TYPE_FIELDS (type) = (struct field *)
8447                 TYPE_ALLOC (type, nfields * sizeof (struct field));
8448               memcpy (TYPE_FIELDS (type), TYPE_FIELDS (type0),
8449                       sizeof (struct field) * nfields);
8450               TYPE_NAME (type) = ada_type_name (type0);
8451               TYPE_FIXED_INSTANCE (type) = 1;
8452               TYPE_LENGTH (type) = 0;
8453             }
8454           TYPE_FIELD_TYPE (type, f) = new_type;
8455           TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
8456         }
8457     }
8458
8459   return type;
8460 }
8461
8462 /* Given an object of type TYPE whose contents are at VALADDR and
8463    whose address in memory is ADDRESS, returns a revision of TYPE,
8464    which should be a non-dynamic-sized record, in which the variant
8465    part, if any, is replaced with the appropriate branch.  Looks
8466    for discriminant values in DVAL0, which can be NULL if the record
8467    contains the necessary discriminant values.  */
8468
8469 static struct type *
8470 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
8471                                    CORE_ADDR address, struct value *dval0)
8472 {
8473   struct value *mark = value_mark ();
8474   struct value *dval;
8475   struct type *rtype;
8476   struct type *branch_type;
8477   int nfields = TYPE_NFIELDS (type);
8478   int variant_field = variant_field_index (type);
8479
8480   if (variant_field == -1)
8481     return type;
8482
8483   if (dval0 == NULL)
8484     {
8485       dval = value_from_contents_and_address (type, valaddr, address);
8486       type = value_type (dval);
8487     }
8488   else
8489     dval = dval0;
8490
8491   rtype = alloc_type_copy (type);
8492   TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
8493   INIT_NONE_SPECIFIC (rtype);
8494   TYPE_NFIELDS (rtype) = nfields;
8495   TYPE_FIELDS (rtype) =
8496     (struct field *) TYPE_ALLOC (rtype, nfields * sizeof (struct field));
8497   memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
8498           sizeof (struct field) * nfields);
8499   TYPE_NAME (rtype) = ada_type_name (type);
8500   TYPE_FIXED_INSTANCE (rtype) = 1;
8501   TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
8502
8503   branch_type = to_fixed_variant_branch_type
8504     (TYPE_FIELD_TYPE (type, variant_field),
8505      cond_offset_host (valaddr,
8506                        TYPE_FIELD_BITPOS (type, variant_field)
8507                        / TARGET_CHAR_BIT),
8508      cond_offset_target (address,
8509                          TYPE_FIELD_BITPOS (type, variant_field)
8510                          / TARGET_CHAR_BIT), dval);
8511   if (branch_type == NULL)
8512     {
8513       int f;
8514
8515       for (f = variant_field + 1; f < nfields; f += 1)
8516         TYPE_FIELDS (rtype)[f - 1] = TYPE_FIELDS (rtype)[f];
8517       TYPE_NFIELDS (rtype) -= 1;
8518     }
8519   else
8520     {
8521       TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
8522       TYPE_FIELD_NAME (rtype, variant_field) = "S";
8523       TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
8524       TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
8525     }
8526   TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
8527
8528   value_free_to_mark (mark);
8529   return rtype;
8530 }
8531
8532 /* An ordinary record type (with fixed-length fields) that describes
8533    the value at (TYPE0, VALADDR, ADDRESS) [see explanation at
8534    beginning of this section].   Any necessary discriminants' values
8535    should be in DVAL, a record value; it may be NULL if the object
8536    at ADDR itself contains any necessary discriminant values.
8537    Additionally, VALADDR and ADDRESS may also be NULL if no discriminant
8538    values from the record are needed.  Except in the case that DVAL,
8539    VALADDR, and ADDRESS are all 0 or NULL, a variant field (unless
8540    unchecked) is replaced by a particular branch of the variant.
8541
8542    NOTE: the case in which DVAL and VALADDR are NULL and ADDRESS is 0
8543    is questionable and may be removed.  It can arise during the
8544    processing of an unconstrained-array-of-record type where all the
8545    variant branches have exactly the same size.  This is because in
8546    such cases, the compiler does not bother to use the XVS convention
8547    when encoding the record.  I am currently dubious of this
8548    shortcut and suspect the compiler should be altered.  FIXME.  */
8549
8550 static struct type *
8551 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
8552                       CORE_ADDR address, struct value *dval)
8553 {
8554   struct type *templ_type;
8555
8556   if (TYPE_FIXED_INSTANCE (type0))
8557     return type0;
8558
8559   templ_type = dynamic_template_type (type0);
8560
8561   if (templ_type != NULL)
8562     return template_to_fixed_record_type (templ_type, valaddr, address, dval);
8563   else if (variant_field_index (type0) >= 0)
8564     {
8565       if (dval == NULL && valaddr == NULL && address == 0)
8566         return type0;
8567       return to_record_with_fixed_variant_part (type0, valaddr, address,
8568                                                 dval);
8569     }
8570   else
8571     {
8572       TYPE_FIXED_INSTANCE (type0) = 1;
8573       return type0;
8574     }
8575
8576 }
8577
8578 /* An ordinary record type (with fixed-length fields) that describes
8579    the value at (VAR_TYPE0, VALADDR, ADDRESS), where VAR_TYPE0 is a
8580    union type.  Any necessary discriminants' values should be in DVAL,
8581    a record value.  That is, this routine selects the appropriate
8582    branch of the union at ADDR according to the discriminant value
8583    indicated in the union's type name.  Returns VAR_TYPE0 itself if
8584    it represents a variant subject to a pragma Unchecked_Union.  */
8585
8586 static struct type *
8587 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
8588                               CORE_ADDR address, struct value *dval)
8589 {
8590   int which;
8591   struct type *templ_type;
8592   struct type *var_type;
8593
8594   if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
8595     var_type = TYPE_TARGET_TYPE (var_type0);
8596   else
8597     var_type = var_type0;
8598
8599   templ_type = ada_find_parallel_type (var_type, "___XVU");
8600
8601   if (templ_type != NULL)
8602     var_type = templ_type;
8603
8604   if (is_unchecked_variant (var_type, value_type (dval)))
8605       return var_type0;
8606   which =
8607     ada_which_variant_applies (var_type,
8608                                value_type (dval), value_contents (dval));
8609
8610   if (which < 0)
8611     return empty_record (var_type);
8612   else if (is_dynamic_field (var_type, which))
8613     return to_fixed_record_type
8614       (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (var_type, which)),
8615        valaddr, address, dval);
8616   else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
8617     return
8618       to_fixed_record_type
8619       (TYPE_FIELD_TYPE (var_type, which), valaddr, address, dval);
8620   else
8621     return TYPE_FIELD_TYPE (var_type, which);
8622 }
8623
8624 /* Assuming RANGE_TYPE is a TYPE_CODE_RANGE, return nonzero if
8625    ENCODING_TYPE, a type following the GNAT conventions for discrete
8626    type encodings, only carries redundant information.  */
8627
8628 static int
8629 ada_is_redundant_range_encoding (struct type *range_type,
8630                                  struct type *encoding_type)
8631 {
8632   const char *bounds_str;
8633   int n;
8634   LONGEST lo, hi;
8635
8636   gdb_assert (TYPE_CODE (range_type) == TYPE_CODE_RANGE);
8637
8638   if (TYPE_CODE (get_base_type (range_type))
8639       != TYPE_CODE (get_base_type (encoding_type)))
8640     {
8641       /* The compiler probably used a simple base type to describe
8642          the range type instead of the range's actual base type,
8643          expecting us to get the real base type from the encoding
8644          anyway.  In this situation, the encoding cannot be ignored
8645          as redundant.  */
8646       return 0;
8647     }
8648
8649   if (is_dynamic_type (range_type))
8650     return 0;
8651
8652   if (TYPE_NAME (encoding_type) == NULL)
8653     return 0;
8654
8655   bounds_str = strstr (TYPE_NAME (encoding_type), "___XDLU_");
8656   if (bounds_str == NULL)
8657     return 0;
8658
8659   n = 8; /* Skip "___XDLU_".  */
8660   if (!ada_scan_number (bounds_str, n, &lo, &n))
8661     return 0;
8662   if (TYPE_LOW_BOUND (range_type) != lo)
8663     return 0;
8664
8665   n += 2; /* Skip the "__" separator between the two bounds.  */
8666   if (!ada_scan_number (bounds_str, n, &hi, &n))
8667     return 0;
8668   if (TYPE_HIGH_BOUND (range_type) != hi)
8669     return 0;
8670
8671   return 1;
8672 }
8673
8674 /* Given the array type ARRAY_TYPE, return nonzero if DESC_TYPE,
8675    a type following the GNAT encoding for describing array type
8676    indices, only carries redundant information.  */
8677
8678 static int
8679 ada_is_redundant_index_type_desc (struct type *array_type,
8680                                   struct type *desc_type)
8681 {
8682   struct type *this_layer = check_typedef (array_type);
8683   int i;
8684
8685   for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
8686     {
8687       if (!ada_is_redundant_range_encoding (TYPE_INDEX_TYPE (this_layer),
8688                                             TYPE_FIELD_TYPE (desc_type, i)))
8689         return 0;
8690       this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
8691     }
8692
8693   return 1;
8694 }
8695
8696 /* Assuming that TYPE0 is an array type describing the type of a value
8697    at ADDR, and that DVAL describes a record containing any
8698    discriminants used in TYPE0, returns a type for the value that
8699    contains no dynamic components (that is, no components whose sizes
8700    are determined by run-time quantities).  Unless IGNORE_TOO_BIG is
8701    true, gives an error message if the resulting type's size is over
8702    varsize_limit.  */
8703
8704 static struct type *
8705 to_fixed_array_type (struct type *type0, struct value *dval,
8706                      int ignore_too_big)
8707 {
8708   struct type *index_type_desc;
8709   struct type *result;
8710   int constrained_packed_array_p;
8711   static const char *xa_suffix = "___XA";
8712
8713   type0 = ada_check_typedef (type0);
8714   if (TYPE_FIXED_INSTANCE (type0))
8715     return type0;
8716
8717   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
8718   if (constrained_packed_array_p)
8719     type0 = decode_constrained_packed_array_type (type0);
8720
8721   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
8722
8723   /* As mentioned in exp_dbug.ads, for non bit-packed arrays an
8724      encoding suffixed with 'P' may still be generated.  If so,
8725      it should be used to find the XA type.  */
8726
8727   if (index_type_desc == NULL)
8728     {
8729       const char *type_name = ada_type_name (type0);
8730
8731       if (type_name != NULL)
8732         {
8733           const int len = strlen (type_name);
8734           char *name = (char *) alloca (len + strlen (xa_suffix));
8735
8736           if (type_name[len - 1] == 'P')
8737             {
8738               strcpy (name, type_name);
8739               strcpy (name + len - 1, xa_suffix);
8740               index_type_desc = ada_find_parallel_type_with_name (type0, name);
8741             }
8742         }
8743     }
8744
8745   ada_fixup_array_indexes_type (index_type_desc);
8746   if (index_type_desc != NULL
8747       && ada_is_redundant_index_type_desc (type0, index_type_desc))
8748     {
8749       /* Ignore this ___XA parallel type, as it does not bring any
8750          useful information.  This allows us to avoid creating fixed
8751          versions of the array's index types, which would be identical
8752          to the original ones.  This, in turn, can also help avoid
8753          the creation of fixed versions of the array itself.  */
8754       index_type_desc = NULL;
8755     }
8756
8757   if (index_type_desc == NULL)
8758     {
8759       struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
8760
8761       /* NOTE: elt_type---the fixed version of elt_type0---should never
8762          depend on the contents of the array in properly constructed
8763          debugging data.  */
8764       /* Create a fixed version of the array element type.
8765          We're not providing the address of an element here,
8766          and thus the actual object value cannot be inspected to do
8767          the conversion.  This should not be a problem, since arrays of
8768          unconstrained objects are not allowed.  In particular, all
8769          the elements of an array of a tagged type should all be of
8770          the same type specified in the debugging info.  No need to
8771          consult the object tag.  */
8772       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
8773
8774       /* Make sure we always create a new array type when dealing with
8775          packed array types, since we're going to fix-up the array
8776          type length and element bitsize a little further down.  */
8777       if (elt_type0 == elt_type && !constrained_packed_array_p)
8778         result = type0;
8779       else
8780         result = create_array_type (alloc_type_copy (type0),
8781                                     elt_type, TYPE_INDEX_TYPE (type0));
8782     }
8783   else
8784     {
8785       int i;
8786       struct type *elt_type0;
8787
8788       elt_type0 = type0;
8789       for (i = TYPE_NFIELDS (index_type_desc); i > 0; i -= 1)
8790         elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8791
8792       /* NOTE: result---the fixed version of elt_type0---should never
8793          depend on the contents of the array in properly constructed
8794          debugging data.  */
8795       /* Create a fixed version of the array element type.
8796          We're not providing the address of an element here,
8797          and thus the actual object value cannot be inspected to do
8798          the conversion.  This should not be a problem, since arrays of
8799          unconstrained objects are not allowed.  In particular, all
8800          the elements of an array of a tagged type should all be of
8801          the same type specified in the debugging info.  No need to
8802          consult the object tag.  */
8803       result =
8804         ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
8805
8806       elt_type0 = type0;
8807       for (i = TYPE_NFIELDS (index_type_desc) - 1; i >= 0; i -= 1)
8808         {
8809           struct type *range_type =
8810             to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
8811
8812           result = create_array_type (alloc_type_copy (elt_type0),
8813                                       result, range_type);
8814           elt_type0 = TYPE_TARGET_TYPE (elt_type0);
8815         }
8816       if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
8817         error (_("array type with dynamic size is larger than varsize-limit"));
8818     }
8819
8820   /* We want to preserve the type name.  This can be useful when
8821      trying to get the type name of a value that has already been
8822      printed (for instance, if the user did "print VAR; whatis $".  */
8823   TYPE_NAME (result) = TYPE_NAME (type0);
8824
8825   if (constrained_packed_array_p)
8826     {
8827       /* So far, the resulting type has been created as if the original
8828          type was a regular (non-packed) array type.  As a result, the
8829          bitsize of the array elements needs to be set again, and the array
8830          length needs to be recomputed based on that bitsize.  */
8831       int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
8832       int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
8833
8834       TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
8835       TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
8836       if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
8837         TYPE_LENGTH (result)++;
8838     }
8839
8840   TYPE_FIXED_INSTANCE (result) = 1;
8841   return result;
8842 }
8843
8844
8845 /* A standard type (containing no dynamically sized components)
8846    corresponding to TYPE for the value (TYPE, VALADDR, ADDRESS)
8847    DVAL describes a record containing any discriminants used in TYPE0,
8848    and may be NULL if there are none, or if the object of type TYPE at
8849    ADDRESS or in VALADDR contains these discriminants.
8850    
8851    If CHECK_TAG is not null, in the case of tagged types, this function
8852    attempts to locate the object's tag and use it to compute the actual
8853    type.  However, when ADDRESS is null, we cannot use it to determine the
8854    location of the tag, and therefore compute the tagged type's actual type.
8855    So we return the tagged type without consulting the tag.  */
8856    
8857 static struct type *
8858 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
8859                    CORE_ADDR address, struct value *dval, int check_tag)
8860 {
8861   type = ada_check_typedef (type);
8862
8863   /* Only un-fixed types need to be handled here.  */
8864   if (!HAVE_GNAT_AUX_INFO (type))
8865     return type;
8866
8867   switch (TYPE_CODE (type))
8868     {
8869     default:
8870       return type;
8871     case TYPE_CODE_STRUCT:
8872       {
8873         struct type *static_type = to_static_fixed_type (type);
8874         struct type *fixed_record_type =
8875           to_fixed_record_type (type, valaddr, address, NULL);
8876
8877         /* If STATIC_TYPE is a tagged type and we know the object's address,
8878            then we can determine its tag, and compute the object's actual
8879            type from there.  Note that we have to use the fixed record
8880            type (the parent part of the record may have dynamic fields
8881            and the way the location of _tag is expressed may depend on
8882            them).  */
8883
8884         if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
8885           {
8886             struct value *tag =
8887               value_tag_from_contents_and_address
8888               (fixed_record_type,
8889                valaddr,
8890                address);
8891             struct type *real_type = type_from_tag (tag);
8892             struct value *obj =
8893               value_from_contents_and_address (fixed_record_type,
8894                                                valaddr,
8895                                                address);
8896             fixed_record_type = value_type (obj);
8897             if (real_type != NULL)
8898               return to_fixed_record_type
8899                 (real_type, NULL,
8900                  value_address (ada_tag_value_at_base_address (obj)), NULL);
8901           }
8902
8903         /* Check to see if there is a parallel ___XVZ variable.
8904            If there is, then it provides the actual size of our type.  */
8905         else if (ada_type_name (fixed_record_type) != NULL)
8906           {
8907             const char *name = ada_type_name (fixed_record_type);
8908             char *xvz_name
8909               = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
8910             bool xvz_found = false;
8911             LONGEST size;
8912
8913             xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
8914             try
8915               {
8916                 xvz_found = get_int_var_value (xvz_name, size);
8917               }
8918             catch (const gdb_exception_error &except)
8919               {
8920                 /* We found the variable, but somehow failed to read
8921                    its value.  Rethrow the same error, but with a little
8922                    bit more information, to help the user understand
8923                    what went wrong (Eg: the variable might have been
8924                    optimized out).  */
8925                 throw_error (except.error,
8926                              _("unable to read value of %s (%s)"),
8927                              xvz_name, except.what ());
8928               }
8929
8930             if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
8931               {
8932                 fixed_record_type = copy_type (fixed_record_type);
8933                 TYPE_LENGTH (fixed_record_type) = size;
8934
8935                 /* The FIXED_RECORD_TYPE may have be a stub.  We have
8936                    observed this when the debugging info is STABS, and
8937                    apparently it is something that is hard to fix.
8938
8939                    In practice, we don't need the actual type definition
8940                    at all, because the presence of the XVZ variable allows us
8941                    to assume that there must be a XVS type as well, which we
8942                    should be able to use later, when we need the actual type
8943                    definition.
8944
8945                    In the meantime, pretend that the "fixed" type we are
8946                    returning is NOT a stub, because this can cause trouble
8947                    when using this type to create new types targeting it.
8948                    Indeed, the associated creation routines often check
8949                    whether the target type is a stub and will try to replace
8950                    it, thus using a type with the wrong size.  This, in turn,
8951                    might cause the new type to have the wrong size too.
8952                    Consider the case of an array, for instance, where the size
8953                    of the array is computed from the number of elements in
8954                    our array multiplied by the size of its element.  */
8955                 TYPE_STUB (fixed_record_type) = 0;
8956               }
8957           }
8958         return fixed_record_type;
8959       }
8960     case TYPE_CODE_ARRAY:
8961       return to_fixed_array_type (type, dval, 1);
8962     case TYPE_CODE_UNION:
8963       if (dval == NULL)
8964         return type;
8965       else
8966         return to_fixed_variant_branch_type (type, valaddr, address, dval);
8967     }
8968 }
8969
8970 /* The same as ada_to_fixed_type_1, except that it preserves the type
8971    if it is a TYPE_CODE_TYPEDEF of a type that is already fixed.
8972
8973    The typedef layer needs be preserved in order to differentiate between
8974    arrays and array pointers when both types are implemented using the same
8975    fat pointer.  In the array pointer case, the pointer is encoded as
8976    a typedef of the pointer type.  For instance, considering:
8977
8978           type String_Access is access String;
8979           S1 : String_Access := null;
8980
8981    To the debugger, S1 is defined as a typedef of type String.  But
8982    to the user, it is a pointer.  So if the user tries to print S1,
8983    we should not dereference the array, but print the array address
8984    instead.
8985
8986    If we didn't preserve the typedef layer, we would lose the fact that
8987    the type is to be presented as a pointer (needs de-reference before
8988    being printed).  And we would also use the source-level type name.  */
8989
8990 struct type *
8991 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
8992                    CORE_ADDR address, struct value *dval, int check_tag)
8993
8994 {
8995   struct type *fixed_type =
8996     ada_to_fixed_type_1 (type, valaddr, address, dval, check_tag);
8997
8998   /*  If TYPE is a typedef and its target type is the same as the FIXED_TYPE,
8999       then preserve the typedef layer.
9000
9001       Implementation note: We can only check the main-type portion of
9002       the TYPE and FIXED_TYPE, because eliminating the typedef layer
9003       from TYPE now returns a type that has the same instance flags
9004       as TYPE.  For instance, if TYPE is a "typedef const", and its
9005       target type is a "struct", then the typedef elimination will return
9006       a "const" version of the target type.  See check_typedef for more
9007       details about how the typedef layer elimination is done.
9008
9009       brobecker/2010-11-19: It seems to me that the only case where it is
9010       useful to preserve the typedef layer is when dealing with fat pointers.
9011       Perhaps, we could add a check for that and preserve the typedef layer
9012       only in that situation.  But this seems unecessary so far, probably
9013       because we call check_typedef/ada_check_typedef pretty much everywhere.
9014       */
9015   if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF
9016       && (TYPE_MAIN_TYPE (ada_typedef_target_type (type))
9017           == TYPE_MAIN_TYPE (fixed_type)))
9018     return type;
9019
9020   return fixed_type;
9021 }
9022
9023 /* A standard (static-sized) type corresponding as well as possible to
9024    TYPE0, but based on no runtime data.  */
9025
9026 static struct type *
9027 to_static_fixed_type (struct type *type0)
9028 {
9029   struct type *type;
9030
9031   if (type0 == NULL)
9032     return NULL;
9033
9034   if (TYPE_FIXED_INSTANCE (type0))
9035     return type0;
9036
9037   type0 = ada_check_typedef (type0);
9038
9039   switch (TYPE_CODE (type0))
9040     {
9041     default:
9042       return type0;
9043     case TYPE_CODE_STRUCT:
9044       type = dynamic_template_type (type0);
9045       if (type != NULL)
9046         return template_to_static_fixed_type (type);
9047       else
9048         return template_to_static_fixed_type (type0);
9049     case TYPE_CODE_UNION:
9050       type = ada_find_parallel_type (type0, "___XVU");
9051       if (type != NULL)
9052         return template_to_static_fixed_type (type);
9053       else
9054         return template_to_static_fixed_type (type0);
9055     }
9056 }
9057
9058 /* A static approximation of TYPE with all type wrappers removed.  */
9059
9060 static struct type *
9061 static_unwrap_type (struct type *type)
9062 {
9063   if (ada_is_aligner_type (type))
9064     {
9065       struct type *type1 = TYPE_FIELD_TYPE (ada_check_typedef (type), 0);
9066       if (ada_type_name (type1) == NULL)
9067         TYPE_NAME (type1) = ada_type_name (type);
9068
9069       return static_unwrap_type (type1);
9070     }
9071   else
9072     {
9073       struct type *raw_real_type = ada_get_base_type (type);
9074
9075       if (raw_real_type == type)
9076         return type;
9077       else
9078         return to_static_fixed_type (raw_real_type);
9079     }
9080 }
9081
9082 /* In some cases, incomplete and private types require
9083    cross-references that are not resolved as records (for example,
9084       type Foo;
9085       type FooP is access Foo;
9086       V: FooP;
9087       type Foo is array ...;
9088    ).  In these cases, since there is no mechanism for producing
9089    cross-references to such types, we instead substitute for FooP a
9090    stub enumeration type that is nowhere resolved, and whose tag is
9091    the name of the actual type.  Call these types "non-record stubs".  */
9092
9093 /* A type equivalent to TYPE that is not a non-record stub, if one
9094    exists, otherwise TYPE.  */
9095
9096 struct type *
9097 ada_check_typedef (struct type *type)
9098 {
9099   if (type == NULL)
9100     return NULL;
9101
9102   /* If our type is an access to an unconstrained array, which is encoded
9103      as a TYPE_CODE_TYPEDEF of a fat pointer, then we're done.
9104      We don't want to strip the TYPE_CODE_TYPDEF layer, because this is
9105      what allows us to distinguish between fat pointers that represent
9106      array types, and fat pointers that represent array access types
9107      (in both cases, the compiler implements them as fat pointers).  */
9108   if (ada_is_access_to_unconstrained_array (type))
9109     return type;
9110
9111   type = check_typedef (type);
9112   if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
9113       || !TYPE_STUB (type)
9114       || TYPE_NAME (type) == NULL)
9115     return type;
9116   else
9117     {
9118       const char *name = TYPE_NAME (type);
9119       struct type *type1 = ada_find_any_type (name);
9120
9121       if (type1 == NULL)
9122         return type;
9123
9124       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
9125          stubs pointing to arrays, as we don't create symbols for array
9126          types, only for the typedef-to-array types).  If that's the case,
9127          strip the typedef layer.  */
9128       if (TYPE_CODE (type1) == TYPE_CODE_TYPEDEF)
9129         type1 = ada_check_typedef (type1);
9130
9131       return type1;
9132     }
9133 }
9134
9135 /* A value representing the data at VALADDR/ADDRESS as described by
9136    type TYPE0, but with a standard (static-sized) type that correctly
9137    describes it.  If VAL0 is not NULL and TYPE0 already is a standard
9138    type, then return VAL0 [this feature is simply to avoid redundant
9139    creation of struct values].  */
9140
9141 static struct value *
9142 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
9143                            struct value *val0)
9144 {
9145   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
9146
9147   if (type == type0 && val0 != NULL)
9148     return val0;
9149
9150   if (VALUE_LVAL (val0) != lval_memory)
9151     {
9152       /* Our value does not live in memory; it could be a convenience
9153          variable, for instance.  Create a not_lval value using val0's
9154          contents.  */
9155       return value_from_contents (type, value_contents (val0));
9156     }
9157
9158   return value_from_contents_and_address (type, 0, address);
9159 }
9160
9161 /* A value representing VAL, but with a standard (static-sized) type
9162    that correctly describes it.  Does not necessarily create a new
9163    value.  */
9164
9165 struct value *
9166 ada_to_fixed_value (struct value *val)
9167 {
9168   val = unwrap_value (val);
9169   val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
9170   return val;
9171 }
9172 \f
9173
9174 /* Attributes */
9175
9176 /* Table mapping attribute numbers to names.
9177    NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
9178
9179 static const char *attribute_names[] = {
9180   "<?>",
9181
9182   "first",
9183   "last",
9184   "length",
9185   "image",
9186   "max",
9187   "min",
9188   "modulus",
9189   "pos",
9190   "size",
9191   "tag",
9192   "val",
9193   0
9194 };
9195
9196 const char *
9197 ada_attribute_name (enum exp_opcode n)
9198 {
9199   if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
9200     return attribute_names[n - OP_ATR_FIRST + 1];
9201   else
9202     return attribute_names[0];
9203 }
9204
9205 /* Evaluate the 'POS attribute applied to ARG.  */
9206
9207 static LONGEST
9208 pos_atr (struct value *arg)
9209 {
9210   struct value *val = coerce_ref (arg);
9211   struct type *type = value_type (val);
9212   LONGEST result;
9213
9214   if (!discrete_type_p (type))
9215     error (_("'POS only defined on discrete types"));
9216
9217   if (!discrete_position (type, value_as_long (val), &result))
9218     error (_("enumeration value is invalid: can't find 'POS"));
9219
9220   return result;
9221 }
9222
9223 static struct value *
9224 value_pos_atr (struct type *type, struct value *arg)
9225 {
9226   return value_from_longest (type, pos_atr (arg));
9227 }
9228
9229 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
9230
9231 static struct value *
9232 value_val_atr (struct type *type, struct value *arg)
9233 {
9234   if (!discrete_type_p (type))
9235     error (_("'VAL only defined on discrete types"));
9236   if (!integer_type_p (value_type (arg)))
9237     error (_("'VAL requires integral argument"));
9238
9239   if (TYPE_CODE (type) == TYPE_CODE_ENUM)
9240     {
9241       long pos = value_as_long (arg);
9242
9243       if (pos < 0 || pos >= TYPE_NFIELDS (type))
9244         error (_("argument to 'VAL out of range"));
9245       return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
9246     }
9247   else
9248     return value_from_longest (type, value_as_long (arg));
9249 }
9250 \f
9251
9252                                 /* Evaluation */
9253
9254 /* True if TYPE appears to be an Ada character type.
9255    [At the moment, this is true only for Character and Wide_Character;
9256    It is a heuristic test that could stand improvement].  */
9257
9258 bool
9259 ada_is_character_type (struct type *type)
9260 {
9261   const char *name;
9262
9263   /* If the type code says it's a character, then assume it really is,
9264      and don't check any further.  */
9265   if (TYPE_CODE (type) == TYPE_CODE_CHAR)
9266     return true;
9267   
9268   /* Otherwise, assume it's a character type iff it is a discrete type
9269      with a known character type name.  */
9270   name = ada_type_name (type);
9271   return (name != NULL
9272           && (TYPE_CODE (type) == TYPE_CODE_INT
9273               || TYPE_CODE (type) == TYPE_CODE_RANGE)
9274           && (strcmp (name, "character") == 0
9275               || strcmp (name, "wide_character") == 0
9276               || strcmp (name, "wide_wide_character") == 0
9277               || strcmp (name, "unsigned char") == 0));
9278 }
9279
9280 /* True if TYPE appears to be an Ada string type.  */
9281
9282 bool
9283 ada_is_string_type (struct type *type)
9284 {
9285   type = ada_check_typedef (type);
9286   if (type != NULL
9287       && TYPE_CODE (type) != TYPE_CODE_PTR
9288       && (ada_is_simple_array_type (type)
9289           || ada_is_array_descriptor_type (type))
9290       && ada_array_arity (type) == 1)
9291     {
9292       struct type *elttype = ada_array_element_type (type, 1);
9293
9294       return ada_is_character_type (elttype);
9295     }
9296   else
9297     return false;
9298 }
9299
9300 /* The compiler sometimes provides a parallel XVS type for a given
9301    PAD type.  Normally, it is safe to follow the PAD type directly,
9302    but older versions of the compiler have a bug that causes the offset
9303    of its "F" field to be wrong.  Following that field in that case
9304    would lead to incorrect results, but this can be worked around
9305    by ignoring the PAD type and using the associated XVS type instead.
9306
9307    Set to True if the debugger should trust the contents of PAD types.
9308    Otherwise, ignore the PAD type if there is a parallel XVS type.  */
9309 static int trust_pad_over_xvs = 1;
9310
9311 /* True if TYPE is a struct type introduced by the compiler to force the
9312    alignment of a value.  Such types have a single field with a
9313    distinctive name.  */
9314
9315 int
9316 ada_is_aligner_type (struct type *type)
9317 {
9318   type = ada_check_typedef (type);
9319
9320   if (!trust_pad_over_xvs && ada_find_parallel_type (type, "___XVS") != NULL)
9321     return 0;
9322
9323   return (TYPE_CODE (type) == TYPE_CODE_STRUCT
9324           && TYPE_NFIELDS (type) == 1
9325           && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
9326 }
9327
9328 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
9329    the parallel type.  */
9330
9331 struct type *
9332 ada_get_base_type (struct type *raw_type)
9333 {
9334   struct type *real_type_namer;
9335   struct type *raw_real_type;
9336
9337   if (raw_type == NULL || TYPE_CODE (raw_type) != TYPE_CODE_STRUCT)
9338     return raw_type;
9339
9340   if (ada_is_aligner_type (raw_type))
9341     /* The encoding specifies that we should always use the aligner type.
9342        So, even if this aligner type has an associated XVS type, we should
9343        simply ignore it.
9344
9345        According to the compiler gurus, an XVS type parallel to an aligner
9346        type may exist because of a stabs limitation.  In stabs, aligner
9347        types are empty because the field has a variable-sized type, and
9348        thus cannot actually be used as an aligner type.  As a result,
9349        we need the associated parallel XVS type to decode the type.
9350        Since the policy in the compiler is to not change the internal
9351        representation based on the debugging info format, we sometimes
9352        end up having a redundant XVS type parallel to the aligner type.  */
9353     return raw_type;
9354
9355   real_type_namer = ada_find_parallel_type (raw_type, "___XVS");
9356   if (real_type_namer == NULL
9357       || TYPE_CODE (real_type_namer) != TYPE_CODE_STRUCT
9358       || TYPE_NFIELDS (real_type_namer) != 1)
9359     return raw_type;
9360
9361   if (TYPE_CODE (TYPE_FIELD_TYPE (real_type_namer, 0)) != TYPE_CODE_REF)
9362     {
9363       /* This is an older encoding form where the base type needs to be
9364          looked up by name.  We prefer the newer enconding because it is
9365          more efficient.  */
9366       raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
9367       if (raw_real_type == NULL)
9368         return raw_type;
9369       else
9370         return raw_real_type;
9371     }
9372
9373   /* The field in our XVS type is a reference to the base type.  */
9374   return TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (real_type_namer, 0));
9375 }
9376
9377 /* The type of value designated by TYPE, with all aligners removed.  */
9378
9379 struct type *
9380 ada_aligned_type (struct type *type)
9381 {
9382   if (ada_is_aligner_type (type))
9383     return ada_aligned_type (TYPE_FIELD_TYPE (type, 0));
9384   else
9385     return ada_get_base_type (type);
9386 }
9387
9388
9389 /* The address of the aligned value in an object at address VALADDR
9390    having type TYPE.  Assumes ada_is_aligner_type (TYPE).  */
9391
9392 const gdb_byte *
9393 ada_aligned_value_addr (struct type *type, const gdb_byte *valaddr)
9394 {
9395   if (ada_is_aligner_type (type))
9396     return ada_aligned_value_addr (TYPE_FIELD_TYPE (type, 0),
9397                                    valaddr +
9398                                    TYPE_FIELD_BITPOS (type,
9399                                                       0) / TARGET_CHAR_BIT);
9400   else
9401     return valaddr;
9402 }
9403
9404
9405
9406 /* The printed representation of an enumeration literal with encoded
9407    name NAME.  The value is good to the next call of ada_enum_name.  */
9408 const char *
9409 ada_enum_name (const char *name)
9410 {
9411   static char *result;
9412   static size_t result_len = 0;
9413   const char *tmp;
9414
9415   /* First, unqualify the enumeration name:
9416      1. Search for the last '.' character.  If we find one, then skip
9417      all the preceding characters, the unqualified name starts
9418      right after that dot.
9419      2. Otherwise, we may be debugging on a target where the compiler
9420      translates dots into "__".  Search forward for double underscores,
9421      but stop searching when we hit an overloading suffix, which is
9422      of the form "__" followed by digits.  */
9423
9424   tmp = strrchr (name, '.');
9425   if (tmp != NULL)
9426     name = tmp + 1;
9427   else
9428     {
9429       while ((tmp = strstr (name, "__")) != NULL)
9430         {
9431           if (isdigit (tmp[2]))
9432             break;
9433           else
9434             name = tmp + 2;
9435         }
9436     }
9437
9438   if (name[0] == 'Q')
9439     {
9440       int v;
9441
9442       if (name[1] == 'U' || name[1] == 'W')
9443         {
9444           if (sscanf (name + 2, "%x", &v) != 1)
9445             return name;
9446         }
9447       else
9448         return name;
9449
9450       GROW_VECT (result, result_len, 16);
9451       if (isascii (v) && isprint (v))
9452         xsnprintf (result, result_len, "'%c'", v);
9453       else if (name[1] == 'U')
9454         xsnprintf (result, result_len, "[\"%02x\"]", v);
9455       else
9456         xsnprintf (result, result_len, "[\"%04x\"]", v);
9457
9458       return result;
9459     }
9460   else
9461     {
9462       tmp = strstr (name, "__");
9463       if (tmp == NULL)
9464         tmp = strstr (name, "$");
9465       if (tmp != NULL)
9466         {
9467           GROW_VECT (result, result_len, tmp - name + 1);
9468           strncpy (result, name, tmp - name);
9469           result[tmp - name] = '\0';
9470           return result;
9471         }
9472
9473       return name;
9474     }
9475 }
9476
9477 /* Evaluate the subexpression of EXP starting at *POS as for
9478    evaluate_type, updating *POS to point just past the evaluated
9479    expression.  */
9480
9481 static struct value *
9482 evaluate_subexp_type (struct expression *exp, int *pos)
9483 {
9484   return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
9485 }
9486
9487 /* If VAL is wrapped in an aligner or subtype wrapper, return the
9488    value it wraps.  */
9489
9490 static struct value *
9491 unwrap_value (struct value *val)
9492 {
9493   struct type *type = ada_check_typedef (value_type (val));
9494
9495   if (ada_is_aligner_type (type))
9496     {
9497       struct value *v = ada_value_struct_elt (val, "F", 0);
9498       struct type *val_type = ada_check_typedef (value_type (v));
9499
9500       if (ada_type_name (val_type) == NULL)
9501         TYPE_NAME (val_type) = ada_type_name (type);
9502
9503       return unwrap_value (v);
9504     }
9505   else
9506     {
9507       struct type *raw_real_type =
9508         ada_check_typedef (ada_get_base_type (type));
9509
9510       /* If there is no parallel XVS or XVE type, then the value is
9511          already unwrapped.  Return it without further modification.  */
9512       if ((type == raw_real_type)
9513           && ada_find_parallel_type (type, "___XVE") == NULL)
9514         return val;
9515
9516       return
9517         coerce_unspec_val_to_type
9518         (val, ada_to_fixed_type (raw_real_type, 0,
9519                                  value_address (val),
9520                                  NULL, 1));
9521     }
9522 }
9523
9524 static struct value *
9525 cast_from_fixed (struct type *type, struct value *arg)
9526 {
9527   struct value *scale = ada_scaling_factor (value_type (arg));
9528   arg = value_cast (value_type (scale), arg);
9529
9530   arg = value_binop (arg, scale, BINOP_MUL);
9531   return value_cast (type, arg);
9532 }
9533
9534 static struct value *
9535 cast_to_fixed (struct type *type, struct value *arg)
9536 {
9537   if (type == value_type (arg))
9538     return arg;
9539
9540   struct value *scale = ada_scaling_factor (type);
9541   if (ada_is_fixed_point_type (value_type (arg)))
9542     arg = cast_from_fixed (value_type (scale), arg);
9543   else
9544     arg = value_cast (value_type (scale), arg);
9545
9546   arg = value_binop (arg, scale, BINOP_DIV);
9547   return value_cast (type, arg);
9548 }
9549
9550 /* Given two array types T1 and T2, return nonzero iff both arrays
9551    contain the same number of elements.  */
9552
9553 static int
9554 ada_same_array_size_p (struct type *t1, struct type *t2)
9555 {
9556   LONGEST lo1, hi1, lo2, hi2;
9557
9558   /* Get the array bounds in order to verify that the size of
9559      the two arrays match.  */
9560   if (!get_array_bounds (t1, &lo1, &hi1)
9561       || !get_array_bounds (t2, &lo2, &hi2))
9562     error (_("unable to determine array bounds"));
9563
9564   /* To make things easier for size comparison, normalize a bit
9565      the case of empty arrays by making sure that the difference
9566      between upper bound and lower bound is always -1.  */
9567   if (lo1 > hi1)
9568     hi1 = lo1 - 1;
9569   if (lo2 > hi2)
9570     hi2 = lo2 - 1;
9571
9572   return (hi1 - lo1 == hi2 - lo2);
9573 }
9574
9575 /* Assuming that VAL is an array of integrals, and TYPE represents
9576    an array with the same number of elements, but with wider integral
9577    elements, return an array "casted" to TYPE.  In practice, this
9578    means that the returned array is built by casting each element
9579    of the original array into TYPE's (wider) element type.  */
9580
9581 static struct value *
9582 ada_promote_array_of_integrals (struct type *type, struct value *val)
9583 {
9584   struct type *elt_type = TYPE_TARGET_TYPE (type);
9585   LONGEST lo, hi;
9586   struct value *res;
9587   LONGEST i;
9588
9589   /* Verify that both val and type are arrays of scalars, and
9590      that the size of val's elements is smaller than the size
9591      of type's element.  */
9592   gdb_assert (TYPE_CODE (type) == TYPE_CODE_ARRAY);
9593   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (type)));
9594   gdb_assert (TYPE_CODE (value_type (val)) == TYPE_CODE_ARRAY);
9595   gdb_assert (is_integral_type (TYPE_TARGET_TYPE (value_type (val))));
9596   gdb_assert (TYPE_LENGTH (TYPE_TARGET_TYPE (type))
9597               > TYPE_LENGTH (TYPE_TARGET_TYPE (value_type (val))));
9598
9599   if (!get_array_bounds (type, &lo, &hi))
9600     error (_("unable to determine array bounds"));
9601
9602   res = allocate_value (type);
9603
9604   /* Promote each array element.  */
9605   for (i = 0; i < hi - lo + 1; i++)
9606     {
9607       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
9608
9609       memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
9610               value_contents_all (elt), TYPE_LENGTH (elt_type));
9611     }
9612
9613   return res;
9614 }
9615
9616 /* Coerce VAL as necessary for assignment to an lval of type TYPE, and
9617    return the converted value.  */
9618
9619 static struct value *
9620 coerce_for_assign (struct type *type, struct value *val)
9621 {
9622   struct type *type2 = value_type (val);
9623
9624   if (type == type2)
9625     return val;
9626
9627   type2 = ada_check_typedef (type2);
9628   type = ada_check_typedef (type);
9629
9630   if (TYPE_CODE (type2) == TYPE_CODE_PTR
9631       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9632     {
9633       val = ada_value_ind (val);
9634       type2 = value_type (val);
9635     }
9636
9637   if (TYPE_CODE (type2) == TYPE_CODE_ARRAY
9638       && TYPE_CODE (type) == TYPE_CODE_ARRAY)
9639     {
9640       if (!ada_same_array_size_p (type, type2))
9641         error (_("cannot assign arrays of different length"));
9642
9643       if (is_integral_type (TYPE_TARGET_TYPE (type))
9644           && is_integral_type (TYPE_TARGET_TYPE (type2))
9645           && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9646                < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9647         {
9648           /* Allow implicit promotion of the array elements to
9649              a wider type.  */
9650           return ada_promote_array_of_integrals (type, val);
9651         }
9652
9653       if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
9654           != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
9655         error (_("Incompatible types in assignment"));
9656       deprecated_set_value_type (val, type);
9657     }
9658   return val;
9659 }
9660
9661 static struct value *
9662 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
9663 {
9664   struct value *val;
9665   struct type *type1, *type2;
9666   LONGEST v, v1, v2;
9667
9668   arg1 = coerce_ref (arg1);
9669   arg2 = coerce_ref (arg2);
9670   type1 = get_base_type (ada_check_typedef (value_type (arg1)));
9671   type2 = get_base_type (ada_check_typedef (value_type (arg2)));
9672
9673   if (TYPE_CODE (type1) != TYPE_CODE_INT
9674       || TYPE_CODE (type2) != TYPE_CODE_INT)
9675     return value_binop (arg1, arg2, op);
9676
9677   switch (op)
9678     {
9679     case BINOP_MOD:
9680     case BINOP_DIV:
9681     case BINOP_REM:
9682       break;
9683     default:
9684       return value_binop (arg1, arg2, op);
9685     }
9686
9687   v2 = value_as_long (arg2);
9688   if (v2 == 0)
9689     error (_("second operand of %s must not be zero."), op_string (op));
9690
9691   if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
9692     return value_binop (arg1, arg2, op);
9693
9694   v1 = value_as_long (arg1);
9695   switch (op)
9696     {
9697     case BINOP_DIV:
9698       v = v1 / v2;
9699       if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
9700         v += v > 0 ? -1 : 1;
9701       break;
9702     case BINOP_REM:
9703       v = v1 % v2;
9704       if (v * v1 < 0)
9705         v -= v2;
9706       break;
9707     default:
9708       /* Should not reach this point.  */
9709       v = 0;
9710     }
9711
9712   val = allocate_value (type1);
9713   store_unsigned_integer (value_contents_raw (val),
9714                           TYPE_LENGTH (value_type (val)),
9715                           gdbarch_byte_order (get_type_arch (type1)), v);
9716   return val;
9717 }
9718
9719 static int
9720 ada_value_equal (struct value *arg1, struct value *arg2)
9721 {
9722   if (ada_is_direct_array_type (value_type (arg1))
9723       || ada_is_direct_array_type (value_type (arg2)))
9724     {
9725       struct type *arg1_type, *arg2_type;
9726
9727       /* Automatically dereference any array reference before
9728          we attempt to perform the comparison.  */
9729       arg1 = ada_coerce_ref (arg1);
9730       arg2 = ada_coerce_ref (arg2);
9731
9732       arg1 = ada_coerce_to_simple_array (arg1);
9733       arg2 = ada_coerce_to_simple_array (arg2);
9734
9735       arg1_type = ada_check_typedef (value_type (arg1));
9736       arg2_type = ada_check_typedef (value_type (arg2));
9737
9738       if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
9739           || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
9740         error (_("Attempt to compare array with non-array"));
9741       /* FIXME: The following works only for types whose
9742          representations use all bits (no padding or undefined bits)
9743          and do not have user-defined equality.  */
9744       return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
9745               && memcmp (value_contents (arg1), value_contents (arg2),
9746                          TYPE_LENGTH (arg1_type)) == 0);
9747     }
9748   return value_equal (arg1, arg2);
9749 }
9750
9751 /* Total number of component associations in the aggregate starting at
9752    index PC in EXP.  Assumes that index PC is the start of an
9753    OP_AGGREGATE.  */
9754
9755 static int
9756 num_component_specs (struct expression *exp, int pc)
9757 {
9758   int n, m, i;
9759
9760   m = exp->elts[pc + 1].longconst;
9761   pc += 3;
9762   n = 0;
9763   for (i = 0; i < m; i += 1)
9764     {
9765       switch (exp->elts[pc].opcode) 
9766         {
9767         default:
9768           n += 1;
9769           break;
9770         case OP_CHOICES:
9771           n += exp->elts[pc + 1].longconst;
9772           break;
9773         }
9774       ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
9775     }
9776   return n;
9777 }
9778
9779 /* Assign the result of evaluating EXP starting at *POS to the INDEXth 
9780    component of LHS (a simple array or a record), updating *POS past
9781    the expression, assuming that LHS is contained in CONTAINER.  Does
9782    not modify the inferior's memory, nor does it modify LHS (unless
9783    LHS == CONTAINER).  */
9784
9785 static void
9786 assign_component (struct value *container, struct value *lhs, LONGEST index,
9787                   struct expression *exp, int *pos)
9788 {
9789   struct value *mark = value_mark ();
9790   struct value *elt;
9791   struct type *lhs_type = check_typedef (value_type (lhs));
9792
9793   if (TYPE_CODE (lhs_type) == TYPE_CODE_ARRAY)
9794     {
9795       struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
9796       struct value *index_val = value_from_longest (index_type, index);
9797
9798       elt = unwrap_value (ada_value_subscript (lhs, 1, &index_val));
9799     }
9800   else
9801     {
9802       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
9803       elt = ada_to_fixed_value (elt);
9804     }
9805
9806   if (exp->elts[*pos].opcode == OP_AGGREGATE)
9807     assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
9808   else
9809     value_assign_to_component (container, elt, 
9810                                ada_evaluate_subexp (NULL, exp, pos, 
9811                                                     EVAL_NORMAL));
9812
9813   value_free_to_mark (mark);
9814 }
9815
9816 /* Assuming that LHS represents an lvalue having a record or array
9817    type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
9818    of that aggregate's value to LHS, advancing *POS past the
9819    aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
9820    lvalue containing LHS (possibly LHS itself).  Does not modify
9821    the inferior's memory, nor does it modify the contents of 
9822    LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
9823
9824 static struct value *
9825 assign_aggregate (struct value *container, 
9826                   struct value *lhs, struct expression *exp, 
9827                   int *pos, enum noside noside)
9828 {
9829   struct type *lhs_type;
9830   int n = exp->elts[*pos+1].longconst;
9831   LONGEST low_index, high_index;
9832   int num_specs;
9833   LONGEST *indices;
9834   int max_indices, num_indices;
9835   int i;
9836
9837   *pos += 3;
9838   if (noside != EVAL_NORMAL)
9839     {
9840       for (i = 0; i < n; i += 1)
9841         ada_evaluate_subexp (NULL, exp, pos, noside);
9842       return container;
9843     }
9844
9845   container = ada_coerce_ref (container);
9846   if (ada_is_direct_array_type (value_type (container)))
9847     container = ada_coerce_to_simple_array (container);
9848   lhs = ada_coerce_ref (lhs);
9849   if (!deprecated_value_modifiable (lhs))
9850     error (_("Left operand of assignment is not a modifiable lvalue."));
9851
9852   lhs_type = check_typedef (value_type (lhs));
9853   if (ada_is_direct_array_type (lhs_type))
9854     {
9855       lhs = ada_coerce_to_simple_array (lhs);
9856       lhs_type = check_typedef (value_type (lhs));
9857       low_index = TYPE_ARRAY_LOWER_BOUND_VALUE (lhs_type);
9858       high_index = TYPE_ARRAY_UPPER_BOUND_VALUE (lhs_type);
9859     }
9860   else if (TYPE_CODE (lhs_type) == TYPE_CODE_STRUCT)
9861     {
9862       low_index = 0;
9863       high_index = num_visible_fields (lhs_type) - 1;
9864     }
9865   else
9866     error (_("Left-hand side must be array or record."));
9867
9868   num_specs = num_component_specs (exp, *pos - 3);
9869   max_indices = 4 * num_specs + 4;
9870   indices = XALLOCAVEC (LONGEST, max_indices);
9871   indices[0] = indices[1] = low_index - 1;
9872   indices[2] = indices[3] = high_index + 1;
9873   num_indices = 4;
9874
9875   for (i = 0; i < n; i += 1)
9876     {
9877       switch (exp->elts[*pos].opcode)
9878         {
9879           case OP_CHOICES:
9880             aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
9881                                            &num_indices, max_indices,
9882                                            low_index, high_index);
9883             break;
9884           case OP_POSITIONAL:
9885             aggregate_assign_positional (container, lhs, exp, pos, indices,
9886                                          &num_indices, max_indices,
9887                                          low_index, high_index);
9888             break;
9889           case OP_OTHERS:
9890             if (i != n-1)
9891               error (_("Misplaced 'others' clause"));
9892             aggregate_assign_others (container, lhs, exp, pos, indices, 
9893                                      num_indices, low_index, high_index);
9894             break;
9895           default:
9896             error (_("Internal error: bad aggregate clause"));
9897         }
9898     }
9899
9900   return container;
9901 }
9902               
9903 /* Assign into the component of LHS indexed by the OP_POSITIONAL
9904    construct at *POS, updating *POS past the construct, given that
9905    the positions are relative to lower bound LOW, where HIGH is the 
9906    upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
9907    updating *NUM_INDICES as needed.  CONTAINER is as for
9908    assign_aggregate.  */
9909 static void
9910 aggregate_assign_positional (struct value *container,
9911                              struct value *lhs, struct expression *exp,
9912                              int *pos, LONGEST *indices, int *num_indices,
9913                              int max_indices, LONGEST low, LONGEST high) 
9914 {
9915   LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
9916   
9917   if (ind - 1 == high)
9918     warning (_("Extra components in aggregate ignored."));
9919   if (ind <= high)
9920     {
9921       add_component_interval (ind, ind, indices, num_indices, max_indices);
9922       *pos += 3;
9923       assign_component (container, lhs, ind, exp, pos);
9924     }
9925   else
9926     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9927 }
9928
9929 /* Assign into the components of LHS indexed by the OP_CHOICES
9930    construct at *POS, updating *POS past the construct, given that
9931    the allowable indices are LOW..HIGH.  Record the indices assigned
9932    to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
9933    needed.  CONTAINER is as for assign_aggregate.  */
9934 static void
9935 aggregate_assign_from_choices (struct value *container,
9936                                struct value *lhs, struct expression *exp,
9937                                int *pos, LONGEST *indices, int *num_indices,
9938                                int max_indices, LONGEST low, LONGEST high) 
9939 {
9940   int j;
9941   int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
9942   int choice_pos, expr_pc;
9943   int is_array = ada_is_direct_array_type (value_type (lhs));
9944
9945   choice_pos = *pos += 3;
9946
9947   for (j = 0; j < n_choices; j += 1)
9948     ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9949   expr_pc = *pos;
9950   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
9951   
9952   for (j = 0; j < n_choices; j += 1)
9953     {
9954       LONGEST lower, upper;
9955       enum exp_opcode op = exp->elts[choice_pos].opcode;
9956
9957       if (op == OP_DISCRETE_RANGE)
9958         {
9959           choice_pos += 1;
9960           lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
9961                                                       EVAL_NORMAL));
9962           upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
9963                                                       EVAL_NORMAL));
9964         }
9965       else if (is_array)
9966         {
9967           lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
9968                                                       EVAL_NORMAL));
9969           upper = lower;
9970         }
9971       else
9972         {
9973           int ind;
9974           const char *name;
9975
9976           switch (op)
9977             {
9978             case OP_NAME:
9979               name = &exp->elts[choice_pos + 2].string;
9980               break;
9981             case OP_VAR_VALUE:
9982               name = SYMBOL_NATURAL_NAME (exp->elts[choice_pos + 2].symbol);
9983               break;
9984             default:
9985               error (_("Invalid record component association."));
9986             }
9987           ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
9988           ind = 0;
9989           if (! find_struct_field (name, value_type (lhs), 0, 
9990                                    NULL, NULL, NULL, NULL, &ind))
9991             error (_("Unknown component name: %s."), name);
9992           lower = upper = ind;
9993         }
9994
9995       if (lower <= upper && (lower < low || upper > high))
9996         error (_("Index in component association out of bounds."));
9997
9998       add_component_interval (lower, upper, indices, num_indices,
9999                               max_indices);
10000       while (lower <= upper)
10001         {
10002           int pos1;
10003
10004           pos1 = expr_pc;
10005           assign_component (container, lhs, lower, exp, &pos1);
10006           lower += 1;
10007         }
10008     }
10009 }
10010
10011 /* Assign the value of the expression in the OP_OTHERS construct in
10012    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
10013    have not been previously assigned.  The index intervals already assigned
10014    are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
10015    OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
10016 static void
10017 aggregate_assign_others (struct value *container,
10018                          struct value *lhs, struct expression *exp,
10019                          int *pos, LONGEST *indices, int num_indices,
10020                          LONGEST low, LONGEST high) 
10021 {
10022   int i;
10023   int expr_pc = *pos + 1;
10024   
10025   for (i = 0; i < num_indices - 2; i += 2)
10026     {
10027       LONGEST ind;
10028
10029       for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
10030         {
10031           int localpos;
10032
10033           localpos = expr_pc;
10034           assign_component (container, lhs, ind, exp, &localpos);
10035         }
10036     }
10037   ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
10038 }
10039
10040 /* Add the interval [LOW .. HIGH] to the sorted set of intervals 
10041    [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
10042    modifying *SIZE as needed.  It is an error if *SIZE exceeds
10043    MAX_SIZE.  The resulting intervals do not overlap.  */
10044 static void
10045 add_component_interval (LONGEST low, LONGEST high, 
10046                         LONGEST* indices, int *size, int max_size)
10047 {
10048   int i, j;
10049
10050   for (i = 0; i < *size; i += 2) {
10051     if (high >= indices[i] && low <= indices[i + 1])
10052       {
10053         int kh;
10054
10055         for (kh = i + 2; kh < *size; kh += 2)
10056           if (high < indices[kh])
10057             break;
10058         if (low < indices[i])
10059           indices[i] = low;
10060         indices[i + 1] = indices[kh - 1];
10061         if (high > indices[i + 1])
10062           indices[i + 1] = high;
10063         memcpy (indices + i + 2, indices + kh, *size - kh);
10064         *size -= kh - i - 2;
10065         return;
10066       }
10067     else if (high < indices[i])
10068       break;
10069   }
10070         
10071   if (*size == max_size)
10072     error (_("Internal error: miscounted aggregate components."));
10073   *size += 2;
10074   for (j = *size-1; j >= i+2; j -= 1)
10075     indices[j] = indices[j - 2];
10076   indices[i] = low;
10077   indices[i + 1] = high;
10078 }
10079
10080 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
10081    is different.  */
10082
10083 static struct value *
10084 ada_value_cast (struct type *type, struct value *arg2)
10085 {
10086   if (type == ada_check_typedef (value_type (arg2)))
10087     return arg2;
10088
10089   if (ada_is_fixed_point_type (type))
10090     return cast_to_fixed (type, arg2);
10091
10092   if (ada_is_fixed_point_type (value_type (arg2)))
10093     return cast_from_fixed (type, arg2);
10094
10095   return value_cast (type, arg2);
10096 }
10097
10098 /*  Evaluating Ada expressions, and printing their result.
10099     ------------------------------------------------------
10100
10101     1. Introduction:
10102     ----------------
10103
10104     We usually evaluate an Ada expression in order to print its value.
10105     We also evaluate an expression in order to print its type, which
10106     happens during the EVAL_AVOID_SIDE_EFFECTS phase of the evaluation,
10107     but we'll focus mostly on the EVAL_NORMAL phase.  In practice, the
10108     EVAL_AVOID_SIDE_EFFECTS phase allows us to simplify certain aspects of
10109     the evaluation compared to the EVAL_NORMAL, but is otherwise very
10110     similar.
10111
10112     Evaluating expressions is a little more complicated for Ada entities
10113     than it is for entities in languages such as C.  The main reason for
10114     this is that Ada provides types whose definition might be dynamic.
10115     One example of such types is variant records.  Or another example
10116     would be an array whose bounds can only be known at run time.
10117
10118     The following description is a general guide as to what should be
10119     done (and what should NOT be done) in order to evaluate an expression
10120     involving such types, and when.  This does not cover how the semantic
10121     information is encoded by GNAT as this is covered separatly.  For the
10122     document used as the reference for the GNAT encoding, see exp_dbug.ads
10123     in the GNAT sources.
10124
10125     Ideally, we should embed each part of this description next to its
10126     associated code.  Unfortunately, the amount of code is so vast right
10127     now that it's hard to see whether the code handling a particular
10128     situation might be duplicated or not.  One day, when the code is
10129     cleaned up, this guide might become redundant with the comments
10130     inserted in the code, and we might want to remove it.
10131
10132     2. ``Fixing'' an Entity, the Simple Case:
10133     -----------------------------------------
10134
10135     When evaluating Ada expressions, the tricky issue is that they may
10136     reference entities whose type contents and size are not statically
10137     known.  Consider for instance a variant record:
10138
10139        type Rec (Empty : Boolean := True) is record
10140           case Empty is
10141              when True => null;
10142              when False => Value : Integer;
10143           end case;
10144        end record;
10145        Yes : Rec := (Empty => False, Value => 1);
10146        No  : Rec := (empty => True);
10147
10148     The size and contents of that record depends on the value of the
10149     descriminant (Rec.Empty).  At this point, neither the debugging
10150     information nor the associated type structure in GDB are able to
10151     express such dynamic types.  So what the debugger does is to create
10152     "fixed" versions of the type that applies to the specific object.
10153     We also informally refer to this opperation as "fixing" an object,
10154     which means creating its associated fixed type.
10155
10156     Example: when printing the value of variable "Yes" above, its fixed
10157     type would look like this:
10158
10159        type Rec is record
10160           Empty : Boolean;
10161           Value : Integer;
10162        end record;
10163
10164     On the other hand, if we printed the value of "No", its fixed type
10165     would become:
10166
10167        type Rec is record
10168           Empty : Boolean;
10169        end record;
10170
10171     Things become a little more complicated when trying to fix an entity
10172     with a dynamic type that directly contains another dynamic type,
10173     such as an array of variant records, for instance.  There are
10174     two possible cases: Arrays, and records.
10175
10176     3. ``Fixing'' Arrays:
10177     ---------------------
10178
10179     The type structure in GDB describes an array in terms of its bounds,
10180     and the type of its elements.  By design, all elements in the array
10181     have the same type and we cannot represent an array of variant elements
10182     using the current type structure in GDB.  When fixing an array,
10183     we cannot fix the array element, as we would potentially need one
10184     fixed type per element of the array.  As a result, the best we can do
10185     when fixing an array is to produce an array whose bounds and size
10186     are correct (allowing us to read it from memory), but without having
10187     touched its element type.  Fixing each element will be done later,
10188     when (if) necessary.
10189
10190     Arrays are a little simpler to handle than records, because the same
10191     amount of memory is allocated for each element of the array, even if
10192     the amount of space actually used by each element differs from element
10193     to element.  Consider for instance the following array of type Rec:
10194
10195        type Rec_Array is array (1 .. 2) of Rec;
10196
10197     The actual amount of memory occupied by each element might be different
10198     from element to element, depending on the value of their discriminant.
10199     But the amount of space reserved for each element in the array remains
10200     fixed regardless.  So we simply need to compute that size using
10201     the debugging information available, from which we can then determine
10202     the array size (we multiply the number of elements of the array by
10203     the size of each element).
10204
10205     The simplest case is when we have an array of a constrained element
10206     type. For instance, consider the following type declarations:
10207
10208         type Bounded_String (Max_Size : Integer) is
10209            Length : Integer;
10210            Buffer : String (1 .. Max_Size);
10211         end record;
10212         type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
10213
10214     In this case, the compiler describes the array as an array of
10215     variable-size elements (identified by its XVS suffix) for which
10216     the size can be read in the parallel XVZ variable.
10217
10218     In the case of an array of an unconstrained element type, the compiler
10219     wraps the array element inside a private PAD type.  This type should not
10220     be shown to the user, and must be "unwrap"'ed before printing.  Note
10221     that we also use the adjective "aligner" in our code to designate
10222     these wrapper types.
10223
10224     In some cases, the size allocated for each element is statically
10225     known.  In that case, the PAD type already has the correct size,
10226     and the array element should remain unfixed.
10227
10228     But there are cases when this size is not statically known.
10229     For instance, assuming that "Five" is an integer variable:
10230
10231         type Dynamic is array (1 .. Five) of Integer;
10232         type Wrapper (Has_Length : Boolean := False) is record
10233            Data : Dynamic;
10234            case Has_Length is
10235               when True => Length : Integer;
10236               when False => null;
10237            end case;
10238         end record;
10239         type Wrapper_Array is array (1 .. 2) of Wrapper;
10240
10241         Hello : Wrapper_Array := (others => (Has_Length => True,
10242                                              Data => (others => 17),
10243                                              Length => 1));
10244
10245
10246     The debugging info would describe variable Hello as being an
10247     array of a PAD type.  The size of that PAD type is not statically
10248     known, but can be determined using a parallel XVZ variable.
10249     In that case, a copy of the PAD type with the correct size should
10250     be used for the fixed array.
10251
10252     3. ``Fixing'' record type objects:
10253     ----------------------------------
10254
10255     Things are slightly different from arrays in the case of dynamic
10256     record types.  In this case, in order to compute the associated
10257     fixed type, we need to determine the size and offset of each of
10258     its components.  This, in turn, requires us to compute the fixed
10259     type of each of these components.
10260
10261     Consider for instance the example:
10262
10263         type Bounded_String (Max_Size : Natural) is record
10264            Str : String (1 .. Max_Size);
10265            Length : Natural;
10266         end record;
10267         My_String : Bounded_String (Max_Size => 10);
10268
10269     In that case, the position of field "Length" depends on the size
10270     of field Str, which itself depends on the value of the Max_Size
10271     discriminant.  In order to fix the type of variable My_String,
10272     we need to fix the type of field Str.  Therefore, fixing a variant
10273     record requires us to fix each of its components.
10274
10275     However, if a component does not have a dynamic size, the component
10276     should not be fixed.  In particular, fields that use a PAD type
10277     should not fixed.  Here is an example where this might happen
10278     (assuming type Rec above):
10279
10280        type Container (Big : Boolean) is record
10281           First : Rec;
10282           After : Integer;
10283           case Big is
10284              when True => Another : Integer;
10285              when False => null;
10286           end case;
10287        end record;
10288        My_Container : Container := (Big => False,
10289                                     First => (Empty => True),
10290                                     After => 42);
10291
10292     In that example, the compiler creates a PAD type for component First,
10293     whose size is constant, and then positions the component After just
10294     right after it.  The offset of component After is therefore constant
10295     in this case.
10296
10297     The debugger computes the position of each field based on an algorithm
10298     that uses, among other things, the actual position and size of the field
10299     preceding it.  Let's now imagine that the user is trying to print
10300     the value of My_Container.  If the type fixing was recursive, we would
10301     end up computing the offset of field After based on the size of the
10302     fixed version of field First.  And since in our example First has
10303     only one actual field, the size of the fixed type is actually smaller
10304     than the amount of space allocated to that field, and thus we would
10305     compute the wrong offset of field After.
10306
10307     To make things more complicated, we need to watch out for dynamic
10308     components of variant records (identified by the ___XVL suffix in
10309     the component name).  Even if the target type is a PAD type, the size
10310     of that type might not be statically known.  So the PAD type needs
10311     to be unwrapped and the resulting type needs to be fixed.  Otherwise,
10312     we might end up with the wrong size for our component.  This can be
10313     observed with the following type declarations:
10314
10315         type Octal is new Integer range 0 .. 7;
10316         type Octal_Array is array (Positive range <>) of Octal;
10317         pragma Pack (Octal_Array);
10318
10319         type Octal_Buffer (Size : Positive) is record
10320            Buffer : Octal_Array (1 .. Size);
10321            Length : Integer;
10322         end record;
10323
10324     In that case, Buffer is a PAD type whose size is unset and needs
10325     to be computed by fixing the unwrapped type.
10326
10327     4. When to ``Fix'' un-``Fixed'' sub-elements of an entity:
10328     ----------------------------------------------------------
10329
10330     Lastly, when should the sub-elements of an entity that remained unfixed
10331     thus far, be actually fixed?
10332
10333     The answer is: Only when referencing that element.  For instance
10334     when selecting one component of a record, this specific component
10335     should be fixed at that point in time.  Or when printing the value
10336     of a record, each component should be fixed before its value gets
10337     printed.  Similarly for arrays, the element of the array should be
10338     fixed when printing each element of the array, or when extracting
10339     one element out of that array.  On the other hand, fixing should
10340     not be performed on the elements when taking a slice of an array!
10341
10342     Note that one of the side effects of miscomputing the offset and
10343     size of each field is that we end up also miscomputing the size
10344     of the containing type.  This can have adverse results when computing
10345     the value of an entity.  GDB fetches the value of an entity based
10346     on the size of its type, and thus a wrong size causes GDB to fetch
10347     the wrong amount of memory.  In the case where the computed size is
10348     too small, GDB fetches too little data to print the value of our
10349     entity.  Results in this case are unpredictable, as we usually read
10350     past the buffer containing the data =:-o.  */
10351
10352 /* Evaluate a subexpression of EXP, at index *POS, and return a value
10353    for that subexpression cast to TO_TYPE.  Advance *POS over the
10354    subexpression.  */
10355
10356 static value *
10357 ada_evaluate_subexp_for_cast (expression *exp, int *pos,
10358                               enum noside noside, struct type *to_type)
10359 {
10360   int pc = *pos;
10361
10362   if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
10363       || exp->elts[pc].opcode == OP_VAR_VALUE)
10364     {
10365       (*pos) += 4;
10366
10367       value *val;
10368       if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
10369         {
10370           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10371             return value_zero (to_type, not_lval);
10372
10373           val = evaluate_var_msym_value (noside,
10374                                          exp->elts[pc + 1].objfile,
10375                                          exp->elts[pc + 2].msymbol);
10376         }
10377       else
10378         val = evaluate_var_value (noside,
10379                                   exp->elts[pc + 1].block,
10380                                   exp->elts[pc + 2].symbol);
10381
10382       if (noside == EVAL_SKIP)
10383         return eval_skip_value (exp);
10384
10385       val = ada_value_cast (to_type, val);
10386
10387       /* Follow the Ada language semantics that do not allow taking
10388          an address of the result of a cast (view conversion in Ada).  */
10389       if (VALUE_LVAL (val) == lval_memory)
10390         {
10391           if (value_lazy (val))
10392             value_fetch_lazy (val);
10393           VALUE_LVAL (val) = not_lval;
10394         }
10395       return val;
10396     }
10397
10398   value *val = evaluate_subexp (to_type, exp, pos, noside);
10399   if (noside == EVAL_SKIP)
10400     return eval_skip_value (exp);
10401   return ada_value_cast (to_type, val);
10402 }
10403
10404 /* Implement the evaluate_exp routine in the exp_descriptor structure
10405    for the Ada language.  */
10406
10407 static struct value *
10408 ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
10409                      int *pos, enum noside noside)
10410 {
10411   enum exp_opcode op;
10412   int tem;
10413   int pc;
10414   int preeval_pos;
10415   struct value *arg1 = NULL, *arg2 = NULL, *arg3;
10416   struct type *type;
10417   int nargs, oplen;
10418   struct value **argvec;
10419
10420   pc = *pos;
10421   *pos += 1;
10422   op = exp->elts[pc].opcode;
10423
10424   switch (op)
10425     {
10426     default:
10427       *pos -= 1;
10428       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10429
10430       if (noside == EVAL_NORMAL)
10431         arg1 = unwrap_value (arg1);
10432
10433       /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
10434          then we need to perform the conversion manually, because
10435          evaluate_subexp_standard doesn't do it.  This conversion is
10436          necessary in Ada because the different kinds of float/fixed
10437          types in Ada have different representations.
10438
10439          Similarly, we need to perform the conversion from OP_LONG
10440          ourselves.  */
10441       if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
10442         arg1 = ada_value_cast (expect_type, arg1);
10443
10444       return arg1;
10445
10446     case OP_STRING:
10447       {
10448         struct value *result;
10449
10450         *pos -= 1;
10451         result = evaluate_subexp_standard (expect_type, exp, pos, noside);
10452         /* The result type will have code OP_STRING, bashed there from 
10453            OP_ARRAY.  Bash it back.  */
10454         if (TYPE_CODE (value_type (result)) == TYPE_CODE_STRING)
10455           TYPE_CODE (value_type (result)) = TYPE_CODE_ARRAY;
10456         return result;
10457       }
10458
10459     case UNOP_CAST:
10460       (*pos) += 2;
10461       type = exp->elts[pc + 1].type;
10462       return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
10463
10464     case UNOP_QUAL:
10465       (*pos) += 2;
10466       type = exp->elts[pc + 1].type;
10467       return ada_evaluate_subexp (type, exp, pos, noside);
10468
10469     case BINOP_ASSIGN:
10470       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10471       if (exp->elts[*pos].opcode == OP_AGGREGATE)
10472         {
10473           arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
10474           if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10475             return arg1;
10476           return ada_value_assign (arg1, arg1);
10477         }
10478       /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
10479          except if the lhs of our assignment is a convenience variable.
10480          In the case of assigning to a convenience variable, the lhs
10481          should be exactly the result of the evaluation of the rhs.  */
10482       type = value_type (arg1);
10483       if (VALUE_LVAL (arg1) == lval_internalvar)
10484          type = NULL;
10485       arg2 = evaluate_subexp (type, exp, pos, noside);
10486       if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
10487         return arg1;
10488       if (VALUE_LVAL (arg1) == lval_internalvar)
10489         {
10490           /* Nothing.  */
10491         }
10492       else if (ada_is_fixed_point_type (value_type (arg1)))
10493         arg2 = cast_to_fixed (value_type (arg1), arg2);
10494       else if (ada_is_fixed_point_type (value_type (arg2)))
10495         error
10496           (_("Fixed-point values must be assigned to fixed-point variables"));
10497       else
10498         arg2 = coerce_for_assign (value_type (arg1), arg2);
10499       return ada_value_assign (arg1, arg2);
10500
10501     case BINOP_ADD:
10502       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10503       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10504       if (noside == EVAL_SKIP)
10505         goto nosideret;
10506       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10507         return (value_from_longest
10508                  (value_type (arg1),
10509                   value_as_long (arg1) + value_as_long (arg2)));
10510       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10511         return (value_from_longest
10512                  (value_type (arg2),
10513                   value_as_long (arg1) + value_as_long (arg2)));
10514       if ((ada_is_fixed_point_type (value_type (arg1))
10515            || ada_is_fixed_point_type (value_type (arg2)))
10516           && value_type (arg1) != value_type (arg2))
10517         error (_("Operands of fixed-point addition must have the same type"));
10518       /* Do the addition, and cast the result to the type of the first
10519          argument.  We cannot cast the result to a reference type, so if
10520          ARG1 is a reference type, find its underlying type.  */
10521       type = value_type (arg1);
10522       while (TYPE_CODE (type) == TYPE_CODE_REF)
10523         type = TYPE_TARGET_TYPE (type);
10524       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10525       return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
10526
10527     case BINOP_SUB:
10528       arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
10529       arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
10530       if (noside == EVAL_SKIP)
10531         goto nosideret;
10532       if (TYPE_CODE (value_type (arg1)) == TYPE_CODE_PTR)
10533         return (value_from_longest
10534                  (value_type (arg1),
10535                   value_as_long (arg1) - value_as_long (arg2)));
10536       if (TYPE_CODE (value_type (arg2)) == TYPE_CODE_PTR)
10537         return (value_from_longest
10538                  (value_type (arg2),
10539                   value_as_long (arg1) - value_as_long (arg2)));
10540       if ((ada_is_fixed_point_type (value_type (arg1))
10541            || ada_is_fixed_point_type (value_type (arg2)))
10542           && value_type (arg1) != value_type (arg2))
10543         error (_("Operands of fixed-point subtraction "
10544                  "must have the same type"));
10545       /* Do the substraction, and cast the result to the type of the first
10546          argument.  We cannot cast the result to a reference type, so if
10547          ARG1 is a reference type, find its underlying type.  */
10548       type = value_type (arg1);
10549       while (TYPE_CODE (type) == TYPE_CODE_REF)
10550         type = TYPE_TARGET_TYPE (type);
10551       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10552       return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
10553
10554     case BINOP_MUL:
10555     case BINOP_DIV:
10556     case BINOP_REM:
10557     case BINOP_MOD:
10558       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10559       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10560       if (noside == EVAL_SKIP)
10561         goto nosideret;
10562       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10563         {
10564           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10565           return value_zero (value_type (arg1), not_lval);
10566         }
10567       else
10568         {
10569           type = builtin_type (exp->gdbarch)->builtin_double;
10570           if (ada_is_fixed_point_type (value_type (arg1)))
10571             arg1 = cast_from_fixed (type, arg1);
10572           if (ada_is_fixed_point_type (value_type (arg2)))
10573             arg2 = cast_from_fixed (type, arg2);
10574           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10575           return ada_value_binop (arg1, arg2, op);
10576         }
10577
10578     case BINOP_EQUAL:
10579     case BINOP_NOTEQUAL:
10580       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10581       arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
10582       if (noside == EVAL_SKIP)
10583         goto nosideret;
10584       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10585         tem = 0;
10586       else
10587         {
10588           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10589           tem = ada_value_equal (arg1, arg2);
10590         }
10591       if (op == BINOP_NOTEQUAL)
10592         tem = !tem;
10593       type = language_bool_type (exp->language_defn, exp->gdbarch);
10594       return value_from_longest (type, (LONGEST) tem);
10595
10596     case UNOP_NEG:
10597       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10598       if (noside == EVAL_SKIP)
10599         goto nosideret;
10600       else if (ada_is_fixed_point_type (value_type (arg1)))
10601         return value_cast (value_type (arg1), value_neg (arg1));
10602       else
10603         {
10604           unop_promote (exp->language_defn, exp->gdbarch, &arg1);
10605           return value_neg (arg1);
10606         }
10607
10608     case BINOP_LOGICAL_AND:
10609     case BINOP_LOGICAL_OR:
10610     case UNOP_LOGICAL_NOT:
10611       {
10612         struct value *val;
10613
10614         *pos -= 1;
10615         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10616         type = language_bool_type (exp->language_defn, exp->gdbarch);
10617         return value_cast (type, val);
10618       }
10619
10620     case BINOP_BITWISE_AND:
10621     case BINOP_BITWISE_IOR:
10622     case BINOP_BITWISE_XOR:
10623       {
10624         struct value *val;
10625
10626         arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
10627         *pos = pc;
10628         val = evaluate_subexp_standard (expect_type, exp, pos, noside);
10629
10630         return value_cast (value_type (arg1), val);
10631       }
10632
10633     case OP_VAR_VALUE:
10634       *pos -= 1;
10635
10636       if (noside == EVAL_SKIP)
10637         {
10638           *pos += 4;
10639           goto nosideret;
10640         }
10641
10642       if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
10643         /* Only encountered when an unresolved symbol occurs in a
10644            context other than a function call, in which case, it is
10645            invalid.  */
10646         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10647                SYMBOL_PRINT_NAME (exp->elts[pc + 2].symbol));
10648
10649       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10650         {
10651           type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
10652           /* Check to see if this is a tagged type.  We also need to handle
10653              the case where the type is a reference to a tagged type, but
10654              we have to be careful to exclude pointers to tagged types.
10655              The latter should be shown as usual (as a pointer), whereas
10656              a reference should mostly be transparent to the user.  */
10657           if (ada_is_tagged_type (type, 0)
10658               || (TYPE_CODE (type) == TYPE_CODE_REF
10659                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
10660             {
10661               /* Tagged types are a little special in the fact that the real
10662                  type is dynamic and can only be determined by inspecting the
10663                  object's tag.  This means that we need to get the object's
10664                  value first (EVAL_NORMAL) and then extract the actual object
10665                  type from its tag.
10666
10667                  Note that we cannot skip the final step where we extract
10668                  the object type from its tag, because the EVAL_NORMAL phase
10669                  results in dynamic components being resolved into fixed ones.
10670                  This can cause problems when trying to print the type
10671                  description of tagged types whose parent has a dynamic size:
10672                  We use the type name of the "_parent" component in order
10673                  to print the name of the ancestor type in the type description.
10674                  If that component had a dynamic size, the resolution into
10675                  a fixed type would result in the loss of that type name,
10676                  thus preventing us from printing the name of the ancestor
10677                  type in the type description.  */
10678               arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_NORMAL);
10679
10680               if (TYPE_CODE (type) != TYPE_CODE_REF)
10681                 {
10682                   struct type *actual_type;
10683
10684                   actual_type = type_from_tag (ada_value_tag (arg1));
10685                   if (actual_type == NULL)
10686                     /* If, for some reason, we were unable to determine
10687                        the actual type from the tag, then use the static
10688                        approximation that we just computed as a fallback.
10689                        This can happen if the debugging information is
10690                        incomplete, for instance.  */
10691                     actual_type = type;
10692                   return value_zero (actual_type, not_lval);
10693                 }
10694               else
10695                 {
10696                   /* In the case of a ref, ada_coerce_ref takes care
10697                      of determining the actual type.  But the evaluation
10698                      should return a ref as it should be valid to ask
10699                      for its address; so rebuild a ref after coerce.  */
10700                   arg1 = ada_coerce_ref (arg1);
10701                   return value_ref (arg1, TYPE_CODE_REF);
10702                 }
10703             }
10704
10705           /* Records and unions for which GNAT encodings have been
10706              generated need to be statically fixed as well.
10707              Otherwise, non-static fixing produces a type where
10708              all dynamic properties are removed, which prevents "ptype"
10709              from being able to completely describe the type.
10710              For instance, a case statement in a variant record would be
10711              replaced by the relevant components based on the actual
10712              value of the discriminants.  */
10713           if ((TYPE_CODE (type) == TYPE_CODE_STRUCT
10714                && dynamic_template_type (type) != NULL)
10715               || (TYPE_CODE (type) == TYPE_CODE_UNION
10716                   && ada_find_parallel_type (type, "___XVU") != NULL))
10717             {
10718               *pos += 4;
10719               return value_zero (to_static_fixed_type (type), not_lval);
10720             }
10721         }
10722
10723       arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
10724       return ada_to_fixed_value (arg1);
10725
10726     case OP_FUNCALL:
10727       (*pos) += 2;
10728
10729       /* Allocate arg vector, including space for the function to be
10730          called in argvec[0] and a terminating NULL.  */
10731       nargs = longest_to_int (exp->elts[pc + 1].longconst);
10732       argvec = XALLOCAVEC (struct value *, nargs + 2);
10733
10734       if (exp->elts[*pos].opcode == OP_VAR_VALUE
10735           && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
10736         error (_("Unexpected unresolved symbol, %s, during evaluation"),
10737                SYMBOL_PRINT_NAME (exp->elts[pc + 5].symbol));
10738       else
10739         {
10740           for (tem = 0; tem <= nargs; tem += 1)
10741             argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10742           argvec[tem] = 0;
10743
10744           if (noside == EVAL_SKIP)
10745             goto nosideret;
10746         }
10747
10748       if (ada_is_constrained_packed_array_type
10749           (desc_base_type (value_type (argvec[0]))))
10750         argvec[0] = ada_coerce_to_simple_array (argvec[0]);
10751       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10752                && TYPE_FIELD_BITSIZE (value_type (argvec[0]), 0) != 0)
10753         /* This is a packed array that has already been fixed, and
10754            therefore already coerced to a simple array.  Nothing further
10755            to do.  */
10756         ;
10757       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_REF)
10758         {
10759           /* Make sure we dereference references so that all the code below
10760              feels like it's really handling the referenced value.  Wrapping
10761              types (for alignment) may be there, so make sure we strip them as
10762              well.  */
10763           argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
10764         }
10765       else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
10766                && VALUE_LVAL (argvec[0]) == lval_memory)
10767         argvec[0] = value_addr (argvec[0]);
10768
10769       type = ada_check_typedef (value_type (argvec[0]));
10770
10771       /* Ada allows us to implicitly dereference arrays when subscripting
10772          them.  So, if this is an array typedef (encoding use for array
10773          access types encoded as fat pointers), strip it now.  */
10774       if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
10775         type = ada_typedef_target_type (type);
10776
10777       if (TYPE_CODE (type) == TYPE_CODE_PTR)
10778         {
10779           switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
10780             {
10781             case TYPE_CODE_FUNC:
10782               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10783               break;
10784             case TYPE_CODE_ARRAY:
10785               break;
10786             case TYPE_CODE_STRUCT:
10787               if (noside != EVAL_AVOID_SIDE_EFFECTS)
10788                 argvec[0] = ada_value_ind (argvec[0]);
10789               type = ada_check_typedef (TYPE_TARGET_TYPE (type));
10790               break;
10791             default:
10792               error (_("cannot subscript or call something of type `%s'"),
10793                      ada_type_name (value_type (argvec[0])));
10794               break;
10795             }
10796         }
10797
10798       switch (TYPE_CODE (type))
10799         {
10800         case TYPE_CODE_FUNC:
10801           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10802             {
10803               if (TYPE_TARGET_TYPE (type) == NULL)
10804                 error_call_unknown_return_type (NULL);
10805               return allocate_value (TYPE_TARGET_TYPE (type));
10806             }
10807           return call_function_by_hand (argvec[0], NULL,
10808                                         gdb::make_array_view (argvec + 1,
10809                                                               nargs));
10810         case TYPE_CODE_INTERNAL_FUNCTION:
10811           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10812             /* We don't know anything about what the internal
10813                function might return, but we have to return
10814                something.  */
10815             return value_zero (builtin_type (exp->gdbarch)->builtin_int,
10816                                not_lval);
10817           else
10818             return call_internal_function (exp->gdbarch, exp->language_defn,
10819                                            argvec[0], nargs, argvec + 1);
10820
10821         case TYPE_CODE_STRUCT:
10822           {
10823             int arity;
10824
10825             arity = ada_array_arity (type);
10826             type = ada_array_element_type (type, nargs);
10827             if (type == NULL)
10828               error (_("cannot subscript or call a record"));
10829             if (arity != nargs)
10830               error (_("wrong number of subscripts; expecting %d"), arity);
10831             if (noside == EVAL_AVOID_SIDE_EFFECTS)
10832               return value_zero (ada_aligned_type (type), lval_memory);
10833             return
10834               unwrap_value (ada_value_subscript
10835                             (argvec[0], nargs, argvec + 1));
10836           }
10837         case TYPE_CODE_ARRAY:
10838           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10839             {
10840               type = ada_array_element_type (type, nargs);
10841               if (type == NULL)
10842                 error (_("element type of array unknown"));
10843               else
10844                 return value_zero (ada_aligned_type (type), lval_memory);
10845             }
10846           return
10847             unwrap_value (ada_value_subscript
10848                           (ada_coerce_to_simple_array (argvec[0]),
10849                            nargs, argvec + 1));
10850         case TYPE_CODE_PTR:     /* Pointer to array */
10851           if (noside == EVAL_AVOID_SIDE_EFFECTS)
10852             {
10853               type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
10854               type = ada_array_element_type (type, nargs);
10855               if (type == NULL)
10856                 error (_("element type of array unknown"));
10857               else
10858                 return value_zero (ada_aligned_type (type), lval_memory);
10859             }
10860           return
10861             unwrap_value (ada_value_ptr_subscript (argvec[0],
10862                                                    nargs, argvec + 1));
10863
10864         default:
10865           error (_("Attempt to index or call something other than an "
10866                    "array or function"));
10867         }
10868
10869     case TERNOP_SLICE:
10870       {
10871         struct value *array = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10872         struct value *low_bound_val =
10873           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10874         struct value *high_bound_val =
10875           evaluate_subexp (NULL_TYPE, exp, pos, noside);
10876         LONGEST low_bound;
10877         LONGEST high_bound;
10878
10879         low_bound_val = coerce_ref (low_bound_val);
10880         high_bound_val = coerce_ref (high_bound_val);
10881         low_bound = value_as_long (low_bound_val);
10882         high_bound = value_as_long (high_bound_val);
10883
10884         if (noside == EVAL_SKIP)
10885           goto nosideret;
10886
10887         /* If this is a reference to an aligner type, then remove all
10888            the aligners.  */
10889         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10890             && ada_is_aligner_type (TYPE_TARGET_TYPE (value_type (array))))
10891           TYPE_TARGET_TYPE (value_type (array)) =
10892             ada_aligned_type (TYPE_TARGET_TYPE (value_type (array)));
10893
10894         if (ada_is_constrained_packed_array_type (value_type (array)))
10895           error (_("cannot slice a packed array"));
10896
10897         /* If this is a reference to an array or an array lvalue,
10898            convert to a pointer.  */
10899         if (TYPE_CODE (value_type (array)) == TYPE_CODE_REF
10900             || (TYPE_CODE (value_type (array)) == TYPE_CODE_ARRAY
10901                 && VALUE_LVAL (array) == lval_memory))
10902           array = value_addr (array);
10903
10904         if (noside == EVAL_AVOID_SIDE_EFFECTS
10905             && ada_is_array_descriptor_type (ada_check_typedef
10906                                              (value_type (array))))
10907           return empty_array (ada_type_of_array (array, 0), low_bound,
10908                               high_bound);
10909
10910         array = ada_coerce_to_simple_array_ptr (array);
10911
10912         /* If we have more than one level of pointer indirection,
10913            dereference the value until we get only one level.  */
10914         while (TYPE_CODE (value_type (array)) == TYPE_CODE_PTR
10915                && (TYPE_CODE (TYPE_TARGET_TYPE (value_type (array)))
10916                      == TYPE_CODE_PTR))
10917           array = value_ind (array);
10918
10919         /* Make sure we really do have an array type before going further,
10920            to avoid a SEGV when trying to get the index type or the target
10921            type later down the road if the debug info generated by
10922            the compiler is incorrect or incomplete.  */
10923         if (!ada_is_simple_array_type (value_type (array)))
10924           error (_("cannot take slice of non-array"));
10925
10926         if (TYPE_CODE (ada_check_typedef (value_type (array)))
10927             == TYPE_CODE_PTR)
10928           {
10929             struct type *type0 = ada_check_typedef (value_type (array));
10930
10931             if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
10932               return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
10933             else
10934               {
10935                 struct type *arr_type0 =
10936                   to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
10937
10938                 return ada_value_slice_from_ptr (array, arr_type0,
10939                                                  longest_to_int (low_bound),
10940                                                  longest_to_int (high_bound));
10941               }
10942           }
10943         else if (noside == EVAL_AVOID_SIDE_EFFECTS)
10944           return array;
10945         else if (high_bound < low_bound)
10946           return empty_array (value_type (array), low_bound, high_bound);
10947         else
10948           return ada_value_slice (array, longest_to_int (low_bound),
10949                                   longest_to_int (high_bound));
10950       }
10951
10952     case UNOP_IN_RANGE:
10953       (*pos) += 2;
10954       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10955       type = check_typedef (exp->elts[pc + 1].type);
10956
10957       if (noside == EVAL_SKIP)
10958         goto nosideret;
10959
10960       switch (TYPE_CODE (type))
10961         {
10962         default:
10963           lim_warning (_("Membership test incompletely implemented; "
10964                          "always returns true"));
10965           type = language_bool_type (exp->language_defn, exp->gdbarch);
10966           return value_from_longest (type, (LONGEST) 1);
10967
10968         case TYPE_CODE_RANGE:
10969           arg2 = value_from_longest (type, TYPE_LOW_BOUND (type));
10970           arg3 = value_from_longest (type, TYPE_HIGH_BOUND (type));
10971           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
10972           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
10973           type = language_bool_type (exp->language_defn, exp->gdbarch);
10974           return
10975             value_from_longest (type,
10976                                 (value_less (arg1, arg3)
10977                                  || value_equal (arg1, arg3))
10978                                 && (value_less (arg2, arg1)
10979                                     || value_equal (arg2, arg1)));
10980         }
10981
10982     case BINOP_IN_BOUNDS:
10983       (*pos) += 2;
10984       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10985       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
10986
10987       if (noside == EVAL_SKIP)
10988         goto nosideret;
10989
10990       if (noside == EVAL_AVOID_SIDE_EFFECTS)
10991         {
10992           type = language_bool_type (exp->language_defn, exp->gdbarch);
10993           return value_zero (type, not_lval);
10994         }
10995
10996       tem = longest_to_int (exp->elts[pc + 1].longconst);
10997
10998       type = ada_index_type (value_type (arg2), tem, "range");
10999       if (!type)
11000         type = value_type (arg1);
11001
11002       arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
11003       arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
11004
11005       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11006       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11007       type = language_bool_type (exp->language_defn, exp->gdbarch);
11008       return
11009         value_from_longest (type,
11010                             (value_less (arg1, arg3)
11011                              || value_equal (arg1, arg3))
11012                             && (value_less (arg2, arg1)
11013                                 || value_equal (arg2, arg1)));
11014
11015     case TERNOP_IN_RANGE:
11016       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11017       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11018       arg3 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11019
11020       if (noside == EVAL_SKIP)
11021         goto nosideret;
11022
11023       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11024       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
11025       type = language_bool_type (exp->language_defn, exp->gdbarch);
11026       return
11027         value_from_longest (type,
11028                             (value_less (arg1, arg3)
11029                              || value_equal (arg1, arg3))
11030                             && (value_less (arg2, arg1)
11031                                 || value_equal (arg2, arg1)));
11032
11033     case OP_ATR_FIRST:
11034     case OP_ATR_LAST:
11035     case OP_ATR_LENGTH:
11036       {
11037         struct type *type_arg;
11038
11039         if (exp->elts[*pos].opcode == OP_TYPE)
11040           {
11041             evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11042             arg1 = NULL;
11043             type_arg = check_typedef (exp->elts[pc + 2].type);
11044           }
11045         else
11046           {
11047             arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11048             type_arg = NULL;
11049           }
11050
11051         if (exp->elts[*pos].opcode != OP_LONG)
11052           error (_("Invalid operand to '%s"), ada_attribute_name (op));
11053         tem = longest_to_int (exp->elts[*pos + 2].longconst);
11054         *pos += 4;
11055
11056         if (noside == EVAL_SKIP)
11057           goto nosideret;
11058
11059         if (type_arg == NULL)
11060           {
11061             arg1 = ada_coerce_ref (arg1);
11062
11063             if (ada_is_constrained_packed_array_type (value_type (arg1)))
11064               arg1 = ada_coerce_to_simple_array (arg1);
11065
11066             if (op == OP_ATR_LENGTH)
11067               type = builtin_type (exp->gdbarch)->builtin_int;
11068             else
11069               {
11070                 type = ada_index_type (value_type (arg1), tem,
11071                                        ada_attribute_name (op));
11072                 if (type == NULL)
11073                   type = builtin_type (exp->gdbarch)->builtin_int;
11074               }
11075
11076             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11077               return allocate_value (type);
11078
11079             switch (op)
11080               {
11081               default:          /* Should never happen.  */
11082                 error (_("unexpected attribute encountered"));
11083               case OP_ATR_FIRST:
11084                 return value_from_longest
11085                         (type, ada_array_bound (arg1, tem, 0));
11086               case OP_ATR_LAST:
11087                 return value_from_longest
11088                         (type, ada_array_bound (arg1, tem, 1));
11089               case OP_ATR_LENGTH:
11090                 return value_from_longest
11091                         (type, ada_array_length (arg1, tem));
11092               }
11093           }
11094         else if (discrete_type_p (type_arg))
11095           {
11096             struct type *range_type;
11097             const char *name = ada_type_name (type_arg);
11098
11099             range_type = NULL;
11100             if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
11101               range_type = to_fixed_range_type (type_arg, NULL);
11102             if (range_type == NULL)
11103               range_type = type_arg;
11104             switch (op)
11105               {
11106               default:
11107                 error (_("unexpected attribute encountered"));
11108               case OP_ATR_FIRST:
11109                 return value_from_longest 
11110                   (range_type, ada_discrete_type_low_bound (range_type));
11111               case OP_ATR_LAST:
11112                 return value_from_longest
11113                   (range_type, ada_discrete_type_high_bound (range_type));
11114               case OP_ATR_LENGTH:
11115                 error (_("the 'length attribute applies only to array types"));
11116               }
11117           }
11118         else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
11119           error (_("unimplemented type attribute"));
11120         else
11121           {
11122             LONGEST low, high;
11123
11124             if (ada_is_constrained_packed_array_type (type_arg))
11125               type_arg = decode_constrained_packed_array_type (type_arg);
11126
11127             if (op == OP_ATR_LENGTH)
11128               type = builtin_type (exp->gdbarch)->builtin_int;
11129             else
11130               {
11131                 type = ada_index_type (type_arg, tem, ada_attribute_name (op));
11132                 if (type == NULL)
11133                   type = builtin_type (exp->gdbarch)->builtin_int;
11134               }
11135
11136             if (noside == EVAL_AVOID_SIDE_EFFECTS)
11137               return allocate_value (type);
11138
11139             switch (op)
11140               {
11141               default:
11142                 error (_("unexpected attribute encountered"));
11143               case OP_ATR_FIRST:
11144                 low = ada_array_bound_from_type (type_arg, tem, 0);
11145                 return value_from_longest (type, low);
11146               case OP_ATR_LAST:
11147                 high = ada_array_bound_from_type (type_arg, tem, 1);
11148                 return value_from_longest (type, high);
11149               case OP_ATR_LENGTH:
11150                 low = ada_array_bound_from_type (type_arg, tem, 0);
11151                 high = ada_array_bound_from_type (type_arg, tem, 1);
11152                 return value_from_longest (type, high - low + 1);
11153               }
11154           }
11155       }
11156
11157     case OP_ATR_TAG:
11158       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11159       if (noside == EVAL_SKIP)
11160         goto nosideret;
11161
11162       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11163         return value_zero (ada_tag_type (arg1), not_lval);
11164
11165       return ada_value_tag (arg1);
11166
11167     case OP_ATR_MIN:
11168     case OP_ATR_MAX:
11169       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11170       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11171       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11172       if (noside == EVAL_SKIP)
11173         goto nosideret;
11174       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11175         return value_zero (value_type (arg1), not_lval);
11176       else
11177         {
11178           binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11179           return value_binop (arg1, arg2,
11180                               op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
11181         }
11182
11183     case OP_ATR_MODULUS:
11184       {
11185         struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
11186
11187         evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11188         if (noside == EVAL_SKIP)
11189           goto nosideret;
11190
11191         if (!ada_is_modular_type (type_arg))
11192           error (_("'modulus must be applied to modular type"));
11193
11194         return value_from_longest (TYPE_TARGET_TYPE (type_arg),
11195                                    ada_modulus (type_arg));
11196       }
11197
11198
11199     case OP_ATR_POS:
11200       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11201       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11202       if (noside == EVAL_SKIP)
11203         goto nosideret;
11204       type = builtin_type (exp->gdbarch)->builtin_int;
11205       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11206         return value_zero (type, not_lval);
11207       else
11208         return value_pos_atr (type, arg1);
11209
11210     case OP_ATR_SIZE:
11211       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11212       type = value_type (arg1);
11213
11214       /* If the argument is a reference, then dereference its type, since
11215          the user is really asking for the size of the actual object,
11216          not the size of the pointer.  */
11217       if (TYPE_CODE (type) == TYPE_CODE_REF)
11218         type = TYPE_TARGET_TYPE (type);
11219
11220       if (noside == EVAL_SKIP)
11221         goto nosideret;
11222       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11223         return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
11224       else
11225         return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
11226                                    TARGET_CHAR_BIT * TYPE_LENGTH (type));
11227
11228     case OP_ATR_VAL:
11229       evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
11230       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11231       type = exp->elts[pc + 2].type;
11232       if (noside == EVAL_SKIP)
11233         goto nosideret;
11234       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11235         return value_zero (type, not_lval);
11236       else
11237         return value_val_atr (type, arg1);
11238
11239     case BINOP_EXP:
11240       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11241       arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11242       if (noside == EVAL_SKIP)
11243         goto nosideret;
11244       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11245         return value_zero (value_type (arg1), not_lval);
11246       else
11247         {
11248           /* For integer exponentiation operations,
11249              only promote the first argument.  */
11250           if (is_integral_type (value_type (arg2)))
11251             unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11252           else
11253             binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
11254
11255           return value_binop (arg1, arg2, op);
11256         }
11257
11258     case UNOP_PLUS:
11259       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11260       if (noside == EVAL_SKIP)
11261         goto nosideret;
11262       else
11263         return arg1;
11264
11265     case UNOP_ABS:
11266       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11267       if (noside == EVAL_SKIP)
11268         goto nosideret;
11269       unop_promote (exp->language_defn, exp->gdbarch, &arg1);
11270       if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
11271         return value_neg (arg1);
11272       else
11273         return arg1;
11274
11275     case UNOP_IND:
11276       preeval_pos = *pos;
11277       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11278       if (noside == EVAL_SKIP)
11279         goto nosideret;
11280       type = ada_check_typedef (value_type (arg1));
11281       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11282         {
11283           if (ada_is_array_descriptor_type (type))
11284             /* GDB allows dereferencing GNAT array descriptors.  */
11285             {
11286               struct type *arrType = ada_type_of_array (arg1, 0);
11287
11288               if (arrType == NULL)
11289                 error (_("Attempt to dereference null array pointer."));
11290               return value_at_lazy (arrType, 0);
11291             }
11292           else if (TYPE_CODE (type) == TYPE_CODE_PTR
11293                    || TYPE_CODE (type) == TYPE_CODE_REF
11294                    /* In C you can dereference an array to get the 1st elt.  */
11295                    || TYPE_CODE (type) == TYPE_CODE_ARRAY)
11296             {
11297             /* As mentioned in the OP_VAR_VALUE case, tagged types can
11298                only be determined by inspecting the object's tag.
11299                This means that we need to evaluate completely the
11300                expression in order to get its type.  */
11301
11302               if ((TYPE_CODE (type) == TYPE_CODE_REF
11303                    || TYPE_CODE (type) == TYPE_CODE_PTR)
11304                   && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
11305                 {
11306                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11307                                           EVAL_NORMAL);
11308                   type = value_type (ada_value_ind (arg1));
11309                 }
11310               else
11311                 {
11312                   type = to_static_fixed_type
11313                     (ada_aligned_type
11314                      (ada_check_typedef (TYPE_TARGET_TYPE (type))));
11315                 }
11316               ada_ensure_varsize_limit (type);
11317               return value_zero (type, lval_memory);
11318             }
11319           else if (TYPE_CODE (type) == TYPE_CODE_INT)
11320             {
11321               /* GDB allows dereferencing an int.  */
11322               if (expect_type == NULL)
11323                 return value_zero (builtin_type (exp->gdbarch)->builtin_int,
11324                                    lval_memory);
11325               else
11326                 {
11327                   expect_type = 
11328                     to_static_fixed_type (ada_aligned_type (expect_type));
11329                   return value_zero (expect_type, lval_memory);
11330                 }
11331             }
11332           else
11333             error (_("Attempt to take contents of a non-pointer value."));
11334         }
11335       arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
11336       type = ada_check_typedef (value_type (arg1));
11337
11338       if (TYPE_CODE (type) == TYPE_CODE_INT)
11339           /* GDB allows dereferencing an int.  If we were given
11340              the expect_type, then use that as the target type.
11341              Otherwise, assume that the target type is an int.  */
11342         {
11343           if (expect_type != NULL)
11344             return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
11345                                               arg1));
11346           else
11347             return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
11348                                   (CORE_ADDR) value_as_address (arg1));
11349         }
11350
11351       if (ada_is_array_descriptor_type (type))
11352         /* GDB allows dereferencing GNAT array descriptors.  */
11353         return ada_coerce_to_simple_array (arg1);
11354       else
11355         return ada_value_ind (arg1);
11356
11357     case STRUCTOP_STRUCT:
11358       tem = longest_to_int (exp->elts[pc + 1].longconst);
11359       (*pos) += 3 + BYTES_TO_EXP_ELEM (tem + 1);
11360       preeval_pos = *pos;
11361       arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
11362       if (noside == EVAL_SKIP)
11363         goto nosideret;
11364       if (noside == EVAL_AVOID_SIDE_EFFECTS)
11365         {
11366           struct type *type1 = value_type (arg1);
11367
11368           if (ada_is_tagged_type (type1, 1))
11369             {
11370               type = ada_lookup_struct_elt_type (type1,
11371                                                  &exp->elts[pc + 2].string,
11372                                                  1, 1);
11373
11374               /* If the field is not found, check if it exists in the
11375                  extension of this object's type. This means that we
11376                  need to evaluate completely the expression.  */
11377
11378               if (type == NULL)
11379                 {
11380                   arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
11381                                           EVAL_NORMAL);
11382                   arg1 = ada_value_struct_elt (arg1,
11383                                                &exp->elts[pc + 2].string,
11384                                                0);
11385                   arg1 = unwrap_value (arg1);
11386                   type = value_type (ada_to_fixed_value (arg1));
11387                 }
11388             }
11389           else
11390             type =
11391               ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
11392                                           0);
11393
11394           return value_zero (ada_aligned_type (type), lval_memory);
11395         }
11396       else
11397         {
11398           arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
11399           arg1 = unwrap_value (arg1);
11400           return ada_to_fixed_value (arg1);
11401         }
11402
11403     case OP_TYPE:
11404       /* The value is not supposed to be used.  This is here to make it
11405          easier to accommodate expressions that contain types.  */
11406       (*pos) += 2;
11407       if (noside == EVAL_SKIP)
11408         goto nosideret;
11409       else if (noside == EVAL_AVOID_SIDE_EFFECTS)
11410         return allocate_value (exp->elts[pc + 1].type);
11411       else
11412         error (_("Attempt to use a type name as an expression"));
11413
11414     case OP_AGGREGATE:
11415     case OP_CHOICES:
11416     case OP_OTHERS:
11417     case OP_DISCRETE_RANGE:
11418     case OP_POSITIONAL:
11419     case OP_NAME:
11420       if (noside == EVAL_NORMAL)
11421         switch (op) 
11422           {
11423           case OP_NAME:
11424             error (_("Undefined name, ambiguous name, or renaming used in "
11425                      "component association: %s."), &exp->elts[pc+2].string);
11426           case OP_AGGREGATE:
11427             error (_("Aggregates only allowed on the right of an assignment"));
11428           default:
11429             internal_error (__FILE__, __LINE__,
11430                             _("aggregate apparently mangled"));
11431           }
11432
11433       ada_forward_operator_length (exp, pc, &oplen, &nargs);
11434       *pos += oplen - 1;
11435       for (tem = 0; tem < nargs; tem += 1) 
11436         ada_evaluate_subexp (NULL, exp, pos, noside);
11437       goto nosideret;
11438     }
11439
11440 nosideret:
11441   return eval_skip_value (exp);
11442 }
11443 \f
11444
11445                                 /* Fixed point */
11446
11447 /* If TYPE encodes an Ada fixed-point type, return the suffix of the
11448    type name that encodes the 'small and 'delta information.
11449    Otherwise, return NULL.  */
11450
11451 static const char *
11452 fixed_type_info (struct type *type)
11453 {
11454   const char *name = ada_type_name (type);
11455   enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
11456
11457   if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
11458     {
11459       const char *tail = strstr (name, "___XF_");
11460
11461       if (tail == NULL)
11462         return NULL;
11463       else
11464         return tail + 5;
11465     }
11466   else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
11467     return fixed_type_info (TYPE_TARGET_TYPE (type));
11468   else
11469     return NULL;
11470 }
11471
11472 /* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
11473
11474 int
11475 ada_is_fixed_point_type (struct type *type)
11476 {
11477   return fixed_type_info (type) != NULL;
11478 }
11479
11480 /* Return non-zero iff TYPE represents a System.Address type.  */
11481
11482 int
11483 ada_is_system_address_type (struct type *type)
11484 {
11485   return (TYPE_NAME (type)
11486           && strcmp (TYPE_NAME (type), "system__address") == 0);
11487 }
11488
11489 /* Assuming that TYPE is the representation of an Ada fixed-point
11490    type, return the target floating-point type to be used to represent
11491    of this type during internal computation.  */
11492
11493 static struct type *
11494 ada_scaling_type (struct type *type)
11495 {
11496   return builtin_type (get_type_arch (type))->builtin_long_double;
11497 }
11498
11499 /* Assuming that TYPE is the representation of an Ada fixed-point
11500    type, return its delta, or NULL if the type is malformed and the
11501    delta cannot be determined.  */
11502
11503 struct value *
11504 ada_delta (struct type *type)
11505 {
11506   const char *encoding = fixed_type_info (type);
11507   struct type *scale_type = ada_scaling_type (type);
11508
11509   long long num, den;
11510
11511   if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
11512     return nullptr;
11513   else
11514     return value_binop (value_from_longest (scale_type, num),
11515                         value_from_longest (scale_type, den), BINOP_DIV);
11516 }
11517
11518 /* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
11519    factor ('SMALL value) associated with the type.  */
11520
11521 struct value *
11522 ada_scaling_factor (struct type *type)
11523 {
11524   const char *encoding = fixed_type_info (type);
11525   struct type *scale_type = ada_scaling_type (type);
11526
11527   long long num0, den0, num1, den1;
11528   int n;
11529
11530   n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
11531               &num0, &den0, &num1, &den1);
11532
11533   if (n < 2)
11534     return value_from_longest (scale_type, 1);
11535   else if (n == 4)
11536     return value_binop (value_from_longest (scale_type, num1),
11537                         value_from_longest (scale_type, den1), BINOP_DIV);
11538   else
11539     return value_binop (value_from_longest (scale_type, num0),
11540                         value_from_longest (scale_type, den0), BINOP_DIV);
11541 }
11542
11543 \f
11544
11545                                 /* Range types */
11546
11547 /* Scan STR beginning at position K for a discriminant name, and
11548    return the value of that discriminant field of DVAL in *PX.  If
11549    PNEW_K is not null, put the position of the character beyond the
11550    name scanned in *PNEW_K.  Return 1 if successful; return 0 and do
11551    not alter *PX and *PNEW_K if unsuccessful.  */
11552
11553 static int
11554 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
11555                     int *pnew_k)
11556 {
11557   static char *bound_buffer = NULL;
11558   static size_t bound_buffer_len = 0;
11559   const char *pstart, *pend, *bound;
11560   struct value *bound_val;
11561
11562   if (dval == NULL || str == NULL || str[k] == '\0')
11563     return 0;
11564
11565   pstart = str + k;
11566   pend = strstr (pstart, "__");
11567   if (pend == NULL)
11568     {
11569       bound = pstart;
11570       k += strlen (bound);
11571     }
11572   else
11573     {
11574       int len = pend - pstart;
11575
11576       /* Strip __ and beyond.  */
11577       GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
11578       strncpy (bound_buffer, pstart, len);
11579       bound_buffer[len] = '\0';
11580
11581       bound = bound_buffer;
11582       k = pend - str;
11583     }
11584
11585   bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
11586   if (bound_val == NULL)
11587     return 0;
11588
11589   *px = value_as_long (bound_val);
11590   if (pnew_k != NULL)
11591     *pnew_k = k;
11592   return 1;
11593 }
11594
11595 /* Value of variable named NAME in the current environment.  If
11596    no such variable found, then if ERR_MSG is null, returns 0, and
11597    otherwise causes an error with message ERR_MSG.  */
11598
11599 static struct value *
11600 get_var_value (const char *name, const char *err_msg)
11601 {
11602   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
11603
11604   std::vector<struct block_symbol> syms;
11605   int nsyms = ada_lookup_symbol_list_worker (lookup_name,
11606                                              get_selected_block (0),
11607                                              VAR_DOMAIN, &syms, 1);
11608
11609   if (nsyms != 1)
11610     {
11611       if (err_msg == NULL)
11612         return 0;
11613       else
11614         error (("%s"), err_msg);
11615     }
11616
11617   return value_of_variable (syms[0].symbol, syms[0].block);
11618 }
11619
11620 /* Value of integer variable named NAME in the current environment.
11621    If no such variable is found, returns false.  Otherwise, sets VALUE
11622    to the variable's value and returns true.  */
11623
11624 bool
11625 get_int_var_value (const char *name, LONGEST &value)
11626 {
11627   struct value *var_val = get_var_value (name, 0);
11628
11629   if (var_val == 0)
11630     return false;
11631
11632   value = value_as_long (var_val);
11633   return true;
11634 }
11635
11636
11637 /* Return a range type whose base type is that of the range type named
11638    NAME in the current environment, and whose bounds are calculated
11639    from NAME according to the GNAT range encoding conventions.
11640    Extract discriminant values, if needed, from DVAL.  ORIG_TYPE is the
11641    corresponding range type from debug information; fall back to using it
11642    if symbol lookup fails.  If a new type must be created, allocate it
11643    like ORIG_TYPE was.  The bounds information, in general, is encoded
11644    in NAME, the base type given in the named range type.  */
11645
11646 static struct type *
11647 to_fixed_range_type (struct type *raw_type, struct value *dval)
11648 {
11649   const char *name;
11650   struct type *base_type;
11651   const char *subtype_info;
11652
11653   gdb_assert (raw_type != NULL);
11654   gdb_assert (TYPE_NAME (raw_type) != NULL);
11655
11656   if (TYPE_CODE (raw_type) == TYPE_CODE_RANGE)
11657     base_type = TYPE_TARGET_TYPE (raw_type);
11658   else
11659     base_type = raw_type;
11660
11661   name = TYPE_NAME (raw_type);
11662   subtype_info = strstr (name, "___XD");
11663   if (subtype_info == NULL)
11664     {
11665       LONGEST L = ada_discrete_type_low_bound (raw_type);
11666       LONGEST U = ada_discrete_type_high_bound (raw_type);
11667
11668       if (L < INT_MIN || U > INT_MAX)
11669         return raw_type;
11670       else
11671         return create_static_range_type (alloc_type_copy (raw_type), raw_type,
11672                                          L, U);
11673     }
11674   else
11675     {
11676       static char *name_buf = NULL;
11677       static size_t name_len = 0;
11678       int prefix_len = subtype_info - name;
11679       LONGEST L, U;
11680       struct type *type;
11681       const char *bounds_str;
11682       int n;
11683
11684       GROW_VECT (name_buf, name_len, prefix_len + 5);
11685       strncpy (name_buf, name, prefix_len);
11686       name_buf[prefix_len] = '\0';
11687
11688       subtype_info += 5;
11689       bounds_str = strchr (subtype_info, '_');
11690       n = 1;
11691
11692       if (*subtype_info == 'L')
11693         {
11694           if (!ada_scan_number (bounds_str, n, &L, &n)
11695               && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
11696             return raw_type;
11697           if (bounds_str[n] == '_')
11698             n += 2;
11699           else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
11700             n += 1;
11701           subtype_info += 1;
11702         }
11703       else
11704         {
11705           strcpy (name_buf + prefix_len, "___L");
11706           if (!get_int_var_value (name_buf, L))
11707             {
11708               lim_warning (_("Unknown lower bound, using 1."));
11709               L = 1;
11710             }
11711         }
11712
11713       if (*subtype_info == 'U')
11714         {
11715           if (!ada_scan_number (bounds_str, n, &U, &n)
11716               && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
11717             return raw_type;
11718         }
11719       else
11720         {
11721           strcpy (name_buf + prefix_len, "___U");
11722           if (!get_int_var_value (name_buf, U))
11723             {
11724               lim_warning (_("Unknown upper bound, using %ld."), (long) L);
11725               U = L;
11726             }
11727         }
11728
11729       type = create_static_range_type (alloc_type_copy (raw_type),
11730                                        base_type, L, U);
11731       /* create_static_range_type alters the resulting type's length
11732          to match the size of the base_type, which is not what we want.
11733          Set it back to the original range type's length.  */
11734       TYPE_LENGTH (type) = TYPE_LENGTH (raw_type);
11735       TYPE_NAME (type) = name;
11736       return type;
11737     }
11738 }
11739
11740 /* True iff NAME is the name of a range type.  */
11741
11742 int
11743 ada_is_range_type_name (const char *name)
11744 {
11745   return (name != NULL && strstr (name, "___XD"));
11746 }
11747 \f
11748
11749                                 /* Modular types */
11750
11751 /* True iff TYPE is an Ada modular type.  */
11752
11753 int
11754 ada_is_modular_type (struct type *type)
11755 {
11756   struct type *subranged_type = get_base_type (type);
11757
11758   return (subranged_type != NULL && TYPE_CODE (type) == TYPE_CODE_RANGE
11759           && TYPE_CODE (subranged_type) == TYPE_CODE_INT
11760           && TYPE_UNSIGNED (subranged_type));
11761 }
11762
11763 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
11764
11765 ULONGEST
11766 ada_modulus (struct type *type)
11767 {
11768   return (ULONGEST) TYPE_HIGH_BOUND (type) + 1;
11769 }
11770 \f
11771
11772 /* Ada exception catchpoint support:
11773    ---------------------------------
11774
11775    We support 3 kinds of exception catchpoints:
11776      . catchpoints on Ada exceptions
11777      . catchpoints on unhandled Ada exceptions
11778      . catchpoints on failed assertions
11779
11780    Exceptions raised during failed assertions, or unhandled exceptions
11781    could perfectly be caught with the general catchpoint on Ada exceptions.
11782    However, we can easily differentiate these two special cases, and having
11783    the option to distinguish these two cases from the rest can be useful
11784    to zero-in on certain situations.
11785
11786    Exception catchpoints are a specialized form of breakpoint,
11787    since they rely on inserting breakpoints inside known routines
11788    of the GNAT runtime.  The implementation therefore uses a standard
11789    breakpoint structure of the BP_BREAKPOINT type, but with its own set
11790    of breakpoint_ops.
11791
11792    Support in the runtime for exception catchpoints have been changed
11793    a few times already, and these changes affect the implementation
11794    of these catchpoints.  In order to be able to support several
11795    variants of the runtime, we use a sniffer that will determine
11796    the runtime variant used by the program being debugged.  */
11797
11798 /* Ada's standard exceptions.
11799
11800    The Ada 83 standard also defined Numeric_Error.  But there so many
11801    situations where it was unclear from the Ada 83 Reference Manual
11802    (RM) whether Constraint_Error or Numeric_Error should be raised,
11803    that the ARG (Ada Rapporteur Group) eventually issued a Binding
11804    Interpretation saying that anytime the RM says that Numeric_Error
11805    should be raised, the implementation may raise Constraint_Error.
11806    Ada 95 went one step further and pretty much removed Numeric_Error
11807    from the list of standard exceptions (it made it a renaming of
11808    Constraint_Error, to help preserve compatibility when compiling
11809    an Ada83 compiler). As such, we do not include Numeric_Error from
11810    this list of standard exceptions.  */
11811
11812 static const char *standard_exc[] = {
11813   "constraint_error",
11814   "program_error",
11815   "storage_error",
11816   "tasking_error"
11817 };
11818
11819 typedef CORE_ADDR (ada_unhandled_exception_name_addr_ftype) (void);
11820
11821 /* A structure that describes how to support exception catchpoints
11822    for a given executable.  */
11823
11824 struct exception_support_info
11825 {
11826    /* The name of the symbol to break on in order to insert
11827       a catchpoint on exceptions.  */
11828    const char *catch_exception_sym;
11829
11830    /* The name of the symbol to break on in order to insert
11831       a catchpoint on unhandled exceptions.  */
11832    const char *catch_exception_unhandled_sym;
11833
11834    /* The name of the symbol to break on in order to insert
11835       a catchpoint on failed assertions.  */
11836    const char *catch_assert_sym;
11837
11838    /* The name of the symbol to break on in order to insert
11839       a catchpoint on exception handling.  */
11840    const char *catch_handlers_sym;
11841
11842    /* Assuming that the inferior just triggered an unhandled exception
11843       catchpoint, this function is responsible for returning the address
11844       in inferior memory where the name of that exception is stored.
11845       Return zero if the address could not be computed.  */
11846    ada_unhandled_exception_name_addr_ftype *unhandled_exception_name_addr;
11847 };
11848
11849 static CORE_ADDR ada_unhandled_exception_name_addr (void);
11850 static CORE_ADDR ada_unhandled_exception_name_addr_from_raise (void);
11851
11852 /* The following exception support info structure describes how to
11853    implement exception catchpoints with the latest version of the
11854    Ada runtime (as of 2007-03-06).  */
11855
11856 static const struct exception_support_info default_exception_support_info =
11857 {
11858   "__gnat_debug_raise_exception", /* catch_exception_sym */
11859   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11860   "__gnat_debug_raise_assert_failure", /* catch_assert_sym */
11861   "__gnat_begin_handler", /* catch_handlers_sym */
11862   ada_unhandled_exception_name_addr
11863 };
11864
11865 /* The following exception support info structure describes how to
11866    implement exception catchpoints with a slightly older version
11867    of the Ada runtime.  */
11868
11869 static const struct exception_support_info exception_support_info_fallback =
11870 {
11871   "__gnat_raise_nodefer_with_msg", /* catch_exception_sym */
11872   "__gnat_unhandled_exception", /* catch_exception_unhandled_sym */
11873   "system__assertions__raise_assert_failure",  /* catch_assert_sym */
11874   "__gnat_begin_handler", /* catch_handlers_sym */
11875   ada_unhandled_exception_name_addr_from_raise
11876 };
11877
11878 /* Return nonzero if we can detect the exception support routines
11879    described in EINFO.
11880
11881    This function errors out if an abnormal situation is detected
11882    (for instance, if we find the exception support routines, but
11883    that support is found to be incomplete).  */
11884
11885 static int
11886 ada_has_this_exception_support (const struct exception_support_info *einfo)
11887 {
11888   struct symbol *sym;
11889
11890   /* The symbol we're looking up is provided by a unit in the GNAT runtime
11891      that should be compiled with debugging information.  As a result, we
11892      expect to find that symbol in the symtabs.  */
11893
11894   sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
11895   if (sym == NULL)
11896     {
11897       /* Perhaps we did not find our symbol because the Ada runtime was
11898          compiled without debugging info, or simply stripped of it.
11899          It happens on some GNU/Linux distributions for instance, where
11900          users have to install a separate debug package in order to get
11901          the runtime's debugging info.  In that situation, let the user
11902          know why we cannot insert an Ada exception catchpoint.
11903
11904          Note: Just for the purpose of inserting our Ada exception
11905          catchpoint, we could rely purely on the associated minimal symbol.
11906          But we would be operating in degraded mode anyway, since we are
11907          still lacking the debugging info needed later on to extract
11908          the name of the exception being raised (this name is printed in
11909          the catchpoint message, and is also used when trying to catch
11910          a specific exception).  We do not handle this case for now.  */
11911       struct bound_minimal_symbol msym
11912         = lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
11913
11914       if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
11915         error (_("Your Ada runtime appears to be missing some debugging "
11916                  "information.\nCannot insert Ada exception catchpoint "
11917                  "in this configuration."));
11918
11919       return 0;
11920     }
11921
11922   /* Make sure that the symbol we found corresponds to a function.  */
11923
11924   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
11925     error (_("Symbol \"%s\" is not a function (class = %d)"),
11926            SYMBOL_LINKAGE_NAME (sym), SYMBOL_CLASS (sym));
11927
11928   return 1;
11929 }
11930
11931 /* Inspect the Ada runtime and determine which exception info structure
11932    should be used to provide support for exception catchpoints.
11933
11934    This function will always set the per-inferior exception_info,
11935    or raise an error.  */
11936
11937 static void
11938 ada_exception_support_info_sniffer (void)
11939 {
11940   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
11941
11942   /* If the exception info is already known, then no need to recompute it.  */
11943   if (data->exception_info != NULL)
11944     return;
11945
11946   /* Check the latest (default) exception support info.  */
11947   if (ada_has_this_exception_support (&default_exception_support_info))
11948     {
11949       data->exception_info = &default_exception_support_info;
11950       return;
11951     }
11952
11953   /* Try our fallback exception suport info.  */
11954   if (ada_has_this_exception_support (&exception_support_info_fallback))
11955     {
11956       data->exception_info = &exception_support_info_fallback;
11957       return;
11958     }
11959
11960   /* Sometimes, it is normal for us to not be able to find the routine
11961      we are looking for.  This happens when the program is linked with
11962      the shared version of the GNAT runtime, and the program has not been
11963      started yet.  Inform the user of these two possible causes if
11964      applicable.  */
11965
11966   if (ada_update_initial_language (language_unknown) != language_ada)
11967     error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
11968
11969   /* If the symbol does not exist, then check that the program is
11970      already started, to make sure that shared libraries have been
11971      loaded.  If it is not started, this may mean that the symbol is
11972      in a shared library.  */
11973
11974   if (inferior_ptid.pid () == 0)
11975     error (_("Unable to insert catchpoint. Try to start the program first."));
11976
11977   /* At this point, we know that we are debugging an Ada program and
11978      that the inferior has been started, but we still are not able to
11979      find the run-time symbols.  That can mean that we are in
11980      configurable run time mode, or that a-except as been optimized
11981      out by the linker...  In any case, at this point it is not worth
11982      supporting this feature.  */
11983
11984   error (_("Cannot insert Ada exception catchpoints in this configuration."));
11985 }
11986
11987 /* True iff FRAME is very likely to be that of a function that is
11988    part of the runtime system.  This is all very heuristic, but is
11989    intended to be used as advice as to what frames are uninteresting
11990    to most users.  */
11991
11992 static int
11993 is_known_support_routine (struct frame_info *frame)
11994 {
11995   enum language func_lang;
11996   int i;
11997   const char *fullname;
11998
11999   /* If this code does not have any debugging information (no symtab),
12000      This cannot be any user code.  */
12001
12002   symtab_and_line sal = find_frame_sal (frame);
12003   if (sal.symtab == NULL)
12004     return 1;
12005
12006   /* If there is a symtab, but the associated source file cannot be
12007      located, then assume this is not user code:  Selecting a frame
12008      for which we cannot display the code would not be very helpful
12009      for the user.  This should also take care of case such as VxWorks
12010      where the kernel has some debugging info provided for a few units.  */
12011
12012   fullname = symtab_to_fullname (sal.symtab);
12013   if (access (fullname, R_OK) != 0)
12014     return 1;
12015
12016   /* Check the unit filename againt the Ada runtime file naming.
12017      We also check the name of the objfile against the name of some
12018      known system libraries that sometimes come with debugging info
12019      too.  */
12020
12021   for (i = 0; known_runtime_file_name_patterns[i] != NULL; i += 1)
12022     {
12023       re_comp (known_runtime_file_name_patterns[i]);
12024       if (re_exec (lbasename (sal.symtab->filename)))
12025         return 1;
12026       if (SYMTAB_OBJFILE (sal.symtab) != NULL
12027           && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
12028         return 1;
12029     }
12030
12031   /* Check whether the function is a GNAT-generated entity.  */
12032
12033   gdb::unique_xmalloc_ptr<char> func_name
12034     = find_frame_funname (frame, &func_lang, NULL);
12035   if (func_name == NULL)
12036     return 1;
12037
12038   for (i = 0; known_auxiliary_function_name_patterns[i] != NULL; i += 1)
12039     {
12040       re_comp (known_auxiliary_function_name_patterns[i]);
12041       if (re_exec (func_name.get ()))
12042         return 1;
12043     }
12044
12045   return 0;
12046 }
12047
12048 /* Find the first frame that contains debugging information and that is not
12049    part of the Ada run-time, starting from FI and moving upward.  */
12050
12051 void
12052 ada_find_printable_frame (struct frame_info *fi)
12053 {
12054   for (; fi != NULL; fi = get_prev_frame (fi))
12055     {
12056       if (!is_known_support_routine (fi))
12057         {
12058           select_frame (fi);
12059           break;
12060         }
12061     }
12062
12063 }
12064
12065 /* Assuming that the inferior just triggered an unhandled exception
12066    catchpoint, return the address in inferior memory where the name
12067    of the exception is stored.
12068    
12069    Return zero if the address could not be computed.  */
12070
12071 static CORE_ADDR
12072 ada_unhandled_exception_name_addr (void)
12073 {
12074   return parse_and_eval_address ("e.full_name");
12075 }
12076
12077 /* Same as ada_unhandled_exception_name_addr, except that this function
12078    should be used when the inferior uses an older version of the runtime,
12079    where the exception name needs to be extracted from a specific frame
12080    several frames up in the callstack.  */
12081
12082 static CORE_ADDR
12083 ada_unhandled_exception_name_addr_from_raise (void)
12084 {
12085   int frame_level;
12086   struct frame_info *fi;
12087   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12088
12089   /* To determine the name of this exception, we need to select
12090      the frame corresponding to RAISE_SYM_NAME.  This frame is
12091      at least 3 levels up, so we simply skip the first 3 frames
12092      without checking the name of their associated function.  */
12093   fi = get_current_frame ();
12094   for (frame_level = 0; frame_level < 3; frame_level += 1)
12095     if (fi != NULL)
12096       fi = get_prev_frame (fi); 
12097
12098   while (fi != NULL)
12099     {
12100       enum language func_lang;
12101
12102       gdb::unique_xmalloc_ptr<char> func_name
12103         = find_frame_funname (fi, &func_lang, NULL);
12104       if (func_name != NULL)
12105         {
12106           if (strcmp (func_name.get (),
12107                       data->exception_info->catch_exception_sym) == 0)
12108             break; /* We found the frame we were looking for...  */
12109         }
12110       fi = get_prev_frame (fi);
12111     }
12112
12113   if (fi == NULL)
12114     return 0;
12115
12116   select_frame (fi);
12117   return parse_and_eval_address ("id.full_name");
12118 }
12119
12120 /* Assuming the inferior just triggered an Ada exception catchpoint
12121    (of any type), return the address in inferior memory where the name
12122    of the exception is stored, if applicable.
12123
12124    Assumes the selected frame is the current frame.
12125
12126    Return zero if the address could not be computed, or if not relevant.  */
12127
12128 static CORE_ADDR
12129 ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
12130                            struct breakpoint *b)
12131 {
12132   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12133
12134   switch (ex)
12135     {
12136       case ada_catch_exception:
12137         return (parse_and_eval_address ("e.full_name"));
12138         break;
12139
12140       case ada_catch_exception_unhandled:
12141         return data->exception_info->unhandled_exception_name_addr ();
12142         break;
12143
12144       case ada_catch_handlers:
12145         return 0;  /* The runtimes does not provide access to the exception
12146                       name.  */
12147         break;
12148
12149       case ada_catch_assert:
12150         return 0;  /* Exception name is not relevant in this case.  */
12151         break;
12152
12153       default:
12154         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12155         break;
12156     }
12157
12158   return 0; /* Should never be reached.  */
12159 }
12160
12161 /* Assuming the inferior is stopped at an exception catchpoint,
12162    return the message which was associated to the exception, if
12163    available.  Return NULL if the message could not be retrieved.
12164
12165    Note: The exception message can be associated to an exception
12166    either through the use of the Raise_Exception function, or
12167    more simply (Ada 2005 and later), via:
12168
12169        raise Exception_Name with "exception message";
12170
12171    */
12172
12173 static gdb::unique_xmalloc_ptr<char>
12174 ada_exception_message_1 (void)
12175 {
12176   struct value *e_msg_val;
12177   int e_msg_len;
12178
12179   /* For runtimes that support this feature, the exception message
12180      is passed as an unbounded string argument called "message".  */
12181   e_msg_val = parse_and_eval ("message");
12182   if (e_msg_val == NULL)
12183     return NULL; /* Exception message not supported.  */
12184
12185   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
12186   gdb_assert (e_msg_val != NULL);
12187   e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
12188
12189   /* If the message string is empty, then treat it as if there was
12190      no exception message.  */
12191   if (e_msg_len <= 0)
12192     return NULL;
12193
12194   gdb::unique_xmalloc_ptr<char> e_msg ((char *) xmalloc (e_msg_len + 1));
12195   read_memory_string (value_address (e_msg_val), e_msg.get (), e_msg_len + 1);
12196   e_msg.get ()[e_msg_len] = '\0';
12197
12198   return e_msg;
12199 }
12200
12201 /* Same as ada_exception_message_1, except that all exceptions are
12202    contained here (returning NULL instead).  */
12203
12204 static gdb::unique_xmalloc_ptr<char>
12205 ada_exception_message (void)
12206 {
12207   gdb::unique_xmalloc_ptr<char> e_msg;
12208
12209   try
12210     {
12211       e_msg = ada_exception_message_1 ();
12212     }
12213   catch (const gdb_exception_error &e)
12214     {
12215       e_msg.reset (nullptr);
12216     }
12217
12218   return e_msg;
12219 }
12220
12221 /* Same as ada_exception_name_addr_1, except that it intercepts and contains
12222    any error that ada_exception_name_addr_1 might cause to be thrown.
12223    When an error is intercepted, a warning with the error message is printed,
12224    and zero is returned.  */
12225
12226 static CORE_ADDR
12227 ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
12228                          struct breakpoint *b)
12229 {
12230   CORE_ADDR result = 0;
12231
12232   try
12233     {
12234       result = ada_exception_name_addr_1 (ex, b);
12235     }
12236
12237   catch (const gdb_exception_error &e)
12238     {
12239       warning (_("failed to get exception name: %s"), e.what ());
12240       return 0;
12241     }
12242
12243   return result;
12244 }
12245
12246 static std::string ada_exception_catchpoint_cond_string
12247   (const char *excep_string,
12248    enum ada_exception_catchpoint_kind ex);
12249
12250 /* Ada catchpoints.
12251
12252    In the case of catchpoints on Ada exceptions, the catchpoint will
12253    stop the target on every exception the program throws.  When a user
12254    specifies the name of a specific exception, we translate this
12255    request into a condition expression (in text form), and then parse
12256    it into an expression stored in each of the catchpoint's locations.
12257    We then use this condition to check whether the exception that was
12258    raised is the one the user is interested in.  If not, then the
12259    target is resumed again.  We store the name of the requested
12260    exception, in order to be able to re-set the condition expression
12261    when symbols change.  */
12262
12263 /* An instance of this type is used to represent an Ada catchpoint
12264    breakpoint location.  */
12265
12266 class ada_catchpoint_location : public bp_location
12267 {
12268 public:
12269   ada_catchpoint_location (breakpoint *owner)
12270     : bp_location (owner)
12271   {}
12272
12273   /* The condition that checks whether the exception that was raised
12274      is the specific exception the user specified on catchpoint
12275      creation.  */
12276   expression_up excep_cond_expr;
12277 };
12278
12279 /* An instance of this type is used to represent an Ada catchpoint.  */
12280
12281 struct ada_catchpoint : public breakpoint
12282 {
12283   /* The name of the specific exception the user specified.  */
12284   std::string excep_string;
12285 };
12286
12287 /* Parse the exception condition string in the context of each of the
12288    catchpoint's locations, and store them for later evaluation.  */
12289
12290 static void
12291 create_excep_cond_exprs (struct ada_catchpoint *c,
12292                          enum ada_exception_catchpoint_kind ex)
12293 {
12294   /* Nothing to do if there's no specific exception to catch.  */
12295   if (c->excep_string.empty ())
12296     return;
12297
12298   /* Same if there are no locations... */
12299   if (c->loc == NULL)
12300     return;
12301
12302   /* We have to compute the expression once for each program space,
12303      because the expression may hold the addresses of multiple symbols
12304      in some cases.  */
12305   std::multimap<program_space *, struct bp_location *> loc_map;
12306   for (bp_location *bl = c->loc; bl != NULL; bl = bl->next)
12307     loc_map.emplace (bl->pspace, bl);
12308
12309   scoped_restore_current_program_space save_pspace;
12310
12311   std::string cond_string;
12312   program_space *last_ps = nullptr;
12313   for (auto iter : loc_map)
12314     {
12315       struct ada_catchpoint_location *ada_loc
12316         = (struct ada_catchpoint_location *) iter.second;
12317
12318       if (ada_loc->pspace != last_ps)
12319         {
12320           last_ps = ada_loc->pspace;
12321           set_current_program_space (last_ps);
12322
12323           /* Compute the condition expression in text form, from the
12324              specific expection we want to catch.  */
12325           cond_string
12326             = ada_exception_catchpoint_cond_string (c->excep_string.c_str (),
12327                                                     ex);
12328         }
12329
12330       expression_up exp;
12331
12332       if (!ada_loc->shlib_disabled)
12333         {
12334           const char *s;
12335
12336           s = cond_string.c_str ();
12337           try
12338             {
12339               exp = parse_exp_1 (&s, ada_loc->address,
12340                                  block_for_pc (ada_loc->address),
12341                                  0);
12342             }
12343           catch (const gdb_exception_error &e)
12344             {
12345               warning (_("failed to reevaluate internal exception condition "
12346                          "for catchpoint %d: %s"),
12347                        c->number, e.what ());
12348             }
12349         }
12350
12351       ada_loc->excep_cond_expr = std::move (exp);
12352     }
12353 }
12354
12355 /* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
12356    structure for all exception catchpoint kinds.  */
12357
12358 static struct bp_location *
12359 allocate_location_exception (enum ada_exception_catchpoint_kind ex,
12360                              struct breakpoint *self)
12361 {
12362   return new ada_catchpoint_location (self);
12363 }
12364
12365 /* Implement the RE_SET method in the breakpoint_ops structure for all
12366    exception catchpoint kinds.  */
12367
12368 static void
12369 re_set_exception (enum ada_exception_catchpoint_kind ex, struct breakpoint *b)
12370 {
12371   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12372
12373   /* Call the base class's method.  This updates the catchpoint's
12374      locations.  */
12375   bkpt_breakpoint_ops.re_set (b);
12376
12377   /* Reparse the exception conditional expressions.  One for each
12378      location.  */
12379   create_excep_cond_exprs (c, ex);
12380 }
12381
12382 /* Returns true if we should stop for this breakpoint hit.  If the
12383    user specified a specific exception, we only want to cause a stop
12384    if the program thrown that exception.  */
12385
12386 static int
12387 should_stop_exception (const struct bp_location *bl)
12388 {
12389   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
12390   const struct ada_catchpoint_location *ada_loc
12391     = (const struct ada_catchpoint_location *) bl;
12392   int stop;
12393
12394   /* With no specific exception, should always stop.  */
12395   if (c->excep_string.empty ())
12396     return 1;
12397
12398   if (ada_loc->excep_cond_expr == NULL)
12399     {
12400       /* We will have a NULL expression if back when we were creating
12401          the expressions, this location's had failed to parse.  */
12402       return 1;
12403     }
12404
12405   stop = 1;
12406   try
12407     {
12408       struct value *mark;
12409
12410       mark = value_mark ();
12411       stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
12412       value_free_to_mark (mark);
12413     }
12414   catch (const gdb_exception &ex)
12415     {
12416       exception_fprintf (gdb_stderr, ex,
12417                          _("Error in testing exception condition:\n"));
12418     }
12419
12420   return stop;
12421 }
12422
12423 /* Implement the CHECK_STATUS method in the breakpoint_ops structure
12424    for all exception catchpoint kinds.  */
12425
12426 static void
12427 check_status_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12428 {
12429   bs->stop = should_stop_exception (bs->bp_location_at);
12430 }
12431
12432 /* Implement the PRINT_IT method in the breakpoint_ops structure
12433    for all exception catchpoint kinds.  */
12434
12435 static enum print_stop_action
12436 print_it_exception (enum ada_exception_catchpoint_kind ex, bpstat bs)
12437 {
12438   struct ui_out *uiout = current_uiout;
12439   struct breakpoint *b = bs->breakpoint_at;
12440
12441   annotate_catchpoint (b->number);
12442
12443   if (uiout->is_mi_like_p ())
12444     {
12445       uiout->field_string ("reason",
12446                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12447       uiout->field_string ("disp", bpdisp_text (b->disposition));
12448     }
12449
12450   uiout->text (b->disposition == disp_del
12451                ? "\nTemporary catchpoint " : "\nCatchpoint ");
12452   uiout->field_int ("bkptno", b->number);
12453   uiout->text (", ");
12454
12455   /* ada_exception_name_addr relies on the selected frame being the
12456      current frame.  Need to do this here because this function may be
12457      called more than once when printing a stop, and below, we'll
12458      select the first frame past the Ada run-time (see
12459      ada_find_printable_frame).  */
12460   select_frame (get_current_frame ());
12461
12462   switch (ex)
12463     {
12464       case ada_catch_exception:
12465       case ada_catch_exception_unhandled:
12466       case ada_catch_handlers:
12467         {
12468           const CORE_ADDR addr = ada_exception_name_addr (ex, b);
12469           char exception_name[256];
12470
12471           if (addr != 0)
12472             {
12473               read_memory (addr, (gdb_byte *) exception_name,
12474                            sizeof (exception_name) - 1);
12475               exception_name [sizeof (exception_name) - 1] = '\0';
12476             }
12477           else
12478             {
12479               /* For some reason, we were unable to read the exception
12480                  name.  This could happen if the Runtime was compiled
12481                  without debugging info, for instance.  In that case,
12482                  just replace the exception name by the generic string
12483                  "exception" - it will read as "an exception" in the
12484                  notification we are about to print.  */
12485               memcpy (exception_name, "exception", sizeof ("exception"));
12486             }
12487           /* In the case of unhandled exception breakpoints, we print
12488              the exception name as "unhandled EXCEPTION_NAME", to make
12489              it clearer to the user which kind of catchpoint just got
12490              hit.  We used ui_out_text to make sure that this extra
12491              info does not pollute the exception name in the MI case.  */
12492           if (ex == ada_catch_exception_unhandled)
12493             uiout->text ("unhandled ");
12494           uiout->field_string ("exception-name", exception_name);
12495         }
12496         break;
12497       case ada_catch_assert:
12498         /* In this case, the name of the exception is not really
12499            important.  Just print "failed assertion" to make it clearer
12500            that his program just hit an assertion-failure catchpoint.
12501            We used ui_out_text because this info does not belong in
12502            the MI output.  */
12503         uiout->text ("failed assertion");
12504         break;
12505     }
12506
12507   gdb::unique_xmalloc_ptr<char> exception_message = ada_exception_message ();
12508   if (exception_message != NULL)
12509     {
12510       uiout->text (" (");
12511       uiout->field_string ("exception-message", exception_message.get ());
12512       uiout->text (")");
12513     }
12514
12515   uiout->text (" at ");
12516   ada_find_printable_frame (get_current_frame ());
12517
12518   return PRINT_SRC_AND_LOC;
12519 }
12520
12521 /* Implement the PRINT_ONE method in the breakpoint_ops structure
12522    for all exception catchpoint kinds.  */
12523
12524 static void
12525 print_one_exception (enum ada_exception_catchpoint_kind ex,
12526                      struct breakpoint *b, struct bp_location **last_loc)
12527
12528   struct ui_out *uiout = current_uiout;
12529   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12530   struct value_print_options opts;
12531
12532   get_user_print_options (&opts);
12533   if (opts.addressprint)
12534     {
12535       annotate_field (4);
12536       uiout->field_core_addr ("addr", b->loc->gdbarch, b->loc->address);
12537     }
12538
12539   annotate_field (5);
12540   *last_loc = b->loc;
12541   switch (ex)
12542     {
12543       case ada_catch_exception:
12544         if (!c->excep_string.empty ())
12545           {
12546             std::string msg = string_printf (_("`%s' Ada exception"),
12547                                              c->excep_string.c_str ());
12548
12549             uiout->field_string ("what", msg);
12550           }
12551         else
12552           uiout->field_string ("what", "all Ada exceptions");
12553         
12554         break;
12555
12556       case ada_catch_exception_unhandled:
12557         uiout->field_string ("what", "unhandled Ada exceptions");
12558         break;
12559       
12560       case ada_catch_handlers:
12561         if (!c->excep_string.empty ())
12562           {
12563             uiout->field_fmt ("what",
12564                               _("`%s' Ada exception handlers"),
12565                               c->excep_string.c_str ());
12566           }
12567         else
12568           uiout->field_string ("what", "all Ada exceptions handlers");
12569         break;
12570
12571       case ada_catch_assert:
12572         uiout->field_string ("what", "failed Ada assertions");
12573         break;
12574
12575       default:
12576         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12577         break;
12578     }
12579 }
12580
12581 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
12582    for all exception catchpoint kinds.  */
12583
12584 static void
12585 print_mention_exception (enum ada_exception_catchpoint_kind ex,
12586                          struct breakpoint *b)
12587 {
12588   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12589   struct ui_out *uiout = current_uiout;
12590
12591   uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
12592                                                  : _("Catchpoint "));
12593   uiout->field_int ("bkptno", b->number);
12594   uiout->text (": ");
12595
12596   switch (ex)
12597     {
12598       case ada_catch_exception:
12599         if (!c->excep_string.empty ())
12600           {
12601             std::string info = string_printf (_("`%s' Ada exception"),
12602                                               c->excep_string.c_str ());
12603             uiout->text (info.c_str ());
12604           }
12605         else
12606           uiout->text (_("all Ada exceptions"));
12607         break;
12608
12609       case ada_catch_exception_unhandled:
12610         uiout->text (_("unhandled Ada exceptions"));
12611         break;
12612
12613       case ada_catch_handlers:
12614         if (!c->excep_string.empty ())
12615           {
12616             std::string info
12617               = string_printf (_("`%s' Ada exception handlers"),
12618                                c->excep_string.c_str ());
12619             uiout->text (info.c_str ());
12620           }
12621         else
12622           uiout->text (_("all Ada exceptions handlers"));
12623         break;
12624
12625       case ada_catch_assert:
12626         uiout->text (_("failed Ada assertions"));
12627         break;
12628
12629       default:
12630         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12631         break;
12632     }
12633 }
12634
12635 /* Implement the PRINT_RECREATE method in the breakpoint_ops structure
12636    for all exception catchpoint kinds.  */
12637
12638 static void
12639 print_recreate_exception (enum ada_exception_catchpoint_kind ex,
12640                           struct breakpoint *b, struct ui_file *fp)
12641 {
12642   struct ada_catchpoint *c = (struct ada_catchpoint *) b;
12643
12644   switch (ex)
12645     {
12646       case ada_catch_exception:
12647         fprintf_filtered (fp, "catch exception");
12648         if (!c->excep_string.empty ())
12649           fprintf_filtered (fp, " %s", c->excep_string.c_str ());
12650         break;
12651
12652       case ada_catch_exception_unhandled:
12653         fprintf_filtered (fp, "catch exception unhandled");
12654         break;
12655
12656       case ada_catch_handlers:
12657         fprintf_filtered (fp, "catch handlers");
12658         break;
12659
12660       case ada_catch_assert:
12661         fprintf_filtered (fp, "catch assert");
12662         break;
12663
12664       default:
12665         internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
12666     }
12667   print_recreate_thread (b, fp);
12668 }
12669
12670 /* Virtual table for "catch exception" breakpoints.  */
12671
12672 static struct bp_location *
12673 allocate_location_catch_exception (struct breakpoint *self)
12674 {
12675   return allocate_location_exception (ada_catch_exception, self);
12676 }
12677
12678 static void
12679 re_set_catch_exception (struct breakpoint *b)
12680 {
12681   re_set_exception (ada_catch_exception, b);
12682 }
12683
12684 static void
12685 check_status_catch_exception (bpstat bs)
12686 {
12687   check_status_exception (ada_catch_exception, bs);
12688 }
12689
12690 static enum print_stop_action
12691 print_it_catch_exception (bpstat bs)
12692 {
12693   return print_it_exception (ada_catch_exception, bs);
12694 }
12695
12696 static void
12697 print_one_catch_exception (struct breakpoint *b, struct bp_location **last_loc)
12698 {
12699   print_one_exception (ada_catch_exception, b, last_loc);
12700 }
12701
12702 static void
12703 print_mention_catch_exception (struct breakpoint *b)
12704 {
12705   print_mention_exception (ada_catch_exception, b);
12706 }
12707
12708 static void
12709 print_recreate_catch_exception (struct breakpoint *b, struct ui_file *fp)
12710 {
12711   print_recreate_exception (ada_catch_exception, b, fp);
12712 }
12713
12714 static struct breakpoint_ops catch_exception_breakpoint_ops;
12715
12716 /* Virtual table for "catch exception unhandled" breakpoints.  */
12717
12718 static struct bp_location *
12719 allocate_location_catch_exception_unhandled (struct breakpoint *self)
12720 {
12721   return allocate_location_exception (ada_catch_exception_unhandled, self);
12722 }
12723
12724 static void
12725 re_set_catch_exception_unhandled (struct breakpoint *b)
12726 {
12727   re_set_exception (ada_catch_exception_unhandled, b);
12728 }
12729
12730 static void
12731 check_status_catch_exception_unhandled (bpstat bs)
12732 {
12733   check_status_exception (ada_catch_exception_unhandled, bs);
12734 }
12735
12736 static enum print_stop_action
12737 print_it_catch_exception_unhandled (bpstat bs)
12738 {
12739   return print_it_exception (ada_catch_exception_unhandled, bs);
12740 }
12741
12742 static void
12743 print_one_catch_exception_unhandled (struct breakpoint *b,
12744                                      struct bp_location **last_loc)
12745 {
12746   print_one_exception (ada_catch_exception_unhandled, b, last_loc);
12747 }
12748
12749 static void
12750 print_mention_catch_exception_unhandled (struct breakpoint *b)
12751 {
12752   print_mention_exception (ada_catch_exception_unhandled, b);
12753 }
12754
12755 static void
12756 print_recreate_catch_exception_unhandled (struct breakpoint *b,
12757                                           struct ui_file *fp)
12758 {
12759   print_recreate_exception (ada_catch_exception_unhandled, b, fp);
12760 }
12761
12762 static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
12763
12764 /* Virtual table for "catch assert" breakpoints.  */
12765
12766 static struct bp_location *
12767 allocate_location_catch_assert (struct breakpoint *self)
12768 {
12769   return allocate_location_exception (ada_catch_assert, self);
12770 }
12771
12772 static void
12773 re_set_catch_assert (struct breakpoint *b)
12774 {
12775   re_set_exception (ada_catch_assert, b);
12776 }
12777
12778 static void
12779 check_status_catch_assert (bpstat bs)
12780 {
12781   check_status_exception (ada_catch_assert, bs);
12782 }
12783
12784 static enum print_stop_action
12785 print_it_catch_assert (bpstat bs)
12786 {
12787   return print_it_exception (ada_catch_assert, bs);
12788 }
12789
12790 static void
12791 print_one_catch_assert (struct breakpoint *b, struct bp_location **last_loc)
12792 {
12793   print_one_exception (ada_catch_assert, b, last_loc);
12794 }
12795
12796 static void
12797 print_mention_catch_assert (struct breakpoint *b)
12798 {
12799   print_mention_exception (ada_catch_assert, b);
12800 }
12801
12802 static void
12803 print_recreate_catch_assert (struct breakpoint *b, struct ui_file *fp)
12804 {
12805   print_recreate_exception (ada_catch_assert, b, fp);
12806 }
12807
12808 static struct breakpoint_ops catch_assert_breakpoint_ops;
12809
12810 /* Virtual table for "catch handlers" breakpoints.  */
12811
12812 static struct bp_location *
12813 allocate_location_catch_handlers (struct breakpoint *self)
12814 {
12815   return allocate_location_exception (ada_catch_handlers, self);
12816 }
12817
12818 static void
12819 re_set_catch_handlers (struct breakpoint *b)
12820 {
12821   re_set_exception (ada_catch_handlers, b);
12822 }
12823
12824 static void
12825 check_status_catch_handlers (bpstat bs)
12826 {
12827   check_status_exception (ada_catch_handlers, bs);
12828 }
12829
12830 static enum print_stop_action
12831 print_it_catch_handlers (bpstat bs)
12832 {
12833   return print_it_exception (ada_catch_handlers, bs);
12834 }
12835
12836 static void
12837 print_one_catch_handlers (struct breakpoint *b,
12838                           struct bp_location **last_loc)
12839 {
12840   print_one_exception (ada_catch_handlers, b, last_loc);
12841 }
12842
12843 static void
12844 print_mention_catch_handlers (struct breakpoint *b)
12845 {
12846   print_mention_exception (ada_catch_handlers, b);
12847 }
12848
12849 static void
12850 print_recreate_catch_handlers (struct breakpoint *b,
12851                                struct ui_file *fp)
12852 {
12853   print_recreate_exception (ada_catch_handlers, b, fp);
12854 }
12855
12856 static struct breakpoint_ops catch_handlers_breakpoint_ops;
12857
12858 /* Split the arguments specified in a "catch exception" command.  
12859    Set EX to the appropriate catchpoint type.
12860    Set EXCEP_STRING to the name of the specific exception if
12861    specified by the user.
12862    IS_CATCH_HANDLERS_CMD: True if the arguments are for a
12863    "catch handlers" command.  False otherwise.
12864    If a condition is found at the end of the arguments, the condition
12865    expression is stored in COND_STRING (memory must be deallocated
12866    after use).  Otherwise COND_STRING is set to NULL.  */
12867
12868 static void
12869 catch_ada_exception_command_split (const char *args,
12870                                    bool is_catch_handlers_cmd,
12871                                    enum ada_exception_catchpoint_kind *ex,
12872                                    std::string *excep_string,
12873                                    std::string *cond_string)
12874 {
12875   std::string exception_name;
12876
12877   exception_name = extract_arg (&args);
12878   if (exception_name == "if")
12879     {
12880       /* This is not an exception name; this is the start of a condition
12881          expression for a catchpoint on all exceptions.  So, "un-get"
12882          this token, and set exception_name to NULL.  */
12883       exception_name.clear ();
12884       args -= 2;
12885     }
12886
12887   /* Check to see if we have a condition.  */
12888
12889   args = skip_spaces (args);
12890   if (startswith (args, "if")
12891       && (isspace (args[2]) || args[2] == '\0'))
12892     {
12893       args += 2;
12894       args = skip_spaces (args);
12895
12896       if (args[0] == '\0')
12897         error (_("Condition missing after `if' keyword"));
12898       *cond_string = args;
12899
12900       args += strlen (args);
12901     }
12902
12903   /* Check that we do not have any more arguments.  Anything else
12904      is unexpected.  */
12905
12906   if (args[0] != '\0')
12907     error (_("Junk at end of expression"));
12908
12909   if (is_catch_handlers_cmd)
12910     {
12911       /* Catch handling of exceptions.  */
12912       *ex = ada_catch_handlers;
12913       *excep_string = exception_name;
12914     }
12915   else if (exception_name.empty ())
12916     {
12917       /* Catch all exceptions.  */
12918       *ex = ada_catch_exception;
12919       excep_string->clear ();
12920     }
12921   else if (exception_name == "unhandled")
12922     {
12923       /* Catch unhandled exceptions.  */
12924       *ex = ada_catch_exception_unhandled;
12925       excep_string->clear ();
12926     }
12927   else
12928     {
12929       /* Catch a specific exception.  */
12930       *ex = ada_catch_exception;
12931       *excep_string = exception_name;
12932     }
12933 }
12934
12935 /* Return the name of the symbol on which we should break in order to
12936    implement a catchpoint of the EX kind.  */
12937
12938 static const char *
12939 ada_exception_sym_name (enum ada_exception_catchpoint_kind ex)
12940 {
12941   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
12942
12943   gdb_assert (data->exception_info != NULL);
12944
12945   switch (ex)
12946     {
12947       case ada_catch_exception:
12948         return (data->exception_info->catch_exception_sym);
12949         break;
12950       case ada_catch_exception_unhandled:
12951         return (data->exception_info->catch_exception_unhandled_sym);
12952         break;
12953       case ada_catch_assert:
12954         return (data->exception_info->catch_assert_sym);
12955         break;
12956       case ada_catch_handlers:
12957         return (data->exception_info->catch_handlers_sym);
12958         break;
12959       default:
12960         internal_error (__FILE__, __LINE__,
12961                         _("unexpected catchpoint kind (%d)"), ex);
12962     }
12963 }
12964
12965 /* Return the breakpoint ops "virtual table" used for catchpoints
12966    of the EX kind.  */
12967
12968 static const struct breakpoint_ops *
12969 ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
12970 {
12971   switch (ex)
12972     {
12973       case ada_catch_exception:
12974         return (&catch_exception_breakpoint_ops);
12975         break;
12976       case ada_catch_exception_unhandled:
12977         return (&catch_exception_unhandled_breakpoint_ops);
12978         break;
12979       case ada_catch_assert:
12980         return (&catch_assert_breakpoint_ops);
12981         break;
12982       case ada_catch_handlers:
12983         return (&catch_handlers_breakpoint_ops);
12984         break;
12985       default:
12986         internal_error (__FILE__, __LINE__,
12987                         _("unexpected catchpoint kind (%d)"), ex);
12988     }
12989 }
12990
12991 /* Return the condition that will be used to match the current exception
12992    being raised with the exception that the user wants to catch.  This
12993    assumes that this condition is used when the inferior just triggered
12994    an exception catchpoint.
12995    EX: the type of catchpoints used for catching Ada exceptions.  */
12996
12997 static std::string
12998 ada_exception_catchpoint_cond_string (const char *excep_string,
12999                                       enum ada_exception_catchpoint_kind ex)
13000 {
13001   int i;
13002   std::string result;
13003   const char *name;
13004
13005   if (ex == ada_catch_handlers)
13006     {
13007       /* For exception handlers catchpoints, the condition string does
13008          not use the same parameter as for the other exceptions.  */
13009       name = ("long_integer (GNAT_GCC_exception_Access"
13010               "(gcc_exception).all.occurrence.id)");
13011     }
13012   else
13013     name = "long_integer (e)";
13014
13015   /* The standard exceptions are a special case.  They are defined in
13016      runtime units that have been compiled without debugging info; if
13017      EXCEP_STRING is the not-fully-qualified name of a standard
13018      exception (e.g. "constraint_error") then, during the evaluation
13019      of the condition expression, the symbol lookup on this name would
13020      *not* return this standard exception.  The catchpoint condition
13021      may then be set only on user-defined exceptions which have the
13022      same not-fully-qualified name (e.g. my_package.constraint_error).
13023
13024      To avoid this unexcepted behavior, these standard exceptions are
13025      systematically prefixed by "standard".  This means that "catch
13026      exception constraint_error" is rewritten into "catch exception
13027      standard.constraint_error".
13028
13029      If an exception named contraint_error is defined in another package of
13030      the inferior program, then the only way to specify this exception as a
13031      breakpoint condition is to use its fully-qualified named:
13032      e.g. my_package.constraint_error.
13033
13034      Furthermore, in some situations a standard exception's symbol may
13035      be present in more than one objfile, because the compiler may
13036      choose to emit copy relocations for them.  So, we have to compare
13037      against all the possible addresses.  */
13038
13039   /* Storage for a rewritten symbol name.  */
13040   std::string std_name;
13041   for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
13042     {
13043       if (strcmp (standard_exc [i], excep_string) == 0)
13044         {
13045           std_name = std::string ("standard.") + excep_string;
13046           excep_string = std_name.c_str ();
13047           break;
13048         }
13049     }
13050
13051   excep_string = ada_encode (excep_string);
13052   std::vector<struct bound_minimal_symbol> symbols
13053     = ada_lookup_simple_minsyms (excep_string);
13054   for (const bound_minimal_symbol &msym : symbols)
13055     {
13056       if (!result.empty ())
13057         result += " or ";
13058       string_appendf (result, "%s = %s", name,
13059                       pulongest (BMSYMBOL_VALUE_ADDRESS (msym)));
13060     }
13061
13062   return result;
13063 }
13064
13065 /* Return the symtab_and_line that should be used to insert an exception
13066    catchpoint of the TYPE kind.
13067
13068    ADDR_STRING returns the name of the function where the real
13069    breakpoint that implements the catchpoints is set, depending on the
13070    type of catchpoint we need to create.  */
13071
13072 static struct symtab_and_line
13073 ada_exception_sal (enum ada_exception_catchpoint_kind ex,
13074                    std::string *addr_string, const struct breakpoint_ops **ops)
13075 {
13076   const char *sym_name;
13077   struct symbol *sym;
13078
13079   /* First, find out which exception support info to use.  */
13080   ada_exception_support_info_sniffer ();
13081
13082   /* Then lookup the function on which we will break in order to catch
13083      the Ada exceptions requested by the user.  */
13084   sym_name = ada_exception_sym_name (ex);
13085   sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
13086
13087   if (sym == NULL)
13088     error (_("Catchpoint symbol not found: %s"), sym_name);
13089
13090   if (SYMBOL_CLASS (sym) != LOC_BLOCK)
13091     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
13092
13093   /* Set ADDR_STRING.  */
13094   *addr_string = sym_name;
13095
13096   /* Set OPS.  */
13097   *ops = ada_exception_breakpoint_ops (ex);
13098
13099   return find_function_start_sal (sym, 1);
13100 }
13101
13102 /* Create an Ada exception catchpoint.
13103
13104    EX_KIND is the kind of exception catchpoint to be created.
13105
13106    If EXCEPT_STRING is empty, this catchpoint is expected to trigger
13107    for all exceptions.  Otherwise, EXCEPT_STRING indicates the name
13108    of the exception to which this catchpoint applies.
13109
13110    COND_STRING, if not empty, is the catchpoint condition.
13111
13112    TEMPFLAG, if nonzero, means that the underlying breakpoint
13113    should be temporary.
13114
13115    FROM_TTY is the usual argument passed to all commands implementations.  */
13116
13117 void
13118 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
13119                                  enum ada_exception_catchpoint_kind ex_kind,
13120                                  const std::string &excep_string,
13121                                  const std::string &cond_string,
13122                                  int tempflag,
13123                                  int disabled,
13124                                  int from_tty)
13125 {
13126   std::string addr_string;
13127   const struct breakpoint_ops *ops = NULL;
13128   struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
13129
13130   std::unique_ptr<ada_catchpoint> c (new ada_catchpoint ());
13131   init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
13132                                  ops, tempflag, disabled, from_tty);
13133   c->excep_string = excep_string;
13134   create_excep_cond_exprs (c.get (), ex_kind);
13135   if (!cond_string.empty ())
13136     set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
13137   install_breakpoint (0, std::move (c), 1);
13138 }
13139
13140 /* Implement the "catch exception" command.  */
13141
13142 static void
13143 catch_ada_exception_command (const char *arg_entry, int from_tty,
13144                              struct cmd_list_element *command)
13145 {
13146   const char *arg = arg_entry;
13147   struct gdbarch *gdbarch = get_current_arch ();
13148   int tempflag;
13149   enum ada_exception_catchpoint_kind ex_kind;
13150   std::string excep_string;
13151   std::string cond_string;
13152
13153   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13154
13155   if (!arg)
13156     arg = "";
13157   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
13158                                      &cond_string);
13159   create_ada_exception_catchpoint (gdbarch, ex_kind,
13160                                    excep_string, cond_string,
13161                                    tempflag, 1 /* enabled */,
13162                                    from_tty);
13163 }
13164
13165 /* Implement the "catch handlers" command.  */
13166
13167 static void
13168 catch_ada_handlers_command (const char *arg_entry, int from_tty,
13169                             struct cmd_list_element *command)
13170 {
13171   const char *arg = arg_entry;
13172   struct gdbarch *gdbarch = get_current_arch ();
13173   int tempflag;
13174   enum ada_exception_catchpoint_kind ex_kind;
13175   std::string excep_string;
13176   std::string cond_string;
13177
13178   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13179
13180   if (!arg)
13181     arg = "";
13182   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
13183                                      &cond_string);
13184   create_ada_exception_catchpoint (gdbarch, ex_kind,
13185                                    excep_string, cond_string,
13186                                    tempflag, 1 /* enabled */,
13187                                    from_tty);
13188 }
13189
13190 /* Completion function for the Ada "catch" commands.  */
13191
13192 static void
13193 catch_ada_completer (struct cmd_list_element *cmd, completion_tracker &tracker,
13194                      const char *text, const char *word)
13195 {
13196   std::vector<ada_exc_info> exceptions = ada_exceptions_list (NULL);
13197
13198   for (const ada_exc_info &info : exceptions)
13199     {
13200       if (startswith (info.name, word))
13201         tracker.add_completion (make_unique_xstrdup (info.name));
13202     }
13203 }
13204
13205 /* Split the arguments specified in a "catch assert" command.
13206
13207    ARGS contains the command's arguments (or the empty string if
13208    no arguments were passed).
13209
13210    If ARGS contains a condition, set COND_STRING to that condition
13211    (the memory needs to be deallocated after use).  */
13212
13213 static void
13214 catch_ada_assert_command_split (const char *args, std::string &cond_string)
13215 {
13216   args = skip_spaces (args);
13217
13218   /* Check whether a condition was provided.  */
13219   if (startswith (args, "if")
13220       && (isspace (args[2]) || args[2] == '\0'))
13221     {
13222       args += 2;
13223       args = skip_spaces (args);
13224       if (args[0] == '\0')
13225         error (_("condition missing after `if' keyword"));
13226       cond_string.assign (args);
13227     }
13228
13229   /* Otherwise, there should be no other argument at the end of
13230      the command.  */
13231   else if (args[0] != '\0')
13232     error (_("Junk at end of arguments."));
13233 }
13234
13235 /* Implement the "catch assert" command.  */
13236
13237 static void
13238 catch_assert_command (const char *arg_entry, int from_tty,
13239                       struct cmd_list_element *command)
13240 {
13241   const char *arg = arg_entry;
13242   struct gdbarch *gdbarch = get_current_arch ();
13243   int tempflag;
13244   std::string cond_string;
13245
13246   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
13247
13248   if (!arg)
13249     arg = "";
13250   catch_ada_assert_command_split (arg, cond_string);
13251   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
13252                                    "", cond_string,
13253                                    tempflag, 1 /* enabled */,
13254                                    from_tty);
13255 }
13256
13257 /* Return non-zero if the symbol SYM is an Ada exception object.  */
13258
13259 static int
13260 ada_is_exception_sym (struct symbol *sym)
13261 {
13262   const char *type_name = TYPE_NAME (SYMBOL_TYPE (sym));
13263
13264   return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
13265           && SYMBOL_CLASS (sym) != LOC_BLOCK
13266           && SYMBOL_CLASS (sym) != LOC_CONST
13267           && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
13268           && type_name != NULL && strcmp (type_name, "exception") == 0);
13269 }
13270
13271 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
13272    Ada exception object.  This matches all exceptions except the ones
13273    defined by the Ada language.  */
13274
13275 static int
13276 ada_is_non_standard_exception_sym (struct symbol *sym)
13277 {
13278   int i;
13279
13280   if (!ada_is_exception_sym (sym))
13281     return 0;
13282
13283   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13284     if (strcmp (SYMBOL_LINKAGE_NAME (sym), standard_exc[i]) == 0)
13285       return 0;  /* A standard exception.  */
13286
13287   /* Numeric_Error is also a standard exception, so exclude it.
13288      See the STANDARD_EXC description for more details as to why
13289      this exception is not listed in that array.  */
13290   if (strcmp (SYMBOL_LINKAGE_NAME (sym), "numeric_error") == 0)
13291     return 0;
13292
13293   return 1;
13294 }
13295
13296 /* A helper function for std::sort, comparing two struct ada_exc_info
13297    objects.
13298
13299    The comparison is determined first by exception name, and then
13300    by exception address.  */
13301
13302 bool
13303 ada_exc_info::operator< (const ada_exc_info &other) const
13304 {
13305   int result;
13306
13307   result = strcmp (name, other.name);
13308   if (result < 0)
13309     return true;
13310   if (result == 0 && addr < other.addr)
13311     return true;
13312   return false;
13313 }
13314
13315 bool
13316 ada_exc_info::operator== (const ada_exc_info &other) const
13317 {
13318   return addr == other.addr && strcmp (name, other.name) == 0;
13319 }
13320
13321 /* Sort EXCEPTIONS using compare_ada_exception_info as the comparison
13322    routine, but keeping the first SKIP elements untouched.
13323
13324    All duplicates are also removed.  */
13325
13326 static void
13327 sort_remove_dups_ada_exceptions_list (std::vector<ada_exc_info> *exceptions,
13328                                       int skip)
13329 {
13330   std::sort (exceptions->begin () + skip, exceptions->end ());
13331   exceptions->erase (std::unique (exceptions->begin () + skip, exceptions->end ()),
13332                      exceptions->end ());
13333 }
13334
13335 /* Add all exceptions defined by the Ada standard whose name match
13336    a regular expression.
13337
13338    If PREG is not NULL, then this regexp_t object is used to
13339    perform the symbol name matching.  Otherwise, no name-based
13340    filtering is performed.
13341
13342    EXCEPTIONS is a vector of exceptions to which matching exceptions
13343    gets pushed.  */
13344
13345 static void
13346 ada_add_standard_exceptions (compiled_regex *preg,
13347                              std::vector<ada_exc_info> *exceptions)
13348 {
13349   int i;
13350
13351   for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
13352     {
13353       if (preg == NULL
13354           || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
13355         {
13356           struct bound_minimal_symbol msymbol
13357             = ada_lookup_simple_minsym (standard_exc[i]);
13358
13359           if (msymbol.minsym != NULL)
13360             {
13361               struct ada_exc_info info
13362                 = {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
13363
13364               exceptions->push_back (info);
13365             }
13366         }
13367     }
13368 }
13369
13370 /* Add all Ada exceptions defined locally and accessible from the given
13371    FRAME.
13372
13373    If PREG is not NULL, then this regexp_t object is used to
13374    perform the symbol name matching.  Otherwise, no name-based
13375    filtering is performed.
13376
13377    EXCEPTIONS is a vector of exceptions to which matching exceptions
13378    gets pushed.  */
13379
13380 static void
13381 ada_add_exceptions_from_frame (compiled_regex *preg,
13382                                struct frame_info *frame,
13383                                std::vector<ada_exc_info> *exceptions)
13384 {
13385   const struct block *block = get_frame_block (frame, 0);
13386
13387   while (block != 0)
13388     {
13389       struct block_iterator iter;
13390       struct symbol *sym;
13391
13392       ALL_BLOCK_SYMBOLS (block, iter, sym)
13393         {
13394           switch (SYMBOL_CLASS (sym))
13395             {
13396             case LOC_TYPEDEF:
13397             case LOC_BLOCK:
13398             case LOC_CONST:
13399               break;
13400             default:
13401               if (ada_is_exception_sym (sym))
13402                 {
13403                   struct ada_exc_info info = {SYMBOL_PRINT_NAME (sym),
13404                                               SYMBOL_VALUE_ADDRESS (sym)};
13405
13406                   exceptions->push_back (info);
13407                 }
13408             }
13409         }
13410       if (BLOCK_FUNCTION (block) != NULL)
13411         break;
13412       block = BLOCK_SUPERBLOCK (block);
13413     }
13414 }
13415
13416 /* Return true if NAME matches PREG or if PREG is NULL.  */
13417
13418 static bool
13419 name_matches_regex (const char *name, compiled_regex *preg)
13420 {
13421   return (preg == NULL
13422           || preg->exec (ada_decode (name), 0, NULL, 0) == 0);
13423 }
13424
13425 /* Add all exceptions defined globally whose name name match
13426    a regular expression, excluding standard exceptions.
13427
13428    The reason we exclude standard exceptions is that they need
13429    to be handled separately: Standard exceptions are defined inside
13430    a runtime unit which is normally not compiled with debugging info,
13431    and thus usually do not show up in our symbol search.  However,
13432    if the unit was in fact built with debugging info, we need to
13433    exclude them because they would duplicate the entry we found
13434    during the special loop that specifically searches for those
13435    standard exceptions.
13436
13437    If PREG is not NULL, then this regexp_t object is used to
13438    perform the symbol name matching.  Otherwise, no name-based
13439    filtering is performed.
13440
13441    EXCEPTIONS is a vector of exceptions to which matching exceptions
13442    gets pushed.  */
13443
13444 static void
13445 ada_add_global_exceptions (compiled_regex *preg,
13446                            std::vector<ada_exc_info> *exceptions)
13447 {
13448   /* In Ada, the symbol "search name" is a linkage name, whereas the
13449      regular expression used to do the matching refers to the natural
13450      name.  So match against the decoded name.  */
13451   expand_symtabs_matching (NULL,
13452                            lookup_name_info::match_any (),
13453                            [&] (const char *search_name)
13454                            {
13455                              const char *decoded = ada_decode (search_name);
13456                              return name_matches_regex (decoded, preg);
13457                            },
13458                            NULL,
13459                            VARIABLES_DOMAIN);
13460
13461   for (objfile *objfile : current_program_space->objfiles ())
13462     {
13463       for (compunit_symtab *s : objfile->compunits ())
13464         {
13465           const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
13466           int i;
13467
13468           for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
13469             {
13470               const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
13471               struct block_iterator iter;
13472               struct symbol *sym;
13473
13474               ALL_BLOCK_SYMBOLS (b, iter, sym)
13475                 if (ada_is_non_standard_exception_sym (sym)
13476                     && name_matches_regex (SYMBOL_NATURAL_NAME (sym), preg))
13477                   {
13478                     struct ada_exc_info info
13479                       = {SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE_ADDRESS (sym)};
13480
13481                     exceptions->push_back (info);
13482                   }
13483             }
13484         }
13485     }
13486 }
13487
13488 /* Implements ada_exceptions_list with the regular expression passed
13489    as a regex_t, rather than a string.
13490
13491    If not NULL, PREG is used to filter out exceptions whose names
13492    do not match.  Otherwise, all exceptions are listed.  */
13493
13494 static std::vector<ada_exc_info>
13495 ada_exceptions_list_1 (compiled_regex *preg)
13496 {
13497   std::vector<ada_exc_info> result;
13498   int prev_len;
13499
13500   /* First, list the known standard exceptions.  These exceptions
13501      need to be handled separately, as they are usually defined in
13502      runtime units that have been compiled without debugging info.  */
13503
13504   ada_add_standard_exceptions (preg, &result);
13505
13506   /* Next, find all exceptions whose scope is local and accessible
13507      from the currently selected frame.  */
13508
13509   if (has_stack_frames ())
13510     {
13511       prev_len = result.size ();
13512       ada_add_exceptions_from_frame (preg, get_selected_frame (NULL),
13513                                      &result);
13514       if (result.size () > prev_len)
13515         sort_remove_dups_ada_exceptions_list (&result, prev_len);
13516     }
13517
13518   /* Add all exceptions whose scope is global.  */
13519
13520   prev_len = result.size ();
13521   ada_add_global_exceptions (preg, &result);
13522   if (result.size () > prev_len)
13523     sort_remove_dups_ada_exceptions_list (&result, prev_len);
13524
13525   return result;
13526 }
13527
13528 /* Return a vector of ada_exc_info.
13529
13530    If REGEXP is NULL, all exceptions are included in the result.
13531    Otherwise, it should contain a valid regular expression,
13532    and only the exceptions whose names match that regular expression
13533    are included in the result.
13534
13535    The exceptions are sorted in the following order:
13536      - Standard exceptions (defined by the Ada language), in
13537        alphabetical order;
13538      - Exceptions only visible from the current frame, in
13539        alphabetical order;
13540      - Exceptions whose scope is global, in alphabetical order.  */
13541
13542 std::vector<ada_exc_info>
13543 ada_exceptions_list (const char *regexp)
13544 {
13545   if (regexp == NULL)
13546     return ada_exceptions_list_1 (NULL);
13547
13548   compiled_regex reg (regexp, REG_NOSUB, _("invalid regular expression"));
13549   return ada_exceptions_list_1 (&reg);
13550 }
13551
13552 /* Implement the "info exceptions" command.  */
13553
13554 static void
13555 info_exceptions_command (const char *regexp, int from_tty)
13556 {
13557   struct gdbarch *gdbarch = get_current_arch ();
13558
13559   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
13560
13561   if (regexp != NULL)
13562     printf_filtered
13563       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
13564   else
13565     printf_filtered (_("All defined Ada exceptions:\n"));
13566
13567   for (const ada_exc_info &info : exceptions)
13568     printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
13569 }
13570
13571                                 /* Operators */
13572 /* Information about operators given special treatment in functions
13573    below.  */
13574 /* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
13575
13576 #define ADA_OPERATORS \
13577     OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
13578     OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
13579     OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
13580     OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
13581     OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
13582     OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
13583     OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
13584     OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
13585     OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
13586     OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
13587     OP_DEFN (OP_ATR_POS, 1, 2, 0) \
13588     OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
13589     OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
13590     OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
13591     OP_DEFN (UNOP_QUAL, 3, 1, 0) \
13592     OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
13593     OP_DEFN (OP_OTHERS, 1, 1, 0) \
13594     OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
13595     OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
13596
13597 static void
13598 ada_operator_length (const struct expression *exp, int pc, int *oplenp,
13599                      int *argsp)
13600 {
13601   switch (exp->elts[pc - 1].opcode)
13602     {
13603     default:
13604       operator_length_standard (exp, pc, oplenp, argsp);
13605       break;
13606
13607 #define OP_DEFN(op, len, args, binop) \
13608     case op: *oplenp = len; *argsp = args; break;
13609       ADA_OPERATORS;
13610 #undef OP_DEFN
13611
13612     case OP_AGGREGATE:
13613       *oplenp = 3;
13614       *argsp = longest_to_int (exp->elts[pc - 2].longconst);
13615       break;
13616
13617     case OP_CHOICES:
13618       *oplenp = 3;
13619       *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
13620       break;
13621     }
13622 }
13623
13624 /* Implementation of the exp_descriptor method operator_check.  */
13625
13626 static int
13627 ada_operator_check (struct expression *exp, int pos,
13628                     int (*objfile_func) (struct objfile *objfile, void *data),
13629                     void *data)
13630 {
13631   const union exp_element *const elts = exp->elts;
13632   struct type *type = NULL;
13633
13634   switch (elts[pos].opcode)
13635     {
13636       case UNOP_IN_RANGE:
13637       case UNOP_QUAL:
13638         type = elts[pos + 1].type;
13639         break;
13640
13641       default:
13642         return operator_check_standard (exp, pos, objfile_func, data);
13643     }
13644
13645   /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
13646
13647   if (type && TYPE_OBJFILE (type)
13648       && (*objfile_func) (TYPE_OBJFILE (type), data))
13649     return 1;
13650
13651   return 0;
13652 }
13653
13654 static const char *
13655 ada_op_name (enum exp_opcode opcode)
13656 {
13657   switch (opcode)
13658     {
13659     default:
13660       return op_name_standard (opcode);
13661
13662 #define OP_DEFN(op, len, args, binop) case op: return #op;
13663       ADA_OPERATORS;
13664 #undef OP_DEFN
13665
13666     case OP_AGGREGATE:
13667       return "OP_AGGREGATE";
13668     case OP_CHOICES:
13669       return "OP_CHOICES";
13670     case OP_NAME:
13671       return "OP_NAME";
13672     }
13673 }
13674
13675 /* As for operator_length, but assumes PC is pointing at the first
13676    element of the operator, and gives meaningful results only for the 
13677    Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
13678
13679 static void
13680 ada_forward_operator_length (struct expression *exp, int pc,
13681                              int *oplenp, int *argsp)
13682 {
13683   switch (exp->elts[pc].opcode)
13684     {
13685     default:
13686       *oplenp = *argsp = 0;
13687       break;
13688
13689 #define OP_DEFN(op, len, args, binop) \
13690     case op: *oplenp = len; *argsp = args; break;
13691       ADA_OPERATORS;
13692 #undef OP_DEFN
13693
13694     case OP_AGGREGATE:
13695       *oplenp = 3;
13696       *argsp = longest_to_int (exp->elts[pc + 1].longconst);
13697       break;
13698
13699     case OP_CHOICES:
13700       *oplenp = 3;
13701       *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
13702       break;
13703
13704     case OP_STRING:
13705     case OP_NAME:
13706       {
13707         int len = longest_to_int (exp->elts[pc + 1].longconst);
13708
13709         *oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
13710         *argsp = 0;
13711         break;
13712       }
13713     }
13714 }
13715
13716 static int
13717 ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
13718 {
13719   enum exp_opcode op = exp->elts[elt].opcode;
13720   int oplen, nargs;
13721   int pc = elt;
13722   int i;
13723
13724   ada_forward_operator_length (exp, elt, &oplen, &nargs);
13725
13726   switch (op)
13727     {
13728       /* Ada attributes ('Foo).  */
13729     case OP_ATR_FIRST:
13730     case OP_ATR_LAST:
13731     case OP_ATR_LENGTH:
13732     case OP_ATR_IMAGE:
13733     case OP_ATR_MAX:
13734     case OP_ATR_MIN:
13735     case OP_ATR_MODULUS:
13736     case OP_ATR_POS:
13737     case OP_ATR_SIZE:
13738     case OP_ATR_TAG:
13739     case OP_ATR_VAL:
13740       break;
13741
13742     case UNOP_IN_RANGE:
13743     case UNOP_QUAL:
13744       /* XXX: gdb_sprint_host_address, type_sprint */
13745       fprintf_filtered (stream, _("Type @"));
13746       gdb_print_host_address (exp->elts[pc + 1].type, stream);
13747       fprintf_filtered (stream, " (");
13748       type_print (exp->elts[pc + 1].type, NULL, stream, 0);
13749       fprintf_filtered (stream, ")");
13750       break;
13751     case BINOP_IN_BOUNDS:
13752       fprintf_filtered (stream, " (%d)",
13753                         longest_to_int (exp->elts[pc + 2].longconst));
13754       break;
13755     case TERNOP_IN_RANGE:
13756       break;
13757
13758     case OP_AGGREGATE:
13759     case OP_OTHERS:
13760     case OP_DISCRETE_RANGE:
13761     case OP_POSITIONAL:
13762     case OP_CHOICES:
13763       break;
13764
13765     case OP_NAME:
13766     case OP_STRING:
13767       {
13768         char *name = &exp->elts[elt + 2].string;
13769         int len = longest_to_int (exp->elts[elt + 1].longconst);
13770
13771         fprintf_filtered (stream, "Text: `%.*s'", len, name);
13772         break;
13773       }
13774
13775     default:
13776       return dump_subexp_body_standard (exp, stream, elt);
13777     }
13778
13779   elt += oplen;
13780   for (i = 0; i < nargs; i += 1)
13781     elt = dump_subexp (exp, stream, elt);
13782
13783   return elt;
13784 }
13785
13786 /* The Ada extension of print_subexp (q.v.).  */
13787
13788 static void
13789 ada_print_subexp (struct expression *exp, int *pos,
13790                   struct ui_file *stream, enum precedence prec)
13791 {
13792   int oplen, nargs, i;
13793   int pc = *pos;
13794   enum exp_opcode op = exp->elts[pc].opcode;
13795
13796   ada_forward_operator_length (exp, pc, &oplen, &nargs);
13797
13798   *pos += oplen;
13799   switch (op)
13800     {
13801     default:
13802       *pos -= oplen;
13803       print_subexp_standard (exp, pos, stream, prec);
13804       return;
13805
13806     case OP_VAR_VALUE:
13807       fputs_filtered (SYMBOL_NATURAL_NAME (exp->elts[pc + 2].symbol), stream);
13808       return;
13809
13810     case BINOP_IN_BOUNDS:
13811       /* XXX: sprint_subexp */
13812       print_subexp (exp, pos, stream, PREC_SUFFIX);
13813       fputs_filtered (" in ", stream);
13814       print_subexp (exp, pos, stream, PREC_SUFFIX);
13815       fputs_filtered ("'range", stream);
13816       if (exp->elts[pc + 1].longconst > 1)
13817         fprintf_filtered (stream, "(%ld)",
13818                           (long) exp->elts[pc + 1].longconst);
13819       return;
13820
13821     case TERNOP_IN_RANGE:
13822       if (prec >= PREC_EQUAL)
13823         fputs_filtered ("(", stream);
13824       /* XXX: sprint_subexp */
13825       print_subexp (exp, pos, stream, PREC_SUFFIX);
13826       fputs_filtered (" in ", stream);
13827       print_subexp (exp, pos, stream, PREC_EQUAL);
13828       fputs_filtered (" .. ", stream);
13829       print_subexp (exp, pos, stream, PREC_EQUAL);
13830       if (prec >= PREC_EQUAL)
13831         fputs_filtered (")", stream);
13832       return;
13833
13834     case OP_ATR_FIRST:
13835     case OP_ATR_LAST:
13836     case OP_ATR_LENGTH:
13837     case OP_ATR_IMAGE:
13838     case OP_ATR_MAX:
13839     case OP_ATR_MIN:
13840     case OP_ATR_MODULUS:
13841     case OP_ATR_POS:
13842     case OP_ATR_SIZE:
13843     case OP_ATR_TAG:
13844     case OP_ATR_VAL:
13845       if (exp->elts[*pos].opcode == OP_TYPE)
13846         {
13847           if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
13848             LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
13849                            &type_print_raw_options);
13850           *pos += 3;
13851         }
13852       else
13853         print_subexp (exp, pos, stream, PREC_SUFFIX);
13854       fprintf_filtered (stream, "'%s", ada_attribute_name (op));
13855       if (nargs > 1)
13856         {
13857           int tem;
13858
13859           for (tem = 1; tem < nargs; tem += 1)
13860             {
13861               fputs_filtered ((tem == 1) ? " (" : ", ", stream);
13862               print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
13863             }
13864           fputs_filtered (")", stream);
13865         }
13866       return;
13867
13868     case UNOP_QUAL:
13869       type_print (exp->elts[pc + 1].type, "", stream, 0);
13870       fputs_filtered ("'(", stream);
13871       print_subexp (exp, pos, stream, PREC_PREFIX);
13872       fputs_filtered (")", stream);
13873       return;
13874
13875     case UNOP_IN_RANGE:
13876       /* XXX: sprint_subexp */
13877       print_subexp (exp, pos, stream, PREC_SUFFIX);
13878       fputs_filtered (" in ", stream);
13879       LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
13880                      &type_print_raw_options);
13881       return;
13882
13883     case OP_DISCRETE_RANGE:
13884       print_subexp (exp, pos, stream, PREC_SUFFIX);
13885       fputs_filtered ("..", stream);
13886       print_subexp (exp, pos, stream, PREC_SUFFIX);
13887       return;
13888
13889     case OP_OTHERS:
13890       fputs_filtered ("others => ", stream);
13891       print_subexp (exp, pos, stream, PREC_SUFFIX);
13892       return;
13893
13894     case OP_CHOICES:
13895       for (i = 0; i < nargs-1; i += 1)
13896         {
13897           if (i > 0)
13898             fputs_filtered ("|", stream);
13899           print_subexp (exp, pos, stream, PREC_SUFFIX);
13900         }
13901       fputs_filtered (" => ", stream);
13902       print_subexp (exp, pos, stream, PREC_SUFFIX);
13903       return;
13904       
13905     case OP_POSITIONAL:
13906       print_subexp (exp, pos, stream, PREC_SUFFIX);
13907       return;
13908
13909     case OP_AGGREGATE:
13910       fputs_filtered ("(", stream);
13911       for (i = 0; i < nargs; i += 1)
13912         {
13913           if (i > 0)
13914             fputs_filtered (", ", stream);
13915           print_subexp (exp, pos, stream, PREC_SUFFIX);
13916         }
13917       fputs_filtered (")", stream);
13918       return;
13919     }
13920 }
13921
13922 /* Table mapping opcodes into strings for printing operators
13923    and precedences of the operators.  */
13924
13925 static const struct op_print ada_op_print_tab[] = {
13926   {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
13927   {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
13928   {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
13929   {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
13930   {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
13931   {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
13932   {"=", BINOP_EQUAL, PREC_EQUAL, 0},
13933   {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
13934   {"<=", BINOP_LEQ, PREC_ORDER, 0},
13935   {">=", BINOP_GEQ, PREC_ORDER, 0},
13936   {">", BINOP_GTR, PREC_ORDER, 0},
13937   {"<", BINOP_LESS, PREC_ORDER, 0},
13938   {">>", BINOP_RSH, PREC_SHIFT, 0},
13939   {"<<", BINOP_LSH, PREC_SHIFT, 0},
13940   {"+", BINOP_ADD, PREC_ADD, 0},
13941   {"-", BINOP_SUB, PREC_ADD, 0},
13942   {"&", BINOP_CONCAT, PREC_ADD, 0},
13943   {"*", BINOP_MUL, PREC_MUL, 0},
13944   {"/", BINOP_DIV, PREC_MUL, 0},
13945   {"rem", BINOP_REM, PREC_MUL, 0},
13946   {"mod", BINOP_MOD, PREC_MUL, 0},
13947   {"**", BINOP_EXP, PREC_REPEAT, 0},
13948   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
13949   {"-", UNOP_NEG, PREC_PREFIX, 0},
13950   {"+", UNOP_PLUS, PREC_PREFIX, 0},
13951   {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
13952   {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
13953   {"abs ", UNOP_ABS, PREC_PREFIX, 0},
13954   {".all", UNOP_IND, PREC_SUFFIX, 1},
13955   {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
13956   {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
13957   {NULL, OP_NULL, PREC_SUFFIX, 0}
13958 };
13959 \f
13960 enum ada_primitive_types {
13961   ada_primitive_type_int,
13962   ada_primitive_type_long,
13963   ada_primitive_type_short,
13964   ada_primitive_type_char,
13965   ada_primitive_type_float,
13966   ada_primitive_type_double,
13967   ada_primitive_type_void,
13968   ada_primitive_type_long_long,
13969   ada_primitive_type_long_double,
13970   ada_primitive_type_natural,
13971   ada_primitive_type_positive,
13972   ada_primitive_type_system_address,
13973   ada_primitive_type_storage_offset,
13974   nr_ada_primitive_types
13975 };
13976
13977 static void
13978 ada_language_arch_info (struct gdbarch *gdbarch,
13979                         struct language_arch_info *lai)
13980 {
13981   const struct builtin_type *builtin = builtin_type (gdbarch);
13982
13983   lai->primitive_type_vector
13984     = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_ada_primitive_types + 1,
13985                               struct type *);
13986
13987   lai->primitive_type_vector [ada_primitive_type_int]
13988     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
13989                          0, "integer");
13990   lai->primitive_type_vector [ada_primitive_type_long]
13991     = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch),
13992                          0, "long_integer");
13993   lai->primitive_type_vector [ada_primitive_type_short]
13994     = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch),
13995                          0, "short_integer");
13996   lai->string_char_type
13997     = lai->primitive_type_vector [ada_primitive_type_char]
13998     = arch_character_type (gdbarch, TARGET_CHAR_BIT, 0, "character");
13999   lai->primitive_type_vector [ada_primitive_type_float]
14000     = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch),
14001                        "float", gdbarch_float_format (gdbarch));
14002   lai->primitive_type_vector [ada_primitive_type_double]
14003     = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch),
14004                        "long_float", gdbarch_double_format (gdbarch));
14005   lai->primitive_type_vector [ada_primitive_type_long_long]
14006     = arch_integer_type (gdbarch, gdbarch_long_long_bit (gdbarch),
14007                          0, "long_long_integer");
14008   lai->primitive_type_vector [ada_primitive_type_long_double]
14009     = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch),
14010                        "long_long_float", gdbarch_long_double_format (gdbarch));
14011   lai->primitive_type_vector [ada_primitive_type_natural]
14012     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14013                          0, "natural");
14014   lai->primitive_type_vector [ada_primitive_type_positive]
14015     = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch),
14016                          0, "positive");
14017   lai->primitive_type_vector [ada_primitive_type_void]
14018     = builtin->builtin_void;
14019
14020   lai->primitive_type_vector [ada_primitive_type_system_address]
14021     = lookup_pointer_type (arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
14022                                       "void"));
14023   TYPE_NAME (lai->primitive_type_vector [ada_primitive_type_system_address])
14024     = "system__address";
14025
14026   /* Create the equivalent of the System.Storage_Elements.Storage_Offset
14027      type.  This is a signed integral type whose size is the same as
14028      the size of addresses.  */
14029   {
14030     unsigned int addr_length = TYPE_LENGTH
14031       (lai->primitive_type_vector [ada_primitive_type_system_address]);
14032
14033     lai->primitive_type_vector [ada_primitive_type_storage_offset]
14034       = arch_integer_type (gdbarch, addr_length * HOST_CHAR_BIT, 0,
14035                            "storage_offset");
14036   }
14037
14038   lai->bool_type_symbol = NULL;
14039   lai->bool_type_default = builtin->builtin_bool;
14040 }
14041 \f
14042                                 /* Language vector */
14043
14044 /* Not really used, but needed in the ada_language_defn.  */
14045
14046 static void
14047 emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
14048 {
14049   ada_emit_char (c, type, stream, quoter, 1);
14050 }
14051
14052 static int
14053 parse (struct parser_state *ps)
14054 {
14055   warnings_issued = 0;
14056   return ada_parse (ps);
14057 }
14058
14059 static const struct exp_descriptor ada_exp_descriptor = {
14060   ada_print_subexp,
14061   ada_operator_length,
14062   ada_operator_check,
14063   ada_op_name,
14064   ada_dump_subexp_body,
14065   ada_evaluate_subexp
14066 };
14067
14068 /* symbol_name_matcher_ftype adapter for wild_match.  */
14069
14070 static bool
14071 do_wild_match (const char *symbol_search_name,
14072                const lookup_name_info &lookup_name,
14073                completion_match_result *comp_match_res)
14074 {
14075   return wild_match (symbol_search_name, ada_lookup_name (lookup_name));
14076 }
14077
14078 /* symbol_name_matcher_ftype adapter for full_match.  */
14079
14080 static bool
14081 do_full_match (const char *symbol_search_name,
14082                const lookup_name_info &lookup_name,
14083                completion_match_result *comp_match_res)
14084 {
14085   return full_match (symbol_search_name, ada_lookup_name (lookup_name));
14086 }
14087
14088 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
14089
14090 static bool
14091 do_exact_match (const char *symbol_search_name,
14092                 const lookup_name_info &lookup_name,
14093                 completion_match_result *comp_match_res)
14094 {
14095   return strcmp (symbol_search_name, ada_lookup_name (lookup_name)) == 0;
14096 }
14097
14098 /* Build the Ada lookup name for LOOKUP_NAME.  */
14099
14100 ada_lookup_name_info::ada_lookup_name_info (const lookup_name_info &lookup_name)
14101 {
14102   const std::string &user_name = lookup_name.name ();
14103
14104   if (user_name[0] == '<')
14105     {
14106       if (user_name.back () == '>')
14107         m_encoded_name = user_name.substr (1, user_name.size () - 2);
14108       else
14109         m_encoded_name = user_name.substr (1, user_name.size () - 1);
14110       m_encoded_p = true;
14111       m_verbatim_p = true;
14112       m_wild_match_p = false;
14113       m_standard_p = false;
14114     }
14115   else
14116     {
14117       m_verbatim_p = false;
14118
14119       m_encoded_p = user_name.find ("__") != std::string::npos;
14120
14121       if (!m_encoded_p)
14122         {
14123           const char *folded = ada_fold_name (user_name.c_str ());
14124           const char *encoded = ada_encode_1 (folded, false);
14125           if (encoded != NULL)
14126             m_encoded_name = encoded;
14127           else
14128             m_encoded_name = user_name;
14129         }
14130       else
14131         m_encoded_name = user_name;
14132
14133       /* Handle the 'package Standard' special case.  See description
14134          of m_standard_p.  */
14135       if (startswith (m_encoded_name.c_str (), "standard__"))
14136         {
14137           m_encoded_name = m_encoded_name.substr (sizeof ("standard__") - 1);
14138           m_standard_p = true;
14139         }
14140       else
14141         m_standard_p = false;
14142
14143       /* If the name contains a ".", then the user is entering a fully
14144          qualified entity name, and the match must not be done in wild
14145          mode.  Similarly, if the user wants to complete what looks
14146          like an encoded name, the match must not be done in wild
14147          mode.  Also, in the standard__ special case always do
14148          non-wild matching.  */
14149       m_wild_match_p
14150         = (lookup_name.match_type () != symbol_name_match_type::FULL
14151            && !m_encoded_p
14152            && !m_standard_p
14153            && user_name.find ('.') == std::string::npos);
14154     }
14155 }
14156
14157 /* symbol_name_matcher_ftype method for Ada.  This only handles
14158    completion mode.  */
14159
14160 static bool
14161 ada_symbol_name_matches (const char *symbol_search_name,
14162                          const lookup_name_info &lookup_name,
14163                          completion_match_result *comp_match_res)
14164 {
14165   return lookup_name.ada ().matches (symbol_search_name,
14166                                      lookup_name.match_type (),
14167                                      comp_match_res);
14168 }
14169
14170 /* A name matcher that matches the symbol name exactly, with
14171    strcmp.  */
14172
14173 static bool
14174 literal_symbol_name_matcher (const char *symbol_search_name,
14175                              const lookup_name_info &lookup_name,
14176                              completion_match_result *comp_match_res)
14177 {
14178   const std::string &name = lookup_name.name ();
14179
14180   int cmp = (lookup_name.completion_mode ()
14181              ? strncmp (symbol_search_name, name.c_str (), name.size ())
14182              : strcmp (symbol_search_name, name.c_str ()));
14183   if (cmp == 0)
14184     {
14185       if (comp_match_res != NULL)
14186         comp_match_res->set_match (symbol_search_name);
14187       return true;
14188     }
14189   else
14190     return false;
14191 }
14192
14193 /* Implement the "la_get_symbol_name_matcher" language_defn method for
14194    Ada.  */
14195
14196 static symbol_name_matcher_ftype *
14197 ada_get_symbol_name_matcher (const lookup_name_info &lookup_name)
14198 {
14199   if (lookup_name.match_type () == symbol_name_match_type::SEARCH_NAME)
14200     return literal_symbol_name_matcher;
14201
14202   if (lookup_name.completion_mode ())
14203     return ada_symbol_name_matches;
14204   else
14205     {
14206       if (lookup_name.ada ().wild_match_p ())
14207         return do_wild_match;
14208       else if (lookup_name.ada ().verbatim_p ())
14209         return do_exact_match;
14210       else
14211         return do_full_match;
14212     }
14213 }
14214
14215 /* Implement the "la_read_var_value" language_defn method for Ada.  */
14216
14217 static struct value *
14218 ada_read_var_value (struct symbol *var, const struct block *var_block,
14219                     struct frame_info *frame)
14220 {
14221   /* The only case where default_read_var_value is not sufficient
14222      is when VAR is a renaming...  */
14223   if (frame != nullptr)
14224     {
14225       const struct block *frame_block = get_frame_block (frame, NULL);
14226       if (frame_block != nullptr && ada_is_renaming_symbol (var))
14227         return ada_read_renaming_var_value (var, frame_block);
14228     }
14229
14230   /* This is a typical case where we expect the default_read_var_value
14231      function to work.  */
14232   return default_read_var_value (var, var_block, frame);
14233 }
14234
14235 static const char *ada_extensions[] =
14236 {
14237   ".adb", ".ads", ".a", ".ada", ".dg", NULL
14238 };
14239
14240 extern const struct language_defn ada_language_defn = {
14241   "ada",                        /* Language name */
14242   "Ada",
14243   language_ada,
14244   range_check_off,
14245   case_sensitive_on,            /* Yes, Ada is case-insensitive, but
14246                                    that's not quite what this means.  */
14247   array_row_major,
14248   macro_expansion_no,
14249   ada_extensions,
14250   &ada_exp_descriptor,
14251   parse,
14252   resolve,
14253   ada_printchar,                /* Print a character constant */
14254   ada_printstr,                 /* Function to print string constant */
14255   emit_char,                    /* Function to print single char (not used) */
14256   ada_print_type,               /* Print a type using appropriate syntax */
14257   ada_print_typedef,            /* Print a typedef using appropriate syntax */
14258   ada_val_print,                /* Print a value using appropriate syntax */
14259   ada_value_print,              /* Print a top-level value */
14260   ada_read_var_value,           /* la_read_var_value */
14261   NULL,                         /* Language specific skip_trampoline */
14262   NULL,                         /* name_of_this */
14263   true,                         /* la_store_sym_names_in_linkage_form_p */
14264   ada_lookup_symbol_nonlocal,   /* Looking up non-local symbols.  */
14265   basic_lookup_transparent_type,        /* lookup_transparent_type */
14266   ada_la_decode,                /* Language specific symbol demangler */
14267   ada_sniff_from_mangled_name,
14268   NULL,                         /* Language specific
14269                                    class_name_from_physname */
14270   ada_op_print_tab,             /* expression operators for printing */
14271   0,                            /* c-style arrays */
14272   1,                            /* String lower bound */
14273   ada_get_gdb_completer_word_break_characters,
14274   ada_collect_symbol_completion_matches,
14275   ada_language_arch_info,
14276   ada_print_array_index,
14277   default_pass_by_reference,
14278   c_get_string,
14279   ada_watch_location_expression,
14280   ada_get_symbol_name_matcher,  /* la_get_symbol_name_matcher */
14281   ada_iterate_over_symbols,
14282   default_search_name_hash,
14283   &ada_varobj_ops,
14284   NULL,
14285   NULL,
14286   ada_is_string_type,
14287   "(...)"                       /* la_struct_too_deep_ellipsis */
14288 };
14289
14290 /* Command-list for the "set/show ada" prefix command.  */
14291 static struct cmd_list_element *set_ada_list;
14292 static struct cmd_list_element *show_ada_list;
14293
14294 /* Implement the "set ada" prefix command.  */
14295
14296 static void
14297 set_ada_command (const char *arg, int from_tty)
14298 {
14299   printf_unfiltered (_(\
14300 "\"set ada\" must be followed by the name of a setting.\n"));
14301   help_list (set_ada_list, "set ada ", all_commands, gdb_stdout);
14302 }
14303
14304 /* Implement the "show ada" prefix command.  */
14305
14306 static void
14307 show_ada_command (const char *args, int from_tty)
14308 {
14309   cmd_show_list (show_ada_list, from_tty, "");
14310 }
14311
14312 static void
14313 initialize_ada_catchpoint_ops (void)
14314 {
14315   struct breakpoint_ops *ops;
14316
14317   initialize_breakpoint_ops ();
14318
14319   ops = &catch_exception_breakpoint_ops;
14320   *ops = bkpt_breakpoint_ops;
14321   ops->allocate_location = allocate_location_catch_exception;
14322   ops->re_set = re_set_catch_exception;
14323   ops->check_status = check_status_catch_exception;
14324   ops->print_it = print_it_catch_exception;
14325   ops->print_one = print_one_catch_exception;
14326   ops->print_mention = print_mention_catch_exception;
14327   ops->print_recreate = print_recreate_catch_exception;
14328
14329   ops = &catch_exception_unhandled_breakpoint_ops;
14330   *ops = bkpt_breakpoint_ops;
14331   ops->allocate_location = allocate_location_catch_exception_unhandled;
14332   ops->re_set = re_set_catch_exception_unhandled;
14333   ops->check_status = check_status_catch_exception_unhandled;
14334   ops->print_it = print_it_catch_exception_unhandled;
14335   ops->print_one = print_one_catch_exception_unhandled;
14336   ops->print_mention = print_mention_catch_exception_unhandled;
14337   ops->print_recreate = print_recreate_catch_exception_unhandled;
14338
14339   ops = &catch_assert_breakpoint_ops;
14340   *ops = bkpt_breakpoint_ops;
14341   ops->allocate_location = allocate_location_catch_assert;
14342   ops->re_set = re_set_catch_assert;
14343   ops->check_status = check_status_catch_assert;
14344   ops->print_it = print_it_catch_assert;
14345   ops->print_one = print_one_catch_assert;
14346   ops->print_mention = print_mention_catch_assert;
14347   ops->print_recreate = print_recreate_catch_assert;
14348
14349   ops = &catch_handlers_breakpoint_ops;
14350   *ops = bkpt_breakpoint_ops;
14351   ops->allocate_location = allocate_location_catch_handlers;
14352   ops->re_set = re_set_catch_handlers;
14353   ops->check_status = check_status_catch_handlers;
14354   ops->print_it = print_it_catch_handlers;
14355   ops->print_one = print_one_catch_handlers;
14356   ops->print_mention = print_mention_catch_handlers;
14357   ops->print_recreate = print_recreate_catch_handlers;
14358 }
14359
14360 /* This module's 'new_objfile' observer.  */
14361
14362 static void
14363 ada_new_objfile_observer (struct objfile *objfile)
14364 {
14365   ada_clear_symbol_cache ();
14366 }
14367
14368 /* This module's 'free_objfile' observer.  */
14369
14370 static void
14371 ada_free_objfile_observer (struct objfile *objfile)
14372 {
14373   ada_clear_symbol_cache ();
14374 }
14375
14376 void
14377 _initialize_ada_language (void)
14378 {
14379   initialize_ada_catchpoint_ops ();
14380
14381   add_prefix_cmd ("ada", no_class, set_ada_command,
14382                   _("Prefix command for changing Ada-specific settings"),
14383                   &set_ada_list, "set ada ", 0, &setlist);
14384
14385   add_prefix_cmd ("ada", no_class, show_ada_command,
14386                   _("Generic command for showing Ada-specific settings."),
14387                   &show_ada_list, "show ada ", 0, &showlist);
14388
14389   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
14390                            &trust_pad_over_xvs, _("\
14391 Enable or disable an optimization trusting PAD types over XVS types"), _("\
14392 Show whether an optimization trusting PAD types over XVS types is activated"),
14393                            _("\
14394 This is related to the encoding used by the GNAT compiler.  The debugger\n\
14395 should normally trust the contents of PAD types, but certain older versions\n\
14396 of GNAT have a bug that sometimes causes the information in the PAD type\n\
14397 to be incorrect.  Turning this setting \"off\" allows the debugger to\n\
14398 work around this bug.  It is always safe to turn this option \"off\", but\n\
14399 this incurs a slight performance penalty, so it is recommended to NOT change\n\
14400 this option to \"off\" unless necessary."),
14401                             NULL, NULL, &set_ada_list, &show_ada_list);
14402
14403   add_setshow_boolean_cmd ("print-signatures", class_vars,
14404                            &print_signatures, _("\
14405 Enable or disable the output of formal and return types for functions in the \
14406 overloads selection menu"), _("\
14407 Show whether the output of formal and return types for functions in the \
14408 overloads selection menu is activated"),
14409                            NULL, NULL, NULL, &set_ada_list, &show_ada_list);
14410
14411   add_catch_command ("exception", _("\
14412 Catch Ada exceptions, when raised.\n\
14413 Usage: catch exception [ARG] [if CONDITION]\n\
14414 Without any argument, stop when any Ada exception is raised.\n\
14415 If ARG is \"unhandled\" (without the quotes), only stop when the exception\n\
14416 being raised does not have a handler (and will therefore lead to the task's\n\
14417 termination).\n\
14418 Otherwise, the catchpoint only stops when the name of the exception being\n\
14419 raised is the same as ARG.\n\
14420 CONDITION is a boolean expression that is evaluated to see whether the\n\
14421 exception should cause a stop."),
14422                      catch_ada_exception_command,
14423                      catch_ada_completer,
14424                      CATCH_PERMANENT,
14425                      CATCH_TEMPORARY);
14426
14427   add_catch_command ("handlers", _("\
14428 Catch Ada exceptions, when handled.\n\
14429 Usage: catch handlers [ARG] [if CONDITION]\n\
14430 Without any argument, stop when any Ada exception is handled.\n\
14431 With an argument, catch only exceptions with the given name.\n\
14432 CONDITION is a boolean expression that is evaluated to see whether the\n\
14433 exception should cause a stop."),
14434                      catch_ada_handlers_command,
14435                      catch_ada_completer,
14436                      CATCH_PERMANENT,
14437                      CATCH_TEMPORARY);
14438   add_catch_command ("assert", _("\
14439 Catch failed Ada assertions, when raised.\n\
14440 Usage: catch assert [if CONDITION]\n\
14441 CONDITION is a boolean expression that is evaluated to see whether the\n\
14442 exception should cause a stop."),
14443                      catch_assert_command,
14444                      NULL,
14445                      CATCH_PERMANENT,
14446                      CATCH_TEMPORARY);
14447
14448   varsize_limit = 65536;
14449   add_setshow_uinteger_cmd ("varsize-limit", class_support,
14450                             &varsize_limit, _("\
14451 Set the maximum number of bytes allowed in a variable-size object."), _("\
14452 Show the maximum number of bytes allowed in a variable-size object."), _("\
14453 Attempts to access an object whose size is not a compile-time constant\n\
14454 and exceeds this limit will cause an error."),
14455                             NULL, NULL, &setlist, &showlist);
14456
14457   add_info ("exceptions", info_exceptions_command,
14458             _("\
14459 List all Ada exception names.\n\
14460 Usage: info exceptions [REGEXP]\n\
14461 If a regular expression is passed as an argument, only those matching\n\
14462 the regular expression are listed."));
14463
14464   add_prefix_cmd ("ada", class_maintenance, maint_set_ada_cmd,
14465                   _("Set Ada maintenance-related variables."),
14466                   &maint_set_ada_cmdlist, "maintenance set ada ",
14467                   0/*allow-unknown*/, &maintenance_set_cmdlist);
14468
14469   add_prefix_cmd ("ada", class_maintenance, maint_show_ada_cmd,
14470                   _("Show Ada maintenance-related variables"),
14471                   &maint_show_ada_cmdlist, "maintenance show ada ",
14472                   0/*allow-unknown*/, &maintenance_show_cmdlist);
14473
14474   add_setshow_boolean_cmd
14475     ("ignore-descriptive-types", class_maintenance,
14476      &ada_ignore_descriptive_types_p,
14477      _("Set whether descriptive types generated by GNAT should be ignored."),
14478      _("Show whether descriptive types generated by GNAT should be ignored."),
14479      _("\
14480 When enabled, the debugger will stop using the DW_AT_GNAT_descriptive_type\n\
14481 DWARF attribute."),
14482      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
14483
14484   decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
14485                                            NULL, xcalloc, xfree);
14486
14487   /* The ada-lang observers.  */
14488   gdb::observers::new_objfile.attach (ada_new_objfile_observer);
14489   gdb::observers::free_objfile.attach (ada_free_objfile_observer);
14490   gdb::observers::inferior_exit.attach (ada_inferior_exit);
14491 }